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