Dipartimento di Scienze Matematiche Politecnico di Torino Gennaio 2018
La crittografia nell antichita Agli albori della crittografia Definizioni La crittografia nell antichita La crittografia nell antichita Scı tala lacedemone Codice atbash Codice di Cesare (con traslazione uguale a 3)
Agli albori della crittografia Definizioni La sicurezza di un codice è sempre relativa potenza di calcolo tempo a disposizione esistenza algoritmi di cifratura e decifratura
Agli albori della crittografia Definizioni DEFINIZIONI DI BASE Riservatezza : i messaggi inviati devono poter essere letti solo da persone autorizzate; Integrità : i messaggi devono arrivare a destinazione senza manomissioni; Autenticità : il mittente deve essere identificato con certezza; Non ripudiabilità : il mittente non sia in grado di disconoscere di aver spedito il messaggio.
Agli albori della crittografia Definizioni Alfabeto Σ : insieme finito di simboli; Messaggi in chiaro M : M = Σ L (L lunghezza del messaggio); Messaggi cifrati C : tale che card(m ) = card(c) o almeno card(m ) card(c); Funzione di cifratura : f : M C biezione; Funzione di decifratura : f 1 : C M ; Chiavi di cifratura : valori dei parametri che identificano una particolare f funzione di cifratura nella famiglia di funzioni crittografiche prese in esame; One-way function : f funzione di cifratura che ha una complessità computazionale bassa tale che la sua f 1 abbia complessità computazionale più alta ; Criptosistema o crittosistema : (M,C,f,f 1 ).
Agli albori della crittografia Definizioni Principio di Kerckhoff La sicurezza del sistema crittografico non deve risiedere nel celare l algoritmo di cifratura/decifratura, ma solo nella scelta dei parametri utilizzati (la chiave di cifratura/decifratura) Criptosistema perfetto Un criptosistema è perfetto nel senso di Shannon se l unica informazione in possesso di un eventuale intruso che intercetta il messaggio è la sua lunghezza (ogni messaggio cifrato deve essere equiprobabile)
Agli albori della crittografia Definizioni Criptosistema di Cesare Σ = M = C = Z N f a : Z N Z N tale che f a (x) = (x + a) mod N Generalizzazione : considerare permutazioni qualsiasi di lettere; È comunque un sistema debole : analisi di frequenza. Ulteriore generalizzazione : metodo di Hill ([ a Esempio con blocchi da due cifre : f b ]) = A [ a b ] mod N
Σ = M = C = Z N Alice e Bob condividono un libro di sequenze casuali di lettere. Alice per spedire un messaggio somma mod N al messaggio in chiaro la prima pagina del libro delle sequenze e poi butta via la pagina. Bob a sua volta grazie alla prima pagina del libro in grado di decodificare e poi butta a sua volta la prima pagina.
Criptosistemi a pacchetto METODO ECB (Electronic CodeBook mode) Si aggiungono un numero di caratteri qualsiasi al termine del messaggio per renderlo multiplo di L e poi si codifica separatamente ogni pacchetto lungo L e si concatenano per ottenere il testo cifrato finale.
METODO CBC (CipherBlock Changing mode) Variante di EBC, con la codifica di ogni blocco che dipende anche dai pacchetti precedenti. Si fissa un pacchetto arbitrario e condiviso P e si pone c 1 = P f(m 1 ) ( = XOR ). Poi si codifica c 2 = f(c 1 m 2 )... c j = f(c j 1 m j )
Bob per decodificare (conosce P che è condiviso) calcola m 1 = P f 1 (c 1 ), quindi m 2 = c 1 f 1 (c 2 )... m j = c j 1 f 1 (c j ).
METODO CFB (Cipher FeedBack mode) Si fissa un pacchetto arbitrario e condiviso P e si pone I 1 = P. Si calcola O 1 = f(i 1 ) e si definisce u 1 come gli r bit meno significativi (a destra) di O 1. Si codifica c 1 = u 1 m 1. Ora si crea I 2 facendo scorrere verso sinistra di r posizioni i bit di I 1 e si inserisce c 1 nello spazio creato: I 2 = 2 r I 1 + c 1 mod 2 L. Si riparte poi da capo ponendo O 2 = f(i 2 )...
Per decodificare Bob esegue esattamente lo stesso algoritmo di codifica e quindi calcola tutti gli u j e quindi ricava m j = c j u j. La cosa interessante è che Bob e Alice possono lavorare in contemporanea, non c è bisogno che Alice finisca di codificare tutti gli m j e mandi l intero testo codificato a Bob! Alice calcola c 1 e lo manda subito a Bob, che ponendo I 1 = P (P condiviso), O 1 = f(i 1 ) da cui estrae u 1 e calcola m 1 = u 1 c 1. Così via procedono a fare girare il medesimo algoritmo contemporaneamente e a determinare i vari u j che permettono banalmente e molto velocemente di passare da m j a c j e viceversa.
METODO OFB (Output FeedBack mode) Si tratta di una variante di CFB. L algoritmo di codifica uguale con l esclusione dell ultimo passaggio per il calcolo del nuovo I j+1 a partire dall I j. Invece di far traslare verso sinistra inserendo in c j in questo caso semplicemente si pone I j+1 = O j. Nuovamente l algoritmo di decodifica è uguale a quello di codifica e permette di calcolare contemporaneamente ad Alice e Bob gli u j e quindi passare molto velocemente da m j a c j e viceversa. Rispetto al precedente è più veloce, ma non inserendo i c j, i vari u j dipendono solo da P e f e non dai messaggi cifrati precedenti. Risulta quindi meno resistente alla manipolazione dei messaggi da parte di terzi.
DES (Data Encryption Standard) Il DES un algoritmo di cifratura scelto come standard dal Federal Information Processing Standard (FIPS) per il governo degli Stati Uniti d America nel 1976 e in seguito diventato di utilizzo internazionale. Questo algoritmo all inizio ha suscitato molte discussioni per via della sua chiave di cifratura corta e per via di alcune scelte progettuali che erano segretate. Si supponeva che dietro queste scelte vi fosse la National Security Agency (NSA) e l inserimento di una backdoor.
Sebbene M = C = {0,1} 64 le chiavi del DES sono a 56 bit, gli altri 8 bit sono usati per il controllo di parità. Algoritmo di cifratura 1) il testo M di lunghezza 64 bit viene permutato con la permutazione iniziale (IP) e diviso in due parti lunghe 32: IP(M) = (L 0,R 0 ) 2) per ogno 1 i 16 si pone (L i,r i ) = (R i 1,L i 1 P(S(E(R i 1 ) K i ))), dove K i è una sequenza di chiavi, la funzione E è una funzione di espansione per passare da 32 a 48 bit, S è una funzione di sostituzione che mescola a blocchi e P è una funzione di permutazione. 3) si ripermuta al contrario (IP 1 ) dopo avere scambiato parte destra e sinistra: IP 1 (R 16,L 16 )
Algoritmo di decifratura Si ripetono le stesse operazioni fatte per la cifratura utilizzando, in ordine inverso, la sequenza di chiavi K i di ciclo. La relazione fondamentale di ogni ciclo è (R i 1,L i 1 ) = (R i P(S(E(L i ) K i )))
Nel 1998 il DES è stato violato con un attacco a forza bruta Da quel momento la ricerca di un nuovo sistema di cifratura simmetrica rispondente agli standard moderni divenne sempre più pressante Alcuni tentativi consistettero nell utilizzare il DES con chiavi più lunghe oppure opportune iterazioni del DES stesso (TDES, Triple DES).
AES (Advanced Encryption Standard) - Rijndael Nel 1998 il governo USA, tramite il National Institute of Standards and Technology (NIST), ha indetto un concorso pubblico internazionale per determinare un nuovo standard di cifratura simmetrica che sostituisse il DES Lo scopo principale era incrementare la numerosità delle chiavi perché 256 parametri non garantivano più la sicurezza contro attacchi a ricerca esaustiva. Altri criteri richiesti erano: 1) chiave simmetrica e a pacchetto; 2) chiave tra 128 e 256 bit ; 3) necessità di risorse di calcolo limitate per poter consentire l implementazione su smart-card
Quindici algoritmi furono sottoposti al NIST Il processo di selezione (pubblico) terminò nel 2001 con la scelta del metodo Rijndael proposto da J. Daemen e V. Rijmen In tal modo Rijndael è divenuto il nuovo standard di cifratura simmetrica ed ha assunto la denominazione ufficiale di AES (Advanced Encryption Standard)
Descrizione AES (Advanced Encryption Standard) La lunghezza del blocco è 128 bit. La chiave invece può essere a 128, 192 o 256 bit (vengono indicate solitamente come AES128, AES192 e AES256). Analogamente al DES, AES consiste in una ripetizione di cicli (10 per AES128, 12 per AES192 e 14 per AES256, invece che i 16 del DES), ha una chiave di ciclo K i, una matrice di stato s di dimensione 4x4 e utilizza una funzione di scambio S, una di spostamento righe SR e una di mescolamento colonne MC. L affidabilità della cifratura AES è garantita al fatto che la selezione è stata pubblica e che quindi la comunità scientifica mondiale ha potuto valutare ogni algoritmo candidato ed è stato attaccato con tutti i metodi più avanzati e per ora ha sempre retto.
Sicurezza computazionale: un criptosistema è considerato computazionalmente sicuro se il miglior algoritmo che ne consente la violazione ha complessità computazionale superiore ad un certo limite N sufficientemente grande. Sicurezza dimostrabile: si cerca di fornire la prova che la sicurezza di un criptosistema è equivalente a quella di un problema che si ritiene difficile da risolvere; in tal caso il criptosistema detto dimostrabilmente sicuro. La sicurezza del crittosistema non quindi assoluta ma relativa a quella di un altro problema. Sicurezza incondizionale: un criptosistema è detto incondizionalmente sicuro se non è violabile anche utilizzando una potenza di calcolo illimitata.
Supponiamo che nello spazio dei messaggi M sia definita una misura di probabilità; probabilità della sorgente Poniamo c = f k (m), dove m M,k K e c C In questo modo la probabilità della sorgente induce una probabilità sullo spazio dei messaggi criptati (probabilità del ricevente) grazie al Teorema di probabilità totale P(C = c) = k P(K = k) P(M = f 1 k (c))
di conseguenza si ha che P(C = c M = m) = e per il Teorema di Bayes che P(M = m C = c) = = P(M = m) k:m=f 1 k (c) k:m=f 1 k (c) P(K = k) P(C = c M = m)p(m = m) P(C = c) k:m=f 1 k (c) P(K = k) P(K = k) P(M = f 1 k (c))
Un criptosistema si dice perfetto ( o a segretezza perfetta ) se e solo se P(M = m C = c) = P(M = m) P(C = c M = m) = P(C = c)
Un criptosistema si dice perfetto ( o a segretezza perfetta ) se e solo se P(M = m C = c) = P(M = m) P(C = c M = m) = P(C = c)
Teorema (Shannon) Sia (M,C,f,f 1 ) criptosistema e sia K l insieme finito delle chiavi. Sia card(m ) = card(c) = card(k ) e P(M = m) > 0 per ogni m M. Allora tale criptosistema è perfetto se e solo se ogni chiave è usata con uguale probabilità 1/card(K ) e, per ogni m M e ogni c C, esiste una unica chiave k K tale che f k (m) = c. Il cifrario di Vernam è perfetto.