Il protocollo SHTTP


by tonycrypt

Le attuali reti informatiche prevedono lo scambio di informazioni da un computer all’altro attraverso svariati canali: via cavo, attraverso le fibre ottiche, via etere (cellulari, wireless, satellite, ecc.). Ma i problemi relativi alla sicurezza di questi canali sono tutt’altro che trascurabili: un potenziale nemico potrebbe intercettare le nostre comunicazioni, rubare dati, e poi utilizzarli come meglio crede. Per esempio, acquistando sul web mediante la carta di credito, sarà necessario digitare il proprio codice segreto. E se qualcuno intercettasse queste informazioni ponendosi tra il PC dell’acquirente ed il server che riceve i dati? Se, con questo sistema, qualcuno intercettasse i dati scambiati tra le banche? In problema è estremamente serio e pone non pochi limiti alle attività che ormai si svolgono quotidianamente sulle reti (trasferimenti di denaro, transazioni commerciali, scambio di informazioni riservate).
Così come si adotta la crittografia per proteggere la posta, si pone il problema di proteggere ogni tipo di informazione scambiata in rete: dati personali, numeri di carta di credito, attività economiche e così via. Bisogna insomma proteggere con la crittografia forte l’intero canale di trasmissione, da un terminale ad un altro: le informazioni devono essere codificate prima di essere inviate, e saranno decodificate solo a destinazione. Un eventuale intercettazione risulterebbe così infruttuosa, perchè il ladro di informazioni dovrebbe riuscire a decifrare il messaggio, cosa non facile se è stata usata una chiave sufficientemente robusta.
Il consorzio per il WWW ha pensato di scegliere come standard di base per l’autenticazione e la crittografia l’ SHTTP (Secure HyperText Transfer Protocol), che è un estensione dell’ HyperText Transfer Protocol (HTTP), protocollo di base del World Wide Web. L’SHTTP è stato progettato da E. Rescorla e A. Schiffman della EIT (Enterprise Integrated Technologic Inc.). Il protocollo fornisce capacità simmetriche al client e al server (stesso trattamento in richiesta e risposta) mentre mantiene il modello di implementazione dell’HTTP. SHTTP contiene dei formati standard di crittografia, in particolare: PKCS-7 e MOSS. SHTTP non richiede per il client la certificazione della chiave (o la chiave pubblica). Questo è importante perchè significa che le transazioni private possono avvenire senza che gli utenti abbiano stabilito chiavi pubbliche. Il protocollo lascia massima flessibilità nella scelta dei meccanismi di gestione della chiave, politiche di sicurezza e algoritmi di crittografia e supporta opzioni di negoziazione fra le parti per ogni transazione.
Il messaggio SHTTP, che sostituisce il messaggio HTTP, è composto da una linea di richiesta: di solito Secure-HTTP/ (versione protocollo). Questa linea è generalmente seguita da queste altre:

Content-Privacy-Domain indica il tipo di crittografia usata per trasferire il messaggio. Valori possibili: MOSS, PKCS-7.

Content-Transfer-Encoding dice in che modo il contenuto del messaggio è codificato. Valori possibili: BASE64, 8BIT, BINARY.

Content-Type è la linea di testa standard, contiene generalmente il valore: application/http. Se il messaggio è un SHTTP il valore di Content-Type è “application/s-http”.

Prearranged-Key-Info. Questa linea di testa contiene le informazioni che riguardano le chiavi usate nella incapsulazione del messaggio. Un uso di questo campo è quello di permettere lo scambio di messaggi cifrati tra utenti che non posseggono una coppia di chiavi pubblica/privata. Questo campo specifica i tre metodi di scambio delle chiavi: Inband, Kerberos, Outband. Inband e Kerberos prevedono lo scambio delle chiavi usando la testata di Key-Assign, mentre in modo Outband gli agenti hanno accesso al materiale che riguarda le chiavi in modo esterno, ad esempio con una base di dati. In questa linea viene quindi specificato l’algoritmo di crittografia a blocchi, usato per cifrare i dati, la chiave da usare per cifrare i messaggi (legata alla negoziazione tramite il campo Key-Assign) e il modo con cui si scambia questa chiave (Inband, Outband, Kerberos).

MAC-Info. Questa testata serve per fornire un controllo dell’autenticità del messaggio, controllando sia l’integrità che l’autenticazione del messaggio. Il calcolo viene fatto tenendo conto del messaggio, del tempo, e di una parte segreta tra il client e il server. Il MAC calcolato sul messaggio SHTTP incapsulato, mediante una funzione hash. Il tempo è rappresentato con un intero senza segno di 32 bit che rappresenta i secondi passati dalle 00.00 del 1 Gennaio 1970 (epoca secondo il sistema UNIX). La parte segreta è trattata in maniera locale, può essere ad esempio un identificativo ed una password. Recenti ricerche hanno dimostrato delle debolezze in questo modo di operare, per questo motivo è stato sostituito con un nuovo HMAC più complesso che prevede l’uso di operazioni di XOR.

A questo punto segue il messaggio vero e proprio.


Leave a Reply

You must be logged in to post a comment.