Sicurezza informatica POLITECNICO DI BARI Sicurezza informatica Algoritmi di Hashing Prof. Giuseppe Mastronardi
Sistema di autenticazione informatica DLgs 196/03 ALLEGATO B: DISCIPLINARE TECNICO IN MATERIA DI MISURE MINIME DI SICUREZZA Sistema di autenticazione informatica 2. Le credenziali di autenticazione consistono in un codice per l'identificazione dell'incaricato associato a una parola chiave riservata conosciuta solamente dal medesimo oppure in un dispositivo di autenticazione in possesso e uso esclusivo dell'incaricato, eventualmente associato a un codice identificativo o a una parola chiave, oppure in una caratteristica biometrica dell'incaricato, eventualmente associata a un codice identificativo o a una parola chiave. 3. Ad ogni incaricato sono assegnate o associate individualmente una o più credenziali per l'autenticazione. 4. Con le istruzioni impartite agli incaricati è prescritto di adottare le necessarie cautele per assicurare la segretezza della componente riservata della credenziale e la diligente custodia dei dispositivi in possesso ed uso esclusivo dell'incaricato. 6. Il codice per l'identificazione, laddove utilizzato, non può essere assegnato ad altri incaricati, neppure in tempi diversi. 8. Le credenziali sono disattivate anche in caso di perdita della qualità che consente all'incaricato l'accesso ai dati personali. 9. Sono impartite istruzioni agli incaricati per non lasciare incustodito e accessibile lo strumento elettronico durante una sessione di trattamento.
Algoritmi di hash: SHA-256 In dettaglio … Algoritmi di hash: SHA-256 Una funzione di hash (o message digest) è una funzione H che, dato un input M di dimensione qualsiasi, produce un output h (l’hash) di dimensione fissa: h = H(M) Lo scopo di una funzione di hash è di creare un’impronta (fingerprint) del messaggio. Dato che l’output ha lunghezza fissa (in genere dell’ordine di una o poche centinaia di bit), esisteranno necessa-riamente diversi messaggi che generano lo stesso hash... ma non è detto che si riesca a trovarli… SHA-1 (Secure Hash Algorithm 1) è stato progettato dal NIST Il messaggio (che deve essere di lunghezza inferiore a 264 bit) viene elaborato a blocchi di 512 bit. L’hash è di 160 bit. Ad ogni iterazione si calcola una funzione che dipende dal blocco corrente del messaggio e dal valore dell’hash all’iterazione precedente; il risultato viene sommato (per singola parola) al valore dell’iterazione precedente.
Algoritmi di hash: SHA-256 In dettaglio … Algoritmi di hash: SHA-256 Al messaggio viene aggiunto un padding . Le 5 parole di 32 bit del digest (A, B, C, D, E) vengono inizializzate con: A = 0x67452301, B = 0xEFCDAB89, C = 0x98BADCFE, D = 0x10325476, E = 0xC3D2E1F0. Ogni iterazione calcola dei valori di A, B, C, D, E che vengono sommati ai precedenti prima di passare all’iterazione successiva. Alla fine, la concatenazione di A, B, C, D, E costituisce il digest del messaggio. Il blocco corrente di messaggio (512 bit) viene utilizzato per costruire una stringa di 5 x 512 bit (80 parole di 32 bit). Le prime 16 parole coincidono con il blocco del messaggio, le successive sono calcolate così: Wi = (Wi-3 ⊕ Wi-8 ⊕ Wi-14 ⊕ Wi-16)↵1 (i=16-79) la rotazione di un bit è stata aggiunta in SHA-1 (è l’unica differenza tra SHA e SHA-1). Si scorre la stringa di 80 parole una parola alla volta (80 operazioni), calcolando i nuovi valori A’, B’, C’,D’, E’. Alla fine, i nuovi valori verranno aggiunti agli A, B, C, D, E precedenti.
Algoritmi di hash: SHA-256 Figure 1: Performance of standard secure hash functions. (Timings from a 2GHz Pentium running Java 6 under Windows XP; each point is actually the mean of 20 measurements.) L’algoritmo SHA-256 è più sicuro dell’algoritmo SHA-1 e non ha un costo assai più oneroso.