A cura di Antonio Parziale
Pubblicato il 23/05/2005
I programmi usati per attaccare il PGP sono: IDEA, RSA, MD5, PRNG. L'articolo è tratto dalla tesi di laurea in "Applicazione delle tecniche di crittografia nella trasmissione ed elaborazione dati" redatta dall'ingegnere Federico Gennari nell'anno accademico 2000/2001
8.14 – attaccare il PGP
Il PGP come già detto in precedenza è un sistema ibrido che sfrutta una combinazione di 4 elementi interni passibili di attacco. I programmi usati sono: un cifratore simmetrico (IDEA), un cifratore asimmetrico (RSA), una funzione hash a senso unico (MD5), e un generatore di numeri pseudocasuali (PRNG). La funzione ZIP seppur usata non è direttamente una funzione di cifratura.
1) Il cifratore simmetrico IDEA (International Data Encryption Algorithm) è stato inventato da Xuejia Lai e James Massey nel 1991, opera su blocchi dati da 64 bit con chiavi da 128 bit, e sin da allora non c’è stato nessun progresso nella sua analisi; l’unico metodo di attacco è la forza bruta. Semplificando al massimo tutti discorsi fin qui fatti, possiamo affermare che in media la chiave verrà trovata a metà dello spazio delle chiavi, cioè 127 bit, che in decimale corrisponde a: 170,141,183,460,469,231,731,687,303715,884,105,728 chiavi da provare in media prima di trovare quella giusta. Il che esclude categoricamente una ricerca esaustiva.
2) Il cifratore asimmetrico RSA si basa, come dovrebbe essere noto, sulla congettura della difficoltà nel fattorizzare numeri prodotti dalla moltiplicazione di due giganteschi numeri primi. Non è però provato né che il problema sia difficile, né che la fattorizzazione sia l’unica o la migliore via da seguire. Ciononostante, che ci siano dei progressi in queste direzioni è più che remoto; anche se nessuna scorciatoia è plausibile al giorno d’oggi, la potenza dei computer, l’abbassarsi continuo dei costi dell’hardware e il miglioramento delle tecniche di fattorizzazione, potenzialmente cospirano contro la sicurezza del RSA, la quale rimane inviolata con le attuali capacità di calcolo (si veda anche l’appendice 4 a questo proposito). Le tabelle qui sotto possono dare un’idea della difficoltà (1 MIPS-anno è un computer a 1 Milione d’Istruzioni Per Secondo acceso per un anno) della fattorizzazione, e nella seconda c’è una stima di equivalenza nelle ricerca/fattorizzazione esaustiva delle chiavi usando l’algoritmo setaccio dei campi numerici (NFS):
|
Grandezza della chiave |
MIPS anni richiesti alla fattorizzazione |
|
512 |
3*104 |
|
768 |
2*108 |
|
1024 |
3*1011 |
|
2048 |
3*10 |
| Simmetrico | Asimmetrico |
| 56 bit | 384 bit |
| 64 bit | 512 bit |
| 80 bit | 768 bit |
| 112 bit | 1792 bit |
| 128 bit | 2304 bit |
Un’altro attacco possibile al RSA è quello basato sul crittogramma scelto, visto che la chiave di cifratura è pubblica e poi quello basato sulla cifratura con piccoli esponenti (si veda il paragrafo dedicato al RSA per i dettagli).
Un’arma contro il RSA non basato sull’algoritmo in se, è l’attacco temporale che nota il tempo impiegato dall’algoritmo per i calcoli, da cui deduce la grandezza dei numeri. Il PGP è però immune a ciò visto che usa il teorema del resto cinese (CRT si veda appendice 1 e 5) per velocizzare le operazioni, il che elimina parte della dipendenza dal tempo, ed inoltre la de/cifratura è fatta off-line, per cui non visibile ad un intruso.
3) La funzione hash come il MD5 è tale da ridurre un messaggio arbitrario in un riassunto di lunghezza fissata (128 bit), ed in teoria a senso unico, ossia dall’uscita non dovrebbe essere possibile ricavare l’ingresso e privo di collisioni, cioè non esistono due ingressi diversi che diano la stessa uscita.. Quindi non rimane che la forza bruta per forzare l’unicità del senso: trovare un messaggio M’ tale che MD5(M’) = MD5(M), con M il messaggio richiederebbe provare circa un miliardo di messaggi per 1.07*1022 anni. Anche l’uso del paradosso del compleanno per forzare le collisioni non ha successo se non in un tempo grottesco (585 anni nelle stesse condizioni di prima).
L’analisi differenziale controlla i crittogrammi i cui testi in chiaro hanno specifiche differenze e le analizza nel modo in cui si propagano. Ha successo reale su di uno stadio del MD5, ma non può niente contro 4 stadi consecutivi.
4) I file contenenti i portachiavi sono cifrati grazie al hash della frase d’ordine; il fatto è che una lingua parlata ha la sua ridondanza ed entropia, come già visto. Per l’Inglese corrente ogni carattere (codificato da 8 bit ASCII) ha 1.3 bit di entropia/informazione per carattere; dunque una frase da 128 bit di codifica (l’uscita del MD5) avrà 128 bit di entropia solo se l’ingresso è di almeno 98 lettere (ovvero 128 bit di entropia in ingresso): (8/1.3) * (128/8) = (128/1.3) = 98.46 caratteri. Non è proponibile una cosa del genere, quindi è davvero possibile capire la frase d’ordine che cela le chiavi se si usano meno caratteri. Se però la frase d’ordine fosse una sequenza casuale di lettere, la ridondanza verrebbe a mancare e l’entropia per carattere aumenta log(26)/log(2) = 4.7 bit. Se le lettere sono casuali ne bastano solo 27 per avere un’uscita della funzione hash che sia di 128 bit d’entropia: (8/4.7)*(128/8) = 27.23 caratteri.
5) I generatori di numeri pseudo casuali (PRNG) sono in realtà due nel PGP: il generatore ANSI X9.17 ed una funzione che misura l’entropia tra le pause di battitura dei tasti dell’utente, la trueRand. Quest’ultimo forma un “bacino” di numeri casuali (il file randseed.bin) che saranno l’ingresso del ANSI X9.17; lo stato interno del X9.17 ed il randseed vengono “lavati” prima e dopo la generazione dei numeri casuali. Questi generatori casuali formano poi la chiave sessione dell’IDEA, che risulta essere particolarmente sicura.
6) Attacchi al supporto hardware: questo tipo di attacchi esula dal contesto e si rimanda alle fonti in caso di interesse, citiamo solo l’esistenza di programmi installati abusivamente che memorizzano la battitura dei tasti (leggendo le frasi d’ordine), i sistemi di sorveglianza esterna TEMPEST (che legge a distanza i monitor) o programmi che fungano da cavalli di troia per accedere a file privati.
In sostanza il PGP fornisce uno dei migliori programmi di sicurezza esistenti, quasi da essere lo standard pratico di fatto nella cifratura mondiale.