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?
Réponses
Trop de publicités?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.
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.