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.