.:: Matematica ::. CRITTOGRAFIA La crittografia è l'arte che tratta delle “scritture segrete”, cioè i metodi per rendere “offuscato” un messaggio in modo da non essere comprensibile a persone non autorizzate. La parola crittografia deriva dalla parola greca kryptós che significa nascosto e dalla parola greca gráphein che significa scrivere. I sistemi di crittografia sono chiamati anche sistemi di cifratura. La controparte della crittografia è la crittoanalisi, cioè l' arte di scardinare i sistemi di cifratura. La scienza che studia la crittografia e la crittoanalisi e' chiamata crittologia. Il messaggio originale e' chiamato testo in chiaro, ed il messaggio codificato e' chiamato testo cifrato. Quando si codifica un messaggio, si utilizza una procedura che lo converte in testo cifrato (cifratura). Viceversa, quando si rende leggibile un messaggio, si usa il procedimento opposto, chiamato decifratura. La crittografia è di fondamentale importanza nell'informatica (in maniera particolare con l'avvento del web) poiché, citando un semplice esempio, si vuole evitare che dati riservati inviati attraverso Internet vengano letti da estranei (cosa piuttosto semplice, siccome ogni file [ipotizziamo una e-mail] attraversa svariati host). Storia della crittografia La necessità di nascondere messaggi strategici da occhi nemici è antica quanto l'uomo: ci sono tracce di cifrari antichi quanto gli ebrei... con il loro codice di atbash. Inoltre si hanno tracce anche di un cifrario prodotto da Gaio Giulio Cesare: a lui si attribuisce l'uso (se non addirittura l'invenzione) del cifrario di Cesare [cifrario a sostituzione monoalfabetica in cui ogni lettera del testo in chiaro è sostituita nel testo cifrato dalla lettera che si trova un certo numero di posizioni dopo nell'alfabeto], un sistema crittografico oggi ridicolo, ma emblema della nascita di un concetto totalmente nuovo e ottimo per comprendere le idee basilari della crittografia e i primi attacchi della sua "avversaria": la crittoanalisi. A partire dal cifrario di Cesare, i sistemi via via escogitati sono stati vari e man mano più evoluti: da questo elementare cifrario si è passati al più generalizzato cifrario a scorrimento, poi ancora al cifrario monoalfabetico, che a sua volta ha gettato le basi per i cifrari polialfabetici, tra cui l'imbattibile cifrario di Vigenère, come almeno era considerato quando Vigenère lo ideò (unendo 1 .:: Matematica ::. molte idee che erano già nell'aria da tempo), visto che nel 1863 il colonnello prussiano Friedrich Kasiski pubblicò un metodo per "forzarlo" (chiamato metodo Kasiski). Qualsiasi sia il sistema crittografico utilizzato, la legge fondamentale sul corretto uso di tali tecniche fu scritta da Kerckhoffs (Legge di Kerckhoffs) nel suo libro del 1883 "La Cryptographie Militaire" e di seguito rtiportata "La sicurezza di un crittosistema non deve dipendere dal tener celato il crittoalgoritmo. La sicurezza dipenderà solo dal tener celata la chiave." Nel 1918 Gilbert Vernam perfezionò il metodo di Vigenère proponendo l'idea di usare chiavi lunghe almeno quanto il messaggio. Successivamente Claude Shannon, padre della Teoria dell'informazione, dimostrò che questo è l'unico metodo crittografico totalmente sicuro. Con il possesso di un sistema crittografico perfetto, la battaglia teorica tra crittografia e crittanalisi si è risolta con una vittoria della prima sulla seconda. Ipotizzando di voler far uso di questa insuperabile protezione, restano però aperti molti problemi di ordine pratico: bisogna infatti soddisfare gli stringenti requisiti del cifrario di Vernam: chiave lunga quanto il messaggio e mai più riutilizzabile. Purtuttavia, si hanno notizie di utilizzi di questo cifrario in ambiente militare (comunicazione con le spie: si veda a proposito One Time Pad) o per la protezione delle comunicazioni del telefono rosso tra Washington e Mosca durante la Guerra fredda. Anche il cifrario trovato nel 1967 sul corpo di Che Guevara è una incarnazione del cifrario di Vernam. L'attuale ricerca crittografica, avendo risolto il problema teorico della garanzia della sicurezza, si dedica al superamento dei forti limiti d'uso anzidetti. Si cercano metodi più "comodi" ma ciononostante "estremamente sicuri" (non lo saranno mai perfettamente, ma si può renderli sempre più sicuri) che, possibilmente, utilizzino chiavi corte e riutilizzabili senza inficiare con questo la loro utilità. Fino a pochi anni fa l'unico metodo crittografico esistente era quello della "crittografia simmetrica", in cui si faceva uso di un'unica chiave sia per proteggere il messaggio che per renderlo nuovamente leggibile. La ricerca sulla crittografia simmetrica ha negli anni prodotto dei sistemi crittografici di tutto rispetto (ultimo tra tutti il cifrario Rijndael, scelto per il nuovo standard AES per essere utilizzato nel prossimo ventennio, pensionando l'ormai datato DES). La vera novità del secolo scorso è l'invenzione della crittografia asimmetrica che utilizza chiavi diverse per cifrare e per decifrare un messaggio, facilitando incredibilmente il compito di distribuzione delle chiavi. 2 .:: Matematica ::. L'evoluzione dei sistemi crittografici, uniti all'evoluzione della fisica teorica hanno permesso di realizzare un cifrario di Vernam che si basa sull'utilizzo della meccanica quantistica nella fase dello scambio della chiave. Il vantaggio di questa tecnica consiste nel fatto di rendere inutilizzabili gli attacchi del tipo man in the middle cioè, se durante lo scambio della chiave qualcuno riuscisse ad intercettarla, la cosa diverrebbe immediatamente evidente a chi emette e chi riceve il messaggio. Cifrario di Cesare Il cifrario di Cesare è il più antico algoritmo crittografico di cui si abbia traccia storica. È un cifrario a sostituzione monoalfabetica in cui ogni lettera del testo in chiaro è sostituita nel testo cifrato dalla lettera che si trova un certo numero di posizioni dopo nell'alfabeto. Cifrario di Vernam Il cifrario di Vernam è un sistema crittografico basato sul cifrario di Vigénère, al quale aggiunge il requisito che la chiave sia lunga quanto il testo e non riutilizzabile (per questo viene spesso chiamato OTP, acronimo per l'inglese "One Time Pad", letteralmente "blocco monouso", cfr. immagine). Il cifrario di Vernam è l'unico sistema crittografico la cui sicurezza è comprovata da una dimostrazione matematica. Si può facilmente capire quanto sia scomodo distribuire in modo sicuro chiavi di tale dimensione, ciò nonostante è stato utilizzato per le comunicazioni con le spie, che venivano equipaggiati di taccuini ("pad" in inglese) contenenti una lunga chiave per ogni pagina, da poter strappare una volta utilizzata ("one time", ovvero "un solo uso"). La sua forma più classica è quella dove la chiave ha la stessa forma del testo (a ogni lettera viene associato il numero corrispondente A=0 B=1 C=2) e che sfrutta l'operazione di somma circolare (quella per cui dopo la lettera Z c'è di nuovo la lettera A, quindi A+C=0+2=2=C, B+C=1+2=3=D, Z+C=25+2=27=1=B, Z+Z=25+25=50=24=Y). È importante ribadire che questo tipo di chiave deve essere lunga quanto il messaggio che cifra e può essere utilizzata una sola volta, pena la perdita della validità delle ipotesi iniziali e la riduzione da sistema "inattaccabile" a sistema "facilmente attaccabile" dal metodo Kasiski, una specializzazione del metodo crittanalitico di analisi delle frequenze. 3 .:: Matematica ::. TECNICHE DI CIFRATURA Funzione Senso-Unico(One-Way) Una funzione Senso-Unico e' una funzione matematica che più semplice da eseguire in un senso piuttosto che nell'altro. In altre parole, ci sono dei problemi matematici che sono realmente difficili da risolvere - quasi impossibili - e la loro soluzione richiede moltissimo tempo. Alcuni esempi sono il 'problema della fattorizzazione' ed il 'problema dei logaritmi discreti'. Il problema della fattorizzazione Vari sistemi crittografici a chiave pubblica sono basati sul problema della fattorizzazione. Infatti fattorizzare numeri molto grandi richiede moltissimo tempo. Se un avversario riesce a fattorizzare un numero realmente grande, puo' scoprire la chiave segreta. Il problema e' che, con le conoscenze attuali, e' quasi impossibile fattorizzare numeri molto grandi in un lasso di tempo accettabile (vedi ad esempio RSA-129, cioè una chiave pubblica formata da 129 cifre e la cui fattorizzazione è stata stimata intorno ai 5000 MIPS/anno, cioè un computer con la capacità di calcolare un milione di istruzioni al secondo ci impiegherà circa 5000 anni per fattorizzare quel numero). Comunque nessuna dimostrazione teorica e' mai stata data su ciò e per questo motivo non è possibile escludere la possibilità che in futuro venga inventato un algoritmo che faciliti e velocizzi tale processo, eludendo in tal modo la cifratura. Problema dei logaritmi discreti Come il problema della fattorizzazione, il problema dei logaritmi discreti sembra un problema difficile da risolvere, e quindi, alcuni sistemi a chiave pubblica sono basati su questo problema. Il problema dei logaritmi discreti si applica ai gruppi. Cifratori a blocchi Un cifratore a blocchi trasforma un blocco di testo in chiaro di lunghezza fissa in un blocco di testo cifrato della stessa lunghezza. Questa lunghezza fissa e' chiamata 'dimensione del blocco' (generalmente di 64 bit). Per trasformare il testo in chiaro in testo cifrato viene usata una chiave segreta. La stessa chiave segreta e' usata per decifrare il blocco. Quando un cifratore a blocco cifra lo stesso blocco di testo in chiaro piu' volte, e' chiamato cifratore a blocco iterativo. I cifratori a 4 .:: Matematica ::. blocco usano alcune tecniche per cifrare un blocco di testo in chiaro. Ci sono 4 modi standard: ECB - Electronic Code Book, CBC - Cipher Block Chaining, CFB - Cipher Feedback Block and OFB Output Feedback Block. ECB: ogni singolo blocco di testo in chiaro da' un identico blocco di testo cifrato. CBC: ogni blocco di testo in chiaro e' 'XORed' (che significa OR esclusivo bit a bit) con il precedente blocco di testo cifrato, poi cifrato. CFB: il precedente testo cifrato e' cifrato e l' output e' 'XORed' con il testo in chiaro per produrre il blocco di testo cifrato corrente. OFB: e' simile a CFB. Cifratori a flusso Mentre i cifratori a blocco agiscono su blocchi di dati, i cifratori a flusso agiscono su unita' di testo in chiaro piu' piccole, di solito bit. L' output di un cifratore a flusso e' chiamato flussochiave che e' di solito cifrato attraverso lo XOR con il testo in chiaro. Funzioni Hash Una funzione hash e' la trasformazione di un input di dimensione variabile (il testo in chiaro) in un output di dimensione fissa (questo output e' una stringa, chiamata valore hash). L'importanza delle funzioni hash sta nel fatto che il valore hash rappresenta concisamente il messaggio dal quale e' stato calcolato. In altre parole, il valore hash e' una sorta di 'impronta digitale' del messaggio più grande dal quale e' stato calcolato. Le funzioni hash sono utili per fornire firme digitali. Inoltre un riassunto può essere reso pubblico perché non rivela il contenuto del documento originale. Questa questione e' importante nel timestamping digitale. MAC MAC sta per Message Authentication Code (codice di autenticazione del messaggio). Questo codice (chiamato anche checksum) e' l' output fornito da uno schema di autenticazione (insieme con una chiave segreta) applicato ad un messaggio. I MAC sono calcolati e verificati con la stessa chiave, cosi' solo il destinatario predestinato può verificare un MAC (a differenza delle firme digitali). 5 .:: Matematica ::. CRITTOGRAFIA A CHIAVE PRIVATA E A CHIAVE PUBBLICA La crittografia tradizionale e' basata su una chiave segreta. Un mittente che vuole inviare un messaggio cifrato a qualcuno, lo cifra usando una chiave segreta ed il destinatario lo decifra usando la stessa chiave segreta. Ovviamente, sia il mittente che il ricevente di quel messaggio devono conoscere la stessa chiave segreta. Questo metodo e' conosciuto come crittografia a chiave segreta o crittografia simmetrica. Il problema principale e': il mittente ed il ricevente devono accordarsi su una chiave segreta comune, e devono usare un canale sicuro per scambiarsi questa informazione. Ma se esistesse un canale sicuro su cui scambiarsi la chiave segreta (potenzialmente nessun canale è realmente sicuro), perché non utilizzarlo direttamente per scambiarsi il messaggio? Proprio per il fatto che la crittografia ritiene qualsiasi canale “attaccabile”, venne inventato un altro sistema di crittografia: il sistema a chiave pubblica (chiamato anche sistema crittografico asimmetrico). Il concetto di crittografia a chiave pubblica fu introdotto nel 1976 da Whitfield Diffie e Martin Hellman. Questo sistema funziona nel seguente modo: ogni persona possiede una coppia di chiavi, una pubblica ed una privata (chiave privata e chiave segreta sono sinonimi). La chiave pubblica di ciascuna persona e' pubblicata ed accessibile a tutti - in modo che chiunque la voglia usare lo possa fare - mentre la chiave privata e' tenuta segreta. In questo modo nessuna informazione segreta deve viaggiare dal mittente al ricevente. Cosi', se si vuole comunicare con qualcuno crittografando il messaggio, tutto quello che bisogna fare e' usare la sua chiave pubblica. Il ricevente di tale messaggio, potrà poi decifrarlo usando la sua chiave privata. In altre parole: non c'e' un legame tra la chiave pubblica e la sua corrispondente chiave privata. Nessuno puo' recuperare la chiave privata dalla sua corrispondente chiave pubblica! Cosi', solo il destinatario prestabilito puo' decifrare un messaggio a lui indirizzato tramite la sua chiave privata! Purtroppo c'e' un problema cioe': la chiave pubblica e' associata al reale destinatario a cui voglio inviare un messaggio crittografato? Chi assicura che il detentore della chiave-pubblica non sia un truffatore che si spaccia per il vero destinatario della missiva, con l'unico scopo di intercettare il messaggio e poterlo leggere? Egli potrebbe intercettare il messaggio, decifrarlo con la sua chiave privata [essendo stato cifrato con la SUA chiave pubblica], leggerne il contenuto, cifrarlo nuovamente con la chiave pubblica del VERO destinatario del messaggio e spedirglielo da parte del mittente originario. Con questi pochi passaggi, la crittografia del messaggio è stata elusa ed ancora peggio nessuno si è accorto 6 .:: Matematica ::. di niente! Per questi motivi, bisogna rendere sicura la propria chiave pubblica prima di utilizzarla. Tutto questo è possibile attraverso un certificato di autenticazione della chiave (chiave pubblicata autenticata). Infatti i certificati sono documenti digitali che attestano il collegamento di una chiave pubblica con il proprietario reale. Questi sono emessi da autorità certificatrici e contengono una data di scadenza, il nome dell'autorità certificatrice che lo ha emesso ed altre informazioni. Spesso l'autenticazione coinvolge più autorità certificatrici, cosi' esiste una gerarchia di certificazione[ogni livello certifica il livello inferiore]. Quando si richiede un certificato ad una autorità certificatrice, questa potrebbe voler vedere la patente di guida del richiedente o potrebbe volere un documento certificato da un notaio. In questo modo, se tutte queste informazioni corrispondono, l' autorità certificatrice emette il certificato. Nel caso una chiave certificata venga compromessa il certificato può essere revocato prima del tempo previsto e quindi viene messo su un CRL (Certificate Revocation List). Per la protezione di documenti importanti spesso viene usato uno schema di divisione della chiave segreta [altrimenti se venisse persa l'unica chiave, tutte le informazioni cifrate andrebbero irrimediabilmente perse!]. In uno schema di questo tipo, la chiave segreta in questione, viene divisa in pezzi che sono poi distribuiti a persone diverse, in modo che un dato numero di persone possa riunirsi per recuperare la chiave. Un'ultima questione che è giusto porre in evidenza è la seguente: OGNI CHIAVE UTILIZZATA PER CIFRARE DEI DOCUMENTI HA UN PERIODO DI VITA LIMITATO. Infatti ogni volta che viene usata una chiave, viene generato un testo cifrato. Usando la stessa chiave più volte, si permette ad un avversario di reperire molti testi cifrati con la stessa chiave. Alcuni metodi di crittoanalisi usano i testi cifrati per decifrare i messaggi. La conseguenza e': più tempo si usa la stessa chiave, più testi cifrati (con una stessa chiave) esistono e più e' facile decifrarli tramite la crittoanalisi. ALGORITMI A CHIAVE PRIVATA Come già detto, in un sistema crittografico a chiave segreta (a differenza dei sistemi a chiave pubblica), sia il mittente che il ricevente di quel messaggio devono conoscere la stessa chiave segreta. Ci sono vari sistemi a chiave segreta (o privata): DES (e sue variazioni) 7 .:: Matematica ::. IDEA SAFER RC2 RC4 RC5 FEAL SKIPJACK BLOWFISH SEAL DES (e sue variazioni) DES sta per Data Encryption Standard ed e' un cifratore a blocco iterativo sviluppato alla IBM e definito dal governo degli Stati Uniti come standard ufficiale nel 1977. La dimensione dei blocchi DES e' di 64 bit, ed usa una chiave a 56 bit (16 cicli) durante la cifratura. Più una chiave è lunga e maggiore sarà il tempo per fare una ricerca esaustiva (attacco di forza bruta). Con la tecnologia odierna, le chiave minori di 128 bit sono considerate ormai insicure. Con il rapido progredire della tecnologia tuttavia, anche 128 bit potrebbero diventare presto insicuri... Il Triplo-DES e' una variazione del DES: cifra il testo in chiaro 3 volte. L' algoritmo triplo-DES può essere: DES-EEE3 (cifra-cifra-cifra), DES-EDE3 (cifra-decifra-cifra), DES-EEE2 (cifra-cifracifra). Il DES-EEE3 usa 3 differenti chiavi segrete durante la cifratura. Il DES-EDE3 usa 3 differente chiavi ugualmente, ma nella sequenza cifra-decifra-cifra. Il DES-EDE2 e' come il formato precedente ma usa 2 chiavi diverse. G-DES e DESX sono altre variazioni del DES. IDEA IDEA sta per International Data Encryption Algorithm. E' un cifratore a blocco iterativo con chiave lunga 128 bit (8 cicli). E' considerato essere immune dalla crittoanalisi differenziale e da quella lineare. IDEA e' generalmente considerato sicuro. SAFER SAFER sta per Secure And Fast Encryption Routine. E' un cifratore a blocco sviluppato da Massey nel 1993 per la Cylink Corporation. Usa una dimensione di blocco di 64 bit. 8 .:: Matematica ::. RC2 RC2 sta per Ron Code o Rivest's Cipher. E' un cifratore a blocco (64 bit) sviluppato da Rivest per la RSA Data Security. Usa una lunghezza di chiave variabile. Infatti può essere reso più o meno sicuro del DES variando la misura della chiave. E' circa 2 o 3 volte più veloce del DES. RC4 L' RC4 e' un cifratore a flusso sviluppato da Rivest per la RSA Data Security. E' un algoritmo a lunghezza di chiave variabile. RC5 L' RC5 e' un cifratore a blocco sviluppato da Rivest per la RSA Data Security. E' un algoritmo parametrico, infatti ha una dimensione di blocco variabile, una lunghezza di chiave variabile, ed un numero di cicli variabile. La dimensione del blocco può essere 32, 64 o 128 bit. La dimensione della chiave può essere da 0 fino a 2048 bit. il numero di cicli può essere da 0 a 255. FEAL FEAL sta per Fast Encipherment Algorithm. E' un cifratore a blocco sviluppato da Shimizu e Miyaguchi. Visto che furono annunciati vari deboli attacchi, dovrebbe essere considerato insicuro. SKIPJACK SKIPJACK e' l' algoritmo contenuto nel chip CLIPPER. Fu disegnato dalla NSA (National Secure Agency). Usa una dimensione di blocco di 64 bit ed una chiave di 80 bit. Può essere implementato nel software, ma solo se contenuto all'interno di hardware costruito da produttori autorizzati dal governo. BLOWFISH BLOWFISH e' un cifratore a blocco iterativo sviluppato da Schneier. SEAL SEAL sta per Software-optimized Encryption Algorithm. E' un cifratore a flusso sviluppato da Rogaway e Coppersmith nel 1993. 9 .:: Matematica ::. ALGORITMI A CHIAVE PUBBLICA In un sistema crittografico a chiave pubblica (a differenza di quelli a chiave privata), il mittente ed il ricevente del messaggio non devono conoscere la stessa chiave. Infatti usano 2 coppie di chiavi ciascuno: una chiave pubblica ed una privata. Ci sono vari sistemi a chiave pubblica: RSA ELGAMAL Elliptic curves KNAPSACK LUC McEliece Probabilistic encryption RSA L' RSA e' un sistema crittografico sia per la cifratura che per l' autenticazione sviluppato nel 1977 da Ron Rivest, Adi Shamir e Leonard Adleman. Questo algoritmo e' basato sul problema della fattorizzazione. L' RSA e' solitamente combinata insieme ad un algoritmo a chiave privata come il DES per esempio. Infatti il DES e' molto più veloce dell'RSA. L' RSA fornisce dimensioni di chiavi sino a 2048 bit (vedi RSA-129). ELGAMAL ELGAMAL e' un algoritmo di cifratura basato sul problema dei logaritmi discreti. Analisi mostrano come ELGAMAL e RSA abbiano una sicurezza simile per lunghezze di chiavi equivalenti. Comunque l' algoritmo ELGAMAL è più lento di quello dell'RSA. Curve Ellittiche Il sistema delle curve ellittiche e' un algoritmo simile all'RSA e all'ELGAMAL, ma e' basato sull'operazione di addizione di curve ellittiche. KNAPSACK Il sistema crittografico Merkle-Hellman KNAPSACK fu sviluppato nel 1978. E' basato sul 10 .:: Matematica ::. problema delle sottosomme della matematica combinatoria. LUC LUC e' un sistema crittografico sviluppato da un gruppo di ricercatori in Australia e Nuova Zelanda. E' basato sulle sequenze Lucas. McEliece McEliece e' un sistema crittografico basato sulla teoria della codifica algebrica. Cifratura Probabilistica La cifratura probabilistica e' un differente approccio alla cifratura scoperto da Goldwasser e Micali. A differenza dei sistemi convenzionali, qui un messaggio e' codificato in uno dei molti testi cifrati possibili. QUANDO LA CRITTOGRAFIA NON PUO' FARE NIENTE A volte anche il sistema di crittografia più forte può essere inutile. Questo avviene perché qualcuno che vuole raggiungere delle informazioni segrete, non ha bisogno necessariamente di complicati lavori di crittoanalisi. Ecco alcuni possibili attacchi: Keyboard sniffers TEMPEST Lettura della memoria Lettura della cache del disco Packet sniffers Cavalli di Troia Cattive password 11 .:: Matematica ::. Keyboard sniffers Ci sono dei programmi che leggono i tasti quando vengono battuti. Un avversario potrebbe installare questo tipo di software sul sistema da spiare, quindi potrebbe leggere le password utilizzate durante la cifratura dei documenti. Ci sono vari metodi per fare ciò. Ma come può un avversario installare questo tipo di software sul sistema da spiare? Una soluzione potrebbe essere tramite un virus. TEMPEST Nel 1985, lo scienziato olandese Wim van Eck pubblicò un documento riguardante i rischi di intercettazione provocati dalle emissioni elettromagnetiche delle unità video. Il suo lavoro provò che le unità video (CRT), le CPU e/o le periferiche, emettevano una radiazione elettromagnetica simile alle onde radio che poteva essere intercettata da una postazione remota ad una certa distanza e con poco sforzo. La risposta del governo americano a questo tipo di monitoraggio fu TEMPEST. TEMPEST sta per Transient ElectroMagnetic PulsE STandard ed e' uno standard per la protezione da emissione di onde elettromagnetiche dei sistemi di computer. Cosi' il governo degli Stati Uniti creò questo standard per misurare le emissioni elettromagnetiche dei computer e definire i limiti per la sicurezza sul monitoraggio. Gli standard sono definiti nel documento NACSIM 5100A (classificato dalla NSA - National Security Agency). Installando uno di questi congegni (non molto costosi) e puntando l'antenna verso il computer da spiare, è possibile leggere tutto ciò che appare su monitor. Per evitare questo problema è necessaria una “schermatura” delle pareti del computer. Lettura della memoria In un sistema multi-utente quale quello Unix, e' possibile leggere la memoria fisica della macchina da qualsiasi persona con i necessari privilegi (di solito i privilegi di root). Avendo privilegi di root ad esempio, si può accedere alla memoria virtuale del sistema (/dev/kmem) e leggere la pagina di un utente. Lettura della cache del disco In un ambiente multi-tasking come Windows, i dati sono riversati dalla memoria su disco e viceversa. Questo accade su sistemi che usano la memoria virtuale. Infatti il sistema operativo 12 .:: Matematica ::. simula una RAM (Random Access Memory) di dimensioni molto superiori a quella reale dividendo i dati in pagine che sono riversate sul/da disco. Le pagine usate più frequentemente sono all'interno della RAM, ma le altre sono registrate all'interno dell'hard disk. Quando un programma richiede una particolare pagina che non è sulla RAM, il sistema operativo la carica. In altre parole, i dischi sono una sorta di 'finta' estensione della RAM. Di solito i dati riversati su disco sono memorizzati all'interno di un file di swap. In un ambiente di rete, chiunque ha accesso alla macchina, può leggere un file di swap, o persino rubarlo. Packet sniffers Se non si utilizza un qualsiasi tipo di utility di cifratura o un protocollo di rete sicuro, la propria passphrase viene inviata sulla rete come testo in chiaro. Percio' un 'packet sniffer' installato tra il proprio terminale e l'host al quale è stato inviata la passphrase (tra terminale e host esistono effettivamente svariati nodi su cui poter installare tali software), può facilmente catturare questa informazione. Per esempio, i packet sniffer possono essere sensibili a certe parole come Visa, MasterCard e cosi' via. Per questa ragione si dovrebbe evitare di inviare numeri di carte di credito senza usare un protocollo sicuro. Stesso discorso per l'invio di password. Cavalli di Troia Un “Trojan Horse” è un programma apparentemente innocuo. Questo tipo di software svolge tutte le funzioni che dovrebbe realmente fare; ma e' in realtà un programma subdolo che, come il cavallo di Troia di Ulisse, contiene delle istruzioni pericolose all'interno (possono per esempio registrare una passphrase ed inviarla ad un host predefinito). Sembrando in tutto e per tutto degli innocui e normali programmi, i trojan horse sono difficili da rilevare da parte degli antivirus, prima che essi manifestino l'azione “indesiderata”. Cattive password Le cattive password sono un grande problema diffuso per la rete. Spesso infatti la gente sceglie delle cattive password (come i nomi di persone, le date, parole comuni, etc.) per il solo fatto che sono facili da ricordare. Il problema è che alcuni programmi - chiamati password cracker possono trovare facilmente questo tipo di password. Questi software usano dizionari per tentare tutte le parole continuamente fino a quando non trovano la giusta password. Per questa ragione 13 .:: Matematica ::. si dovrebbe evitare di scegliere parole semplici o di uso comune come password! Un buon metodo per creare password “sicure” è prendere le iniziali di ogni parola di una frase e riunirle insieme. In questo modo, non risulterà difficile tenere a mente la password essendo legata logicamente alla frase da noi decisa. Un ulteriore modo per aumentare la sicurezza delle password è utilizzare segni di punteggiatura, numeri e caratteri speciali. Per esempio 4 anziché A, 3 anziché E, 1 anziché I e così via. 14