HSTS e HPKP sono concetti diversi.
Un'intestazione Sicurezza di trasporto rigorosa HTTP (HSTS) indica ai client di utilizzare HTTPS per tutte le future connessioni a un sito Web, prevenendo in tal modo gli attacchi di downgrade. Al contrario di HPKP, non influenza il modo in cui i certificati sono convalidati.
Un'intestazione Pinning della chiave pubblica HTTP (HPKP) indica ai client di aggiungere una chiave pubblica specifica a un dominio. Pertanto, se un browser che supporta HPKP rileva un'intestazione HPKP, ricorderà gli hash delle chiavi pubbliche specificati e li assocerà a quel dominio . In futuro (fino al termine del timeout di max-age
specificato), il browser accetta un certificato per quel dominio solo se una chiave nella catena di attendibilità del certificato corrisponde a uno degli hash associati.
HPKP riduce il rischio che un utente malintenzionato rilasci certificati canaglia dopo aver compromesso un'autorità di certificazione ( occasionalmente accade ). Normalmente il tuo browser non è in grado di rilevare un certificato fraudolento se è stato correttamente firmato da una CA . (Sebbene esistano meccanismi per rilevare revoche di certificati, ad esempio OCSP / CRL .) Ma se hai preventivamente fissato un particolare certificato a un sito web, l'autore dell'attacco non sarà in grado di sostituirlo senza attivare il browser.
Tieni presente che, poiché HPKP è trust-on-first-use , esso sarà (simile a HSTS) solo efficace dopo la tua prima visita a un sito web. Un'eccezione a ciò sono gli elenchi di preload gestiti dai fornitori di browser per siti Web di alto profilo (Google, Facebook, Twitter, ecc.). Ciò significa che anche se DigiCert (CA di Facebook) fosse compromesso oggi, un utente malintenzionato non sarebbe in grado di intercettare la connessione a Facebook perché le chiavi pubbliche dei certificati originali sono precaricate nel browser.