Seleziona lingua

Verso la Verifica Formale degli Algoritmi di Generazione delle Password nei Password Manager

Un approccio di verifica formale che utilizza EasyCrypt per dimostrare la correttezza funzionale e la sicurezza dei generatori di password casuali in Chrome, Bitwarden e KeePass.
strongpassword.org | PDF Size: 0.1 MB
Valutazione: 4.5/5
La tua valutazione
Hai già valutato questo documento
Copertina documento PDF - Verso la Verifica Formale degli Algoritmi di Generazione delle Password nei Password Manager

1. Introduzione

I gestori di password (PM) sono strumenti essenziali per generare e memorizzare password casuali robuste, affrontando le vulnerabilità dell'autenticazione tramite password. Tuttavia, la fiducia degli utenti rimane un ostacolo all'adozione. Questo articolo propone un'implementazione di riferimento formalmente verificata per un Generatore di Password Casuali (RPG) utilizzando l'ambiente di dimostrazione EasyCrypt, concentrandosi sulla correttezza funzionale e sulle proprietà di sicurezza.

2. Indice

3. Algoritmi Correnti di Generazione delle Password

Gli autori hanno studiato 15 PM, concentrandosi su tre ampiamente utilizzati e open-source: Google Chrome (v89.0.4364.1), Bitwarden (v1.47.1) e KeePass (v2.46). Questi sono stati selezionati per la loro popolarità e per il codice sorgente accessibile.

3.1 Politiche di Composizione delle Password

I PM consentono agli utenti di definire politiche di composizione delle password, inclusi lunghezza, classi di caratteri (minuscole, maiuscole, numeri, caratteri speciali), occorrenze minime/massime per set, esclusione di caratteri simili e set di caratteri personalizzati. La Tabella 1 riassume le politiche per Chrome, Bitwarden e KeePass.

3.2 Generazione di Password Casuali

L'algoritmo principale genera caratteri casuali da set definiti fino al raggiungimento della lunghezza della password, rispettando i vincoli di occorrenza minima/massima. L'algoritmo di Chrome genera prima i caratteri dai set con occorrenze minime, poi dall'unione di tutti i set senza superare i massimi, e infine applica una permutazione alla stringa.

4. Framework di Verifica Formale

4.1 Panoramica di EasyCrypt

EasyCrypt è un assistente di dimostrazione per prove di sicurezza crittografica che utilizza un approccio basato su giochi. Consente la specifica di implementazioni di riferimento e la verifica formale della correttezza funzionale e delle proprietà di sicurezza.

4.2 Proprietà di Sicurezza

La formalizzazione include proprietà come l'uniformità della casualità, la resistenza agli attacchi a canale laterale e l'aderenza ai vincoli delle politiche. L'approccio basato su giochi modella le capacità avversarie e dimostra l'indistinguibilità dalla generazione casuale ideale.

5. Dettagli Tecnici e Formulazione Matematica

La sicurezza dell'RPG è modellata utilizzando il concetto di indistinguibilità computazionale. Sia $\mathcal{G}$ l'algoritmo di generazione delle password e $\mathcal{U}$ un generatore casuale uniforme. Il vantaggio di un avversario $\mathcal{A}$ è definito come:

$$\text{Adv}_{\mathcal{G}}(\mathcal{A}) = |\Pr[\mathcal{A}^{\mathcal{G}} = 1] - \Pr[\mathcal{A}^{\mathcal{U}} = 1]|$$

L'obiettivo è dimostrare che $\text{Adv}_{\mathcal{G}}(\mathcal{A})$ è trascurabile per tutti gli avversari probabilistici a tempo polinomiale. La dimostrazione formale in EasyCrypt comporta la costruzione di una sequenza di giochi, ciascuno leggermente diverso dal precedente, e la limitazione della differenza nella probabilità di successo dell'avversario.

6. Risultati Sperimentali e Diagrammi

La verifica formale è stata condotta su un'implementazione di riferimento dell'RPG. La dimostrazione consiste in circa 500 righe di codice EasyCrypt, coprendo la correttezza funzionale (la password generata soddisfa la politica) e la sicurezza (l'output è indistinguibile da un valore casuale uniforme). Il tempo di dimostrazione è stato inferiore a 10 secondi su un laptop standard. Un diagramma della struttura della dimostrazione basata su giochi è mostrato di seguito:

Figura 1: Struttura della dimostrazione basata su giochi: Gioco 0 (algoritmo reale) → Gioco 1 (sostituzione PRG con casuale) → Gioco 2 (sostituzione selezione caratteri con uniforme) → Gioco 3 (ideale). Ogni transizione è giustificata da un'ipotesi crittografica o da una riduzione.

7. Esempio di Framework di Analisi

Caso di Studio: Verifica della Generazione delle Password di KeePass

Si consideri una politica che richiede una password di 12 caratteri con almeno 2 minuscole, 2 maiuscole, 2 cifre e 2 caratteri speciali. La specifica formale in EasyCrypt definisce:

La dimostrazione procede per induzione sulla lunghezza della password, mostrando che ogni carattere viene estratto uniformemente dal set appropriato e che la permutazione finale garantisce l'assenza di bias posizionale.

8. Analisi Originale

Intuizione Centrale: Questo articolo affronta un divario critico nella fiducia nei gestori di password applicando la verifica formale agli algoritmi di generazione delle password. Mentre molti PM rivendicano sicurezza, pochi forniscono garanzie matematiche. L'uso di EasyCrypt è un passo significativo verso la generazione di password dimostrabilmente sicure.

Flusso Logico: Gli autori esaminano prima gli algoritmi esistenti, identificando schemi comuni e potenziali difetti. Propongono quindi un'implementazione di riferimento e ne verificano formalmente la correttezza e la sicurezza utilizzando dimostrazioni basate su giochi. Il flusso è logico: identificazione del problema → progettazione della soluzione → verifica formale → implicazioni.

Punti di Forza e Debolezze: Il punto di forza risiede nell'approccio formale rigoroso, che fornisce garanzie che vanno oltre i test tipici. Tuttavia, l'articolo si concentra su una singola implementazione di riferimento, non sulla verifica del codice effettivo di Chrome, Bitwarden o KeePass. Ciò limita l'impatto pratico. Inoltre, la dimostrazione presuppone un generatore di numeri casuali affidabile, che potrebbe non essere valido in tutti gli scenari di distribuzione. Come notato da Bellare e Rogaway (1993) nel loro lavoro seminale sugli oracoli casuali, il divario tra modelli teorici e implementazioni pratiche rimane una sfida.

Spunti Operativi: Per gli sviluppatori di PM, l'adozione di strumenti di verifica formale come EasyCrypt può aumentare la fiducia e ridurre le vulnerabilità. Per i ricercatori, estendere questo lavoro per verificare il codice sorgente effettivo dei PM (ad esempio, attraverso decompilazione o esecuzione simbolica) sarebbe prezioso. Gli utenti dovrebbero richiedere trasparenza e garanzie formali dai fornitori di PM. L'approccio si allinea con la tendenza più ampia dei metodi formali nella sicurezza, come sostenuto dal National Institute of Standards and Technology (NIST) nelle loro linee guida per la validazione dei moduli crittografici.

9. Applicazioni Future e Prospettive

Il framework di verifica formale può essere esteso ad altre funzionalità dei PM, come l'archiviazione delle password e la compilazione automatica. L'integrazione con pipeline di integrazione continua potrebbe consentire la verifica automatica del codice di generazione delle password. Il lavoro futuro potrebbe anche esplorare la resistenza ai canali laterali e la generazione casuale quantum-safe. Con la diffusione sempre maggiore dei gestori di password, le garanzie formali saranno essenziali per costruire la fiducia degli utenti e soddisfare i requisiti normativi (ad esempio, GDPR, eIDAS).

10. Riferimenti