Perché IV non ha bisogno di essere segreto nella crittografia AES CBC?

18

Secondo Wikipedia , il vettore di inizializzazione (IV) non deve essere segreto, quando si utilizza la modalità operativa CBC. Ecco lo schema di crittografia CBC (anche da Wikipedia):

Che cosa succede se crittografo un file di testo in chiaro, in cui il primo blocco ha una struttura standard, nota, come un'intestazione?

Immaginiamo il seguente scenario:

Cifratura file.pnm utilizzando AES-CBC . Il file pnm ha una struttura di intestazione nota, ad esempio:

P6
1200 800
255

Inoltre, le dimensioni (1200 x 800) e la modalità colore (P6) possono essere indovinate dalle dimensioni del file crittografato.

Se entrambi IV e il primo blocco di testo normale sono noti, non compromette l'intera catena di CBC?

    
posta Martin Vegter 04.05.2016 - 12:21
fonte

6 risposte

32

Penso sia più facile suddividerlo nelle sue parti componenti e considerarle come entità separate: AES e CBC.

AES non "fondamentalmente consiste di XORing insieme pezzi del blocco" - è un affare molto più complicato. Ignorando per un momento gli interni di esso, AES è considerato sicuro in quanto senza conoscere la chiave, è praticamente impossibile recuperare il testo in chiaro o qualsiasi informazione sul testo in chiaro dato solo un blocco crittografato, o anche in situazioni in cui vengono fornite parti di il testo in chiaro e devi trovare il resto. Senza la chiave, AES potrebbe anche essere una funzione unidirezionale (e ci sono schemi MAC che si basano su questo!). Discutere i tecnicismi relativi alla sicurezza di AES e codici a blocchi simili è estremamente complicato e non è qualcosa che posso coprire in una risposta, ma basti dire che migliaia di crittografi l'hanno guardato per quasi due decenni e nessuno ha trovato nulla di remotamente pratico in termini di un attacco.

Lo schema che hai postato sopra descrive CBC. I codici a blocchi, come AES, mirano ad essere sicuri per crittografare un blocco con una chiave segreta. Il problema è che raramente vogliamo solo criptare un blocco, ma piuttosto un flusso di dati di lunghezza indeterminata. È qui che entrano in gioco le modalità di blocco, come CBC.

Le modalità di blocco mirano a rendere i cifrari sicuri per la crittografia di più blocchi con la stessa chiave. La modalità di blocco più semplice è BCE, che offre zero sicurezza in questo senso. La BCE comporta la crittografia indipendente di ciascun blocco con la stessa chiave, senza alcun dato alimentato tra i blocchi. Questa informazione perde in due modi: in primo luogo, se hai due blocchi di testo in chiaro identici, otterrai due blocchi di testo cifrato identici se usi la stessa chiave; in secondo luogo, otterrete due flussi di testo cifrato identici per due crittografie dello stesso messaggio con la stessa chiave. Questo è un problema poiché trapelano informazioni sul testo in chiaro.

CBC risolve questo problema introducendo un effetto "a cascata". Ogni blocco di testo in chiaro è xo'ed con il blocco di testo cifrato precedente, risultante in blocchi di testo in chiaro uguali in origine non più uguali alla fase di crittografia, quindi non produce più blocchi di testo cifrato uguali. Per il primo blocco di testo in chiaro, non esiste un blocco di testo cifrato precedente (non hai ancora crittografato nulla), ed è qui che entra in gioco l'IV. Considera, per un momento, cosa succederebbe se al posto di un IV usassimo solo gli zeri per il blocco -1 th (io..e il blocco di testo cifrato immaginario "prima" del primo blocco di testo in chiaro). Mentre l'effetto a cascata renderebbe uguali blocchi di testo in chiaro producono diversi blocchi di testo cifrato, lo stesso messaggio intero si sovrapporrà sempre nello stesso modo, risultando in un testo cifrato identico quando lo stesso messaggio completo viene crittografato più volte con la stessa chiave. Il IV risolve questo. Selezionando un IV univoco, non esistono due codici cifrati sempre uguali, indipendentemente dal fatto che il messaggio in chiaro crittografato sia uguale o diverso ogni volta.

Questo dovrebbe, si spera, aiutarti a capire perché l'IV non ha bisogno di essere segreto. Conoscendo la IV non si ottiene un aggressore da nessuna parte, perché l'IV è solo lì per garantire la non uguaglianza dei testi cifrati. La chiave segreta è ciò che protegge i dati effettivi.

Per enfatizzare ulteriormente questo aspetto, non hai nemmeno bisogno della IV per decriptare tutto tranne il primo blocco. Il processo di decodifica per CBC funziona al contrario: decrittografare un blocco utilizzando la chiave segreta, quindi xo il risultato con il blocco di testo cifrato precedente. Per tutti tranne il primo blocco, conoscete il precedente blocco di testo cifrato (avete il testo cifrato), quindi la decrittazione è solo un caso di conoscere la chiave. L'unico caso in cui è necessario l'IV per la decrittografia è il primo blocco crittografato, in cui il precedente blocco di testo cifrato è immaginario e sostituito con IV.

    
risposta data 04.05.2016 - 14:48
fonte
9

No, perché la chiave è segreta.

Il blocco "crittografia a cifrario" nel diagramma codifica i dati in base alla chiave. Lo XOR nel diagramma non fornisce la sicurezza, la crittografia lo fa. Lo XOR e l'IV servono solo per assicurare che lo stesso testo in chiaro venga crittografato come testo cifrato diverso per ogni blocco.

    
risposta data 04.05.2016 - 12:34
fonte
5

Tutti i moderni metodi di crittografia (AES, blowfish, ecc.) sono progettati per essere molto più sicuri di quanto sembri aspettarsi. Vediamo rapidamente alcuni attacchi a cui tali cifrari sono progettati per resistere.

Attacco di testo normale noto - In questo caso, supponiamo che l'autore dell'attacco abbia accesso a molti blocchi di testo normale insieme ai corrispondenti blocchi di testo cifrato crittografati con una determinata chiave K. Il suo obiettivo è trovare K.

Attacco di testo normale scelto - In questo caso, supponiamo che l'attaccante possa scegliere molti blocchi di testo in chiaro e ottenere i blocchi di testo cifrati corrispondenti cifrati sotto una determinata chiave K. Il suo obiettivo è trovare K.

Attacco al testo cifrato scelto - In questo caso, supponiamo che l'autore dell'attacco possa scegliere molti blocchi di testo cifrato per i quali ottiene i corrispondenti blocchi di testo normale decrittografati con una determinata chiave K. Il suo obiettivo è trovare K.

Attacco di testo crittografato adattato - In questo caso si presuppone che l'autore dell'attacco possa scegliere molti blocchi di testo cifrato per i quali ottiene i corrispondenti blocchi di testo in chiaro decrittografati con una determinata chiave K e quindi può ripetere questo processo con la sua nuova conoscenza . Il suo obiettivo è trovare K.

Se viene rilevato un attacco in uno di questi scenari che riesce a ottenere K per un cifrario moderno, tale cifra viene dichiarata interrotta e non verrà più utilizzata. In realtà i requisiti sono molto più severi. Se viene rilevato un attacco che può dimostrare che è possibile ottenere anche informazioni parziali su K, la sua parità è già un grosso problema. Oppure se riesci a dimostrare che non riesci a trovare la chiave K, ma che puoi fare molto meglio della forza bruta (anche 2 ^ 110 vs 2 ^ 126 di solito è considerata la pena di essere pubblicata) per cercarla, il cifrario verrebbe di solito dichiarato rotto .

Quindi, in conclusione, no, non si può ottenere la chiave di un cifrario solo perché si conosce un blocco di testo in chiaro ed è il corrispondente testo cifrato.

    
risposta data 04.05.2016 - 16:07
fonte
3

L'IV ha gli stessi requisiti di sicurezza dei blocchi crittografati.

Per far funzionare CBC, è necessario XOR i dati non crittografati nel blocco corrente con i dati crittografati dal blocco precedente. Poiché non esiste un blocco prima del primo blocco (quindi non è possibile ottenere un blocco crittografato) viene invece utilizzata una IV.

    
risposta data 04.05.2016 - 21:30
fonte
0

Raccontiamo una parabola! Ecco i partecipanti:

  1. Alice, il mittente
  2. Bob, il destinatario
  3. Eve, l'intercettatore
  4. Jake, l'assistente disperatamente inutile di Eva

Alice invia un messaggio crittografato a Bob. Eve intercetta il testo cifrato e sta cercando di decodificarlo. Per "aiutarla", Jake lancia una bella moneta 128 volte, scrive i suoi risultati, li codifica come un numero esadecimale e lo dà a Eve: 1eff4bb16388e2ee263eb5a8a2bf56b1 . Eve è perplessa per questo, ma Jake insiste sul fatto che questi risultati casuali delle monete ti aiuteranno a decifrare il messaggio di Alice.

Non credi che Jake sia completamente pazzo? I risultati dei 128 lanci di monete di Jake non hanno nulla a che fare con il testo in chiaro del messaggio che Alice ha inviato a Bob, o la chiave che lei ha usato per crittografarlo. Quindi Eve non può assolutamente imparare nulla del testo in chiaro del messaggio da parte di Jake's coin flip!

Ed è per questo che l'IV per la modalità CBC non ha bisogno di essere segreto. CBC richiede un random IV per ogni crittografia. Le IV sono quindi completamente non correlate ai plaintext o alle chiavi; quindi la conoscenza della IV non rivela informazioni sul testo in chiaro.

    
risposta data 17.02.2017 - 04:00
fonte
-4

Il vettore di inizializzazione utilizzato è un numero casuale chiamato anche nonce che, combinato con una chiave segreta, rende i dati originali completamente illeggibili. I dati al primo XOR con dati in chiaro lo randomizzano. La crittografia aggiuntiva delle chiavi segrete renderà ancora più difficile la lettura. Quindi, in sostanza, IV non deve necessariamente essere segreto poiché la crittografia con una chiave segreta fornisce la segretezza richiesta. Inoltre, i dati all'interno del file crittografato non possono essere indovinati in AES-CBC poiché vengono utilizzati in molti cicli di crittografia.

    
risposta data 04.05.2016 - 12:49
fonte

Leggi altre domande sui tag