Monitoraggio delle password
La funzionalità di monitoraggio delle password confronta le password archiviate nel portachiavi per l’inserimento automatico dell’utente con un elenco costantemente aggiornato e curato di password che sono state segnalate come coinvolte in fughe di dati da diverse organizzazioni online. Se la funzionalità è attivata, il protocollo di monitoraggio confronta in modo continuo le password archiviate per l’inserimento automatico dell’utente con la lista curata.
Funzionamento del monitoraggio
Il dispositivo dell’utente esegue continuamente verifiche cicliche delle password, effettuando query a intervalli che non dipendono dalle password stesse o dagli schemi di utilizzo del gestore delle password. Ciò aiuta a garantire che gli stati delle verifiche rimangano aggiornati con la lista curata delle password coinvolte in fughe di dati attuale. Per aiutare a evitare di rivelare informazioni sul numero di password uniche di cui un utente dispone, le richieste vengono eseguite in gruppo e in parallelo. In ciascun controllo viene verificato in parallelo un numero fisso di password e se un utente dispone di meno password rispetto a questo numero, verranno generate e aggiunte delle password casuali per colmare la differenza.
Procedura di controllo delle password
La procedura di controllo delle password è composta da due fasi. Le password più comunemente coinvolte in fughe di dati sono incluse in un elenco locale sul dispositivo. Se la password compare in tale elenco, l’utente viene avvisato immediatamente senza alcuna interazione con l’esterno. Questo meccanismo è progettato per garantire che non vengano esposte informazioni sulle password dell’utente che sono a maggiore rischio a causa di una fuga di dati.
Se la password non compare nell’elenco di quelle più frequenti, viene confrontata con l’elenco delle password coinvolte meno frequentemente in fughe di dati.
Confronto delle password degli utenti con un elenco curato
La verifica di una password non presente nell’elenco locale prevede un’interazione con i server Apple. Per aiutare a garantire che le password non a rischio non vengano inviate ad Apple, viene messa in atto una forma di intersezione crittografica di set privati che confronta le password dell’utente con un grande insieme di password coinvolte in fughe di dati. Questo meccanismo è progettato per garantire che per le password meno a rischio di coinvolgimento in fughe di dati venga condivisa con Apple una quantità minima di informazioni. Per la password di un utente, tali informazioni sono limitate a un prefisso di 15 bit di un hash crittografico. La rimozione delle password più frequentemente a rischio da questo processo interattivo, utilizzando l’elenco locale delle password più comunemente esposte, riduce il delta della frequenza relativa delle password nei bucket del servizio web, rendendo difficile risalire alle password tramite operazioni di ricerca.
Il protocollo sottostante suddivide l’elenco curato delle password (che al momento della stesura di questo documento conteneva circa 1,5 miliardi di password) in 215 diversi bucket. Il bucket a cui una password appartiene è determinato dai primi 15 bit del valore dell’hash SHA256 della password stessa. Inoltre, ogni password esposta, pw, viene associata a un punto della curva ellittica NIST P256: Ppw = ⍺·HSWU(pw), dove ⍺ è una chiave casuale segreta conosciuta solo da Apple e HSWU è una funzione oracolo casuale che associa le password a punti sulla curva in base al metodo Shallue-van de Woestijne-Ulas. Questa trasformazione è concepita per nascondere in maniera computazionale i valori delle password e per aiutare a evitare di rivelare nuove password esposte tramite la funzionalità di monitoraggio.
Per calcolare l’intersezione tra set privati, il dispositivo dell’utente determina il bucket a cui appartiene la password utilizzando λ, il prefisso di 15 bit di SHA256(upw), dove upw è una delle password dell’utente. Il dispositivo genera la propria costante casuale β e invia il punto Pc = β·HSWU(upw) al server, insieme alla richiesta del bucket corrispondente a λ. In questo modo, β nasconde le informazioni sulla password dell’utente e limita a λ le informazioni esposta dalla password ad Apple. Infine, il server prende il punto inviato dal dispositivo dell’utente, calcola ⍺Pc = ⍺β·HSWU(upw) e lo restituisce, insieme al corretto bucket di punti Bλ={ Ppw | SHA256(pw) inizia con il prefisso λ} al dispositivo.
Le informazioni restituite consentono al dispositivo di calcolare B’λ={β·Ppw | Ppw∈Bλ} e verificare che la password è stata esposta se ⍺Pc ∈B’λ.