Pensiamo a questo:
Ek = cifra "E" con il tasto "k"
M # = Blocco messaggi in chiaro "M" numero "#"
C # = Blocco di testo cifrato "C" numero "#"
La modalità CBC è:
Cx = Ek (Mx XOR Cx-1), o in inglese: per ottenere il testo cifrato per il numero di blocco corrente, si esegue la crittografia con chiave del valore ottenuto prendendo il blocco di messaggi in chiaro dello stesso numero, e xorando ciò contro il precedente blocco di testo cifrato. Questa è la definizione di CBC.
Quindi se hai una serie di blocchi codificati CBC e ti accorgi che C2 e C5 sono lo stesso testo cifrato (cioè C2 = C5), sai:
C2 = Ek (M2 XOR C1)
C5 = Ek (M5 XOR C4)
E poiché C2 = C5, significa:
Ek (M2 XOR C1) = Ek (M5 XOR C4)
Con il potere della matematica, ciò significa più importante che tu sappia anche:
AHA:
(M2 XOR M5) = (C1 XOR C4)
Dato che hai osservato i testi cifrati, non solo sai che C2 è uguale a C5 ma hai anche catturato C1 e C4 nelle tue osservazioni.
Quindi calcoli (C1 XOR C4) e hai un valore, il che significa che hai un numero reale e non una variabile sul lato destro dell'equazione contrassegnata come "AHA !!".
Tale valore è uguale a (M2 XOR M5), come indicato sopra.
Quindi, sotto la tua ipotesi, dove il tuo professore dice che anche tu conosci il testo in chiaro M2, sei in grado di collegarlo a sinistra e risolvere.
Sai che il tuo M2 XOR noto contro il tuo M5 ancora sconosciuto è uguale al valore noto che hai calcolato prendendo lo XOR di C1 e C4.
Ritorno alle origini. La magia di XOR è questa:
Se A XOR B = C, allora B XOR C = A, AND A XOR C = B.
Ecco come funzionano gli array di dischi RAID con tre dischi.
Risultato: i ciphertex duplicati in CBC combinati con un testo in chiaro noto corrispondente a uno dei blocchi consente di calcolare il testo in chiaro dell'altro blocco di testo cifrato corrispondente.