Salting in encryption (piuttosto che hashing)

1

Sono consapevole dei vantaggi dell'aggiunta di un sale ai valori con hash che utilizzano una funzione unidirezionale. L'aggiunta di sale a un valore che viene crittografato (utilizzando la crittografia simmetrica) è considerato una buona pratica?

Il sale (a differenza della chiave di crittografia) è probabile che venga memorizzato nella stessa origine dati dei dati crittografati. Mi chiedo se questo aggiunge un punto debole, piuttosto che migliorare la sicurezza (ad esempio: rendendo possibile decifrare la chiave di crittografia).

    
posta Guus 14.05.2013 - 13:47
fonte

3 risposte

9

Un sale è un valore casuale non ripetibile crittograficamente sicuro, aggiunto alla password prima dell'hashing it, rendendo inutili le tabelle arcobaleno e rendendo impossibile l'attacco di più di una password attaccando un hash.

Un vettore di inizializzazione (IV) è un valore casuale non ripetibile crittograficamente sicuro aggiunto come stato iniziale a un algoritmo di cifratura a blocchi dipendente da modalità di funzionamento , che impedisce al cifrario di produrre lo stesso testo cifrato per blocchi simili del testo in chiaro, quindi negando all'utente malintenzionato l'opportunità di dedurre le relazioni tra segmenti del messaggio crittografato.

Sia un salt che un IV non sono informazioni segrete , infatti, nella maggior parte dei casi l'IV viene trasportato con il messaggio stesso. Implementato correttamente, un IV non dovrebbe rendere più facile "crack" la crittografia. Al contrario, dovrebbe renderlo ancora più difficile. La sicurezza del sistema di cifratura dovrebbe dipendere dalla segretezza della chiave, e solo dalla segretezza della chiave, AKA Principio di Kerckhoffs :

That the security of a cipher system should depend on the key

Oh, inoltre, non implementare la tua crittografia e usarla in un ambiente di produzione, AKA Non essere un Dave .

    
risposta data 14.05.2013 - 14:12
fonte
3

Un sale non ha assolutamente alcun vantaggio per la crittografia. Se mai, potrebbe (anche se non dovrebbe) rendere la crittografia meno sicura. Se si scopre che è stato trovato un attacco in chiaro conosciuto (un attacco che consente di ottenere informazioni da un testo cifrato sulla chiave conoscendo parte del testo normale) quindi avere un valore pubblico crittografato renderebbe ogni messaggio debole a quel tipo di attacco.

Vale anche la pena di sottolineare che non si "usa l'hash con una funzione unidirezionale". Un hash È una funzione a senso unico. Il punto (un po 'semplificato) di un salt è complicare l'input in modo che un utente malintenzionato non possa pre-generare valori per password o valori comuni e semplicemente cercare il valore che ha inserito nell'hash, sfruttando efficacemente un attacco precedente contro attacchi futuri. Un sale lo rende in modo che lo sforzo debba essere eseguito per ogni attacco.

    
risposta data 14.05.2013 - 15:53
fonte
1

Sono consapevole dei vantaggi dell'aggiunta di un sale ai valori che sono sottoposti a hash usando una funzione a senso unico. Sta aggiungendo un sale ad un valore che è in corso crittografato (utilizzando la crittografia simmetrica) considerato come buona pratica?

Penso che il tuo approccio sia difettoso e indebolirà l'integrità del codice stesso. Aggiungendo il sale con il testo in chiaro che verrà crittografato, stiamo sottoponendo a un attacco di testo normale noto.

    
risposta data 14.05.2013 - 17:31
fonte

Leggi altre domande sui tag