Il ruolo dell'IV dipende molto dal sistema di crittografia, ad es. se si tratta di un codice di flusso o di un codice a blocchi e, in quest'ultimo caso, della modalità di funzionamento .
IV significa Vettore di inizializzazione : questo è un termine generico per il valore iniziale di qualsiasi processo di looping. Nella crittografia, utilizziamo il termine IV per designare un parametro che viene utilizzato all'inizio di una computazione, cambia spesso, ma non è segreto (altrimenti lo chiameremmo un chiave ).
In generale, riutilizzare una flebo è un peccato mortale, ma la quantità di sofferenza implicata da un riutilizzo IV può variare. Nel caso di un cifrario a blocchi in modalità CBC, il riutilizzo IV rivela immediatamente se due messaggi iniziano con la stessa sequenza di blocchi; e, più in generale, l'IV per CBC deve essere generato casualmente, in modo uniforme e imprevedibile, altrimenti sei aperto a Chosen Plaintext Attacks, come è stato dimostrato nel caso di SSL / TLS (dove è stato reso popolare sotto il nome "attacco BEAST").
Se si utilizza un cifrario a blocchi in modalità CTR o OFB, il riutilizzo IV è mortale (diventa il famigerato "doppio blocco") che porta a un facile recupero dei dati crittografati. Lo stesso vale per i codici di flusso che usano un IV. In modalità CFB il riutilizzo IV è un po 'meno completo nella sua devastazione, ma è comunque terribile.
Come regole generali:
- Un IV deve mai essere riutilizzato per una determinata chiave.
- Puoi farcela usando una IV fissa se (e solo se) non riutilizzi mai una chiave. Se per ogni singolo messaggio viene mai utilizzato ciascun valore chiave, è possibile utilizzare un IV fisso. Tuttavia, poiché le chiavi sono segrete mentre IV non lo è, cambiare la IV per ogni messaggio è considerato più semplice della modifica della chiave per ogni messaggio (puoi trasmettere l'IV includendolo in un'intestazione di file non criptata, per esempio).
- La maggior parte dei modelli di attacco che rendono desiderabile la crittografia consente anche alterazioni dannose, quindi è anche necessario verificare l'integrità. Combinare l'integrità e la crittografia non è così facile come sembra; il modo corretto consiste nell'utilizzare una modalità di crittografia che fa entrambe le cose, il che, in pratica, significa GCM . GCM ha i propri requisiti su IV, vale a dire che una IV non deve mai essere riutilizzata, e che è importante .
- Tutto ciò che gestisce i numeri delle carte di credito è probabile che rientri nell'ambito PCI-DSS , e se poni la domanda hai chiesto, quindi è probabile che il tuo sistema non rispetti affatto PCI-DSS, a quel punto sarebbe più saggio togliere le mani dalla tastiera e ripensare alle tue scelte commerciali.