Loading
Note di Apprendimento
Study Reminders
Support
Text Version

Altri approcci per la Crittografia autenticata

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Fondamenti di Cryptography Dr. Ashish Choudhury Department of Computer Science International Institute of Information Technology – Bangalore Lecture -35 Comporre CPA Secure Cipher con un Secure MAC Part II (Fare Slide Time: 00.28) Benvenuti a questa lezione. Così il piano per questa lezione è il seguente. In questa lezione proseguiremo la nostra discussione su come comporre un codice simmetrico sicuro CPA e un MAC sicuro per ottenere uno schema di crittografia autenticato. Così avevamo già visto un approccio nell'ultima lezione cioè la cripta poi l'approccio autenticato che vi dà sempre la garanzia che lo schema composto sia un cifrario di crittografia autenticato. In questa lezione discuteremo altri 2 approcci ovvero l'approccio autenticato poi crittografato e l'approccio crittografato e autenticato. (Riferimento Slide Time: 01 :00) Quindi iniziamo con l'approccio crittografato e autenticato. Così ti viene fornita una crittografia chiave simmetrica sicura CPA e ti viene dato un forte MAC sicuro CMA ed è così che comporiamo i 2 primitivi usando l'approccio crittografato e autenticato. Così l'algoritmo di generazione chiave dello schema composto sceglierà in modo indipendente un tasto per istanziare il componente sicuro CPA e per aver istanziato il componente MAC. E la chiave complessiva per lo schema composto sarà la coppia (ke, km). Ora per cifrare un messaggio come per questo approccio crittografato e autenticato come suggerisce il nome suggeriamo innanzitutto di crittografare un messaggio usando la parte ke della chiave e ottenere il testo cifrato c e poi ci stiamo autenticando. Quindi stiamo autenticando in modo indipendente il messaggio m e calcola il tag come per l'algoritmo di generazione del tag. E la chiave che utilizziamo per il calcolo del tag è la parte km della chiave e il testo di cifratura complessivo che otteniamo come per lo schema composto sarà c seguito da t, a destra. Quindi questo è diverso da criptare poi l'approccio autenticato. Nella cripta poi l'autenticazione dell'approccio al tag è stata calcolata sul testo di cifratura, ma qui in questo approccio il tag viene calcolato sul testo di pianura stesso. E ora si può immaginare che la decodifica avvenga analogamente si prenda il testo di cifratura che lo si parta come composto da due parti una parte c e una t. Si verifica innanzitutto, si decodifica per la prima volta la parte c del testo di cifratura utilizzando la parte ke del tasto e recupera il testo del piano m e poi si verifica se il tag parte t del testo di cifratura è un cartellino legittimo sul partente recuperato m se così si accetta il recuperato m altrimenti si rifiuta il m recuperato. Ecco quindi un algoritmo di decodifica corrispondente. (Riferimento Slide Time: 03.01) Ora si desidera analizzare la sicurezza di questo approccio. Si scopre che se componiamo la crittografia simmetrica sicura CPA e un MAC sicuro con questo approccio allora non è necessario portare sempre un cifrario di crittografia autenticato. Dipende dal sottostante CPA protetto da instanziamento e dall'istanziazione sottostante del tuo MAC che significa genericamente non è garantito che questo modo di comporre i 2 primitivi porti sempre a un cifrario di crittografia autenticato e il problema è il seguente. Immagina di avere un codice di autenticazione del messaggio in cui l'algoritmo di generazione del tag è deterministico. Così avevamo visto durante la nostra discussione sul codice di autenticazione del messaggio che per quanto riguarda la sicurezza del codice di autenticazione del messaggio non è necessario che il proprio codice di autenticazione del messaggio abbia un algoritmo di generazione di tag randomizzato. Anche se l'algoritmo di generazione del tag è deterministico possiamo raggiungere la sicurezza. Quindi ora immaginate di aver istanziato questo approccio crittografato e autenticato utilizzando MAC il cui algoritmo di generazione di tag è deterministico. Se questo è il caso allora una cifratura di un testo semplice m con chiave ke, km come per lo schema composto produrrà sempre un testo di cifratura dove la parte t del testo di cifratura rimarrà la stessa, proprio perché se vedete la casella di crittografia qui per lo schema composto, anche se il mio processo di crittografia sottostante è CPA sicuro la parte c del testo di cifratura per lo stesso messaggio m giusto sarà diverso perché questo sta arrivando a causa del fatto che il mio sottostante schema di sicurezza CPA sarà randomizzato. Quindi la parte c della crittografia dello stesso m di nuovo e di nuovo sotto la stessa chiave produrrà una parte c diversa per il testo di cifratura complessivo. Ecco perché lo denuncero come *, ma la parte t e cioè il tag parte del testo di cifratura che sto per ottenere in questo schema composto per lo stesso messaggio m sotto la stessa chiave k sarà lo stesso che mi darà sempre lo stesso tag cioè t right e se è così è molto facile per qualsiasi avversario distinguere una cifratura del messaggio m0 da una crittografia del messaggio m1 come per questo schema composto. E questo è il difetto maggiore in questo approccio di combinare uno schema sicuro CPA con un codice di autenticazione dei messaggi sicuro non è necessariamente garantito che lo schema composto sarà sempre un cifrario di crittografia di autenticazione. Dipende dalla tua istanziazione sottostante del MAC se è deterministica o non deterministica ed è per questo che questo approccio non è generalmente consigliato. Perché siamo interessati ad un approccio che porti sempre a un cifrario di crittografia autenticato indipendentemente dal fatto che indipendentemente dall'istanziazione del sottostante gadget CPA e dal gadget MAC sottostante. (Riferimento Slide Time: 06.02) Quindi ora discutiamo del terzo approccio utilizzando il quale possiamo comporre un sistema sicuro CPA e un codice di autenticazione dei messaggi questo approccio è chiamato come l'autentica allora cripta approccio. Così ancora siamo di nuovo due primitivi un CPA sicuro primitivo e un codice di autenticazione del messaggio primitivo e lo schema composto è il seguente. Così l'algoritmo di generazione chiave uscirà in chiave per la CPA sicura primitiva in modo indipendente. E la chiave per il codice di autenticazione dei messaggi in modo indipendente e la chiave complessiva sarà ke e km poi ora come suggerisce il nome per criptare il messaggio quello che facciamo è autenticare per la prima volta il messaggio. Così autenticando il testo di pianura utilizziamo il km chiave dal tasto complessivo e compila il tag e ora una volta che il tag viene ottenuto sia il messaggio sia il tag sono combinati sono concatenati, e poi si considera come il nuovo testo di pianura e crittografato usando la parte ke della chiave complessiva e il testo di cifratura si ottiene e il testo di cifratura complessivo che otteniamo che dal schema composto sia considerato il c ed è per questo che il nome autenticato poi codifica. Stiamo prima autenticando il messaggio e trattandolo come la parte del testo semplice accozzandolo al testo di pianura. E poi il testo di pianura accostato e il tag è crittografato come per il sottostante schema protetto CPA per ottenere il testo di cifratura complessivo dello schema composto e si può pensare l'operazione di decodifica analogamente, si ha un testo di cifratura per decodificare ciò che si fa è prima decodificare il testo di cifratura come per l'algoritmo di decodifica del sottostante schema di sicurezza CPA e l'output risultante lo si analizza come 2 componenti la parte di messaggio e poi si verifica se la parte t dell'output recuperato è effettivamente un tag valido sulla parte recuperata se è così quindi accettare la parte m altrimenti si rifiuta la parte m e bot output che è il corrispondente algoritmo di decodifica. (Riferimento Slide Time: 08 :14) Quindi ora vogliamo analizzare che è questo approccio di comporre lo schema sicuro CPA e un codice di autenticazione dei messaggi è sempre quello di portare a un cifrario di crittografia autenticato indipendentemente dall'istanziazione sottostante dello schema sicuro CPA e all'instanziamento della componente MAC sottostante e si scopre che la risposta è no. Questo approccio non ha sempre bisogno di garantirti un cifrario di crittografia autenticato. In effetti quello che stiamo per mostrare è che ci accorgiamo che la modalità CBC di crittografia per crittografare il messaggio arbitrario arbitrario quando si compone con qualsiasi MAC sicuro come per questo approccio cioè autenticarsi allora crittografare l'approccio non deve darti un cifrario di crittografia autenticato. (Riferirsi Slide Time: 09.00) Quindi basta ricordare qual è esattamente la modalità CBC di crittografia che non abbiamo formalmente dimostrato che sia la CPA sicura, ma c'è una prova ben nota che effettivamente la modalità CBC di crittografia è una modalità di crittografia sicura CPA. Quindi nella modalità CBC di crittografia ci viene data una permutazione casuale pseudo casuale e qui sto ipotizzando che una lunghezza chiave sia n bit e la lunghezza del blocco è L byte. E ci sono 2 modi con cui la modalità CBC di codifica funziona a seconda che il numero di byte nel testo di pianura che si desidera crittografare sia un multiplo di L o meno. Se si tratta di un multiplo di L poi sostanzialmente si divide il proprio messaggio in diversi blocchi di L byte ed ecco come si fa il calcolo del testo di cifratura. Si inizia con un IV casuale e poi si fa la colorazione. Quel casuale IV è XORed con il primo blocco del messaggio e poi l'output è considerato l'input di blocco per il primo richiamo del tuo F e che è un primo blocco di testo di cifratura e che il primo blocco di testo è xor con il prossimo blocco del messaggio e che viene considerato come l'input per la seconda istanza di F e l'output è il secondo blocco di testo e così via ed è per questo che il nome che colorano qui codificano qui il blocco di testo. (Riferimento Slide Time: 10.18) D'altra parte, se il messaggio che si desidera crittografare se il numero di byte non è un multiplo di L allora è necessario fare qualche imbotto qui e abbiamo discusso di uno degli imbottiti popolari cioè PKCS versione 5 che è un riempimento altamente popolare usato praticamente e idea di questo riempimento è il seguente. Immaginate quindi di lasciare che b sia il numero di byte che si desidera accodare all'ultimo blocco del testo della pianura per garantire che il numero di byte, e il messaggio imbottita sia un multiplo di L. Così ciò che facciamo è una volta che identifichiamo il valore di b aggiungiamo o riempiamo quei tanti byte all'ultimo blocco di messaggi e ognuno di quei byte rappresenta il valore b e una volta che ora abbiamo il messaggio imbottiti abbiamo compatto la crittografia come per la consueta modalità CBC. Per fare la decodifica eseguiamo la decodifica come per la consueta modalità CBC di decodifica e ora dobbiamo rimuovere l'imbottizione. Per rimuovere l'imbotto che facciamo ci prendiamo l'ultimo blocco del messaggio recuperato in questo esempio diciamo m2 e prendiamo l'ultimo byte e leggiamo l'ultimo byte e leggiamo il valore b e poi vediamo se tutti gli ultimi b byte rappresentano il valore b o meno; se invece la risposta è sì allora semplicemente eliminiamo quei byte perché ora sappiamo che sono i byte imbottiti e prendono la cosa rimanente come il testo di pianura recuperata. considerando che nell'ultimo b se uno qualsiasi dell'ultimo byte b non rappresenta il valore b allora noi output l'algoritmo di decodifica outmette male imbottiti. Si potrebbe quindi interrogarsi sul fatto che il numero di byte che abbiamo bisogno di pad potrebbe essere compreso nell'intervallo da 0 a L – 1, 0 perché potrebbe il caso che il numero di byte e il messaggio siano già un multiplo di L in tal caso non abbiamo dovuto aggiungere nulla. E L – 1 perché potrebbe essere il caso che l'ultimo blocco del messaggio sia appena 1 byte in cui è necessario aggiungere un riempimento di L – 1 bytes, ma non è così perché abbiamo bisogno di un riempimento invertibile o di un imbottibile ambiguo per garantire che la decodifica avvenga in modo corretto e per garantire che il numero effettivo di byte che abbiamo bisogno di pad debba essere compreso nell'intervallo da 1 a L. Ciò significa che se non abbiamo bisogno di pad di tutto allora per indicarlo al destinatario in modo non ambiguo abbiamo effettivamente bisogno di aggiungere un blocco fittizio composto da L numero di byte tutti che rappresentano il numero intero L. Ecco perché la gamma di b non è nell'intervallo da 0 a L – 1, ma piuttosto è nella gamma da 1 a L. (Fare Slide Time: 12.59) Quindi ora quello che stiamo per discutere è che la modalità CBC di crittografia non è CCA sicura e per scopi dimostrativi sto considerando un'istanza in cui il mittente ha il messaggio dove il primo blocco di dimensioni n bit e il secondo blocco non è una dimensione n bit come un mittente ha fatto un riempimento e quindi ha imbotto la paggiunta richiesta qui e ha ora un messaggio imbottito composto da 2 blocchi. E codifica il messaggio imbottito come per la modalità CBC. Il blocco di testo risultante è c0 c1, c2 e io chiamo quest' ultimo blocco del messaggio ovvero il blocco con l'imbottizione come 2 e ricordati che il modo in cui un ricevitore sta andando a eseguire la decodifica del testo di cifratura c0, c1, c2 è il seguente: per recuperare il blocco 2 sta andando a compattare l'inverso della funzione pseudo funzione casuale o pseudo permutazione casuale con la chiave k sull'input c2. E qualunque cosa venga fuori come l'esito che sta per xor con il testo di cifratura blocco c1 e che gli darà 2 diritto e avversario è anche a conoscenza di questo processo di decodifica. Quello che avversario non è sapere in questo caso è il valore della chiave k. Ora l'interessante osservazione qui è che qualsiasi modifica apportata in questo primo blocco di testo di cifratura ovvero c1 si tradurrà nella corrispondente modifica nel blocco recuperato 2 dopo la decodifica del CBC. Allora fatemi dimostrare quello che intendo dire che così immaginate che il mittente abbia inviato questo sms c0, c1, c2 e immaginate che l'avversario abbia modificato il testo di cifratura a un altro testo di cifratura dove solo il testo di cifratura blocco c1 è cambiato in c1 dove il c1 non è altro che il xor dell'effettivo c1 con qualche valore dove è noto all'avversario. Ora quando il ricevitore riceve questo testo di cifratura modificato e se cerca di decodificare e recuperare il secondo blocco dei messaggi imbottiti allora si sta andando a tradursi in quello che il ricevitore effettivo dovrebbe ottenere in quello che il ricevitore dovrebbe recuperare indietro xor con perché ora invece di c1 il ricevitore effettuerà una decodifica utilizzando c1 xor con perché il mio primo blocco di testo è ora modificato in c1. Dove c1 è xor della [ lambda] con effettiva c1 così che significa che il recuperato 2 sarà l'effettivo 2 xor con e l'idea di questa insicurezza di CBC della crittografia è che da quando l'avversario sa questo fatto che qualsiasi cambiamento che fa in c1 si tradurrà nell'effetto corrispondente mentre lo decodifica 2 all'avversario finale può utilizzare questo fatto rilasciando un testo di codifica modificato. E sottoporlo come query di oracolo modificato e basato sulla risposta della decodifica in base alla risposta che vede dall'avversario del servizio di decriptazione può scoprire qualsiasi byte specifico di m che l'avversario è interessato. (Riferimento Slide Time: 16.56) E questo attacco è chiamato come un attacco di oracolo imbottita perché si chiama oracolo che attacca il nome sarà chiaro presto. Immaginate quindi uno scenario in cui ora abbiamo un mittente e un destinatario e diciamo che il mittente ha un messaggio composto da 2 blocchi e dice che ha imbotto il secondo blocco con il necessario numero di byte come per la modalità CBC di crittografia e il riempimento PKCS. E il testo di cifratura risultante è stato comunicato al destinatario e l'avversario non conosce il valore della chiave, non conosce il contenuto di blocco m1 e m2, ma lo sa o conosce il rapporto che come esattamente la decodifica avverrà alla fine ricevente. Ora ciò che questo avversario fa è intercettato questo testo di cifratura e produce un nuovo testo di cifratura sostituendo il primo blocco di testo di cifratura con un altro testo di cifratura blocco c1, dove c1 è diverso da c1 solo nel primo byte. E attende di vedere la risposta del destinatario cioè attende di vedere qual è esattamente l'uscita dell'algoritmo di decodifica al termine ricevente e questo può accadere nel mondo reale proprio perché il destinatario sta pensando che il testo di cifratura c0, c1, c2 è arrivato dal mittente e sta andando a decriptare quel testo di cifratura come per l'algoritmo di decodifica CBC e a seconda che l'imbotto sia corretto o meno, accetterà il messaggio se l'imbotto è corretto o si sta andando ad emettere un messaggio di riempimento errato. Così che l'output dal lato ricevente possa essere ora osservato da quell' aggressore. Quindi quello che l'aggressore fa è se vede che la risposta dall'algoritmo di decodifica del destinatario è pessima, poi dà un'indicazione all'avversario che il valore del numero di byte che sono stati imbottiti è L e questo perché il mal di riempimento si verificherà solo quando il ricevitore esegue la decodifica, l'ultimo byte che ottiene nel m2 recuperato ha il valore L. E come per l'algoritmo di decodifica il ricevitore avrebbe superato tutti i byte L nel blocco m2 recuperato e avrebbe controllato se tutti rappresentano il valore L o meno, ma quello che l'avversario ha fatto è che ha apportato modifiche nella primo byte del primo blocco di testo che avrebbe effettivamente cambiato il primo byte del secondo blocco recuperato che non sarebbe uguale al valore L. E poi solo l'algoritmo di decriptazione avrebbe gettato il messaggio di errore imbottiti che significa che il messaggio di errore di riempimento sta arrivando come risposta dal lato ricevente allora che dà un'implicazione all'avversario che cosa esattamente è il valore del numero di byte imbottiti e che si tratta di una violazione della sicurezza perché se a tutta la modalità CBC sarebbe stata sicura, allora anche la quantità di riempimento che è stato fatto da il mittente avrebbe dovuto essere nascosto dall'avversario, ma ora si può chiaramente vedere qui un attacco con cui l'avversario solo ottenendo l'accesso al servizio di oracolo di decodifica può identificare qual è esattamente il valore del numero di byte che sono stati imbottiti e questo significa anche che questo attacco è chiamato come l'attacco dell'oracolo. Perché solo modificando i byte nel primo blocco di testo di cifratura e vedere la risposta dell'avversario del destinatario si sta praticamente facendo sapere se che tipo di imbotto abbia fatto se l'imbotto soddisfa qualche relazione o meno ed è per questo che il nome che imbotta l'attacco dell'oracolo, l'avversario sta ottenendo l'accesso ad una specie di oracolo imbottato qui. Allo stesso modo quello che potrebbe fare questo avversario potrebbe produrre un altro testo di cifratura modificato dove invece di cambiare il primo byte sta ora cambiando il secondo byte del primo blocco di testo e attende di vedere la risposta del destinatario. Ancora se il brutto messaggio di errore di riempimento esce dal lato ricevente allora che dà indicazioni all'avversario che la quantità di byte che sono state imbottite è L – 1.Because dato che l'avversario sta cambiando il secondo byte di c1 che di fatto cambierà il secondo byte del blocco m2 recuperato e se l'errore di riempimento arriverà arriverà solo perché il valore di b è L – 1 in cui il ricevitore avrebbe previsto tutti i byte L-1 del recupero m2 per rappresentare il valore L – 1 giusto ma che non succederà ma perché il secondo byte del m2 recuperato è già cambiato al fine della decodifica. Quindi se a tutto il brutto messaggio di errore di riempimento arriva qui allora che dà un'indicazione all'avversario che il valore di b è L – 1 e non solo, l'avversario può infatti continuare a inoltrare un testo di cifratura modificato come questo supponiamo che sottopone un altro testo di cifratura modificato in cui cambia solo l'ultima parte di c1 e di nuovo se la risposta dal lato ricevente è pessima poi dà un'indicazione all'avversario che il valore di b = 1. Quindi quello che in sostanza ora il riassunto è che l'avversario può preparare il numero L di cifratura modificato dove nel primo testo di codifica modificato il primo byte viene modificato e il secondo testo di codifica modificato e il secondo byte di c1 modificato e il terzo testo di codifica modificato il terzo byte di c1 è cambiato e così via e basta vedere che corrispondente a quale del testo di codifica modificato il ricevitore sta inviando un brutto messaggio di riempimento e quando non sta inviando un brutto messaggio di riempimento. Così si scopre che il byte di sinistra più modificato per cui l'errore di riempimento viene ricevuto dal lato ricevente o dal lato ricevente rivela il valore di b ovvero il valore di byte imbottiti e che di per sé è una breccia di sicurezza qui a destra. (Riferimento Slide Time: 22 :59) Quindi ora quello che stiamo per mostrare è che non solo gli avversari possono imparare la quantità di byte che è stato imbottita dal mittente. Può anche imparare qualsiasi byte di messaggio specifico in cui l'avversario è interessato. Immaginate quindi che l'avversario abbia già imparato il valore del valore di b ovvero il numero di byte che sono stati imbottiti e ora vuole imparare l'ultimo byte del messaggio che è giusto ora sconosciuto per l'aggressore. E ancora un'idea qui è lo stesso avversario continuerà a giocare con i byte specifici del primo blocco di testo di cifratura e presenterà il testo di cifratura modificato al destinatario che effettivamente significa che sta cercando di ottenere il servizio di oracolo di decodifica e basato sulla risposta che vede dal destinatario se è stato emesso un errore o non impara qualche relazione tra byte sconosciuto B e il valore di b ora noto all'aggressore. E in base a quel rapporto può recuperare completamente il contenuto del valore byte sconosciuto B. Così ecco come viene eseguito. Quindi quello che un avversario non è che prepara il blocco modificato che io denota come io e ciò che sta accadendo in questo blocco modificato è che un ultimo b byte rappresenta una stringa binaria corrispondente alla xor del valore b e b + 1. Ecco allora qual è il contenuto binario degli ultimi b byte. E il byte b + TSI dall'ultimo qui rappresenta il valore i, i in numero intero. Ecco allora qual è il blocco modificato i cui l'avversario ha calcolato e ora quello che fa è invece di inoltrare il testo di codifica reale c0, c1, c2 al destinatario, inoltra il testo di codifica modificato al destinatario per conto del mittente dove nel testo di cifratura modificato il primo blocco di testo è un xor dell'esistente c1 e i. E ora se si ricorda la modalità di decodifica avviene al termine ricevente per questo testo di cifratura modificato; nel blocco m2 recuperato gli ultimi b byte avranno ora il valore b + 1 mentre il b + 1 ° byte avrà il contenuto B cioè il byte xor sconosciuto con i a causa del fatto che il m2 recuperato sarebbe stato calcolato da questa operazione proprio e ora dopo il recupero di questo blocco m2 quello che il ricevitore sta andando a fare è parso l'ultimo contenuto di byte che è b + 1. Quindi penserà che come se il mittente abbia imbotto b + 1 numero di byte e si parta se tutto l'ultimo b + 1 bytes rappresenta il valore intero b + 1 o meno. Se non è poi si butta un messaggio di errore e cioè un brutto imbotto altrimenti procederà a decodificare un m2 recuperato. Quindi questo significa che se il messaggio brutto imbottato arriva come risposta dal destinatario poi l'avversario impara che il byte sconosciuto contiene B xor con i non è uguale a b + 1. Mentre se il messaggio di riempimento cattivo non esce significa che il byte sconosciuto b xor con i è = b + 1 a destra. Così che dà l'equazione avversaria nel byte sconosciuto b e tutto il resto è ormai noto all'aggressore il valore di me è noto il valore di b è noto quindi può solo risolvere questa equazione e imparare il byte sconosciuto b e realizzando un attacco simile praticamente avversario può imparare qualsiasi byte specifico del messaggio in cui l'avversario è interessato qui a destra. Ora è possibile vedere chiaramente che solo ottenendo un servizio di oracolo di decodifica qui e cioè un servizio di oracolo imbottato qui se l'imbotto è corretto o meno per l'avversario di testo modificato potrebbe imparare a finire per imparare la non solo la quantità di byte che sono stati imbottiti dal mittente, ma anche qualsiasi byte di messaggio specifico. (Riferimento Slide Time: 27 :08) Così che dimostra che la modalità CBC di crittografia non è sicura CCA, ma è CPA sicura. Quindi ora torniamo a questo autenticarsi quindi criptare l'approccio e poi vediamo come esattamente questo schema composto che otterremo da questo autenticato poi crittografare l'approccio sembrerà se instanziamo il sottostante schema di sicurezza CPA dalla modalità CBC e prendiamo qualsiasi instazio MAC che sia sicura. Così il modo in cui la crittografia avverrà in questo schema composto sarà il seguente. Immaginate quindi di avere un testo semplice poi prima di calcolare il tag su quel messaggio perché siamo nell'autentica poi cripta approccio. Una volta che abbiamo calcolato il tag allora questo messaggio complessivo e il tag insieme vengono trattati come un testo semplice da crittografare come per la modalità CBC della crittografia e per fare la modalità CBC di crittografia. A seconda che questo messaggio e il tag complessivamente il numero di byte concatenati con t sia un multiplo del numero di byte che è presente nella sottostante pseudo casuale permutazione dobbiamo fare un imbottito e cioè dobbiamo fare un riempimento PKCS. Così supponiamo p denota i byte che abbiamo imbottato del tutto questa cosa è ora crittografata come per la modalità CBC di crittografia. Ecco allora che il testo di cifratura uscirà nello schema composto come per l'autentica allora cripta approccio se usiamo la modalità CBC di crittografia per istanziare il sottostante schema di crittografia sicuro CPA. Sulla decima fine quello che andremo a fare è se otteniamo un testo di cifratura c cap la prima decodifica come per la modalità CBC di decodifica e su decodifica qualunque cosa otteniamo noi la trattiamo come messaggio seguito dal tag seguito dall'imbottito e se l'imbottito non è corretto o non soddisfa il requisito di riempimento PKCS allora rilasciamo un messaggio di errore di riempimento, ma se l'imbottito è corretto poi ci si sofferma sul messaggio, parte il tag e poi verificare se la parte t della cosa recuperata è in realtà un cartellino corretto sulla parte del messaggio recuperato o meno se non poi ci lanciare un messaggio di errore di autenticazione. La parte interessante da notare qui è che in realtà è la causa principale del problema è che, che un tag t che stiamo elaborando alla cifratura della cifratura mantiene solo l'integrità del messaggio m, ma non deve fare nulla con l'imbottito che stiamo facendo per criptare realmente il tutto come per la modalità CBC di cifratura. Quindi il tag t non protegge l'integrità del pad p. (Riferimento Slide Time: 30:01) Anche qui potete vedere che 2 tipi di messaggi di errore vengono lanciati durante la decodifica. L'errore di riempimento viene rilasciato per la prima volta se il riempimento stesso non è corretto, ma se l'imbotto è corretto allora ci saremmo ulteriormente andati a controllare se la parte del tag è corretta o meno e di conseguenza lanciamo un errore di autenticazione. Quindi l'idea che può essere sfruttata qui dall'avversario per dimostrare che questo schema composto non è il CCA sicuro come il seguito. Immaginate che un avversario cerchi di fare casino con questo processo di crittografia arrivando con un nuovo testo di cifratura del proprio. Quindi per arrivare con un nuovo testo di cifratura praticamente deve arrivare con qualche c e può inoltrare quelle c al destinatario e aspettare di vedere che tipo di messaggi di errore vengono lanciati dal destinatario. Si scopre che se su decriptaggio c il riempimento si rivela errato, allora quel messaggio di errore verrà emesso più velocemente che significa che il testo di cifratura che sta avendo imbottato errato verrà rifiutato più velocemente rispetto al testo di cifratura che hanno corretto imbottato ma errato tag MAC e che stesso è una sorta di indizio per identificare la quantità di riempimento che è avvenuto alla fine della crittografia che significa a seconda del messaggio di errore che verrà gettato dal destinatario, se il messaggio di errore è veloce che significa che corrisponde ad un messaggio di errore imbottiti e se l'errore messaggio è effettivamente il messaggio di errore di riempimento errato poi l'avversario può esattamente riprodurre lo stesso tipo di ruolo che avevamo visto nell'attacco dell'oracolo imbottato dove poter provare a modificare il testo di cifratura e cercare di fare casino con il blocco di testo di cifratura per vedere se sta ottenendo il messaggio di errore imbottiti o meno. E sostanzialmente l'avversario finisce per ottenere l'accesso al canale di oracolo oracolo e a seconda della risposta del destinatario può finire per imparare i byte specifici del messaggio in cui è interessato. Così che qui si trovi la principale fonte di problema qui così anche se abbiamo un'istanziazione sottostante del processo di crittografia simmetrica che è CPA sicuro e cioè la modalità CBC di crittografia il modo in cui stiamo componendo lo schema qui il tag t, non impedisce l'autenticità del pad e che dà all'avversario la leva per arrivare con qualsiasi testo di cifratura modificato e ottenere l'accesso all'attacco dell'oracolo modificato e che assicura che il regime complessivo composto non sia CCA sicuro ed è per questo che questo approccio generale di autenticarsi poi crittografare non è l'approccio giusto per comporre uno schema sicuro CPA con un sicuro MAC. Così questo mi porta alla fine di questa lezione. Tanto per riassumere in questa lezione avevamo visto altri 2 approcci di comporre una crittografia simmetrica sicura CPA e un MAC sicuro e si scopre che nessuno di questi 2 approcci implica sempre genericamente un sistema di crittografia autenticato. Ecco perché non dovremmo andare dopo questi approcci. Dovremmo andare per l'approccio cioè criptare che l'approccio autenticato che sappiamo andrà sempre a