Costretto a utilizzare un IV statico (AES)

26

Abbiamo dovuto estendere il nostro sito Web per comunicare le credenziali dell'utente a un sito Web di fornitori (nella stringa di query) utilizzando AES con una chiave a 256 bit, tuttavia stanno utilizzando un IV statico durante la decrittografia delle informazioni.

Ho avvisato che l'IV non dovrebbe essere statico e che non è nei nostri standard farlo, ma se cambiano la loro fine dovremmo incorrere in [grandi] costi quindi abbiamo accettato di accettarlo come rischio di sicurezza e utilizzare lo stesso IV (con molta mia estrema frustrazione).

Quello che volevo sapere è, quanto una minaccia alla sicurezza è questa? Devo essere in grado di comunicarlo efficacemente al management in modo che sappiano esattamente a cosa stanno accettando.

Stiamo anche usando lo stesso KEY per tutto.

Grazie

    
posta Mantorok 10.12.2010 - 16:44
fonte

3 risposte

35

Dipende dalla modalità di concatenazione. AES è un codice a blocchi, viene applicato su blocchi di 16 byte (esattamente). La modalità concatenamento definisce come i dati di input diventano diversi di tali blocchi e come vengono quindi assemblati i blocchi di output. Molte modalità di concatenamento devono funzionare con una sorta di "valore iniziale", che non è segreto, ma dovrebbe cambiare per ogni messaggio: questo è il IV.

Riutilizzare lo stesso IV è mortale se si utilizza la modalità concatenamento CTR. In modalità CTR, AES viene utilizzato su una sequenza di valori contatore successivi (che inizia con IV) e la sequenza risultante di blocchi crittografati viene combinata (mediante XOR bit a bit) con i dati da crittografare (o decrittografare). Se si utilizza la stessa IV, si ottiene la stessa sequenza, che è il famigerato "pad a due tempi". Fondamentalmente, con XORing di due stringhe criptate, ottieni lo XOR dei due dati in chiaro. Questo si apre a un sacco di attacchi, e in pratica tutto è rotto.

Le cose sono meno terribili se usi CBC. In CBC, i dati stessi sono suddivisi in blocchi da 16 byte. Quando un blocco deve essere crittografato, viene prima eseguito XOR con il precedente blocco crittografato . L'IV ha il ruolo del blocco "-1" (il precedente blocco crittografato per il primo blocco). La conseguenza principale del riutilizzo della IV è che se due messaggi iniziano con la stessa sequenza di byte, i messaggi crittografati saranno uguali per alcuni blocchi. Questo perde dati e apre la possibilità di alcuni attacchi.

Per riassumere, non farlo. Usando la stessa IV con la stessa chiave, mai e poi mai sconfigge l'intero scopo della IV, il motivo per cui una modalità di concatenazione con IV è stata utilizzata in primo luogo.

    
risposta data 10.12.2010 - 17:54
fonte
7

Usare lo stesso IV per tutti i dati equivale a non usare affatto un IV - il primo blocco di testo cifrato sarà identico per un testo in chiaro identico. Sarei interessato a sapere perché il tuo fornitore vuole usare un IV costante, ma questo è oltre il punto. Il punto è che il sistema è suscettibile in questo modo: se un utente malintenzionato può impostare le proprie credenziali e osservare il testo cifrato generato, può confrontarlo con altre credenziali crittografate per trovare informazioni sulla chiave.

    
risposta data 10.12.2010 - 17:46
fonte
2

Non sono un criptato, ma la mia comprensione è che se l'IV non cambia e lo stesso valore viene nuovamente crittografato, l'output sarebbe lo stesso. Pertanto, sarebbe possibile dedurre il contenuto cercando valori ripetitivi, come ad esempio una credenziale che viene passata con ogni richiesta.

Ancora una volta, non sono un criptato, quindi potrei sbagliarmi.

    
risposta data 10.12.2010 - 17:32
fonte

Leggi altre domande sui tag