87 votes

Pourquoi XOR est-il utilisé sur la cryptographie?

Pourquoi XOR est-il uniquement utilisé dans les algorithmes de chiffrement, alors que d'autres portes logiques telles que OR, AND et NOR ne sont pas utilisées?

64voto

Tiago Points 1234

Parce que XOR ne divulgue pas d'informations à propos de l'entrée d'origine.

En considération de la vérité-tables de ET, OU et ou exclusif (XOR):

Et

0 ET 0 = 0

0 ET 1 = 0

1 ET 0 = 0

1 ET 1 = 1 (Fuite!)

Ou

0 OU 0 = 0 (Fuite!)

0 OU 1 = 1

1 OU 0 = 1

1 OU 1 = 1

XOR

0 XOR 0 = 0

0 XOR 1 = 1

1 XOR 0 = 1

1 XOR 1 = 0

Tout sur la première colonne est notre entrée (c'est à dire, le texte brut). La deuxième colonne est la clé de notre et la dernière colonne est le résultat de votre entrée "mixte", avec à la clé l'opération spécifique (c'est à dire, le texte crypté).

Maintenant, imaginez un attaquant a obtenu l'accès à certains octets cryptés, dire: 10010111, et il veut obtenir l'original du texte clair de l'octet.

Disons que l'opérateur and est utilisé pour générer cette chiffré octets à partir de l'original en clair octet. Si ET a été utilisé, alors nous savons que chaque fois que nous voyons le bit " 1 "dans la chiffrés octet de l'entrée (c'est à dire, la première colonne, le texte brut) DOIT également être" 1 " que par la table de vérité du ET. Si le cryptage bits est un '0' au lieu de cela, nous ne savons pas si l'entrée (c'est à dire, le texte brut) est un '0' ou '1'. Par conséquent, nous pouvons conclure que le texte brut d'origine est: 1 _ _ 1 _ 111. Donc 5 bits du texte brut d'origine ont été divulgués (c'est à dire, peut être consulté sans la clé).

En appliquant la même idée OU de, nous voir que chaque fois que nous trouvons un " 0 " dans les octets chiffrés, nous savons que l'entrée (c'est à dire, le texte brut) doit également être un '0'. Si nous trouvons un '1' alors nous ne savons pas si l'entrée est un '0' ou '1'. Par conséquent, nous pouvons conclure que la saisie de texte brut est de: _ 00 _ 0 _ _ _. Cette fois, nous avons été en mesure de fuite de 3 bits du texte brut d'origine octet sans rien connaître de la clé.

Enfin, avec XOR, nous ne pouvons pas obtenir quelque peu de l'original du texte clair de l'octet. Chaque fois que nous voyons un '1' dans les octets chiffrés, que " 1 " aurait pu être généré à partir d'un '0' ou un '1'. Même chose avec un " 0 " (cela pourrait venir de '0' ou '1'). Donc, pas un seul bit est une fuite de l'original du texte clair de l'octet.

37voto

Anurag Uniyal Points 31931

Je pense que la raison principale est que si une variable aléatoire de distribution inconnue R1 est XORed avec une variable aléatoire R2 de distribution uniforme, le résultat est une variable aléatoire de distribution uniforme. Vous pouvez donc en principe randomiser facilement une entrée biaisée, ce qui est impossible avec d'autres opérateurs binaires.

30voto

recursive Points 34729

La sortie de XOR dépend toujours des deux entrées. Ce n'est pas le cas pour les autres opérations que vous mentionnez.

6voto

user100921 Points 569

Je pense que XOR est réversible. Si vous voulez créer du hachage, évitez XOR.

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