¿Esto significa que, al utilizar una técnica de este tipo, esencialmente debería tener una lista de todas las utilizadas anteriormente para asegurarse de no reutilizar ninguna?
Esto se debe ver en el contexto original en el que dos partes compartirían un libro de códigos formado por una secuencia aleatoria prolongada.
Normalmente, usas una secuencia determinada: debes enviar un mensaje de 1000 caracteres, utilizar los primeros caracteres OTP no utilizados en el libro de códigos, y luego destruirlos . Anota la posición en la clave OTP y la envía. Su control tiene el libro de códigos intacto y puede reconstruir el mensaje.
Si no destruye físicamente la clave que acaba de usar, entonces se expone al descifrado de mensajes pasados si se captura el libro.
Para obtener un nuevo libro de códigos, necesitaba que se lo entregara de alguna manera, y era un negocio arriesgado. Así que hubo la tentación de reutilizar una clave antigua, y en ese punto, el cifrado OTP deja de ser perfectamente seguro. Cuanto más use la misma clave, menos segura será.
Si el enemigo intercepta un mensaje de 2000 caracteres con la clave 15273 (usando OTP 15273 a 17272) y un mensaje de 1000 caracteres con la clave 16517 (usando OTP 16517 a 17516), ahora tiene dos secuencias de 16517 a 17272 que fueron codificado con los mismos caracteres.
Modelo muy simplificado
Supongamos que usamos una OTP base 10 con números e imaginemos que "codificamos" usando suma modular. Así que 7 codificado por la clave 5 se convierte en 7 + 5 mod 10 = 2.
Si interceptas un "2" cifrado, sabes que fue generado por A + B = 2, pero ¿cuál era el valor de A? ¿Qué hay de B? Usted no puede saber Tanto 7 + 5 como 8 + 4 te dan 2 ... en realidad tienes las diez posibilidades y, por lo tanto, un cifrado perfecto. Sin saber la clave, el mensaje puede ser cualquier mensaje .
Pero ahora usted intercepta un "4" cifrado y sabe que fue generado por C + D = 4, pero debido a la reutilización de la clave, B es lo mismo que D, por lo que también sabe que C + B = 4.
Restando la segunda relación de la primera
A+B = 2
C+B = 4
llegamos a la conclusión de que A + BCB = AC = -2, es decir, el carácter n-th del primer mensaje y el carácter m-th del segundo mensaje difieren en 2. Dado que ambos mensajes deben tener sentido , ya no es cierto que pueden ser cualquier mensaje , y con un poco de prueba y error podrá leer ambos, no es más complejo que el Sudoku:
First message : ATTACK AT DAWN
Second message shifted using A-C rule: BQF ORXTNABERN <-- 1st msg can't be it
First message : HELLO WORLD OF
Second message shifted using A-C rule: QUEAMISH OSSIF <-- now we're somewhere