El artículo de WikiPedia tiene una buena descripción de las debilidades prácticas de la OTP, y por qué no se usa en la informática moderna.
Solo puedo agregar que incluso en las redes modernas la transmisión no es perfecta y los bits se pueden voltear, y por lo tanto los mensajes se verifican (creo que al incluir un hash del mensaje original) para verificar que el mensaje se entregó intacto. Sin él, no habría manera de validar que el mensaje recibido realmente lo hizo a través del cable intacto y, por lo tanto, es un mensaje válido. Esto, a su vez, eliminaría el secreto perfecto, ya que ahora puede ser forzado brutalmente (con el éxito de la fuerza bruta evaluada al hacer coincidir el hash con el original).
Por ejemplo, veamos el ejemplo en el artículo en la sección "Intento de análisis criptográfico" que ilustra que el atacante no puede saber si "TARDE" es el mensaje original para una clave de potencial forzado brutalmente "TQURI".
Deje que la función hash de validación de transmisión (a.k.a. descifrado) se defina como H = Sum(characters) Mod Count(characters)
, que es un resumen de todos los caracteres del mensaje y luego la división de módulo por número de caracteres.
Con dicha función de hash, el mensaje original HELLO
se etiquetaría con el código hash (7 + 4 + 11 + 11 + 14) % 5 = 2
. El destinatario del mensaje tomaría un mensaje descifrado, recalcularía el hash sobre los datos recibidos y validaría que el resultado es 2
.
Ahora, evaluando la clave forzada de fuerza bruta TQURI
, el texto descifrado es LATER
. Sin el código hash para validar el mensaje, el interceptor no tiene forma de saber si la clave TQURI
realmente funcionó o no (seguridad perfecta). Con la clave hash, el interceptor ahora puede validar calculando la clave hash para LATER
que es (11 + 0 + 19 + 4 + 17) % 5 = 1
. Como el código hash calculado 1
no coincide con el hashcode 2
del mensaje original, el interceptor ahora sabe que el mensaje original no es LATER
y que la clave TQURI
no es una clave válida, y por lo tanto continúa enumerando y fuerza bruta hasta que una clave produzca un código hash correspondiente (no es una seguridad perfecta debido a la capacidad de fuerza bruta).