Quando si utilizza AES e CBC, è necessario mantenere la IV segreta?

38

Se crittografo alcuni dati con un vettore di inizializzazione e chiave generato a caso, quindi memorizza tutte e tre le informazioni nella stessa riga della tabella; è necessario crittografare la IV e la chiave?

Struttura della tabella semplificata:

  • Dati crittografati
  • Chiave (crittografata utilizzando un secondo metodo)
  • IV (crittografato?)

Supponiamo che l'architettura e il metodo siano necessari: la spiegazione è lunga e noiosa.

    
posta Stu Pegg 10.07.2012 - 17:43
fonte

2 risposte

45

Da Wikipedia :

An initialization vector has different security requirements than a key, so the IV usually does not need to be secret. However, in most cases, it is important that an initialization vector is never reused under the same key. For CBC and CFB, reusing an IV leaks some information about the first block of plaintext, and about any common prefix shared by the two messages.

Non è necessario mantenere il segreto IV, ma deve essere casuale e unico.

    
risposta data 10.07.2012 - 18:02
fonte
8

Anche se nel tuo caso l'IV dovrebbe essere ok in chiaro nel DB, c'è una grave vulnerabilità se permetti all'utente di controllare il IV.

L'IV in decryption è usato (e usato) in XOR il primo blocco nell'ultimo testo in chiaro - quindi se un utente malintenzionato può controllare l'IV può controllare arbitrariamente il primo blocco di dati e il resto del testo in chiaro sopravviverà senza modifiche.

Se l'autore dell'attacco conosce il testo in chiaro originale del primo blocco, il problema viene nuovamente ingrandito in quanto l'utente malintenzionato può scegliere dati arbitrari per il primo blocco senza tentativi ed errori.

Questo è particolarmente importante nel caso in cui i dati crittografati vengano trasmessi attraverso i canali non trasmessi con IV, magari in un browser o un'app, ecc.

    
risposta data 20.01.2016 - 18:36
fonte

Leggi altre domande sui tag