Seleziona lingua

Generatore Sicuro di Password Basato su Generatore di Numeri Pseudo-Casuali (PRNG)

Un documento di ricerca che propone un generatore di password sicuro utilizzando PRNG basati su HMAC, CMAC o KMAC, validato tramite test di entropia e IID NIST SP 800-90B.
computationalcoin.com | PDF Size: 0.5 MB
Valutazione: 4.5/5
La tua valutazione
Hai già valutato questo documento
Copertina documento PDF - Generatore Sicuro di Password Basato su Generatore di Numeri Pseudo-Casuali (PRNG)

Indice dei Contenuti

1. Introduzione

Questa ricerca affronta il problema persistente delle fughe di password e il conseguente rischio di esposizione dei dati personali. Sebbene la sicurezza dei siti web sia un fattore, la forza intrinseca della password stessa è fondamentale. Le vulnerabilità comuni includono password basate su parole chiave, frasi popolari, informazioni utente e riutilizzo delle password. L'ascesa dell'IA e dei modelli linguistici di grandi dimensioni potenzia ulteriormente gli attaccanti nell'indovinare le password in modo più efficace.

In risposta, questo documento propone un generatore sicuro di password costruito su un Generatore di Numeri Pseudo-Casuali (PRNG) sicuro. Il nucleo del PRNG è costruito utilizzando primitive crittografiche come HMAC, CMAC o KMAC per generare numeri casuali di alta qualità, che vengono poi utilizzati per creare password. Il sistema consente un input utente opzionale (Messaggio da Hashare, TBHM) per inizializzare il processo. I contributi principali sono:

2. Rassegna della Letteratura

2.1. Generatore di Numeri Pseudo-Casuali Basato su Generatore Congruenziale Lineare

I linguaggi di programmazione comuni (C, Java) utilizzano Generatori Congruenziali Lineari (LCG). Dato un seme $k$, la sequenza è generata come: $f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$ e $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$. Questo metodo è insicuro in quanto lo stato può essere invertito: $f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$, esponendo il seme e l'intera sequenza.

2.2. Generatore di Numeri Pseudo-Casuali Sicuro

I PRNG sicuri si basano su primitive crittografiche come delineato in NIST SP 800-108 Rev. 1.

2.2.1. Basato su HMAC

La sicurezza si basa sulla proprietà unidirezionale delle funzioni hash (es., SHA2, SHA3). Per una chiave $k$ e un messaggio $M$, l'HMAC è calcolato come: $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$. Per generare un flusso di bit casuale di lunghezza $L$, viene utilizzata una modalità contatore: $M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$, producendo output $r_{hmac,i}$.

2.2.2. Basato su CMAC

La sicurezza si basa sul cifrario a blocchi AES in modalità CBC. Il messaggio $M$ è suddiviso in blocchi $M'_1, M'_2, ...$. Il processo itera: $c_{i+1} = AES(k, c_i \oplus M'_{i+1})$ con $c_0 = Pad0(0)$. L'output finale $r_{cmac}$ è derivato dall'ultimo blocco cifrato dopo un padding specifico (Pad1).

2.2.3. Basato su KMAC

Utilizza la funzione spugna KECCAK (fondamento di SHA-3), offrendo una funzione MAC flessibile e robusta adatta alla generazione di bit casuali deterministici.

2.3. Metodi per la Validazione della Casualità

Il documento adotta il quadro NIST SP 800-90B, che è lo standard de facto per la validazione delle fonti di entropia. Include due suite di validazione critiche:

3. Generatore Sicuro di Password Proposto

L'architettura del sistema proposto è semplice ma potente:

  1. Input/Seme: Accetta un TBHM fornito dall'utente opzionale. Se fornito, viene elaborato; altrimenti, viene utilizzato un seme sicuro generato dal sistema.
  2. Nucleo PRNG Sicuro: Il TBHM/seme viene inserito in una delle tre costruzioni crittografiche PRNG (basata su HMAC, CMAC, KMAC) per generare una sequenza pseudo-casuale di bit crittograficamente forte.
  3. Costruzione della Password: I bit casuali vengono mappati su un set di caratteri definito dall'utente o dal sistema (es., alfanumerici + simboli) per produrre una password della lunghezza desiderata.

Analisi della Sicurezza: Il documento sostiene che la sicurezza della password generata dipende direttamente dall'entropia dell'output del PRNG e dalla dimensione del set di caratteri. Viene eseguita un'analisi comparativa, mostrando che una password di 16 caratteri da un set di 94 caratteri generata con questo metodo può offrire una resistenza alla forza bruta paragonabile o superiore a quella delle chiavi AES-128 o AES-256, assumendo che l'output del PRNG sia veramente casuale.

4. Risultati Sperimentali e Analisi

La validazione sperimentale è un punto di forza chiave del documento.

Descrizione del Grafico (Implicita): Un grafico a barre potrebbe confrontare efficacemente le stime di min-entropia (in bit per bit) per i tre metodi PRNG rispetto al valore ideale di 1.0. Tutte le barre sarebbero molto vicine a 1.0. Un secondo grafico potrebbe mostrare i p-value dei test IID chiave (es., Chi-Quadrato, Kolmogorov-Smirnov), con tutti i valori ben al di sopra della tipica soglia di significatività (es., 0.01), indicando un superamento.

5. Conclusioni e Lavori Futuri

La ricerca dimostra con successo un framework di generazione di password sicuro basato su PRNG crittografici. I metodi proposti generano password con sufficiente casualità, come rigorosamente validato dagli standard NIST. Le direzioni per i lavori futuri includono:

6. Analisi Originale e Approfondimento Esperto

Approfondimento Chiave: Questo documento non riguarda l'invenzione di una nuova primitiva crittografica; riguarda l'applicazione disciplinata e la validazione di quelle esistenti e verificate (HMAC, CMAC, KMAC) per risolvere il problema banale ma critico della generazione di password. Il suo vero valore risiede nel colmare il divario tra crittografia teorica e igiene della sicurezza pratica, dimostrando rigorosamente che il suo output è adatto allo scopo utilizzando la suite di test gold-standard NIST.

Flusso Logico: L'argomentazione è solida: 1) Gli LCG standard sono crittograficamente compromessi. 2) I PRNG sicuri costruiti da MAC crittografici sono provabilmente robusti. 3) Pertanto, le password derivate da tali PRNG ereditano quella robustezza. 4) Questa affermazione è validata non solo dalla teoria, ma dal superamento di rigorosi test empirici (NIST SP 800-90B). Questa validazione end-to-end è ciò che manca a molti strumenti "generatori di password sicure".

Punti di Forza e Debolezze:
Punti di Forza: Il rigore metodologico è encomiabile. L'uso di NIST SP 800-90B per la validazione ne eleva immediatamente la credibilità, simile a come gli algoritmi crittografici sono validati attraverso il CAVP (Cryptographic Algorithm Validation Program). Il confronto con la forza della chiave AES è una metrica pratica e comprensibile per i team di sicurezza.
Debolezze: Il documento opera in un ambiente controllato e idealizzato. Assume che il seme/TBHM iniziale abbia sufficiente entropia—un anello critico e spesso debole nei sistemi reali. L'input utente "opzionale" è un'arma a doppio taglio; una frase utente debole e prevedibile (es., "miapassword") potrebbe minare l'intera costruzione crittografica, un rischio non completamente quantificato. Inoltre, come notato nella revisione del 2023 "Post-Quantum Cryptography: A Ten-Year Journey" di NIST, il settore si sta muovendo verso algoritmi resistenti ai quanti. Le costruzioni del documento, sebbene sicure contro i computer classici, si basano su SHA2/AES, la cui resistenza quantistica a lungo termine è incerta.

Approfondimenti Azionabili: Per gli architetti della sicurezza, questo documento fornisce una linea guida. Non costruire il proprio PRNG. Utilizza costruzioni crittografiche consolidate come blocchi costitutivi. Ancora più importante, valida, valida, valida. Integra una validazione continua dell'entropia (come i test NIST) nei tuoi sistemi critici di generazione di numeri casuali, una pratica enfatizzata da organizzazioni come gli sforzi di CCC (Common Criteria Certification) della Linux Foundation. Per lo sviluppo di prodotti, il punto d'azione immediato è sostituire qualsiasi generazione di password basata su LCG nei tuoi sistemi con un generatore basato su KMAC o HMAC-SHA256, utilizzando un seme proveniente da una fonte sicura. Il passo per il futuro è iniziare a prototipare con design basati su SHA-3/KECCAK (come KMAC) e monitorare l'evoluzione degli standard di crittografia post-quantistica NIST per un'integrazione finale.

7. Dettagli Tecnici e Formulazione Matematica

Le operazioni matematiche fondamentali sono definite nella Rassegna della Letteratura (Sezione 2). Le formule chiave includono:

La generazione della password mappa un intero casuale $R$ (dall'output del PRNG) a un indice di carattere: $\text{indice} = R \ \text{mod} \ |S|$, dove $|S|$ è la dimensione del set di caratteri.

8. Quadro di Analisi ed Esempio Pratico

Esempio Pratico: Valutazione del Generatore di Password di un Sistema Legacy
Scenario: Un'applicazione web legacy utilizza un LCG modificato per generare password temporanee utente. È richiesto un audit di sicurezza.
Applicazione del Quadro:

  1. Identificare il Tipo di PRNG: Ispezionare il codice sorgente. Trovare: seed = (a * seed + c) % m; Confermare che è una variante LCG.
  2. Valutare la Sicurezza Crittografica: LCG è deterministico e reversibile. Un attaccante che ottiene poche password consecutive potrebbe risolvere per il seme e prevedere tutte le password future, violando le linee guida NIST SP 800-63B sulla casualità degli autenticatori.
  3. Proporre Rimedio utilizzando il Metodo del Documento:
    • Fonte del Seme: Sostituire il seme basato sull'ora di sistema con un CSPRNG (es., /dev/urandom su Linux, CryptGenRandom su Windows).
    • Generatore Principale: Implementare un PRNG basato su HMAC-SHA256 secondo il design del documento.
    • Validazione: Generare un ampio campione (1.000.000 bit) dal nuovo generatore ed eseguire l'NIST STS (Statistical Test Suite) o gli stimatori di entropia da SP 800-90B per verificare la casualità prima del deployment.
Questo quadro sposta la valutazione da "sembra casuale?" a "supera la validazione crittografica standardizzata?".

9. Applicazioni Future e Direzioni di Sviluppo

I principi si estendono oltre le password utente:

10. Riferimenti

  1. M. Bishop, “Computer Security: Art and Science”, Addison-Wesley, 2019.
  2. NIST, “Special Publication 800-63B: Digital Identity Guidelines”, 2020.
  3. NIST, “Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation”, 2018.
  4. NIST, “Special Publication 800-108 Rev. 1: Recommendation for Key Derivation Using Pseudorandom Functions”, 2022.
  5. NIST, “FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions”, 2015.
  6. J. Kelsey, B. Schneier, D. Wagner, “Secure Applications of Low-Entropy Keys”, Information Security Workshop, 1997.
  7. M. Dworkin, “Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication”, NIST SP 800-38B, 2005.
  8. NIST, “Status Report on the Third Round of the NIST Post-Quantum Cryptography Standardization Process”, 2022. [Online]. Disponibile: https://csrc.nist.gov/projects/post-quantum-cryptography
  9. Linux Foundation, “Common Criteria Certification and Open Source”, 2023. [Online]. Disponibile: https://www.linuxfoundation.org/