Loading
Study Reminders
Support
Text Version

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 Dr. Ashish Choudhury Department of Computer Science Indian Institute of Science – Bangalore Collezione – 48 CCA Secure Public Key Ciphers (Rinvio Slide Time: 00.34) Ciao a tutti, benvenuti a questa lezione. Tanto per ricapitolarci, nell'ultima lezione abbiamo discusso rigorosamente la nozione di sicurezza CPA nell'ambito degli schemi di crittografia pubblica. Così il piano per questa lezione è il seguente. Introdurremo la nozione di sicurezza CCA per i crittosistemi a chiave pubblica. Discuteremo la motivazione per studiare la sicurezza della CCA, considerando scenari reali del mondo. Vedremo la definizione formale di sicurezza CCA Poi vedremo le definizioni di sicurezza CCA per il meccanismo di incapsulamento chiave e poi vedremo una costruzione generica di cifratura in chiave pubblica sicura di CCA, da qualsiasi meccanismo di incapsulamento sicuro CCA e qualsiasi cifratura simmetrica sicura CCA. (Riferimento Slide Time: 01 :13) Così iniziamo la nostra discussione con la differenza tra il modello avversario passivo e un modello avversario attivo, nel contesto dell'ambientazione pubblica. Quindi se consideriamo l'avversario passivo, allora lo scenario è il seguente. Quindi immaginate di avere un ricevitore qui che ha fatto la generazione chiave e ha impostato la sua chiave pubblica, resa disponibile in ambito pubblico. E supponiamo che una copia autenticata del tasto pubblico del destinatario sia disponibile in ambito pubblico. E usandolo, diciamo che un mittente codifica una sequenza di messaggi dicono 1 a l e il testo di cifratura risultante viene comunicato sul canale. Poi nel modello passivo ipotizziamo che l'avversario abbia la capacità di leggere solo i testi cifrati, non può cambiare il contenuto di cifratura, non può modificare il loro ordinamento, non può introdurre nuovi cifrati e così via. Mentre se entriamo nel modello adversariale attivo allora l'avversario è più forte nel senso che non può solo leggere i testi cifrati, ma può cambiare il contenuto del testo di cifratura, può inserire nuovo testo cifrato a suo nome o far finta che come se vengono dal mittente, può cancellare i testi cifrati comunicati dal mittente, può riordinare i testi cifrati e può fare qualsiasi altro tipo di attacco a cui si possa pensare. Quindi si tratta di un modello avversario più potente rispetto al modello avversario passivo. E proprio per ricordare, abbiamo visto la differenza tra il modello passivo passivo e il modello avversario attivo nel contesto di impostazione di chiave simmetrica. Quindi in questo momento stiamo ora facendo la stessa discussione nel contesto dell'impostazione della chiave pubblica. E si scopre che rispetto all'impostazione di chiave privata, gli avversari dannosi o attivi sono più preoccupanti nell'impostazione della chiave pubblica. E questo è dovuto al fatto che nell'impostazione public-key chiunque può calcolare o comunicare con un ricevitore solo accedendo ai ricevitori chiave pubblica, perché nell'impostazione chiave pubblica la crittografia avviene utilizzando la chiave pubblica del destinatario e visto che sarà disponibile in ambito pubblico, se sono un avversario e voglio compattarlo e inviarlo al destinatario, posso farlo. Questo è in contrasto con l'impostazione del tasto privato, dove se sono un avversario e non ho la chiave simmetrica che è disponibile tra il mittente e il destinatario, allora è molto improbabile che mi venga in mente un testo di codifica valido e lo invii al destinatario per conto del mittente, se sto utilizzando uno schema di crittografia autenticato. Il che significa che gli avversari dannosi sono davvero più di una preoccupazione nell'impostazione della chiave pubblica rispetto all'impostazione delle chiavi private. (Riferirsi Slide Time: 03.56) Così che ci motivano a studiare gli attacchi della CCA nel contesto del mondo chiave pubblico. Quindi quello che faremo il prossimo è, andiamo a vedere alcuni scenari reali del mondo dove effettivamente possono essere lanciati attacchi di CCA. Quindi considerare questo esempio dove dire una password è condivisa tra un utente e la chiave pubblica di banca è e la sua chiave segreta è. E la sua chiave pubblica è disponibile in ambito pubblico. E il consueto protocollo tra un utente legittimo e una banca è il seguente. Quindi se un utente vuole avviare una sessione con la banca poi la prima cosa che l'utente fa è crittografare la propria password utilizzando la chiave pubblica della banca utilizzando qualche processo di crittografia a chiave pubblica. E il testo di cifratura risultante è comunicato sul canale. E a ricevere la password crittografata, la banca decodifica la password crittografata e la confronta con la password che ha memorizzato con se stessa. E dà un messaggio di errore, cioè una password errata, se trova che su decodifica che la password recuperata, ovvero, non è uguale alla password, che viene memorizzata sul sito della banca. (Riferimento Slide Time: 05.15) Quindi questo è un protocollo standard. Ora vediamo cosa succede se si prende questo semplice protocollo nel modello avversario malevolo. Immaginate quindi che ci venga dato un avversario, che è un avversario attivo e che ha eavescalo sulla password criptata. Conosce la chiave pubblica della banca perché la sua disponibile in ambito pubblico, ma l'avversario non è a conoscenza della password crittografata nel testo delle cifrature. E il suo obiettivo è scoprire qual è esattamente la password. Ora cosa può fare l'avversario, può prendere il testo cifrato che è stato comunicato da un utente legittimo alla banca e interrompe la comunicazione. E quello che fa, modifica alcuni bit del testo di cifratura e si presenta con un nuovo testo cifrato, crittografando qualche messaggio stesso usando la chiave pubblica della banca. Quindi quello che sta facendo è solo interrompare la comunicazione tra l'utente legittimo e la banca. E invece si arriva con un nuovo testo cifrato, diciamo ed è una crittografia di qualche noto testo di pianura, noto già all'avversario. E forse possiamo immaginare che in questo particolare esempio l'avversario possa anche fare cose brutte. Anzi, può così accadere che l'avversario non lo sappia e che modifichi solo alcuni bit del testo di cifratura, e ne venga fuori. E potrebbe essere il caso di una crittografia di, che è anche una possibilità.Quindi qualunque cosa possa essere il caso l'avversario inoltra il testo cifrato alla banca e attenda la risposta della banca. Ora se vede che nella risposta a, sulla decriptazione la banca lancia la password errata del messaggio di errore, allora sostanzialmente l'avversario qui sta arrivando a sapere che non è la password giusta, che è stata crittografata. Perché se effettivamente sarebbe stata la password giusta, che viene crittografata nel testo cifrato poi su decodifica del cifrario, la banca non avrà gettato la password errata del messaggio di errore. Ma dal momento che la banca sta lanciando la password errata del messaggio, in qualche modo l'avversario qui sta per imparare che la password condivisa tra l'utente legittimo e la banca non è, è qualcosa di diverso da. E ora l'avversario può provare a ripetere lo stesso attacco. Questo significa che quello che può fare è che si può arrivare solo con un altro testo cifrato, diciamo, che potrebbe essere una crittografia di qualche testo semplice, diciamo, e sperare che effettivamente sia la giusta password e inoltri il testo di cifratura alla banca e aspettare di vedere la risposta della banca. E ancora se arriva il messaggio di errore, allora l'avversario impara qui che la password non è e così via. Quindi quello che sta accadendo qui, in sostanza in questo esempio l'avversario sta in qualche modo ottenendo un servizio di oracolo di decriptazione dalla banca senza far sapere realmente alla banca che è avversario che sta effettivamente persuadendo la banca a decriptare i testi cifrati della scelta degli avversari. (Riferimento Slide Time: 08 :42) Ora consideriamo un'altra applicazione qui. E qui in questa applicazione, diciamo che abbiamo un ricevitore Bob, che ha attivato la sua chiave pubblica e la chiave segreta e la chiave pubblica è disponibile in ambito pubblico. E dire che Alice ha una mail, diciamo, che vuole comunicare segretamente a Bob. Quindi quello che fa è che esegue l'algoritmo di crittografia a chiave pubblica utilizzando la chiave pubblica di Bob e la posta crittografata risultante viene comunicata a Bob. Ora supponga che Charlie sia interessato a scoprire cosa sta accadendo, quali sono esattamente i contenuti dell'email? Così quello che Charlie può fare è, può oridire l'email crittografata e quello che può fare, può modificare certi bit di per produrre una nuova mail crittografata e inviarla a Bob e fingere come se quella fosse una mail crittografata che Charlie vorrebbe inviare a Bob. Ora Bob quello che farà è, quando riceverà il testo cifrato, penserà come se Charlie volesse inviare una mail crittografata a Bob. E sulla decodifica, quello che Bob può fare è, supponiamo di decriptarlo recupera il contenuto email. E potrebbe essere possibile che Bob volesse rispondere a Charlie. E mentre si riparte, potrebbe voler citare il messaggio o l'email che Bob ha ottenuto dopo aver decriptato l'email crittografata. Questo significa la risposta email che ora Bob sta inviando potrebbe essere concatenata con, a seconda dell'applicazione sottostante. Ora quando questa risposta di Bob insieme all'email decodificata torna a Charlie, quello che fondamentalmente Charlies sta qui sta ottenendo un servizio di oracolo di decodifica. E cioè impara che il testo cifrato modificato codifica in realtà il contenuto delle email. E in questo caso, in realtà se effettivamente il mio processo di crittografia sarebbe stato sicuro CCA sicuro, allora questo non dovrebbe essere possibile. Ma dal momento che il mio processo di crittografia non è CCA sicuro qui, Bob qui a ricevere un testo cifrato modificato è completamente privo di indizi che l'email modificata sia stata inoltrata da un avversario qui. E si sta semplicemente decodificando quel cifrato modificato e rispondendo all'avversario, pensando che l'email originasse da quella persona. (Riferimento Slide Time: 11 :15) Ora vediamo l'esempio finale qui. E questo potete immaginare un protocollo di bidding qui e lo scenario è il seguito. Abbiamo un banditore che ha la sua chiave pubblica messa a disposizione nel dominio pubblico. E diciamo che abbiamo 2 offerenti che fanno la bidding per un oggetto prezioso e dicono che il bidder Bob va per primo. Ha un'offerta privata, che codifica utilizzando la chiave pubblica del banditore, con il banditore in questo caso è Alice. E ora supponi che Charlie sia un bidone malevolo che vuole vincere l'offerta, ma non conosce il valore perché quello è criptato usando la chiave pubblica dell'Alice. Quindi quello che Charlie può fare qui è, può oridire sull'offerta crittografata di Bob. E dopo averlo fatto può modificare l'offerta crittografata a un'altra offerta criptata. E supponiamo che il mio processo di crittografia sia tale che l'offerta crittografata modificata sia una crittografia dell'offerta 2 volte l'offerta di bob, e inoltra l'offerta crittografata modificata ad Alice. E Charlie pretende come se fosse l'offerta che Charlie vorrebbe fare qui. Quindi questa proprietà qui, dove è possibile per un avversario, cioè il malintenzionato Charlie, per eavesare un testo cifrato di un messaggio sconosciuto e da quel cifrato produce un altro cifrato correlato che è una crittografia di qualche messaggio correlato, ovvero 2 volte il messaggio, criptato nel testo cifrato, è chiamato come proprietà di malleabilità del cifrato. Quindi ricordati quando stavamo discutendo di processo di crittografia simmetrica, c'era anche, abbiamo discusso la nozione di malleabilità e malleabilità potrebbe essere possibile anche nell'ambito del processo di crittografia pubblica. Così ora in questo esempio se effettivamente è possibile che Charlie si converta in, tale che sia una crittografia a chiave pubblica del messaggio 2 volte, allora quello che Alice potrebbe fare è, quando decripta e, scoprirà che è l'offerta vincente. Perché corrisponde al valore 2 volte. E ora può annunciare pubblicamente che Charlie ha vinto l'offerta per bidding per il valore di offerta 2 volte. E in questo caso dopo aver appreso il risultato, Charlie finisce per ottenere un servizio di oracolo di decodifica da Alice e finisce per vincere l'asta che avrebbe dovuto essere evitata se effettivamente il mio processo di crittografia sarebbe stato protetto da CCA. (Riferirsi Slide Time: 13.55) Così ora abbiamo visto diversi scenari reali del mondo dove possono essere lanciati attacchi CCA dove l'avversario può ottenere il servizio di oracolo di decodifica. Quindi da qui ora dobbiamo studiare formalmente la nozione di sicurezza CCA nell'ambito del sistema di cripto pubblico. Quindi, definiamo formalmente questo. Quindi a livello molto alto, l'obiettivo della sicurezza CCA è quello di realizzare cifrature indistinguibili, anche in presenza di oracolo di decodifica e la conoscenza della chiave pubblica disponibile con l'avversario. E questo è modellato da un gioco di risposta di sfida. Le regole del gioco sono le seguenti. Lo sfidante gestisce l'algoritmo di generazione chiave, dà la chiave pubblica a quell' avversario che è computazionalmente delimitato. Così poiché la chiave pubblica viene data esplicitamente all'avversario, può ottenere il servizio di oracolo di crittografia da solo crittografando qualsiasi testo di pianura della sua scelta. Ora quello che può fare in questo esperimento qui è, può chiedere l'oracleservice di decodifica presentando diversi testi di cifratura dallo spazio di testo del cifrario. E in risposta, lo sfidante deve decriptare tutti quei testi cifrati, usando la chiave segreta, che non è nota all'avversario. Ora la fase di sfida inizia dove l'avversario sottopone un paio di testi di pianura, con l'unica limitazione che le loro lenti dovrebbero essere uguali. E per preparare la sfida cifratura, il nostro sfidante sceglie casualmente uno di quei messaggi e la codifica usando la chiave pubblica. E ora diamo l'accesso avversario al servizio di oracolo di decodifica post - challenge, dove ancora può chiedere il servizio di oracolo di decriptazione o le decrisioni per molti testi cifrati della sua scelta, con la sola limitazione che, quel servizio di decodifica dell'oracolo è ristretto, poiché l'avversario è ristretto per chiedere la decodifica del testo cifrato. Perché se non mettiamo questa restrizione, allora non possiamo ottenere alcuna nozione significativa di segretezza. E se guardate i 3 esempi motivanti che ho dato in precedenza, in tutti quei 3 esempi l'obiettivo del Charlie o del cattivo era quello di ottenere un servizio di oracolo di decodifica di un testo cifrato modificato, ma non per il testo cifrato che è interessato al crack. Ora una volta che l'avversario ottiene un servizio di oracolo di decodifica per le query di oracolo post challenge, l'obiettivo degli avversari è quello di identificare se si tratta di una crittografia di 0 o 1. Quindi lo sottopone ad una risposta o a un output. E la regola dell'esperimento è, diciamo che l'avversario ha vinto l'esperimento, che equivale a dire che la produzione dell'esperimento è di 1, se e solo se ′ =. Questo significa che l'avversario ha individuato correttamente ciò che è criptato in sfida cifrato. E la nostra definizione di sicurezza è, diciamo che i nostri processi di crittografia sono il singolo messaggio CCA sicuro, se per ogni polenta volta l'avversario, la probabilità di successo dell'avversario vincente il gioco è delimitato da metà più funzione trascurabile nel parametro di sicurezza. O in modo equivalente, il vantaggio distintivo dell'avversario è delimitato da qualche funzione trascurabile. E cioè non importa, sia che si tratti di una crittografia di 0 o 1, con quasi la stessa probabilità la risposta dell'avversario dovrebbe essere la stessa. Il motivo per cui chiamiamo questo esperimento un unico messaggio CCA sicuro, perché l'avversario ha appena presentato un paio di testi di sfida e sta vedendo una crittografia di uno di essi. (Riferimento Slide Time: 17 :13) Possiamo estendere questa definizione in una versione semplice o in modo naturale, per incorporare la sicurezza CCA multi messaggio. Le regole del gioco saranno quasi uguali per quanto riguarda la sicurezza del singolo messaggio CCA, dove lo sfidante lancia la chiave pubblica all'avversario, l'avversario riceve il servizio di oracolo di decodifica e ora nella fase di sfida è consentito presentare una coppia di vettore di messaggi. Ma l'unica limitazione essendo quella componente - saggia i messaggi in 0vector e il messaggio nel vettore 1, dovrebbe essere della stessa lunghezza. Per preparare il testo di impugnatura della sfida, lo sfidante picchia uno di questi 2 vettori con uguale probabilità per la crittografia, e poi codifica tutti i testi di pianura nel vettore selezionato e il vettore di sfida cifrato viene dato all'avversario. L'avversario è nuovamente autorizzato ad avere accesso al servizio di oracolo di decodifica post challenge, con l'unica limitazione che non può chiedere la decodifica di qualsiasi testo cifrato presente nel vettore di sfida cifrato. Ora una volta che il nostro avversario è sufficientemente addestrato, deve individuare se il vettore cifrato di sfida che ha visto corrisponde a una crittografia del 0vector o del primo vettore. E diciamo che l'avversario ha vinto l'esperimento o la produzione dell'esperimento è di 1, se e solo se ha individuato correttamente se è vettore 0 o se è vettore 1, che è crittografato nel challenge cifrangente vettoriale. E la nostra definizione di sicurezza è, diciamo che i nostri processi di crittografia sono multi - messaggio CCA sicuri se per qualsiasi avversario polenta che partecipa a questo esperimento, la probabilità che possa vincere l'esperimento è delimitata dalla metà più qualche funzione trascurabile nel parametro di sicurezza. O in modo equivalente, il vantaggio distintivo dell'avversario è delimitato da qualche funzione trascurabile nel parametro di sicurezza. E come previsto possiamo dimostrare che il singolo messaggio CCA sicurezza e la sicurezza multimediale CCA sono equivalenti, anche nel contesto di schemi di crittografia a chiave pubblica. Quindi non sto dando la prova completa qui, potete fare riferimento al libro di Katz-Lindell per la prova completa. (Riferimento Slide Time: 19.25) Così ora cerchiamo di definire la nozione di sicurezza CCA nel contesto dei cimici di chiave pubblica ibrida. Ricordate quindi nell'ultima lezione, abbiamo discusso che come usare un meccanismo di incapsulamento chiave e uno schema di crittografia simmetrica, possiamo inventarci una combinazione di entrambi per arrivare ad un processo di codifica ibrida più efficiente. Dove l'algoritmo di generazione chiave del processo di codifica ibrida eseguirà l'algoritmo di generazione chiavi di KEM e output la chiave pubblica e la chiave segreta, dove la chiave segreta sarà disponibile con il ricevitore e la chiave pubblica sarà disponibile nel dominio pubblico. Il processo di codifica dello schema ibrido sarà il seguente, esegue prima un algoritmo di incapsulamento chiave e ottiene una chiave simmetrica e un incapsulamento della chiave, denotato da. E poi la chiave è usata per criptare il testo di pianura, secondo l'algoritmo di crittografia chiave simmetrica per produrre il testo di cifratura. E il testo cifrato complessivo è l'incapsulamento della chiave simmetrica e la crittografia del testo di pianura. Analogamente, la decodifica avviene al termine ricevente; il ricevitore prima de incapsulare l'incapsulamento e ottiene la chiave simmetrica. E una volta che ottiene la chiave simmetrica, decapsula il componente cifrato, per recuperare il testo di pianura, utilizzando l'algoritmo di decodifica del processo di codifica simmetrica. E anche per ricordare, nell'ultima lezione, abbiamo dimostrato che se il mio KEM è CPA protetto e il mio processo di codifica simmetrica è COA sicuro, allora lo schema complessivo è CPA sicuro. Ma da ora stiamo valutando la sicurezza della CCA, dobbiamo individuare quali dovrebbero essere le proprietà di sicurezza dei miei blocchi di costruzione sottostanti. Si scopre che se voglio raggiungere la sicurezza CCA, allora definitivamente il mio processo di crittografia simmetrica sottostante allo schema di codifica ibrida dovrebbe essere protetto da CCA. Non è sufficiente avere solo la sicurezza COA o la sicurezza CPA per il processo di crittografia simmetrica sottostante. Per dimostrare il mio punto di vista, instanziamo il blocco simmetrico sottostante qui in questo processo di codifica ibrida tramite contromodalità di funzionamento, che sappiamo essere CPA sicuro ma non CCA sicuro. Immaginate quindi che un mittente abbia criptato un messaggio composto da 2 blocchi di tutto il 0s, utilizzando lo schema di codifica ibrida come per il suddetto processo di codifica ibrida. E il testo cifrato risultante è (. E come per i dettagli del processo di codifica di questo schema di codifica ibrida, il modo (sarebbe stato prodotto è il seguente. Prima un algoritmo di incapsulamento sarebbe stato eseguito per ottenere una chiave simmetrica e l'incapsulamento di quella chiave. E poi usando la chiave, richiamando la modalità di funzionamento del contatore, il blocco dei messaggi tutto 0s, seguito da tutti i 0s, sarebbe stato crittografato. Quindi la crittografia del messaggio che utilizza la chiave come per la modalità di funzionamento del contatore sarà la seguente. Verrà selezionato un contatore casuale, che sarà disponibile come parte del componente di testo di cifratura. E la crittografia effettiva dei blocchi del messaggio sarà di 1 ′ e 2 ′ come per la modalità di funzionamento contatore. Ora quello che vedremo qui nell'esempio è che immagina ci sia un avversario che ha eavesato il testo cifrato (e immagina che l'avversario sia un avversario attivo. Poi osservando (, è molto facile per l'avversario produrre un testo di cifratura modificato (, tale che quando questo testo di cifratura modificato viene inoltrato al destinatario e decodificato come per questo processo di codifica ibrida, porta il testo in pianura all ' 1s, seguito da tutti e 0s. E il modo avversario può farlo sfruttando la malleabilità della modalità di funzionamento in controsenso. Sostanzialmente deve produrre, dove il controvalore cioè 0 ′ viene mantenuto come è e il componente 2 ′ del testo cifrato viene mantenuto anche così com' è. La modifica è solo nel componente cifrato 1 ′. 1 ′ è ora modificato in 1 ′ ′ come 1 ′ ′ = 1 ′ ⨁0l⨁1l. E se 1 ′ viene modificato a 1 ′ ′, poi l'effetto di tutti i 0s e tutti i 0s cancelli. E fondamentalmente 1 ′ ′ ora corrisponde ad una modalità di contrasto della crittografia per il blocco dei messaggi tutti i 1 mt. E ora questo dato che questo processo complessivo è malleabile, possiamo facilmente dimostrare che questo non sarà il CCA sicuro. Quindi questo significa che se per tutto vogliamo che il processo di codifica ibrida globale sia protetto da CCA, sicuramente il mio schema di crittografia simmetrico sottostante che sto utilizzando dovrebbe essere il CCA sicuro. (Riferimento Slide Time: 24:20) Ma si scopre che solo instanziando la crittografia simmetrica sottostante da una crittografia simmetrica sicura CCA, non è sufficiente darci un processo di codifica ibrido sicuro CCA. E il motivo è questo, se si gioca il CCA GAME contro questo processo di codifica ibrida poi si ricorda che nel gioco CCA, all'avversario viene dato accesso al servizio di oracoli di decodifica. E cioè l'avversario può ora fare servizio di oracolo di decriptazione per qualsiasi tipo di testo di cifratura modificato, dove la prima parte del testo cifrato può essere qualsiasi di colore, cioè qualsiasi incapsulamento, seguito da qualsiasi cosa. E per rispondere a quelle query oracole di decodifica modificate, lo sfidante deve sostanzialmente decriptare testi così modificati utilizzando la chiave segreta. Ora se vedete l'algoritmo di decriptazione di questo schema di crittografia ibrida, qualsiasi query oracolo di decodifica del modulo viene seguita da qualsiasi cosa, quando viene decodificata dallo sfidante nel gioco CCA, in sostanza fornisce implicitamente l'accesso oracolo avversario al servizio di oracolo di decapsulamento, sotto la chiave segreta sconosciuta. Perché sulla decriptazione del testo cifrato modificato arriveranno gli avversari per imparare qual è esattamente il decapsulamento di un maschio, sotto la chiave segreta sconosciuta. Questo significa che ora abbiamo bisogno di una instantificazione sicura del CCA anche del meccanismo di incapsulamento delle chiavi, per sperare che il processo di codifica ibrida globale si traduce in un processo di crittografia sicuro del CCA. (Riferimento Slide Time: 26:01) Quindi prima definiamo la nozione di sicurezza CCA per il meccanismo di incapsulamento chiave. E su un livello molto alto, l'obiettivo di un meccanismo di incapsulamento sicuro di CCA dovrebbe essere quello di garantire quanto segue. Immaginate quindi di avere un ricevitore che esegue l'algoritmo di generazione chiave di un meccanismo di incapsulamento sicuro CCA e di impostare la chiave pubblica. E diciamo che il nostro mittente è lì che gestisce l'algoritmo di incapsulamento chiave di quel schema, ottiene una chiave segreta e un incapsulamento della chiave. E l'incapsulamento viene inviato al destinatario. E dire che c'è un avversario maligno, che ha eavesato l'incapsulamento. E ora immaginate che il mio avversario ottenga il servizio di oracolo di incapsulamento per qualsiasi incapsulamento, diverso da. Ora ottenendo il numero polinomiale di servizio oracolo di decapsulamento, richiediamo che dal punto di vista il mio avversario, l'incapsulamento, che ha visto in precedenza, debba essere ancora indipendente dalla chiave, incapsulata in. Quindi il vantaggio qui che il mio avversario sta ora ottenendo è un esplicito servizio di oracolo di decapsulamento, che dobbiamo ora modellare nel nostro esperimento. Quindi per modellare il requisito di cui sopra, l'esperimento è il seguente. Il nostro sfidante esegue l'algoritmo di generazione chiavi e utilizzando la chiave pubblica esegue l'algoritmo di incapsulamento per ottenere una coppia (. E ora prepara la sfida per l'avversario come segue. Si toglie una moneta equa, se la moneta tosse è di 0, allora picchia un elemento casuale proveniente dallo spazio chiave. Mentre se il gettone di moneta è di 1, allora l'elemento è la chiave, che in realtà è incapsulata nell'incapsulamento. E la sfida per l'avversario è la seguente. La chiave pubblica è data, l'incapsulamento è dato e viene dato il via. E l'obiettivo dell'avversario è quello di identificare se il fatto di essere un elemento casuale dallo spazio chiave, e cioè se. O se la stessa è la stessa chiave incapsulata, ovvero. Ma ora modelliamo il servizio di oracolo di decapsulamento permettendo all'avversario di chiedere la decapsulazione di qualsiasi incapsulamento della sua scelta, con l'unica restrizione essendo che questo servizio di oracolo da decapsulamento non debba essere per l'incapsulamento. Dovrebbero essere diversi da. E il nostro avversario è autorizzato a presentare in modo adattabile la sua interrogazione e in risposta alle query oracole di decapsulamento, lo sfidante risponde decapsulando tutte quelle query sotto la chiave segreta sconosciuta, che non è nota all'avversario. E dopo aver fatto il numero polinomiale di query, l'avversario ha ora da identificare e risolvere la sua sfida. E cioè deve individuare se ha visto una sfida come per metodo 0 o come per il metodo. E la definizione dell'esperimento è, diciamo che l'avversario ha vinto l'esperimento, che noi denunziamo dicendo che la produzione dell'esperimento è di 1, se e solo se l'avversario ha assicurato ′ =. E diciamo che il nostro meccanismo di incapsulamento chiave è il CCA sicuro, se per ogni polenta volta l'avversario esiste qualche funzione trascurabile, tale che la probabilità di quell' avversario che vince l'esperimento è delimitata da metà più funzione trascurabile. O equivalentemente il vantaggio distintivo di quell' avversario è delimitato da qualche funzione trascurabile nel parametro di sicurezza. (Riferimento Slide Time: 29:42) Così ora vedremo che, se ci viene dato un KEM sicuro CCA e un cifrario simmetrico sicuro CCA, poi se li combiniamo, otteniamo un cifrario chiave asimmetrico sicuro CCA. Immaginate quindi di ricevere un CCA sicuro KEM e il processo di codifica simmetrica sicuro CCA. Poi possiamo combinarla nello stesso modo in cui abbiamo fatto per ottenere un cifrario chiave asimmetrico sicuro CPA nell'ultima lezione. Quindi il mio algoritmo di generazione chiave del processo di codifica ibrida sarà semplicemente l'algoritmo di generazione chiave del meccanismo di incapsulamento chiave. Per criptare un testo semplice utilizzando la chiave pubblica, ciò che il mittente sta per fare, eseguirà l'algoritmo di incapsulamento e otterrà una chiave e la sua incapsulazione. E utilizzando la chiave, richiamerà l'algoritmo di crittografia del processo di crittografia simmetrica sottostante per crittografare il testo di pianura e ottenere la sua crittografia. E il testo di cifratura complessivo sarà (. D'altra parte, il ricevitore che possiede la chiave segreta, sulla ricezione del testo cifrato (′), racconterà per la prima volta la parte del cifrato per richiamare la chiave incapsulata. E poi quella chiave viene utilizzata per decodificare il componente del testo di cifratura, come per l'algoritmo di decodifica del processo di crittografia simmetrica, per riottenere il testo di pianura reale. E possiamo dimostrare che se il mio meccanismo di incapsulamento chiave è il CCA sicuro come per la definizione che abbiamo appena dato. E se i miei processi di crittografia simmetrica sottostanti sono il CCA sicuro, allora questo modo generico di combinare questi 2 primitivi ci darà un processo di crittografia a chiave pubblica che è il CCA sicuro. E la prova di nuovo sarà qualcosa di simile alla prova di stile ibrido di argomento, che avevamo dato nell'ultima lezione, per provare la sicurezza CPA della costruzione generica del sistema ibrido che avevamo discusso in quella lezione. Quindi lascio i dettagli formali completi della prova a te come esercizio. Così questo mi porta alla fine di questa lezione. Tanto per riassumere, in questa lezione abbiamo introdotto la nozione di sicurezza CCA nell'ambito dello schema di crittografia pubblica. Abbiamo visto la malleabilità, cosa significa esattamente la malleabilità dei regimi di crittografia pubblica e abbiamo visto la definizione di sicurezza CCA per il meccanismo di incapsulamento delle chiavi e discusso che se ci viene dato un CCA sicuro