Codice di autenticazione dei messaggi | Blocco - saggio Fully - Secure CBC | Alison
Loading
Note di Apprendimento
Study Reminders
Support
Text Version

Blocco - saggio Fully - Secure CBC

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 di CryptographyProf. Dr. Ashish Choudhury (Ex) Infosys Foundation Career Development Chair ProfessorIndian Institute of Technology-BengaluruLecture-24Message Authentication for Long Messages Part IIHello Tutti, questa è una continuazione della lezione precedente e in questa lezione vedremo come ottenere Mac - wise completamente sicuro Mac dal prefisso - MAC sicuro senza prefisso. E poi alla fine vedremo come ottenere MACs completamente sicuri per stringhe di bit arbitrarie arbitrarie. (Fare Slide Time: 00 :49) Così ora parliamo degli altri approcci, su come convertire un prefisso - saggio - free secureCBC PRF ad un CBC PRF completamente sicuro. (Fare Slide Time: 00 :59) E questo avverrà attraverso qualche codifica. E l'idea di base qui è che, applichiamo alcune funzioni di codifica pubblicamente note allo spazio dei messaggi del prefisso - free CBC PRF, in modo che lo spazio dei messaggi codificati costituisca uno spazio di messaggio senza prefisso. E quello che in sostanza significa è il seguente: immaginate di avere uno spazio di messaggio per il PRF senza prefisso, composto da fino a l − 1blocks, ognuna di dimensioni? bit. Cosa faremo, appliceremo qualche funzione di mappatura o codifica che denota come?? e lo spazio dei messaggi codificati consisterà ora in una sequenza di blocchi fino a blocchi, ognuna di dimensioni? bit. E il modo in cui si fa la mappatura qui è il seguente. Quindi, in questo momento stiamo effettivamente considerando un meccanismo di codifica deterministico, successivamente su di noi considereremo un meccanismo di codifica randomizzato come well.Quindi, il modo in cui questo meccanismo di codifica deterministico funziona è il seguente. Quindi diciamo che hai una sequenza di blocchi di input?, il corrispondente input codificato? sarà il seguente: tutti i blocchi di messaggio di? sono copiati come si trova nell'output codificato e a parte da questo ora introduciamo un ulteriore blocco qui, ovvero la rappresentazione binaria del numero di blocchi nel tuo input? .Quindi questa è la notazione questa, all'interno delle staffe d'angolo di cui hai la rappresentazione binaria?. Ecco perché è possibile vedere che l'input potrebbe consistere fino a l − 1 blocchi. E visto che ora stiamo introducendo un blocco aggiuntivo nell'output codificato, ecco perché l'output ora può consistere fino a l blocchi; qui abbiamo un ulteriore blocco introdotto a causa del processo di codifica. E l'idea qui è che utilizzando questo processo di codifica deterministico, speriamo che invece di operare il prefisso CBC PRF sullo spazio dei messaggi originale, ora lo operiamo sullo spazio dei messaggi codificati. E visto che lo spazio dei messaggi codificati costituirà un prefisso? free set, il distinguo non può emettere query, che costituiscono un set senza prefisso e da qui la costruzione complessiva sarà un PRF.So completamente assicurato che ora proviamo a dimostrare che la codifica deterministica che abbiamo visto qui costituisce effettivamente una mappatura senza prefisso. Questo significa che la mappatura dallo spazio dei messaggi, che potrebbe essere un set senza prefisso, al set codificato, ti dà un set codificato che costituisce un set senza prefisso; questo è ciò che vogliamo dimostrare. Quindi prima di tutto è facile vedere che la mappatura è iniettiva, e cioè isone. Questo significa che se hai 2 input,? 1 e? 2 composto da sequenza di blocchi, fino a l − 1 blocchi. E se li codifichiamo, allora saranno diversi, se? 1 e? 2 sono diversi. Perché se? 1 e? 2 sono diversi, allora sicuramente i blocchi che sono presenti in? 1 e i blocchi che sono presenti in? 2 proseguiranno anche nelle codificate? 1 e nelle codificate? 2, e saranno differenti. Da qui il codificato? 1 e codificato? 2 sarà diverso. Quindi questo dimostra che la tua mappatura che abbiamo definito qui è effettivamente una mappatura one-to-one. (Fare Slide Time: 04 :25) Ora vogliamo dimostrare che l'immagine impostata??, ovvero tutti i messaggi codificati che otteniamo come per questa mappatura, costituisce un set senza prefisso. Immaginate di avere 2 input appartenenti allo spazio dei messaggi, diciamo la sequenza di input? e un'altra sequenza di input?, costituita da? e? numero di blocchi. E dire? e? sono input diversi. Quindi la mia affermazione è che l'output codificato?? (?) e l'output codificato??? (?) non sono un corretto prefisso l'uno dell'altro. E se lo si mette a provare questo per un input arbitrario? e un input arbitrario?, questo dimostra che la mappatura che abbiamo considerato vi dà davvero un set senza prefisso. Quindi chiaramente la pretesa che stiamo facendo per codificare? e codificato? è vero, se il numero di blocchi in? e un numero di blocchi in? sono gli stessi, e cioè se? e? sono uguali. Perché se? e? sono diversi, quindi sicuramente almeno uno dei blocchi in codificato? e codificato? sarà diverso, perché tutti i blocchi in? e tutti i blocchi in? non può essere uguale anche se? e? sono diversi. Quindi la rivendicazione è trivialmente vera se? =?. Mentre se? non è uguale?, questo significa il numero di blocchi in? e numero di blocchi in? non sono uguali, quindi sicuramente la rappresentazione binaria del numero di blocchi in? e la rappresentazione binaria del numero di blocchi in? sarà diverso. Questo significa il primo blocco che stiamo effettivamente mettendo in codifica? e il primo blocco che mettiamo in codifica? sarà diverso, il che garantirà che nel complesso il codificato? e codificato? sono diversi. Così questo dimostra la nostra affermazione che il set di immagini della mappatura che abbiamo considerato qui vi regala un prefisso - free set. (Fare Slide Time: 06 :21) Quindi, ora vediamo come applichiamo questa codifica a prefisso - free to a prefisso - wisesecure PRF e ottenere un blocco di blocco completamente sicuro PRF. Quindi il nostro obiettivo è costruire un PRF completamente sicuro di presa? - bit key e una sequenza di blocchi come input fino a l − 1 blocchi ogni dimensione? bit, e per ottenere un'emissione di dimensione fissa delle dimensioni? bit. E per la dimostrazione, ipotizza che vogliamo operare questo CBC PRF completamente sicuro su un input composto da 2 blocchi? 1 e? 2.So quello che faremo è che prima convertiamo questo input? applicando il nostro prefisso deterministico? codifica gratuita. Ovvero questo messaggio? viene convertito in un input codificato. E quando si convertono in input codificati, poi i blocchi di messaggi si ripetono come è e a parte che all'inizio ora abbiamo un nuovo blocco, ovvero la rappresentazione binaria del numero di blocchi che ci sono. Ora abbiamo un altro blocco rispetto al numero di blocchi presenti? e una volta che abbiamo l'input codificato quello che facciamo è applicare la costruzione esistente cioè il prefisso del blocco saggio - CBC sicuro gratuito con la chiave delle dimensioni? bit. E l'output sarà considerato come l'output del blocco saggio completamente sicuro CBC per il messaggio? sotto la chiave?. Ora perché questa costruzione è intuitivamente sicura? Perché ora anche se un avversario chiede l'output della funzione su un input? 1 e su un input? 1,? 2, arriverà l'output della funzione sulla sequenza di input < 1 >,? 1 e la sequenza di uscita < 2 >,? 1,? 2. E da qui non può lanciare l'attacco che avevamo visto quando si discute dell'insicurezza del prefisso - saggio - free secure PRF. Perché anche ora, sta facendo delle query che non costituiscono un set senza prefisso, in sostanza quelle query vengono convertite in un'altra serie di query, che è un set senza prefisso e dal punto di vista di un avversario, ora è bello come interagisce con un normale PRF.So che è l'idea complessiva della prova di sicurezza ma i dettagli formali sono effettivamente avanzati in natura ed è per questo che sto saltando i dettagli qui. Se si vede il vantaggio di questa costruzione, ovvero questo modo di costruire blocco - saggio completamente sicuro PRF tramite codifica deterministica. (Fare Slide Time: 09 :13) Poi il vantaggio è che abbiamo bisogno di una sola chiave a differenza del CBC PRF criptato, dove dobbiamo operare con 2 tasti. Tuttavia, gli svantaggi sono i seguenti. Abbiamo bisogno di un ulteriore richiamo PRF, per questo ulteriore blocco che stiamo introducendo qui. Idealmente ci aspettiamo un PRF, dove il numero di richiami di base PRF è uguale al numero di blocchi nel messaggio. Ma in realtà in questa costruzione complessiva, dobbiamo avere un ulteriore richiamo della base PRF. E la brutta notizia di questa costruzione è che non costituisce più un MAC streaming. Poiché la lunghezza del messaggio o il numero di blocchi nel messaggio devono essere conosciuti in anticipo rispetto al mittente. Perché se il numero di blocchi nel messaggio non è noto al mittente in anticipo che poi la codifica del messaggio non può accadere, perché la codifica richiede la rappresentazione binaria del numero di blocchi nel messaggio che è presente che deve essere inserito all'inizio. Ma è per questo che non ti dà un MAC in streaming. Ecco quindi l'approccio di passare da un prefisso di blocco - saggio gratuito PRF a un blocco saggio completamente sicuro PRF usando la codifica deterministica. (Fare Slide Time: 10 :30) E ora vediamo come possiamo passare da questo prefisso - wise prefisso gratuito PRF per bloccare - saggio completamente garantito PRF utilizzando un prefisso randomizzato di codifica gratuita. Quindi il motivo per cui vogliamo andare per un prefisso randomizzato a codifica gratuita è che i problemi che affrontiamo con il prefisso deterministico free - encoding è che non otteniamo uno streaming MAC. E dobbiamo avere un richiamo aggiuntivo della base PRF.E la soluzione per aggirarsi intorno a questi 2 problemi è quella di utilizzare un prefisso a prefisso gratuito che sarà una codifica a chiave. E il modo in cui facciamo la codifica è il seguente. Quindi prima presentiamo alcune notazioni qui. Quindi immaginate di avere 2 input sequenza di blocco, diciamo input? e input? ognuno composto da blocchi fino a l, ognuna di dimensioni? bit e se? è un prefisso di? o se? è un prefisso di?, poi abbiamo usato una notazione? ~ ?.Così ora introduciamo la definizione di quello che chiamiamo randomizzato? - prefisso free - encoding, dove? è qualche parametro. E cosa fa questa codifica, ci vuole come input una chiave di dimensione? bit e una sequenza di blocco costituita da blocchi fino a l e ti dà un output codificato che è un output codificato con chiave per l'input. E quando dico che è randomizzato? - prefx free - encoding, cosa significa è che la probabilità di ottenere 2 input? e? dal dominio di input, composto da blocchi l blocchi, tale che sotto la stessa chiave?, le corrispondenti uscite codificate sono correlate tra loro da questa relazione di prefisso è delimitata da?. Questo significa che se hai una sequenza? e se hai un'altra sequenza?, poi la possibilità che codificato? e codificato? è prefisso l'uno dell'altro, i. e l'encoded? è un prefisso di codificato? o il codificato? è un prefisso di codificato? è in alto delimitato da?. Questo è quello che intendo quando dico che ho una codifica randomizzata? - prefisso - free. (Fare Slide Time: 12 :44) Quindi in sostanza l'idea qui è che, se c'è un avversario computazionalmente delimitato, e se non conosce il valore della chiave? con la quale stiamo effettivamente facendo la codifica, poi per l'avversario è molto difficile arrivare con un paio di input (?,?) costituiti da blocchi fino a quelli codificati? è un prefisso di codificato? o il codificato? è un prefisso di codificato? .Ecco qual è il requisito di sicurezza da questo randomizzato? - prefisso free - encoding. Sottolineo qui che la mappatura o il modo in cui viene operata questa codifica randomizzata, non è necessario che la mappatura sia una mappatura iniettiva. Questo significa che si possono avere più input?, la cui codifica sarà la stessa sotto la chiave?. Ma la garanzia di sicurezza che otteniamo da questo? - prefisso free - encoding è che anche se ci potrebbero essere diversi candidati che sotto la chiave? ti avrebbe dato la stessa emissione codificata, la probabilità di trovare un tale multiplo? il tempo polinomiale del peccato dovrebbe essere delimitata da qualche quantità trascurabile o dalla quantità?. sottolineo anche che a differenza del prefisso deterministico free - encoding, la codifica che stiamo costruendo qui, ovvero la codifica a chiave, potrebbe non darti un set senza prefisso. Tuttavia anche se non vi darà un set senza prefisso, la possibilità che l'avversario possa inventarsi una brutta coppia di input (?,?), tale che codificato? è un prefisso di codificato? o viceversa, dovrebbe essere delimitato dalla probabilità?. E se lo garantisce? è molto piccolo, poi ci siamo fatti. (Fare Slide Time: 14 :30) Quindi quello che stiamo per fare ora è che definiremo una codifica gratuita? - prefisso gratuito per la nostra destra CBC PRF. E il modo in cui definiamo questa codifica è il seguente. Quindi immaginate di avere un input composto da diversi blocchi, diciamo? numero di blocchi, dove? è delimitato da l e ogni blocco è di dimensioni? bit. E abbiamo una chiave? con cui vogliamo essere codificanti. Così l'output codificato? sarà il seguente: ripetete tutti i blocchi di? tranne l'ultimo blocco. E l'ultimo blocco è sostanzialmente lo XOR dell'ultimo blocco dell'effettivo? e la chiave?, così che ishow stiamo effettivamente elaborando l'encoded?. E la mia affermazione è che se la chiave per questa codifica viene selezionata uniformemente casualmente dalla serie di? - bit stringhe, allora questa mappatura costituisce una codifica a 12? - prefisso free. Questo significa la probabilità che un avversario che non conosce il valore di?, possa arrivare con 2 input? e?, tale che o codificato? è un prefisso di codificato? o viceversa è superiore delimitato con probabilità 12?, che è sicuramente una funzione trascurabile nel parametro di sicurezza. Quindi dimostramola. Quindi immaginate di avere un input?, una sequenza di blocco? e un altro input?, una sequenza di blocchi e dire? e? sono diversi. E vogliamo scoprire quali sono le possibilità che per gli codificati? e codificato?, o codificato? è un prefisso di codificato? o viceversa. Quindi prima di tutto se ne accorge che se il numero di blocchi in? e un numero di blocchi in? sono uguali, e se? non è uguale?, quindi per ogni valore della chiave sicuramente né codificato? sarà un prefisso di codificato? o viceversa. Perché quando facciamo la codifica, proprio tutti i blocchi di? tranne l'ultimo blocco e tutti i blocchi di? tranne l'ultimo blocco sarà presente nei outputs codificati rispettati. E l'ultimo blocco sarà lo XOR rispetto alla chiave, quindi sicuramente tutti saranno diversi e non saranno né prefisso l'uno dell'altro, dall'altro considerare uno scenario, dove dire senza perdita di generalità che il numero di blocchi? in? è inferiore al numero di blocchi? in? e? non è uguale a?. Allora qual è la probabilità che codificato? è un prefisso di codificato?? Ben codificato? sarà un prefisso di codificato?, se e solo se? ??avvenire? =?? congedi. Ma questo vale solo se il valore di chiave selezionato per fare la codifica è in realtà lo XOR dell'ultimo blocco di? e il blocco? ?h di?. E dato che la chiave per la codifica viene scelta casualmente dal set di? - bit stringhe, la probabilità che effettivamente la chiave soddisfi questa relazione è 12?.That significa, la codifica che abbiamo visto è una codifica molto semplice, ma ha una proprietà molto potente che ti dà una codifica a 12? - prefisso - senza prefisso. E cioè se un avversario computazionalmente delimitato, che non conosce il valore della chiave casuale?, non può inventarsi una brutta coppia di input (?,?), tale che o codificato? è un prefisso di codificato? o viceversa. (Fare Slide Time: 18 :33) Così ora vediamo che come usando questo prefisso randomizzato in omaggio, possiamo convertire il prefisso di blocco saggio gratuito PRF in un blocco wise, completamente sicuro PRF. E l'idea è la stessa che abbiamo usato per il caso di codifica deterministica. L'unica differenza è che invece di applicare la codifica deterministica, applichiamo la codifica randomizzata. Quindi ora opereremo con 2 chiavi ognuna delle dimensioni? bit. Quindi è per questo che la chiave complessiva per il CBC completamente sicuro di blocco sarà di taglia 2? bit e può supportare una sequenza di blocchi costituiti da fino a blocchi, dove ogni blocco è di dimensioni? bit e ti darà un output di dimensione fissa. Per la dimostrazione ipotizza che abbiamo un messaggio composto da fino a 3 blocchi. Quindi quello che facciamo è che la chiave complessiva per il CBC PRF è interpretata come 2 porzioni di? - bit chiavi. Quindi la prima parte è? 1 e con? 1, facciamo prima la codifica dell'input, ovvero il messaggio? è codificato come per la chiave? 1 tramite il prefisso randomizzato free - encoding. E la dimensione dell'output codificato e la dimensione dell'input rimane la stessa, questo è importante. Questo è in contrasto con il prefisso deterministico free - encoding, in cui l'output codificato è costituito da un altro blocco rispetto al numero di blocchi presenti nell'input. E una volta che abbiamo l'input codificato, ora applichiamo il prefisso - wise prefisso gratuito PRF con la seconda parte della chiave. Ecco perché abbiamo bisogno di 2 chiavi, una per fare la codifica randomizzata e una per fare l'effettivo calcolo PRF. E qualunque sia l'output che abbiamo ottenuto dal blocco saggio, prefisso - free sicuro PRF, considerato come l'esito complessivo del PRF completamente sicuro sotto la chiave? 1,? 2for la sequenza di messaggi? .Ora intuitivamente, perché questa costruzione è sicura, perché ciò che abbiamo fatto è con altissimità, abbiamo infatti convertito la serie di input di questo CBC PRF in un set codificato senza prefisso. Anche se non è in linea di principio, un set codificato senza prefisso, la probabilità che un avversario senza la conoscenza della chiave? 1 si avvicinerebbe a una brutta coppia di input? e? ′ tale che l'encoded? è un prefisso di codifica? ′ o viceversa, è molto, molto trascurabile. E questo assicura che la costruzione complessiva sembra una normale costruzione PRF. I vantaggi di questo modo di costruire un PRF completamente sicuro a blocchi è che non abbiamo bisogno della lunghezza del messaggio da conoscere in anticipo. Ecco perché otteniamo ora un MAC in streaming o uno streaming PRF. E non abbiamo bisogno di ulteriori richiami di base PRF. Così ci liberiamo di entrambe le carenze che c'erano, quando utilizzavamo un prefisso deterministico free - encoding; non ci stava dando un MAC in streaming e abbiamo bisogno di un ulteriore richiamo PRF perché il prefisso deterministico free - encoding richiede un ulteriore blocco nell'emissione codificata, ma non è così. Comunque sia necessario pagare un prezzo qui, lo svantaggio è qui è che ora è necessario operare con 2 tasti, mentre se vediamo il prefisso deterministico free - encoding, stavamo operando solo con una chiave, quindi ora si ha uno scambio. (Fare Slide Time: 22 :06) Così ora vediamo come si va a costruire PRF bit - wise completamente sicuri PRF. Ricordate quindi che il nostro obiettivo finale è quello di costruire un codice di autenticazione PRF o un messaggio che possa scattare una sequenza di bit come input. Quindi, fino ad ora il PRF o il MAC che abbiamo costruito potrebbero prendere solo blocchi o sequenza di blocchi come input. Quindi l'idea alla base di costruire PRF che opera su una sequenza di bit è che si applica per la prima volta qualche riempimento non ambiguo, a seconda che la stringa bit di input che si desidera alimentare come input per il vostro PRF sia un multiplo della dimensione del blocco della base PRF oppure no. Quindi per semplicità supponiamo che la dimensione del blocco della base PRF sia? bit. Ora vuoi progettare un PRF che denota come?CBC ∗, prendendo una chiave di dimensione? bit, e può assumere qualsiasi sequenza bit di input di lunghezza fino a? l bit. E ora potrebbero esserci 2 possibili casi, a seconda che l'input per questo PRF?CBC ∗ it's size è uguale a qualche multiplo di? o no. Ricordate quindi che sto ipotizzando che la dimensione del blocco della mia base PRF sia? bit. Quindi il caso 1 potrebbe essere quando la dimensione in ingresso di? è qualche costante? tempi?. E il caso 2 potrebbe essere quando la dimensione dell'input non è uguale a un tempo costante?, questo significa che non è un multiplo?. Quindi a seconda dei 2 casi, operiamo il cosiddetto PRF?CBC ∗ che siamo interessati a costruire in 2 modi diversi. Prendiamo quindi il caso 1, in entrambi i casi dobbiamo fare un imbotto. Quindi cosa facciamo nel caso 1? Quindi per esempio, immaginate il mio messaggio che voglio inserire qui è di dimensioni 2? bit. Questo significa che posso dividerlo in 2 blocchi di? bit. E ora devo fare un imbotto senza ambiguità, quindi in questo caso, in realtà non ho bisogno di fare un imbotto perché il mio messaggio è già un multiplo di? bit. Ma per indicarlo al destinatario che in realtà non ho bisogno di fare un riempimento, quello che farò qui è che aggiungo un blocco fittizio composto da? bit a partire da 1 seguito da tutto 0s.So che è un'indicazione dal lato mittente che in realtà non sto facendo alcun riempimento. Ora per operare?CBC ∗in questo caso, quello che faremo è prendere una chiave? 1 che vedremo presto come si calcola esattamente. Quindi ricordate che la chiave complessiva chiave per?CBC ∗è solo 1 chiave di dimensione? bit. Ma quello che faremo è ricavare diversi sub - chiavi e a seconda che ci troviamo nel caso 1 e il caso 2, useremo alcuni sottoinsiemi di quelle sub chiavi. Quindi in questo caso usiamo una sub - chiave che chiamo come? 1. E poi quello che faremo qui è che opereremo il nostro blocco - saggio completamente sicuro CBC PRF con 2 chiavi, ognuna di dimensioni? bit. E visto che si tratta di un PRF completamente sicuro a blocchi può scattare una sequenza di blocchi di? bit, fino a l + blocchi 1such. E ti dà un output.Quindi, se vedi la vista esterna del PRF?CBC ∗ che stiamo per costruire qui, potrebbe prendere un input di dimensioni? l bit. E se la mia dimensione di ingresso è già un multiplo?, questo significa che potrebbe avere fino a l numero di blocchi. Ma se si vede l'invocazione interiore del PRF completamente sicuro di blocco allora potrebbe arrivare fino a l + 1 blocchi di dimensioni poco? bit. Vi starete chiedendo perché questo ulteriore blocco 1? Questo ulteriore blocco di 1 potrebbe arrivare se in realtà la tua dimensione dei messaggi è già un multiplo?, in tal caso è necessario aggiungere un nuovo blocco fittizio di? bit. Ecco perché l'invocazione interiore del mio blocco - saggio completamente sicuro PRF potrebbe richiedere fino a l + 1 blocchi. Quindi internamente quello che faccio è operare il mio blocco - saggio completamente sicuro PRF e per fare che in realtà io prendo per la prima volta il messaggio imbottita e applico una codifica randomizzata senza prefisso con la sottochiave? 1 e poi uso un altro sub - tasto? 0 .Ancora, vedremo presto come sono esattamente le sub - chiavi? 0,? 1. Quindi una volta che avremo il prefisso free - encoding del messaggio imbottita, prendiamo la sub - chiave? 0 e poi eseguiamo il nostro blocco - saggio completamente sicuro CBC e qualunque cosa venga fuori come l'output, che viene preso come risultato complessivo del bit? saggio sicuro PRF?CBC ∗ sotto la chiave? per il messaggio?. Questo è il caso 1, quando la lunghezza del messaggio è già un multiplo della dimensione del blocco della base PRF.Let vediamo come vengono consegnate le cose per il caso 2. Quindi nel caso 2 immaginate di avere un messaggio, di cui has1 pieno blocco? bit e il secondo blocco non ha pieno? bit. Quindi di nuovo devo fare un imbottonamento qui ma qui non devo aggiungere un nuovo blocco fittizio completo perché mi basti aggiungere un 1, seguito dal numero richiesto di 0 € per garantire di avere il secondo blocco che ha anche? bit. E poi uso un altro tasto sub in questo caso, che chiamo? 2, per fare il prefisso free - encoding del messaggio imbottiti. E poi, internamente, invoco il mio PRF completamente sicuro di blocco che ora avrà solo fino a l numero di blocchi. Perché non aggiungerei alcun blocco fittizio nel caso 2 qui. E qualunque cosa venga come output che viene assunto come output del mio PRF?CBC ∗ per l'input? in chiave?, quindi questi sono i 2 casi qui. (Fare Slide Time: 28 :08) Ora vediamo come esattamente quel sub - chiavi? 0,? 1,? 2 sono derivati. Ricordate quindi che la chiave complessiva per il mio PRF?CBC ∗ è solo 1 chiave? di dimensioni? bit. Quindi le chiavi? 0,? 1,? 2 sono derivate dalla chiave effettiva? per il PRF?CBC ∗ da un algoritmo di generazione sub - chiave, che sarà pubblicamente conosciuto. E a seconda che il mittente sia nel caso 1 o si trova nel caso 2, ne deriveranno le chiavi? 0,? 1,? 2, ma a seconda che si tratti di caso 1 o caso 2, si va a usare? 0,? 1 o si va a usare? 0,? 2.Now come il destinatario effettuerà l'operazione. Quindi immaginate un messaggio e un tag corrispondente viene inviato alla fine ricevente e un ricevitore deve verificare, se il messaggio è il giusto, se il tag? è il tag giusto sul messaggio? o no. E immaginate che il ricevitore abbia anche la stessa chiave?. Quindi quello che il ricevitore sta per prima fare è che il ricevitore ricava i sub - chiavi? 0,? 1,? 2.And poi deve rimuovere l'imbottonatura perché ricordarsi, il ricevitore è quello di scoprire per prima cosa esattamente quello che è stato il riempimento che il mittente ha eseguito al suo interno. Quindi per rimuovere l'imbotto, quello che è il ricevitore sta andando a fare è, può iniziare a paralizzare il messaggio dalla posizione giusta alla posizione di sinistra e fa una scansione completa. E smette di scansare non appena incontra il primo quando si scansola da destra a sinistra. Appena incontra il primo, sa che è l'imbotto che è stato fatto e che può rimuovere e buttare giù l'imbotto. E questo può dire al destinatario se il ricevitore dovrebbe funzionare come per caso 1 o come per caso 2. E io affermo che si tratta di un imbotto non ambiguo. Ovvero la strategia di ricezione della scansione del messaggio dalla posizione giusta alla posizione di sinistra e in cerca della prima ricorrenza del 1 e stripping della prima ricorrenza di un seguito da parte di tutti i successivi 0s è effettivamente e senza ambiguità per il ricevitore. Perché se effettivamente siamo stati nel caso 1 che significa se mittente ha effettivamente aggiunto un blocco fittizio completo. Poi effettivamente la prima ricorrenza di 1 quando il destinatario farà la scansione sarà quando sarà effettuata con l'intero ultimo blocco, mentre se il mittente sarebbe stato nel caso 2, per il destinatario la prima ricorrenza del 1 sarà nell'ultimo blocco stesso e questa è un'indicazione che è nel caso 2.So una volta ricevitori si identificano se si tratta del 1 o se è il caso 2, a seconda del caso richiesto può verificare quella parte di tag per il messaggio ricevuto, sia agendo sul PRF?CBC ∗ con le sottochiavi? 0,? 1 o con i sub - chiavi? 0,? 2.So che mi porta alla fine di questa lezione. Quello che abbiamo fatto in questa lezione è che abbiamo visto come costruire un codice di autenticazione dei messaggi per messaggi lunghi arbitrari usando la dimensione fissa PRF.E l'approccio per la costruzione è che cerchiamo di progettare PRF sicuri in grado di scattare una stringa di bit arbitrario come input e darvi un'uscita di dimensione fissa. Se è possibile costruire tali PRF che possono funzionare su sequenza arbitraria di bit e ti dà un'uscita di dimensione fissa. Poi utilizzando tale PRF possiamo facilmente ottenere un codice di autenticazione dei messaggi che può funzionare su stringhe di bit come input. E abbiamo visto una costruzione candidata per un PRF che opera su una sequenza di bit, ovvero theCBC PRF. E abbiamo visto diversi modi di costruire che CBC PRF ovvero, abbiamo visto per primi come costruire un prefisso - saggio - free sicuro PRF, che è sicuro contro un avversario più debole. E poi applicando diversi meccanismi cioè crittografia, deterministica, prefisso free - encoding, prefisso di codifica a prefisso casuale, convertiamo quella forma più debole di PRF, namelyche è sicura solo contro un avversario protetto da prefisso in un PRF completamente sicuro, che è sicuro anche contro un avversario, che può fare delle query che non costituiscono un set senza prefisso. E poi, infine, costruiamo o convertiamo questo PRF completamente sicuro di PRF utilizzando la modalità CBC. Quindi ora abbiamo uno strumento per autenticare i messaggi e anche per verificare se il messaggio ricevuto è stato ricevuto correttamente o meno. Namely se abbiamo un mittente e un destinatario che hanno una chiave condivisa? e se abbiamo un codice di autenticazione dei messaggi in grado di darvi un tag di dimensione fissa fisso per messaggi lunghi arbitrari. Poi per autenticare il mittente del messaggio è possibile compattare un tag di lunghezza breve o fisso per quel messaggio. E insieme al messaggio, il tag può essere comunicato al destinatario. Quando il ricevitore riceve quel tag e se il tag viene verificato correttamente con una chiave?, allora questo dà la garanzia al destinatario che ha originato dalla stessa persona che ha la stessa chiave? con cui la verifica del tag ha esito positivo. Ecco allora che il problema dell'autenticità e dell'integrità sono risolti. Spero che ti sia piaciuta questa lezione grazie.

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