Nov 27 2003

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.


Nov 27 2003

Alain Turing e la macchina Enigma


by tonycrypt

Enigma Durante la seconda guerra mondiale tutte le comunicazioni militari tedesche venivano criptate con una macchina di cifra chiamata Enigma, ideata dall’ingegnere tedesco Arthur Scherbius. Questa macchina è una rappresentante niente affatto indegna di una classe di cifrari a rotore, utilizzati fino all’introduzione di cifrari elettronici e microelettronici che hanno sconvolto e trasformato il mondo della crittografia. Per forzare l’Enigma (alcuni dettagli della soluzione sono tenuti segreti fino ad oggi) Turing, per conto del governo inglese, si servì di gigantesche macchine chiamate appunto Colossi, che possono considerarsi i precursori dei moderni calcolatori elettronici. Turing è autore di ricerche estremamente raffinate e molto profonde sul concetto logico-matematico di calcolabilità: la strumento che egli ha proposto per affrontare il problema è noto oggi col nome di macchina di Turing. Le macchine di Touring non hanno niente da spartire coi Colossi, non possiedono né valvole, né transistor, né circuiti integrati(come i calcolatori della prima, della seconda o della terza generazione), esse sono macchine “astratte” e meramente “ideali” che esistono solo mente di Turing e in quelle dei logici che proseguono le sue ricerche.
Per rendersi conto di quanto i tempi siano cambiati basterà ricordare che l’Enigma aveva un grande inconveniente: era sprovvisto di stampante. I risultati apparivano illuminati su una tastiera apposita, lettera dopo lettera, e una persona doveva provvedere a trascriverli a mano su un foglio di carta. Una stampante elettro-meccanica avrebbe appesantito troppo il congegno e lo avrebbe reso poco maneggevole: un problema che la tecnica odierna consente di superare senza difficoltà.


Nov 5 2003

RC6


by tonycrypt

L’RC6 è stato sviluppato sotto richiesta del Ronald Rivest’s AES. Come il cifrario AES, lavora su blocchi di 128 bit e accetta chiavi di lunghezza variabile. Molto simile all’RC5, incorpora vari studi di analisi dell’algoritmo precedente, che hanno dimostrato che non tutti i bit dei dati sono usati per determinare l’ammontare delle rotazioni; l’RC6 utilizza prodotti per il calcolo delle rotazioni e tutti i dati di input per il calcolo dell’ammontare delle stesse.


Nov 3 2003

Virus Encrypted


by tonycrypt

Un virus è un programma come tanti altri, quindi formato da righe di codice. Ogni virus viene infatti identificato dall’antivirus attraverso una particolare sequenza di istruzioni in linguaggio macchina (stringa) che è propria di ogni parassita. Questa stringa non è altro che una serie di bytes, ognuno dei quali corrisponde ad una istruzione assembler o a un testo particolare racchiuso nel virus. Per ovviare questo riconoscimento ed essere meno riconoscibili, i virus ricorrono alla cifratura del codice (encryption). Lo stesso virus, in forma cifrata, diventa irriconoscibile, poichè ogni istruzione viene camuffata e trasformata in un’altra totalmente diversa di significato; così anche il testo, diventa una stringa incomprensibile. Inoltre il sistema di cifratura utilizza una chiave (di solito 8/16-bit) che può essere fissa ma anche variabile, cioè mutevole ad ogni infezione. Questo significa che il corpo cifrato del virus varia per ogni file infetto.