Estoy tratando de aprender sobre HPKP y estoy tratando de entender si es solo un nivel de protección para los agentes de usuario para mitigar los ataques de MiTM a través de HTTPS o si el servidor también cumple una función.
Tenga en cuenta que, literalmente, solo estoy aprendiendo, leyendo y buscando en Google ahora, por lo que los detalles de la pregunta que sigue pueden usar términos y conceptos de manera incorrecta. Por el bien de mi propia educación, y de otras personas que puedan venir después de mí a esta pregunta con la misma información limitada, no dude en aliviar mi / su ignorancia.
Así como lo entiendo actualmente, el servidor entrega los encabezados HPKP relevantes al agente de usuario. Entonces, depende solo del agente, como un navegador web, para imponerlo. No parece que haya ninguna validación ocurriendo en el servidor.
En otras palabras, podría escribir un cliente personalizado que ignore por completo los detalles del encabezado de fijación. Claro que recibiría los encabezados, pero mi cliente personalizado es libre de realizar solicitudes HTTPS de la forma que crea conveniente (dentro de los límites del protocolo HTTPS). Obviamente, pondría a mis usuarios imaginarios en riesgo de ignorar esta información.
Sin la verificación del servidor implementada, soy completamente libre de simplemente omitir y todo procederá normalmente.
Para resumir, HPKP parece ser una característica vinculada al agente de usuario, no una característica vinculada al servidor en la misma línea que HSTS. Son encabezados de respuesta que le dicen al agente: "Oye, haz esto, pero realmente depende de ti". Si soy el autor de un agente de usuario responsable y me preocupo por la seguridad de mis usuarios, haré que mi agente de usuario cumpla. Sin embargo, el cumplimiento es opcional.