Sistemas de cifrado híbridos
OpenPGP define un sistema de encriptación híbrido , que combina lo mejor de la encriptación asimétrica (clave pública) y la encriptación simétrica. Si bien el cifrado asimétrico es excelente en la administración de claves, es muy lento para cifrar grandes cantidades de datos; el cifrado simétrico, por otro lado, requeriría el intercambio de claves con todas las personas con las que desea comunicarse de manera individual, pero tiene un gran rendimiento.
Los sistemas de encriptación híbrida usan encriptación asimétrica para encriptar una clave aleatoria para encriptación simétrica, mientras que el mensaje real está encriptado simétricamente. En OpenPGP, esta clave se denomina clave de sesión .
Receptores múltiples
Esto tiene otra ventaja: si se deben abordar múltiples destinatarios, no es necesario cifrar el mensaje varias veces. En su lugar, todo lo que debe hacerse es cifrar la clave de sesión para todos. Puede observar esto mirando los paquetes contenidos en un archivo después de cifrar a varias personas (aquí, pgpdump
ofrece la mejor salida en comparación con gpg --list-packets
):
echo 'foo' | gpg --recipient a4ff2279 --recipient d745722b --encrypt | LANG=C pgpdump
Old: Public-Key Encrypted Session Key Packet(tag 1)(524 bytes)
New version(3)
Key ID - 0xCC73B287A4388025
Pub alg - RSA Encrypt or Sign(pub 1)
RSA m^e mod n(4093 bits) - ...
-> m = sym alg(1 byte) + checksum(2 bytes) + PKCS-1 block type 02
Old: Public-Key Encrypted Session Key Packet(tag 1)(268 bytes)
New version(3)
Key ID - 0xDAA855623A5E68F7
Pub alg - RSA Encrypt or Sign(pub 1)
RSA m^e mod n(2046 bits) - ...
-> m = sym alg(1 byte) + checksum(2 bytes) + PKCS-1 block type 02
New: Symmetrically Encrypted and MDC Packet(tag 18)(63 bytes)
Ver 1
Encrypted data [sym alg is specified in pub-key encrypted session key]
(plain text + MDC SHA1(20 bytes))
El Paquete de claves de sesión encriptadas de clave pública está contenido en twize, una vez para cada clave (sub) de encriptación. El tamaño diferente puede explicarse por los diferentes tamaños de clave (RSA 2048k vs RSA 4096k para las subclaves). Los datos están ocultos en el Cifrado simétrico y el paquete MDC .