SSL Secure Socket Layer 3.0, cos'่ e come funziona

Vi proponiamo questo articolo relativo alle tecnologie SSL Secure Socket Layer 3.0, a cui oggi giorno ่ affidata la sicurezza di gran parte dei dati traferiti in internet
di Fabio Boneschi pubblicata il 09 Giugno 2005, alle 10:10 nel canale Sicurezza
31 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infoGrazie a tutti.
come mai non la può conoscere ? Le chiavi pubbliche non si chiamano pubbliche perchè sono conosciute da tutti?
Ed infatti ho scritto una bestialità
Ora cmq dovresti aver capito, per un terzo incomodo non in possesso di una chiave privata, si tratterebbe di risolvere un'equazione in 2 incognite, cosa impossibile
Chiave &Lucchetto
Salve...per comprendere meglio il concetto di chiave pubblica e privata, si può fare un parallelo con chiave e lucchetto (quelli fisici intendo, non digitali).
La chiave pubblica è come un lucchetto, mentre la chiave privata è la chiave fisica per aprire il lucchetto.
In pratica Tizio invia a Caio un lucchetto (chiave pubblica), di cui solo tizio ne possiede la chiave per aprirlo (chiave privata). Caio a questo punto non può fare altro che confezionare una scatola (il codice da inviare crittografato con la chiave pubblica) e chiuderla col lucchetto di Tizio (criptazione), quindi invia la scatola inlucchettata ( il codice cifrato), ovviamente solo Tizio che è in possesso della chiave fisica (chiave privata) potrà aprire il lucchetto ed aprire la scatola (decriptare e leggere il codice in chiaro).
Se ho sbagliato vi prego di correggermi
Dopodichè il server comunicava gli algoritmi scelti fra quelli supportati dal client e sceglieva un nonce generato localmente (Rserver) e spediva il tutto al client.
A questo punto il server invia il proprio certificato (firmato da una CA,basta guardare nelle proprie opzioni del broswer per vedere le CA presenti) con la propria chiave pubblica e poi comunica al client che è arrivato il suo turno (transazione server conclusa).
Il client risponde scegliendo una chiave casuale di 384 bit detta Premaster Key che invia al server in forma crittografata utilizzando la chiave pubblica (certificata) del server.
La Session Key vera e propria però non è la Premaster Key ma è ricavata da i 2 nonce (Rserver e Rclient) e la stessa Premaster Key.
Entrambi calcolano la Session Key.
A questo punto il client spedisce 2 messaggi per indicare che da qui in avanti si utilizzerà la chiave e che il protocollo di handshake è terminato.
Il server risponde con 2 messaggi per confermare i precedenti.
Adesso è terminato completamente l'handshake fra client e il server.
Talvolta potrebbe esserci anche l'autentificazione del client da parte del server (non è obbligatoria),ho omesso questa parte.
Da qui in poi si cripta i dati provenienti dallo strato applicativo oltre che un controllo d'integrità.
Infatti si utilizza un altro protocollo di SSLv3 (il precendente definiva le regole per l'handshake) per la crittografia e l'integrità.
I msg provenienti dallo strato applicativo (si pensi a SSLv3 come a uno strato intermedio fra strato applicativo e strato di trasporto o meglio del solo TCP visto che funziona solo con quest'ultimo) vengono suddivisi in blocchi di 16kbyte ciascuno (se è abilitata la compressione ogni unità è compressa singolarmente).
Poi si calcola con l'algoritmo scelto per l'integrità (esempio MD5) un Hash sul blocco+la Session Key concatenata a quest'ultimo.
Poi l'hash viene aggiunto al blocco come MAC (Message Autentication Code) e compresso.
Poi viene cifrato con l'algoritmo a chiave simmetrica scelto (di solito per transazioni commerciali viene calcolata l'Xor fra la KeyStream di RC4,a sua volta generata utilizzando come seme la Session Key,e il blocco in questione).
Infine viene aggiunta un'intestazione a questo blocco finale cifrato e passato allo strato di trasporto (il quale lo inserirà come carico utile in un segmento TCP).
Da notare che il migliore algoritmo per l'integrità è SHA-1 e per la crittografia il Triple DES con chiavi a 168Bit.
Altrimenti un altro per la crittografia è l'RC4 con chiavi a 128Bit (se non sbaglio in alcuni paesi è necessario però che i primi 88Bit siano pubblici per ragioni di governo....) e per l'integrità invece un alternativa a SHA-1 è MD5.
Da notare che quando si utilizza http su ssl prende il nome di https.
Inoltre non è possibile (almeno su Apache) utilizzare la funzione di "VirtualHost" basati su i nomi perchè prima di scambiare qualsiasi dato (quindi anche i msg http) si autentifica il server con un certificato firmato da una CA dove è presente il "nome logico" del server web.
Spero di non aver detto qualcosa di errato se sì ditemelo
Edit :
I 2 protocolli di SSLv3 sono SSL Handshake Protocol (il primo per l'handshake) e SSL Record Protocol (per il trasporto crittografato dell'informazione e il controllo di integrità
Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".