Criptografía de clave pública
Dos claves distintas, una que se publica y otra que se guarda, resuelven un problema que parecía imposible: acordar un secreto con alguien con quien nunca se habló, en un canal que todos escuchan.
Para este tema conviene tener claro:Congruencias y aritmética modular
Para cifrar con una clave compartida primero hay que compartirla, y si el canal es público, quien escucha se la lleva también. Ese círculo vicioso bloqueó la criptografía durante siglos. La solución llegó en los setenta y es la que sostiene cada conexión segura de hoy.
Dos claves que se corresponden
La idea es usar dos claves relacionadas matemáticamente: una pública, que se reparte sin cuidado, y una privada, que nunca sale de su dueño. Lo que se cifra con una sólo se descifra con la otra.
El fundamento son funciones fáciles de calcular y difíciles de revertir. Multiplicar dos primos grandes es inmediato; factorizar el producto, inviable. Calcular una potencia modular es barato; recuperar el exponente, el problema del logaritmo discreto, no se sabe hacer rápido.
Antes de seguir, predecí
Confidencialidad y firma no son lo mismo
De ahí salen dos usos distintos que conviene no mezclar. Cifrar con la clave pública del destinatario da confidencialidad: sólo él, con su privada, puede leerlo.
Cifrar con la propia privada da autenticidad: cualquiera puede verificarlo con la pública, y eso prueba que salió de quien dice. Eso es la firma digital, y en la práctica se firma el hash del mensaje, no el mensaje entero, por costo y por límites de tamaño.
Hay dos claves y dos momentos, así que hay cuatro combinaciones posibles.
Por qué en la práctica es híbrido
La criptografía asimétrica es lenta, cientos de veces más que la simétrica. Por eso nadie cifra un video con RSA.
Lo que se hace es híbrido: se usa la asimétrica sólo para acordar una clave simétrica de sesión, y con esa se cifra todo el tráfico. Ese acuerdo es lo que hace el intercambio Diffie-Hellman, que permite a dos partes derivar un secreto común intercambiando mensajes públicos, sin que quien escuche pueda calcularlo.
Cómo sé que esa clave es de quien dice
Queda un agujero: ¿cómo sé que esa clave pública es realmente del sitio al que quiero entrar? Sin respuesta, alguien en el medio entrega la suya y lee todo.
Lo resuelve la infraestructura de clave pública. Una autoridad certificante firma un certificado que asocia un dominio con una clave pública, y el navegador trae las claves de esas autoridades. La confianza no desaparece: se traslada a un conjunto acotado de terceros, con todo lo que eso implica si alguno se compromete o emite mal.
Todo junto, al abrir una página segura
Todo eso junto es lo que pasa al abrir una página segura. El servidor presenta su certificado, el navegador verifica la cadena de firmas y la vigencia, las partes acuerdan una clave de sesión por Diffie-Hellman y a partir de ahí todo viaja con cifrado simétrico y verificación de integridad.
Un detalle valioso de las versiones modernas: usan claves efímeras para cada sesión, así que comprometer la clave privada del servidor mañana no permite descifrar el tráfico grabado ayer. Eso es el secreto hacia adelante.
Dos conclusiones prácticas
Dos conclusiones prácticas. La primera: nunca implementar esto a mano. Los algoritmos son públicos y las implementaciones son la parte difícil, con canales laterales por tiempo, aleatoriedad pobre y manejo de errores que filtra información. Se usan bibliotecas auditadas.
La segunda: lo que suele fallar no es la matemática sino todo lo de alrededor —certificados vencidos, validación desactivada “por ahora”, claves privadas en el repositorio—. Y en el horizonte está la criptografía poscuántica, porque un algoritmo cuántico rompería RSA y las curvas elípticas, aunque no la simétrica.
Lo que se usa en la práctica
Simétrica y asimétrica, una al lado de la otra
| Simétrica | Asimétrica | |
|---|---|---|
| Claves | una sola, compartida | un par: pública y privada |
| Velocidad | rapidísima | órdenes de magnitud más lenta |
| El problema que resuelve | cifrar mucho volumen | ponerse de acuerdo sin haberse visto antes |
| El problema que no resuelve | cómo compartir la clave | el volumen |
| Dónde se usa en TLS | toda la conversación | sólo el saludo inicial |
Cierre
Dos claves, funciones fáciles de calcular e inviables de revertir: cifrar con la pública da confidencialidad, firmar con la privada da autenticidad. La asimétrica acuerda una clave de sesión y la simétrica hace el trabajo, y los certificados trasladan la confianza a autoridades conocidas.
Autoevaluación
¿Lo entendiste?
Práctica