¿Qué es HPKP?

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 escenario, los piratas informáticos podrían descifrar cualquier tráfico HTTPS interceptado en el sitio web afectado.

Consejo: los encabezados de respuesta web son fragmentos de metadatos que el servidor incluye al responder a las solicitudes. Un pequeño subconjunto de estos se conoce como encabezados de seguridad, ya que habilitan y configuran varias funciones de seguridad.

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 un certificado HTTPS propio 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, su 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 cuando hayan verificado que la persona que lo solicita es el propietario genuino del sitio web. La idea con esta estructura es que si un pirata informático crea su propio certificado para un sitio web, no será firmado por una CA en la que su computadora confíe, por lo que verá una advertencia.

¿Qué hizo HPKP?

Todo el sistema de certificados se basa en la confiabilidad de las autoridades de certificación. Sin embargo, originalmente no existían protecciones contra una CA que se veía comprometida por piratas informáticos o se volvía deshonesta y optaba por emitir certificados incorrectamente.

HPKP fue diseñado para ser una protección contra esta posibilidad. Permite que los sitios web especifiquen una lista exclusiva de certificados en los que se puede confiar para el sitio web en un proceso llamado fijación. Era posible fijar 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 web en sí, evitando que incluso la CA correcta emitiera otro certificado válido.

Técnicamente, no es el certificado en sí lo que está anclado, 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 anclado, pero no es posible usar el hash para hacer un certificado válido.

HPKP requería que se fijaran al menos dos claves, al menos una de las cuales debe ser una copia de seguridad y no estar en la cadena de certificados actual. Esta copia de seguridad le permite configurar una transferencia sin problemas a un nuevo certificado que no impide que los usuarios puedan conectarse.

Si el certificado HTTPS presentado al navegador por el sitio web no coincide con uno de los certificados fijados, entonces el navegador debe rechazarlo y evitar que el usuario omita el mensaje de error del certificado.

Estructura de HPKP

El encabezado HPKP tiene tres partes obligatorias y dos opcionales. El encabezado debe titularse “Clave pública-Pines”, los siguientes dos o más certificados deben tener un hash SHA256 codificado en base64 anclado en el formato 'pin-sha256 = ””'. La última parte obligatoria es la "edad máxima", que es un recuento en segundos del tiempo durante el cual el navegador debe aplicar las restricciones.

Sugerencia: SHA256 es el algoritmo hash utilizado por HPKP. Base64 es un juego de caracteres con 64 caracteres: 0-9, az, AZ 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 de HPKP a cualquier subdominio del sitio web actual durante el tiempo del temporizador" max-age ". “Report-uri” es una función que permite especificar un sitio web donde se pueden enviar informes de errores y está diseñado para ayudar a identificar y resolver problemas.

Existe una segunda variante del encabezado titulada "Public-Key-Pins-Report-Only". Todo es igual, sin embargo, si se encuentra un error, no se toma ninguna acción más allá de devolver un mensaje de error al navegador y al “report-uri” si hay uno configurado. La única variante del informe se diseñó para permitir pruebas a gran escala del encabezado antes de la implementación, donde los errores no causarían problemas a los usuarios.

Problemas con HPKP

HPKP quedó en desuso por dos razones principales. Había dos formas en las que el encabezado podía causar serios problemas para el 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 ancladas. Esto podría suceder por eliminación accidental, piratería, virus, corrupción de datos o por muchas otras razones. Debido a la complejidad de implementar HPKP correctamente, y especialmente mantenerlo actualizado durante las rotaciones de certificados, es relativamente fácil cometer un error de configuración. Sin embargo, con HPKP, si se equivoca, todos los visitantes recientes de su sitio web no podrán acceder a su sitio web durante el tiempo del temporizador de "edad máxima". El sitio web smashingmagazine.com publicó un artículo que detalla 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 hacer que el sitio web vuelva a funcionar en menos de una hora. Sin embargo, con HPKP habilitado, esas claves están ancladas, si no puede entregar un certificado fijo a los usuarios, no podrán acceder al sitio web mientras dure el temporizador de "edad máxima". Dependiendo de la configuración y si existen copias de seguridad, podría ser imposible resolver este problema.

Con ambos problemas, los nuevos usuarios podrían acceder al sitio web con normalidad, ya que nunca habrían visto el antiguo encabezado HPKP indicando a su navegador que solo confiara en los certificados que ahora faltan. Sin embargo, todos los visitantes recientes, como los clientes habituales y los lectores, tendrían que esperar toda la duración 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. Finalmente, los principales navegadores acordaron dejar de admitirlo por completo y, en un par de años, el encabezado HPKP quedó en desuso universalmente.



Leave a Comment

Cómo forzar a Google Chrome a mostrar siempre las URL completas

Cómo forzar a Google Chrome a mostrar siempre las URL completas

Chrome, de forma predeterminada, no muestra la URL completa. Puede que no le importe demasiado este detalle, pero si por alguna razón necesita que se muestre la URL completa, encontrará instrucciones detalladas sobre cómo hacer que Google Chrome muestre la URL completa en la barra de direcciones.

Cómo recuperar el antiguo Reddit

Cómo recuperar el antiguo Reddit

Reddit cambió su diseño una vez más en enero de 2024. Los usuarios del navegador de escritorio pueden ver el rediseño y reduce el feed principal al tiempo que proporciona enlaces.

Cómo copiar contenido de libros de texto con Google Lens

Cómo copiar contenido de libros de texto con Google Lens

Escribir tu cita favorita de tu libro en Facebook lleva mucho tiempo y está lleno de errores. Aprenda a usar Google Lens para copiar texto de libros a sus dispositivos.

No se pudo encontrar la dirección DNS del servidor reparado en Chrome

No se pudo encontrar la dirección DNS del servidor reparado en Chrome

A veces, cuando estás trabajando en Chrome, no puedes acceder a ciertos sitios web y aparece el error "No se pudo encontrar la dirección DNS del servidor de reparación en Chrome". Así es como puede resolver el problema.

Guía rápida sobre cómo crear recordatorios en Google Home

Guía rápida sobre cómo crear recordatorios en Google Home

Los recordatorios siempre han sido lo más destacado de Google Home. Seguramente nos hacen la vida más fácil. Hagamos un recorrido rápido sobre cómo crear recordatorios en Google Home para que nunca dejes de hacer recados importantes.

Netflix: cambiar contraseña

Netflix: cambiar contraseña

Cómo cambiar tu contraseña en el servicio de vídeo en streaming Netflix usando tu navegador preferido o aplicación de Android.

Cómo deshabilitar el mensaje de restauración de páginas en Microsoft Edge

Cómo deshabilitar el mensaje de restauración de páginas en Microsoft Edge

Si desea deshacerse del mensaje Restaurar páginas en Microsoft Edge, simplemente cierre el navegador o presione la tecla Escape.

Las 10 mejores alternativas de voz de Google en 2023

Las 10 mejores alternativas de voz de Google en 2023

¿Busca una alternativa confiable de Google Voice para llamadas telefónicas? Descubra las mejores alternativas de llamadas VoIP a Google Voice.

¿Qué es un sombrero negro?

¿Qué es un sombrero negro?

Un sombrero negro es un hacker que victimiza a las personas y viola la ley. Sigue leyendo para saber más sobre el tema.

¿Qué es un ciberdelincuente?

¿Qué es un ciberdelincuente?

¿No sabes qué es un ciberdelincuente? Un ciberdelincuente es un delincuente que comete delitos principalmente utilizando sistemas informáticos.