Copyrigtht © 1986 Universita' di Firenze. All rights reserved.
Free license available.
VISA e Mastercard hanno
sviluppato congiuntamente il protocollo SET (Secure Electronic
Transaction) come metodo per il pagamento sicuro su reti
aperte.
SET è stato pubblicato come specifiche aperte per l'industria.
Tali specifiche sono disponibili per
essere applicate a qualsiasi servizio di pagamento e possono essere
usate dai venditori di software per sviluppare applicazioni.
Assistenza nello sviluppo di queste specifiche è stata fornita da GTE, IBM, Microsoft, Netscape, SAIC, Terisa e Verisign.
I principali motivi per cui società di carte di credito forniscono specifiche per pagamenti sicuri sono:
Gli obiettivi che SET si prefigge riguardo la sicurezza sono:
Gli obiettivi che SET si prefigge riguardo l'interoperabilità sono:
Gli obiettivi che SET si prefigge riguardo l'accettazione di mercato sono:
Per quanto riguarda le tecniche (analizzate poi in dettaglio) con cui SET si propone di raggiungere i propri obiettivi, si ha che:
Il complesso processo di codifica e certificazione che caratterizza il protocollo SET sfrutta i due metodi primari di codifica: crittografia simmetrica e crittografia asimmetrica. Vediamo come.
SET si affida alla crittografia per garantire la riservatezza
del messaggio.
In SET i dati del messaggio sono inizialmente codificati usando
una chiave simmetrica generata casualmente. Tale
chiave, a sua volta, è codificata usando la chiave
pubblica del destinatario del messaggio. Si ottiene la
cosiddetta busta elettronica, spedita al destinatario
insieme al messaggio codificato. Una volta ricevuta tale busta,
il destinatario la decodifica usando la propria chiave privata:
ottiene così la chiave simmetrica (generata casualmente)
che usa per decodificare il messaggio originale.
Quando combinata con un digest di messaggio,
la codifica tramite chiave privata consente all'utente di firmare
digitalmente un messaggio.
Un digest di messaggio è un valore generato
relativamente ad un messaggio, e rimane unico per quel messaggio.
Tale valore si ottiene passando il messaggio attraverso una funzione
di crittografia che non può essere invertita.
L'algoritmo usato da SET genera un digest di messaggio di 160 bit. Tale algoritmo è tale che cambiare un solo bit nel messaggio comporta il cambiamento, in media, della metà dei bit del digest. Si pensi che 2 messaggi con lo stesso digest possono al massimo differire di 1 bit ogni 1048 bit. È dunque computazionalmente impossibile generare due messaggi diversi con lo stesso digest.
Quando il digest di un messaggio è codificato usando la chiave privata del mittente, ed è aggiunto al messaggio originale, il risultato è conosciuto come firma digitale del messaggio.
Il destinatario della firma digitale può essere sicuro che il messaggio proviene realmente dal mittente (solo la chiave pubblica del mittente può decodificare il messaggio). Inoltre, grazie al digest di messaggio, il destinatario può verificare che il messaggio non è stato alterato dopo la generazione del digest.
Per esempio, Alice calcola il digest del messaggio che deve mandare a Bob, e lo codifica con la propria chiave privata: firma cioè digitalmente tale messaggio. Invia quindi a Bob sia il messaggio che la firma digitale. Quando Bob riceve il messaggio, ne calcola il digest e decodifica la firma digitale usando la chiave pubblica di Alice. Se i due valori coincidono, Bob sa che il messaggio è stato firmato usando la chiave privata di Alice e che non è stato alterato dal momento in cui è stato firmato.
SET utilizza una coppia di chiavi pubblica/privata esclusivamente
per creare la firma digitale. Quindi, ogni partecipante a SET
possiede due coppie di chiavi asimmetriche: la cosiddetta coppia
di chiavi di scambio, usata nei processi di codifica
e decodifica, e una coppia di chiavi di firma,
per la creazione e la verifica di firme digitali.
È da notare che il ruolo delle chiavi pubbliche e private
è invertito nei processi di firma dove la chiave privata
è usata per codificare (firmare), e quella pubblica è
usata per decodificare (verificare la firma).
Prima che due parti usino la crittografia a chiave pubblica per
concludere affari, ognuna desidera esser sicura che l'altra parte
sia stata autenticata.
Prima che Bob accetti un messaggio con la firma digitale di Alice,
Bob vuole essere sicuro che la chiave pubblica appartenga ad Alice
e non a qualcuno che in rete dice di essere Alice.
Un modo potrebbe essere quello di farsi mandare da Alice la sua chiave pubblica su un canale sicuro. Spesso però questa via non è praticabile. Un'alternativa è sfruttare una terza parte di fiducia che garantisca che quella chiave pubblica appartiene ad Alice. Tale parte è nota con il nome di Autorità di Certificazione (AC).
Tale autorità può emettere certificati che forniscono assicurazioni sull'identità di una persona. Una volta che Alice ha provato la propria identità (con passaporto, patente o altro), l'AC crea un messaggio che contiene il nome di Alice e la sua chiave pubblica. Tale messaggio, noto come certificato, è firmato digitalmente dall'AC. Esso contiene dunque informazioni sull'identità del proprietario così come una copia di una delle chiavi pubbliche del proprietario (di scambio o di firma). Per ottenere i maggiori benefici, la chiave pubblica dell'AC dovrebbe essere conosciuta dal più grande numero di persone possibile.
Poiché chi sfrutta SET ha due coppie di chiavi, ognuno dei partecipanti avrà due certificati. Entrambi i certificati sono creati e firmati nello stesso momento dall'AC.
I passi seguenti forniscono una descrizione del processo di codifica che interviene quando Alice desidera firmare alcuni dati relativi ad un bene e spedirli a Bob in un messaggio codificato.
SET introduce una nuova applicazione di firma digitale: la doppia firma.
Per capirne l'utilità, consideriamo la seguente situazione: Bob vuole spedire ad Alice un'offerta per acquistare la parte di una proprietà e contemporaneamente vuole inviare un'autorizzazione alla propria banca per il trasferimento di denaro sul conto di Alice, nel caso questa accetti l'offerta; tuttavia Bob non vuole né che la banca conosca i termini dell'offerta, né che Alice abbia alcuna informazione sul conto di Bob. Inoltre Bob vuole collegare l'offerta al trasferimento, in modo che i soldi si muovano solo nel caso in cui Alice accetti.
Bob può ottenere tutto questo firmando digitalmente entrambi i messaggi con una singola operazione di firma che creerà una doppia firma.
La doppia firma è generata calcolando il digest di entrambi i messaggi, concatenando i due digest insieme, calcolando il digest del risultato e codificando tale digest con la chiave di firma privata di chi firma.
Il firmatario deve includere il digest dell'altro messaggio, per consentire al destinatario di verificare la doppia firma. Entrambi i destinatari dei messaggi (cioè Alice e la banca di Bob) possono controllarne l'autenticità generando il digest della propria copia del messaggio, concatenandola con il digest dell'altro messaggio (digest, quest'ultimo, fornito dal mittente), e calcolando il digest del risultato. Se tale digest coincide con la doppia firma decodificata, il destinatario può confidare nell'autenticità del messaggio.
Vediamo un esempio: se Alice accetta l'offerta di Bob, spedisce alla banca un messaggio dove indica il proprio consenso e include il digest di messaggio dell'offerta. La banca verifica l'autenticità dell'autorizzazione al trasferimento di denaro fornita da Bob e si assicurara che il consenso di Alice si riferisca alla stessa offerta usando, per convalidare la doppia firma, il proprio digest dell'autorizzazione e il digest relativo all'offerta, presentato da Alice.
Attraverso la doppia firma la banca può dunque verificare l'autenticità dell'offerta ma non sarà in grado di conoscerne i termini.
In SET, la doppia firma è usata per collegare un messaggio, contenente un ordine, spedito ad un mercante, con le istruzioni di pagamento, contenenti informazioni sul conto, spedite all'acquirente.
Quando il venditore spedisce una richiesta di autorizzazione all'acquirente,
include le istruzioni di pagamento mandategli dal compratore,
e il digest del messaggio contenente le informazioni sull'ordine.
L'acquirente usa il digest inviatogli dal venditore e calcola
il digest delle istruzioni di pagamento per verificare la doppia
firma.
Questo documento non pretende assolutamente di essere una trattazione esaustiva delle possibilità offerte dal protocollo SET. La documentazione sull'argomento è abbondantissima e tale elaborato, nato come esercitazione, fornisce solo una panoramica e qualche esempio delle possibilità offerte da SET. La documentazione è disponibile in linea per qualsiasi approfondimento.