crittografia a chiave simmetrica rispetto all'hashing

5

Questo è un documento affascinante: top 100 password da violazione di Adobe

Ho una domanda su una parte di esso:

However, thanks to Adobe choosing symmetric key encryption over hashing, selecting ECB mode, and using the same key for every password, combined with a large number of known plaintexts and the generosity of users who flat-out gave us their password in their password hint, this is not preventing us from presenting you with this list of the top 100 passwords selected by Adobe users.

Quindi, in passato, abbiamo consentito agli sviluppatori di utilizzare la crittografia a chiave simmetrica anziché l'hashing della password, e qui visualizzano "utilizzando la stessa chiave per ogni password" come un problema separato, qual è il grosso problema con l'utilizzo della chiave simmetrica crittografia per memorizzare le password? Capisco che potrebbe esserci un successo nelle prestazioni perché l'hashing è stato progettato pensando alla velocità.

    
posta San Jacinto 06.11.2013 - 21:20
fonte

3 risposte

4

Tecnicamente, se l'hashing è veloce, questo è davvero peggio (o almeno così grave) come memorizzare le password in modo reversibile nel DB (a condizione che venga seguita una corretta gestione delle chiavi).

Il problema con l'uso della crittografia piuttosto che degli hash sicuri (computazionalmente costosi) è che possono essere invertiti. A volte ciò può essere necessario, ad esempio se è necessario utilizzare la password per accedere a un sistema di terze parti che non supporta un token di accesso specifico del sistema. Il problema, tuttavia, è che se la chiave di crittografia è compromessa, è quindi possibile decodificare tutte le password in un colpo solo.

In alternativa, una chiave derivata da password può essere utilizzata come chiave per la crittografia simmetrica di un valore che può essere convalidato e poiché non utilizza una chiave master in grado di decodificare le password (e molto probabilmente la password non è memorizzato in questo caso) è un uso corretto della crittografia simmetrica per la convalida della password.

Allo stesso modo, con un hash sicuro che è correttamente salato, non c'è un buon modo per attaccare i valori offline per cercare di determinare le password e nessun singolo punto di errore porta a rendere accessibili tutte le password.

Il sistema di Adobe, d'altra parte, non solo ha utilizzato la stessa chiave per tutte le password (il che significa che se quella chiave è stata compromessa, tutte le password sono immediatamente disponibili) ma non causa alcuna differenza tra le diverse istanze della stessa password codificata, quindi puoi dire a tutti gli utenti che hanno la stessa password. E 'reso ancora peggiore perché hanno suggerimenti per le password che danno via quali sono alcune di quelle password ripetute.

    
risposta data 06.11.2013 - 22:18
fonte
5

Cosa c'è di così importante nelle password? Non c'è modo di aggirarlo. Gli utenti riutilizzano le password. Accettarla. Come fornitore di servizi responsabile, devi comprenderlo e gestire le password dei tuoi clienti con cura.

Perché non memorizzare le password in testo semplice? Poiché le password vengono utilizzate per l'autenticazione e l'autenticazione basata su password non richiede la password in chiaro. Le password sono informazioni sensibili e devono essere tenute segrete.

Perché non memorizzare le password in un formato reversibile non in chiaro? Se un utente malintenzionato compromette il tuo sistema, avrà accesso alla logica di archiviazione della password e lui annullerà la manomissione della password che stai utilizzando. Questo rende le password in chiaro.

Perché non crittografare le password con una chiave simmetrica? Perché la logica di accesso della tua applicazione deve avere accesso a quella chiave, che crea problemi di gestione delle chiavi. In caso di violazione, è molto probabile che l'attaccante abbia accesso alla chiave. Ciò rende reversibili le password.

Perché non usare MD5 / SHA1? Perché sono super veloci. Super veloce per te significa super veloce affinchè l'attaccante si spezzi.

Quindi, ora che cosa? Hai hash sicuro le tue password utilizzando uno schema strong, non reversibile e lento come bcrypt . Non c'è alternativa per questo. Periodo.

Adobe ha optato per l'opzione di crittografia simmetrica, non solo quella, l'hanno implementata in modo errato utilizzando la BCE. Quindi hanno preso qualcosa di brutto e lo hanno peggiorato.

    
risposta data 06.11.2013 - 22:37
fonte
2

Non c'è niente di sbagliato con la memorizzazione delle password utilizzando la crittografia simmetrica. Tuttavia non riesco a pensare a nessuna ragione per cui Adobe debba recuperare la password in qualsiasi momento.

Il problema più grande è la gestione delle chiavi. Ciò che Adobe ha fatto è stato utilizzare 3DES con la modalità ECB e utilizzando la stessa chiave. La BCE è un problema poiché genererà lo stesso testo cifrato quando due utenti usano la stessa password. Quando si esegue l'hashing di una password o quando si utilizza CBC per la crittografia simmetrica, si utilizzerà o un / IV di sale che si assicurerà che ogni testo cifrato risultante sia diverso. Ciò significa che non otterrai mai lo stesso testo cifrato per la stessa password crittografata. È lo stesso problema di quando le persone usano un semplice algoritmo di hashing senza sale.

Un altro problema con la BCE è che, quando si ha abbastanza testo in chiaro, si potrebbe potenzialmente violare la chiave di crittografia eseguendo l'analisi usando testo in chiaro o testo cifrato (in teoria).

    
risposta data 06.11.2013 - 21:33
fonte

Leggi altre domande sui tag