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 Prof. Dr. Ashish Choudhury (Ex) Infosys Foundation Career Development Chair Professor International Institute of Information Technology - Collaluru Lecture - 01 Introduzione Così, salve a tutti, benvenuti alla prima lezione sulle fondamenta del corso di crittografia. (Riferimento Slide Time: 00.34) Il piano per questa lezione è il seguente. Discuteremo di cosa è la crittografia, perché la crittografia è importante, quali sono gli obiettivi della crittografia e vedremo alcune applicazioni avanzate della crittografia. (Riferimento Slide Time: 00 :48) Così, dal momento che il titolo del corso è fondamenti di crittografia, cerchiamo prima di tutto di capire l'importanza di solide fondamenta. Quindi, se si vedono questi 2 edifici o foto di questi 2 edifici si può facilmente capire che se si desidera un lungo edificio duratato allora solide fondamenta sono molto importanti. (Riferimento Slide Time: 01.07) Quindi perché la crittografia è importante. Quindi la sicurezza è attualmente una parola bufera molto grande, tutti parlano di sicurezza che vogliono mantenere il loro sistema sicuro. Quindi la crittografia su un livello molto alto è la scienza di tenere dati sicuri da entità indesiderate o non attendibili. Ed è altamente rilevante nel contesto attuale dell'era digitale dove le cose stanno diventando digitali lentamente e lentamente. E di conseguenza, abbiamo una grande quantità di dati che galleggiano in giro per vari places.Quindi, se si considerano le prime 2 guerre mondiali, i ruoli dei fisici e dei chimici erano molto centrali. E si prevede che se in tutto c'è una terza guerra mondiale, allora sarà una guerra cyber, dove il ruolo degli esperti di sicurezza dell'informazione sarà molto cruciale. Quindi la crittografia sono le fondamenta per la sicurezza dell'informazione. E se volete diventare un buon esperto di sicurezza dell'informazione, allora è molto importante avere solide basi per la crittografia. (Riferimento Slide Time: 02.07) Così, gli obiettivi del corso sono i seguenti. Discuteremo i vari paradigmi e principi della crittografia moderna e il focus sarà sulle definizioni formali di sicurezza e le costruzioni di vari primitivi crittografici. Così, alcuni dei primitivi crittografici di cui discuteremo in questo corso sono la crittografia e la decodifica, i codici di autenticazione dei messaggi, le funzioni hash, le firme digitali, ecc. Ora, per ciascuno di questi primitivi di crittografia seguiremo il seguente processo di 3 fasi. In prima fase daremo una precisa definizione formale di sicurezza del primitivo sottostante che siamo interessati a costruire. Una volta che avremo la definizione di sicurezza formale, procederemo a dare una costruzione algoritmica del primitivo richiesto e infine, nella fase 3 daremo una rigorosa prova matematica che la costruzione algoritmica che abbiamo dato nella fase 2 effettivamente soddisfa la definizione formale che abbiamo dato nella fase 1.So è possibile confrontare questo processo di 3 fasi con il seguente esempio. Se volete costruire una casa, quello che prima farete è che vi proporrete un'architettura grezza della casa, e avrete la mappa della casa, che darete al vostro ingegnere. Ecco quindi una tappa 1. Una volta che la mappa sarà pronta, durante la fase 2 l'ingegnere coinvolgerà alcuni operai e alcuni altri helper utilizzando i quali salterà con l'edificio. Quella è costruzione algoritmica. E nella fase 3 una volta che l'edificio sarà pronto, si verificherà effettivamente che la costruzione che l'ingegnere ha sorto soddisfa effettivamente l'architettura che lei ha effettivamente specificato durante la fase 1. Ecco quindi che si tratta di un processo rigoroso di 3 fasi che seguiremo in questo corso per ciascuno dei primitivi crittografici di cui discuteremo. (Riferimento Slide Time: 03.50) L'esito del corso previsto è il seguente. Ci aspettiamo alla fine dei partecipanti al corso saranno in grado di comprendere un punto significativo di standard di crittografia e documenti di ricerca, speriamo che i partecipanti ottenga una sensazione di come i vari primitivi crittografici di cui discuteremo in questo corso siano integrati in alcuni protocolli di comunicazione sicuri standard come SSL. Ci auguriamo che i partecipanti siano ben attrezzati per comprendere concetti avanzati di ricerca crittografica e primitivi. E in generale i partecipanti otterranno una migliore comprensione dei concetti legati alla sicurezza della rete, alla sicurezza delle informazioni e alla sicurezza informatica in generale. (Fare Slide Time: 04.32) Così, per quanto riguarda il corso sillabus, il sillabus tentativo è il seguente. Più o meno il corso è diviso in 2 parti. La prima parte andrà a discutere di crittografia a chiave simmetrica, dove andremo a discutere di perfetta sicurezza, generatori pseudo casuali, cifrature di flusso, funzioni pseudo casuali, cifrature a blocchi, codici di autenticazione dei messaggi, funzioni hash e alcune delle costruzioni pratiche di cifrature di blocco come il DES e l'AES. Nella parte 2 si parlerà di crittografia asimmetrica e alcuni degli argomenti che copriremo in parte 2 sono la teoria dei numeri, il protocollo di scambio delle chiavi Diffie - Hellman, lo schema di crittografia ElGamal, lo schema di crittografia RSA e le firme digitali. (Riferimento Slide Time: 05 :16) seguiremo in questo corso i seguenti riferimenti. Quindi il corso sarà perlopiù basato sul libro intitolato Introduzione alla Crittografia Moderna di Jonathan Katz e Yehuda Lindell. E questo è davvero uno dei libri di testo standard che è ampiamente seguito. E consiglio a tutti coloro che sono interessati a imparare la crittografia e le fondamenta della crittografia per acquistare una copia personale di questo libro. Potete anche seguire il libro Cryptography: Theory and Practice di Douglas Stinson. Potete anche fare riferimento al libro del professor Nigel Smart intitolato Cryptography: An Introduction. La prima versione di questo libro infatti è disponibile gratuitamente per scaricare dall'homepage dell'autore e potete vedere il seguente interessante libro: A Graduate Course in Applied Cryptography by Dan Boneh e Victor Shoup, di nuovo, la bozza di questo libro è disponibile gratuitamente da scaricare. E si può anche fare riferimento al manuale di Cryptography Applied by Menezes et al, che di nuovo è disponibile gratuitamente da scaricare. Ecco, questi sono alcuni dei riferimenti importanti, che seguiremo in questo corso. Ovviamente, se si fa la ricerca Google, si può arrivare con abbondanti altri riferimenti importanti, che potete seguire per i vari argomenti che seguiremo in questo corso. (Riferimento Slide Time: 06 :30) Torna alla domanda di qual è la principale applicazione della crittografia. Quindi, il problema centrale affrontato dalla crittografia è quello della comunicazione sicura. E quello che intendo per comunicazione sicura è immaginare il seguente scenario che si ha un mittente e un destinatario che non si conoscono che si incontrano per la prima volta su internet. Non condividono alcun tipo di informazione pre - condivisa. E sono collegati da un canale pubblico aperto. Quindi, l'obiettivo principale della crittografia è quello di convertire in qualche modo questo canale aperto pubblico che collega il mittente e il destinatario in qualche tipo di canale sicuro virtuale attraverso il quale mittente e destinatario possono fare comunicazione sicura. E le 3 proprietà della comunicazione sicura sono le seguenti. La prima proprietà è la privacy, che assicura che tutto ciò che viene comunicato tra il mittente e il destinatario su questo canale sicuro virtuale sarà conosciuto solo al mittente e al destinatario. La prossima proprietà della comunicazione sicura è l'autenticità che assicura che qualsiasi messaggio o qualsiasi pacchetto che venga al mittente su questo canale dal destinatario, si conferma che è effettivamente originario del destinatario e non esiste un terzo che abbia introdotto quei pacchetti per conto del destinatario e lo abbia inoltrato al mittente e la stessa garanzia sarà data anche al destinatario del destinatario. E la terza proprietà del canale sicuro sarà di proprietà integrità, che garantirà al mittente e al destinatario che nessuno ha manomesso il contenuto dei pacchetti che sono stati comunicati sul canale. Quindi su un livello molto alto i primitivi crittografici che discuteremo in questo corso vi daranno l'effetto di far convergere questo canale aperto pubblico in una sorta di canale sicuro virtuale. E nessun terzo sarà in grado di identificare cosa esattamente scorre in giro attraverso questo canale sicuro. Questa è la principale applicazione della crittografia. (Riferimento Slide Time: 08.30) E che andremo a discutere rigorosamente in questo corso. Ma quello che vorrei passare nelle prossime slide sono alcune delle applicazioni avanzate della crittografia. L'idea principale è che voglio darvi una sensazione di come la crittografia possa essere usata per risolvere varietà di altri tipi di problemi del mondo reale, al di là del problema della comunicazione sicura. Quindi la prima applicazione avanzata di cui vorrei discutere è quella della criptovaluta. Così prima di entrare in criptovaluta, comprendiamo le 2 importanti proprietà soddisfatte dal vostro contante fisico o dalla valuta fiat. Quindi le proprietà del 2 impediscono la doppia spesa. Questo significa che per te è impossibile creare copie xerox di una nota fisica e spenderla in più posizioni. Ecco allora che il doppio problema di spesa e il contante fisico assicura che effettivamente la doppia spesa non è possibile. E la seconda proprietà del contante fisico è l'anonimato. Questo significa che se sto usando una valuta fisica e la spengo per qualche transazione, ora la mia identità sarà preservata. Ma perché nessuno sarà in grado di rintracciare la mia identità, che sta spendendo quella moneta e così via. Ecco quindi la proprietà dell'anonimato. Quindi la domanda è possibile avere una versione digitale corrispondente del contante fisico. E quando dico la versione digitale, quello che intendo è che ora un po' di stringa agirà come valuta e usando questo bit di stringa dovrei essere in grado di effettuare transazioni in qualsiasi sede mercantile. E quando faccio una transazione in qualsiasi sito mercantile, e provate a spendere questa stringa binaria come valuta, bisognerebbe ottenere la proprietà anonima che significa che il commerciante non sia in grado di identificare il proprietario di questa così chiamata stringa binaria o digitale. E la seconda proprietà che vorrei ottenere dalla corrispondente versione digitale della valuta non è una spesa doppia, questo significa che per me dovrebbe essere difficile creare più copie di questa stringa binaria e spendere quelle copie della stringa binaria contemporaneamente in più posizioni. Curiosamente, vorrei raggiungere entrambe queste 2 proprietà in assenza di qualsiasi agenzia centralizzata. Questo significa che voglio che tutto il sistema funzioni anche in assenza di qualsiasi tipo di agenzia centralizzata. E come potete vedere, se non c'è un'agenzia centralizzata che sta effettivamente monitorando chi sta spendendo quale stringa binaria in quale location, sembra che il problema dell'anonimato e un problema di spesa non doppio, siano come due obiettivi conflittuali. Ma se vedete la recente criptovaluta come bitcoin è possibile raggiungere entrambi questi due requisiti contemporaneamente. Quindi è come un'applicazione avanzata della crittografia dove l'obiettivo è qualcosa di molto, molto più impegnativo di quello che è richiesto dal problema della comunicazione sicura. (Riferimento Slide Time: 11 :18) Vediamo la seconda applicazione avanzata della crittografia. E questo è qualcosa che chiamiamo come impedire il singolo punto di fallimento. Così accade che in molte applicazioni mondiali reali, le informazioni sensibili vengano memorizzate in un unico luogo. E per informazioni sensibili intendo dire, ad esempio, la tua chiave di codifica o la tua chiave di firma. Quindi se le informazioni sensibili o la credenziale vengono memorizzate in un unico luogo allora diventa relativamente più facile per un avversario compromettere quel luogo unico in cui vengono memorizzate le informazioni sensibili e di conseguenza l'intera applicazione sarà compromessa. Quindi una soluzione per prevenire un unico punto di guasto sarà la seguente. Invece di memorizzare le informazioni sensibili in un unico luogo, quello che possiamo fare è poter creare condivisioni di quell' informazione sensibile e distribuire quelle condivisioni e memorizzarla in più posizioni. E poi cancellare le informazioni sensibili iniziali. E qualunque sia la funzione originaria che doveva essere svolta dalle informazioni sensibili, sarà ora effettuata eseguendo un protocollo distribuito tra i vari server dove vengono memorizzate le quote delle informazioni sensibili originali. Notate che in questo intero processo, da nessuna parte ricostruiamo le informazioni sensibili originali. Le informazioni sensibili sono ancora condivise o distribuite tra le più sedi e gestiamo un protocollo distribuito senza realmente ricostruire le informazioni sensibili. Il vantaggio di condividere o distribuire le informazioni sensibili attraverso più location è che sarà ora difficile per un avversario compromettere contemporaneamente tutti i server in cui vengono memorizzate le condivisioni delle informazioni sensibili originali. E di conseguenza, si ottiene più robustezza e tolleranza più colpa. Ecco quindi di nuovo una simpatissima applicazione avanzata della crittografia, che si basa su una meravigliosa primitiva chiamata come condivisione segreta. Su un livello molto alto, un protocollo di condivisione segreto consente di creare condivisioni di un segreto e di distribuire agli azionisti, tale che il segreto originale possa essere ricostruito solo se certi numeri soglia degli azionisti si uniscono e combinano le loro azioni. Ma se si ha un numero di azionisti, inferiore a quello per soglia specificata, sarà impossibile ricostruire il segreto originale. (Riferimento Slide Time: 13.41) Vediamo un'altra affascinante applicazione avanzata della crittografia. E per motivare questa applicazione, fatemi citare un esempio il meraviglioso Sundar Kaand dalla nostra epopea Ramayana, così le persone che hanno familiarità con Sundar Kaand si troveranno facilmente sotto questo. Così, nel Sundar Kaand lo scenario è la seguente mamma Sita è stata rapita da Ravana ed è in Sri Lanka e Ram è in India. E da quando Ram manca Sita è molto triste. Così, dice al suo messaggero cioè Hanuman, che oh Hanuman, per favore vai in Sri Lanka e passa il mio messaggio a Sita che mi manca. (Riferimento Slide Time: 14 :21) E il messaggero dice, ok signore, come qualunque cosa desiderate seguo la vostra istruzione. (Riferirsi Slide Time: 14.27) Ma poi Ram dice che visto che incontrerai Sita per la prima volta, Sita potrebbe non essere in grado di identificarti. Allora, quello che fai è il seguito che prendi questo anello come prova che effettivamente sei il mio messaggero. E se Sita ti chiede una prova, puoi dare questo puoi mostrare questo anello e lei sarà in grado di identificarti. Così, il messaggero prende la prova e inizia il meraviglioso viaggio arriva in Sri Lanka e lui sbarca ad Ashoka Vatika e inizia la conversazione con mamma Sita, dove dice che oh madre io sono il messaggero di lord Ram. (Riferimento Slide Time: 15 :00) Ma Sita è molto spaventata. (Rinvio Slide Time: 15.04) È già vessata dal popolo di Ravana. Quindi non è in grado di fidarsi di Hanuman. Lei dice come posso fidarmi di te. (Riferirsi Slide Time: 15 :13) Così qui Hanuman mostra la prova cioè l'anello che Ram ha dato a Hanuman, e non appena l'anello viene mostrato a Sita. (Riferirsi Slide Time: 15.20) Lei ha felicemente identificato l'anello e dice, sì, conosco molto bene questo anello e anzi mi fido di te. Così in questo esempio l'anello funge da prova che viene dato e mostrato in chiaro dal messaggero, il messaggero sta facendo una dichiarazione o una pretesa che sia effettivamente il messaggero di Ram. E a dimostrare la sua affermazione sta dimostrando in realtà la prova in chiaro, ovvero l'anello. E questo era possibile nell'età di Sathyuga.Perché la gente lì avrebbe effettivamente usato per parlare la verità, ma mostrare la prova in chiaro è molto pericolosa nel mondo attuale di Kaliyuga. Quindi, ora la domanda è, è possibile che Hanuman provi la sua affermazione cioè, è il messaggero di Ram in una moda a conoscenza zero. E quello che intendo per zero conoscenze di moda è, la prova non dovrebbe rivelare nulla sull'anello. E dovrebbe solo provare la dichiarazione che Hanuman è effettivamente il messaggero di Ram. Il che significa che non devono trapelare ulteriori informazioni sull'anello attraverso la prova. E ancora più importante, se Hanuman non possiede l'anello, poi pur dando la prova che dovrebbe essere catturato e va respinto. Quindi un sistema a prova di conoscenza zero o un protocollo di conoscenza zero garantisce l'approvatore per provare una dichiarazione senza rivelare nulla della prova. (Riferimento Slide Time: 16.39) Così ora vediamo un'applicazione di zero knowledge proof nel contesto della scienza informatica ovvero, nel contesto della crittografia. Quindi immaginate Alice e Bob sono 2 entità e dicono che Alice ha scelto 2 grandi numeri primi P e Q, che sono numeri primi casuali P e Q di diciamo 512 ciascuno, e lei moltiplica i primes P e Q per ottenere il numero N, e lei fa rivendicare Bob che ehi Bob, conosco i principali fattori di N. E Bob dice, beh, posso verificare la tua affermazione a patto che tu mi mostri i fattori di N perché effettivamente se Alice conosce i fattori P e Q a Bob e Bob si può moltiplicare P e Q e controllare se il prodotto è effettivamente uguale a N o no. Così qui P e Q sono in realtà la prova, che Alice può mostrare a Bob. Ma un protocollo di conoscenza zero permetterà ad Alice di convincere Bob che effettivamente conosce P e Q senza mostrare realmente P e Q. Così le persone che hanno familiarita 'con la crittografia pubblica RSA, possono relazionarsi con questo esempio alla crittografia RSA perche' nel contesto di RSA chiave pubblica criptosistema, N sono in realtà i moduli e fa parte della chiave di crittografia che Alice possiede, e sarà pubblicamente disponibile mentre P e Q faranno parte di una chiave di decodifica che sarà disponibile solo ad Alice. Ora, vi potreste chiedere che il motivo per cui Bob stesso non possa fare il fattore N. Beh, si crede che factoring di grandi numeri sia effettivamente un problema computazionalmente impegnativo. (Riferimento Slide Time: 18.13) Ora vediamo un'altra applicazione correlata di protocollo di conoscenza zero. Quindi, qui lo scenario è il seguente. Quindi, immaginate, Alice ha creato una copia isomorfica di un grafico che possiede. Quindi, quello che intendo per i grafi isomorfi è il seguente. Se si considerano i grafici 1 e 2, anche se strutturalmente sono disegnati in modo diverso, i saggi di proprietà sono uguali, questo significa che hanno lo stesso numero di vertici. E hanno lo stesso numero di spigoli. E ancora più importante, esiste una biezione, cioè una a una a una e alla mappatura dalla serie di vertex del primo grafico al vertice del secondo grafico, tale che il seguente rapporto tenga, se c'è uno spigolo tra il nodo u, v nel primo grafico allora esiste un bordo compreso tra il vertex mappato u e il vertex mappato v nel secondo grafico e viceversa. In tal senso, questi 2 grafici sono isomorfi in natura. Immaginate quindi Alice iniziata con il grafico 1, e crea una copia isomorfica del grafico 1 per ottenere il grafico 2. E per ottenere il grafico isomorfo 2 quello che deve fare in sostanza è che deve solo prendere una permutazione casuale della serie di vertex del primo grafico, e cioè le informazioni segrete che Alice possiede. E ora supponga che Alice renda pubblici i 2 grafici, 1 e 2. E va a Bob e dice, ciao Bob, posso dimostrarti che il grafico 1 e 2 sono isomorfi in natura. Ancora, le persone che conoscono bene il problema dell'isomorfismo grafico, si renderanno conto che il controllo del grafico, verificando se 2 grafici sono isomorfi o meno, in assenza della biezione è effettivamente ritenuto un problema computazionalmente difficile, se i grafici sono di grande grandezza. Così Alice è ora interessata a dimostrare che i grafici sono isomorfi in natura senza mostrare realmente l'isomorfismo grafico. Così Bob sfida Alice e dice, beh, se effettivamente vuoi dimostrare che i 2 grafici sono isomorfi, mostrami l'isomorfismo o la biezione, perché se mi mostri la biezione allora posso verificare facilmente se i 2 grafici 1 e 2 sono isomorfi in natura. Ma usando un protocollo di conoscenza zero, Alice può convincere Bob che effettivamente i 2 grafici, 1 e 2 sono isomorfi. E nel processo, Bob non imparerà nessuna informazione sull'effettiva biiezione, che mappa il grafico 1 al grafico 2. Così ancora, si tratta di un'applicazione molto avanzata della crittografia. (Riferimento Slide Time: 20 :41) E la prossima applicazione avanzata di crittografia che vorrei discutere è quella del calcolo dell'outsourcing. Quindi in questo problema, lo scenario è il seguente. Abbiamo un cliente computazionalmente debole, e vuole portare a termine qualche tipo di calcolo. Quindi facciamo astrarre quel calcolo da una funzione f, e possiede alcuni dati x e vuole calcolare il valore della funzione sui dati x. Ma dato che si tratta di un processore computazionalmente debole, non ha la capacità di effettuare il calcolo da solo. Quindi quello che fa è che impegna il servizio di un provider di servizi cloud, e che esterna il calcolo della funzione al provider di servizi cloud dandogli la descrizione della funzione così come i dati x. Così, poiché la funzione è disponibile per il fornitore del servizio cloud, così come i dati sono disponibili al fornitore del servizio cloud. Un fornitore di servizi cloud può effettuare il calcolo stesso e può rispedire il risultato al client computazionalmente debole. Ebbene, in linea di principio la soluzione funzionerà. Ma il problema qui è cosa se il provider di servizi cloud è un tipo corrotto. In questo caso, non vi è alcuna garanzia di privacy in uscita in quanto il cliente sta dando i dati in chiaro al fornitore di servizi e di conseguenza, il fornitore di servizi sarà completamente a conoscenza dei dati su cui ha effettuato il calcolo. E sarà anche a conoscenza del risultato del calcolo. E allora se vogliamo impedire al provider di servizi cloud di conoscere i dati. La domanda qui è, è possibile che il client computazionalmente debole non riveli i dati e ne esternalizzi ancora il calcolo. Quindi, una soluzione potenziale sarà che invece di inviare i dati e chiari, può inviare una versione crittografata dei dati e la descrizione della funzione. E invece di effettuare il calcolo su quel dato chiaro, il fornitore di servizi cloud dovrebbe essere in grado di svolgere la stessa funzione sui dati crittografati. E dovrebbe rispedire nuovamente il risultato del calcolo in una moda criptata, che il cliente computazionalmente debole può decriptare. Quindi ora, potreste chiedervi, qual è il problema con la soluzione proposta. Il problema qui è che dato che i dati sono ora disponibili in una moda criptata. Come può un fornitore di servizi cloud effettuare il calcolo senza conoscere i dati. Così fino a 12 anni fa si riteneva che questo problema fosse un problema molto difficile perché non avevamo alcuna forma di crittografia che possa supportare questa soluzione proposta. Il che significa che non c'era alcuna forma di schema di crittografia dove fosse possibile effettuare il calcolo sui dati crittografati. Ma 12 anni indietro nel 2006, la storia è stata fatta dove è stata proposta la prima proposta di candidatura per una simile tipologia di schema di crittografia speciale che chiamiamo come schema di crittografia completamente omomorfo. Quindi a livello molto alto, uno schema completamente omomorfo consente di effettuare il calcolo sui dati crittografati senza conoscere realmente i dati. Ecco quindi di nuovo un'applicazione molto avanzata della crittografia. (Riferimento Slide Time: 23 :48) La prossima applicazione avanzata di crittografia che sto per discutere è quella relativa al consenso distribuito. Quindi immaginate il seguente scenario che abbiamo un insieme di leader mondiali di reciproca diffidenza. E insieme vorrebbero arrivare a una decisione se attaccare un determinato paese o meno. Il che significa che vorrebbero eseguire un protocollo tra di loro dove scambiavano messaggi come per il protocollo e la fine del protocollo, tutti i leader dovrebbero essere sulla stessa pagina. (Riferimento Slide Time: 24:16) Quindi l'astrazione di questo problema è quello che chiamiamo come problema di consenso distribuito. (Riferimento Slide Time: 24 :23) E nel problema del consenso distribuito abbiamo un insieme di n parti che si diffidano reciprocamente, e t di essi potrebbero essere corrotti. E ciascuna delle parti ha un bit privato che potrebbe essere di 0 o 1. Ad esempio, in questo contesto specifico. 0 significa non bombardare il paese 1 significa attaccare il paese. Così ogni entità ha un input privato. E l'obiettivo è quello di eseguire un protocollo tra queste entità in modo che alla fine del protocollo tutte le buone entità debbano essere sulla stessa pagina. Il che significa che dovrebbero ottenere un pezzetto comune come l'output che è la proprietà dell'accordo che richiedo dal protocollo. E la seconda proprietà che esigo dal protocollo è che se all'inizio stesso tutte le buone entità erano sulla stessa pagina. Il che significa che tutti avevano lo stesso input comune dire b, poi l'uscita dell'algoritmo dovrebbe essere solo b. Quindi questa è una proprietà di validità. Quindi ho bisogno di un protocollo di consenso distribuito, che mi fornirebbe la proprietà dell'accordo così come la proprietà di validità. E abbiamo a disposizione molti ben noti protocolli di consenso distribuiti, di nuovo, che è un'applicazione molto avanzata della crittografia. (Riferimento Slide Time: 25 :28) E l'applicazione finale avanzata della crittografia che vorrei discutere è una sorta di problema del Santo Graal nella crittografia o in un computing distribuito sicuro, che viene definito un calcolo multi party sicuro o MPC in breve, la descrizione del problema è la seguente. Immaginate di dare un set di n parti reciprocamente diffidenti che sono presenti attraverso diverse porzioni del globo. E non si fidano l'uno dell'altro. Quindi immaginate che le parti siano denotate da 1 a e ciascuna parte abbia dei dati privati, potrebbe essere un po ', potrebbe essere un database, potrebbe essere qualsiasi tipo di dato. E c'è una funzione comune F, che è una funzione n - ary per funzione n - aria, intendo la funzione prende input dalle entità n. Quindi l'obiettivo qui è quello di trovare un protocollo in base al quale le parti si scambiano messaggi tra di loro. Tale che alla fine del protocollo si dovrebbero raggiungere i seguenti 2 obiettivi. Il primo obiettivo è la correttezza cioè, i buoni dovrebbero essere in grado di ottenere l'output della funzione sugli input di tutte le parti, indipendentemente dal comportamento dei cattivi, e il secondo obiettivo importante è quello della privacy, che richiede che l'avversario o i cattivi non imparino nulla durante il protocollo oltre quello che può essere rivelato dal proprio input e dalla funzione output. Così a livello molto alto, l'obiettivo del protocollo MPC è quello di emulare l'effetto di un terzo partito attendibile. Immagina per il momento in cui hai a disposizione un terzino di fiducia a tutti i n partiti, allora questo problema di calcolo multi party è molto facile da risolvere. Quello che ogni partito può fare è poter inviare il suo input privatamente al terzo attendibile. E dato che il terzo è attendibile da tutti i soggetti, abbiamo la garanzia che non rivelerebbe gli input della singola persona agli altri partiti. Ora, la terza parte attendibile può calcolare il valore della funzione su tutti gli input n e può inviare indietro l'output a ogni entità. Ma il problema con la soluzione con la parte di fiducia in terza parte è che in pratica non abbiamo a disposizione un terzino così attendibile. Quindi l'obiettivo di un protocollo di calcolo multi party sicuro è quello di emulare il ruolo di un terzo attendibile eseguendo un protocollo tra le entità stesse. Questo significa quello che un protocollo di calcolo multi party sicuro garantisce per te che qualunque cosa sia fattibile in presenza di un terzo attendibile, lo stesso può essere ottenuto anche in assenza di un terzo attendibile eseguendo un protocollo tra le singole entità. Quindi questo è come il santo problema del gradimento su un computing distribuito sicuro, perché se si ha una soluzione per questo problema astratto, allora si hanno soluzioni di migliaia di problemi mondiali reali che possono essere astratte da questa bellissima nozione di calcolo sicuro multi party. Quindi, questo mi porta alla fine di questa prima lezione. Per concludere con in questa lezione abbiamo brevemente discusso di quale crittografia è tutta, il significato della crittografia, e ne abbiamo discusso Così su un livello molto alto, l'obiettivo del protocollo MPC è quello di emulare l'effetto di una terza di fiducia. Immagina per il momento in cui hai a disposizione un terzo partito attendibile a tutte le n parti, quindi questo problema di calcolo multi party è molto facile da risolvere. Quello che ogni partito può fare è che può inviare il proprio input privatamente al terzo attendibile. E dal momento che il terzo è attendibile da tutte le entità , abbiamo la garanzia che non rivelerà gli input della singola persona verso le altre parti.Ora, la terza parte attendibile può calcolare il valore della funzione su tutti gli input n e può inviare indietro l'output a ogni entità. Ma il problema con la soluzione con la parte di fiducia terza è che in pratica non abbiamo a disposizione un terzino così attendibile. Quindi l'obiettivo di un protocollo di calcolo multi party sicuro è quello di emulare il ruolo di una terza parte attendibile eseguendo un protocollo tra le entità stesse.Questo significa ciò che un protocollo di calcolo multi party sicuro garantisce per te è che qualunque sia dovibile in presenza di un terzo attendibile, lo stesso può essere ottenuto anche in assenza di un terzo attendibile eseguendo un protocollo tra le singole entità. Quindi questo è come il santo problema del gradimento su un computing distribuito sicuro, perché se si ha una soluzione per questo problema astratto , allora si hanno soluzioni di migliaia di problemi reali del mondo che possono essere astratte da questa bellissima nozione di calcolo multi party sicuro.Così, questo mi porta alla fine di questa prima lezione. Per concludere con in questa lezione, abbiamo brevemente discusso di cosa sia la crittografia, il significato della crittografia, e abbiamo discusso di alcune applicazioni avanzate della crittografia. Spero che ti sia piaciuta questa lezione. Grazie.