Universita' di Ferrara
Facolta' di Scienze Matematiche, Fisiche e Naturali
Laurea Specialistica in Informatica
Algoritmi Avanzati
Funzioni Hash e Network Security
Vedi:
• A.S. Tanenbaum, Computer Networks, 4th ed., Prentice Hall: sez. 8, pagg. 721771.
(le figure delle dispense sono tratte da questo libro)
Copyright © 2007-2009 by Claudio Salati.
Lez. 13a
1
Firma digitale
• Uno dei problemi di sicurezza dei sistemi digitali ed in paticolare delle
reti di calcolatori e’ legato all’autenticazione e al non ripudio di un
documento.
• 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).
2
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.
3
• Si basa sull'uso di funzioni hash.
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.
4
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)
5
utilizzando la chiave pubblica di Alice (P= EA(DA(P))).
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.
6
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)).
• Il mittente non puo' ripudiare il messaggio in quanto il ricevente non
sarebbe in grado di forgiare la firma.
• 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).
7
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
8
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.
9
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 :
1. Concatenando la chiave segreta condivisa al plaintext;
2. 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). 10
Scarica

Firma a chiave simmetrica - Dipartimento di Matematica e Informatica