Sun. Dec 4th, 2022

Nuestro mundo tiene 7.55 mil millones de personas en él. Si bien la mayoría de los habitantes del planeta son buenos, un pequeño número de malos actores puede afectar negativamente las vidas digitales de todos los demás. Los piratas informáticos pueden agotar nuestras cuentas bancarias, interceptar nuestros correos electrónicos, detener a nuestros marcapasos, desestabilizar nuestras redes eléctricas o interferir con nuestras elecciones. Todo desde la comodidad de su hogar.

Durante años, los fabricantes de chips han dejado la seguridad / encriptación a sus clientes para que los descubran. Sus clientes son ingenieros eléctricos que están introduciendo dispositivos en el mercado y han dejado la seguridad en gran medida al usuario final. Desafortunadamente, los usuarios finales generalmente no están completamente equipados para implementar o auditar comunicaciones encriptadas, por lo que lo ignoran.

El efecto de todo esto es que nuestra Internet e intranets están pobladas con dispositivos de Internet de las Cosas (IoT) que tienen una implementación deficiente de la seguridad o ninguna implementación de seguridad, lo que hace que esos dispositivos sean los principales objetivos para los piratas informáticos. Para incorporar en sus botnets.

Como ingeniero, usted es responsable de la operación segura de los dispositivos que diseña. Debe cifrar las comunicaciones internodales independientemente del medio de transmisión físico.

Esta serie de artículos construirá algunos conceptos básicos de la criptografía. Más adelante, los proyectos demostrarán cómo asegurar las comunicaciones internodales.

Secreto compartido

La forma más segura de cifrar un mensaje entre dos partes es combinarlo con un secreto compartido que se genera a partir de un ruido aleatorio. El mensaje se puede combinar con el secreto compartido a través de la operación XOR. Un mal actor que ve el mensaje después del cifrado simplemente vería un perfil de ruido diferente, tan aleatorio como antes, el mensaje sería completamente confuso e irrecuperable.

El destinatario del mensaje puede leer el mensaje solo mediante la recombinación de los datos recibidos con el mismo secreto compartido a través del operador XOR.

El resultado es el mensaje original. Desafortunadamente, el secreto compartido no puede volver a usarse. Si se reutiliza, un mal actor puede buscar similitudes en el perfil de "ruido" y usar esas similitudes para deducir los mensajes originales.

Cada vez que se reutiliza el mismo número aleatorio para cifrar varios mensajes, existirán similitudes que podrían permitir determinar el secreto compartido. En la imagen de arriba, se utilizó el mismo número aleatorio para cifrar los mensajes "Todo sobre los circuitos" y "Setec Astronomy" (de la película "Zapatillas"). Aunque ambos mensajes están cifrados con números aleatorios, están cifrados con el mismo número aleatorio, lo que permite deducir los mensajes. Para obtener más información, busque "vector de inicialización" o "nonce" (número usado una vez).

El remitente y el receptor del mensaje necesitan un secreto compartido diferente para cada mensaje, y necesitan una forma de compartir los secretos para que un mal actor / intruso no pueda deducir fácilmente el mensaje que están compartiendo.

Diffie-Hellman

Whitfield Diffie y Martin Hellman idearon una forma para que el remitente y el destinatario de los mensajes privados generen su secreto compartido mediante la transmisión de números a simple vista mediante aritmética modular y exponenciación.

Aritmética modular

$$ p ; mod ; m = n text {o} mod (p, m) = n $$

El operador de módulo determina el resto que queda después de la división. Imagina cortar cuerdas de 5 pies de longitud desde una longitud de 103 pies hasta que te quedes sin cuerda. El operador del módulo determina cuánto tiempo dura la última pieza de cuerda; en el caso del ejemplo anterior, mod. De 103 pies 5 pies = 3 pies. Cada pieza de cuerda cortada es idéntica a la última, y ​​si le entregaran la cuerda sobrante, sería difícil o imposible determinar la cantidad de piezas de cuerda que la precedieron.

Exposiciónción

Exposiciónción es el proceso de multiplicar un número por sí mismo un número dado de veces. Los productos de la exponenciación se hacen grandes rápidamente (264= 18,446,744,073,709,551,616) que puede consumir la memoria disponible rápidamente. Afortunadamente, el proceso se puede dividir en pequeños problemas que se ajustan mejor a la memoria de un microprocesador. El operador de módulo se encarga de los excesos.

$$ 2 ^ {64} = 2 ^ {16} • 2 ^ {16} • 2 ^ {16} • 2 ^ {16} $$

Combinando ideas

Diffie & Hellman se dieron cuenta de que era posible combinar las ideas de aritmética modular y exponenciación para crear un secreto compartido en dos sistemas diferentes. Tanto el remitente como el receptor participan en la generación del secreto y comparten datos públicos libremente. Al final del proceso de generación de claves, los buenos saben cuál es la clave secreta, y el malo no es el más sabio.

Así es como los buenos Alice y Bob pueden revelar un secreto sin que el malo, Eve, el intruso, lo descubra:

Primero, Alice escoge dos números primos y se los transmite a Bob; cualquiera que escuche puede ver los números.

A continuación, Alice y Bob eligen cada uno un número aleatorio secreto (a, b). Usando exponenciación y aritmética modular, Alice y Bob calculan dos nuevos números (A, B).

En este punto, Alice y Bob calculan la mitad del mensaje secreto y se transmiten los resultados. Eve también puede ver los resultados, pero son inútiles para ella. Para terminar de generar el secreto, cada persona toma el resultado anterior de la otra y repite la exponenciación y la aritmética modular para llegar a la misma clave secreta.

Resulta que las leyes de las matemáticas permiten que las operaciones de exponenciación y módulo se realicen fuera de orden y en diferentes máquinas y lleguen al mismo resultado. Cada participante en la generación de claves genera una parte de la clave y utiliza el resultado de su compañero para calcular el resto. El orden de cálculo no importa, ambos usuarios llegan al mismo resultado.

$$ ((g ^ {a} ; mod ; p) ^ {b} ; mod ; p) = g ^ {ab} ; mod ; p $$

$$ ((g ^ {b} ; mod ; p) ^ {a} ; mod ; p) = g ^ {ab} ; mod ; p $$

Podrías estar pensando que Eve puede descubrir las cantidades desconocidas a partir de la información proporcionada. Eso es verdad. Pero los números utilizados en el ejemplo fueron relativamente pequeños: las implementaciones reales utilizan números mucho más grandes. Los números grandes hacen que sea extremadamente difícil determinar o adivinar los números secretos (a, b) elegidos por uno o ambos participantes cuando lo único que el malo puede hacer es mirar los resultados de los cálculos intermedios (A, B). Se puede hacer pero es computacionalmente costoso.

Más ejemplos de este proceso se muestran a continuación.

El resultado final es el secreto compartido que se puede usar para cifrar y descifrar los datos enviados entre dos computadoras o dispositivos. El secreto compartido se combina con los datos a través de la operación XOR para ofuscar los datos antes de la transmisión. Después de recibir los datos cifrados, la operación XOR se usa de nuevo para descifrar los datos.

Resumen

El intercambio Diffie-Hellman puede usarse para crear secretos entre dos partes sin revelar el secreto a otra persona. Las computadoras pueden romper el cifrado si los secretos son demasiado cortos, por lo que se deben usar claves muy largas para que la tarea lleve mucho tiempo. El siguiente artículo presentará las curvas elípticas utilizadas en la criptografía.

By Maria Montero

Me apasiona la fotografía y la tecnología que nos permite hacer todo lo que siempre soñamos. Soñadora y luchadora. Actualmente residiendo en Madrid.