Il denaro contante è un problema. Gli assegni
e le carte di credito ne hanno ridotto la quantità fisicamente circolante, ma
la sua completa eliminazione è ancora lontana. D’altra parte, assegni e carte
di credito, permettono di invadere a fondo la privacy
delle persone. Oltre a queste ragioni e alla comodità di poter
effettuare acquisti stando seduti in casa, è la
sempre maggiore sicurezza con cui avvengono i pagamenti il motivo fondamentale
per cui l’e-commerce si sta diffondendo così
tanto. Infatti tali pagamenti avvengono mediante
dei moderni sistemi che gestiscono elettronicamente la moneta (Sistemi
Digital Cash).
Ciò è reso possibile con l’introduzione di protocolli che consentono di
effettuare transazioni.
Tra le proprietà desiderabili per un sistema Digital Cash abbiamo :
1. SICUREZZA: si cerca di trovare un modo per evitare la falsificazione della moneta elettronica che, essendo rappresentata da stringhe di bit, risulta facilmente duplicabile. Infatti la copia ed il riutilizzo di moneta elettronica è computazionalmente impossibile;
2. ANONIMATO: è importante per chi utilizza moneta elettronica proteggere la propria privacy, in particolare evitare tracce sul percorso della moneta che facciano risalire a chi l’ha usata. I protocolli che vengono utilizzati garantiscono diversi livelli di anonimato, in genere tutti ragionevolmente buoni;
3. SCALABILITA’: un sistema è scalabile se gestisce l’aumento degli utenti e delle risorse senza perdita di prestazioni. In genere l’uso di un server centrale, attraverso il quale avvengono le transazioni, limita la scalabilità del sistema, così pure come l’uso di meccanismi per individuare il riutilizzo della moneta (in quanto bisogna memorizzare per ogni utente molte informazioni relative alla moneta con un conseguente aumento della dimensione del database);
4. ACCETTABILITA’: è importante che la moneta elettronica emessa da una banca sia accettata dalle altre banche; quando tra le banche si effettua un scambio di valuta, la loro riconciliazione avviene in modo automatico;
5. TRASFERIBILITA’: è desiderabile che la moneta elettronica sia accettata da terzi, senza prima contattare la banca. In questo modo, viene valorizzata la proprietà di anonimato, anche se ciò complica il meccanismo che garantisce la sicurezza;
6. INDIPENDENZA DELL’HARDWARE: per il riutilizzo delle monete durante le operazioni off-line, alcuni protocolli sfruttano dell’hardware particolare che protegge da possibili intrusioni/manomissioni;
7. TIPOLOGIE DI PAGAMENTO: le modalità di pagamento sono diverse, come l'utilizzo di moneta elettronica opportunamente "coniata", assegni elettronici, smart card e carte di credito;
8. COSTI DI GESTIONE: i costi di gestione variano fondamentalmente in funzione del grado di sicurezza che il sistema offre;
Le differenti problematiche da affrontare per gestire l'e-commerce hanno portato alla creazione di diversi protocolli, ciascuno dei quali, in analisi dettagliata, si mostra più o meno efficace nel soddisfare determinate funzionalità. Questa efficacia porta a classificare i protocolli in diverse categorie.
Analizziamo 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, dando ad ogni assegno un unico identificatore (Stringa).
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.
6.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. 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 di firma digitale 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.
6.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 di firma digitale 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.
6.6 Firma Digitale
I nuovi sistemi di pagamento elettronico si basano su un estensione delle firme digitali dette blind signature. Uno schema di firma digitale è un protocollo per ottenere una firma da un firmatario in modo che egli non possa vedere ciò che firma, ad esso partecipano un mittente ed un firmatario. L’anonimato del mittente viene garantito, e ,per questo motivo tali schemi vengono utilizzati nei protocolli Digital Cash, ove assicurano, in particolare ,l’anonimato di chi usa moneta digitale. Sfortunatamente questo anonimato può essere usato da un malintenzionato per ottenere una firma che altrimenti non potrebbe avere. Descriveremo tali protocolli con l’aiuto di due partecipanti immaginari Alice(o semplicemente A) e Bob(o semplicemente B). Come accade usando del contante, Alice dovrà poter trasferire moneta digitale a Bob senza che una terza persona riesca a conoscere l’identità di Alice. Come conseguenza di ciò Bob potrà depositare la moneta elettronica sul suo conto bancario senza che la banca sappia chi sia Alice. Ma se Alice tentasse di dare a due persone lo stesso denaro elettronico con un programma che copia i bit,verrebbe individuata dalla banca,se Bob cercasse di depositare la stessa moneta digitale su due differenti conti,sarebbe individuato, ma Alice resterebbe anonima. La nozione di firma digitale fu inventata da D.Chaum che propose anche una prima implementazione. Lo schema usa l’algoritmo RSA.
Bob ha una chiave pubblica e,una privata d ed un valore pubblico n, Alice vuole che Bob firmi il messaggio m senza vederlo.
1. Alice sceglie un valore casuale k compreso tra 1< k < n. Allora maschera m calcolando t = mke modn
2. Bob firma t calcolando td = (mke)d mod n.
3. Alice smaschera td calcolando s = td /k mod n.
4. derivando allora la firma md mod n.
poiché s = td /k = (mke)d / k = kmd / k = md
6.7 Ecash
Ecash è un sistema di pagamenti sicuri per Internet elaborato da Digicash società fondata dal Dott. David Chaum del "Center for Mathematics and Computer Science" con sede ad Amsterdam, e reso operativo in collaborazione con la Mark Twain Bank di St. Louis.
Non è un sistema basato su transazioni con carta di credito: Ecash usa un proprio denaro virtuale, rappresentato da monete fornite da banche associate. Tali banche sono responsabili della certificazione dell'autenticità delle monete virtuali di Ecash.
Per poter utilizzare Ecash è necessario aprire un conto con una delle banche partecipanti. Sarà poi possibile memorizzare sul proprio computer monete elettroniche; tali monete, al momento di un acquisto, verranno trasferite al venditore sfruttando tecniche di crittografia a chiave pubblica e di firma digitale.
Operare con Ecash è piuttosto semplice: è
sufficiente procurarsi il software Ecash client e aprire un conto con una
delle banche partecipanti.
Il client Ecash, reperibile gratuitamente in rete, è in grado di operare (o
ricevere) pagamenti con qualsiasi altro utente Internet che stia anch'egli
utilizzando tale client.
Ad utenti e negozi non è richiesto alcun hardware particolare. Le banche avranno uno speciale hardware di codifica che assicuri velocità e affidabilità delle operazioni.
Ecash è un sistema basato su moneta, il che significa che si è creato denaro digitale usando una firma elettronica: tale firma rappresenta una quantità fissa di denaro chiamata moneta.
Sfruttando il client, il compratore (sia Alice) ritira ecash (una particolare forma di denaro digitale) da una banca e lo memorizza sul proprio computer.
Il compratore è adesso in grado di spendere tale denaro presso qualsiasi negozio che accetti ecash (sia Bob il proprietario di uno di tali negozi), senza dover aprire un conto con tale negozio e senza dover trasmettere un numero di carta di credito..
Il negozio è rappresentato da un documento html contenente una serie di indirizzi (URL) indicanti le merci in vendita. Ecash consente anche di effettuare pagamenti da persona a persona.
Ecash lavora con tutte le maggiori
piattaforme (MS Windows, Macintosh, UNIX). Esiste sia una versione con
interfaccia grafica che una versione solo testuale.
Per la versione corrente di Ecash è necessaria una connessione, ma una
versione che sfrutterà l'e-mail è annunciata per un prossimo futuro.
Sicurezza e riservatezza
Per garantire sicurezza e riservatezza Ecash sfrutta tecniche di firma digitale a chiave pubblica. I prelievi di ecash dal conto di ogni utente sono inoltre protetti da una password nota esclusivamente all'utente stesso.
Quando è utilizzato per la prima volta, il software Ecash genera automaticamente una coppia di chiavi per codifica RSA. Ogni persona che utilizza Ecash possiede un'unica coppia di chiavi. Con queste è possibile garantire la sicurezza di ogni transazione e messaggio.
Ecash garantisce l'anonimato solo di chi paga. Durante un pagamento, colui che lo effettua può rendere nota la propria identità, ma solo se decide di farlo.
Chi riceve il pagamento, invece, non gode di anonimato: durante la fase di compensazione il beneficiario di una transazione è identificato dalla banca.
Per quanto riguarda la riservatezza delle
transazioni, Ecash sfrutta la tecnica della firma digitale.
Quando il compratore ha necessità di effettuare un pagamento, deve avere ecash
sul proprio computer. Il prelievo dalla banca è in realtà, per ragioni di
riservatezza, qualcosa di più complesso che un semplice trasferimento di ecash
dalla banca al PC del compratore.
Il PC dell'utente (Alice) calcola quante monete sono necessarie per ottenere
la somma richiesta. Successivamente è il computer di Alice stesso che crea
monete assegnando ad ognuna di loro un numero di serie casuale. Quindi
spedisce alla banca queste monete, una ad una inserite in una speciale busta:
questa rappresenta il fattore "cecità".
La banca codifica i numeri "ciechi" con la propria chiave segreta (firma digitale), grazie alla proprietà della firma cieca che consente di applicare tale firma attraverso la busta; allo stesso tempo, la banca addebita sul conto di Alice la stessa somma. Le monete autenticate sono restituite ad Alice, che potrà togliere loro il fattore di "cecità" introdotto in precedenza, senza alterare la firma della banca. I numeri di serie con le loro firme rappresentano adesso moneta digitale; il valore delle monete è garantito dalla banca.
Quando Alice spenderà tali monete, la banca le accetterà in quanto da lei firmate. Tuttavia, poiché non sarà in grado di riconoscere le monete (che erano nascoste nella busta al momento di essere firmate), la banca non potrà dire chi ha effettuato il pagamento.