È sicuro scrivere il sale E / O l'IV all'inizio di un file crittografato?

16

Voglio crittografare un file con AES in modalità CBC (forse un'altra modalità è migliore per la crittografia dei file ... Non lo so, ma i suggerimenti sono ben accetti!).

Quello che faccio di solito è che scrivo prima alcuni dati casuali (256 bit, solo per infangare le acque), poi il mio sale e il mio IV (che sono entrambi uuid4 ... o generati da un PRNG sicuro) al inizio del file crittografato e, quindi, dei blocchi crittografati.

Mi chiedo se quella soluzione sia meno sicura di un'altra? Ad ogni modo, davvero non so come potrei fare altrimenti!

    
posta SuperPython 20.01.2014 - 14:10
fonte

3 risposte

38

I sali e IV non sono la stessa cosa; i sali sono per l'hashing della password, IV per l'avvio di alcune modalità di crittografia. Né è destinato a essere segreto, però; altrimenti li chiameremmo "chiavi". È sicuro mettere il IV e / o il sale nelle intestazioni dei file.

L'aggiunta di "pochi dati casuali (256 bit, solo per infangare le acque)" è l'equivalente del computer di sacrificare un pollo per propiziare gli dei. Se ci vogliono questi rituali per farti sentire bene, allora perché no? ma credere che tutto cambi alla tua vera sicurezza sarebbe un po 'ingenuo.

La modalità CBC richiede un IV casuale e imprevedibile; è un requisito difficile. L'utilizzo di un UUID è pericoloso in diversi modi:

  • Solo l'UUID "v4" utilizza un PRNG.
  • Nessuno garantisce che il PRNG utilizzato per UUID v4 sia crittograficamente strong.
  • Anche se è strong, ci sono ancora sei bit fissi nell'UUID (quelli che dicono "questo è un UUID v4"); solo 122 bit sono casuali.

CBC non è più la migliore modalità in classe; abbiamo trovato di meglio In particolare:

  • CBC ha requisiti rigorosi sulla generazione di IV ( Chosen-Plaintext Attacks ha dimostrato di essere particolarmente efficace contro i poveri Generazione IV).
  • CBC ha bisogno di padding e la gestione del padding ha dimostrato di essere delicata (la decrittografia può trasformarsi in un "padding oracle" se fatto in modo improprio).
  • CBC non garantisce l'integrità. Di solito, quando è necessario crittografare (per riservatezza), è anche necessario rilevare in modo affidabile le alterazioni ostili. Per questo, hai bisogno di un MAC . L'assemblaggio di un MAC e la crittografia è difficile .

Le nuove modalità risolvono questi problemi, tollerando una semplice IV (un contatore non ripetibile è sufficiente), non avendo bisogno di padding e avendo un MAC integrato dove l'integrazione è stata fatta adeguatamente. Vedi in particolare GCM e EAX .

    
risposta data 20.01.2014 - 15:09
fonte
4

Per rispondere alla tua domanda: sì, è perfettamente sicuro scrivere la IV all'inizio del testo cifrato.

Non sono sicuro di ciò a cui ti riferisci quando parli di "sale" qui: in teoria, "sale" è un valore casuale che è mescolato con il valore di testo chiaro prima di passarlo attraverso un modo funzione di hash. Il motivo per cui esiste è assicurarsi che lo stesso input non produca lo stesso output per difendersi dagli attacchi di compleanno e dalle tabelle hash calcolate.

Nel caso della crittografia, l'IV della tua modalità operativa dovrebbe fornire la stessa funzionalità.

Per quanto riguarda la modalità da selezionare, dipende molto da quali sono le tue esigenze: controlla questa risposta e questa pagina che stabiliscono diverse modalità operative e i loro vantaggi / svantaggi.

Se non conosci i requisiti esatti per i dati finali, dovresti scegliere la modalità con più funzioni (CWC o OCM, probabilmente)

    
risposta data 20.01.2014 - 14:59
fonte
3

Un hash crittografato e non criptato, in teoria, non dovrebbe fornire alcun suggerimento sul contenuto del messaggio, purché il messaggio sia unico. Ma quando un intercettatore sospetta che il messaggio sia uno di un numero finito di messaggi noti, può confrontare l'hash con gli hash di questi messaggi noti e scoprire che è uno di questi.

Esempio: Facciamo pressioni sul fatto che avrei ottenuto una copia illegale di un film protetto da copyright, e ora vorrei ridistribuirlo a te. Il proprietario del copyright mi sta sospettando di pirateria cinematografica e sta quindi intercettando la nostra connessione. Sono a conoscenza di tutte le copie illegali che circolano su Internet e li hanno ottenuti per calcolare i loro hash.

Quando utilizzo il tuo schema di crittografia, possono vedere gli hash dei file che invio e confrontarli con gli hash dei file di cui hanno copie. Quando scoprono che uno dei miei messaggi corrisponde a uno dei loro hash, hanno dimostrato con estrema certezza che ho distribuito i loro contenuti protetti da copyright anche senza dover decifrare la crittografia.

Aggiungere un sale non aiuta molto, perché quando il sale non è criptato, possono semplicemente ricalcolare gli hash dei loro file con il sale di ogni messaggio.

Aggiungere dati senza senso a "infangare l'acqua" prima che l'hash non aggiunga alcuna sicurezza, perché è solo sicurezza per oscurità. Non ci vorrà molto perché un criptoanalista si accorga che i dati possono essere ignorati.

Conclusione: è meglio crittografare l'hash insieme al contenuto.

    
risposta data 20.01.2014 - 14:50
fonte

Leggi altre domande sui tag