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

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 pubblicata il , alle 10:10 nel canale Sicurezza
 
31 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
magilvia09 Giugno 2005, 15:47 #21
OK mi sono letto alcuni articoli sul'argomento e penso di aver capito, è chiaro che lo stato iniziale delle due macchine non sono note alla terza che tenta di inserirsi.
Grazie a tutti.
edridil09 Giugno 2005, 16:08 #22
La "terza macchina" non avrà mai lo stesso "stato iniziale" di nessuna delle altre due semplicemente perchè non è in possesso della chiave privata( di una coppia chiave pubblica-privata) di nessuno degli altri due attori
edridil09 Giugno 2005, 16:08 #23
La "terza macchina" non avrà mai lo stesso "stato iniziale" di nessuna delle altre due semplicemente perchè non è in possesso della chiave privata( di una coppia chiave pubblica-privata) di nessuno degli altri due attori
edridil09 Giugno 2005, 16:10 #24
ops, sorry del doppio post
aLLaNoN8109 Giugno 2005, 16:30 #25
Originariamente inviato da: magilvia
OK ancora non ho capito bene ma questa frase mi lascia perplesso:

come mai non la può conoscere ? Le chiavi pubbliche non si chiamano pubbliche perchè sono conosciute da tutti?


Ed infatti ho scritto una bestialità Nella fretta ho preso una svista, ho scritto pubbliche anzichè private
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
Klontz09 Giugno 2005, 17:49 #26

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
magilvia09 Giugno 2005, 17:58 #27
Penso che di tutto questo la cosa che confonde di più è che se A e B si scambio dati criptati, A invia a B chiave, doppia pubblica di criptazione e B invia ad A una'altra chiave, anche questa doppia e pubblica. Quindi alla fine nel sistema ci sono ben 8 chiavi, 4 pubbliche e 4 private
aLLaNoN8109 Giugno 2005, 19:51 #28
No, nel sistema ci sono sempre 4 chiavi: 2 pubbliche e 2 private. A e B non si scambiano mai le proprie chiavi private perchè non ce n'è bisogno! A cripta con la propria privata e con la pubblica di B, mentre B in ricezione decifra con la propria chiave privata e viceversa. Non si ha mai un invio di chiavi sul canale.
magilvia09 Giugno 2005, 23:24 #29
Mi riferivo al fatto che ciascuna chiave è doppia nel senso che è composta da due valori. Quindi 8 chiavi.
sgksgk09 Giugno 2005, 23:32 #30
Io sapevo che per SSLv3 [ho omesso in questo post l'autentificazione del client da parte del server perchè è facoltativa] il client invia al server una serie di informazioni (algoritmi di crittografia e d'integrità supportati,esempio Des,Triple Des,RC4 per la crittografia e MD5 e SHA-1 per l'integrità,l'utilizzo di compressione) e un nonce generato localmente chiamiamolo Rclient.

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à come scritto anche nell'articolo.

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".

La discussione è consultabile anche qui, sul forum.
 
^