Riutilizzare le password è estremamente problematico. È triste che le persone non siano consapevoli dei rischi coinvolti per il loro account e i loro dati. Gli aggressori utilizzano indirizzi email e password provenienti da precedenti violazioni e cercano di accedere ad altri siti web. I gestori di password che generano password casuali sono una misura perfetta contro questi attacchi, generando password casuali per ogni sito web. Ma che dire di tutte quelle vecchie password? Abbiamo appena rilasciato una nuova funzione che consente agli utenti di controllare le proprie password rispetto a un enorme database con l'aiuto di haveibeenpwned.com. Con questo nuovo strumento nel nostro arsenale, è possibile controllare le password rispetto a un dataset di quasi 5 miliardi di account con password.
Il servizio Pwned Passwords è stato creato nell'agosto 2017 dopo che NIST ha rilasciato linee guida raccomandando specificamente che le password fornite dagli utenti fossero confrontate con le violazioni di dati esistenti. La motivazione di questo consiglio e suggerimenti su come le applicazioni possano sfruttare questi dati è descritta in dettaglio nel post del blog intitolato Introducing 306 Million Freely Downloadable Pwned Passwords. Nel febbraio 2018 è stata rilasciata la versione 2 del servizio con più di mezzo miliardo di password, ciascuna ora anche con il conteggio di quante volte sono state esposte.
(Fonte: https://haveibeenpwned.com/Passwords)
Un piccolo video che offre una migliore comprensione di come funziona. L'API mostra il progresso dell'analisi. Poiché è un servizio gratuito, rispettiamo il throtteling e non vogliamo causare alcun danno, quindi le richieste sono limitate a una richiesta ogni 1,5 secondi.
In un primo passaggio, tutti i segreti contenenti le tue password vengono scaricati dal server. In un secondo passaggio, ogni segreto viene decrittografato nel tuo browser prima che venga creato un hash sha1 della password. Gli hash sha1 sono lunghi 160 bit (40 caratteri in esadecimale). L'hash sha1 viene suddiviso in un prefisso (5 caratteri esadecimali) e un suffisso (35 caratteri esadecimali). Il prefisso viene inviato all'API di haveibeenpwned.com che controlla il suo database e restituisce un elenco di suffissi. Il client confronterà il suffisso della password con l'elenco dei suffissi ricevuti e segnalerà la password come compromessa o meno. Questo è un modo efficiente per interrogare il database delle password, senza effettivamente inviare la password (o derivati deboli) ed è noto come k-anonimizzazione.