Protezione della posta elettronica mediante crittografia

Transcript

Protezione della posta elettronica mediante crittografia
ÿ Alessandro Bordoni
“PGP”
ÿ Anna Grasso
“Funzioni HASH”
ÿ Fabrizio Civetta
“RSA”
ÿ Gabriele Agosti
“IDEA”
Arpanet, metà degli anni ’60
Nascita del Web, progetto Cern nel 1989
La posta elettronica è una delle
applicazioni più usate su Internet…
Problemi di sicurezza:
ÿ
ÿ
ÿ
Riservatezza: non c’è garanzia che solo il
destinatario possa leggere il messaggio;
Autenticazione: non c’è garanzia sull’identità
del mittente
Integrità: non c’è garanzia che il messaggio
non sia stato alterato
Esistono alcuni sistemi di sicurezza per la
posta elettronica:
sicurezza dei messaggi testuali:
PGP (Pretty Good Privacy)
sicurezza dei messaggi multimediali:
S/MIME, PGP/MIME
Come si è detto, il programma di crittografia per eccellenza,
dei messaggi testuali, é il Pretty Good Privacy (PGP)
Lo scopo principale di PGP é quello di permettere la
trasmissione cifrata dei messaggi di posta elettronica fra
utenti diversi attraverso Internet
In realtá le operazioni possibili sono molteplici
Nel giugno 1991 lo statunitense Philip Zimmermann
realizza e distribuisce gratuitamente il programma
PRETTY GOOD PRIVACY (PGP) un programma di
crittografia diventato ormai uno standard
Zimmermann viene citato in tribunale dalla RSA Data
Security Inc. per violazione del brevetto sull'algoritmo
RSA
e accusato (legge ITAR) dal governo degli Stati Uniti
di esportazione illegale di strumenti crittografici
Legge denominata ITAR - International Trafic in Arms
Regulation. Vieta qualsiasi esportazione illegale di armi
al di fuori degli Stati Uniti
L’ITAR definisce i programmi di crittografia "armi non
esportabili" qualora la complessitá degli algoritmi
utilizzati sia troppo elevata (algoritmi con chiavi superiori
a 40 bit - recentemente 56 bit)
Accusa ritirata nel 1996, mentre la controversia con
RSA viene mediata da una successiva collaborazione tra
le due parti per la realizzazione delle versioni successive
del software
Programma per lo scambio sicuro di
messaggi testuali
Integra algoritmi di crittografia
consolidati
Usa crittografia a chiave simmetrica e a
chiave pubblica, calcolo impronta e firma
digitale
Fornisce confidenzialità, autentica del
mittente e integrità dei messaggi
E’ indipendente dall'architettura e dal
sistema operativo
Sorgenti, librerie e documentazione
disponibili liberamente su Internet
Il PGP utilizza due algoritmi di crittografia: il sistema a
chiavi pubbliche RSA e quello a chiavi private IDEA
Il suo funzionamento é molto semplice: ammettiamo che
l'utente A voglia spedire all'utente B un messaggio. PGP
cifra tale messaggio utilizzando l'IDEA e una chiave K
generata casualmente. Occorrerà spedire all'utente B la
chiave K da utilizzare per decifrare il messaggio (IDEA é
un algoritmo che utilizza la stessa chiave per cifrare e
decifrare il messaggio).
Il PGP risolve brillantemente il problema utilizzando l'RSA.
L'utente A, infatti, inserisce la chiave K nel messaggio
cifrandola con la chiave Pubblica di B. In questo modo
solo B può, con la propria chiave Privata, recuperare la
chiave K ed usarla per leggere il resto del messaggio
criptato con l'IDEA.
In teoria, si sarebbe potuto utilizzare direttamente l'RSA per
cifrare l'intero messaggio. In pratica però, la complessità
dell'RSA é troppo elevata per permetterne un uso intenso
(i file da cifrare potrebbero essere molto lunghi),
soprattutto se messo in relazione con l'IDEA
Il sistema di cifratura IDEA-RSA di PGP é riassunto da questo schema :
L'RSA, per come é stato definito, permette un'altra
importante operazione : l'autenticazione dell’utente.
Se il messaggio viene cifrato utilizzando la chiave
privata S invece della chiave pubblica P, si ottiene
un messaggio criptato che può essere decriptato
utilizzando soltanto la chiave pubblica P. Ma soltanto
chi é in possesso di S può aver cifrato il messaggio,
quindi possiamo star tranquilli che il messaggio é
autentico. E' come se l'autore del messaggio,
cifrandolo con S, lo avesse firmato
PGP prevede comunque la creazione di archivi
pubblici elettronici che contengano le chiavi
pubbliche dei vari utenti. E' importante che si dia la
massima diffusione alla propria chiave pubblica,
perché ciò evita che l'analista C possa frapporsi tra
A e B spedendo ad entrambi la propria chiave
pubblica e facendo credere loro che si tratti invece
della chiave pubblica di A o di B. In questo modo C
sarebbe in grado di intercettare e leggere ogni
messaggio spedito da A a B e viceversa.
Firma del messaggio (opzionale)
n PGP recupera la chiave privata del mittente
dal private key ring usando il suo userID come
indice
n poi chiede all'utente la passphrase e la usa per
decriptare la chiave privata
n viene composta la componente signature
Compressione del messaggio
Decompressione del messaggio
Autenticazione del messaggio (opzionale)
n PGP recupera la chiave pubblica del mittente
dal public key ring usando come indice il
campo keyID della componente signature
n quindi decripta il digest e lo confronta con
quello che ottiene
Crittografia del messaggio (opzionale)
n PGP genera una chiave di sessione e cripta il
messaggio
n avendo recuperato la chiave pubblica del
destinatario dal public key ring usando il suo
userID come indice
n viene composta la componente chiave di
sessione
Codifica del messaggio
Decodifica del messaggio
Decrittografia del messaggio (opzionale)
n PGP recupera la chiave privata del ricevente dal
private key ring usando come indice il campo
keyID della componente chiave di sessione
n poi chiede all'utente la passphrase e la usa per
decriptare la chiave privata
n In tal modo recupera la chiave di sessione e
decripta il messaggio
Generazione delle chiavi di sessione
n le chiavi segrete sono numeri casuali di 128 bit generati
usando lo stesso algoritmo CAST-128
Identificatori delle chiavi
n PGP consente ad ogni utente di avere più coppie di
chiavi pubblica/privata
Key rings
n ogni utente deve mantenere un file delle sue coppie di
chiavi pubbliche/private e un file delle chiavi pubbliche
dei corrispondenti
Il PGP assegna il livello di fiducia nell'abbinamento
chiave pubblica – utente:
n il campo key legitimacy viene calcolato dal
PGP in base al valore dei campi signature
trust
Inserimento da parte della Network Associates
di un sistema key escrow (nelle versioni sia
freeware che commerciali dalla 5.5 alla 6.5.3)
una funzione che permette di creare e archiviare
chiavi crittografiche aggiuntive
Tali chiavi permettono ad una terza parte di
poter decifrare i documenti in caso di
necessità
Questa chiave aggiuntiva poteva essere inserita
solo col consenso del proprietario della
chiave pubblica, questa sembrava una
soluzione accettabile
Il problema è che la funzione in esame,
chiamata anche Additional Decryption Keys
(ADK), non è affatto sicura in PGP
Il software è incapace di distinguere fra una
chiave aggiuntiva inserita in una chiave pubblica
in modo legittimo (col consenso del proprietario)
da una inserita in modo fraudolento
L'allarme è stato lanciato da un esperto tedesco
in algoritmi crittografici, il ricercatore Ralf
Senderek, che ha dimostrato come sia possibile
ingannare il sistema di gestione delle chiavi di
PGP e leggere email o documenti cifrati con le
versioni dalla 5.5 alla 6.5.3.
Rilascio di una patch da parte della
Network Associates (proprietaria di PGP)
per rassicurare gli oltre 7 milioni di utenti
affermando che questa falla di sicurezza
può essere sfruttata solo in particolari
circostanze e attraverso procedimenti
molto complessi, alla portata solo di
pochissimi esperti
La funzione per il key escrow è stata
introdotta dietro forti pressioni del Governo
USA (per questioni di ordine pubblico) ed
implementata in PGP compromettendo la
proverbiale sicurezza di un software che si
propone di difendere la privacy degli utenti
Autenticazione
n
n
SHA-1, RSA
supporta firme staccate
Confidenzialità
n
n
CAST-128 o IDEA o Triplo DES
si utilizza una chiave di sessione one-time
Compressione
Codifica per compatibilità
n
radix-64
Segmentazione
www.pgp.com
www.pgpi.com
(versioni precedenti)
Nella moderna crittografia le FUNZIONI
HASH hanno assunto un ruolo
fondamentale per la garanzia dell'integrità
dei dati e l’autenticazione dei messaggi.
Vengono utilizzate per generare un sorta
di “riassunto” di un documento informatico
(file).
“HASH” è un termine inglese che vuol dire
“tritare”
L'algoritmo elabora ("macina") il
messaggio e ne ricava un riassunto di
lunghezza fissa
Una funzione hash
prende in input un
messaggio e
restituisce un output
denominato hash
code,o
semplicemente hash.
Ma come fa?
Associa a stringhe di bit di lunghezza
arbitraria, stringhe di bit di lunghezza
fissata inferiore.
h:D
C
con dominio D e codominio C tale che |D| > |C| quindi la
h è del tipo molti-uno
Dato un valore di
hash è molto difficile
risalire al messaggio
che l'ha generato
Per argomenti diversi
la funione hash dà
risultati diversi.
garanzia
integrità
messaggio
Un valore di hash è immagine
rappresentativa compatta di un a stringa di
input e la identifica univocamente
La lunghezza di un valore di hash varia a
seconda degli algoritmi
RSA : messaggio 512 bit
firma 512 bit
DSS : messaggio 160 bit
firma 320 bit
Ma per messaggi più lunghi….?
Una soluzione consiste nel:
n
n
Dividere il messaggio originale in blocchi
Firmare indipendentemente ogni blocco
Svantaggi di questo approccio:
• Tempo
• Spazio
• Sicurezza
L’uso di una funzione hash pubblica h fornisce
una soluzione efficiente a tutti questi problemi.
La strategia che potrebbe essere adottata
da un utente A che intendesse firmare un
proprio messaggio x di lunghezza
arbitraria è l’utilizzo di una funzione hash
Ciò avviene nel seguente modo:
•
•
•
Calcolo la funzione hash z = h (x) del messaggio x
Firmo z tramite la sua chiave privata
Trasmette all’utente B il messaggio x e la z firmata
1.
2.
3.
4.
Un mittente A vuole spedire un messaggio ad
un destinatario B :
A utilizza la hash function e la applica al
messaggio originale
Genera il “message digest”
Il digest viene firmato con la chiave privata
Il digest viene inoltrato con il messaggio stesso
A
B
B riceve il messaggio da A :
1. Calcola z=h(x), mediante h() che è
pubblica.
2. Verifica la fonte del messaggio
Nella scelta di una hash function occorre fare attenzione
alle COLLISIONI.
Proprietà che h deve soddisfare per evitare possibili
contraffazioni :
SICUREZZA DEBOLE : h è debolmente priva di
collisioni se dato un messaggio x è computazionalmente
inammissibile trovare un messaggio x’ tale che
x<>x’ e h(x)=h(x’)
SICUREZZA FORTE : h è fortemente libera da collisioni
se è computazionalmente inammissibile trovare due
messaggi x ed x’ tali che
x <> x’ e h(x)=h(x’)
SICUREZZA ONE- WAY :h() è una funzione hash one
way se, dato un message digest z, è
computazionalmente inammissibile trovare un
messaggio x tale che h(x)=z.
La proprietà di Sicurezza
Implica
PROPRIETA’ ONE -WAY
Forte
PROPRIETA ‘ SICUREZZA
DEBOLE
Tali proprietà sull’assenza di collisioni corrispondono
a due diversi tipi di attacchi:
¸
ATTACCO A FORZA BRUTA SEMPLICE:
permette di trovare un messaggio che produca un hash
uguale a quello di un messaggio dato
¸
ATTACCO DEL COMPLEANNO:
trova due messaggi che producono lo stesso hash
Hash alghoritm più in uso:
SHA (secure hash algorithm)
MD (message digest)
L'algoritmo MD5 utilizza un buffer di 128 bit inizializzato a
un valore prefissato
Divide il messaggio originale (visto come una stringa di bit)
in blocchi di 512 bit aggiungendo se necessario dei bit
aggiuntivi per arrivare a tale cifra
Per ogni blocco di 128 bit vengono eseguiti 4 passi che
consistono nel mescolare completamente i 512 bit in
ingresso con il buffer di 128 fino a che tutti i blocchi in
ingresso sono stati consumati.
Alla fine il buffer sarà il message digest del testo in
ingresso
Esempio :
Prendiamo due input di diverse dimensioni:
"a" -->
60B725F10C9C85C70D97880DFE8191B3
"Prova hashing per HTMLit" -->
EFC56F6C520FFB812BB9854D093AD43
sono stati calcolati due valori hash della
stessa lunghezza (128 bit) e
apparentemente simili (rappresentati con 16
cifre esadecimali)
Fornisce una rappresentazione compressa di un
messaggio o di un file dati.
q
q Interessa la codifica di messaggi di lunghezza
inferiore a 2^64 bit
qSHA-1 produce un message digest di 160 bit
qIntegrità e autenticazione dei dati
PROPRIETA’ :
1.
Trasmissione autentica, non intercettata.
2. Impossibile trovare due messaggi che
hanno lo stesso valore di hash
NO COLLISIONI
Alcuni ricercatori dell’università di
Shandong hanno pubblicato un articolo in
cui descrivono alcune tecniche scoperte
che metterebbero a rischio la sicurezza
dell’algoritmo
SHA-1 è utilizzato nella maggior parte dei
protocolli Internet
Nonostante ciò rompere SHA-1 non è alla
portata di tutti.
Un normale pc impiegherebbe 1000 anni
Per ora sembra che non ci si debba
preoccupare molto
Il PGP utilizza due algoritmi di crittografia: il sistema a
chiavi pubbliche RSA e l’IDEA
Queste classi di algoritmi
crittografici sono particolarmente
interessanti perché risolvono il
problema della sicurezza in modo
completamente diverso da
qualsiasi altro tipo di sistema
crittografico
• E' basato su tecniche di teoria dei numeri: prodotto di due numeri primi di
dimensioni elevate (ad esempio con 300 cifre decimali).
• Definiamo alcuni concetti di teoria dei numeri per poter analizzare il
funzionamento del cifrario RSA:
– Un numero p>1 si dice primo se è divisibile solo per ±1 e ±p.
– Dati tre interi a,b≥0 e n>0, si dice che a è congruo a b modulo n se esiste
un intero k per cui a = b + kn ( o equivalentemente se a mod n = b mod n,
dove l'operatore mod indica il resto della divisione intera tra a e n, b e n).
– Per un intero n>1 si definisce la funzione di Eulero _(n) come il numero
di interi minori di n e relativamente primi con esso. Se n è un numero
primo si ha che _(n)=n-1.
In un sistema crittografico tradizionale, é previsto
che il mandante e il ricevente posseggano una
copia della chiave di cifratura.
Questa caratteristica non sempre é desiderabile.
Ammettiamo infatti che dobbiamo
spedire un messaggio cifrato ad
una persona che si trova dall'altro
lato del globo. Come facciamo per
scambiarci la chiave da utilizzare ?
I telefoni possono essere intercettati, e di usare
Internet non se ne parla neanche.
Ammettendo che siamo in grado di trasmettere con
sicurezza la chiave da utilizzare,chi ci dice che un
giorno questa persona non decida di rendere
pubblica la chiave e che magari noi abbiamo
utilizzato anche con altre persone ?
Si tratta quindi di un problema grave.
Per risolverlo, nel 1976, W.
Diffie e M. Hellman, definirono
uno schema che oggi va sotto il
nome di "crittografia a chiave
pubblica"
Con questo metodo solo la chiave privata deve essere tenuta segreta mentre la
chiave pubblica può essere distribuita a chiunque voglia spedire un messaggio al
possessore della chiave. Qualora finisse nelle mani di un pirata, egli non potrà
fare altro che cifrare messaggi senza poterli poi decifrare
Il paradigma di comunicazione è il seguente: i due interlocutori A e B
hanno entrambi una coppia di chiavi. A richiede a B la sua chiave
pubblica con la quale cifra il messaggio e spedisce il risultante
messaggio cifrato a B.
Il messaggio cifrato con una
chiave pubblica può essere
decifrato solo con la
corrispondente chiave privata.
Pertanto B, mediante la sua
chiave privata, può decifrare il
messaggio e leggerlo in tutta
sicurezza.
Un metodo concreto per realizzare un tale sistema fu ideato e
messo a punto nel 1978 da tre scienziati, R. Rivest, A. Shamir e
L. Adleman. Il loro sistema crittografico é conosciuto come
"sistema a chiave pubblica RSA", dal nome dei tre scienziati ed è
stata la prima funzione matematica sottoposta a brevetto.
RSA ci garantisce che:
La chiave di cifratura e quella di
decifratura sono diverse;
E' difficile ricavare la chiave privata dalla
chiave pubblica e dal testo cifrato;
E' facile cifrare e decifrare il messaggio
in esame.
RSA può lavorare con chiavi lunghe a
piacere, ed è sicuro con chiavi di
almeno 150 bit. La sua sicurezza
deriva dalla difficoltà di fattorizzare i
grandi numeri (>10 100)
ANALISI DELL’ALGORITMO RSA
In linea di principio, l'analisi dell'algoritmo potrebbe
essere facilmente suddivisa in due parti:
GENERAZIONE DELLE CHIAVI
FUNZIONAMENTO
La prima parte, la generazione della
coppia di chiavi, viene solitamente
effettuata in questo modo:
•vengono scelti due numeri primi p, q molto grandi;
•viene calcolato n=pq, e la funzione di Eulero _(n) = (p - 1)(q - 1) dopo
di che i due primi p, q vengono eliminati;
•si sceglie un intero e minore di _(n) e primo con esso;
•utilizzando la versione estesa dell'algoritmo di Euclide viene calcolato
l'intero d così da avere e * d = 1 mod _(n);
•vengono resi pubblici i valori e,n che costituiscono la chiave pubblica
e mantenuto segreto d che, utilizzato con n rappresenta la chiave
privata.
Una volta generata la coppia di chiavi, vediamo insieme le
operazioni effettuabili, immaginando di avere due utenti,
l'Utente A e l'Utente B, entrambi con la propria coppia di chiavi,
pubblica e privata, più la chiave pubblica della controparte:
Cifratura
L'Utente A deve inviare del materiale
cifrato all'Utente B. Per fare questo
utilizzerà la chiave pubblica dell'Utente B
effettuando queste operazioni:
L’utente A cifra il messaggio m con la chiave pubblica
dell’utente destinatario B:
c = m^e(B) mod n(B)
Decifratura
Ricevuto i dati cifrati, l'Utente B utilizzerà
la sua chiave privata per eseguire
l'operazione opposta di decifratura
B riceve il messaggio e lo decifra con la sua chiave privata :
m’ = c^d(B) mod n(B)
A questo punto ci si chiede: m=m’ ?
Per verificarlo applichiamo il Teorema di Eulero:
per ogni m <n risulta che
m^(e*d) mod n = m’ se e solo se e*d = 1 mod _(n)
Verificata la relazione, torniamo alla forma generica e proviamo a
moltiplicare entrambi i lati dell'equazione per m così da avere:
m(p-1)(q-1) * m mod n = 1 * m
e siccome potremmo scrivere m come m1 otterremo:
m[(p-1)(q-1)]+1 mod n = m
quindi, una funzione ed un esponente che ci permettono di ottenere in
un qualche modo, il valore di partenza, conoscendo quello di arrivo.
?
Come viene sfruttato tutto questo nell'algoritmo RSA?
Trovando un numero e minore di _(n) e primo con esso, ed un numero
d, tale che:
e * d = [(p - 1) * (q - 1)] + 1
oppure utilizzando l'aritmetica in modulo e sostituendo a (p - 1) * (q - 1)
la funzione di Eulero:
e * d = 1 mod _(n)
in questo modo, utilizzando il principio appena esposto, si avrà per il
valore m, questa equazione:
me mod n = c
Quale sarà il valore di c?
Naturalmente variabile, in base ai valori
utilizzati e di regola a noi sconosciuto, ma
questo non è un problema, anzi, ben si
presta a rappresentare il nostro dato
originario nella forma cifrata.
Cosa avviene se proviamo ad effettuare l'operazione opposta? La
risposta è semplice, otterremo nuovamente il nostro valore di
partenza:
cd mod n = m
Perche? Per il risultato avuto in precedenza, sappiamo che a c
possiamo sostituire me mod n, quindi:
(me)d mod n
che equivale a:
me*d mod n
ma a cosa era uguale e * d? Per definizione a (p - 1) * (q - 1) + 1,
allora sostituiamo ed otteniamo:
m[(p-1)(q-1)]+1 mod n
che come abbiamo già visto in precedenza è uguale al nostro valore
di partenza:
m[(p-1)(q-1)]+1 mod n = m
AUTENTICAZIONE
L'RSA, per come é stato definito, permette
peró un'altra importante operazione :
l'autenticazione di un messaggio.
In pratica, se il messaggio viene cifrato utilizzando la chiave privata S
invece della chiave pubblica P, si ottiene un messaggio cifrato che puó
essere decifrato utilizzando soltanto la chiave pubblica P.
Se il contenuto del messaggio é noto, allora si puó verificare che esso sia stato
cifrato solo da chi é in possesso della chiave privata S decifrandolo con la
corrispondente chiave P pubblica.
Ma allora, se solo chi é in possesso di S puó aver cifrato il
messaggio, allora possiamo star tranquilli che il messaggio é
"autentico". E' come se l'autore del messaggio, cifrandolo con
S, lo avesse firmato
L’RSA è un algoritmo a chiavi pubbliche:questa
tecnica evita molti degli svantaggi della chiave singola.
B non deve preoccuparsi di spedire in modo sicuro la
propria chiave ad A: la chiave è pubblica per
definizione, e può servire solo per spedire messaggi a
B, non per decodificarli.
B non deve proccuparsi se A è un agente segreto che fa il doppio gioco. A non
può decifrare messaggi mandati a B, né può fingere di essere B. I grandi
organismi non hanno problemi. Chiunque voglia trasmettere un messaggio a B
può farlo usando la chiave pubblica. Tuttavia, uno svantaggio di questo metodo
è la necessità di usare chiavi molto lunghe e quindi la lentezza dei processi di
codifica e decodifica.
Nasce nel 1991 da Lay e
Massey con una prima
Versione chiamata PES
(Proposed Encryption Algorithm)
ALGORITMO IDEA
(International Data
Encryption Algorithm)
Questa versione viene in
Seguito sostituita dall’IPES
(Improved Proposed Encryption
Algorithm)
E’ un codice cifrato a blocchi (come il DES), la
chiave è di 128 bit,mentre il DES aveva una
chiave di 64 bit in seguito ridotta a 56.
A differenza del DES, che era stato progettato
per implementazioni hardware, IDEA è stato
creato per software.
Essendo un algoritmo simmetrico IDEA ha una
parola chiave usata sia per cifrare che per
decifrare. Tale chiave ha lunghezza di 128 bit.
Intuitivamente, si capisce già che una parola
chiave di tali dimensioni rende la probabilità di
trovare la chiave, per chi non ne sia a
conoscenza, estremamente bassa. La ricerca
esaustiva, infatti, è praticamente impossibile: le
chiavi possibili sono 2^128!!
Per cifrare il file vengono esguiti 9 Round,
8 dei quali sono identici e fanno uso di 6
sottochiavi ciascuno, mentre il 9° e ultimo
passo utilizza 4 sottochiavi. Abbiamo così
un totale di 52 sottochiavi.
Funzioni utilizzate dall’algoritmo IDEA:
¸
¸
¸
Xor come il DES
Addizione modulo 2^16
Moltiplicazione modulo 2^16+1
Per ottenere in seguito la decodifica, è
necessario che queste tre operazioni
siano invertibili…
¸ Per quanto riguarda lo XOR e l’ADD
sappiamo che sono invertibili.
¸ La MUL mod N è invertibile se e solo se
tutti i fattori sono primi con N
La MUL mod 2^16+1 è sempre invertibile
poiché 2^16+1 = 65537, che è un numero
primo. Perciò è dimostrata l’invertibilità
tranne nel caso dello 0 che viene preso
come se fosse 65536 (2^16).
2. Ogni sottoblocco subisce 8 round in cui sono
coinvolte 52 sottochiavi diverse a 16 bit ottenute
dalla chiave a 128 bit. La chiave a 128 bit è
divisa in 8 stringhe di 16 bit, che sono le
sottochiavi del primo passo.
3. Le cifre della chiave a 128 sono shiftate di 25 bit
a sinistra in modo da generare una nuova
combinazione, il cui raggruppamento a 16 bit
fornisce le prossime 8 sottochiavi.
4. Il secondo passo è ripetuto finché le 52
sottochiavi sono generate.
5. Nell’ultimo passo vengono utilizzati soltanto i
primi 4 blocchi ottenuti dalla chiave shiftata.
La notazione usata
nello schema,
per le chiavi, è questa:
Z( j )i
i=numero sottochiave
j=numero round attuale
1. Il testo in chiaro viene elaborato dall’algoritmo
suddividendolo in blocchi da 64 bit
2. La cifratura con IDEA comporta una ulteriore divisione del
blocco di 64 bit del testo normale in 4 sottoblocchi di 16 bit.
Ad ogni passo j, i blocchi vengono processati
in questo modo:
ß MUL [ I blocco, Z(j)1 ]
ß ADD [ II blocco, Z(j)2 ]
ß ADD [ III blocco, Z(j)3 ]
ß MUL [ IV blocco, Z(j)4 ]
Per ogni j: 1< j < 8
In seguito (sempre nel corso del round j)
avremo queste 2 operazioni:
ß V = XOR [ I, III ]
ß VI = XOR [ II, IV ]
ß
ß
ß
ß
MUL [ V, Z(j)5 ]
ADD [ V, VI ]
MUL [ VI, Z(j)6 ]
ADD [ VI, V ]
ß XOR [ I, VI ], XOR [III, VI ]
ß XOR [ II, V ], XOR [ IV, V ]
ß Scambio [ II, III ]
Tutti questi passi si
ripetono per j volte (8)
Il passo finale (9) è diverso dagli altri:
ß
ß
ß
ß
MUL [ I, Z(9)1 ]
ADD [ II, Z(9)2 ]
ADD [ III, Z(9)3 ]
MUL [ IV, Z(9)4 ]
In seguito vengono
riaccorpati i 4 blocchi
di 16 bit, ottenuti dopo
tutti i procedimenti
descrtti
¸ Per decifrare il messaggio si usa lo stesso
schema della cifratura, utilizzando come chiavi
l’inverso delle chiavi rispetto alle operazioni di
MUL e ADD usate in precedenza
¸ Ad esempio le ultime 4 chiavi per decifrare un
messaggio saranno l’inverso delle prime 4 che
sono state usate per cifrarlo
¸ Un algoritmo robusto e semplice da
utilizzare per gli utenti
¸ La robustezza sta nella difficoltà che
avrebbe un eventuale crittoanalista nello
scoprire la chiave
¸ Infatti come abbiamo visto ci sono 2^128
possibilità
In termini economici e temporali questo significa:
Lungh.
Chiave¢
Costo
attacco£
1000 $
100.000 $
40 bit
56 bit
5 ore
37 anni
2 secondi
35 ore
1 anno
70.000 anni
19
10
anni
3,5 ore
37 giorni
7.000 anni
18
10
anni
1.000.000 $0.2 secondo
64 bit
80 bit
8
10.000 anni 7x10
anni
128 bit
21
10
anni
¸ A tutt’oggi IDEA non è stato ancora violato da
nessun attacco ed è quindi l’algoritmo più sicuro
in circolazione (Per ora si è dimostrato
impossibile da forzare dopo il quarto passo)
¸ Il suo utilizzo non è vincolato a nessun costo
per gli utenti (è un software free)
¸ Può essere implementato in maniera semplice e
con hardware poco costoso in quanto lavora su
componenti di 16 bit
Grazie per l’attenzione