Las palabras encriptación y desencriptación son bastante familiares para nosotros. Es posible que ya hayas encontrado estos términos técnicos en esta serie de videos, así como en tu vida diaria. ¿Qué es la encriptación y por qué es necesaria? Al final de este artículo, también entenderás la magia que los números primos desempeñan en la tecnología de encriptación y desencriptación.
Cómo viajan nuestros mensajes a través de Internet
Imaginemos que hay un proveedor de servicios de Internet local comunicándose con un proveedor de servicios regional, seguido de un proveedor de servicios de red y, finalmente, el destino final. Sabemos que los datos viajan en paquetes y pueden tomar cualquier ruta a través de los diferentes enrutadores para llegar al destino. En general, asumimos que los proveedores de servicios de Internet o los proveedores de servicios de red no escuchan nuestras comunicaciones.
Cuando nos conectamos a una red Wi-Fi pública en un restaurante o centro comercial, debemos tener cuidado de que quien haya instalado el punto de acceso Wi-Fi no pueda ver lo que estamos navegando. Muchos de ustedes habrán notado los prefijos HTTP y HTTPS que se muestran en las direcciones URL. Estos son protocolos de Internet para la comunicación y «S» significa que la comunicación es segura. Para una comunicación segura, el proveedor del punto de acceso no podrá saber nada más que el hecho de que hemos accedido a ese sitio, no podrán ver nuestros datos de acceso, qué página estamos viendo ni nada más, todo esto está encriptado.
En una comunicación celular, los datos hacia tu torre de celular generalmente están encriptados. Veamos en detalle cómo se realiza esta importante operación de encriptación.
Encriptación y Desencriptación
La encriptación es el proceso de transformar un texto plano en un texto cifrado. En este ejemplo, el mensaje de texto se encripta sumando un dígito. Este dígito es la clave de encriptación. Solo el destinatario que conoce la clave puede desencriptar el mensaje, por lo que un intruso no puede hacerlo. Puedes considerar este caso similar a un documento confidencial que se guarda en una maleta con candado antes de enviarlo a su destino.
Un ladrón o el transportista no pueden acceder al documento, solo el destinatario con la clave de la maleta podrá abrirlo. Un centro de distribución de claves muy confiable se encarga de transferir la clave del remitente al destinatario. Si el destinatario usa la misma clave para abrir la maleta, se llama encriptación simétrica. Si la clave de apertura es diferente a la clave de cierre, el método de encriptación se llama asimétrico.
Sin embargo, ¿qué pasa si la clave misma es robada? Para superar este problema, vamos a diseñar un sistema de bloqueo inteligente. En este sistema, cada usuario tiene dos claves. El usuario envía una de sus claves al centro de distribución de claves; esta clave está disponible públicamente y se le llama clave pública. Sin embargo, nadie comparte la otra clave, que es privada para cada usuario. La parte más interesante de este nuevo sistema es el bloqueo.
El bloqueo se puede cerrar con cualquier clave pública, pero la misma clave no puede abrirlo. Para abrirlo, debes usar la clave privada correspondiente. Ninguna otra clave privada ni clave pública podrá abrir este bloqueo. Con este sistema, la transferencia de datos es altamente segura.
Veamos cómo funciona. Si Nina quiere enviar una caja a Alex, ella solicita la clave pública de Alex al centro de distribución de claves. El centro de distribución comparte la clave pública de Alex con Nina, y ella bloquea la caja. Después del transporte, solo Alex podrá abrir el bloqueo porque solo él tiene la clave privada. Este sistema es altamente seguro porque Alex no ha compartido su clave privada con nadie.
En el mundo digital, podemos construir el mismo sistema. Este mensaje de saludo está encriptado con la clave pública de Alex y se envía. Solo la clave privada de Alex podrá desencriptarlo, de esta manera solo él será capaz de hacerlo.
Ahora examinemos una propiedad peculiar del nuevo bloqueo. Ya hemos visto que un bloqueo cerrado con una clave pública solo se puede abrir con la clave privada correspondiente. Pero, ¿pueden estas dos claves tener una forma aleatoria? Incluso si existe un bloqueo con una forma aleatoria, no puede tener una forma aleatoria. Las formas de las claves deben estar conectadas de alguna manera. Un ejemplo de esta conexión se muestra aquí.
De manera similar, en el mundo digital, las claves que vimos anteriormente deben estar conectadas, de lo contrario, el algoritmo no funcionará. Una conexión eficiente entre estas claves es que se derivan del producto de dos números primos. En el ejemplo anterior, vimos que la clave pública de Alex era, de hecho, la multiplicación de dos números primos. La clave privada de Alex era uno de los factores de esta clave pública.
El algoritmo que hemos visto es solo un ejemplo representativo. En los algoritmos reales, los números primos no se utilizan directamente para producir claves públicas y privadas. Un algoritmo popular utilizado en el método de clave pública/privada se llama RSA. Veamos cómo RSA utiliza dos números primos para generar claves privadas y públicas utilizando una animación. Además, se muestra una animación de la encriptación y desencriptación de la letra H utilizando estas claves. Ten en cuenta que una explicación detallada de este algoritmo está más allá del alcance de este video.
¿Por qué usamos números primos?
Quizás te preguntes, ¿por qué solo usamos números primos y no otros números? El proceso de encontrar los factores de un número se conoce como factorización. Los hackers siempre usan algún método de fuerza bruta para factorizar los números involucrados para encontrar la clave privada. El algoritmo de factorización funciona rápidamente cuando los factores no son números primos, pero es lento cuando los factores son números primos, especialmente cuando los números primos son grandes. De esta manera, el hacker batallará para obtener tu clave privada del algoritmo RSA utilizando la fuerza bruta.
No debemos tener la impresión de que el método de encriptación asimétrica, como la criptografía de clave pública/privada, ha reemplazado los métodos de encriptación simétrica. Un problema importante con el método de encriptación asimétrica es que es computacionalmente intensivo. Ya hemos visto en RSA que el algoritmo evitará un ataque de fuerza bruta solo si los números primos son enormes.
Esto significa que si usamos RSA directamente, se producirá una demora significativa en el intercambio de datos. Un remedio inteligente para este problema son los sistemas de encriptación simétrica, como el estándar de encriptación avanzada AES, que se utiliza ampliamente hoy en día.
En estos sistemas utilizamos una clave conocida como clave de sesión, que se intercambia en el primer mensaje. Esta clave es simétrica. Con esta clave simétrica, las dos partes pueden continuar intercambiando datos sin necesidad de más transferencias de claves. La clave de sesión se actualiza frecuentemente según el protocolo de comunicación utilizado.
Por ejemplo, en WhatsApp, para cada mensaje hay una nueva clave de sesión. En HTTP, puede ser por un período determinado o hasta que finalice la sesión. El tamaño de la clave pública/privada es de alrededor de 2048 bits y la encriptación/desencriptación lleva más tiempo en comparación con los sistemas simétricos, que emplean tamaños de clave de alrededor de 256 bits.
Los mensajes encriptados con una clave simétrica de 256 bits no son menos seguros que el sistema de clave asimétrica de 2048 bits y son menos intensivos computacionalmente. El enfoque de clave pública/privada también crea una forma de autenticar un mensaje. La autenticación significa que Alex debe asegurarse de que este mensaje es de Nina. Para esto, Nina encripta el mensaje con su propia clave privada.
Ahora Alex puede desencriptar este mensaje con la clave pública de Nina y asegurarse de que el mensaje es de ella, porque solo Nina tiene su clave privada. Aquí se dice que Nina ha firmado el mensaje y no encriptado, porque cualquier persona puede desencriptar el mensaje.
Esperamos que este artículo te haya brindado una gran visión sobre la encriptación y desencriptación.
¡Gracias!