martedì 11 maggio 2010

Alice, Bob e Eva — Come si può giocare a mental poker

“Ora che abbiamo dimostrato matematicamente l'impossibilità di giocare a mental poker, vediamo come si può negare l'evidenza, dire che la matematica sbaglia, e giocare”.

“Voglio proprio vedere”.

“Una premessa: anche se noi abbiamo sempre visto RSA come sistema di crittografia a chiave pubblica, esso può essere usato anche come sistema classico, in cui io mi tengo segrete entrambe le chiavi, quella pubblica e quella privata, e ne uso una per crittare e l'altra per decrittare”.

“Ah, sì, questo è vero: una chiave chiude e l'altra apre. Mi avevi fatto l'esempio dei lucchetti”.

“Esatto. Inoltre l'esempio dei lucchetti è particolarmente adatto, perché consente di capire un'altra proprietà che useremo per giocare: la proprietà commutativa”.

“Cioè?”.

“Cioè io posso applicare al mio messaggio prima il lucchetto 1, poi il lucchetto 2, in sequenza, poi togliere il lucchetto 1 e, solo alla fine, il 2”.

“Non capisco cosa c'entri la proprietà commutativa”.

“Immagina che io prenda il messaggio, lo inserisca in una busta sigillata, numerata con 1. Poi prendo quella busta e la inserisco in una seconda busta, numerata con 2. Cosa devo fare per leggere il messaggio?”.

“Devi aprire la busta 2 e, poi, la 1”.

“Ecco, grazie alla proprietà commutativa io posso anche aprire prima la 1 e poi la 2. L'esempio delle buste non funziona, ma quello dei lucchetti sì: io metto il mio messaggio in una scatola, e sulla serratura posso applicare quanti lucchetti voglio. Poco importa se applico prima il numero 1 e poi il 2, o viceversa. Allo stesso modo non importa l'ordine che seguo per aprirli”.

“Ah, ho capito. E RSA funziona così?”.

“Sì, perché la codifica tramite RSA prevede che tu elevi il tuo messaggio a un certo esponente. Se vuoi codificare due volte con due chiavi diverse, devi elevare due volte. Questo significa che devi moltiplicare gli esponenti, e la moltiplicazione gode della proprietà commutativa”.

“Giusto”.

“Allora vado con il protocollo per giocare. Prima di tutto Bob prende il mazzo di carte, composto da 52 messaggi e li critta tutti utilizzando la sua chiave B”.

“Una sola chiave?”.

“Sì, non facciamo distinzione tra chiave pubblica e privata: Bob tiene la sua coppia di chiavi segreta, una parte viene usata per crittare e l'altra per decrittare. Invece di parlare di coppia di chiavi, chiamiamo il tutto chiave e rendiamo più lineare tutto il discorso”.

“Ok”.

“Poi, naturalmente, Bob mescola il mazzo, cioè permuta tutti i messaggi come vuole”.

“Ma così non sbircia?”.

“Sì, lui sa l'ordine delle carte, ma vedrai che non importa. Dopo aver mescolato il mazzo, lo invia ad Alice”.

“Quindi a questo punto Alice si trova con 52 messaggi che non riesce a decodificare, mentre Bob sa tutto”.

“Esatto. Ora Alice seleziona cinque carte a caso e le trasmette a Bob. Bob le decritta e ottiene la sua mano”.

“Ah, ok. Alice non può decrittare le carte, quindi non sa cosa ha in mano Bob”.

“Proprio così. Ora Alice seleziona altre cinque carte a caso, e le critta con la sua chiave A, poi le invia a Bob”.

“E Bob non può leggerle, perché Alice le ha crittate!”.

“Esatto. Bob può però togliere il suo lucchetto, grazie alla proprietà commutativa del sistema RSA. Lui decodifica i cinque messaggi inviatigli da Alice, ma non può leggerli perché Alice ha messo su di essi anche la sua chiave”.

“E cosa se ne fa di questi cinque messaggi mezzi decrittati?”.

“Li rispedisce ad Alice, la quale può ora togliere la sua chiave e, finalmente, leggerli: ecco la mano di Alice”.

“Ma è geniale”.

“Se è necessario distribuire altre carte, si ripete la procedura. Alla fine della mano i due giocatori rivelano le loro chiavi, in modo che entrambi possano controllare che l'altro non abbia barato”.

“Bellissimo. Ma, allora, com'è la storia? La dimostrazione di impossibilità è sbagliata?”.

“Ti faccio rispondere dai tre matematici:”.

Initially we proved that the card-dealing problem is insoluble, and then we presented a working solution to the problem. We leave it to you, the reader, the puzzle of reconciling these results. (Hint: each player would in fact be able to determine the other player's hand from the available information, if it were not for the enormous computational difficulty of doing so by “breaking” the code.)


Nessun commento: