Secure Sockets Layer
Da Wikipedia, l'enciclopedia libera.
Secure Sockets Layer (SSL) è un protocollo progettato dalla Netscape Communications Corporation, autrice del famoso browser Netscape Navigator per realizzare comunicazioni cifrate su Internet. La versione 3.0, rilasciata nel 1996, è stata utilizzata come base di sviluppo per il protocollo Transport Layer Security (TLS). TLS è un protocollo standard IETF che è definito nella RFC 2246 ("The TLS Protocol Version 1.0").
Questi protocolli utilizzano la crittografia per fornire sicurezza nelle comunicazioni su Internet e consentono alle applicazioni client/server di comunicare in modo tale da prevenire il 'tampering' (manomissione) dei dati, la falsificazione e l'intercettazione.
Scopo primario di SSL è fornire sistemi di crittografia per comunicazioni affidabili e riservate sulla rete sfruttabili in applicazioni quali, ad esempio, posta elettronica e sistemi di autenticazione. Il protocollo SSL provvede alla sicurezza del collegamento garantendo:
- Autenticazione: l'identità nelle connessioni può essere autenticata usando la crittografia asimmetrica, ovvero a chiave pubblica (RSA, DSS, EL-Gamal). Così ogni client comunica in sicurezza con il corretto server, prevenendo ogni interposizione. È prevista la certificazione del server e, opzionalmente, quella del client.
- Confidenzialità nella trasmissione dei dati: la crittografia è usata dopo un handshake (accordo) iniziale per definire una chiave segreta di sessione. In seguito, per crittografare i dati è usata la crittografia simmetrica (AES,3DES, RC4, ecc.).
- Affidabilità: il livello di trasporto include un controllo dell'integrità del messaggio basato su un apposito MAC (Message Authentication Code) che utilizza funzioni hash sicure (MD5, SHA, RIPEMP-160, ecc). In tal modo si verifica che i dati spediti tra client e server non siano stati alterati durante la trasmissione.
I protocolli di sicurezza risiedono sotto protocolli applicativi quali HTTP, SMTP e NNTP e sopra il protocollo di trasporto TCP. Sia SSL che TLS possono venire utilizzati per aggiungere sicurezza a qualsiasi protocollo che utilizza TCP, ma il loro utilizzo più comune avviene nel protocollo HTTPS. Il protocollo HTTPS viene utilizzato per aggiungere sicurezza alle pagine del World Wide Web in modo tale da rendere possibili applicazioni quali il commercio elettronico. Entrambi i protocolli utilizzano metodi di cifratura a chiave pubblica e utilizzano certificati a chiave pubblica per verificare l'identità delle parti coinvolte.
Come SSL (dal quale è derivato) anche TLS è un protocollo modulare che consente l'utilizzo di estensioni per garantire la compatibilità in avanti e all'indietro e la negoziazione tra le parti.
Sia TLS che SSL richiedono alcune fasi basilari:
- Negoziazione tra le parti dell'algoritmo da utilizzare
- Scambio di chiavi segrete tramite cifratura a chiave pubblica e identificazione tramite l'utilizzo di certificati
- Cifratura del traffico tra le parti a chiave (segreta) simmetrica
Le prime implementazioni di SSL erano limitate a cifratura a chiave simmetrica di 40 bit a causa delle restrizioni imposte dal governo statunitense sull'esportazione di tecnologie crittografiche. La limitazione della dimensione delle chiavi a 40 bit è stata esplicitamente imposta per rendere la cifratura abbastanza debole da potere essere forzata (tramite l'uso di tecniche di ricerca brute force) dalle autorità giudiziarie che volessero decifrare il traffico criptato, ma sufficientemente resistente agli attacchi da parte di entità con minori disponibilità finanziarie. Dopo diversi anni di controversie pubbliche, cause e l'ammissione da parte del governo americano di disponibilità sul mercato di prodotti per la cifratura 'migliori' (sia all'interno che al di fuori degli Stati Uniti), alcuni aspetti delle restrizioni sono stati modificati. Le implementazioni moderne utilizzano chiavi per la cifratura simmetrica a 128 (o più) bit.
TLS è stato in seguito esteso da altri RFC, tra i quali:
- RFC 2712: "Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)". Illustra come le cifrature a 40 bit siano ormai superate.
- RFC 2817: "Upgrading to TLS Within HTTP/1.1", Spiega come utilizzare il meccanismo di Upgrade in HTTP/1.1 per inizializzare il Transport Layer Security (TLS) su di una connessione TCP esistente. Questo permette di condividere la stessa well known port tra traffico HTTP normale e sicuro.
- RFC 2818: "HTTP Over TLS". Differenziare il traffico sicuro da quello non sicuro tramite l'uso di una porta differente del server.
- RFC 3268: "AES Ciphersuites for TLS". Aggiunta di migliorie come l'Advanced Encryption Standard (AES), l'International Data Encryption Algorithm (IDEA), il Data Encryption Standard (DES) e il Triplo DES.
Anche se attualmente un numero sempre maggiore di prodotti client e server supportano TLS o SSL in modo nativo, esistono ancora molti prodotti che non supportano tali protocolli. In questi casi è possibile fare uso di prodotti che forniscono una cifratura SSL a sé stante.
[modifica] Voci correlate
- Handshake
- OpenSSL Implementazione open-source
- Crittografia simmetrica
[modifica] Collegamenti esterni
- http://www.ietf.org/html.charters/tls-charter.html
- RFC 2246: The TLS Protocol, Version 1.0
- RFC 4346: The TLS Protocol, Version 1.1
- Specifiche del protocollo SSL 3.0
- OpenSSL.org - Risorsa gratuita
L'originale inglese di questo articolo (o una versione precedente di esso) contiene materiale tratto da FOLDOC, utilizzato dietro permesso.
- Portale Informatica: accedi alle voci di Wikipedia che parlano di Informatica