Sto cercando di imparare su HPKP e sto cercando di capire se è solo un livello di protezione per gli agenti utente per mitigare gli attacchi MiTM su HTTPS o se anche il server ha un ruolo.
Si prega di tenere presente che sto letteralmente imparando, leggendo, googling su questo ora in modo che i dettagli della domanda procedurale possano utilizzare termini e concetti in modo errato. Per il bene della mia istruzione, e di altri che potrebbero venire dopo di me a questa domanda con le stesse informazioni limitate, non esitate ad alleviare la mia / loro ignoranza.
Così come attualmente lo capisco, il server consegna le relative intestazioni HPKP al programma utente. Spetta quindi all'agente da solo, come ad esempio un browser Web, applicarlo. Non sembra che sul server si sia verificata alcuna convalida.
In altre parole, potrei scrivere un client personalizzato che ignora completamente i dettagli dell'intestazione di Pinning. Certo riceverebbe le intestazioni, ma il mio client personalizzato è libero di fare richieste HTTPS come meglio crede (entro i limiti del protocollo HTTPS). Ovviamente metterei a rischio i miei utenti immaginari per ignorare queste informazioni.
Senza la verifica del server, tuttavia sono completamente libero di saltare e tutto procederà normalmente.
Per riassumere, HPKP sembra essere una funzione associata a un agente utente, non una funzionalità associata al server lungo la stessa linea dell'HSTS. Sono le intestazioni di risposta che dicono all'agente: "Ehi, per favore fallo, ma dipende da te". Se sono l'autore di un agente utente responsabile e mi interessa la sicurezza dei miei utenti, renderò il mio agente utente conforme. La conformità è tuttavia facoltativa.