È possibile memorizzare in modo sicuro le password utilizzando la crittografia reversibile?

20

Tutti dicono che è necessario utilizzare un hash non reversibile quando si memorizzano le password in modo che anche se il database è trapelato, le password stesse sono ancora al sicuro. Mi chiedo se sia comunque necessario utilizzare la crittografia reversibile per memorizzare le password.

Per lo meno, è necessario richiedere che qualsiasi exploit che perde il database (SQL injection, accesso alla shell del server, ecc.) non perda la chiave di crittografia e che non sia ragionevolmente possibile capire chiave di crittografia utilizzando una password in chiaro in chiaro se si dispone del database trapelato.

Non sto seriamente pensando di farlo perché sembra che anche se tecnicamente sia possibile, sarebbe difficile farlo correttamente, ma sembra un problema interessante.

    
posta Steve 10.08.2011 - 03:26
fonte

4 risposte

20

La crittografia reversibile non viene comunemente utilizzata per le password perché i requisiti e i parametri specifici dell'autenticazione della password non sono compatibili con la debolezza della crittografia reversibile.

La principale debolezza della crittografia reversibile è semplice: se la chiave è compromessa, i dati crittografati sono compromessi, periodo.

Le password vengono sempre utilizzate ogni volta che gli utenti eseguono l'accesso. Pertanto, il processo di autenticazione deve essere in grado di accedere alle credenziali degli utenti in qualsiasi momento, in modo automatico, senza controlli ostruttivi. Ciò significa che la chiave per la crittografia reversibile deve essere sempre presente sul disco o in memoria. Se quel programma, disco o memoria sono in qualche modo compromessi, tutte le password crittografate in modo reversibile sono tutte compromesse in un colpo solo.

Al contrario, considera l'uso di hash non reversibili. Se il programma, il disco o la memoria sono compromessi, l'attaccante riceve gli hash "bloccati" e non c'è chiave. Possono quindi attaccare ulteriormente - noto attacco di testo cifrato, forza bruta, ecc. - ma non hanno ancora "vinto".

Utilizziamo sempre la crittografia reversibile (diciamolo con chiave) - dischi, file, allegati e-mail. Ciò che tutti questi usi hanno in comune, tuttavia, è che incoraggiano (se non richiedono) l'intervento umano a fornire la chiave.

Non sono sicuro del motivo per cui lo stai chiedendo, ma per quanto riguarda un modello ibrido? Considera che potrebbe essere ragionevole archiviare entrambi testo cifrato reversibile e non reversibile per le password degli utenti. Quando vengono create password, memorizza due versioni cifrate: una creata con una funzione di hashing unidirezionale e l'altra creata con un algoritmo di crittografia asimmetrico ("crittografia a chiave pubblica"). Tutti i processi di autenticazione automatizzati utilizzano gli hash non reversibili per scopi di autenticazione. Mantieni la "chiave pubblica" metà della coppia sul sistema per utilizzare la generazione delle password cifrate, e salva la "chiave privata" metà della coppia offline . Nel caso in cui sia richiesta la password in chiaro, prendere la password crittografata offline e decrittografarla con la chiave appropriata. Finché la chiave di decodifica non è accessibile al sistema di autenticazione, un utente malintenzionato non può sfruttare il fatto che è stata utilizzata la crittografia "reversibile" per archiviare le password in chiaro.

Questo aiuterà solo se la necessità di accedere alle password in chiaro non è un'esigenza automatica, naturalmente. Ma mi sembra un'idea geniale.

    
risposta data 10.08.2011 - 05:21
fonte
6

Is it possible to securely store passwords using reversible encryption?

Sì, ma è molto più difficile e richiede uno sforzo e spese molto maggiori. La trasparenza è difficile da fare bene.

Per supportare la crittografia reversibile (non necessariamente simmetrica come note @goenfawr ), è necessario almeno una chiave (due per la crittografia a chiave pubblica). È necessario generare la chiave, archiviarla in modo sicuro, proteggerla da corruzione o distruzione, recuperarla per l'uso, proteggerla mentre è in uso e sostituirla periodicamente.

Una parte significativa del problema è come proteggere la chiave mentre non è in uso. Se si cripta la chiave, è necessaria un'altra chiave per decrittografarla. Nel qual caso sei di nuovo dove hai iniziato. Altri metodi di protezione utilizzano hardware speciale, sistemi operativi sicuri o persino computer personalizzati con memoria e processori separati per i parametri di sicurezza. Tutte queste soluzioni richiedono costi aggiuntivi di formazione e supporto.

Confronta queste soluzioni con l'uso di un computer per la vendita al dettaglio, un sistema operativo per la vendita al dettaglio e una funzione di hash.

    
risposta data 10.08.2011 - 10:39
fonte
4

Una cosa da aggiungere alle risposte esistenti è che è possibile utilizzare la crittografia simmetrica (reversibile) per l'archiviazione dei segreti (incluse le password) ma è un po 'più complessa / costosa.

Un buon esempio di questo sono le reti ATM / Cash machine, che tradizionalmente utilizzavano la gestione delle chiavi simmetriche (sebbene si stiano trasferendo su una soluzione basata su PKI).

La chiave (no pun intended) per questo è che le chiavi di crittografia sono archiviate in una posizione attendibile, in questo caso un modulo di sicurezza hardware (HSM) e procedure rigorose relative al caricamento e alla gestione delle chiavi devono essere seguite, per garantire quelle chiavi rimangono segrete.

    
risposta data 10.08.2011 - 18:41
fonte
2

Dai un'occhiata alla pagina wiki di Ciphers. Sebbene ci siano molti cifrari sicuri, c'è sempre il rischio di perdere la chiave. L'uso di un hash unidirezionale evita questo rischio non avendo una chiave.

Un principio dell'ingegneria della sicurezza è ridurre al minimo le informazioni ottenibili dato che il sistema è compromesso.

    
risposta data 10.08.2011 - 03:57
fonte

Leggi altre domande sui tag