web-dev-qa-db-fra.com

Comment pourrait-on casser un protocole de chiffrement faible mais inconnu?

Je lisais cette question intéressante:

La sécurité du mot de passe de mon développeur est-elle bonne ou mauvaise, et pourquoi?

Il montre un algorithme de brassage à domicile faible développé par "Dave", et les réponses expliquent pourquoi c'est une mauvaise idée. (Algorithme de hachage en fait plutôt que de chiffrement, mais ma question s'applique aux deux.)

Il est logique pour moi qu'un algorithme de brassage maison soit une très mauvaise idée, mais il y a une chose que je ne comprends pas.

Supposons que je suis un attaquant et que je suis confronté à un algorithme de chiffrement faible mais inconnu développé par "Dave". Comment pourrais-je le casser? Je ne saurais même pas par où commencer. Ce serait une chaîne de caractères apparemment dénuée de sens.

Par exemple, disons que l'algorithme de brassage maison est comme ceci:

  • Utilisez un algorithme de cryptage faible et bien connu sur les données d'origine, puis:
  • Faites un bit-négatif sur tout octet dont le numéro de série dans le fichier a une somme de chiffres répétée qui est premier. (Ou toute autre manipulation mathématique de ce type, ce n'est qu'un exemple.)

Comment pirater un fichier produit par un tel algorithme sans le savoir à l'avance?

Edit: Tout le monde, n'essayez pas de me convaincre de la difficulté de garder un algorithme secret. Veuillez répondre à cette question en supposant que l'algorithme est gardé complètement secret, malgré la difficulté à atteindre dans la vie réelle.

Supposons également que je n'ai aucun accès à l'algorithme, uniquement aux données résultantes.

87
Ram Rachum

Supposons que je suis un attaquant et que je suis confronté à un algorithme de chiffrement faible mais inconnu développé par "Dave". Comment pourrais-je le casser? Je ne saurais même pas par où commencer. Ce serait une chaîne de caractères apparemment dénuée de sens.

C'est exact, vous ne le feriez pas. Voici quelques données chiffrées (4587556841584465455874588). Vous avez une idée de ce que cela signifie? Absolument pas.

Cependant, il vous manque le noyau, le pilier central fondamental le plus important de l'univers qui maintient la cryptographie. L'idée est simple:

the key is everything

C'est ça. C'est le peu que vous devez protéger. Le peu que vous devez garder avec votre vie et espérer que personne ne vous frappera avec un marteau jusqu'à ce que vous leur disiez de quoi il s'agit.

Sur cette base, vous devez supposer que votre algorithme peut être lu par l'attaquant. Ils savent comment ça fonctionne. Ils peuvent documenter son processus. S'il y a des faiblesses, ils les trouveront. Et ils vont les exploiter. Comme ce père de la CIA en colère de Taken.

Il s'avère que c'est moins une hypothèse et plus du cas pratique utilisé. Dave, le cryptographe à domicile, souhaite inclure un algorithme de cryptage dans son programme. Décidant d'éviter tout le travail de test et de conception que les cryptographes ont fait pour lui gratuitement au fil des ans, il écrit quelque chose impliquant l'étrange xor, compile son programme et le donne utilement à des amis.

Cet algorithme est maintenant entre leurs mains. Jeu terminé.

Maintenant, vous pourriez demander "ne puis-je pas simplement garder l'algorithme secret? Cela fonctionnera, non?" Oh Dave, arrêtez plz. Non non Non. Le problème avec les algorithmes secrets est qu'ils sont beaucoup plus susceptibles d'être volés. Après tout, la clé est différente pour chaque utilisateur (en fait, ce n'est pas une exigence, mais supposons simplement que c'est pour la simplicité) mais l'algorithme reste inchangé. Vous n'avez donc besoin que d'une seule de vos implémentations pour être exposée à un attaquant et le jeu reprend.


Edit : Ok, en réponse à la question mise à jour du PO. Supposons un instant que l'algorithme soit totalement inconnu. Chacun des deux participants à une conversation cryptée a une parfaite sécurité de mise en œuvre de leur algorithme.

Dans ce cas, vous avez des données à analyser. Vous pouvez effectuer l'une des opérations suivantes:

  • Analyser pour lettres fréquemment connues . C'est ainsi que vous briseriez un chiffre de changement de césar typique.
  • Essayez de deviner la longueur de la clé. Avec ces informations, vous pouvez rechercher des blocs de texte chiffré répétés qui peuvent correspondre au même texte en clair.
  • Tentative d'indice de coïncidence et autres mesures de ce type utilisées pour briser le chiffrement vigenere, car de nombreux chiffrements polyalphabétiques ne sont (peut-être) que des variantes de cela.
  • Surveillez les motifs. Tout motif peut vous donner la clé.
  • Recherchez d'autres indices. Les longueurs correspondent-elles à une certaine mesure, sont-elles par exemple des multiples d'une certaine valeur comme une frontière d'octets et sont-elles (éventuellement) complétées?
  • Essayez d'analyser avec l'une des techniques de cryptanalyse à chiffrement symétrique . Ceux-ci reposent sur la connaissance de l'algorithme dans de nombreux cas, donc peuvent ne pas s'appliquer ici.
  • Si vous pensez que les données en question représentent un échange de clés, vous pouvez essayer l'une des nombreuses techniques de rupture algorithmes à clé publique .

Le fait est qu'un court morceau de données provenant d'un algorithme inconnu pourrait bien être indéchiffrable. Cependant, cela ne signifie pas que vous devez vous en tenir à cela. Plus un cryptanalyste peut récupérer de données, plus il risque de casser votre algorithme. Vous ne savez probablement pas sans cryptanalyse sérieuse quelle est cette frontière - par exemple, il est raisonnable de supposer que l'on pourrait forcer un algorithme de chiffrement par céser pour des mots de trois lettres, car il y en a peu qui ont du sens.

Vous êtes également confronté à des problèmes de réutilisation. Dans la Seconde Guerre mondiale, l'Engima a surmonté ce problème en ayant des paramètres programmables pour leur algorithme secret, mais cela a également été brisé.

Il y a aussi l'élément humain de la cryptographie à considérer. Je me rends compte que l'étiquette sur l'étain dit "utiliser une fois, ne pas digérer", etc., mais les humains sont des humains et utiliseront probablement deux, trois fois, etc. Tout comportement de ce genre joue entre les mains du cryptanalyste.

60
user2213

Un algorithme de "cryptage" inconnu a toujours été réalisé au moins une fois. Je parle de script Minoan Linear B , une méthode d'écriture qui a été utilisée en Crète vers 1300 av. La méthode a été perdue quelques siècles plus tard, avec la mort de tous les pratiquants et l'effondrement général de la civilisation pendant le soi-disant âge des ténèbres grecs . Lorsque les archéologues ont commencé à tamiser la terre autour de Knossos et d'autres endroits, à la fin du 19e siècle, ils n'ont obtenu qu'un tas de tablettes avec des signes inconnus, sans aucun indice sur le système d'écriture utilisé pour les produire.

L'histoire intéressante ici est que Linear B était démêlé dans les années 1950, en utilisant les mêmes outils d'analyse qui étaient utilisés contre les systèmes de cryptage de l'époque. En effet, l'écriture était considérée comme un "algorithme de cryptage inconnu". Il a succombé aux analyses statistiques, aux inférences enchaînées et à certaines hypothèses sur le texte en clair (essentiellement, l'hypothèse que la langue de base pour une variante du grec). Il s'agit d'une illustration classique et magistrale de la façon dont la cryptanalyse fonctionne contre les "cryptosystèmes manuels".


Bien sûr, il n'est pas plausible de supposer qu'un algorithme cryptographique peut être utilisé et rester secret. Dans la même hypothèse, il n'y a pas de piratage de jeux vidéo ou de contenus multimédias. Le monde réel nous rappelle implacablement que ce n'est pas vrai. La seule manière connue par laquelle un algorithme peut rester secret est de tuer ses inventeurs et ses praticiens, de détruire leur appareil et d'attendre quelques siècles. Cela a quelques effets secondaires gênants.

Et même si, dans une instance spécifique donnée, les détails d'un algorithme n'ont pas été divulgués encore, il n'y a aucun moyen de quantifier combien de secret l'algorithme est, c'est-à-dire combien de temps il faudra pour l'ingénierie inverse, les pots-de-vin ou le vol sain pour reconstruire l'algorithme. Ceci est la principale raison pour laquelle les cryptographes, il y a environ 40 ans, ont décidé que la clé et l'algorithme devaient être séparés, la clé étant secrète et l'algorithme non -secret: vous pouvez quantifier le secret d'une clé, pas le secret d'un algorithme.

Cela nous donne un aperçu de votre question spécifique. Votre "algorithme secret" repose sur la notion de "manipulation mathématique". Combien sont-ils? Pouvez-vous estimer ou décrire l'ensemble des "manipulations mathématiques"? Vous constaterez qu'un algorithme de cryptage est lui-même une "manipulation mathématique", donc votre question est plutôt mal définie.

51
Tom Leek

Pour attaquer un protocole cryptographique, vous disposez des méthodes d'attaque suivantes

  • Texte en clair connu: Essayer de trouver des corrélations entre le texte en clair que vous avez et le texte chiffré correspondant.

  • Texte en clair choisi: Chiffrement du texte en clair spécifique et étude des modifications du texte chiffré au fur et à mesure que le texte en clair change.

  • Texte chiffré choisi: Décryptage du texte chiffré spécifique et étude des modifications apportées au texte en clair et des modifications du texte chiffré.

  • Texte chiffré connu: Où tout ce que vous avez est le texte chiffré, voici un exemple simple.

Il y a longtemps, j'ai pris un cours de cryptographie, dans l'une des conférences, nous avons appris la cryptonalyse de chiffres de substitution . Ce n'est pas ainsi que les choses se font maintenant, mais c'est là que la science de la cryptographie a commencé, et c'est ainsi que la cryptonalyse a commencé.

Disons que vous pouvez traverser ce texte chiffré.

Mx qeoiw wirwi xs qi xlex e lsqi-fvia epksvmxlq mw e zivc feh mhie, fyx xlivi'w sri xlmrk M'q rsx yrhivwxerhmrk.

Vous ne connaissez pas l'algorithme, vous ne connaissez pas la clé. Comment faut-il commencer?

  • Analysez la fréquence des lettres: la longueur totale est de 87 lettres. Nous voyons que i a été utilisé 12 fois -> ~ 13%. Selon article de Wikipedia sur la fréquence des lettres , cette lettre est probablement e. Notre texte chiffré est maintenant:

Mx qeoew werwe xs qe xlex e lsqe-fvea epksvmxlq mw e zevc feh mhee, fyx xleve'w sre xlmrk M'q rsx yrhivwxerhmrk.

  • Maintenant, la deuxième lettre la plus fréquente est x a été utilisée 11 fois -> ~ 11%, il est donc probable qu'elle soit t. Notre texte chiffré est maintenant:

Mt qeoew werwe ts qe tlet e lsqe-fvea epksvmtlq mw e zevc feh mhee, fyt tleve'w sre tlmrk M'q rst yrhivwterhmrk.

  • Maintenant, nous commençons à voir les modèles. Remplacement de i->e et x->t suggère que la clé pourrait être 4. Essayons:

Il est logique pour moi qu'un algorithme de brassage maison soit une très mauvaise idée, mais il y a une chose que je ne comprends pas.

Ahaa! Nous avons compris! Vous venez de faire votre première cryptonalyse. C'est une façon d'analyser le texte chiffré.

32
Adi

Je pense que personne ne l'a dit à haute voix ici, alors je le ferai.

Si un cryptographe ne reçoit qu'un seul texte chiffré sans moyen d'en obtenir plus, le texte chiffré est court et aucune connaissance du texte en clair n'est donnée, il est presque impossible de déchiffrer le texte. La seule façon dont cela est encore possible est que le chiffre se situe autour du niveau de difficulté d'un chiffre de substitution.

Étant donné le même algorithme, s'il existe un moyen d'obtenir plus de textes chiffrés à la demande, si le texte chiffré est suffisamment long ou s'il existe des parties connues du texte en clair pour aider, il est probable que l'algorithme peut être craqué avec suffisamment d'effort.

Mais même quand même, la cryptanalyse nécessite beaucoup d'efforts par rapport à l'effort de création d'un cryptoalgorithme simple à partir de zéro, il est donc peu probable que quelqu'un dépense l'effort à moins qu'il y ait une bonne raison de le faire.

15
Nakedible

Si vous allez distribuer un algorithme secret, pourquoi ne pas simplement distribuer des pads ponctuels à la place? C'est plus sûr.

Si vous n'aimez pas l'idée de tampons à usage unique car trop de données circulent sur le fil, alors pourquoi supposez-vous que l'attaquant n'a qu'un seul texte crypté?

En supposant que quelqu'un n'a qu'un seul texte crypté et n'a pas l'algorithme (deux mauvaises hypothèses), votre système de cryptage sous-jacent faible mais bien connu n'a probablement pas de vulnérabilités pour commencer.

13
mgjk

Il y a plusieurs façons.

Le premier, et le plus évident, est que les attaquants ont compromis votre serveur dans la mesure où ils ont réussi à obtenir votre code source. Dans ce cas particulier, votre programme local est aussi bon que rien.

La deuxième façon est que l'attaquant pourrait être en mesure de soumettre ses propres valeurs à votre algorithme et de voir le résultat avant/après. Ceci est connu sous le nom de Chosen Plaintext Attack . Un bon schéma de chiffrement ne devrait pas y être vulnérable. Un programme local l'est probablement.

Même sans une attaque en texte clair choisie, un schéma local est généralement ridiculement faible. Un profane comme vous et moi ne pourrons peut-être pas comprendre le résultat d'un programme local. Cependant, il existe une classe de personnes très intelligentes qui consacrent leur temps et leurs efforts à briser de tels schémas cryptographiques, généralement en échange d'un bon salaire. Vous en avez peut-être entendu parler, nous les appelons Cryptographes.

8
user10211

Veuillez répondre à cette question en supposant que l'algorithme est gardé complètement secret, malgré la difficulté à atteindre dans la vie réelle.

Le problème avec cela est que vous ignorez principe de Kerckhoffs , qui dit que la sécurité d'un schéma de cryptage ne devrait pas dépendre du secret de l'algorithme.

Quoi qu'il en soit, si vous êtes vraiment intéressé par la crypto, vous devriez suivre un cours comme celui-ci .

4
matugm

Puisqu'il n'a pas été mentionné et que cette question existe depuis un certain temps ...

Un informaticien a aidé à déchiffrer le texte crypté d'une société secrète du XVIIIe siècle. Le texte était très orné, avec des symboles et des glyphes. Il a épaté les experts littéraires pendant des siècles. L'astuce consistait à deviner certaines lettres et leur signification, et à deviner également la langue d'origine, car l'allemand a des fréquences de lettres différentes de l'anglais ou de l'italien.

Voici la description du texte chiffré et comment il a été démêlé.

http://phys.org/news/2011-10-scientist-mysterious-copiale-cipher.html

http://stp.lingfil.uu.se/~bea/copiale/

http://www.wired.com/dangerroom/2012/11/ff-the-manuscript/all/ (Très long, très intéressant.)

Avec le Copiale Cipher, l'équipe de décryptage a commencé à ne même pas connaître la langue du document crypté. Mais ils avaient une intuition sur les caractères romains et grecs répartis dans tout le manuscrit, alors ils les ont isolés des symboles abstraits et l'ont attaqué comme le vrai code.

"Cela a pris assez de temps et a entraîné un échec complet", explique Knight. Après avoir essayé 80 langues, l'équipe de cryptographie s'est rendu compte que les caractères romains étaient "nuls", destinés à induire le lecteur en erreur. Ce sont les symboles abstraits qui détiennent le message.

L'équipe a ensuite testé l'hypothèse selon laquelle des symboles abstraits de formes similaires représentaient la même lettre ou des groupes de lettres. Finalement, les premiers mots significatifs de l'allemand ont émergé: "Cérémonies d'Initiation", suivi de "Section Secrète".

3
Chloe