Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Network Security – parte 1
Alma Mater Studiorum - Universita' di Bologna Sede di Cesena II Facolta' di Ingegneria Reti di Calcolatori Network Security – parte 1 Vedi: A.S. Tanenbaum, Computer Networks, 4th ed., Prentice Hall: sez. 8, pagg (le figure delle dispense sono tratte da questo libro) Copyright © by Claudio Salati. Lez. 1x
2
. . . a multitude of sins Tanenbaum:
Nosy people trying to read (secrecy or confidentiality), or worse yet, secretely modify messages (integrity control) intended for other recipients. People trying to access remote services that they are not authorized to use (authentication e, di conseseguenza, authorization). A message purportedly from IRS saying: "Pay by Friday or else . . ." is really from the IRS or from the mafia? (authentication) Legitimate messages being captured and replayed (integrity control). People trying to deny that they sent certain messages (non- repudiation).
3
Dove, nell'architettura di rete? .1
A (quasi) tutti i livelli: ma per essere davvero efficace non deve presentare anelli deboli. Un modo per evitare anelli deboli e' quello di operare end-to-end. Protezione del livello Fisico (cavi e apparati). Ma devo proteggere (isolare) tutta la rete! In realta' e' possibile realizzare dei link point-to-point virtuali protetti su Internet. Di norma non ci si protegge a livello Data Link, perche' questo lascerebbe comunque finestre di vulnerabilita' sui router. Protezione a livello di Rete: IPsec ed encrittazione dei datagram. Ma lascia scoperto il tratto tra l'applicazione utente e l'interfaccia Ipsec. I firewall, anche se considerati come operare a livello di Rete, si basano sull'analisi degli header di livello superiore!
4
Dove, nell'architettura di rete? .2
Protezione a livello di Trasporto: TLS (SSL) ed encrittazione. In realta' si colloca al di sopra del Transport Layer. Opera effettivamente end-to-end in quanto l'entita' di protocollo TLS e' fisicamente parte dell'applicazione utente. Protezione a livello di Presentazione: basata sul principio di combinare le due operazioni di encrittazione e di applicazione della sintassi di trasferimento. TLS dovrebbe essere visto come parte del Presentation Layer. Autenticazione e non-ripudio sono trattate a livello di Applicazione.
5
Crittologia: modello operazionale (cifratura a chiave simmetrica)
Crittologia = Crittografia + Crittanalisi (contro-spionaggio) (spionaggio)
6
Legenda Testo in chiaro o plaintext: e' il messaggio da encrittare o decrittato. Le funzioni di encrittazione E() e di decrittazione D() sono parametrizzate rispetto ad una chiave K: EK(), DK(). In uno schema a crittografia simmetrica la chiave di encrittazione e' identica alla chiave di decrittazione. Il messaggio encrittato e' indicato come ciphertext (testo cifrato). E': ciphertext = EK( plaintext ) plaintext = DK( ciphertext ) Deve essere: DK( EK( plaintext ) ) = plaintext Intruso (crittanalista): Puo' essere passivo, ma anche attivo (replicando, modificando, creando, e quindi iniettando dei messaggi). Conosce gli algoritmi E() e D(). Non conosce la chiave K.
7
Principio di Kerckhoff
Gli algoritmi di encrittazione / decrittazione devono essere pubblici. Solo le chiavi devono essere segrete. Motivazioni: Mantenere gli algoritmi segreti e' molto difficile. E' necessario potere cambiare rapidamente la procedura di crittazione una volta che questa e' stata infranta (o anche per rendere piu' remota la possibilita' di effrazione!): non posso cambiare rapidamente l'algoritmo di cifratura, ma posso cambiare rapidamente la chiave! Dato che gli algoritmi sono pubblici la robustezza di un sistema di cifratura e' basata sulla robustezza della sua chiave. Piu' e' lunga la chiave piu' e' robusto il sistema di cifratura (piu' e' lunga la combinazione, piu' e' sicura la cassaforte).
8
Principi fondamentali
Ogni messagio cifrato deve contenere qualche ridondanza. Cioe' delle informazioni aggiuntive che consentano di distinguere messaggi legittimi da messaggi illegittimi. Se tutti i messaggi fossero legittimi, non sarebbe possibile alcun controllo di integrita' sui messaggi: un intruso potrebbe creare un messaggio legittimo scegliendo un qualunque pattern di bit a caso. Esempi di ridondanza: checksum, firma digitale, Message Authentication Code. Deve esistere un meccanismo che consenta di riconoscere e scartare messaggi duplicati illegittimamente. Un meccanismo di questo genere consiste ad esempio nel marcare ogni messaggio con un time-stamp e un numero random, o con un numero di sequenza.
9
Strategie di crittazione: Cifrari a sostituzione
Ogni carattere o gruppo di caratteri e' sostituito con un altro carattere o gruppo di caratteri. Il principio di sostituzione carattere-per-carattere a mappaggio costante e' chiamato sostituzione monoalfabetica. La posizione di un carattere nel plaintext e nel ciphertext e' la stessa (non viene cambiata). Esempio: Ogni carattere e' sostituito con un altro carattere che corrisponde posizionalmente al primo in una particolare permutazione dell'alfabeto. La chiave K e' l'indice della particolare permutazione utilizzata nell'array di tutte le possibili permutazioni dell'alfabeto. Tecnica di decrittazione: In un plaintext i diversi caratteri non sono equiprobabili. Posso indovinare quale carattere rappresenta nel ciphertext il carattere "e" del plaintext in quanto e' il carattere che compare piu' di frequente.
10
Strategie di crittazione: cifrari a trasposizione
I caratteri del plaintext non sono cambiati, ma La posizione di un carattere nel ciphertext e' modificata rispetto alla sua posizione nel plaintext. Esempio (trasposizione di colonne): Si sceglie una chiave che non contenga lettere duplicate (MEGABUCK, nell'esempio). Si scrive il plaintext per righe, con ogni riga che ha tante colonne quanti sono i caratteri della chiave (8, nell'esempio). Se necessario, si padda il testo per completare l'ultima riga. Si riordinano le colonne del testo in base alle precedenze dei caratteri nella chiave. Il ciphertext e' ottenuto leggendo il testo per colonne Ci si accorge che la tecnica di crittazione e' questa perche' le frequenze dei caratteri del ciphertext corrispondono alle frequenze naturali.
11
Strategie di crittazione: Transposition ciphers
12
Elementi di base di un Product cipher
P-box = permutation box S-box = substitution box Product cipher (cifrario): puo' essere ottenuto per combinazione di due semplici tipi di blocchi funzionali, P-box e S-box
13
Strategie di crittazione: One-time pad
Si seleziona una chiave composta da una stringa casuale di bit, di lunghezza in linea di principio indeterminata. Si converte il plaintext nella sua rappresentazione binaria. Il ciphertext e' ottenuto dallo XOR bit-a-bit del plaintext e della chiave. Il plaintext e' ottenibile dal ciphertext eseguendone nuovamente lo XOR bit-a-bit con la chiave. Questo metodo di crittazione non puo' essere infranto perche' il ciphertext non convoglia informazioni nascoste (e.g. tutti i caratteri risultano equiprobabili nel ciphertext). Problemi: La chiave non puo' essere memorizzata, deve essere registrata. La quantita' di informazione crittabile e' limitata alla lunghezza effettiva della chiave. Riutilizzare la stessa chiave rende fragile il sistema: e.g. lo XOR di due ciphertext e' uguale allo XOR dei relativi plaintext! Soluzioni? Quantum computing (quantum cryptography)!
14
Algoritmi a chiave simmetrica
Utilizzano la stessa chiave sia per encrittare che per decrittare In particolare consideriamo cifrari a blocco, che a partire da un plaintext di n-bit lo trasformano in un blocco di n-bit di ciphertext. 3 algoritmi fondamentali: DES (Data Encryption Standard): standard ufficiale del Governo USA, ma ormai considerato insicuro (1977). Triple DES: ISO IS (1991), con il nome di DEA. AES (Advanced Encryption Standard ): standard ufficiale del Governo USA (2001).
15
DES Opera su blocchi di 64 bit. Utilizza una chiave di 56 bit.
L'operazione di encrittazione/decrittazione e' in 19 passi. Fu infranto lo stesso anno in cui fu standardizzato (1977). Una variante prevede di sbiancare il plaintext prima dell'encrittazione facendone lo XOR bit a bit con una stringa random di 64 bit: questo significa in pratica estendere la dimensione della chiave. La versione iniziale dell'algoritmo, di nome Lucifer, era dell'IBM. prevedeva una chiave di 128 bit. la sua robustezza fu ridotta per poterlo considerare "non-classificato" e poterlo cosi' rendere disponibile pubblicamente. (il governo USA si opponeva a rendere pubblico un algoritmo che lui stesso non potesse infrangere)
16
Triplo DES Anch'esso originato da IBM, nacque per superare la debolezza del DES. Si basa sull'idea di mettere in cascata piu' stadi di encrittazione / decrittazione, ciascuno dei quali parametrizzato da una chiave diversa. In questo modo la dimensione della chiave, e quindi la sua robustezza, viene aumentata. In pratica: Lato encrittazione si crea una cascata EDE (Encrypt-Decrypt-Encrypt): C = EK1(DK2(EK1(P))). Lato decrittazione si crea una cascata P = DK1(EK2(DK1(C))). La lunghezza totale della chiave e' #K1+#K2 = 112 bit (ritenuta sufficiente). E' possibile l'interoperabilita' con DES ponendo su un lato della comunicazione K1=K2.
17
AES Nato per sostituire DES (e triplo DES) su iniziativa del NIST (National Institute of Standards and Technology). Bando di gara pubblico con i seguenti requisiti (1997): Algoritmo simmetrico a blocchi. Algoritmo completamente pubblico. Deve supportare almeno chiavi di lunghezza 128, 192 e 256 bit. Implementabile in HW e SW. L'algoritmo deve essere o public domain o offerto con licenza non-discriminatoria. Algoritmo scelto: Rijndael (standardizzato da NIST nel 2001). Lunghezza della chiave: da 128 a 256 bit, a passi di 32. Lunghezza del blocco indipendente dalla lunghezza della chiave. Opera a byte sul contenuto del blocco. AES standardizza: lunghezza blocco = 128 bit lunghezza chiave = 128, 192, 256 bit.
18
Modalita' di cifratura AES, DES e tutti i cifrari a blocchi sono dei cifrari a sostituzione monoalfabetica (il carattere coincide con il blocco). Una volta scelta la chiave: Blocchi uguali di plaintext producono blocchi uguali di ciphertext. Paintext uguali producono ciphertext uguali. In effetti la modalita' con cui questi algoritmi operano e' la seguente (indicata come ECB, Electronic Code Book): Si prende il plaintext e lo si scompone in blocchi, eventualmente paddando l'ultimo blocco alla dimensione voluta. Si encrittano in sequenza i blocchi, e si concatenano i blocchi cifrati cosi' ottenuti per ottenere il ciphertext. Se un intruso sostituisce una copia del blocco k ad una copia del blocco j ottiene un ciphertext ancora "legittimo". Esempio (Laschi): le banche A e B trasferiscono fondi utilizzando messaggi cifrati ECB. L'intruso conosce il formato dei messaggi e sa in quale blocco e' il numero di conto. Apre un conto in ciascuna banca e richiede un trasferimento dall'uno all'altro. Leggendo il messaggio impara quale e' la versione cifrata del proprio numero di conto. A questo punto sostituisce il proprio numero a quello degli altri negli N messaggi successivi.
19
Modalita' di cifratura .1 Una soluzione ai problemi dei cifrari ECB e' quella di fare si' che il valore di un blocco cifrato dipenda non solo dall'algoritmo e dalla chiave, ma anche dal valore dei blocchi che lo precedono nel testo. Questa strategia ha dato origine a diverse modalita' di cifratura: CBC (Cipher Block Chaining) Ogni blocco di plaintext e' XORato con il precedente blocco di ciphertext prima di essere encrittato. Il primo blocco e' XORato con un vettore di inizializzazione random, trasmesso in chiaro insieme al testo cifrato. CFB (Cipher FeedBack mode) Ispirato alla cifratura one-tipe pad. Utilizza un algoritmo di cifratura a blocchi (e.g. triplo DES) retroazionato tramite combinazione con il ciphertext per generare il one-time pad. E' importante perche' anziche' operare solo su blocchi, puo' operare anche su singoli caratteri. E' quello che serve per applicazioni di rete interattive come il terminale remoto.
20
Modalita' di cifratura .2 Stream Cipher mode
Simile nella logica a CFB, la retroazione e' pero' tutta interna al processo di generazione della chiave e del one-time pad. Counter mode Tutte le modalita' di cifratura che correlano in qualche modo la crittazione di un blocco (o carattere) con quella dei blocchi precedenti hanno lo svantaggio di rendere non decrittabile il blocco k del ciphertext se non si sono decrittati i blocchi (caratteri) precedenti. In una rete questo non e' un problema, ma lo e' se vogliamo crittare i file del file system: vorrebbe dire rinunciare all'accesso random ai file! Per risolvere il problema si puo' modificare la chiave ad ogni blocco successivo combinandola con un contatore sequenziale.
21
Crittografia asimmetrica a chiave pubblica
I sistemi di cifratura simmetrici hanno un problema essenziale: la chiave (usata sia per cifrare che per decifrare) deve essere nota ad entrambe (e sole) le parti del colloquio. Come e' possibile garantire questo sul Web, dove un utente si collega a siti sempre nuovi e indipendenti tra loro? Come puo' il sito comunicare la chiave segreta al nuovo utente in modo sicuro? Nel 1976 (Diffie e Hellman) viene proposto un sistema di cifratura basato su principi completamente nuovi: La chiave di encrittazione e' diversa dalla chiave di decrittazione. Anche se le due chiavi sono correlate, derivare la chiave di decrittazione dalla conoscenza della chiave di encrittazione e' enormemente difficile (e' invece facile progettare le due chiavi correlate di encrittazione e di decrittazione) Mentre la chiave di decrittazione deve rimanere segreta, la chiave di encrittazione puo' (deve potere) essere resa pubblica.
22
Decrittazione Un crittanalista puo' trovarsi a operare in 3 condizioni molto diverse tra loro: Ha a disposizione esempi di ciphertext a volonta' ma non conosce il plaintext corrispondente (ciphertext-only problem). Ha a disposizione esempi di ciphertext e ne conosce il corrispondente plaintext (known-plaintext problem). Puo' conoscere il ciphertext corrispondente ad un plaintext di sua scelta (chosen-plaintext problem). I tre problemi non sono ugualmente difficili (sono di difficolta' decrescente). Il cifrario realizzato tramite permutazione delle lettere dell'alfabeto e' infranto immediatamente se possiamo farci cifrare l'alfabeto nel suo ordine naturale! Perche' la crittografia a chiave pubblica abbia senso e' chiaro che deve essere in grado di resistere ad attacchi di tipo chosen-plaintext.
23
Algoritmo RSA Nel 1978 Rivest, Shamir e Adelman presentano un algoritmo (RSA) basato sui principi della crittografia asimmetrica a chiave pubblica: E' un algoritmo estremamente robusto: resiste ancora adesso. Per raggiungere buoni livelli di sicurezza richiede pero' l'uso di chiavi di 1024 bit, il che lo rende piuttosto lento rispetto agli algoritmi simmetrici che utilizzano chiavi di 128 bit. (c'e' chi dice che RSA significa Really Slow Algorithm e non Rivest, Shamir, Adelman) Attualmente e' largamente utilizzato. L'algoritmo e' basato sul fatto che al momento non c'e' nessuna tecnica efficiente che consenta di scomporre un numero nei suoi fattori primi. Adesso esistono anche altri algoritmi a chiave pubblica.
24
Algoritmo RSA: dettagli (Tanenbaum)
Prologo: Si scelgono due numeri primi grandi, p e q (tipicamente di 1024 bit) Si calcola: n = p * q e: z = (p - 1) * (q – 1) Si sceglie un numero d che sia relativamente primo a z Si trova il numero e tale che e * d = 1 (mod z) Encrittazione / decrittazione Considerando il plaintext come una stringa di bit, lo si scompone in blocchi P di dimensione k tale che k e' il massimo numero per cui 2k < n La cifratura C di ciascun blocco P si ottiene calcolando C = P e (mod n) Per decifrare C si calcola P = C d (mod n) La chiave pubblica di encrittazione e' costituita dalla coppia (e, n) La chiave segreta di decrittazione e' costituita dalla coppia (d, n)
25
Algoritmo RSA: dettagli (Tanenbaum)
If the cryptanalist could factor the (publicly known) n, he could then find p and q, and from these z. Equipped with the knowledge of z and (publicly known) e, d can be found. Ma: According to Rivest and colleagues, factoring a 500-digit number requires 1025 years using brute force (best known algorithm and 1 sec instruction time). Anche se i calcolatori diventano un po' piu' veloci non c'e' da preoccuparsi. RSA e' un algoritmo che funziona in modalita' ECB. RSA e' troppo lento per de/cifrare grandi quantita' di dati. Nella maggior parte dei casi RSA e' utilizzato solo per distribuire in modo sicuro la chiave segreta di un algoritmo simmetrico dopo di che, e' l'algoritmo simmetrico che viene usato per de/cifrare i dati (la conversazione).
26
Come stabilire una chiave segreta condivisa?
L'utilizzo del sistema di crittografia a chiave pubblica risolve un problema fondamentale dei sistemi a chiave simmetrica: come possono le due parti mettersi d'accordo in modo sicuro su quale chiave segreta utilizzare durante la loro interazione? Requisiti per una soluzione: chiunque deve poter instaurare comunicazioni riservate con chiunque altro. la chiave di ogni sessione di conversazione deve essere determinata dinamicamente. l'accordo sulla chiave di sessione deve poter essere preso in assenza di qualsiasi accordo precedente. l'accordo sulla chiave di sessione deve poter essere preso interagendo sulla rete. In realta' una soluzione alternativa per questo problema esiste (DH key exchange), ed e' basata anch'essa su principi matematici analoghi a quelli della crittografia a chiave pubblica.
27
Diffie-Hellman key exchange
The protocol that allows strangers to establish a shared key (simmetrica e segreta) is called the Diffie-Hellman (DH) key exchange. Alice e Bob devono accordarsi a priori su due numeri grandi, n e g. n deve essere primo, e (n-1)/2 deve essere anch'esso primo. n e g possono essere pubblici: chiunque puo' esserne a conoscenza. Alice e Bob scelgono, ciascuno per conto proprio, un altro numero grande (e.g. di 512 bit) e lo tengono segreto (A scelga x e B y). Alice calcola il numero g x mod n e lo invia a Bob. Bob risponde con il valore g y mod n da lui calcolato. Entrambi questi messaggi possono essere inviati in chiaro. Alice calcola (g y mod n) x mod n, e Bob calcola (g x mod n) y mod n: il risultato e' lo stesso per entrambi (g x*y mod n ) ed e' segreto. Il protocollo si basa sulla difficolta' di calcolare logaritmi discreti modulo un numero primo.
28
Diffie-Hellman key exchange
Un intruso puo' conoscere n, g, g x mod n, g y mod n, ma non ha alcuna maniera pratica di risalire a x e y, e quindi di calcolare g x*y mod n. Alice e Bob possiedono una chiave segreta di sessione.
29
Firma digitale La crittologia ha a che fare con la segretezza e, almeno in parte, con il controllo d'integrita'. Per la sicurezza delle reti ci sono pero' anche altri problemi da affrontare, in particolare autenticazione e non ripudio. Quando compro una casa la mia firma garantisce la mia identita' e anche che io non possa ritrattare quanto stabilito. "For computerized message systems to replace the physical transport of paper and ink documents, a method must be found to allow documents to be signed in an unforgeable way." (Tanenbaum) Basandosi sulla firma digitale Il ricevente deve poter autenticare l'identita' proclamata del mittente. Il mittente non deve poter ripudiare come non proprio il contenuto di un messaggio (e.g. un documento firmato e' inalterabile). Ne' il ricevente ne' nessun altro deve essere in grado di contraffare un documento spacciandosi per il mittente (e.g. imitando o trasportando la firma).
30
Firma digitale: 3 approcci
Firma a chiave simmetrica Si basa sull'esistenza di una autorita' centrale (notaio) che faccia da garante (partecipando attivamente) in tutte le transazioni. Ogni parte comunica solo con il notaio, usando un sistema di cifratura simmetrico (ogni parte ha la propria chiave segreta, il notaio conosce le chiavi di tutte le parti). Firma a chiave pubblica Elimina la necessita' di una autorita' centrale. Si basa sul fatto che il cifrario RSA ha la proprieta' che E(D(P))=P (e' ovviamente vero che D(E(P))=P). Ne esiste anche una versione (DSS, Digital Signature Standard, NIST 1991) basata su un diverso algoritmo di cifratura a chiave pubblica (algoritmo di El Gamal). Message digest Consente di firmare un messaggio senza doverlo necessariamente cifrare. Si basa sull'uso di funzioni hash.
31
Firma a chiave simmetrica
Alice vuole mandare il plaintext P a Bob. Per farlo Alice manda al notaio BB il messaggio 1 (parzialmente cifrato): t e' un timestamp. RA e' un numero random scelto da Alice. Queste informazioni addizionali servono ad evitare (con l'aiuto di Bob) che un intruso possa registrare e ripetere un messaggio: t protegge dalla ripetizione di messaggi vecchi, RA protegge dalla ripetizione di messaggi recenti. Il notaio decifra il messaggio di Alice (riuscire a decifrarlo con la chiave di Alice e' la garanzia che provenga davvero da lei) e genera verso Bob il messaggio 2. Riuscire a decodificare il messaggio con la propria chiave garantisce a Bob che il mittente sia il notaio. KBB(A, t, P) e' la firma digitale del messaggio.
32
Firma a chiave pubblica
La necessita' di una autorita' centrale rende la firma a chiave simmetrica poco conveniente: Il notaio deve essere sempre in linea e non rappresentare un collo di bottiglia. Il notaio deve essere affidabile (e.g. non rilasciare firme false, garantire la segretezza delle chiavi) e le persone devono essere disposte a credergli. Il sistema di cifratura a chiave pubblica rende inutile il notaio. Se Alice invia a Bob il messaggio EB(DA(P)), questo e' intrinsecamente la propria firma digitale. Bob verifica che il mittente sia proprio Alice perche' riesce a decrittare DA(P) utilizzando la chiave pubblica di Alice (P= EA(DA(P))).
33
Message digest Anche la firma digitale a chiave pubblica presenta alcuni problemi: Rende difficile il cambio della propria chiave (oppure richiede la gestione di un registro storico centralizzato delle chiavi). Costringe a crittare messaggi che potrebbero essere trasmessi in plaintext, con il costo aggiuntivo collegato. Una firma digitale a message digest si basa su questo principio: Non c'e' necessita' di poter decifrare la firma. L'importante e' che la firma sia in relazione (praticamente) biunivoca con il messaggio. Questo tipo di firma si basa sull'uso di funzioni hash, come quelle che vengono utilizzate per la realizzazioni di hash table. La funzione MD(P) deve essere tale per cui: 1. e' facile da calcolare (bassa complessita' computazionale) 2. dato MD(P) e' praticamente impossibile risalire a P 3. dato P e' in pratica impossibile trovare un P' tale che MD(P') = MD(P) 4. una variazione qualunque di P produce un valore diverso di MD() Per soddisfare il terzo criterio deve essere sizeof(MD()) 128 bit.
34
Message digest Computing a message digest from a piece of plaintext is much faster than encrypting that plaintext with a public-key algorithm. In un sistema a firma con chiave simmetrica la firma KBB(A, t, P) viene sostituita con la firma KBB(A, t, MD(P)). In un sistema a firma con chiave pubblica La firma puo essere disaccoppiata dal messaggio. Il messaggio P puo' essere inviato o come plaintext o cifrato. La firma e' costituita da DA(MD(P)). In ogni caso Il ricevente e' garantito dell'identita' del mittente in quanto calcolando MD(P) ottiene lo stesso valore trasportato dal messaggio nella firma digitale (che il ricevente e' in grado di decrittare). Il mittente non puo' ripudiare il messaggio in quanto il ricevente non sarebbe in grado di forgiare la firma.
35
Message digest KB(A, RA, t, P, KBB(A, t, MD(P)))
Message digest in sistema di firma a chiave simmetrica (messaggio cifrato) Message digest in sistema di firma a chiave pubblica (messaggio non cifrato) Esistono due algoritmi canonici per il calcolo di message digest: MD5 (Rivest 1992), di dimensione 128 bit SHA-1 (NSA, standard NIST FIPS 180-1), di dimensione 160 bit
36
Certificati Tutta la sicurezza del dialogo a chiavi pubbliche (compresa la firma digitale) si basa sul fatto che le due parti possiedano la chiave pubblica l'una dell'altra. Se scarico la chiave pubblica della controparte dalla sua home page, chi mi garantisce che questa chiave sia quella autentica? N.B.: lo stesso problema si pone per un sistema a chiave simmetrica. Chi puo' garantire, a fronte di un possibile intruso attivo (Trudy, che si puo' interporre nel dialogo simulando l'identita' di ciascuno dei due pari verso l'altro) che sto dialogando davvero con la controparte desiderata?
37
Certificati Ovviamente non si puo' pensare (tempi di risposta, affidabilita', …) ad un sistema centralizzato, sempre disponibile, di distribuzione e autenticazione delle chiavi. La soluzione ottimale non deve richiedere l'intervento on-line della Autorita' di Certificazione (CA). La CA deve poter operare fuori linea, fornendo a chi lo richieda (Bob) un certificato sicuro che ne possa garantire l'identita' a chi lo vede. Il certificato puo' consistere nell'encrittazione con la chiave privata di CA del message digest della chiave pubblica di Bob: DCA(MD(pubKB)) Bob potra' fornire ad Alice il certificato insieme alla sua chiave pubblica. Alice, che conosce a priori la chiave pubblica di CA, puo' estrarre dal certificato il message digest della chiave pubblica di Bob, e confrontarlo con il valore hash da lei stessa calcolato per verificarne la autenticita'. X. 509 / RFC 2459 standardizzano il formato del certificato (descrivendolo in ASN.1) e l'architettura di una Infrastruttura per la gestione delle Chiavi Pubbliche (PKI, Public Key Infrastructure).
38
Certificato X.509 Certificate ::= SIGNED { SEQUENCE {
version [0] Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueIdentifier [1] IMPLICIT UniqueIdentifier OPTIONAL, subjectUniqueIdentifier [2] IMPLICIT extensions [3] Extensions OPTIONAL } }
39
Certificato X.509 Version ::= INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber ::= INTEGER Validity ::= SEQUENCE { notBefore Time, notAfter Time } SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING } Time ::= CHOICE { utcTime UTCTime, generalizedTime GeneralizedTime } Extensions ::= SEQUENCE OF Extension
40
Public Key Infrastructure
PKI gerarchica catena dei certificati Non si puo' pensare ad una sola CA per tutto il mondo. L'idea e' di avere un insieme di CA centrali (root CA), ciascuna delle quali scomposta gerarchicamente per delega (secondo lo stesso principio degli OBJECT IDENTIFIER ASN.1). Ogni livello della gerarchia garantisce l'identita' dei suoi delegati, certificandone al contempo la chiave pubblica.
41
Public Key Infrastructure
Quando Bob fornisce la sua chiave pubblica, fornisce anche il proprio certificato, e il certificato del proprio certificatore (e.g., CA5), e tutta la catena dei certificati (chain of trust o certification path) da se' alla propria root CA (e.g. il certificato di RA2). Le root CA devono essere note a priori, e cosi' le loro chiavi pubbliche. Alice: Basandosi sulla chiave pubblica di root CA, verifica il certificato di RA2 e ne acquisisce la chiave. Basandosi sulla chiave pubblica di RA2, verifica il certificato di CA5 e ne acquisisce la chiave. Basandosi sulla chiave pubblica di CA5, verifica il certificato di Bob e ne acquisisce la chiave. Problemi: E se una CA decide di revocare un certificato? E se una CA volesse riabilitare un certificato prima revocato?
42
Controllo d'integrita' Supponiamo di avere due parti che
si fidano reciprocamente l'una dell'altra, condividono una chiave sicura, non hanno esigenze di confidenzialita', ma vogliono essere sicure che i messaggi che ricevono siano stati generati dalla controparte e non da un intruso, non abbiano subito alterazioni da parte di un intruso. Quello che stiamo cercando e' un Message Authentication Code (MAC) che sia non forgiabile da un intruso e che possa essere affiancato al plaintext per autenticarlo. Una maniera di creare un MAC in queste condizioni e' quella di: calcolare il ciphertext del messaggio con un algoritmo simmetrico in modalita' CBC (utilizzando la chiave sicura); utilizzare l'ultimo blocco del ciphertext come MAC da affiancare al plaintext. Questo procedimento costringe pero' a pagare il costo della cifratura.
43
HMAC Nelle ipotesi che abbiamo indicato e' pero' possibile generare un MAC senza effettuare alcuna operazione di cifratura ma attraverso il calcolo (molto piu' semplice) di un Message Digest. Un MAC di questo genere e' chiamato HMAC (Hashed MAC). Un HMAC e' calcolabile semplicemente : Concatenando la chiave segreta condivisa al plaintext; Applicando una delle funzioni hash MD() al testo cosi' ottenuto. RFC 2104 definisce lo standard per HMAC in modo indipendente dall'algoritmo di hash (e.g. MD5 o SHA-1), specificando una opportuna funzione di combinazione della chiave simmetrica con il plaintext. Un intruso: non puo' forgiare alcun testo legittimo perche' non conosce la chiave segreta. non puo' risalire alla chiave segreta perche' la funzione hash non e' invertibile (non consente di risalire dal digest al testo originario).
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.