Dos llaves mejor que una
Una llave que se puede publicar resuelve el problema de cómo compartir un secreto. Al terminar sabrás cifrar y firmar mensajes, y descubrir si alguien los alteró.
Primero, la idea completa
Mira el video entero o salta a la parte que quieras repasar. Después, cada idea tiene su propia escena para tocarla.
Qué es cifrar
Cifrar (encriptar) es aplicar a un texto una transformación reversible que lo vuelve ilegible para quien no conoce la transformación. Con un texto T y una clave K, la función de cifrado da un criptograma: E(T, K) = C; y la de descifrado devuelve el original: D(C, K) = T.
Es tan antiguo como la guerra y las sociedades secretas. Los espartanos usaban el escítalo: enrollaban una cinta de lino sobre un bastón y escribían a lo largo; desenrollada, la cinta era un revoltijo de letras, y solo con un bastón del mismo diámetro, que hacía de llave, se volvía a leer. Julio César corría cada letra un número fijo de lugares: con un corrimiento de 1, JUAN se vuelve KVBO.
Hoy esos métodos caen en segundos por fuerza bruta, probando todas las llaves posibles. Una técnica distinta es la esteganografía: no cifrar el mensaje, sino ocultar que existe, por ejemplo dentro de los píxeles de una imagen o del espectro de un sonido.
El cifrado de César. Escribe un mensaje, mueve el corrimiento y mira por qué no resiste un ataque de fuerza bruta.
Cifrado simétrico
En el cifrado simétrico (o privado), la misma llave sirve para cifrar y para descifrar. Fue el primer tipo moderno trabajado con máquinas, como la codificadora Enigma de la Segunda Guerra Mundial. Un ejemplo simple usa la operación XOR, que cumple (x xor y) xor y = x: se superpone la llave sobre el texto, repitiéndola, y se hace XOR byte por byte; para descifrar se repite la misma operación con la misma llave. Es eficiente, pero una llave corta se encuentra probando combinaciones.
Algoritmos simétricos actuales son DES (llave de 56 bits, que por fuerza bruta cae en menos de tres meses), Triple DES, AES y Blowfish.
XOR bit a bit. Cambia el texto o la llave: cifrar y descifrar son la misma operación.
Para comunicarse en internet, el cifrado simétrico tiene dos problemas:
- La paradoja del canal seguro: si cifras un mensaje es porque el canal no es seguro, como el correo electrónico. Pero para mandarle la llave al destinatario, que está lejos, necesitarías un canal seguro… y si lo tuvieras, no necesitarías cifrar.
- La multiplicidad de intercambios: cada pareja necesita su propia llave. Contando dos intercambios por pareja, 3 personas necesitan 6, 4 necesitan 12 y n personas,
n·(n−1): crece de forma cuadrática.
¿Cuántos intercambios de llaves hacen falta para que todos puedan hablar en privado con todos?
Cifrado asimétrico: RSA
RSA, creado en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman (de ahí su nombre), es el criptosistema de llave pública más popular, sobre la idea de llave pública de Diffie y Hellman. Ofrece cifrado y firma digital. Su base es la matemática de los números primos grandes: multiplicarlos es fácil, pero factorizar el resultado es muy difícil. Lo importante son sus propiedades:
- Cada usuario tiene dos llaves: una privada, que solo conoce el dueño y suele guardarse protegida con una llave simétrica, y una pública, que se publica por cualquier canal, aunque sea inseguro.
- Lo que se cifra con la privada solo se descifra con la pública, y lo que se cifra con la pública solo se descifra con la privada.
Eso resuelve los dos problemas: la llave pública puede viajar por un canal inseguro, y n personas solo necesitan n intercambios. También permite comunicación de extremo a extremo (E2E):
- Si X cifra con su llave privada, Y descifra con la pública de X y queda seguro de que X es el remitente.
- Si X cifra con la llave pública de Y, solo Y puede leerlo, con su privada.
- Combinando ambas: X calcula
C1 = E(T, Xprv)y luegoC2 = E(C1, Ypbl); Y haceC1 = D(C2, Yprv)yT = D(C1, Xpbl). Solo Y lo lee y Y sabe que viene de X.
Ana le escribe a Luis por un canal que Eva escucha. Elige con qué llave (o llaves) cifra Ana y mira qué logra cada uno.
Cifrado híbrido, firmas y certificados
RSA trabaja con exponentes y módulos de números enormes, así que es mucho más lento que un algoritmo simétrico. Por eso los protocolos combinan ambos: con RSA intercambian, al inicio, una llave simétrica temporal generada en ese momento, y con ella cifran el resto de la comunicación. Así se logra privacidad completa con la asimetría y buen rendimiento con la simetría. Es la base de PGP y de HTTPS (TLS).
- ampliación Firma electrónica: en la práctica no se cifra todo el documento con la llave privada, sino su huella (un hash). Quien recibe calcula la huella del documento y la compara con la firma descifrada con la llave pública; si alguien cambió una sola letra, no coinciden.
- ampliación Certificado digital: una llave pública junto con la identidad de su dueño, firmados por una autoridad certificadora en la que confían los navegadores. Así sabes que la llave pública de un sitio es de verdad de ese sitio.
Las llaves se suelen guardar en formato PEM. Una llave privada RSA contiene el módulo n, el exponente público e, el exponente privado d, los primos p y q y valores derivados; una llave pública, solo n y e.
Antes de leer la respuesta
Tu turno: escribe en secreto
Tres personas: ana, luis y eva, que escucha todo lo que pasa por el canal. Primero rompe un mensaje cifrado con César. Después, como ana, mándale a luis un mensaje que eva no pueda leer, otro que luis pueda comprobar que es tuyo, y descubre qué pasa cuando eva altera un mensaje firmado.
Comprueba lo que entendiste
Cada respuesta incorrecta explica por qué parece correcta y en qué falla.