2 ALCUNI PROTOCOLLI PER IL DIGITAL CASH
In questa sezione
analizzeremo quattro protocolli generici per un sistema digital cash.
L'obiettivo è mostrare come avviene una transazione economica tra due parti
generiche che chiameremo A e B. In tutti e quattro i protocolli esiste una banca
che funge da mediatrice, il cui obiettivo consiste nel generare e convalidare la
moneta che A invia a B. La denominazione progressiva dei protocolli è dovuta al
fatto che ogni singolo protocollo risolve i problemi esistenti nel protocollo
precedente. In questo modo si arriva all'ultimo protocollo, il quarto, che
rappresenta la soluzione ottimale. Inoltre all'interno della sezione
analizzeremo anche un attacco "ideale" a questi protocolli noto come
"crimine perfetto".
Nei confronti di questo attacco i protocolli non
hanno difesa e sono quindi vulnerabili.
Questo protocollo ha delle analogie con alcuni
protocolli crittografici. Risulta essere una semplificazione dell'assegno del
portatore.
E' espletato nei seguenti
passi :
- A prepara 100 assegni con l’importo di $1000;
- A mette questi 100 assegni, insieme a della carta carbone, in 100 buste sigillate
dandole alla banca;
- la banca apre 99 di queste buste, scelte a caso fra le 100, spedite da A e
verifica che ci siano assegni da $1000;
- la banca firma l’unica busta rimasta sigillata e grazie alla carta carbone tale
firma si trasferisce sull’assegno. A questo punto la banca restituisce ad A
tale busta detraendo $1000 dal suo conto;
- A apre la busta e spende l’assegno da un commerciante B;
- B controlla che la firma della banca apposta sull’assegno sia autentica;
- B incassa l’assegno dalla banca;
- la banca verifica la sua firma e accredita $1000 sul conto di B.
Con questo protocollo viene
mantenuto l’anonimato di A in quanto la banca
firma l’assegno senza vederlo e si tutela sull’effettivo importo
dell’assegno grazie alle 99 verifiche che precedono la firma. Risulta chiaro
che A ha solo l’1% di probabilità di frodare la banca, ma resta comunque il
fatto che A può copiare la moneta e spenderla più volte.
Il protocollo
precedente impedisce ad A di farsi firmare
dalla banca un assegno con un importo superiore. Il seguente protocollo risolve
il problema riguardante la possibilità che A possa copiare la moneta e
spenderla più
volte.
I suoi passi sono:
- A prepara 100 assegni con l’importo di
$1000 ciascuno. Ogni assegno include una stringa, significativamente lunga,
scelta casualmente che lo distingue univocamente;
- A mette questi 100 assegni, insieme a della carta carbone, in 100 buste sigillate
dandole alla banca;
- la banca apre 99 di queste buste, scelte a caso fra le 100, spedite da A e verifica che ci siano assegni da $1000 e che ogni assegno abbia una stringa univoca;
- la banca firma l’unica busta rimasta sigillata e grazie alla carta carbone tale
firma si trasferisce sull’assegno. A questo punto la banca restituisce ad A
tale busta detraendo $1000 dal suo conto;
- A apre la busta e spende l’assegno da un commerciante B;
- B controlla che la firma della banca apposta sull’assegno sia autentica;
- B incassa l’assegno dalla banca;
- la banca verifica nel suo data-base che un assegno con quella stringa non sia già
stato depositato, in tal caso accredita l’importo sul conto di B.
Con
questo protocollo la banca si tutela nel caso A cercasse di spendere più volte
l’assegno e nel caso in cui B cercasse di depositarlo più volte.
Il protocollo 2 tutela la banca dai possibili imbrogli ma non riesce comunque
ad identificare un eventuale falsificatore (A oppure B). Il protocollo 3 risolve
questo problema.
I suoi passi sono:
- A
prepara 100 assegni con l’importo di $1000 ciascuno. Ogni assegno include una
stringa significativamente lunga, scelta casualmente, che lo distingue
univocamente;
- A mette questi 100 assegni, insieme a della carta carbone, in 100 buste sigillate
dandole alla banca;
- la banca apre 99 di queste buste, scelte a caso fra le 100, spedite da A e
verifica che ci siano assegni da $1000 e che ogni assegno abbia una stringa
univoca;
- la banca firma l’unica busta rimasta sigillata e grazie alla carta carbone tale
firma si trasferisce sull’assegno. A questo punto la banca restituisce ad A
tale busta detraendo $1000 dal suo conto;
- A apre la busta e spende l’assegno da un commerciante B;
- B controlla che la firma della banca apposta sull’assegno sia autentica;
- B chiede ad A di scrivere una stringa casuale di identificazione sull’assegno;
- A accetta;
- B incassa l’assegno dalla banca;
- la banca verifica nel suo data-base che un assegno con quella stringa non sia già
stato depositato, in tal caso accredita l’importo sul conto di B e memorizza sia
la stringa identificativa dell’assegno che quella di riconoscimento nel
data-base;
- se la stringa di riconoscimento dell’assegno è già presente nel data-base la banca
lo rifiuta. Poi confronta la stringa identificativa sull’assegno con quella
memorizzata nel data-base:
- se sono uguali allora capisce che B è colpevole di aver copiato l’assegno;
- altrimenti se sono differenti la banca capisce che A ha copiato l’assegno.
Questo
protocollo presuppone innanzitutto che B non possa variare la stringa scritta
da A, a meno di un danneggiamento dell’assegno (per esempio l’assegno contiene
dei quadrati da riempire con delle X ) e poi che A sia presente al momento in
cui B verifica l’assegno con la banca.
2.4 Protocollo digital cash 4
Con questo
protocollo la banca può scoprire l’identità di A nel momento in cui questi
tenta di imbrogliare, riesce quindi a fare ciò che il protocollo precedente non
poteva. Per fare ciò è necessario utilizzare le nozioni di crittografia.
I passi sono:
- A prepara 100 assegni anonimi di $1000 ciascuno e ognuno di essi contiene:
- Ammontare
: $1000;
- Stringa di riconoscimento assegno: X;
- Stringhe di identità: I1
(I1L , I1R),I2(I2L, I2R)..I100 ( I100L , I100R).
Come si può vedere ogni assegno oltre ad avere la stringa che lo identifica univocamente contiene anche 100 coppie In ognuna delle quali è
generata come segue:
- A crea una stringa che contiene il suo nome,l’indirizzo,etc.. ;
- A scompone il tutto in due pezzi con un protocollo segreto e invia tutto alla
banca attraverso il protocollo bit-commitment[9]. Per esempio, I37
è composto da due stringhe I37L e I37R che, a richiesta della banca, possono essere
aperte da A in ogni momento;
- A nasconde i 100 assegni con il protocollo blind signature
visto in precedenza e spedisce tutto alla banca;
- la banca apre 99 di queste buste, scelte a caso fra le 100, spedite da A e
verifica che siano assegni da $1000, verifica la stringa di riconoscimento e
chiede ad A di rivelare le stringhe di identità;
- nel caso tali controlli siano andati a buon fine la banca firma l’assegno non
scoperto ad A e detrae $1000 dal suo conto;
- A apre la busta e spende l’assegno da un commerciante B;
- B controlla che la firma della banca apposta sull’assegno sia autentica;
- B consegna ad A una stringa di 100 bit scelta a caso, b1 b2 ..b100
e chiede di aprire la parte destra o sinistra di ciascuna delle stringhe di identità poste sull’assegno;
- A aprirà la parte sinistra o destra di Ik a seconda se bk sia 0 oppure 1;
- B incassa l’assegno dalla banca;
- la banca verifica nel suo data-base che un assegno con quella stringa non sia già
stato depositato, in tal caso accredita l’importo sul conto di B e memorizza la
stringa identificativa dell’assegno quella di riconoscimento e le altre
informazioni identificative nel data-base;
- se la stringa di riconoscimento dell’assegno è già presente nel data-base la banca
lo rifiuta. Poi confronta la stringa identificativa sull’assegno con quella
memorizzata nel data-base:
- se sono uguali allora capisce che B è colpevole di aver copiato l’assegno;
- altrimenti se sono differenti la banca capisce che A ha copiato l’assegno e siccome A ha
riutilizzato la moneta con un altro commerciante C, quest’ultimo avrà dato ad A
una stringa casuale di 100 bit differenti da quella datagli da B.La banca ricerca proprio i bit in cui
differiscono le due stringhe per rivelare l’identità di A. In particolare la
probabilità che le due stringhe di 100 bit siano uguali è 1/2100 per
cui la banca ricerca una coppia che, combinando i risultati delle due differenti
aperture, abbia entrambe le metà svelate. Per esempio supponiamo che le due
stringhe differiscano nell’ n-esimo bit allora le parti da mettere insieme (in xor) sono InL InR rivelando così l’identità di A.
E’ facile intuire che in questo protocollo viene
mantenuto l’anonimato di A (a meno che non imbrogli) e soprattutto all’atto
dell’acquisto (in particolare della verifica dell’assegno da parte di B) non è più necessaria la presenza di A per i
motivi visti prima.
2.5 Crimine perfetto
Come abbiamo visto sino ad ora l’anonimato risulta
essere fondamentale per le transazioni di moneta elettronica. Ma lo stesso
anonimato può essere usato per scopi illeciti come mostrano i seguenti passi
del protocollo noto come crimine perfetto:
- A rapisce un bambino;
- A prepara 10000 assegni anonimi di qualsiasi cifra;
- A nasconde questi assegni con il protocollo blind signature e manda tutto alle
autorità con le seguenti richieste che se non esaudite comporterebbero
l’uccisione del bambino:
- una banca deve firmare tutti assegni;
- pubblicare i risultati su di un giornale;
- le autorità accettano;
- A verifica l’avvenuta pubblicazione, scopre gli assegni e li spende;
- A rilascia il bambino.
Lo schema del
crimine perfetto rappresenta l'unico modo per poter attaccare con successo il
protocollo 4.