PROGETTO LAUREE SCIENTIFICHE ITGS PASCAL-UNIV. PARMA (è stato usato vario materiale di Alessandro Zaccagnini, Alessandro Languasco Altro materiale è stato preso dal sito: http://avires.dimi.uniud.it/claudio/teach/sicurezza2012/lezione-05.pdf, da Wikipedia e da ‘Documento elettronico, firma digitale e sicurezza in rete’, Eleonora Brioni Univ. di Trento Docenti: BAROZZI -SIMEONE CORSO DI CRITTOGRAFIA Quinto incontro FIRMA DIGITALE - DEFINIZONE La firma digitale si propone di soddisfare 3 esigenze: Che il destinatario possa verificare l’identità del mittente (autenticità) Che il mittente non possa disconoscere un documento da lui prodotto (non ripudio) Che il destinatario non possa inventarsi o modificare un documento firmato da qualcun altro (integrità) FIRMA DIGITALE Quadro normativo di riferimento La legge che disciplina la firma digitale è il decreto legislativo 7 marzo 2005, n.82, recante ‘Codice dell’amministrazione digitale’ Con un rimando al Codice Civile, l’articolo afferma che la firma digitale fa piena prova fino a querela di falso, equiparando così il documento informatico sottoscritto con firma digitale alla scrittura privata sottoscritta con firma autografa. FIRMA DIGITALE – PRIMA IDEA Siano A e B due utenti di un sistema a chiave pubblica. fA e fB sono pubbliche, f-1A e f-1B sono segrete. A per inviare un messaggio M a B calcola fB(M) Se lo vuole firmare deve avere un nome convenzionale sA (numero progressivo, indirizzo IP macchina,…) A certifica la propria identità a B inviandogli oltre a fB(M) anche fB(f-1A(sA)) B decodifica il messaggio calcolando f-1B(fB(M)) e verifica l’identità di A calcolando fA(f-1B(fB(f-1A(sA)))) FIRMA DIGITALE – PROBLEMI Il primo problema non è crittografico, ma generale • Chi assicura la corrispondenza tra l’utente e la sua funzione di decifratura? ENTE CERTIFICATORE SUPER PARTES Certifica la corrispondenza tra A e la sua chiave pubblica FIRMA DIGITALE – PROBLEMI Secondo problema: Un intruso C potrebbe intercettare la quantità f-1A(sA) utilizzando un certo numero di messaggi intercettati. A questo punto C può fingere di essere A usando come sua firma f-1A(sA) CONTROMISURA: far dipendere la firma dal messaggio FIRMA DIPENDENTE DAL MESSAGGIO Si suppone l’esistenza di una funzione pubblica: funzione di hash nota a tutti gli utenti, con le seguenti proprietà: h(M) (impronta di M) è una sequenza di bit di lunghezza nota (oggi 160) h non permette di risalire ad M conoscendo solamente h(M) (attacchi alla preimmagine) La probabilità che h(M)=h(M’) con M≠M’ è molto piccola (rilevamento di collisioni) FIRMA DIGITALE - SCHEMA Bob vuole inviare ad Alice un messaggio firmato: FIRMA DIGITALE Alice decodifica il massaggio con la sua chiave privata. Alice legge il certificato digitale e recupera la chiave pubblica di Bob. Alice calcola la funzione di hash del messaggio, decripta la firma digitale tramite la chiave pubblica di Bob e la confronta con h(M), se coincidono la firma è autentica. FUNZIONI DI HASH CODICI DI CHECKSUM Un codice di checksum è una “firma” di dimensione fissa (ad es. 32 bit) calcolata a partire da un messaggio di lunghezza variabile. Ogni messaggio ha una sua firma caratteristica. Il checksum viene usato per rilevare modifiche accidentali ad un messaggio, ad esempio dovute ad errori di trasmissione su una linea rumorosa (usati ad esempio nei modem, nelle reti ethernet, ecc.) ESEMPIO DI CODICE DI CHECKSUM CRC (Cyclic Redundancy Check) Per ogni algoritmo di CRC-n esiste un “numero magico” c lungo n bit da utilizzare nel seguente modo: Far scorrere da sinistra a destra c finché il suo bit più significativo (che vale sempre 1) corrisponde ad un 1 nel messaggio Fare lo XOR (estendere c con degli 0) Ripetere l’algoritmo sul valore risultante, finché non si arriva alla fine del messaggio. Il valore finale è il checksum (composto da n-1 bit) ESEMPIO CRC-4 Numero magico: 1011 Messaggio: 11010011101100 Il CRC finale è 101 Il messaggio 11010011101101 dà risultato 100 Un errore di trasmissione che ha modificato un bit può essere controllato con CRC PRINCIPIO DEI BUCHI DI COLOMBAIA Data una colombaia con n buchi e m colombi, se m>n esisterà sicuramente un buco in cui entreranno più colombi APPLICAZIONE ALLE FUNZIONI DI HASH Se n è il numero di bit che ottengo calcolando la funzione di hash di un messaggio che aveva m bit (con m>n) Allora Esistono 2n funzioni di hash possibili e 2m messaggi possibili, 2m>2n, sicuramente esisteranno messaggi diversi aventi la stessa funzione di hash MESSAGE DIGEST Una funzione di hash per la firma digitale deve avere le seguenti proprietà: È facile calcolare l’hash di un messaggio; È difficile determinare il messaggio che ha generato l’hash; È difficile modificare il messaggio senza modificare l’hash; È difficile trovare due messaggi che abbiano lo stesso hash . MESSAGE DIGEST Le funzioni di hash che ‘godono’ di queste proprietà sono chiamate message digest o semplicemente digest. Per quanto riguarda i primi due punti si può far riferimento alla teoria crittografica. Per gli ultimi due punti si noti che necessariamente, principio dei buchi della colombaia, esistono due messaggi con lo stesso hash, tuttavia deve essere difficile per un attaccante trovare due messaggi con tale proprietà.