HPKP es un encabezado de respuesta de seguridad web obsoleto, el acrónimo significa HTTP Public Key Pins. Su objetivo era evitar que una autoridad de certificación comprometida o no autorizada emitiera un certificado HTTPS de confianza pública, pero controlado por piratas informáticos, para un sitio web. En este caso, los piratas informáticos podrían descifrar cualquier tráfico HTTPS que interceptaran en el sitio. Web afectada.
Consejo: los encabezados de respuesta web son fragmentos de metadatos que el servidor incluye cuando responde a las solicitudes. Un pequeño subconjunto de estos se conoce como encabezados de seguridad, ya que habilitan y configuran varias funciones de seguridad.
Tabla de contenidos
Infraestructura de certificados HTTPS
La infraestructura de certificados sobre la que se construye HTTPS se basa en una red de confianza. Varias empresas actúan como autoridades de certificación (CA) que publican uno o más certificados raíz. Se incluye un conjunto de certificados raíz en todos los dispositivos de un almacén de confianza. Cuando un sitio web solicita su propio certificado HTTPS de una CA, el certificado está firmado por un certificado raíz. Cuando su computadora ve un certificado HTTPS, verifica la firma. Si el certificado está firmado por un certificado raíz en el que confía, la computadora también confía en el certificado HTTPS.
Consejo: una CA también puede tener certificados intermedios firmados por el certificado raíz. Estos certificados intermedios también se pueden utilizar para firmar certificados HTTPS para sitios web.
El trabajo de una autoridad de certificación es emitir un certificado solo después de verificar que la persona que lo solicita es el verdadero propietario del sitio web. La idea con esta estructura es que si un pirata informático crea su propio certificado para un sitio web, no estará firmado por una CA en la que su computadora confíe, por lo que verá una advertencia.
¿Qué hizo HPKP?
Todo el sistema de certificación se basa en la confiabilidad de las autoridades de certificación. Sin embargo, originalmente no había protección contra una CA comprometida por piratas informáticos o que se volviera deshonesta y eligiera emitir certificados incorrectamente.
HPKP fue diseñado para ser una protección contra esta posibilidad. Permite a los sitios web especificar una lista única de certificados en los que el sitio web puede confiar en un proceso llamado bloqueo. Era posible bloquear el certificado raíz o intermedio, lo que básicamente permitía que una única CA emitiera certificados para el sitio web. También era posible fijar el certificado del sitio en sí, lo que también impedía que la CA correcta emitiera otro certificado válido.
Técnicamente, no es el certificado en sí lo que está bloqueado, sino un hash de la clave del certificado. Un hash es una función criptográfica unidireccional. Esto significa que es posible verificar que el certificado presentado al navegador por el sitio web coincide con un certificado bloqueado, pero el hash no se puede utilizar para crear un certificado válido.
HPKP requirió el bloqueo de al menos dos claves, al menos una de las cuales debe ser una copia de seguridad y no en la cadena de certificados actual. Esta copia de seguridad le permite configurar un cambio sin problemas a un nuevo certificado que no impide que los usuarios se conecten.
Si el certificado HTTPS presentado al navegador por el sitio web no coincide con uno de los certificados agregados, el navegador debe rechazarlo y evitar que el usuario ignore el mensaje de error del certificado.
Estructura HPKP
El encabezado HPKP tiene tres partes obligatorias y dos opcionales. El encabezado debe titularse «Pines de clave pública», los siguientes dos o más certificados deben tener un hash SHA256 codificado en base64 con el formato «pin-sha256 =»
Sugerencia: SHA256 es el algoritmo hash utilizado por HPKP. Base64 es un juego de caracteres con 64 caracteres: 0-9, a-z, A-Z y los caracteres especiales «+» y «/». El «=» se utiliza para rellenar hasta los dos últimos caracteres si es necesario.
Las configuraciones opcionales son «includeSubDomains» y «report-uri». «IncludeSubDomains indica al navegador que aplique las protecciones HPKP a cualquier subdominio del sitio web actual durante el tiempo que dure el temporizador» max-age «.» Report-uri «es una función que le permite especificar un sitio web al que enviar informes de error y está diseñado para identificar y resolver problemas.
Hay una segunda variación del encabezado titulado «Public-Key-Pins-Report-Only». Todo es igual, sin embargo, si se encuentra un error, no se toma ninguna acción más que devolver un mensaje de error al navegador y «report-uri» si está configurado. La variante de solo informe se diseñó para permitir la prueba a gran escala del encabezado antes de la implementación, donde los errores no causarían problemas a los usuarios.
Problemas con HPKP
HPKP ha quedado obsoleto por dos razones principales. Había dos formas en que el encabezado podía causar serios problemas al sitio web que lo usaba, estas se llamaban HPKP Suicide y Ransom PKP.
HPKP Suicide es un problema en el que los propietarios legítimos del sitio web pierden el acceso a todas las claves bloqueadas. Esto podría suceder debido a una eliminación accidental, piratería, virus, corrupción de datos o muchas otras razones. Debido a la complejidad de implementar correctamente HPKP y especialmente de mantenerlo actualizado durante las rotaciones de certificados, es relativamente fácil cometer un error de configuración. Sin embargo, con HPKP, si hace algo mal, todos los visitantes recientes de su sitio web no podrán acceder a su sitio web mientras dure el temporizador de «edad máxima». El sitio web smashingmagazine.com ha publicado un artículo detallando su experiencia con exactamente este problema, que esencialmente dejó el sitio fuera de línea para la mayoría de los visitantes durante cuatro días antes de que se implementara una solución.
Ransom PKP es un ataque teórico en el que un pirata informático obtiene acceso a un servidor web, luego roba todos los certificados y claves confiables y luego exige un rescate por su devolución. En una configuración normal, podría generar nuevas claves y certificados y restaurar el sitio web en menos de una hora. Sin embargo, con HPKP habilitado, estas claves están bloqueadas, si no puede ofrecer un certificado bloqueado a los usuarios, no podrán acceder al sitio web mientras dure el temporizador de «edad máxima». Dependiendo de su configuración y si existen copias de seguridad, puede ser imposible solucionar este problema.
Con ambos problemas, los nuevos usuarios podrían acceder al sitio web normalmente, ya que nunca verían el antiguo encabezado HPKP diciéndole al navegador que confíe solo en los certificados que ahora faltan. Sin embargo, todos los visitantes recientes, como los clientes habituales y los lectores, deben esperar la duración completa del temporizador de «edad máxima».
Dada la gravedad de estos problemas y la complejidad de la configuración y el mantenimiento, el uso del encabezado HPKP fue muy bajo. Con el tiempo, los principales navegadores decidieron eliminar el soporte por completo y, en un par de años, el encabezado HPKP quedó en desuso universalmente.