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

    +

Fondamenti di Cryptography Dr. Ashish Choudhury Department of Computer Science International Institute of Information Technology - Bangalore Lezione – 51 Firme digitali (Riferimento Slide Time: 00.31) Ciao a tutti, benvenuto a questa lezione, quindi il piano per questa lezione è il seguente e questa lezione introdurremo una primitiva crittografica molto popolata nell'impostazione della chiave pubblica e vedremo la motivazione per le firme digitali, vedremo il confronto tra codici di autenticazione dei messaggi e firme digitali. Discuteremo dei certificati e delle infrastrutture di chiave pubblica; hash and sign paradigm per la firma dei messaggi lunghi e poi, infine, discuteremo su un livello molto alto come possiamo ottenere la crittografia autenticata nel dominio pubblico utilizzando schemi di segnalamento. (Riferirsi Slide Time: 01.03)Quindi, partiamo con la motivazione per le firme digitali e prima di entrare in questo modo cerchiamo di capire l'importanza delle firme fisiche che usiamo nel mondo reale, quindi tutti sanno che le firme fisiche hanno applicazioni straordinarie e uno scopo principale è quello di verificare l'autenticità di un documento. Ad esempio, se prendo la copia digitale della mia scheda Aadhar, firmata dal; è digitalmente; scusate, se prendo in considerazione la firma fisica, se considero per esempio una verifica firmata che vi ho dato, poi se la sottoponete alla banca, la banca può verificare l'autenticità del controllo firmato verificando la mia firma e il principale obiettivo di sicurezza per la firma fisica è che anche se c'è una persona che mi ha visto firmare diversi documenti, dovrebbe essere molto difficile per quella persona forgiare una firma legittima su quel documento che in passato non avevo mai firmato. Quindi, l'obiettivo principale qui è sostanzialmente quello di verificare l'autenticità di un documento. Ora le firme digitali possono essere visualizzate come analogico digitale delle firme fisiche e ha applicazioni straordinarie nel contesto di uno scenario mondiale reale. Così, ad esempio, vengono utilizzati diffusamente per i certificati digitali e le infrastrutture a chiave pubblica, quindi quando dico certificato digitale potete immaginare per esempio, la scheda digitale Aadhar. Quindi, non è necessario portare la tua scheda Aadhar nel formato fisico, ora hai la scheda Aadhar firmata digitalmente e se la inoltra in qualche luogo qualunque sia il luogo in cui si dovrebbe produrre la tua carta Aadhar, l'entità corrispondente può verificare la firma digitale e accettare o rifiutare la tua scheda Aadhar firmata digitalmente, vedremo quale sia esattamente l'infrastruttura chiave pubblica e come le firme digitali siano utilizzate nell'infrastruttura di chiave pubblica. Usiamo anche le firme digitali per gli aggiornamenti del software, quindi ogni qualvolta acquistiamo un software per la prima volta, la chiave di verifica del fornitore che mi sta fornendo il software arriva insieme all'acquisto e posso memorizzare la chiave di verifica del fornitore con me e in seguito se il fornitore mi sta dando degli aggiornamenti per lo stesso software posso verificare se gli aggiornamenti arrivano dalla fonte legittima o non verificando una firma sul software aggiornato in arrivo dal fornitore, usiamo anche firme digitali per la firma del contratto dove abbiamo applicazioni legali. (Riferirsi Slide Time: 03.29) Quindi, ora cerchiamo di capire la definizione formale delle firme digitali, quindi è una tripletta di algoritmo; un algoritmo di chiavi di chiave, un algoritmo di firma o un algoritmo di firma e un algoritmo di verifica e supporta i messaggi di alcuni spazi in chiaro pubblicamente noti, quindi l'algoritmo di generazione chiave outmette 2 tasti; dato che siamo nell'impostazione chiave pubblica; una chiave sarà la chiave di verifica che sarà disponibile nel dominio pubblico. E altra chiave sarà sk, che è la chiave di firma e sarà disponibile solo con il firmatario. Così il modo in cui viene eseguito questo algoritmo di generazione chiave è il seguente. Quindi, se sono un firmatario; per impostare la mia chiave, eseguo l'algoritmo di generazione chiavi e rendo la mia chiave di verifica disponibile nel dominio pubblico. Quindi supponiamo che la chiave di verifica del cosiddetto mittente, una copia autenticata del cosiddetto mittente sarà disponibile in ambito pubblico. Come si assicurerà esattamente che effettivamente la cosiddetta chiave di verifica appartenga al mittente destinato ad essere assicurato attraverso le infrastrutture chiave pubblica ma per il momento, supponiamo di avere meccanismi per garantire che effettivamente la copia legittima o autentica del firmatario sia disponibile in ambito pubblico. Ora, per firmare un messaggio quello che fa il firmatario è che esegue l'algoritmo di firma e si demette una firma. Quindi, l'algoritmo di firma prende il messaggio e la chiave di firma e non serve essere randomizzati, quindi se il firmatario ha il messaggio m, esegue un algoritmo di firma e insieme al messaggio, si demette una firma. Ora, la firma insieme al messaggio viene verificata eseguendo l'algoritmo di verifica che prende il (messaggio, firma) e la chiave di verifica e si supera di 0 o 1, 0 significa rifiutare il messaggio perché è una firma non valida. 1 significa che accetta il messaggio perché è una firma valida. Ora si richiama una firma σ per essere una firma valida sul messaggio m rispetto al tasto di verifica vk se la verifica del messaggio, la firma rispetto alla funzione di verifica e la chiave di verifica vk mi dà l'output 1 e se c'è una firma valida ricevuta da un ricevitore che viene verificato rispetto al tasto di verifica, allora garantisce l'autenticità e l'integrità di m. Perché se io sono un destinatario e se ricevo un (messaggio, firma) che è una firma valida rispetto alla chiave di verifica di un firmatario designato, allora mi garantisce che effettivamente i messaggi che arrivano dal segno intensi perché fino a quando e a meno che la falsificazione sia possibile, è molto difficile per una terza parte agire o intensi come firmatario e produrre un messaggio firmato per conto del firmatario. Quindi, ora passiamo alle proprietà dello schema di firma che richiediamo. Quindi, la prima proprietà è il requisito di correttezza triviale che richiede che per ogni coppia di chiave ottenuta dall'algoritmo di generazione chiavi e per ogni messaggio se il firmatario abbia firmato qualche messaggio utilizzando il tasto di firma e successivamente la firma venga verificata con lo stesso messaggio m utilizzando l'algoritmo di verifica e la corrispondente chiave di verifica, allora l'output dovrebbe essere di 1 salvo con qualche probabilità trascurabile. Idealmente, ci aspettiamo che non ci sia assolutamente alcun errore nell'algoritmo di verifica della firma se tutto è accaduto correttamente ma il motivo per cui stiamo lasciando un ambito di errore trascurabile in questa definizione è che nell'istanziazione dell'algoritmo di generazione della chiave, potrebbe essere il caso che la chiave pubblica e una chiave segreta non siano coerenti con ciascuno e cosa intendo con mezzi coerenti, esempio se assumo che se sto eseguendo l'; se sto usando un algoritmo di generazione chiavi RSA e il mio algoritmo di generazione è praticamente quello di scegliere i primes p e q. E impostare il modulus per essere il prodotto di quei 2 primes, poi se scelgo un algoritmo randomizzato per scegliere i miei numeri primi p e q, allora potrebbe accadere che io possa finire a raccogliere valori compositi di p e q senza neanche sapere che ho effettivamente scelto valori compositi p e q, in quel senso anche se il mio algoritmo di generazione chiavi mi ha dato dei parametri errati che possono accadere solo con questa probabilità trascurabile, non mi accorgerò del fatto. E se uso tale tipo di compositi p e q e poi sicuramente l'algoritmo di firma non produrrà una firma che verrà accettata dall'algoritmo di verifica ed è per questo che stiamo dando un ambito di errore trascurabile nel requisito di correttezza del regime di firma, mentre se si sta generando i propri parametri eseguendo algoritmi deterministici, nel senso che si sta scegliendo il dire, valore dei primes p e q usando algoritmi deterministici in cui non ci sono assolutamente errori nel picking in termini; nessun errore in termini di picking o compositi, poi lo schema di firma risultante non avrà alcun errore nella proprietà di correttezza, ora arriva l'importante proprietà dei regimi di firma cioè la sicurezza e su un livello molto alto, richiediamo la stessa garanzia; garanzia di sicurezza che ci aspettiamo dalle firme fisiche. Allora, ricordati come ho detto prima per le firme fisiche, la garanzia di sicurezza che richiedo è che anche se ho firmato più documenti e dato a te, dovrebbe essere molto difficile per te produrre la mia firma su un messaggio che non ho mai firmato prima. Ci aspettiamo la stessa cosa da tenere nel contesto delle firme digitali cioè un'entità che conosce solo la chiave di verifica ma non conosce la mia chiave di firma ma mi ha visto firmare; firmare diversi messaggi in passato utilizzando il tasto di firma, per una tale entità dovrebbe essere computazionalmente difficile forgiare la mia firma su un documento che non avevo mai firmato. (Riferirsi Slide Time: 09.26) Quindi, ora formalizziamo il requisito informale di cui avevamo discusso nell'ultima slide per le firme da parte di questo esperimento che chiamiamo Sig – forge (giocato tra un avversario delimitato computazionalmente e uno sfidante e al livello molto alto, il gioco è qualcosa di simile che avevamo usato per modellare il requisito di sicurezza del requisito di falsificazioni contro il codice di autenticazione del messaggio. Così, abbiamo una fase di allenamento e abbiamo una fase di uscita; nella fase di allenamento per modellare il fatto che il vero avversario mondiale avrebbe visto un firmatario firmare diversi messaggi in passato, consentiamo all'avversario la possibilità di presentare diversi messaggi di sua scelta e vedere la firma su quei messaggi. Per rispondere a quei messaggi di fase di allenamento, lo sfidante esegue l'algoritmo di generazione della chiave e firma tutti quei messaggi utilizzando la chiave di firma sconosciuta non nota all'avversario. Ma la corrispondente chiave di verifica viene data all'avversario e ora nella fase di uscita, l'avversario sottopone un messaggio e una falsificazione e la definizione dell'esperimento è che diciamo che l'avversario ha vinto il gioco denotato come dire che l'uscita dell'esperimento è di 1, se e solo se il messaggio forgiato m * è diverso dai messaggi per i quali l'avversario ha ottenuto la firma in passato. E le firme σ * è infatti una firma valida sul messaggio m * sotto la chiave di verifica vk e diciamo che uno schema di firma è improponibile o semplicemente sicuro, se per ogni poligono tempo avversario che partecipa a questo esperimento, la probabilità che possa arrivare con forgeria di successo è superiore delimitata da una funzione trascurabile nel parametro di sicurezza. (Riferimento Slide Time: 11.09) Quindi, ora confrontiamo il codice di autenticazione dei messaggi di 2 primitivi e la firma digitale perché su un livello molto alto sia l'obiettivo; gli obiettivi di entrambi i primitivi sono gli stessi: prevenire la falsificazione o l'autenticità e l'integrità, così sintatticamente uno schema di firma è costituito da un algoritmo di generazione chiavi, un algoritmo di firma e un algoritmo di verifica e così è un codice di autenticazione del messaggio. La differenza è che per la firma, l'algoritmo di generazione chiavi in uscita 2 tasti, mentre per il codice di autenticazione del messaggio, l'algoritmo di generazione chiavi mette in funzione una singola chiave. Per il codice di autenticazione del messaggio lo stesso k chiave viene utilizzato sia per la generazione del tag sia per la verifica del cartellino, mentre per la firma le chiavi diverse sono utilizzate per la produzione della firma e per effettuare la verifica, quindi questa è una differenza sul livello sintattico. Per questo motivo abbiamo diversi pro e contro per questo sia per questo che per questi primitivi, quindi se consideriamo gli schemi di firma l'accordo chiave non è affatto un compito impegnativo, nel senso signer può solo eseguire l'algoritmo di generazione della chiave e può rendere la sua chiave di verifica disponibile in un dominio pubblico in una moda autentica e qualsiasi verificatore potrebbe utilizzare tale tasto di verifica per verificare le firme generate dal firmatario. D'altra parte, per il codice di autenticazione dei messaggi dato che si tratta di un primitivo chiave simmetrico, l'accordo chiave è un compito molto impegnativo. Se Sita vuole fare autentiche comunicazioni con 2 ricevitori dicono Ram e Hanuman, allora ha bisogno di avere un paio di chiavi simmetriche o tasto mac per Ram e un altro tasto mac indipendente per Hanuman. Ma quando arriviamo alla firma va bene, se ha solo una chiave di firma e una chiave di verifica che risolverà lo scopo per ogni potenziale verificatore. Di conseguenza, quando si tratta di schemi di firma sono verificati pubblicamente, il firmatario firma il messaggio, qualsiasi verificatore può solo prelevare la chiave di verifica del firmatario e verificare se la firma è valida o meno, mentre per il codice di autenticazione del messaggio non viene verificata pubblicamente. Solo il ricevitore che ha lo stesso tasto k, con il quale il mittente ha generato il tag può verificare l'autenticità del messaggio, tag. Come implicito di questo, otteniamo il cartellino, visto che le firme digitali sono pubblicamente verificate sono trasferibili, questo significa che se dire Ram ha ottenuto legittimamente documenti firmati da Sita, allora può inoltrarlo e trasferirlo ad Hanuman, sostenendo che effettivamente il documento originato da Sita. E Hanuman può anche verificare se effettivamente è il caso o meno ma questo non è possibile nel caso di codice di autenticazione dei messaggi perché il suo mittente Sita ha calcolato un tag di autenticazione dei messaggi per un messaggio poi che può essere verificato solo da Ram e fino a quando e a meno che Ram non trasferisce la chiave kSR ad Hanuman, l'autenticità del tag non può essere verificata da Hanuman, in quel senso i codici di autenticazione dei messaggi non sono trasferibili. E a causa di quelle proprietà trasferibili, le firme digitali forniscono una mancata repudizzazione che è molto utile nelle applicazioni legali e cioè, se Ram ottiene un contratto firmato da Sita e laterse ci sono violazioni da parte di Sita rispetto ai termini indicati nel contratto, allora la Ram può rivolgersi a qualsiasi esperto legale, Hanuman e dimostrare che effettivamente ha ricevuto un contratto firmato da Sita. Ma ora, Sita non sta seguendo i termini e le condizioni indicate nel documento e Hanuman può verificare le affermazioni di Ram ma che non è necessario che sia il caso nel codice di autenticazione dei messaggi, fino a e a meno che Ram non possa trasferire la chiave mac a Hanuman o a qualsiasi terzo. Quindi, potrebbe sembrare che le firme digitali abbiano tutte le caratteristiche valide e i codici di autenticazione dei messaggi hanno tutte le caratteristiche cattive. Ma non è così perché se si considera l'aspetto computazionale per i codici di autenticazione dei messaggi e le firme digitali si scopre che la quantità di elaborazioni richieste per le firme digitali, sono di ordine di diverse grandezze rispetto alla quantità di elaborazioni richieste per i codici di autenticazione dei messaggi; nello specifico, gli schemi di firma che vedremo in base alla funzione RSA e al problema di Diffie Hellman, dove effettueremo l'espettazione modulare, modulo un modulo molto ampio, mentre come avevamo già visto, i codici di autenticazione dei messaggi possono essere progettato molto in modo efficiente utilizzando i cifrati di blocco. Ovvero un trade-off tra codice di autenticazione del messaggio e firme digitali a seconda che si preferire l'efficienza contro la verificabilità pubblica, la non ripudizzazione, la trasferibilità, è possibile utilizzare il codice di autenticazione dei messaggi o le firme digitali. (Riferimento Slide Time: 16.18)Quindi, ora parliamo di un'applicazione molto pratica della firma digitale e cioè quella delle infrastrutture chiave pubblica e dei certificati digitali. Così, fino ad ora dicevo costantemente che se c'è un'entità dice, Sita, giusto, che ha eseguito l'algoritmo di generazione chiave di uno schema di crittografia a chiave pubblica e ha ottenuto la chiave pubblica e la chiave segreta, supponiamo che la chiave pubblica di Sita sia disponibile nel dominio pubblico in una moda autentica. Il che significa, chiunque, qualsiasi ricevitore o qualsiasi entità, Ram che vuole fare una comunicazione sicura con Sita può cercare la chiave pubblica della cosiddetta Sita e noi supponiamo che ci sia un meccanismo per Ram per verificare che il cosiddetto tasto pubblico appartenga effettivamente alla Sita prevista o meno, ci rendiamo conto che una copia autentica del pk chiave pubblica della destinazione Sita è disponibile nel dominio pubblico. Ma ora, vorremmo rispondere a questa domanda che come al primo posto, Ram può verificare se effettivamente il pk della chiave pubblica, disponibile nel dominio pubblico è la chiave pubblica della cosiddetta Sita o meno, giusto. Quindi, vorremmo ora risolvere questo problema e risolvere questo problema, supponiamo di avere o tutte le parti del sistema hanno accesso a un'autorità attendibile e chiamiamo autorità certificate di CA, che io dengo di M considerando, è il master. E questo padrone avrà la sua chiave di firma e di verifica per qualche schema di firma sicuro e supponiamo che in qualche modo la chiave di verifica di questo master sia disponibile per qualsiasi entità Ram che voglia verificare l'autenticità della chiave pubblica di Sita, giusto, quindi questo è un presupposto di fiducia che stiamo facendo in tutta questa soluzione, giusto. Ora, per convincere Ram che effettivamente il pk chiave pubblica appartiene a Sita, quello che Sita può fare è; può, in off-line può rivolgersi al padrone e può richiedere al padrone o all'autorità di certificazione che la preghiamo, certifica il mio pk chiave pubblica. E a fare la certificazione, ciò che l'autorità può fare è, può eseguire la verifica cioè, può verificare le credenziali della cosiddetta Sita, può verificare se effettivamente è la Sita giusta o meno, quali sono esattamente le sue credenziali e così via e se le credenziali sono verificate con successo, l'autorità master o l'autorità del certificato possono rilasciare un certificato digitale che in sostanza, è la firma del master su un certificato affermando che effettivamente la chiave pubblica o la chiave di cifratura del soggetto Sita è pk, a destra. Così, ecco come il certificato digitale o sostanzialmente un documento firmato digitalmente firmato dall'autorità del certificato e dato a Sita, tutto questo avviene in off-line, niente da ora, nessuna comunicazione è successa tra Sita e Ram, tutto quello che Sita si esibisce in off - line. Ora, una volta che questo certificato è ottenuto da Sita, quello che Sita può fare è; se ora vuole convincere Ram che effettivamente il pk chiave pubblica appartiene a lei, quello che può fare è; può trasferire il tasto pubblico pk a Ram e insieme a quella può inviare un certificato rilasciato dall'autorità del certificato e ora, si vede che Ram può verificare se effettivamente la cosiddetta chiave pubblica che si ottiene da Sita effettivamente appartiene a Sita o non perché quello che deve fare è; deve solo verificare se la firma firmata digitalmente o la firma è effettivamente la giusta firma per il messaggio che la chiave pubblica del mittente o Sita s la chiave pubblica è pk, sotto la chiave di verifica dell'autorità certificato che stiamo assumendo è disponibile per l'entità Ram. Se la verifica del certificato ha successo, Ram è convinto che effettivamente il pk chiave pubblica appartenga al soggetto chiamato Sita e tutto questo setup qui che avevamo discusso qui è quello che chiamiamo setup delle infrastrutture chiave pubblica o setup PKI, dove l'assunzione di fiducia minimale che stiamo facendo qui è che abbiamo l'autorità certificato disponibile e la sua chiave di verifica per uno schema di firma è disponibile con ogni entità del sistema. Qualsiasi mittente o qualsiasi entità Sita, chi vuole ottenere la sua copia autentica della chiave pubblica può in off line andare all'autorità di certificazione e ottenere un certificato digitale da dimostrare le proprie credenziali e ottenere un certificato digitale affermando che effettivamente la sua chiave pubblica è pk e ora se Sita vuole inviare o impostare la sua chiave pubblica, quello che può fare è; può mettere un pk chiave pubblica nel dominio pubblico insieme a questo certificato digitale. O se vuole, può inviare una chiave pubblica a qualsiasi entità Ram che voglia fare una comunicazione sicura con Sita insieme al certificato digitale e l'autenticità della chiave pubblica può essere verificata verificando il certificato e la cosiddetta chiave pubblica, quindi questo risolve il nostro intero problema di impostare copie autentiche della chiave pubblica per i soggetti, dobbiamo solo supporre che abbiamo un'autorità di fiducia chiamata autorità certificato disponibile nel nostro sistema la cui chiave di verifica è disponibile con tutti. E tutto questo set up si chiama PKI setup, in questo esempio ho appena usato un solo CA s, quindi potreste chiedervi che se ci sono milioni di Sita che vogliono ottenere una chiave pubblica verificata dal padrone poi che metteranno troppo carico su un'unica autorità di certificazione o se la firma della chiave dell'autorità del certificato è compromessa, allora chiunque può forgiare documenti firmati digitalmente, qualsiasi Sita corrotto può forgiare questo certificato di autorità master su qualsiasi tasto pubblico non valido e che creerà problemi in tutti i sistemi. Quindi, quello che possiamo fare è invece di avere un'unica autorità di certificazione possiamo immaginare di avere una gerarchia di autorità certificate e così via, ma l'idea di alto livello è che proprio facendo un piccolo presupposto di fiducia cioè, la presenza di un'autorità di certificazione attendibile, tutto questo problema di impostare copie autentiche della chiave pubblica può essere risolto. (Riferimento Slide Time: 23.05)Avanti, si discute di un paradigma interessante, che chiamiamo paradigma hash - and - sign, che può essere utilizzato per firmare messaggi lunghi arbitrari e questo è simile ai tuoi paradigmi hash - e - Mac che avevamo usato nell'ambientazione delle chiavi simmetriche. Quindi, lo scenario è il seguente; abbiamo uno schema di firma che è sicuro ma che può supportare le firme sui messaggi di lunghezza l e ci viene data una funzione hash di collisione di hash corrispondenza di bit bit bit ad un output di stringhe di bit l . E il nostro obiettivo è arrivare ora con lo schema di firma sicuro combinando questi 2 primitivi che possono firmare messaggi di qualsiasi lunghezza, non solo bit stringhe di lunghezza l . Ma la dimensione della firma è di dimensioni fisse, cioè lo spazio di firma di questo nuovo algoritmo di firma dovrebbe essere lo stesso che era per lo schema di firma sicuro che ci viene dato, questo significa, se il mio schema di firma sottostante che ho dato produce firma di dire, lunghezza l bit, allora non importa quale sia la dimensione del messaggio; utilizzando il schema di firma composto, il nuovo schema di firma, non importa quale sia la lunghezza del messaggio, la mia dimensione di firma sarà di n bit, la sua dimensione sarà indipendente dalle dimensioni del messaggio che sto per firmare e come combineremo questi 2 primitivi è il seguente: per firmare un messaggio, m, che potrebbe essere di qualsiasi lunghezza, quello che facciamo prima è hash il messaggio e una volta hash il messaggio, otteniamo un digest di messaggio del messaggio che è di lunghezza l e ora, compendiamo la firma sull'hash del messaggio e che è considerata la firma complessiva per il mio messaggio l, per verificare la firma che facciamo le operazioni corrispondenti, se ci viene fornita una coppia (messaggio, firma), quello che facciamo è abbinare il messaggio e poi verifichiamo se la componente firma che abbiamo ricevuto è effettivamente una firma valida sull'hash del messaggio che abbiamo ottenuto. Se l'algoritmo di verifica è 0, allora l'output complessivo del nuovo algoritmo di verifica è 0 che significa, rifiutiamo la coppia (messaggio, firma), invece se l'output dell'algoritmo di verifica dello schema di firma sottostante è 1, allora accettiamo il messaggio dato, coppia firma nell'algoritmo di verifica di livello superiore. (Riferimento Slide Time: 25:40) Ora, possiamo dimostrare che se il dato schema di firma per i messaggi di lunghezza fissa è sicuro che è il suo non forgeable e se la mia funzione hash è resistente alla funzione hash resistente, allora lo schema di firma per la firma di messaggi arbitrariamente lunghi che abbiamo ottenuto è sicuro, e una prova di sicurezza per questo è di nuovo più o meno uguale che abbiamo usato per dimostrare la sicurezza del paradigma hash e Mac, permettetemi di darvi una panoramica della prova di sicurezza qui. Quindi, immaginate di considerare un avversario che partecipa all'algoritmo di falsificazione della firma contro questo nuovo schema di firma e diciamo che ha chiesto le firme dei messaggi nel set Q composto da q numero di messaggi e come per la regola dello schema di firma che abbiamo costruito ogni firma è nient'altro che una firma sull'hash del messaggio che l'avversario ha querizzato. E ora, immaginate che con molta probabilità in questo esperimento forge di firma, l'avversario A dopo aver ottenuto le firme sui messaggi nel set Q potrebbe produrre un falso sul messaggio m * che non appartiene al set di messaggi per i quali ha visto le firme e se è così, allora potrebbero esserci 2 possibilità. Possibilità 1 è che esiste almeno 1 messaggio nella serie di messaggi per i quali l'avversario ha la firma dice mi tale che l'hash del messaggio mi e l'hash del messaggio forgiato m * sono uguali. Se è così allora si scopre che sia il messaggio che il messaggio m * produrrà la stessa firma σ * e siccome l'avversario ha già visto l'hash del messaggio mi, è σ *, può semplicemente inoltrare la firma del messaggio, il nuovo messaggio m * è anche σ * ed è un falso valido ma se questo è il caso, allora significa che l'avversario sa scoprire un paio di collisioni per la funzione hash sottostante in quantità polinomiale. Ma questo va contro il presupposto che la mia funzione hash sottostante sia una funzione di hash resistente agli urti. D'altra parte la seconda possibilità potrebbe essere che il messaggio forato m * sia tale che il suo valore hash sia diverso dal valore hash di tutti i messaggi per i quali l'avversario ha visto la firma, se così è il solo modo in cui il messaggio forgiato m * e σ * è un falso valido è che l'avversario ha calcolato la firma sul messaggio di lunghezza fissa cioè H (m *), da zero senza realmente conoscere il tasto di firma. Ma se è così, allora vuol dire che esiste una stringa di bit di lunghezza l per cui l'avversario potrebbe calcolare la firma con alta probabilità anche senza conoscere il tasto di firma ma che va contro l'assunzione che il mio schema di firma a lunghezza fissa sia sicuro. Ecco, queste sono le 2 possibilità con cui ogni avversario potrebbe arrivare con una forgeria di successo con alta probabilità contro il nuovo schema di firma che abbiamo costruito. E come abbiamo sostenuto che entrambe queste possibilità possono verificarsi solo con la probabilità trascurabile. Possiamo formalizzare questa intuizione rigorosamente nello stesso modo in cui abbiamo usato per dimostrare la sicurezza del nostro paradigma di hash e mac ma non vado nei dettagli formali. (Riferimento Slide Time: 29:21)Ora, termino questa lezione ponendo la domanda che è possibile combinare firme e crittografia nell'impostazione della chiave pubblica per ottenere una nozione equivalente di crittografia autenticata. Dunque, ricordate nel mondo chiave simmetrico abbiamo visto che se c'è un mittente e un ricevitore senza informazioni pre condivise e collegati da un canale insicuro pubblicamente aperto. Poi utilizzando uno schema di crittografia autenticato che possiamo ottenere genericamente combinando una crittografia simmetrica sicura CPA e un MAC sicuro, otteniamo l'effetto di un canale sicuro virtuale tra mittente e destinatario, che soddisfa 3 proprietà cioè privacy, autenticità e integrità. Una questione naturale sarà che se ora andiamo al mondo delle chiavi pubbliche sappiamo come raggiungere la privacy usando la crittografia. E abbiamo sostenuto fino ad ora che come possiamo raggiungere l'integrità e l'autenticità nel dominio pubblico chiave utilizzando schemi di firma, quindi è possibile ora combinare questi 2 primitivi dire usando la crittografia, quindi autenticarsi e ottenere uno schema di crittografia autenticato ovvero l'impatto di un canale sicuro virtuale tra il mittente e un destinatario che soddisfi privacy, autenticità e integrità. (Riferimento Slide Time: 30:40)Si scopre che sì, possiamo ottenere l'effetto di uno schema di crittografia autenticato anche nell'impostazione della chiave pubblica da un primitivo che chiamiamo come segnalatore, segno perché useremo uno schema di firma e crittografia perché utilizzeremo uno schema di crittografia ma si scopre che il modo ingenuo di combinare uno schema di firma e lo schema di crittografia non vi darà uno schema di crittografia autenticato. Infatti, si scopre che le idee dal mondo chiave simmetrico possono fallire completamente nel mondo chiave asimmetrica e quello che qui mostreremo è se si vede la cripta poi l'approccio autenticato che sappiamo sempre rendimenti autenticato schema di crittografia nel mondo chiave simmetrico può fallire completamente, se eseguito na ï in modo definitivo nel mondo chiave pubblica. Quindi, per rendere chiaro il mio punto, immaginate di ricevere una CCA sicura instantificazione dello schema di crittografia a chiave pubblica. E per il momento ipotizza che ci sia dato uno schema di firma sicuro. Fino ad ora non abbiamo ancora visto uno schema di firma candidata ma per il momento ipotizza, ci viene dato uno schema di firma candidata. Ora, quello che sto per dimostrare è che se combatto questi 2 primitivi usando la cripta poi l'approccio autenticato, allora non otterremo quanto esattamente chiediamo. Quindi, per far capire il mio punto di vista, abbiamo 3 entità nel sistema; Alice, Bob e Charlie, potete immaginare che il Bob sia un insegnante di matematica per la classe e Alice e Charlie sono 2 degli studenti e immaginate che ogni entità nel sistema abbia un proprio paio di chiavi di codifica e di decodifica e la propria coppia di chiavi di firma e chiave di verifica, quindi per esempio ipotizziamo che Alice abbia la sua coppia di chiavi di cifratura e chiave di decodifica.