Fijación de claves públicas HTTP


HTTP Public Key Pinning ( HPKP ) es un mecanismo de seguridad de Internet obsoleto que se entrega a través de un encabezado HTTP que permite que los sitios web HTTPS resistan la suplantación de identidad por parte de atacantes que utilizan certificados digitales mal emitidos o fraudulentos . [1] Un servidor lo usa para entregar al cliente (por ejemplo , un navegador web ) un conjunto de hashes de claves públicas que deben aparecer en la cadena de certificados de conexiones futuras al mismo nombre de dominio .

Por ejemplo, los atacantes pueden comprometer una autoridad de certificación y luego emitir certificados incorrectamente para un origen web . Para combatir este riesgo, el servidor web HTTPS proporciona una lista de hashes de claves públicas “ancladas” válidas para un tiempo determinado; en conexiones posteriores, durante ese tiempo de validez, los clientes esperan que el servidor utilice una o más de esas claves públicas en su cadena de certificados. Si no es así, se muestra un mensaje de error, que el usuario no puede omitir (fácilmente).

La técnica no fija certificados, sino hashes de clave pública . Esto significa que se puede usar el par de claves para obtener un certificado de cualquier autoridad de certificación, cuando se tiene acceso a la clave privada. Además, el usuario puede anclar claves públicas de certificados raíz o intermedios (creados por las autoridades de certificación), restringiendo el sitio a los certificados emitidos por dicha autoridad de certificación.

Debido a la complejidad del mecanismo de HPKP y la posibilidad de un mal uso accidental, los navegadores dejaron de ser compatibles y eliminaron el soporte de HPKP en favor de la transparencia del certificado y su Expect-CTencabezado. [2] [3] La autorización de la autoridad de certificación también se puede utilizar para restringir qué autoridades de certificación pueden emitir certificados para un dominio en particular, reduciendo así la posibilidad de errores de emisión de certificados. [4]

El servidor comunica la política de HPKP al agente de usuario a través de un campo de encabezado de respuesta HTTPPublic-Key-Pins denominado (o Public-Key-Pins-Report-Onlysolo para fines de informes).

La política HPKP especifica hashes de la información de clave pública del sujeto de uno de los certificados en la cadena de certificados de clave pública X.509 auténtica del sitio web (y al menos una clave de respaldo) en las pin-sha256directivas, y un período de tiempo durante el cual el agente de usuario debe hacer cumplir fijación de clave pública en la max-agedirectiva, directiva opcional includeSubDomainspara incluir todos los subdominios (del dominio que envió el encabezado) en la política de fijación y report-uridirectiva opcional con URL donde enviar informes de infracción de fijación. Al menos una de las claves públicas de los certificados en la cadena de certificados debe coincidir con una clave pública fijada para que el agente de usuario considere válida la cadena.