Un certificado digital es un documento electrónico que vincula una clave pública a una identidad, como un nombre de dominio, una organización o una persona, y que firma una autoridad de certificación de confianza.
Cómo funcionan los certificados digitales
La mayoría sigue el estándar X.509, perfilado para internet en el RFC 5280. Un certificado contiene el nombre del titular (en los sitios web, los dominios del campo Subject Alternative Name), su clave pública, el emisor, un número de serie, el periodo de validez y la firma digital del emisor. Navegadores y sistemas operativos verifican una cadena de confianza: el certificado del servidor lo firma una CA intermedia, que a su vez está firmada por una CA raíz guardada en el almacén de confianza. Si la cadena, el nombre o las fechas no cuadran, la conexión se rechaza.
Entre los tipos habituales están los certificados de servidor para TLS y HTTPS, los de firma de código, los S/MIME para correo y los de cliente para autenticar dispositivos o usuarios. Pueden revocarse mediante CRL u OCSP, y los registros de Certificate Transparency (RFC 6962) publican cada certificado TLS emitido.
Por qué importan para la seguridad
Los certificados son la base de la confianza en la web, lo que los hace atractivos para los atacantes:
- CA comprometidas: en 2011 unos atacantes entraron en la CA neerlandesa DigiNotar y emitieron un certificado fraudulento para google.com, usado para espiar a usuarios en Irán; DigiNotar quebró.
- Certificados de firma de código robados: los controladores de Stuxnet se firmaron con certificados robados a dos fabricantes taiwaneses de hardware.
- Phishing: la emisión gratuita y automatizada hace que el candado solo pruebe el control del dominio, no la honradez del sitio.
Buenas prácticas
- Automatizar la emisión y renovación con ACME (Let’s Encrypt o autoridades de certificación comerciales), ya que la vigencia máxima no deja de reducirse.
- Mantener un inventario de certificados y vigilar los registros de Certificate Transparency de los dominios propios.
- Proteger las claves privadas y de firma de código en HSM y revocarlas en cuanto se vean comprometidas.