Infraestructura de llave pública (PKI)

Author
By Darío Rivera
Posted on 2019-08-30 in OpenSSL
Tags   OpenSSL 1.1

En post anteriores hemos visto la criptografía de llave pública como sistema criptográfico de dos llaves para asegurar la confidencialidad y autenticidad de mensajes. El día de hoy iremos un poco más allá, y daremos solución a un problema que tal vez hayas descubierto a lo largo de nuestra serie de posts sobre criptografía. Si aún no conoces de que va todo esto, en los siguientes enlaces podrás encontrar toda la información necesaria para estar al corriente de lo que veremos en el post del día de hoy.

- Criptografía asimétrica en OpenSSL - Llave pública
- Criptografía asimétrica en OpenSSL - Llave privada
- Criptografía asimétrica en OpenSSL - Llave encriptada

El Ataque del hombre en el medio

Uno de los problemas más importantes de la criptografía de llave pública es la distribución de las llaves.  Esto es así, ya que se parte del hecho de que los participantes (receptor, emisor) confían uno al otro sus llaves públicas y que lo hacen mediante un canal seguro. Supongamos que Emily ha enviado su llave pública a Steave vía correo electrónico. Qué pasaría si alguién (el interceptor) logra interceptar dicho mensaje y reemplaza la llave pública de Steave con su propia llave pública ?. En el sentido práctico, sería mucho más sencillo hacerse con las credenciales para entrar al correo de Emily y que el interceptor enviara el mensaje a Steave con su llave pública. La idea es que imagines un escenario similar de suplantación de identidad. Cuando Emily envíe un mensaje a Steave en realidad utilizará la llave pública del interceptor, que a su vez descifrará el mensaje y lo reencriptará con la llave pública de Steave para enviárselo a él finalmente. Cuando Steave envíe un mensaje encriptado e Emily sucederá lo mismo, el interceptor descrifrará el mensaje y lo reencriptará para enviárselo finalmente a Emily. Este tipo de ataque es el denominado "Man in the middle attack". Nota que Emily en realidad se está comunicando con Steave pero sin confidencialidad. Una de las soluciones a este problema es PKI.

PKI (Public key infrastructure)

La solución al problema de saber si una llave pública pertenece o no a una persona es la PKI (Public Key infrastructure). La idea de esta solución es contar con una entidad de confianza (CA) que haga el trabajo de certificar que una llave pública pertenece a una persona dada. Más ampliamente, una PKI es un conjunto de roles, políticas, software y procedimientos necesarios para manejar, crear, manejar, distribuir, guardar y revocar certificados digitales y manejar el cifrado de llave pública.

Una persona estará identificada con algunos datos útiles como nombre y dirección. La entidad de confianza emitirá un certificado que contiene entre otras cosas:

- Información necesaria de la persona (nombre, dirección, fecha de nacimiento, ...)
- La llave pública de la persona
- La fecha de creación del certificado
- La fecha de revocación del certificado
- La firma digital de toda esta información emitida por la PKI

Con este esquema de infraestructura la próxima vez que Emily quiera enviar un mensaje a Steave preguntará por su certificado (el cual incluye su llave pública) del cual puede validar su firma digital emitida por la PKI y su fecha de revocación. Si esta validación pasa entonces Emily puede enviar de manera segura y confidencial un mensaje a Steave y viceversa.

Para aprender a crear una PKI puedes seguir el siguiente tutorial:

Creación de una PKI en Ubuntu


Si te ha gustado este artículo puedes invitarme a tomar una taza de café


Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.