|
Realizzato da Ginafranco Vecchio In Esclusiva per TiempoLibreSite.com  | Buon 2008, a tutti i lettori di questo 1 Gennaio ! Lasciateci un Augurio Spero che anche quest'anno potrete essere sempre più numerosi, il 2007ci ha dato molte soddisfazioni e spero che il 2008 sia altrettanto buono, per iniziare alla grande abbiamo ci siama messi al lavoro per donarvi un inizio anno scoppiettante e pieno di grandi lavori. Occhio ovviamente alla notizia di oggi, che fa parte della rubrica"Lezioni di Ingegneria Informatica" del nostro Ginafranco Vecchio (detto Ginafrix) , dedicata alla sicurezza niente di meglio per iniziare il nuovo anno. Da Non Perdere!!! |
Introduzione
In questa lezione parleremo di un argomento che per la sua importanza e rilevanza, non potevamo trascurare. Si parla spesso di sicurezza, in qualunque settore lavorativo e in qualsiasi istante della nostra vita e senza dubbio, la sicurezza è una delle prerogative della nostra esistenza. Quindi in un mondo come quello dell’Information Tecnology, dove oggi ancora più di ieri, si cerca di sfruttarne al massimo le potenzialità per poter usufruire di tutti quei vantaggi che rendono più agevoli le nostre operazioni quotidiane, in cui sempre di più compaiono dati e informazioni “sensibili”, è impensabile non parlare di sicurezza. Un villaggio globale come internet, sicuramente, ci fornisce i vantaggi della disponibilità dei dati, del commercio elettronico, l’uso di applicazioni commerciale e di applicazioni di banking on-line, ecc. Su Wikipedia.org per “sicurezza informatica” troviamo questa definizione: “…è quella branca dell'informatica che si occupa della salvaguardia dei sistemi informatici da potenziali rischi e/o violazioni dei dati. I principali aspetti di protezione del dato sono la confidenzialità, l'integrità e la disponibilità…”. È una definizione che in tre righe espone gli argomenti di questa lezione; spiegheremo in particolare il significato di confidenzialità, integrità e autenticazione ed esporremo i rischi principali che si incorrono in rete e non solo.
Concetti fondamentaliRiservatezza dell’informazione: Ognuno desidera che nessuno eccetto lui e/o le persone autorizzate possa/no conoscere quelle informazioni. Integrità dell’informazione: Ognuno desidera che nessuno possa modificare, alterare o distruggere quelle informazioni. Garanzia di autenticità degli interlocutori: Mittente e destinatario di una trasmissione dati desiderano che siano proprio loro e non altri ad aver spedito e ricevuto il messaggio. Non ripudio (autenticazione): prova formale, usabile in tribunale, che dimostra l’appartenenza di un documento/firma ad una persona. In generale, in rete, nessuno sa se sei un criminale (siti creati apposta per raccogliere numeri di carta di credito dei clienti, e poi sparire – phishing), se sei qualcun’altro (hai preso il posto di un utente legittimo o di un server web legittimo), se hai dipendenti disonesti e quanto il tuo sito è sicuro (e quindi anche i dati dei tuoi clienti che sono memorizzati lì). Ma tutti sanno che molti utenti sono sprovveduti (faranno tutto quello che il loro computer dirà loro di fare), molti eseguono programmi difettosi, molti (o quasi tutti) non controllano se la transazione è sicura o no e sono molti anche gli utenti che configurano il loro sistema privilegiando la faiclità d’uso piuttosto che la sicurezza. Diventa chiaro allora che la sicurezza è un argomento che non può essere tralasciato sia nelle situazioni in cui ci troviamo a sviluppare un qualsiasi componente software, sia quando dobbiamo istruire gli utenti “meno esperti” a rendere sicura la loro piattaforma e rendersi immuni ad attacchi fraudolenti. Tipi di attacchiAttacco passivo: costituisce un attentato alla riservatezza dei dati, l’intruso si limita a recuperare e ad analizzare i dati senza ovviamente esserne autorizzato. L’obiettivo è quello di acquisire informazioni: contenuto di dati altrui, attività di un organizzazione, ubicazione degli interlocutori, struttura del sistema telematico. Attacco attivo: L’intruso cerca di modificare i dati, crearne di nuovi, sostituirsi ai legittimi partecipanti alla conversazione: modifica dell’informazione, cancellazione dell’informazione, impersonare un altro utente, accesso non autorizzato alle risorse, sistema impossibilitato a fornire i servizi. Più difficili da eseguire rispetto agli attacchi passivi, ma anche più difficili da gestire per i sistemi di sicurezza. Bisogna allora: 
Proteggersi dagli attacchi passivi Accorgersi degli attacchi attivi La CrittografiaLa crittografia (dal greco kryptos, nascosto, e graphein, scrivere) è la scienza che si occupa dello studio delle scritture “segrete”. E’ nata come branca della matematica e dell’informatica grazie all’utilizzo di tecniche di teoria dei numeri e di teoria dell’informazione. È entrata a far parte della nostra vita quotidiana per la protezione delle informazioni digitali: dalle smart card, ai cellulari, alle trasmissioni via Internet, alle tv satellitari, etc. Le prime notizie sulla crittografia ci giungono sin dai tempi di Cesare, dove troviamo il più antico cifrario della storia. È il cifrario a sostituzione più antico che si conosca; esso prevede la sostituzione di ciascuna lettera nel plaintext (in gergo il testo in chiaro) con la lettera che si trova a tre posizioni di distanza più avanti nell’alfabeto meet me after the toga party PHHW PH DIWHU WKH WRJD SDUWB La trasformazione è quindi definita da: Chiaro: a b c d e f g h i j k l m n o p q r s t u v w x y z Cifrato: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C Si può notare immediatamente che questo rappresenta un cifrario corruttibile in pochi microsecondi (con i pc che abbiamo a disposizione oggi, sicuramente a quei tempi ci sarebbe voluto un po’ di tempo in più!), ma rappresenta il primo sforza nella storia di proteggere certe informazioni personali. Col passare degli anni e con l’accrescimento della conoscenza, le tecniche e i metodi sono andati man mano migliorando ed evolvendo verso soluzioni che utilizzano un insieme di operazioni di base, che messe assieme, ci garantiscono un certo livello di sicurezza. La crittografia nasce tradizionalmente negli ambienti militari, che per primi ne hanno sentito il bisogno. Bisogna anche dire che sono gli ambienti che hanno sempre goduto di fonti economiche abbastanza elevate, che hanno permesso studi e ricerche approfondite sulle tecniche crittografiche. Parlarvi di tutte le tecniche crittografiche dalla preistoria fino ad oggi sarebbe impossibile (ci vorrebbe un manuale grande quanto la treccani) e comunque in rete trovate innumerevoli dispense e trattati che espongono il problema in maniera molto approfondita. È importante sapere però che esistono vari tipi di crittografia, quella simmetrica, quella asimmetrica e le funzioni di hash. Ognuna di queste ci garantisce un diverso tipo di protezione.
Crittografia SimmetricaGli algoritmi di tipo simmetrico hanno la caratteristica di possedere una chiave unica K, sia per chi invia i dati, sia per chi li riceve, come mostrato in figura: 
Tutto ciò presuppone che la chiave venga inviata su di un canale sicuro e altamente protetto: 
Se così non fosse, sarebbe semplice per un cracker violare la nostra privacy. In questo modello si utilizzano delle funzioni di cifratura e decifratura in cui Dk=Ek-1. Le più importanti sono: DES (con le successive versioni “più sicure” 2DES e 3DES), AES, IDEA, RC2, RC5, Blowfish. Crittografia AsimmetricaCostituisce probabilmente la più significativa innovazione nella storia della crittografia in quanto viene usata una coppia di chiavi: una pubblica e l’altra private. Per tale motivo, si parla di algoritmi asimmetrici in quanto le due parti non sono uguali. Essa però non sostituisce completamente la crittografia a chiave segreta, piuttosto è complementare ad essa. La crittografia a chiave pubblica (o asimmetrica) coinvolge l’uso di due chiavi: Una chiave pubblica, che può essere resa nota a chiunque, e che viene usata per cifrare messaggi e verificare signature (firme digitali) Una chiave privata, conosciuta solo dal legittimo proprietario, che viene usata per decifrare messaggi e per creare signature (firme digitali)
Si parla di algoritmi asimmetrici poiché chi decifra un messaggio o verifica una firma NON può cifrare lo stesso messaggio o creare la firma. Le chiavi vengono generate a coppie (chiave privata (Kpri) + chiave pubblica (Kpub)) e hanno una funzionalità reciproca: i dati cifrati con una chiave possono essere decifrati solo con l’altra, come si può vedere dalla seguente figura: 
Si supera in questo modo il limite dell’invio della chiave su un canale sicuro; adesso possiamo permetterci di operare sempre su di un canale insicuro: 
Funzioni di HashLe funzioni crittografiche che abbiamo visto fino ad ora ci assicurano la riservatezza e l’autenticazione delle informazioni. Quindi una persona che intercetta una comunicazione cifrata non può leggerla, ma può modificarla in modo imprevedibile! A questo punto diventa importante parlare di funzioni di hash e di message digesting. Il digest è per l’appunto un riassunto delle informazioni che inviamo in rete. 
Funziona così: il mittente crea un riassunto dei dati che vuole inviare in maniera crittografata e quindi impossibile da leggere (il digest appunto); questo digest viene inviato al destinatario assieme ai dati opportunamente crittografati. Il destinatario riceve i dati, ne calcola egli stesso il digest e lo confronta con quello che vede arrivarsi dal mittente; se sono uguali allora vuol dire che il messaggio non è stato modificato, il contrario altrimenti. Una (one-way) hash function h (anche detta message digest function), è una funzione che realizza una corrispondenza univoca tra un insieme M di stringhe binarie di lunghezza arbitraria (finita), e un insieme D di stringhe binarie, ciascuna di lunghezza n fissata (la dimensione dell’hash). Il valore d = h(m) può essere visto come una rappresentazione compatta di m. 
Firma DigitaleE se invece volessimo utilizzare un algoritmo asimmetrico per proteggere le nostre informazioni da manipolazioni non autorizzate, sia per quanto riguarda l’integrità, sia per l’autenticità del documento, allora possiamo invertire l’uso tradizionale delle chiavi (segreta per crittografare e pubblica per decifrare) e realizzare così il meccanismo della firma digitale. Bisogna oltremodo garantire che nessun utente possa riprodurre la firma di altri e che chiunque deve poter facilmente verificare una firma. 
FirewallLasciamo il mondo affascinante e intricato della crittografia per parlare di un elemento molto importante per la sicurezza del nostro calcolatore (spesso sottovalutato dagli utenti poco esperti),quando esso si trova connesso a qualunque tipo di rete (sia essa Locale, Internet, ecc.). Innanzitutto diamo una definizione di firewall: esso è un sistema di controllo dei pacchetti che verifica tutto il traffico in transito (tra due reti). Inoltre esso consente o nega il passaggio del traffico basandosi su una security policy. Le sue funzioni principali sono: verifica dei pacchetti in transito, mascheramento di indirizzi interni, blocco dei pacchetti pericolosi. Il firewall deve essere l’unico punto di contatto della rete interna con quella esterna e solo il traffico autorizzato può attraversare il firewall; inoltre il firewall deve essere un sistema altamente sicuro esso stesso. 
Il firewall controlla tutto e solo il traffico che lo attraversa e in caso di intrusioni dall’interno il firewall è impotente (in quanto il traffico non lo attraversa). Se il traffico arriva su internet tramite un percorso non controllato (es. un utente connesso via modem) non c’è modo per il firewall di controllarlo (è stato violato il principio dell’unico punto di contatto). Il firewall è esso stesso una macchina: come tale, potrebbe essere violato. Deve essere la macchina meglio protetta e configurata della rete! Il firewall, infine, non protegge da virus. Le politiche di sicurezza di un firewall sono due: Tutto ciò che non è espressamente permesso, è vietato. Tutto ciò che non è espressamente vietato, è permesso.
<
Canali Sicuri sul Web (SSL)Nel momento in cui la pila TCP/IP è stata implementata, si sono messe maggiormente in risalto le problematiche di interoperabilità e semplicità d’uso, tralasciando quelle riguardanti la sicurezza. Esigenza sempre maggiore, man mano che gli anni passavano e le funzionalità e l’importanza della rete Internet diventavano sempre maggiori. Allora si è pensato inizialmente di implementare la sicurezza all’interno di ogni applicazione. Questo però avrebbe portato a possibili errori di implementazione (inventare protocolli di sicurezza non è semplice!) e non avrebbe sicuramente garantito l’interoperabilità. Per evitare questi problemi si è pensato allora di implementare la sicurezza all’esterno delle applicazioni. A questo proposito, il livello sessione sarebbe stato l’ideale per implementare molte funzioni di sicurezza, ma ciò non esiste in TCP/IP! Allora è stato proposto un livello “sessione sicura” che semplifica il lavoro degli sviluppatori applicativi, evita possibili errori di implementazione e può essere applicato a scelta dell’applicazione. 
Secure Socket Layer (SSL) è una suite protocollare pensata per fornire servizi di sicurezza ad applicazioni che necessitano di un canale di comunicazione sicuro: Autenticazione Integrità Confidenzialità Il client genera una session key utilizzata per la cifratura simmetrica dei dati (RC2, RC4, DES, 3DES o IDEA). La chiave viene comunicata al server cifrandola con la chiave pubblica del server (RSA, Diffie Hellman o Fortezza-KEA).
L’intento è quello di fornire un canale di comunicazione sicuro autenticato con chiavi effimere (chiavi che vengono cambiate ad ogni accesso), basandosi su credenziali crittografiche asimmetriche di lunga durata. 
PhishingAd oggi, SSL viene usato soprattutto per rendere sicure le transazioni HTTP (https:\\...). In questi casi l’autenticazione SSL non è mutua: il client di solito viene autenticato con meccanismi a livello applicativo (es., password), che però viaggiano in rete protetti dalla connessione SSL. Tutti i maggiori browser Web oggi supportano SSL. Tuttavia si può usare SSL anche per rendere sicura la comunicazione di alcune applicazioni standard: SSL-telnet, SSL-ftp, SSL-rsh. Oppure è possibile utilizzare SSL per creare una sorta di tunnel sicuro a livello TCP. Questo concetto è molto importante per imparare a difendersi da quegli attacchi denominati phishing. Esso rappresenta una attività per ottenere l'accesso a informazioni personali o riservate con la finalità del furto di identitàposta elettronica fasulli o messaggi istantanei, ma anche contatti telefonici. Grazie a questi messaggi, l'utente è ingannato e portato a rivelare dati personali, come numero di conto corrente, numero di carta di credito, codici di identificazione, ecc. mediante l'utilizzo delle comunicazioni elettroniche, soprattutto messaggi di Di recente mi è capitato di imbattermi in un attacco del genere che ho sventato grazie al fatto di capire che il sito non apparteneva ad un tunnel sicuro SSL. Di solito il phishing si presenta sotto forma di una mail fraudolenta, che cerca di ingannare l’utente e lo porta ad accedere ad un sito che all’apparenza potrebbe sembrare uguale a quello originale e si viene portati a inviare dati sensibili come detto in precedenza. Quando siamo dunque di fronte ad un sito che gestisce dati personali importanti, e soprattutto quando c’è in gioco l’invio di dati come numeri di carte di credito, dobbiamo sempre controllare che siamo in presenza di un sito che nella barra degli indirizzi inizi come https:\\ e non \. Ovviamente i siti più colpiti sono quelli che hanno banche dati in cui immagazzinano i dati detti in precedenza e tra cui citiamo il sito delle Poste, PayPal e quasi tutti i siti delle varie banche. 
Sicurezza Wireless (WEP vs. WPA)Parliamo, infine, di un altro importante tipo di sicurezza, quello legato al mondo della tecnologia Wireless. Con l’evoluzione e l’avvento nell’ambito civile delle reti senza fili, ci si è posti il problema del rendere sicure le reti wireless al pari di quelle wired. Il problema della sicurezza risiede nel fatto che tutti possono vedere ciò che si trasmette, tutti possono modificare i messaggi e tutti possono accedere alla rete. Le contromisure allora da adottare prevedono la cifratura delle comunicazioni, controlli per l’integrità e autenticazione dei nodi della rete. In questa sezione parleremo dell’importanza dell’uso di un protocollo di sicurezza wireless piuttosto che un altro e ne esporremo le principali caratteristiche. WEPWired Equivalent Privacy. Si basa sull’uso di una chiave segreta condivisa fra access point e dispositivi mobili. Una volta stabilita la chiave questa non viene più modificata. Utilizza un algoritmo di cifratura con chiave di 40 bit (o 104 nelle versioni recenti). Non cifriamo per blocchi, ma facciamo uno XOR bit-a-bit tra plaintext e sequenza pseudo casuale generata a partire dalla chiave. A destinazione viceversa, effettuaiamo una XOR. 
Perché l’algoritmo WEP non è sicuro? Perché si utilizzano delle chiavi deboli, si possono portare a termine attacchi di integrità e le chiavi segrete vengono usate direttamente. Un’altra falla nella sicurezza sta nel fatto che a plaintext uguali stanno ciphertext uguali e verranno prodotti key stream identici a parità di segreto. Gli attacchi a cui si può essere soggetti sono: Attivi: Si basano sul tentativo di indovinare il keystream inviando messaggi all’access point. Passivi: A partire dall’analisi del traffico di rete (qualche milione di pacchetti) è possibile ricavare la chiave
Dopo la dimostrazioni teoriche dei possibili attacchi sono stati creati software che, avendo a disposizione una sufficiente quantità di pacchetti, ricavano la chiave in pochi secondi (AirSnort, Kismet, WepCrack…). Non usate quindi una chiave WEP! WPAWi-fi Protected Access. Questa certificazione fu introdotta per eliminare i problemi ai quali WEP era soggetto. In particolare WPA aggiunge al WEP nuove caratteristiche di autenticazione, integrità, flessibilità e scambio chiavi. WPA è progettato per utilizzare lo standard IEEE 802.1x per gestire l'autenticazione dei client e dei server e la distribuzione di differenti chiavi per ogni utente, sebbene per questioni di compatibilità supporti la precedente gestione a chiave condivisa (PSK). I dati sono cifrati col l'algoritmo di cifratura a stream RC4 con chiave a 128 bit e vettore di inizializzazione a 48 bit. Una delle modifiche che introducono maggiore robustezza all'algoritmo è la definizione del Temporal Key Integrity Protocol (TKIP). Questo protocollo dinamicamente cambia la chiave in uso e questo combinato con il vettore di inizializzazione di dimensione doppia rispetto al WEP rende inefficaci i metodi di attacco utilizzati contro il WEP. Configurate il vostro router quindi con una chiave WPA! Realizzato Da Ginafranco Vecchio In Esclusiva per le Lezioni Di Ingegneria Informatica |