Nunca ha sido tan difícil estar completamente seguro de que cualquier mensaje que envíe pueda ser transmitido o recibido en absoluto secreto..

Este santo grial de la criptografía ha frustrado a los expertos en seguridad, y la mayoría de las personas está dispuesta a conformarse con el uso de programas de encriptación como gpg, que, aunque teóricamente se puede romper, resistirá todos los intentos de craqueo mucho después de que empujas las margaritas..

¿Qué pasaría si, sin embargo, hubiera una manera de estar seguros de que sus correos electrónicos personales, las fotos de su gatito, las copias de respaldo de sus declaraciones de impuestos de la última década y demás eran seguras incluso si se las interceptaba? Introduzca el pad de One Time.

  • Cómo mantenerse seguro en línea

La notoria OTP

En términos simples, un One Time Pad es una serie de números aleatorios que usted acuerda con alguien con quien desea comunicarse, generalmente reuniéndose en persona e intercambiando los pads..

Al enviar un mensaje, primero debe convertirlo en números y luego agregar cada uno de estos números a los números del teclado. Una vez que el destinatario recibe el mensaje, pueden trabajar hacia atrás utilizando su copia del teclado, deduciendo los números para recuperar su mensaje original.

Una implementación de la OTP que codifica el mensaje. “El halcon ha volado.”

Siempre que los números sean realmente aleatorios, nadie más ve el teclado, y el mismo texto no se codifica dos veces con el mismo teclado, incluso el superordenador más rápido del mundo no podría descifrar el mensaje.

La fuerza del cifrado reside en la aleatoriedad de los números de la almohadilla. Sin saber esto, cualquiera que intercepte un mensaje puede ver la palabra 'LINUX' encriptada como 'OSYAJ' pero no tendría forma de saber que no es otra palabra de cinco letras, como 'CHILE'.

El One Time Pad ha estado dando vueltas en alguna forma desde los años 1880, pero no fue hasta 1917 que Gilbert Vernam y otros patentaron formalmente una máquina para automatizar el proceso..

En este caso se utilizaron dos carretes de cinta perforada, uno con el mensaje original y otro con el teclado de números aleatorios..

Los agentes de la KGB en los EE. UU. Se aprovecharon rápidamente de esto durante la Guerra Fría, colocando pequeñas almohadillas dentro de níqueles ahuecados, nueces falsas y cualquier número de escondites de basura..

En el siglo XXI, las computadoras como Raspberry Pi se prestan para ser transportadas fácilmente y son perfectas para generar y procesar One Time Pads. Pero para entender por qué, es necesario entender los escollos del One Time Pad.

  • Ver más proyectos de Raspberry Pi.
OTP va térmica

Para continuar, debe tener su impresora Adafruit configurada y funcionando. Afortunadamente el sitio web tiene una excelente guía para esto..

Primero instale rng-tools como se indica en el Paso 1 del tutorial en la página siguiente. También deberá editar / etc / default / rng-tools en su editor de texto favorito. Elimine el # al principio de la línea HRNGDEVICE = / dev / hwrng. Guardar y Salir.

Usosudo /etc/init.d/rng-tools restart para estar seguro de que la Raspberry Pi está usando solo el hardware RNG ahora.

A continuación, descargue el software otp-gen:

$ git clone https://github.com/iworkinpixels/otp-gen.git

En esta etapa, si lo desea, puede ir a la carpeta opt-gen / y ejecutar un pad de muestra para ver cómo se ve:

$ cd otp-gen

$ sudo ./otp.py

$ nano otp.txt

A continuación, debemos asegurarnos de que el software se inicie automáticamente cuando se inicie la máquina:

$ sudo nano /etc/rc.local

Desplácese hasta la parte inferior de este archivo e inserte las siguientes tres líneas sobre las palabras 'salir 0':

$ cd / home / pi / otp-gen

$ ./otp.sh

$ python ./otp.py

Si ha descargado la carpeta otp-gen a otro lugar que no sea / home / pi /, cambie la primera línea en consecuencia.

Use Ctrl + X para salir del editor de texto y presione Y para guardar los cambios.

A continuación, use sudo reboot para reiniciar su Raspberry Pi. La impresora debe imprimir un mensaje que indique que está conectado a la red junto con su dirección IP, luego hacer una pausa.

Simplemente presione el botón para generar su propio pad de una vez. Repite tantas veces como quieras.

La entropía no es lo que solía ser ...

Bruce Schneier una vez describió el One Time Pad como “teóricamente seguro, pero ... no seguro en un sentido práctico.”

Esto refleja el hecho de que ha habido ocasiones en que las PTO se han roto en la práctica a pesar de su seguridad teórica. En la década de 1940, por ejemplo, el programa de contrainteligencia de US SIGINT, Venona, pudo descifrar varios mensajes soviéticos OTP simplemente porque se habían reutilizado algunos parches..

Se cometió este pecado crypto-cardinal porque los soviéticos simplemente no pudieron generar plataformas lo suficientemente rápido para los miles de mensajes diarios enviados durante la guerra..

Una ruptura similar es encontrada por los descifradores de códigos alemanes en el Cryptonomicon de Neal Stephenson. Los británicos emplean una serie de señoras mayores con pequeñas máquinas de bingo para dibujar bolas numeradas y generar almohadillas..

Desafortunadamente, los viejos no siempre obedecen a las mejores prácticas, ya que no miran hacia otro lado cada vez que roban una bola como se indica, lo que significa que subconscientemente seleccionan números predecibles..

Avancemos al siglo XXI y el problema no ha mejorado mucho. Se han dedicado libros enteros a este tema, pero es suficiente decir que las computadoras generalmente no son muy buenas para generar aleatoriedad verdadera.

Por lo general, cuando es necesario, un sitio web o programa le pedirá que mueva el mouse para proporcionar una llamada “fuente de ruido” trabajar desde.

Sin embargo, principalmente cuando una computadora requiere grandes cantidades de aleatoriedad, formará una cadena de datos pseudoaleatorios de su grupo de entropía, que, aunque es ideal para determinar dónde caerá el siguiente bloque cuando juegue Tetris, es menos que perfecto cuando se trata de seguridad.

Afortunadamente, una de las características menos conocidas de la Raspberry Pi es que tiene su propio generador de números aleatorios de hardware incorporado, que en combinación con la suite rng-tools puede generar exactamente el tipo de aleatoriedad de alta calidad necesaria para una OTP.

El segundo obstáculo al que se enfrentan los usuarios de OTP tiene que ver con la generación y distribución de claves. Los soviéticos eran incapaces de mantenerse al día con las demandas de la guerra, y en la vida real, las máquinas de bingo de las señoritas británicas probablemente terminarían fumando con el número de veces que tendrían que ser batidas..

Se ha borrado una forma bastante dramática de estar seguros de ciertos datos. Por razones de seguridad, sería mejor considerar herramientas de borrado seguro antes de alcanzar un soplete.

Afortunadamente, el RNG de hardware integrado en la Raspberry Pi puede generar grandes cantidades de datos en un corto período de tiempo. Por ejemplo, un pad con 10,000 juegos de números aleatorios de cinco dígitos se puede generar en segundos activando el RNG de hardware (consulte el paso 1 de nuestra guía en la página siguiente) y luego ingrese:

$ sudo base64 / dev / hwrng | tr -dc '0-9' | fold -sw 5 | head -c 10000> bobtoaliceotp.txt
Maximiza tu MAC

Es mejor antes de enviar cualquier información privada con una OTP para enviar primero un mensaje de respuesta de desafío. Técnicamente, podría acordar dos palabras clave para usar con su destinatario: una podría indicar que es usted y que puede hablar libremente, por ejemplo, “Everest” - y otro podría revelar que estás hablando bajo coacción, por ejemplo, “Gorrión”.

Sin embargo, esto significa que el mismo texto se cifra cada vez, lo que hace que los mensajes sean más fáciles de descifrar..

Un mejor sistema es elegir de una lista de palabras o frases preestablecidas. Una forma de hacer esto sería acordar un libro (los directorios y los almanaques son tipos de libros perfectos para esto) y en su “reto” mensaje que podría enviar una página y una línea arbitraria.

Por ejemplo, podría aceptar el uso de la edición de 1992 de Wisden Cricketer's Almanack. Bob puede enviarle un mensaje a Alice diciendo, “613-1.” Alice puede responder con la primera línea de la página 613, que es: “Worcestershire fue el único condado que ganó dos trofeos en 1991.”

Luego puede agregar un desafío propio al mensaje, por ejemplo, solicitando la página 582, línea 4..

Si, por supuesto, Alice responde con otra cosa que no sean las palabras correctas, Bob sabrá que no es ella o ella está bajo presión, y lo mismo se aplica con su respuesta..

Puede aumentar aún más la seguridad de este sistema si acepta de antemano que la respuesta al desafío no debe ser la línea solicitada en el mensaje, sino la una (digamos) tres líneas después, o quizás la misma línea en la página siguiente.

El archivo de texto resultante se puede imprimir, por ejemplo, mediante la impresora térmica de Adafruit. Esta impresora tiene la ventaja de que, a diferencia de la mayoría de las impresoras láser, no registra el número de serie, marca o modelo en cada hoja que imprime (para esto, consulte este sitio web).

También admite hasta 15 m de papel, que será suficiente para generar mensajes largos. Usando esto en combinación con el excelente programa otp-gen, también puede imprimir sus propios pads automáticamente con solo tocar un botón (vea el cuadro 'OTP goes Thermal' en esta página).

Una vez que las resmas de papel se imprimen y se guardan de manera segura, luego viene el problema de la distribución física de las almohadillas..

Esta es sin duda la razón principal por la que la OTP no ha tenido un uso generalizado. Se rumorea que el teléfono rojo que corre entre Washington y Moscú, por ejemplo, está asegurado por una OTP, principalmente porque ambas Superpotencias son lo suficientemente ricas y melodramáticas para que hombres con anteojos oscuros se esposen a los maletines y las almohadillas de intercambio a intervalos regulares..

Por supuesto, si ha impreso almohadillas de papel, es posible enviarlas por correo a su destinatario, pero su OTP no será más segura que una carta normal porque puede haber sido interceptada y copiada en el camino. Lo mismo se aplica para el uso de programas de cifrado regulares como GnuPG.

La única manera de asegurarse de que su almohadilla no pueda ser interceptada es entregándola en persona. Una vez más, la humilde Raspberry Pi se destaca aquí porque es extremadamente pequeña y fácil de transportar. Al reunirse con la persona con quien desea intercambiar mensajes, puede darles una copia de la tarjeta MicroSD de su Raspberry Pi o la propia Raspberry Pi.

Para garantizar la seguridad perfecta de sus mensajes, es necesario eliminar las almohadillas que se han utilizado anteriormente.

Si imprimiste el tuyo, un poco de desprendimiento y un encendedor Zippo probablemente serán útiles aquí. (Otros encendedores están disponibles.)

De lo contrario, ejecutar el comando shred en el pad que acaba de usar debería ser suficiente para evitar la recuperación. Las tarjetas SD y Raspberry Pis también son económicas, por lo que si realmente sientes que debes destruirlas una vez que las almohadillas hayan cambiado de manos, también puedes hacerlo..

El bajo costo de una Raspberry PI también es una gran respuesta a otra crítica común, que es que una OTP suele ser muy difícil de escalar más allá de dos personas que intercambian mensajes.

Si decide formar una sociedad secreta, puede ser mejor designar a una persona para que se reúna con cada miembro e intercambie las almohadillas regularmente. Esa persona puede sentarse en el centro de la web y actuar como centro de intercambio de mensajes, remitiéndolos entre los miembros según sea necesario..

Sin embargo, incluso utilizando una Raspberry Pi, es posible interceptar las almohadillas, y la comunicación puede ser complicada. Es por esto que es bueno emplear algunas de las mejores prácticas para su OTP.