Este es un enfoque estándar, denominado cryptosystem híbrido . La criptografía simétrica y la criptografía asimétrica tienen sus puntos fuertes y débiles. En particular:
- La criptografía asimétrica permite que cualquiera pueda cifrar mensajes que solo un participante podrá descifrar, y permite que cualquier persona verifique los mensajes que solo un participante puede haber firmado.
- La criptografía simétrica es mucho más rápida que la criptografía asimétrica. Realmente, mucho.
La seguridad no es realmente una preocupación en la elección entre la criptografía simétrica y la asimétrica. La criptografía asimétrica resuelve problemas que la criptografía simétrica no puede resolver; para todo lo demás, se utiliza la criptografía simétrica, porque es mucho más rápida.
(Como consecuencia de ser más rápido, la criptografía simétrica tiende a tener un margen de seguridad más alto: los tamaños de clave comunes (AES de 128 bits) son lo suficientemente grandes como para impedir un avance matemático completamente nuevo, todas las computadoras que existen actualmente en la Tierra funcionan ya que el universo ha existido solo tendría una pequeña posibilidad de romper el cifrado. La criptografía asimétrica se ejecuta en márgenes más pequeños debido a su bajo rendimiento y hay mejoras matemáticas ocasionales en los métodos de craqueo que hacen que los tamaños de las claves de uso común estén bien durante algunos años. pero no necesariamente por algunas décadas. Pero esta es una preocupación secundaria en comparación con las capacidades / rendimiento alternativo.)
Los criptosistemas híbridos resuelven el dilema utilizando la criptografía asimétrica solo cuando sea necesario:
- Para verificar la firma de un mensaje, el mensaje es hashed , y la criptografía asimétrica se usa solo en el hash, no directamente en el mensaje de longitud variable.
- Para cifrar algunos datos, se genera una clave de sesión simétrica. La criptografía asimétrica se utiliza para compartir esta clave simétrica entre los participantes (el cliente y el servidor). Los datos "reales" están cifrados y autenticado utilizando esta clave simétrica.
En HTTPS, como se usa comúnmente en la web, el servidor tiene una clave pública, pero el cliente no lo hace. Cualquier navegador puede contactar al servidor, al servidor no le importa quién es el cliente. ( Los certificados del lado del cliente son utilizado donde tiene sentido .) Una vista incompleta y de muy alto nivel del establecimiento de una sesión HTTPS es:
- El servidor envía su certificado al cliente. El certificado contiene la clave pública del servidor y una firma de esa clave pública por una autoridad de certificación . El cliente verifica que la autoridad de certificación sea conocida (los navegadores se envían con una lista de las claves públicas de las autoridades de certificación).
- El cliente y el servidor organizan la elección de una clave simétrica, de tal manera que un atacante no podrá reconstruir la clave simplemente inspeccionando el tráfico o incluso modificándolo (o al menos se detectará un atacante activo y el cliente o el servidor abortarán la sesión). Un intercambio de claves Diffie-Hellman más una firma por parte del servidor (para que el cliente verifique que el intercambio se realizó con el servidor, y no con un atacante de hombre en el medio) es una posibilidad para generar la clave simétrica. También es posible confiar únicamente en la clave privada del servidor (a costa de no garantizar secreto de envío ).
- Todas las comunicaciones posteriores usan esa clave simétrica.
Note que hice muchas simplificaciones arriba. Para más detalles, lea: