Cómo utilizar la criptografía One Time Pad con un Pi de frambuesa

Cómo utilizar la criptografía One Time Pad con un Pi de frambuesa

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

Este santo grial de la criptografía ha frustrado durante mucho tiempo a los expertos en seguridad, y la mayoría de la gente está dispuesta a conformarse con el uso de programas de encriptación como gpg, que si bien teóricamente se pueden romper, resistirán todos los intentos de craqueo mucho después de que usted esté empujando las margaritas hacia arriba.

Sin embargo, ¿qué pasaría si hubiera una manera de asegurarse de que sus correos electrónicos personales, las fotos de su gatito mascota, las copias de seguridad de sus declaraciones de impuestos de la última década, etc., estuvieran a salvo incluso si son interceptados? Entra en el Panel de control de una sola vez.

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

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

Si los números son verdaderamente aleatorios, nadie más ve el pad, y el mismo texto no se codifica dos veces con el mismo pad, entonces ni siquiera la supercomputadora más rápida del mundo podría decodificar el mensaje.

La fuerza de la encriptación reside en la aleatoriedad de los números de los pads. Sin saber esto, cualquiera que interceptara un mensaje podría 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 la década de 1880, pero no fue hasta 1917 que Gilbert Vernam et al patentó formalmente una máquina para automatizar el proceso.

En este caso se utilizaron dos bobinas de cinta perforada, una con el mensaje original y otra con el pad de números aleatorios.

Los agentes de la KGB en los EE.UU. se apresuraron a explotar esto durante la Guerra Fría, colocando pequeñas almohadillas dentro de monedas de cinco centavos ahuecadas, nueces falsas y cualquier número de lugares de escondite ruin.

En el siglo XXI, los ordenadores como el Frambuesa Pi se prestan bien para ser transportados fácilmente y son perfectos para generar y procesar One Time Pads. Pero para entender por qué, es necesario entender las trampas del One Time Pad.

Para proceder, necesitará 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 de la guía de la página siguiente. También necesitará editar /etc/default/rng-tools en su editor de texto favorito. Elimine el # al principio de la línea HRNGDEVICE=/dev/hwrng. Grabar y salir.

Use sudo /etc/init.d/rng-tools restart para asegurarse de que el Frambuesa Pi está usando sólo el hardware RNG ahora.

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

https://github.com/iworkinpixels/otp-gen.git DIFUNDE LA PALABRA-

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 tres líneas siguientes encima de las palabras 'exit 0':

cd /home/pi/otp-gen

$./otp.sh

Python./otp.py

Si ha descargado la carpeta otp-gen a cualquier otro lugar además de /home/pi/, cambie la primera línea en consecuencia.

Utilice Ctrl+X para salir del editor de texto y pulse Y para guardar los cambios.

A continuación, utilice sudo reboot para reiniciar su frambuesa Pi. La impresora debería imprimir un mensaje diciendo que está conectada a la red junto con su dirección IP, y luego hacer una pausa.

Simplemente presione el botón para generar su propio panel de control de un solo uso. Repite tantas veces como quieras.

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

Esto refleja el hecho de que ha habido veces en que las Fiscalías han sido quebrantadas 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, fue capaz de descifrar una serie de mensajes soviéticos de la OTP simplemente porque algunas almohadillas habían sido reutilizadas.

Este pecado cripto-cardinal se cometió porque los soviéticos simplemente no podían generar almohadillas lo suficientemente rápido para los miles de mensajes diarios enviados durante la guerra.

Una grieta similar es encontrada por los descifradores alemanes en Cryptonomicon de Neal Stephenson. Los británicos emplean una balsa de ancianas con pequeñas máquinas de bingo para dibujar bolas numeradas y generar almohadillas.

Desafortunadamente los viejos no siempre obedecen las mejores prácticas - no miran hacia otro lado cada vez que dibujan una pelota como se les ha instruido, lo que significa que subconscientemente seleccionan números predecibles.

Avanzando rápidamente hacia el siglo XXI, el tema no ha mejorado mucho. Se han dedicado libros enteros a este tema, pero basta decir que las computadoras generalmente no son muy buenas para generar verdadera aleatoriedad.

Por lo general, cuando es necesario, un sitio web o un programa le pedirá que mueva el ratón para proporcionar la llamada "fuente de ruido" desde la que trabajar.

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

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

El segundo obstáculo al que se enfrentan quienes utilizan la Fiscalía tiene que ver con la generación y distribución de claves. Los soviéticos fueron incapaces de mantenerse al día con las demandas de la guerra, y en la vida real las máquinas de bingo de las viejecitas de Gran Bretaña probablemente terminarían fumando con el número de veces que necesitarían ser agitadas.

Afortunadamente, el hardware RNG integrado en el frambuesa Pi puede generar grandes cantidades de datos en un corto periodo de tiempo. Por ejemplo, un pad con 10.000 juegos de números aleatorios de cinco dígitos puede ser generado en segundos activando el hardware RNG (ver paso 1 de nuestra guía en la página siguiente) y luego entrando:

 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 un OTP enviar primero un mensaje de Desafío-Respuesta. Técnicamente, usted 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 otra podría revelar que está hablando bajo coacción - por ejemplo, "Sparrow".

Esto significa sin embargo que el mismo texto está siendo encriptado cada vez, haciendo que los mensajes sean más fáciles de descifrar.

Un mejor sistema es elegir de una lista de palabras o frases preestablecidas. Una manera de hacer esto sería acordar un libro - los directorios y almanaques son tipos perfectos de libros para esto - y en su mensaje de "desafío" podría enviar una página y una línea arbitrarias.

Por ejemplo, usted podría estar de acuerdo en usar la edición de 1992 del Almanaque del jugador de críquet de Wisden. 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."

A continuación, puede añadir un reto propio al mensaje, por ejemplo, pidiendo la página 582, línea 4.

Si, por supuesto, Alice responde con algo más que las palabras correctas, Bob sabrá que no es ella o ella está bajo coacción, y lo mismo se aplica con su respuesta a ella.

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

El archivo de texto resultante se puede imprimir, por ejemplo, con 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, la marca o el modelo en cada hoja que imprime (en este caso, consulte este sitio web).

También tiene una capacidad de hasta 15 metros de papel, que será suficiente para generar mensajes largos. Usando esto en combinación con el excelente programa otp-gen, usted puede imprimir sus propias almohadillas automáticamente con sólo tocar un botón también (vea la casilla'OTP goes Thermal' en esta página).

Una vez que las resmas de papel son impresas y guardadas de manera segura, viene el tema de la distribución física de las almohadillas.

Esta es sin duda la razón principal por la que la Fiscalía no ha visto un uso muy extendido. Se rumorea que el teléfono rojo que corre entre Washington y Moscú, por ejemplo, está asegurado por un OTP, principalmente porque ambas superpotencias son lo suficientemente ricas y melodramáticas como para tener hombres con gafas oscuras para esposarse a sus maletines e intercambiar almohadillas a intervalos regulares.

Por supuesto, si usted tiene blocs de papel impresos, es posible enviarlos por correo a su destinatario, pero entonces su OTP no sería más seguro que una carta normal porque puede haber sido interceptada y copiada a lo largo del camino. Lo mismo se aplica para el uso de programas de encriptación regulares como GnuPG.

La única manera de estar seguro de que su pad no puede ser interceptado es entregarlo en persona. Una vez más, el humilde Pi de frambuesa sale a la luz aquí porque es extremadamente pequeño y fácil de llevar. Al conocer a la persona con la que quieres intercambiar mensajes, puedes darle una copia de tu tarjeta MicroSD de Frambuesa Pi o la propia tarjeta MicroSD de Frambuesa Pi.

Para garantizar una seguridad perfecta de sus mensajes, es necesario eliminar los pads que ya han sido utilizados.

Si usted ha impreso el suyo, un poco de arranque y un encendedor Zippo es probable que sea útil aquí. (Otros encendedores están disponibles.)

De lo contrario, ejecutar el comando de destrucción en la almohadilla que acaba de utilizar debería ser suficiente para evitar la recuperación. Tanto las tarjetas SD como las Pis de frambuesa también son baratas, así que si realmente sientes que tienes que destruirlas una vez que las almohadillas hayan cambiado de manos, puedes hacerlo también.

El bajo costo de un inhibidor de la proteasa de frambuesa es también una gran respuesta a otra crítica común, que es que un OTP es generalmente muy difícil de escalar más allá de dos personas que intercambian mensajes.

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

Sin embargo, incluso usando un Pi de frambuesa, es posible que las almohadillas sean interceptadas, y la comunicación puede ser engorrosa. Esta es la razón por la que es bueno emplear algunas de las mejores prácticas para su OTP.