human
Comment attaquer un chiffrement à usage unique répété (c'est-à-dire un chiffrement à usage unique avec réutilisation de clé) ?
Je suis nouveau en cryptographie et mon problème concerne les attaques de chiffrement à usage unique répété sur OTP.
Le problème que j'ai rencontré dans mon cours est que j'ai 10 textes chiffrés avec la même clé $K$. On me donne ensuite un autre texte chiffré que je dois décrypter.
Je sais que faire un XOR entre deux chiffres me donne le XOR de leurs messages d'origine.
Ma question est la suivante : que faut-il faire ensuite ?
J'ai essayé de prendre 3 textes chiffrés $C_1, C_2$ et $C_3$.
Ensuite, j'ai obtenu $S_1 = C_1 \oplus C_2  \oplus $```' '```, et j'ai également obtenu $S_2 = C_1 \oplus C_3 \oplus$ ```' '```.
Ensuite, j'ai comparé tous les caractères correspondants dans $S_1$ et $S_2$,
et si $S_1[i] = S_2[i]$, alors je calcule $S_1[i] \oplus C_2[i]$ pour obtenir $K[i]$.
J'ai essayé cela sur papier avant de coder et cela a fonctionné, mais il se peut que j'ai oublié quelque chose.
Est-ce la bonne approche ? Pourquoi cela fonctionne-t-il
gpt
La réponse classique à la question "que faut-il faire après avoir le XOR des deux messages d'origine" est le criblage.

Cela signifie que vous faites une supposition sur une phrase commune qui peut apparaître dans l'un des textes en clair (l'exemple classique en anglais ASCII est la phrase de 5 lettres " the "), et vous faites un XOR exclusif avec cela par rapport au XOR des deux messages d'origine à différents endroits. Si l'un des textes en clair contenait le texte du criblage (" the " dans notre exemple), alors le résultat du XOR exclusif est ce que l'autre texte en clair avait à cette position ; si aucun des textes en clair ne contenait cela, il est probable que le résultat du XOR exclusif soit simplement du charabia. Et, une fois que vous avez une section courte plausible, vous pouvez l'étendre (par exemple, si vous savez qu'un des textes en clair est " na**", vous pouvez parcourir le dictionnaire de tous les mots commençant par "na", les utiliser comme cribles et voir lequel rend l'autre texte en clair cohérent).

De plus, vous pouvez souvent déduire des choses directement à partir du motif de bits. Par exemple, si les messages sont en ASCII, alors une chose à noter est que le bit 6 des lettres est défini, mais le bit 6 des espaces, des chiffres et de la plupart de la ponctuation est clair ; parce que les espaces sont beaucoup plus courants que les chiffres et la ponctuation, cela vous donnera une bonne supposition de l'endroit où les espaces apparaissent dans les textes (même si cela ne vous dit pas dans quel message un espace spécifique apparaît).

Maintenant, si vous avez 11 messages tous chiffrés avec le même pad (un "11-time pad"), les choses deviennent encore plus faciles. Évidemment, vous pouvez prendre un criblage à travers un message et le vérifier contre les 10 autres ; s'il rend les 10 autres cohérents, alors il est presque certainement exact. Mieux encore, en utilisant l'observation selon laquelle vous pouvez distinguer les espaces des lettres (encore une fois, en comparant le bit 6), vous pouvez trouver où tous les espaces apparaissent dans les messages ; ceux-ci agissent tous comme des cribles d'un caractère, révélant probablement tout le texte de tous les messages.