Codici Autenticazione Messaggi | Messaggi lunghi | Alison
Loading
Note di Apprendimento
Study Reminders
Support
Text Version

Codici Autenticazione Messaggi per Messaggi Lunghi

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

    +

Fondamenta della crittografia Prof. Dr. Ashish Choudhury (Ex) Infosys Foundation Career Development Chair Professor International Institute of Information Technology - Bengaluru Lecture - 23 Message Authentication for Long Messages Part I Salve a tutti, benvenuto alla lezione 22, giusto per recap, nell'ultima lezione abbiamo iniziato a discutere dei problemi dell'autenticazione dei messaggi e dell'integrità dei messaggi, dove l'obiettivo del destinatario è verificare se il messaggio che sta ricevendo arriva dal mittente destro o meno. E per rilevare se il messaggio ricevuto dal destinatario è effettivamente il messaggio corretto o meno. E abbiamo introdotto un primitivo crittografico chiamato codice di autenticazione dei messaggi e abbiamo visto le definizioni di sicurezza dei messaggi di autenticazione dei messaggi. E abbiamo anche discusso di come costruire il codice di autenticazione dei messaggi per i messaggi di lunghezza fissa utilizzando funzioni pseudo casuali. Così in questa lezione continueremo la discussione sui codici di autenticazione dei messaggi. (Riferimento Slide Time: 01.12) E quello che faremo sarà discutere di come costruire codici di autenticazione dei messaggi per stringhe di bit arbitrali. Inizieremo quindi a discutere di come costruire un codice di autenticazione del messaggio per stringa di blocchi e questo sarà ulteriormente fatto in 2 tappe. Vedremo in primo luogo come costruire il prefisso gratuitamente funzioni pseudo casuali per stringa di blocchi. E poi vedremo come convertire qualsiasi funzione di pseudo funzione casuale priva di prefisso per stringa di blocchi a PRF completamente sicuro per stringa di blocchi. E una volta che avremo PRF completamente sicuro per la stringa di blocchi, vedremo come costruire funzioni pseudo casuali per input di lunghezza arbitraria cioè arbitrari ma stringhe che alla fine ci daranno un codice autentico per stringhe di bit arbitrali. Ecco allora il piano per questa lezione. (Riferimento Slide Time: 02.04) Così solo per ricordare, nell'ultima lezione, abbiamo visto come costruire un codice di autenticazione del messaggio per i messaggi di lunghezza fissa utilizzando funzioni pseudo casuali. Quindi supplire di ricevere una funzione pseudo random sicura con n bit key l bit block lunghezza e L bit output size. Poi usando la funzione pseudo random abbiamo visto come costruire un MAC sicuro dove lo spazio chiave è l'insieme di n bit stringhe di spazio messaggio impostato su tutte le stringhe bit e lo spazio dei tag è una serie di stringhe di L bit. E la costruzione è come segue l'algoritmo di algoritmo di generazione chiavi in chiave per la funzione pseudo casuale che viene utilizzato per autenticare il messaggio calcolando il valore della funzione pseudo casuale sotto la chiave k con il messaggio essendo il blocco di input. E questo è il tag e per verificare il tag per il messaggio m. Il tag viene rielaborato rielaborando il valore della funzione di keyed Fk sull'input m. E corrispondente se il tag rielaborabile corrisponde al tag ricevuto o meno. Se il match dovesse accadere allora l'output è 1, altrimenti l'output è di 0. Ora il nostro obiettivo è costruire dei MAC sicuri per i lunghi messaggi arbitrari, perché in pratica non c'è alcuna restrizione che la dimensione del messaggio debba essere di L bit, potrebbe essere inferiore a L bit, potrebbe essere più grande di L bit e così via. (Riferimento Slide Time: 03.29) E si scopre che a differenza dei sistemi di crittografia sicuri CPA, dove se abbiamo un schema di crittografia sicuro CPA per la codifica dei messaggi di bit L. E se vogliamo ottenere la sicurezza CPA per la codifica di messaggi lunghi arbitrari, allora avevamo visto che bastava dividere il messaggio più grande in diversi blocchi di L bit, e criptare ogni blocco di L bit utilizzando un'istanza del processo di codifica a lunghezza fissa. Ma quel processo di divisione del messaggio e di autenticazione di ogni blocco utilizzando questo MAC dimensionato non vi darà una costruzione MAC sicura. Specificamente ipotizziamo di avere un messaggio m giusto composto da 2 blocchi di L. E si divide il messaggio m in blocchi m1 e m2 e si dice di autenticarsi m1 utilizzando questa procedura MAC a lunghezza fissa e si autentica indipendentemente m2 utilizzando lo stesso k chiave utilizzando questa procedura MAC a lunghezza fissa. Poi un avversario che ha visto il tag t1,t2 per un messaggio m può facilmente produrre un MAC per un nuovo messaggio m composto da blocco m2 seguito da m1 a destra. E questo sarà un falso dal punto di vista dell'avversario. Quindi non è semplice prendere semplicemente questa costruzione MAC per i messaggi di lunghezza fissa e usarlo per costruire un MAC per autenticare messaggi lunghi arbitrari. (Riferimento Slide Time: 04.49) La costruzione sarà davvero un compito impegnativo. Quindi l'idea alla base di costruire codici di autenticazione dei messaggi per messaggi lunghi arbitrari è quella di cercare, dovrebbe progettare funzioni pseudo casuali sicure con stringhe di bit arbitrali arbitrarie, ma in uscita di dimensione fissa. Perché se possiamo costruire funzioni pseudo casuali, che possono supportare qualsiasi stringa di bit arbitrario come input e dà un'uscita di dimensione fissa, quindi usando una funzione così pseudo casuale, possiamo facilmente costruire un MAC per messaggi lunghi arbitrari, quello che in sostanza devi fare è solo dover invocare quella pseudo funzione casuale sul messaggio, che potrebbe essere di qualsiasi lunghezza per produrre il tag. E come per l'idea che avevamo usato per costruire lo pseudo MAC per un messaggio a lunghezza fissa, la costruzione corrispondente sarà una costruzione sicura. Quindi l'intero problema di progettare un MAC sicuro per i messaggi lunghi arbitrari si riduce al problema di come costruire funzioni pseudo casuali per stringhe di bit arbitrali arbitrarie. Ed è questo che sarà il fulcro di questa discussione. Quindi il materiale di riferimento per la discussione di oggi sarà il capitolo tratto dalla bozza di libro di Boneh e Shoup e la maggior parte delle prove per le costruzioni di cui discuteremo nella lezione di oggi saranno saltate perché le prove sono davvero avanzate: staremo solo dando, staremo solo discutendo la panoramica delle idee di alto livello dietro le prove di sicurezza delle costruzioni di cui discuteremo in questa lezione. Ma se siete interessati a vedere che le prove esatte allora potete fare riferimento alla lezione data nella bozza di libro di Boneh e Shoup a destra. (Riferimento Slide Time: 06.36) Quindi iniziamo con la costruzione di un PRF per input di dimensione arbitraria da un PRF con input di dimensione fissa. Quindi quello che ti viene dato è dato che ti viene dato come PRF, la cui lunghezza del blocco è n bit e l'output è anche di n bit. E usando questo, il tuo obiettivo è di costruire in sostanza un altro PRF con chiave che io denota come F*. E che può supportare input di qualsiasi lunghezza fino a (l * n) bit. E ti darà un output fisso di dimensione n bit. Così come potete vedere che l'uscita del keyed PRF F* che siamo interessati a costruire è indipendente dal valore l destro. Quindi non importa se il tuo l è 1, l è 2 e così sulla dimensione di uscita è sempre fisso, ovvero n bit. Quindi il nostro obiettivo è come costruire questo F* data questa funzione pseudo casuale F. E progettiamo F* da F usando un approccio da 3 ° stadio. In fase 1 quello che faremo sarà prima di tutto costruire un PRF che non funzionerebbe su input di lunghezza arbitraria, ma funzionerà su sequenza arbitraria di blocchi. Ovvero può calcolare l'output per qualsiasi numero di fino a l numero di blocchi, dove ogni blocco consisterà in n bit di input. E ti dà sempre un output di n bit e chiamiamo questo PRF come blocco wise prefisso gratuito PRF. Sarà chiaro molto presto cosa intendiamo esattamente con il termine prefisso gratuito PRF. Ma la cosa importante è che non supporta input di lunghezza arbitraria, ma piuttosto supporta input che sono in realtà paralizzati come sequenza di diversi blocchi. E può supportare input costituiti da blocchi fino a l, dove ogni blocco è costituito da n bit di stringa. Così che viene denotato da questa notazione {{0, 1} n} < = l. Questo significa che ogni blocco è di dimensioni n bit e ci può essere fino a l tali blocchi. Così il palco 1 sarà come passare da questa dimensione fissa PRF F a questo prefisso gratuitamente PRF PF. Poi una volta che abbiamo la costruzione PF, che è block wise prefisso libero PRF. Nella fase 2, prendiamo questo prefisso free sicuro PF e costruiamo un PRF completamente sicuro, ma che è ancora bloccabile. Il che significa che può assumere input costituiti da blocchi di upto l, dove ogni blocco è di dimensioni n bit e l'output è di dimensioni n bit. E poi finalmente nella fase 3, una volta che abbiamo la costruzione F, costruiamo l'effettivo PRF F* che siamo interessati a costruire, che può assumere qualsiasi input di bit arbitrario come input di lunghezza fino a l n bit. Allora ricordate lì, così accorgete che c'è una differenza tra la notazione dove questa notazione e la notazione dove stringa binaria fino a lunghezza l n bit, quindi quando dico input del modulo {0, 1} < = ln che significa che l'input è una stringa di bit arbitrario la cui lunghezza è l n. Ma quando dico che ho un input di questo modulo {{0, 1} n} < = l, questo significa che il mio input è costituito da diversi blocchi, ovvero fino a blocchi, dove ogni blocco è esattamente di dimensioni n bit. Quindi c'è una differenza tra questa notazione e questa notazione. Ecco quindi l'approccio di fase 3 che seguiremo per costruire il nostro PRF F* richiesto dalla lunghezza fissa PRF F destra. E ognuna delle tappe è davvero interessante e sottile e staremo a sciare le prove come ho detto prima, se volete vedere la prova potete vedere il capitolo della bozza di libro di Boneh e Shoup. (Riferimento Slide Time: 10 :37) Così cominciamo con la costruzione di prefisso gratuito PRF e per questo, fatemi definire per prima cosa esattamente con prefisso - free set. Quindi un set Q che è un sottoinsieme di set di tutti i blocchi, fino a cui è un sottoinsieme di sequenze di blocchi fino a dimensioni l blocchi, dove ogni blocco è costituito da n bit è definito un set senza prefisso. Se le seguenti condizioni tengono, prima di tutto il set Q dovrebbe essere non vuoto. E la seconda proprietà è che nessun elemento nel set Q dovrebbe essere un corretto prefisso di qualsiasi altro elemento del set Q, ciò che questo significa è che se abbiamo un membro di input nel set Q dice la sequenza (a1, a2) dove a1 è 1 blocco e a2 è un altro blocco ciascuno di dimensioni n bit. Poi non possiamo avere l'input a1 presente nel set Q, perché l'input di blocco a1 è un corretto sottoinsieme della sequenza di input di blocco a1, a2. Tuttavia possiamo avere l'input a2 presente nel blocco Q perché a2 non è un prefisso della sequenza di blocco (a1, a2). Ecco quindi la definizione di un set gratis di prefisso, giusto. Quindi ora cosa intendiamo esattamente con un prefisso saggista a prefisso gratuito PRF. Quindi su un livello molto alto è un diritto di PRF che prende input come sequenza di blocco e potrebbe arrivare fino a l numero di tali blocchi. E che PRF sarà sicuro contro un avversario più debole che ci chiamiamo prefisso libero avversario. Ovvero, sarà sicuro contro un avversario o un distinguo le cui query sono limitate ad un prefisso free-set.So cosa intendiamo esattamente con questo, quindi il prefisso sintatticamente saggio free PRF sarà una funzione di keyed e ci vorrà una chiave di dimensione dire n bit. E ci vuole una sequenza di blocchi come input, quindi può accogliere fino a I blocchi qui, dove ogni blocco è una dimensione fissa cioè n bit. E ti dà un output di dimensioni fisse diciamo n bit e una proprietà di sicurezza che vogliamo da questo blocco saggio - free sicuro PRF è che, se si considera una funzione davvero casuale che prende in ingresso anche una sequenza di blocchi dicono fino a blocchi, dove ogni blocco è di dimensioni esattamente n. E ti dà un output di dimensioni n bit tale che la funzione f è una funzione davvero casuale, è una funzione senza chiave. Poi quello che intendiamo con un prefisso gratuito PRF è che il comportamento di questo keyed PRF dovrebbe essere indistinguibile dal comportamento di questa funzione davvero casuale f contro un distinguo, che si limita a fare query solo da un prefisso senza prefisso. Il che significa che questo distinguo non può chiedere il valore della funzione sull'input della sequenza di blocco (a1, a2) oltre che a1 che significa qualunque query che questo distinguo stia per chiedere. Nel gioco indistinguibile PRF, se lo denunceremo per Q, allora il set Q delle query per il distinguo dovrebbe costituire un set senza prefisso. Ecco perché questo distinguo è un distinguo più debole o un avversario più debole. Perché nell'effettiva definizione di sicurezza PRF non c'è assolutamente alcuna restrizione posta sulla natura delle query che il distinguo può chiedere durante il gioco. Potrebbe essere un set senza prefisso, potrebbe non essere un set senza prefisso. Ma quando dico che stiamo progettando un PRF protetto da prefisso, allora sarà sicuro solo contro un avversario, le cui query costituiscono un prefisso senza prefisso. (Riferimento Slide Time: 14 :23) Quindi ecco la definizione di blocco saggio PRF che è protetto da prefisso e ora ci fa vedere una costruzione candidata che chiamiamo un prefisso CBC gratuito PRF. E la costruzione è la seguente. Quindi ci viene fornito un PRF con chiave di input di dimensione fissa e di uscita di dimensione fissa. E usando che il nostro obiettivo è costruire un PRF che sia un diritto PRF protetto da prefisso che possa scattare una sequenza di blocchi come input diciamo fino a l blocchi ogni dimensione n bit e ti dà un'uscita di dimensione fissa. E un modo in cui lo facciamo sta usando questa modalità CBC di crittografia che avevamo visto in precedenza con alcune differenze. Allora fatemi dimostrare come funziona esattamente questo prefisso CBC - free sicuro PRF. Per scopi dimostrativi, supponi di avere un messaggio m composto da fino a 3 blocchi a destra. Ora per calcolare l'output del prefisso CBC - free secure PRF per questo input, quello che facciamo è il seguente. Dal momento che abbiamo 3 blocchi dobbiamo invocare la dimensione fissa PRF 3 volte con la stessa chiave k. E il primo richiamo del PRF sarà con m1 come input e qualunque sia l'output che funge da input per il prossimo richiamo, dove è XORed con l'input del blocco successivo, ovvero m2 e un XOR del m2 e la precedente uscita del PRF viene alimentato come input di blocco per il secondo richiamo e poi continuiamo il processo di colorazione. E infine, l'esito dell'ultimo richiamo della lunghezza fissa PRF F è trattato come l'output del CBC protetto da prefisso per il messaggio m. Questo è un modo, questo prefisso CBC - free secure PRF funziona ok. (Riferirsi Slide Time: 16.14) Quindi ci sono certe differenze tra il CBC PRF che abbiamo progettato proprio ora e la modalità CBC di crittografia che avevamo discusso in una delle nostre precedenti lezioni. Quindi sul tuo lato sinistro hai la modalità CBC PRF e sulla tua parte destra hai la modalità CBC di cifratura. A scopo di confronto, quello che sto considerando è che sto considerando un blocco di messaggi composto da 3 blocchi e come verrà calcolato l'output del CBC PRF senza prefisso su quel messaggio. E sulla parte destra destra ho lo stesso messaggio e sto dimostrando come esattamente la modalità CBC di crittografia sarà operata sullo stesso messaggio. Così le differenze tra questi 2 primitivi sono le seguenti. Prima di tutto, quando vediamo il CBC PRF, poi i valori intermedi che non sono in uscita a destra, è solo l'esito dell'invocazione finale di F, che è in uscita come output complessivo del CBC PRF. Mentre nella modalità CBC di crittografia, ognuno degli esiti intermedi della F fanno parte anche dell'output complessivo. Questo perché nella modalità CBC di crittografia l'obiettivo è quello di criptare ciascuno dei singoli blocchi. Ecco perché abbiamo bisogno di produrre definitivamente i punti vendita intermedi del PRF. Ma quando consideriamo il CBC PRF, il nostro obiettivo è quello di calcolare un output di dimensione fissa per il messaggio complessivo. Ecco perché non è necessario emettere i richiami intermedi del PRF, quindi questa è la prima differenza. La seconda differenza è che se consideriamo il CBC PRF allora utilizza un IV fisso, cioè nella foto non c'è affatto IV. Ma si può sempre immaginare che il IV sia impostato su tutto il 0s che è pubblicamente conosciuto. Ma quando si tratta di una modalità CBC di crittografia, poi c'è una IV e che viene selezionata casualmente per ogni istanza della modalità CBC di crittografia. Si può quindi immaginare che CBC PRF utilizzi un IV deterministico, sempre fisso per ogni messaggio. Ma quando si tratta della modalità CBC di crittografia, IV viene selezionata in modo indipendente per ogni richiamo. (Riferirsi Slide Time: 18.28) Quindi queste sono le 2 differenze e si scopre che se in realtà avete modificato un CBC PRF esternando anche i outmessi intermedi del PRF, allora il PRF complessivo non è un PRF sicuro. Inoltre, invece di utilizzare un IV fisso, se si inizia a usare un IV casuale, non c'è alcuna garanzia che nel complesso il CBC PRF sia un vero e proprio prefisso gratuito PRF. Ecco allora come funziona la CBC PRF e non entrerei nella prova di sicurezza che perché esattamente questo CBC PRF è effettivamente un PRF.Ma senza prefisso PRF.Ma vi faccio intuire che perché potrebbe diventare insicuro se non limitiamo il nostro avversario a fare delle query che costituiscono un diritto di set senza prefisso. Quindi quello che farò è che dimostrerò l'insicurezza del prefisso CBC - free secure PRF contro un avversario che può fare delle query che non costituiscono un set senza prefisso. Immaginate quindi che l'avversario, c'è un avversario che interroga per un input di blocco a1 e ottiene l'output y sotto una chiave sconosciuta che non è nota all'aggressore. Quindi il modo in cui l'output y sarebbe stato calcolato è il seguente. Dato che abbiamo un solo blocco, in sostanza avremmo valutato la lunghezza fissa PRF F sull'input a1 con la chiave k ed è così che si calcolerà l'output y. Ora immaginate l'avversario ha un nuovo blocco nuovo input composto da 2 blocchi, diciamo blocco a1 seguito da un blocco a2, dove a2 è un blocco speciale qui, a2 è relativo al blocco a1 e all'output y che è il valore del PRF senza prefisso sull'input di blocco a1. E ora chiediamoci quale sarà esattamente il valore di questo prefisso - free CBC PRF sull'input (a1, a2) giusto. Ecco quindi come sarà calcolata la produzione del CBC PRF sull'input (a1, a2). Avremo 2 richiami della lunghezza fissa PRF, faremo la colorazione e l'output finale sarà questo: PFCBC (k, a1 | |a2). Ora qual è esattamente l'esito del primo richiamo del PRF F qui è y, perché è quello che è la struttura giusta. Così potete vedere che se mi concentro solo su questa parte qui, questa parte non è altro che il calcolo del CBC PRF su un input diverso costituito da un solo blocco a1. E sappiamo che non è altro che y e ora questa y viene alimentata come l'input per il secondo richiamo, dove questa y è XORed con il prossimo blocco qui. E il blocco successivo è a1 XOR y, quindi l'effetto di questo y e y annulla. E quello che in sostanza stiamo facendo qui è che stiamo effettivamente richiamando la lunghezza fissa PRF sull'input a1.E l'avversario sa già che il valore di questo PRF sotto la chiave sconosciuta k ma con il noto input a1 vi darà l'output y. (Riferimento Slide Time: 21 :48) Così l'avversario sa già che l'uscita del CBC PRF sulla sequenza di input (a1, a2) ti darà y se quindi il blocco a2 soddisfa questa relazione. E questo gli dà un vantaggio o una strategia per distinguere questo CBC PRF da una funzione realmente casuale. Quindi quello che l'avversario praticamente può fare è, può prima chiedere l'output della funzione sull'input di blocco a1. E poi può chiedere l'output della funzione sulla sequenza di blocco degli input di blocco (a1, a2). E può paragonarlo con y, se vede l'output della funzione input sulla sequenza (a1, a2) da essere y. Poi sa che interagisce con un CBC PRF senza prefisso e se l'output non è y che significa interagire con una funzione davvero casuale. E si può dimostrare formalmente che il vantaggio distintivo del distinguo è significativo. Quindi questo significa che se ci si permette avversari di interrogare, se la serie di query che l'avversario può chiedere non costituisce un set senza prefisso. (Riferimento Slide Time: 22 :48) Poi sicuramente la costruzione che abbiamo visto ora non è sicura. Perché in questo particolare esempio viene chiesto di interrogare per a1 e poi viene chiesto di interrogare anche per l'input (a1, a2). E chiaramente a1 è un prefisso del set (a1, a2) ma la definizione di PRF protetto da prefisso è che è sicura solo contro un avversario che non può interrogare sia per a1 che per la sequenza di input (a1, a2) destra. Ecco quindi l'intuizione di base che perché questa colorazione PRF sia sicura contro un avversario libero da prefisso. Se non mettiamo quella restrizione allora sicuramente è distinguibile da una funzione davvero casuale. (Riferimento Slide Time: 23 :34) Così ora abbiamo un candidato blocco wise prefisso - gratuito PRF. E quello che facciamo è ora andremo sul palco 2, dove convertiremo questo blocco saggio - free secure PRF per ottenere un PRF completamente sicuro, dove non c'è alcuna restrizione sulle query che il distinguo può apportare nel gioco di indistinguibilità PRF. Così si è dato a questo abbiamo già visto un candidato per questo cioè il blocco CBC PRF saggio. E il nostro obiettivo è costruire un blocco di blocco completamente sicuro PRF, che possa scattare sequenza di blocchi come input, diciamo fino a blocchi dove ogni blocco è di dimensioni fisse, diciamo n bit. E l'output è di dimensione fissa di uscita di dimensione n bit. E ci sono diversi approcci per fare questo, ci sono diversi approcci dall'andare a questo prefisso - gratuito PRF a un PRF completamente sicuro e ogni approccio ha un diverso scambio. Quindi il primo approccio è un CBC PRF crittografato e i restanti 2 approcci sono codifica deterministica - codifica gratuita e codifica prefisso casuale. Così gli ultimi due metodi quello che fa è sostanzialmente codificare l'input del tuo blocco saggio di blocco - gratuito PRF, in modo tale che gli input codificati da codificante costituiscano un set senza prefisso, mentre CBC crittografato utilizza 2 keys., dove usare la prima chiave operiamo il PRF senza prefisso. E poi l'output viene nuovamente criptato usando la seconda chiave che assicura che l'avversario sia confuso. (Riferimento Slide Time: 25 :12) Quindi andiamo più a fondo nei diversi approcci, quindi vediamo innanzitutto come costruiamo il prefisso del prefisso - free secure CBC ad un CBC completamente sicuro utilizzando la crittografia. E l'idea qui è quella di utilizzare 2 chiavi indipendenti, dove usare la prima chiave operiamo il prefisso - free block wise CBC e usando la seconda chiave crittografamo l'output del blocco saggio CBC. Più precisamente quello che faremo è costruire un nuovo PRF che denota come FCBC completamente sicuro. Non vi è alcuna restrizione sul distinguo può rendere le query che magari prefisso - free set o che potrebbero non costituire un set senza prefisso e così via. Così la costruzione prenderà 2 chiavi e il PRF può supportare una sequenza di blocchi, diciamo fino a blocchi. Ogni blocco composto da n bit fissi e sottolineo che qui durante tutta questa discussione questo l è una qualche funzione polinomiale del vostro parametro di sicurezza. E l'output di questo blocco saggio PRF sarà di n bit a destra. Così come avverrà esattamente l'operazione qui, dato che la chiave è di dimensioni 2 n bit, la partiamo come sequenza di 2 blocchi di n bit ciascuno e chiamiamo la prima parte della chiave ad essere k1. E con k1, in realtà abbiamo eseguito per la prima volta il prefisso CBC senza prefisso che gestisce il blocco saggio e questo sarà l'output del CBC PRF senza prefisso rispetto alla chiave k1. E una volta ottenuto l'output, utilizziamo la parte rimanente della chiave che è anche di n bit e indipendente da k1. E usiamo questa chiave per criptare nuovamente l'output che abbiamo ottenuto dal prefisso - free CBC PRF e che sarà l'esito complessivo di questo CBC PRF completamente sicuro rispetto alla chiave k1,k2 destra. (Riferimento Slide Time: 27 :14) Quindi ci sono diversi vantaggi oltre che svantaggi per questo blocco saggio crittografato CBC PRF. Il vantaggio qui è che questo PRF costituisce quello che chiamiamo streaming PRF e che ci fornisce ulteriormente quello che chiamiamo streaming MAC. Quindi ricordati, il nostro obiettivo è quello di costruire fondamentalmente PRF supportando l'input di dimensione di blocco arbitrario; il nostro obiettivo è costruire PRF, che possa assumere input di dimensioni arbitrarie. In questo momento quello che stiamo puntando è di costruire PRF che può assumere sequenza di blocchi come input e ti dà un'uscita di dimensione fissa. E una volta che avremo tale PRF possiamo sempre usare quelle PRF per ottenere i corrispondenti MACs sicuri. Ovvero un MAC che può assumere input; che può scattare sequenza di blocchi come input e darvi un tag di dimensione fissa. Quindi il vantaggio di questo CBC PRF criptato è che costituisce quello che chiamiamo streaming MAC. E cioè in questa costruzione la lunghezza del messaggio non deve essere conosciuta in anticipo. Questo significa immaginare uno scenario in cui un mittente invii continuamente pacchetti di messaggi al destinatario. E non sa esattamente cosa sarà la lunghezza del messaggio m che significa che non sa bene in anticipo a quanti blocchi di I bit ci saranno nel messaggio m, quello che sa è che il numero massimo di blocchi che possono esserci nel messaggio m è l, dove l è noto pubblicamente. Ma a parte che non ha alcuna conoscenza sul numero esatto di blocchi. Quindi se si vede come funziona questo CBC PRF crittografato, la lunghezza del messaggio non è affatto utile qui. Così come e quando i nuovi blocchi stanno arrivando a destra; ciò che il mittente può fare è in sostanza può calcolare la corrispondente emissione del prefisso - free CBC PRF. E una volta che il messaggio è finito, questo significa che una volta che l'ultimo blocco del messaggio arriva al mittente, può calcolare un richiamo finale del PRF rispetto alla chiave k2. Ecco perché si tratta di quello che chiamiamo streaming MAC perché la lunghezza del messaggio non deve essere conosciuta in anticipo qui. Lo svantaggio in questa costruzione è che ora dobbiamo operare con 2 chiavi. Questo significa che la chiave complessiva per il CBC block wise PRF è costituita in realtà da 2 porzioni indipendenti di n bit. E abbiamo anche bisogno di un richiamo PRF aggiuntivo cioè l'invocazione finale PRF a parte il numero di richiami PRF che stiamo richiamando internamente come parte del prefisso - free CBC PRF. Quindi questi sono gli svantaggi del 2, e abbiamo anche un vantaggio qui a destra. Così hai il fiato qui. Se volete un MAC in streaming, allora questa è davvero una costruzione molto buona. Ma devi pagare qualcosa per quello cioè devi operare con 2 chiavi e dovresti essere disposto ad avere un ulteriore richiamo PRF qui a destra. Spero che ti sia piaciuta questa lezione, grazie.

Notification
You have received a new notification
Click here to view them all