Fa differenza sull'ordine Hashing e Crittografia in termini di sicurezza?

3

Sto implementando un programma di protezione password con java. Ho programmato un triplo DES per la crittografia e un SHA256 per l'hashing.

La mia domanda è che farebbe qualche differenza se prima ho cancellato i dati grezzi (password) e poi criptato, o prima criptare i dati (password) e poi cancellare i dati crittografati. Per lo più sono preoccupato, farebbe qualche seria differenza tra loro in termini di sicurezza.

Grazie

    
posta Ekin 13.03.2013 - 13:27
fonte

2 risposte

15

Non vuoi un hash ; vuoi un MAC .

La risposta scientifica: applica la crittografia MAC dopo , non prima. È noto come "encrypt-then-MAC" e ha molti vantaggi rispetto al fare le cose al contrario (ovvero "MAC-then-encrypt") o in parallelo ("MAC-and-encrypt"). Vedi questa domanda per i dettagli.

La risposta morale: non farlo. È difficile fare queste cose in sicurezza. Non ne sai abbastanza per farlo. Anche le persone con un dottorato di ricerca in crittografia ritengono di non sapere abbastanza per farlo. Quando una cosa del genere deve essere fatta, un crittografo produce un disegno provvisorio e lo sottopone ai suoi pari, che si arrampicano e cercano di romperlo per diversi anni . Solo i sopravvissuti sono considerati "apparentemente sicuri".

La risposta pratica: ci sono buone modalità di crittografia che combinano crittografia e MAC per te; questi schemi hanno sopravvissuto all'assalto dei crittografi infuriati. Vedi GCM e EAX .

    
risposta data 13.03.2013 - 13:41
fonte
3

Prendiamo tutti i possibili casi a cui riesco a pensare:

  • Se la password a cui ti riferisci è la password per decrittografare il vault, probabilmente non vuoi memorizzarla su disco. Non vi è alcun vantaggio nel crittografarlo e si desidera utilizzare una funzione di derivazione della chiave come PBKDF2 o bcrypt.
  • Se la password di cui si sta parlando è quella memorizzata nel Vault, l'hashing impedirà il recupero.
  • Se stai provando a verificare dati crittografici, non vuoi un semplice hash vecchio, vuoi un codice di autenticazione del messaggio e devi crittografare-then-mac . Un modo migliore sarebbe utilizzare una modalità di crittografia autenticata che esegue questo per te accanto alla crittografia, disponibile in tutte le buone librerie crittografiche vicino te.
risposta data 13.03.2013 - 13:41
fonte

Leggi altre domande sui tag