59 votes

Quel est le problème avec le cryptage XOR?

J'ai écrit un court programme C ++ pour effectuer le cryptage XOR sur un fichier, que je pourrais utiliser pour certains fichiers personnels (s'il est fissuré, ce n'est pas grave, je protège uniquement contre les lecteurs occasionnels). Fondamentalement, je prends un mot de passe ASCII et XOR à plusieurs reprises le mot de passe avec les données dans le fichier.

Maintenant, je suis curieux: si quelqu'un voulait résoudre ce problème, comment s'y prendrait-il? Cela prendrait-il longtemps? Cela dépend-il de la longueur du mot de passe (c.-à-d., Quel est le gros-O)?

128voto

Pavel Minaev Points 60647

Le problème avec le cryptage XOR, c'est que pour les longues courses caractères de même, il est très facile de voir le mot de passe. Ces longues courses sont le plus souvent des espaces dans des fichiers texte. Dire votre mot de passe est de 8 caractères, et le fichier texte a 16 places dans une certaine ligne (par exemple, dans le milieu de l'ASCII-table graphique). Si vous venez de XOR avec votre mot de passe, vous verrez que la sortie de répétition des séquences de caractères. L'attaquant serait juste regarder pour tout, d'essayer de deviner le caractère dans le fichier d'origine (l'espace serait le premier candidat à essayer) et calculer la longueur du mot de passe de la longueur de la répétition de groupes.

Les fichiers binaires peuvent être encore pire car ils contiennent souvent de la répétition des séquences de 0x00 octets. Évidemment, XORing avec celles-ci est sans objet, de sorte que votre mot de passe sera visible en texte brut dans la sortie! Un exemple d'un très commun en format binaire qui a de longues séquences de zéros est - .doc.

73voto

GeneQ Points 2885

Je suis d'accord avec Pavel Minaev l' explication de XOR de faiblesses. Pour ceux qui sont intéressés, voici un aperçu de base de l'algorithme utilisé pour briser le trivial cryptage XOR dans quelques minutes:

  1. Déterminer combien de temps est la clé. Cette est fait par XORing les données chiffrées avec lui-même décalé divers numéros de lieux, et d'examiner la façon dont beaucoup de les octets sont les mêmes.

  2. Si les octets sont égaux sont supérieure à un certain pourcentage (6% accoridng de Bruce Schneier Cryptographie appliquée seconde édition), alors vous avez déplacé la données par un multiple de la keylength. Par trouver la plus petite quantité de déplacement qui en résulte dans une large montant de l'égalité des octets, vous trouverez les keylength.

  3. Maj le texte chiffré par l' keylength, et XOR contre lui-même. Cela supprime la clé et vous laisse avec le texte en clair XORed avec l' en clair décalé de la longueur de la clé. Il devrait y avoir assez en clair pour déterminer le message contenu.

Lire plus sur le Chiffrement des Questions, Partie 1

26voto

IfLoop Points 59461

XOR de chiffrement peut être raisonnablement* forte que si les conditions suivantes sont remplies:

  • Le texte brut et le mot de passe sont sur la même longueur.
  • Le mot de passe n'est pas réutilisée pour le chiffrement plus d'un message.
  • Le mot de passe ne peut pas être deviné, c'est à dire d'un dictionnaire ou d'autres mathématique moyens. Dans la pratique, cela signifie que les bits sont aléatoires.

*Raisonnablement solide sens ne peut être rompu par trivial, mathématiques comme GeneQ post. Il n'est pas plus fort que votre mot de passe.

15voto

laalto Points 50581

Outre les points déjà mentionnés, le cryptage XOR est totalement vulnérable aux attaques par du texte clair connu:

 cryptotext = plaintext XOR key
key = cryptotext XOR plaintext = plaintext XOR key XOR plaintext
 

où XORring les textes en clair s’annulent, ne laissant que la clé.

Ne pas être vulnérable aux attaques par du texte en clair connu est une propriété obligatoire mais non suffisante de toute méthode de cryptage "sécurisée" dans laquelle la même clé est utilisée pour plus d'un bloc de texte en clair (c.-à-d. Qu'un tampon à usage unique est toujours sécurisé).

1voto

Je réponds un peu tard, mais personne ne l’a encore mentionné: c’est ce qu’on appelle un chiffre de Vigenère.

Wikipedia donne un certain nombre d' attaques de chiffrement d' analyse pour le casser; Encore plus simple, cependant, puisque la plupart des formats de fichiers ont un en-tête fixe, il serait XOR l’en-tête en texte clair avec l’en-tête crypté, ce qui vous donnera la clé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X