Gilbert Sandford Vernam (3 de abril de 1890 - 7 de febrero de 1960) fue un graduado del Instituto Politécnico de Worcester en 1914 e ingeniero de AT&T Bell Labs que, en 1917, inventó un cifrado de flujo polialfabético aditivo y más tarde co-inventó un cifrado de libreta de un solo uso automatizado . Vernam propuso un cifrado de teleimpresora en el que una clave previamente preparada , guardada en una cinta de papel , se combina carácter por carácter con el mensaje de texto simple para producir el texto cifrado . Para descifrar el texto cifrado, la misma clave se combinaría de nuevo carácter por carácter, produciendo el texto simple . Vernam trabajó más tarde para la Postal Telegraph Company y se convirtió en empleado de Western Union cuando esa empresa adquirió Postal en 1943. Su trabajo posterior fue principalmente con sistemas de conmutación automática para redes telegráficas .
La función de combinación que Vernam especificó en la patente estadounidense 1.310.719 , emitida el 22 de julio de 1919, es la operación XOR , aplicada a los impulsos o bits individuales utilizados para codificar los caracteres en el código Baudot . Vernam no utilizó el término "XOR" en la patente, pero implementó esa operación en la lógica de retransmisión . En el ejemplo que dio Vernam, el texto simple es A , codificado como " ++--- " en Baudot, y el carácter clave es B , codificado como " +--++ ". El texto cifrado resultante será " -+-++ ", que codifica una G. La combinación de la G con el carácter clave B en el extremo receptor produce " ++--- ", que es el texto simple original A. La NSA ha llamado a esta patente "quizás una de las más importantes en la historia de la criptografía". [1]
Poco después, Joseph Mauborgne , por entonces capitán del Cuerpo de Señales del Ejército de los Estados Unidos , propuso, además, que la clave de cinta de papel contuviera información aleatoria . Las dos ideas, al combinarse, implementaron una forma automática de la libreta de un solo uso , aunque ninguno de los inventores utilizó ese nombre en ese momento.
Claude Shannon , también de Bell Labs, demostró que el block de un solo uso, correctamente implementado, es irrompible en su investigación de la Segunda Guerra Mundial que fue publicada más tarde en octubre de 1949. También demostró que cualquier sistema irrompible debe tener esencialmente las mismas características que el block de un solo uso: la clave debe ser verdaderamente aleatoria, tan grande como el texto sin formato, nunca reutilizada en su totalidad o en parte, y mantenida en secreto. [2]
En la terminología moderna, un cifrado Vernam es un cifrado de flujo simétrico en el que el texto simple se combina con un flujo de datos aleatorio o pseudoaleatorio (el "flujo de claves") de la misma longitud, para generar el texto cifrado, utilizando la función booleana "o exclusivo" (XOR) . Esto se simboliza con ⊕ [3] y se representa mediante la siguiente " tabla de verdad ", donde + representa "verdadero" y − representa "falso".
Otros nombres para esta función son: No igual (NEQ), suma módulo 2 (sin 'acarreo') y resta módulo 2 (sin 'tomar prestado').
El cifrado es recíproco en el sentido de que se utiliza el mismo flujo de claves tanto para cifrar el texto simple en texto cifrado como para descifrar el texto cifrado y obtener el texto simple original:
y:
Si el flujo de claves es verdaderamente aleatorio y se utiliza solo una vez, se trata en efecto de un bloque de un solo uso . La sustitución de datos pseudoaleatorios generados por un generador de números pseudoaleatorios criptográficamente seguro es una construcción común y eficaz para un cifrado de flujo. RC4 es un ejemplo de un cifrado Vernam que se utiliza ampliamente en Internet.
Sin embargo, si se utiliza el mismo flujo de claves para dos mensajes, conocido por los criptoanalistas como profundidad , se puede eliminar el efecto del flujo de claves, dejando los dos textos sin formato unidos mediante la operación XOR. El resultado es equivalente a un cifrado de clave en ejecución y los dos textos sin formato se pueden separar mediante técnicas criptoanalíticas lingüísticas.
Un error de este tipo por parte de un operador permitió que los británicos realizaran un criptoanálisis del código Lorenz en Bletchley Park durante la Segunda Guerra Mundial . Diagnosticaron cómo se generaba el flujo de claves, descubrieron cómo descifrar el código y leyeron enormes cantidades de mensajes de alto nivel enviados y recibidos por el alto mando alemán sin siquiera haber visto una máquina Lorenz real. [4]