E-banking, e-trading, e-commerce, e-tutto. Un clic sul mouse ed ecco che i nostri soldi possono incamminarsi sulla rete, acquistare azioni in borsa, comprare un biglietto aereo o prenotare una camera in un hotel dall'altra parte del mondo. Diffidenti all'idea di spedire su Internet il numero della nostra carta di credito e i nostri dati personali, chiamiamo il call center del sito che ci interessa e dall'altro capo del filo ci risponde una suadente voce che ci garantisce che le tecnologie utilizzate sono a prova di bomba, che fanno uso dei più avanzati ed impenetrabili algoritmi di crittografia e che nemmeno un Arsenio Lupin nei suoi giorni migliori ed un Simon Templar dopatissimo riuscirebbero a mettere le mani sui nostri dati. Soddisfatti, mettiamo giù la cornetta, facciamo il nostro shopping online, poi apriamo il giornale e sprofondiamo nella disperazione più nera quando scopriamo che un hacker di 15 anni si è appena impadronito di un paio di milioni di numeri di carte di credito.
Suona familiare? Sicuramente sì, in un momento in cui il business si muove con forza verso Internet, attirato dai minori costi, dalla possibilità di raggiungere una clientela più ampia e soprattutto dagli incredibili vantaggi di organizzazione aziendale. E le risposte che vengono date alle nostre domande in termini di sicurezza spesso sembrano volerci convincere che quel lucchetto che durante la transazione appare sul nostro navigatore possieda virtù quasi miracolose.
In realtà, la complessità del problema è ben superiore al cifrare un paio di comunicazioni tra un client e un server. La sicurezza dei nostri dati coinvolge un ampio spettro di elementi, i parametri da tenere d'occhio perché nulla possa andare storto sono molto numerosi e, ancora una volta, l'elemento debole di tutte le trincee scavate intorno a quel numero di carta di credito resta quasi sempre l'essere umano.
"I nostri server utilizzano Ssl per la cifratura dei dati, garantendo così alle vostre transazioni il massimo livello di sicurezza". Quasi tutti i proclami di inaffondabilità di un sito suonano pressappoco così. In questo articolo cercheremo quindi di vedere da una parte se Ssl sia effettivamente così sicuro e dall'altra se il suo utilizzo sia una condizione sufficiente per garantire effettivamente l'inviolabilità dei dati.
Ssl, questo sconosciuto
Ssl è stato sviluppato negli anni '90 da Netscape ed è giunto finora alla versione 3. Le specifiche complete del protocollo (una sessantina di pagine) sono reperibili all'indirizzo home.netscape.com, mentre una introduzione più leggera si trova all'indirizzo docs.iplanet.com.
Lo scopo di Ssl è quello di garantire autenticazione e cifratura tra due applicazioni che dialogano attraverso un mezzo insicuro quale può essere Internet. Ssl si pone al di sopra del protocollo di trasporto (es.: tcp) e permette l'incapsulamento di dati e protocolli di più alto livello.
Ssl è strutturato in due strati, che prendono il nome di Record Protocol (che definisce il formato dei dati e le modalità di incapsulamento) e di Handshaking Protocol (che definisce le modalità per l'autenticazione, gli scambi iniziali di chiave e per la successiva trasmissione e ricezione dei dati cifrati).
Cosa succede quando un client (ad esempio il nostro navigatore) si connette al un server utilizzando Ssl? Semplificando un po' le cose, i passi seguiti sono nella maggior parte dei casi i seguenti:
1. Il client (es.: user@user.com) contatta il server (es.: www.server.com), inviandogli un "client hello" contenente una serie di dati quali la versione di Ssl utilizzata, i tipi di cifratura e di compressione supportati, un session id, 32 bit con data e ora correnti e 28 byte generati in maniera casuale.
2 Il server risponde inviando informazioni analoghe ("server hello"), cui segue il proprio certificato (quasi sempre di tipo X.509) ed un "key exchange message", necessario per la generazione di una chiave segreta qualora il certificato del server sia abilitato solo alla firma e non alla cifratura. Esso conterrà informazioni quali modulo ed esponente di una chiave rsa temporanea oppure parametri Diffie-Hellman. Infine, il server potrà richiedere a sua volta un certificato al client.
3. Il client riceve il certificato, ne controlla la validità e spedisce il proprio al server, ove questi ne abbia fatto richiesta.
4. Il server riceve l'eventuale certificato del client e a sua volta ne controlla la validità.
5. A questo punto, comincia la generazione delle chiavi segrete con cui verranno cifrate le comunicazioni successive. I particolari del processo dipendono da quali algoritmi sono stati selezionati nei passi precedenti. Nel caso venga utilizzato rsa, il client genera un "premaster secret" di 48 byte, lo cifra con la chiave pubblica del server (ricevuta con il certificato o con il key exchange message) e lo trasmette al server stesso.
6. Client e server generano il master secret dal premaster secret, combinandolo con i dati casuali trasmessi nei client hello e server hello, ed applicando in sequenza sha-1 e md5.
7. Il master secret appena generato è quindi utilizzato per generare finalmente, ancora tramite md5 e sha-1, la chiave segreta che verrà utilizzata nello scambio di dati, completa di initialization vector e message authentication code.
8. Client e server comunicano che l'handshake è terminato e che i messaggi successivi verranno cifrati con la chiave appena trovata.
9. Il trasferimento dati ha inizio.




Rispondi Citando