Comments
Description
Transcript
Crittografia
Cap.5, par. 3, pag. 188 Crittografia e crittoanalisi • Crittografia: tecnica che consente di rendere visibili o utilizzabili le informazioni solo alle persone a cui sono destinate. Per tutti gli altri le informazioni devono risultare incomprensibili e inutilizzabili. • Il messaggio originale viene chiamato “testo in chiaro”. • La cifratura (o codifica) del messaggio tramite un apposito algoritmo consente di ottenere un “testo cifrato”. • Si può riottenere il testo in chiaro tramite la decifrazione (o decodifica) del testo cifrato. • Codifica e decodifica si basano su un opportuno algoritmo e su una chiave di codifica/decodifica. • Le tecniche di critto-analisi hanno lo scopo di violare le comunicazioni cifrate. Studiano cioè i metodi per tentare di decrittare un messaggio cifrato senza conoscere l’algoritmo e/o la chiave di cifratura. Crittografia, hashing e firme digitali – F.Urbano Algoritmi crittografici classici Si basano essenzialmente su due tecniche: • Sostituzione • Trasposizione Es.1: Cifrario a sostituzione di Cesare Es.3: Cifrario a trasposizione Chiave = +3 ABCDEFGHIJKLMNOPQRSTUVWXYZ DEFGHIJKLMNOPQRSTUVWXYZABC Chiave: ariete Testo in chiaro : NEL MEZZO DEL CAMMIN DI NOSTRA VITA Testo cifrato: QHO PHCCR GHO FDPPLQ GL QRVWUD YLWD MEPEOICINOALEZOONSELNROEPTRIVOVAI GSZCRAESOOTESARPOHODLLIRONPZACATU Es. 2: Sostituzione con chiave random Testo in chiaro: Chiave: ABCDEFGHIJKLMNOPQRSTUVWXYZ YNEPTLSQDVBAKHRCGXUIOZMJWF MEGLIOESSEREPAZZOPERCONTOPROPRIOA NZICHESAVIOSECONDOLAVOLONTAALTRUI Testo in chiaro : MI RITROVAI PER UNA SELVA OSCURA Testo cifrato: KD XDIXRZYD CTX OHY UTAZY RUEOXY Testo cifrato: Anche in questo caso il sistema può essere forzato senza grosse difficoltà In entrambi i casi il sistema può essere violato senza difficoltà in pochi minuti anche senza l’aiuto di un computer. Crittografia, hashing e firme digitali – F.Urbano EVOLUZIONE DELLE TECNICHE CRITTOGRAFICHE Nel corso dei secoli le tecniche di sostituzione e trasposizione sono state utilizzate in combinazione e secondo schemi più complessi, creando dei sistemi più sicuri. L’ambito principale di applicazione della crittologia (crittografia + crittoanalisi) è stato fino a pochi decenni fa solo quello militare. Tecniche evolute sono state adottate dalle principali potenze mondiali durante la seconda guerra mondiale e durante la guerra fredda. Con la sviluppo delle reti informatiche a livello mondiale le tecniche crittografiche hanno assunto un’importanza vitale nell’ambito delle comunicazioni di dati sulla rete. Ad esempio, tutte le transazione finanziarie e bancarie non potrebbero svolgersi in sicurezza senza adeguati e sofisticati sistemi di protezione dei dati in transito sulla rete. Crittografia, hashing e firme digitali – F.Urbano Le moderne tecniche di crittografia possono essere classificate in due categorie: a) Crittografia a chiave Simmetrica b) Crittografia a chiave Asimmetrica a) Chiave simmetrica • Si utilizza la stessa chiave sia per la cifratura che per la decifratura. • Tutti i metodi classici usavano il sistema simmetrico. Anche oggi sono in uso sistemi a chiave simmetrica molto efficaci ed efficienti. • Il principale inconveniente è la necessità che i due interlocutori si scambino la chiave. b) Chiave asimmetrica • Ogni soggetto coinvolto nella comunicazione deve possedere una doppia chiave: una pubblica ed una privata. Le due chiavi sono correlate da un algoritmo matematico. • Si utilizza una delle due chiavi per la codifica, l’altra per la decodifica • Si tratta di sistemi che si sono sviluppati a partire dagli anni 70. Si elimina il problema dello scambio di chiave. Crittografia, hashing e firme digitali – F.Urbano Chiave simmetrica Si usa la stessa chiave sia per cifrare che per decifrare i dati. Gli attuali algoritmi a chiave simmetrica utilizzano algoritmi molto evoluti ed efficienti. Il problema principale è che per poter avviare la comunicazione cifrata i due utenti (oppure un client ed un server) devono prima decidere la chiave da utilizzare e devono comunicarla uno all’altro. Se in questa fase la chiave viene intercettata la successiva trasmissione dei dati non sarà più protetta. Crittografia, hashing e firme digitali – F.Urbano Algoritmi e protocolli di Crittografia a chiave simmetrica DES • • • • • Data Encryption Standard by IBM 1977 Chiave a 56 bit Testo in chiaro diviso a blocchi di 64 bit Uso di sostituzioni e trasposizioni molto complesse Violato prima volta nel 98. Oggi considerato relativamente insicuro (vulnerabile a attacchi "brute force" con macchine specializzate in ca. 24h) Triplo DES (3DES) • • • • • Evoluzione del DES Usa due chiave a 56 bit = una chiave a 112 bit Funziona in tre passi successivi Uso di sostituzioni e trasposizioni molto complesse Ragionevolmente sicuro (teoricamente vulnerabile, praticamente assai difficile) Crittografia, hashing e firme digitali – F.Urbano Algoritmi e protocolli di Crittografia a chiave simmetrica (segue) IDEA • Internation Data Encryption Algorithm • Chiave a 128 bit • Testo in chiaro diviso a blocchi di 64 bit AES • Advanced Encryption Standard • 1997 algoritmo vincitore concorso NIST 1997 (National Institute Standards and Technologies.) • Oggi uno standard USA e internazionale • Blocchi a 128 bit • Chiavi a 128, 192, 256 bit RC4 (Rivest Cipher 4, 1987 by Rivest ) • Non a blocchi ma a caratteri (stream) • Molto veloce e semplice implementazione • usato anche in WEP e WPA (reti wireless), SSL • Chiave lunghezza variabile • Testo in chiaro diviso a blocchi di 64 bit • Uso di sostituzioni e trasposizioni molto complesse Crittografia, hashing e firme digitali – F.Urbano Chiave asimmetrica • Ciascun utente possiede una coppia di chiavi, pubblica e privata. • La chiave pubblica può essere resa nota a tutti, la chiave privata invece deve rimanere segreta. Non c’è più il problema di dover comunicare una chiave segreta. Garanzia della segretezza Se A deve inviare un messaggio riservato a B deve codificare il messaggio con la chiave pubblica di B. Esempio: Alice deve inviare messaggio cifrato a Bob Crittografia, hashing e firme digitali – F.Urbano Garanzia della segretezza Bob vuole rispondere con un messaggio cifrato ad Alice In questo caso Bob utilizza la chiave pubblica di Alice per la cifratura. Solo Alice potrà decifrare il messaggio perché possiede la corrispondente chiave privata. Crittografia, hashing e firme digitali – F.Urbano Algoritmi e protocolli di Crittografia a chiave ASIMMETRICA RSA • • • • • • • Rivest Shamir Adleman 1978 Basato su proprietà e teoremi di aritmetica modulare Sicurezza basata sulla difficoltà di fattorizzazione dei numeri Sicuro purché le chiavi (numeri) siano molto grandi Computazionalmente molto impegnativo (lentezza elaborazione) Utilizzato spesso per scambiarsi una chiave segreta (chiave di sessione) Utilizzato anche per la firma digitale Esistono altri algoritmi asimmetrici meno utilizzati. Esempi di protocolli che usano algoritmi a chiave asimmetrica: PGP, SSH, SSL Per generare una Sintesi (o Impronta o Message Digest) si utilizzano algoritmi di HASH. I più usati: • MD5 by Rivest : produce stringa din 128 bit. Oggi non molto sicuro • SHA-1 (Secure Hash Algorithm) produce stringa di 160 bit Crittografia, hashing e firme digitali – F.Urbano ALGORITMI DI HASHING A partire da una qualsiasi blocco di dati un algoritmo di hashing genera una “impronta” (o sintesi o digest) di dimensione prestabilita. DATI Funziona come una crittografia a senso unico: i dati originali vengono codificati ma non è possibile risalire ai dati di partenza ALGORITMO DI HASHING CARATTERISTICHE DI UN BUON ALGORITMO DI HASHING • • SINTESI o IMPRONTA o MESSAGE DIGEST Dati diversi devono (dovrebbero) generare impronte diverse (la probabilità deve essere quanto più possibile elevata) Deve essere pressoché impossibile risalire al documento originale a partire dall’impronta. POSSIBILI APPLICAZIONI IN AMBITO DI SISTEMI DI SICUREZZA • • • Memorizzazione di password criptate Verifica integrità di un messaggio Generazione di firme digitali (vedi prossima) • La dimensione di un digest di solito è 128 bit, ma può anche essere maggiore. • Algoritmi più noti: MD5, SHA-1. Il secondo è attualmente considerato più sicuro. Crittografia, hashing e firme digitali – F.Urbano CERTIFICATO DIGITALE Per poter firmare digitalmente un documento o un messaggio un utente deve possedere un certificato digitale Si può ottenere un certificato da una Certification Authority o tramite un “web of trust” Il certificato digitale comprende una coppia di chiavi per crittografia asimmetrica (chiave pubblica + chiave privata). Chiave pubblica: xxx-yyy-zzz Chiave privata: www-kkk-jjj Certificato digitale rilasciato da: _______________ a: ________________ il: ______ valido fino al _______ Crittografia, hashing e firme digitali – F.Urbano Possibili usi di un certificato digitale • Possibilità di inviare e ricevere posta elettronica firmata digitalmente e/o crittografata (utile a professionisti, aziende, utenti privati, ecc.). L’utente che riceve un messaggio firmato digitalmente ha la garanzia che il messaggio è stato effettivamente generato e inviato da un dato mittente. • Possibilità di produrre documenti o programmi certificandone l’autenticità (utile ad es. ai produttori di software) . L’utente privato che scarica o acquista un software può avere la garanzia che il software è effettivamente stato prodotto dalla società e non è contraffatto da altri. L'uso più comune dei certificati digitali è per l'accesso ai siti web via HTTPs, ossia HTTP su protocollo sicuro SSL. Attraverso i certificati possiamo accertarci che il server a cui ci si è connessi è autentico, cioè è effettivamente quello che dichiara di essere. Il protocollo SSL prevede che, alla connessione, il server fornisca il proprio certificato digitale; se il certificato digitale è firmato da un'autorità di certificazione da noi riconosciuta allora possiamo utilizzare la chiave pubblica presente nello stesso per avviare una comunicazione sicura. Crittografia, hashing e firme digitali – F.Urbano Come funziona la firma digitale? Generazione firma digitale (può farla solo il possessore del certificato digitale ) Verifica autenticità (può farla un utente qualsiasi) Documento autenticato Documento o messaggio originale prodotto da BOB Firma digitale (impronta del doc. crittografata con chiave privata di Bob) Documento Chiave PUBBLICA Di BOB ALGORITMO DI HASHING ALGORITMO DI HASHING ALGORITMO RSA IMPRONTA (MESSAGE DIGEST) Chiave PRIVATA Di BOB IMPRONTA - 2 IMPRONTA - 1 ALGORITMO DI CRITTOGRAFIA ASIMMETRICA (RSA) Sì Impronta del documento, crittografata con la chiave privata di BOB = FIRMA DIGITALE IMPRONTA - 1 = No IMPRONTA - 2 ? Documento + Firma digitale = Documento autenticato Documento autentico! Attenzione! Documento contraffatto! Crittografia, hashing e firme digitali – F.Urbano Tentativo di contraffazione n. 1 Tentativo di contraffazione n. 2 Jack modifica il documento e vuol far credere che sia un prodotto originale di BOB. Lascia intatta la firma digitale messa da BOB. Jack vuole appropriarsi della proprietà del documento di Bob, facendo credere che lo ha fatto lui. Lascia intatto il documento originale, ma sostituisce la firma con quella ottenuta usando la sua chiave privata. Cosa avviene quando il documento arriva ad un utente qualsiasi e si fa la verifica di autenticità? Cosa avviene quando il documento arriva ad un utente qualsiasi e si fa la verifica di autenticità? Documento con firma digitale Chiave privata di Jack Firma originale del documento di BOB Chiave pubblica di BOB XXX Documento contraffatto Documento con firma digitale Documento originale Firma digitale XXX contraffatta ALGORITMO DI HASHING Algoritmo RSA Algoritmo RSA XX IMPRONTA - 2 ALGORITMO DI HASHING Chiave pubblica di BOB IMPRONTA - 2 IMPRONTA - 1 IMPRONTA - 1 XX IMPRONTA -1 ≠ IMPRONTA - 2 Attenzione! Documento contraffatto! IMPRONTA -1 ≠ IMPRONTA - 2 Attenzione! Documento contraffatto! Crittografia, hashing e firme digitali – F.Urbano SSL Secure Socket Layer • Protocollo progettato dalla Netscape per realizzare comunicazioni cifrate su Internet • Standardizzato in TLS (Transport Layer Security) • Usa la crittografia a chiave pubblica per lo scambio di una chiave di sessione • Per lo scambio chiavi pubbliche usa certificati digitali • Perché un sito sia protetto l'amministratore deve richiedere un certificato a una CA (Certification Authority) e deve configurare il server in modo da utilizzare un protocollo di protezione • SSL funziona come livello intermedio tra Applicazione e Trasporto • HTTP + SSL HTTPS Distribuzione chiavi pubbliche certificati digitali emessi da una Certification Authority o da un Web of Trust (Es: VeriSign) • id digitali classe 1: solo email • classe 2: dati personali • classe 3: utente deve provare propria identità Crittografia, hashing e firme digitali – F.Urbano