Forum général.général Forcer un algorithme de chiffrement

Posté par (page perso) . Licence CC by-sa
1
9
juil.
2014

Bonjour à tous,

Je me posais une question l'autre jour en lisant un nème article sur la sécurité des applications (c'est à la mode en ce moment, suite aux diverses failles récemment révélées dans plusieurs projets open source).

La question est la suivante : existe-t-il un moyen pour "forcer" un chiffrement si l'algorithme de chiffrement / déchiffrement lui même n'est pas connu ? Par exemple si on a une boite noire qui permette de chiffrer un contenu (et donc d'avoir une correspondance contenu en clair / contenu chiffré), est-ce que cela est possible ?

Je me posais notamment la question car on lit souvent qu'il n'est pas recommandé de faire des algo de chiffrement maison à cause des risques de faiblesse des algorithmes (ce que je conçois parfaitement). Mais si la connaissance de l'algo est indispensable pour le déchiffrement, ne serait-ce pas un bon moyen de protection finalement ?

J'attends vos avis :)

  • # le principe de la boite noire

    Posté par . Évalué à 1.

    La question est la suivante : existe-t-il un moyen pour "forcer" un chiffrement si l'algorithme de chiffrement / déchiffrement lui même n'est pas connu ? Par exemple si on a une boite noire qui permette de chiffrer un contenu (et donc d'avoir une correspondance contenu en clair / contenu chiffré), est-ce que cela est possible ?

    le principe de la boite noire, c'est que tu lui donnes quelques choses en entrées, elle te donne un resultat en sortie

    si la boite noire fait algoA ou algoB tu ne pourras pas lui demander de faire algoC

    donc tu ne pourras pas la "forcer" à faire ce qu'elle ne fait pas

    • [^] # Re: le principe de la boite noire

      Posté par (page perso) . Évalué à 1.

      si la boite noire fait algoA ou algoB tu ne pourras pas lui demander de faire algoC

      C'est vrai. Mais a aucun moment je n'ai parlé de plusieurs algo.

      donc tu ne pourras pas la "forcer" à faire ce qu'elle ne fait pas

      Et je ne le souhaite pas. Le seul but de la boite noire, c'est de chiffrer du contenu afin d'obtenir un jeu de données non chiffré / chiffré. Ma question est de savoir si avec suffisamment de données, il est possible de retrouver l'algorithme et donc de forcer le chiffrage.

      • [^] # Re: le principe de la boite noire

        Posté par . Évalué à 2.

        ah, tu ne veux pas "forcer" le chiffrage dans le sens l'obliger à le faire
        mais "forcer" le dechiffrage, ou "casser" le chiffrage…

        oui, quelque soit l'algorythme, quelque soit la clé, un chiffrage est "cassable"
        ce n'est qu'une question de temps et de moyens…

        y a des etudes la dessus, qui explique le temps qu'il faudrait pour casser par exemple AES-256 puis AES-512 etc

        • [^] # Re: le principe de la boite noire

          Posté par (page perso) . Évalué à 1.

          ah, tu ne veux pas "forcer" le chiffrage dans le sens l'obliger à le faire
          mais "forcer" le dechiffrage, ou "casser" le chiffrage…

          C'est ça ;)

          y a des etudes la dessus, qui explique le temps qu'il faudrait pour casser par exemple AES-256 puis AES-512 etc

          Mais là, je parle d'un cas où l'algo n'est pas un algo connu et reconnu style AES, DES et consort, mais un algo maison. Sinon, la boite noire ne serait pas noire ;)

          • [^] # Re: le principe de la boite noire

            Posté par . Évalué à 2.

            si tu as acces aux données des deux cotés (claires et chiffrées) alors tu pourras "forcer" le cryptage.

            • [^] # Re: le principe de la boite noire

              Posté par (page perso) . Évalué à 1.

              En théorie, je suis d'accord. Mais en pratique ? Quel est le coût de ce genre de crackage (algo non connu et maison) par rapport à un brut force sur un AES 256 ou 512 par contre ?

              Car d'un côté, pour un algorithme connu comme un AES, la "variable", se sont les clés. Et faire un brute force dessus est extrêmement difficile.

              De l'autre, dans le cas d'un algo maison, le problème n'est pas le même. Il s'agit de retrouver l'algorithme ayant généré le contenu chiffré.

              • [^] # Re: le principe de la boite noire

                Posté par . Évalué à 1. Dernière modification le 09/07/14 à 23:17.

                De l'autre, dans le cas d'un algo maison, le problème n'est pas le même. Il s'agit de retrouver l'algorithme ayant généré le contenu chiffré.

                principe du retro engineering, tu te fiches de l'algo,
                tu veux en creer un autre qui genere la meme chose avec les memes entrées.

                à partir de là, tu fais par deduction,
                et comme dit plus haut, si tu connais l'entrée ET la sortie, c'est plus facile de casser la boite noire.

                ce qui compte dans les solutions de cryptage, c'est justement que tu ne connais que l'algo et la sortie.
                tu ne connais pas la donnée de depart, et tu ne connais pas la clé.

              • [^] # Re: le principe de la boite noire

                Posté par . Évalué à 4.

                Car d'un côté, pour un algorithme connu comme un AES, la "variable", se sont les clés

                C'est fait exprès ! Le principe, c'est qu'un secret finit par être découvert. C'est alors plus intéressant quand c'est le plus simple à changer. Si un jour tu penses que ton algo maison est compromis, il faut que tu pondes un nouvel algo. À l'inverse, si tu penses que ta clé AES est compromise, tu changes juste de clé.

                Cf http://fr.wikipedia.org/wiki/Principe_de_Kerckhoffs

              • [^] # Re: le principe de la boite noire

                Posté par . Évalué à 1.

                Dans le cas d'un algorithme inconnu, ta variable c'est ton algorithme en quelques sortes. Les termes clés et algorithmes ce sont des concepts théoriques qui ne se distinguent plus une fois codé dans une RAM. Ce que je veux dire, c'est qu'il n'y a pas de raisons théorique pour qu'une boite noire soit plus difficile à casser.

        • [^] # Re: le principe de la boite noire

          Posté par (page perso) . Évalué à 3.

          Non, certains algos sont parfaitement incassables (tant qu'on ne donne pas la clef au vilain). Prends un bête XOR (ou chiffrement de Vigenère), avec une clef parfaitement aléatoire de la même longueur que le message. Par contre, ça ajoute certaines contraintes, c'est sûr.

  • # En-tête

    Posté par (page perso) . Évalué à 2.

    La plupart du temps, le flux de sortie possède un en-tête. Ça facilite grandement les choses.

    • [^] # Re: En-tête

      Posté par (page perso) . Évalué à 1.

      La plupart du temps, le flux de sortie possède un en-tête. Ça facilite grandement les choses.

      Il ne s'agit pas de déterminer quel algo existant est utilisé par la boite noire, mais de savoir s'il est possible de reconstituer un algo maison.

      • [^] # Re: En-tête

        Posté par . Évalué à 2.

        La sécurité par l'obscurité ? Tu le protège comment ton algo maison ?

        Si tu a besoin de chiffrer tes données ton algo sera forcement à l’extérieur, et donc au mieux protégé par un autre algo, connu lui.

        Sinon, pour te répondre, deviner l'algo utilisé c'est de la cryptanalyse, donc oui, c'est possible c’est même la base. Genre les Nazis, ils n'ont pas envoyés aux Anglais l'algo utilisé par Egnigma en leur disant "devinez le code maintenant".

        • [^] # Re: En-tête

          Posté par (page perso) . Évalué à 3.

          Avoir un exemplaire de la machine (donné par les Polonais) a tout de même grandement facilité le travail ;)

          • [^] # Re: En-tête

            Posté par . Évalué à 4.

            Et ça répond du coup à l'auteur qui demande :

            Par exemple si on a une boite noire qui permette de chiffrer un contenu (et donc d'avoir une correspondance contenu en clair / contenu chiffré)

            Oui, ça facilite beaucoup le travail de cryptanalyse.

  • # Principe de Kerckhoffs

    Posté par (page perso) . Évalué à 4.

    Mais si la connaissance de l'algo est indispensable pour le déchiffrement, ne serait-ce pas un bon moyen de protection finalement ?

    Non. C’est de la sécurité par l’obscurité.

    Un principe élémentaire de la cryptographie (le principe de Kerckoffs) est que la sécurité d’un procédé de chiffrement ne doit dépendre que de la clé. Le procédé en lui-même doit pouvoir tomber entre les mains de l’attaquant sans remettre en cause la confidentialité des communications tant que la clé, et seulement la clé, reste secrète.

    • [^] # Re: Principe de Kerckhoffs

      Posté par . Évalué à 3.

      Je ne suis on ne peut plus d'accord mais il me semble qu'on peut à la fois se reposer sur des procédés de chiffrement connus et « obscurcire » en appliquant par exemple une composition de différents chiffrements (AES + 2 * Blowfish + 3 * DES), connu seulement des personnes initiés (cela permet au passage d'utiliser plusieurs clés…). Ainsi, en cas de trouage futur de l'un des chiffrements le contenu reste protégé, et cela ralenti le cassage par brute-force.

  • # Algo maison

    Posté par . Évalué à 1.

    Si tu estimes qu'utiliser un algorithme de chiffrement/déchiffrement maison est une solution acceptable, tu peux en implémenter un de manière assez sûre en choisissant un algorithme très étudié, facile à implémenter, aux faiblesses bien connues : par exemple XOR (avec une clé vraiment très longue, générée aléatoirement, padding au moins en début et en fin de donnée pour gérer les attaques sur le format des données).

    il ne te reste plus qu'à (bien) cacher le clé :) ce qui devrait être plus facile que cacher le code de ton algo maison.

  • # Des précisions

    Posté par (page perso) . Évalué à 1.

    Tout d'abord merci à tous pour vos réponses. Et je vais apporter quelques précisions supplémentaires suite à vos différent commentaires.

    Tout d'abord, il ne s'agit pas de sécuriser le chiffrement par l'obscurité. Enfin, en tout cas, pas que ! L'algo maison en question est une combinaison d'algorithme bien connu et éprouvé ;)

    Ma question était surtout intellectuelle : sans connaitre l'algo (on oublie les fuites de code, la rétro ingénierie et consorts) est-il possible avec juste des données, sans l'algo, de déterminer l'algo. Pas les clés utilisés, mais bien l'algo…

    • [^] # Re: Des précisions

      Posté par . Évalué à 2.

      Ma question était surtout intellectuelle : sans connaitre l'algo (on oublie les fuites de code, la rétro ingénierie et consorts) est-il possible avec juste des données, sans l'algo, de déterminer l'algo. Pas les clés utilisés, mais bien l'algo…

      c'est deja evoqué dans les exemples de reverse engineering, determiner l'algo, oui et non,
      mais trouver un algo similaire qui pourra donner le meme resultat : oui.

  • # Reverse-engineering

    Posté par . Évalué à 2.

    En gros tu te demandes si c'est difficile de faire du reverse sur une boîte noire.

    Ça dépend de la boîte noire en question (si l'algo est faible genre fait "maison" par un amateur, ça peut se voir assez vite, si ce sont des briques connues et éprouvées type finalistes AES combinés de manière inconnue il n'y a a priori pas de faille dans l'algo lui-même) et des moyens et du temps de l'attaquant (accès uniquement en entrée/sortie ? connaissance de couples clairs/chiffrés valides qu'il pourrait modifier et renvoyer ? accès à des outils de mesure de courant sur la boîte noire qui chiffre ? Accès au binaire qui chiffre avec possibilité de le désosser ou boîte noire accessible seulement par le réseau ? Débit d'accès à la boîte noire ? ).

    • [^] # Re: Reverse-engineering

      Posté par (page perso) . Évalué à 1.

      En gros tu te demandes si c'est difficile de faire du reverse sur une boîte noire.

      Tout à fait. Avec pour seul accès à la boite noire, lui fournir des données (par exemple, via un réseau). Aucun accès au code le boite noire d'une quelque manière que se soit (c'est une simple hypothèse). En gros, en analysant juste les sorties en fonction des entrées, sans aucune autres informations disponibles…

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.