PKI: ¿Qué es la infraestructura de clave pública?
En esta oportunidad vamos a introducir los conceptos fundamentales de la infraestructura de clave pública, o PKI, cómo se relaciona con los certificados y firmas digitales, y su importancia dentro de la seguridad informática.
Este artículo forma parte de la Serie sobre Criptografía Aplicada publicada en este blog. Pueden visitar el índice de la serie para acceder a todo el contenido.
En un artículo anterior hablamos sobre certificados digitales, sus formatos y algunos detalles adicionales. Hoy aprenderemos sobre PKI (Public Key Infrastructure), cómo funciona y cómo se utiliza para garantizar la seguridad.
La PKI hace referencia a herramientas utilizadas para crear y gestionar la seguridad basada en cifrado asimétrico o de clave pública.
Este tipo de cifrado se utiliza para asegurar las comunicaciones en Internet, y lo usamos todo el tiempo en nuestros navegadores, en los servidores web, en la infraestructura de correo electrónico, etc, por lo que entender su funcionamiento es parte fundamental para garantizar la seguridad en nuestras infraestructuras.
Ya sabemos cómo funciona el cifrado y descifrado utilizando criptografía asimétrica en OpenSSL, pero surge la pregunta: ¿cómo se usa esto en el mundo real?
Básicamente, las entidades que necesitan garantizar autenticidad, como los servidores web por ejemplo, tienen su par de claves, pública y privada, y encapsulan su clave pública dentro de un certificado digital x509.
Este certificado añade metadatos como la validez del mismo, firmas digitales, autoridad certificante, etc.
Y aquí surge un término importante en la PKI: la CA o Autoridad Certificante (Certificate Authority), y una nueva variable en las ecuaciones criptográficas: la confianza.
¿Cómo funciona la PKI?
Ya sabemos cómo lograr seguridad utilizando claves públicas y privadas. Ahora supongamos que la clave pública va encapsulada en un certificado digital x.509, del cual puede extraerse, por supuesto.
Supongamos el caso de la autenticidad e integridad analizado en el artículo conceptual de criptografía asimétrica. Supongamos también que Bob quiere verificar la autenticidad de un mensaje enviado por Alice.
Como sabemos, Alice genera su par de claves, envía a Bob su certificado x.509 que incluye su clave pública, y Bob utiliza dicha clave para verificar la firma digital del mensaje enviado por Alice.
Ahora, imaginemos que Eva, un atacante, intercepta el mensaje, la firma generada por Alice, y su certificado digital. Nada le impide a Eva crear su propio par de claves, firmar nuevamente el mensaje enviado por Alice, y hacerle llegar a Bob el mensaje original, la nueva firma, y el certificado x.509 de Eva haciéndose pasar por Alice.
Esto se conoce como Ataque de hombre en el medio, o MITM (Man in the middle), y técnicamente puede realizarse.
Aquí es donde la PKI aporta su granito de arena para lograr la comunicación segura, y dificulta a Eva realizar este tipo de ataque.
Firmando certificados
El problema con el caso anterior es que, si bien Bob puede verificar la firma recibida utilizando la clave incluida en el certificado digital recibido, no es capaz de verificar la autenticidad de dicho certificado.
La primer solución que viene a la cabeza es: ¿por qué Alice no firma también su certificado digital antes de enviarlo a Bob, utilizando otro par de claves distinto?
Y al respuesta es la misma, Eva podría realizar lo mismo y seguir suplantando la identidad de Alice.
Y así podríamos estar generando certificados infinitamente.
La solución: Las CA’s
Aquí es donde entra en juego la Autoridad Certificante, o CA. La CA es una tercera entidad dentro de la PKI, que también dispone de su clave privada y su clave pública encapsulada en un certificado digital x.509.
Una CA es una entidad en la que ambos, Alice y Bob, confían. Tanto Alice como Bob tienen el certificado de la CA, firmado por la propia CA para verificar su autenticidad.
La CA es la entidad encargada de emitir y revocar certificados digitales.
Así, Alice le pide a la CA que firme su certificado x.509 utilizando la clave privada de la CA. Cuando Alice envía a Bob su certificado digital firmado por la CA, Bob, que tiene la clave pública de la CA, puede verificar la firma, y constata, en la medida en la que confía en la CA, que el certificado pertenece efectivamente a Alice.
Como el certificado de Alice fue provisto y firmado por una CA, Bob puede obtener dicho certificado directamente desde la CA, o desde cualquier otra fuente que tenga el certificado de Alice, que podrá igualmente verificar su autenticidad.
Veamos la siguiente ilustración que ejemplifica el caso de la Autenticidad y la Integridad mediante firma digital (Se omite la verificación propia de la firma de la CA con la clave pública de la misma, pero el procedimiento es el mismo).
Privacidad o confidencialidad
Esta solución también aplica para lograr privacidad o confidencialidad.
Supongamos que Alice quiere enviar a Bob un mensaje encriptado usando la clave pública de Bob. De forma similar, Bob puede solicitar a una CA que firme su certificado digital, de modo que Alice pueda verificar que dicho certificado es efectivamente de Bob, y no existe un intermediario como Eva intentando suplantar su identidad.
Cuando Alice cifra el mensaje utilizando la clave pública de Bob, incluida en su certificado digital firmado, Alice está segura que el mensaje cifrado únicamente podrá ser leído por Bob, que dispone de la clave privada par de la pública usada para cifrar.
Veamos el siguiente esquema de privacidad. Al igual que en el caso anterior, se omite la verificación, por parte de Alice, de la firma del certificado de Bob, pero el procedimiento es el mismo.
Otras entidades involucradas
Existen otras entidades involucradas en la PKI, pero no se las suele nombrar demasiado porque muchas veces su funcionalidad está incorporada en la propia CA, o en las implementaciones de software de los emisores y receptores dentro de una comunicación segura.
Entre ellas se encuentra la Autoridad de Registro, o RA (Registration Authority), que verifica que las claves públicas incluidas en los certificados a firmar por la CA pertenezcan efectivamente a la entidad que solicita la firma. Por ejemplo, si Alice quiere firmar su certificado con una CA confiable, la RA debe verificar que la clave pública incluida en el certificado de Alice pertenezca efectivamente a Alice.
Por otro lado, existe la Autoridad de Validación, o VA (Validation Authority), encargada de comprobar la validez de los certificados digitales, tanto la validez de su firma digital, como las fechas de expiración.
Finalmente, la Autoridad de Sellado de tiempo, o TSA (Time Stamp Authority), encargada de firmar documentos con el fin de constatar que dichos documentos existían en un determinado instante de tiempo.
Seguridad en la PKI
Al igual que en criptografía asimétrica, la seguridad en la infraestructura PKI depende principalmente de la protección que demos a las claves privadas.
Por otro lado, cabe mencionar los aspectos de seguridad de una de las herramientas que utilizan PKI y que usamos todo el tiempo: nuestros navegadores web.
Cuando ingresamos a un sitio seguro, vemos en la URL que el protocolo es HTTPS (HTTP over SSL/TLS). Eso significa que el navegador pudo establecer un canal seguro contra el servidor del sitio.
Para lograr esto, el servidor del sitio le envió al navegador su certificado digital firmado por una CA reconocida en la que el navegador confía. Esto significa que el navegador tiene una lista de CAs en las que confía almacenadas en sus configuraciones, y asociadas a sus certificados digitales.
Cuando un sitio le envía al navegador un certificado digital firmado por una CA, el navegador utiliza la clave pública de esa CA para verificar la firma. Si el navegador posee dicha clave pública (certificado digital de la CA), podrá verificar la veracidad del sitio web.
En caso contrario, el navegador nos advertirá que el certificado no pudo verificarse, y que el sitio no es confiable. Seguramente también nos permita añadir el certificado a los sitios confiables, cosa que no debemos realizar nunca, salvo que sepamos lo que hacemos.
Conclusiones
Hemos llegado al final. La idea original era armar un post teórico-práctico utilizando OpenSSL, pero lo cierto es que se hizo muy largo.
La próxima entrada en esta serie sobre Criptografía Aplicada incluirá la generación y uso de certificados digitales y CA’s mediante OpenSSL, y cómo se puede realizar este procedimiento en el mundo real usando CA’s confiables.
Será hasta la próxima!