SlideShare a Scribd company logo
1 of 62
DES: applicazioni ed evoluzioni Calzetta Emilia  Cervone Vincenzo  Reti di calcolatori
Programmazione didattica ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programmazione didattica ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Crittografia: cenni storici Crittografia “ cryptos" =  segreto  “grafien” =  scrittura La crittografia tratta i metodi per rendere un messaggio “segreto” in modo da non essere comprensibile a persone non autorizzate, è una scienza antica nata dall’esigenza di riservare solo al destinatario la facoltà di comprendere il significato di un messaggio.  Nel corso della storia la crittografia è stata usata per scopi civili e militari e oggi assume importanza ancor maggiore con l’espansione delle reti. Si hanno traccia di applicazioni di crittografia (in special modo sulle comunicazioni) risalenti persino agli antichi egizi. Uno dei più antichi cifrari che si conoscano è il "Cifrario di Cesare", utilizzato dagli imperatori romani e basato sulla trasposizione delle lettere.
[object Object],[object Object],Per cifrare:  chiave = 3 CADE     FDGH Crittografia: cenni storici A  B  C  D E F  G H I  L  M N  … D E F  G H I  L  M N  O P Q …
Il cifrario ebraico (ATBASH)  La prima lettera dell'alfabeto ebraico ‘ aleph’  viene sostituita con l'ultima ‘ taw’  e la seconda ‘ beth ’ con la penultima ‘ shin’ . Da qui il nome Atbash.   Esempio : nella Bibbia, Geremia, 25:  “…  il re di Sesac ”;  si tratta invece del re di Babel. Crittografia: cenni storici
Il cifrario Albam (ROT-13) Ad ogni lettera si sostituisce quella che la segue 13 posti più avanti nell'alfabeto. I cifrari Albam e Atbash, sono reversibili, cioè, se sono applicati due (o un numero pari di) volte di seguito ad un testo, si ottiene il testo originale. Crittografia: cenni storici ESERCIZIO A B C D E F G H I J K L M N O P Q R … | |  |  | |  | | | | | | | | | | | | | N O P Q R S T U V W X Y Z A B C D E …
Crittografia moderna   ,[object Object],[object Object],[object Object],[object Object]
Un sistema crittografico è un sistema in grado di cifrare e decifrare un messaggio attraverso l’uso di un algoritmo e di una chiave (una stringa alfanumerica). Il messaggio che dovrà essere cifrato viene chiamato testo in chiaro (plaintext) mentre il risultato dell’algoritmo crittografico testo cifrato (ciphertext).  Crittografia moderna   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Requisiti di disponibilitá :  Rendere disponibili a ciascun utente abilitato le informazioni alle quali ha diritto di accedere, nei tempi e nei modi previsti. Crittografia moderna   Requisiti di integrità :  Impedire l’alterazione diretta o indiretta delle informazioni, sia da parte di utenti e processi non autorizzati, che a seguito di eventi accidentali. Se i dati vengono alterati e’ necessario fornire strumenti per poterlo verificare facilmente.
Requisiti di riservatezza :  Nessun utente deve poter ottenere o dedurre dal sistema informazioni che non è autorizzato a conoscere. Se una informazione è protetta, o se esiste una comunicazione in atto fra due utenti o processi in un certo contesto, il sistema non deve permettere di  dedurre informazioni riservate. Crittografia moderna   Requisiti di autenticazione :  Ciascun utente  deve poter verificare l’autenticità delle  informazioni. Si richiede di poter verificare se una informazione, non necessariamente riservata, e’ stata manipolata.  Requisiti di non ripudiazione :  Nessun utente deve poter ripudiare o negare messaggi da lui spediti o firmati. Questo evita che le informazioni e i messaggi siano negati dal firmatario in tempi successivi (es. firma di un contratto)
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Crittografia moderna
Schema: algoritmi simmetrici
DES: Data Encryption Standard  (storia) Il DES nasce nella metà degli anni 70 dai laboratori di ricerca dell’IBM. Nel 1972 l'NBS (National Bureau of Standards) dopo aver concluso una serie di studi sulla sicurezza informatica per il governo statunitense definì la necessità dell'individuazione di un algoritmo di cifratura in modo da favorire la comunicazione protetta tra le varie organizzazioni governative statunitensi. Dopo essersi consultata con l'NSA (National Security Agency) il 15 maggio 1972 venne presentata la prima richiesta pubblica di uno standard di cifratura definito secondo criteri rigorosi.  Nessuno degli algoritmi presentati superò i test dell'NSA e quindi il 27 agosto 1974 fù diramato un secondo bando. L’IBM sottopose come candidato il suo algoritmo di cifratura sviluppato tra il 1973 e il 1974. Questo algoritmo chiamato  Lucifer  fù sviluppato da un team guidato da  Horst Feistel   e si basava su una chiave da 128   bit.   L'attività di ricerca continuò e la chiave fù portata da 128 a 56 bit, i risultati raggiunti apparvero in una serie di pubblicazioni e documenti ufficiali.
DES: Data Encryption Standard  (storia) Il 17 marzo 1975, il DES fu pubblicato nel  Federal Register.  Lo standard proposto fù subito messo in discussione da  Martin Hellman  e  Whitfield Diffie  che citavano la brevità della lunghezza della chiave e le misteriose S-box come prova di un'interferenza impropria da parte della NSA.  Il sospetto che aleggiava era che l'algoritmo fosse stato indebolito di nascosto dall'agenzia di  intelligence  in modo che essi, ma nessun altro, potessero facilmente leggere messaggi cifrati.  Il  Select Committee on Intelligence  del Senato degli Stati Uniti esaminò le azioni della NSA per determinare se ci fosse stato un coinvolgimento improprio. Nel resoconto delle indagini pubblicato nel 1978, il Comitato scrisse, " L'NSA non alterò il progetto dell'algoritmo in alcun modo. L'IBM inventò e progettò l'algoritmo, prese tutte le decisioni pertineti e fu d'accordo nel ritenere che la lunghezza della chiave fosse più che adeguata a tutti gli usi commerciali al quale il DES era destinato ".
Nonostante le critiche, il DES fu approvato come standard federale nel novembre 1976 e pubblicato il 15 gennaio 1977 come FIPS (Federal Information Processing Standard) PUB 46. È stato in seguito riconfermato come standard nel 1983, 1988 (riesaminato come FIPS-46-1), 1993 (FIPS-46-2) e nuovamente nel 1998 (FIPS-46-3), nel quale si introduce il "Triple DES". Il 26 maggio 2002, il DES è stato finalmente rimpiazzato dall'AES, l'Advanced Encryption Standard. Ancora oggi, ad ogni modo, il DES è ancora largamente utilizzato. L'introduzione del DES è stata un catalizzatore per ricerche accademiche sulla crittografia, in particolare sui metodi di violazione dei cifrari a blocchi. Bruce Schneier scrive: " Ufficiosamente, la NSA ha definito il DES come uno dei propri più grandi errori. Se avessero saputo che i dettagli sarebbero stati rilasciati pubblicamente in modo che chiunque avrebbe potuto scrivere il software, non sarebbero stati d'accordo ."  DES: Data Encryption Standard  (storia)
Nel 1990 in seguito alla pubblicazione da parte di Eli Biham e Adi Shamir della crittanalisi differenziale, un metodo per violare i cifrari a blocchi, si scoprì che Le S-box del DES erano molto resistenti agli attacchi facendo fortemente sospettare che l'IBM conoscesse le techiche di crittoanalisi differenziale già negli anni '70.  Quando nel 1994, furono pubblicati i criteri di progetto originali delle S-box si capì che l'IBM aveva scoperto la crittanalisi differenziale negli anni '70 e che dopo aver reso sicuro il DES, gli fu richiesto dalla NSA di mantenere segreta questa tecnica.  Q uesto accadde perché la crittanalisi differenziale può essere una tecnica molto potente usata contro vari schemi e quindi avrebbe potuto generare problemi di sicurezza nazionale. DES: Data Encryption Standard  (storia)
DES: struttura generale   Il DES codifica blocchi di 64 bit e usa una chiave di 56 bit.  La chiave in realtà è lunga 64 bit ma solo 56 di questi sono effettivamente  utilizzati dall'algoritmo in quanto 8 bit sono utilizzati solo per il controllo di parità
La chiave (k) è memorizzata sfruttando 64 bit, dove l'ottavo, il 16-esimo, ... , il 64-esimo, sono i bit di parità per i sette bit precedenti. Possiamo immaginare i 64 bit della chiave k divisi in 8 byte, dove per ognuno di questi l'ottavo bit definisce la parità del byte. Quindi concretamente ci sono solo 56 bit su cui può variare la chiave per un totale di 2 56  possibili combinazioni XOR (0+0=0, 1+0=1, 0+1=1, 1+1=0) DES: struttura generale
DES: struttura generale   permutazione iniziale di 64 bit   le sedici iterazioni che trasformano la stringa in input sono uguali nel senso che la funzione che le realizza è sempre la stessa (ad ogni iterazione cambia solo la chiave utilizzata) scambia i 32 bit più a sinistra con quelli più a destra  della  stringa prodotta come output alla 16-esima iterazione sfruttando la sola chiave k, produce le chiavi k1, k2, ..., k16 di 48 bit ciascuna, per le iterazioni da 1 a 16.
DES: Permutazione IP   Sia x un testo in chiaro di 64 bit: l'algoritmo costruisce una stringa binaria permutando la stringa iniziale mediante la permutazione iniziale fissata IP 1 2 50 58 bit iniziali bit permutati 64 ... Il primo valore della tabella specifica che il primo bit della stringa permutata IP(x) è il 58-esimo bit della stringa da permutare x; il secondo elemento della tabella, 50, ne specifica il secondo e così via.
Passo 3: L'output dell'algoritmo è ottenuto applicando la permutazione IP -1  a R 16 L 16 . Si noti l'ordine inverso delle ultime due stringhe di bit R 16  e L 16  dovuto allo scambio di 32 bit  1 2 8 40 bit iniziali bit permutati 64 ... DES: permutazione inversa IP -1   Questa tabella si legge nello stesso modo della precedente. Queste permutazioni sono solo una scelta dello standard, potremmo infatti fare a meno della permutazione iniziale e finale senza perdere in sicurezza.
Il DES effettua 16 iterazioni. Per 1    i    16 l'input della i-esima iterazione è una stringa di 64 bit divisa in due parti, L i-1  e R i-1 , ognuna di 32 bit (chiamate rispettivamente parte sinistra e parte destra della stringa). I valori di output L i  e R i  sono prodotti in base alla seguente regola:  L i =R i-1  e R i =L i-1    f(R i-1  , k i ) DES: iterazioni   L'operatore    denota la funzione xor bit a bit delle due stringhe, ed f è una funzione che, data la chiave k i  e la sottostringa R i-1  , produce una stringa lunga 32 bit.  k 1 , k 2 , ..., k 16  sono le chiavi prodotte dal processo di schedulazione. All'i-esima iterazione verrà usata la sola chiave k i . singola iterazione
DES: funzione di Feistel   La funzione f prende in input una stringa A di 32 bit, una stringa K di 48 bit, e fornisce in output una stringa di 32 bit.   La stringa A di 32 bit viene espansa dalla funzione E in una stringa 48 bit. Viene computato lo xor bit a bit tra K e E(A), che è una stringa di 48 bit. La sequenza viene divisa in 8 sottosequenze di 6 bit ciascuna, dette sottosequenze B 1 , B 2 , ..., B 8 .  L'S-box Si (per 1    i    8) prende in input Bi (a 6 bit) e da in output una sequenza a 4 bit, che chiamiamo Ci.  La stringa C 1 ,C 2 ,...,C 8  (a 32 bit) viene permutata tramite la permutazione P e questo è il valore f(A, K).   K
La funzione E duplica e permuta 16 bit dei 32 di A  in base allo schema della  tabella E Espansione (E)   e permutazione (P)   Tabella E Tabella P La tabella P specifica la permutazione P
L'unico punto in cui il sistema DES non utilizza funzioni di tipo lineare (cioè gli xor, le permutazioni e le espansioni) è nelle S-box, che costituiscono il fulcro dell'algoritmo.  DES: S-BOX   S-BOX S1 Dato Bi (l'input a 6 bit dell‘S-box Si), il primo e l'ultimo bit di Bi vengono interpretati come indice di riga, mentre i bit centrali come indice di colonna. Si consulta la tabella Si alle coordinate prescritte e il valore trovato nell'S-box è un decimale la cui conversione binaria dà i 4 bit output
Box  S1 Input B 1  = 101110 10 primo ed ultimo bit output S 1 = 11 ---> in binario = 1011 DES: S-BOX (esempio)
DES: proprietà delle S-box   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DES: schedulazione delle chiavi   Le chiavi usate durante i vari round sono ricavate dalla chiave k di 64 bit escludendo gli 8 bit utilizzati per il controllo di parità e permutando i rimanenti 56 bit tramite la permutazione PC1 che calcolerà PC1(k) = C 0 D 0  dove C 0  e D 0  sono i primi e gli ultimi 28 bit di PC1(k).  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Permutazione PC1   1 2 1 64 bit iniziali bit dopo permutazione 56 57 3 ... I bit in posizione  8, 16, 24, 32, 40, 48, 56, 64 sono di parità e non compaiono, essi servono per rivelare un errore in ogni byte.
La funzione shift a sinistra LS i   iterazione shift Lo shift LSi riguarda una sola posizione alle iterazioni 1, 2, 9 e 16, e due posizioni a tutte le altre iterazioni Totale shift nelle 16 iterazioni = 28 posizioni
Compressione-permutazione PC2   1 2 1 56 bit iniziali bit dopo  compressione   8 bit soppressi in posizione 9, 18, 22, 25, 35, 38, 43 e 54   48 14 3 ...
Decifratura del DES   IP IP  -1 iterazione 1 iterazione 16 testo cifrato scambio ... schedulazione chiave Chiave k k 16 k 1 Per decifrare si usa lo stesso algoritmo e la stessa chiave K usati per cifrare, eccezion fatta per la schedulazione delle chiavi ad ogni round, che è invertita.   ESERCIZIO
l'ECB (Electronic Codebook chaining).  Un messaggio in chiaro x 1 x 2 …x n , dove ogni x i  rappresenta un blocco di 64 bit) viene cifrato applicando ripetutamente ad ogni blocco x i  l'algoritmo DES, sempre con la stessa chiave k, producendo un testo cifrato y 1 y 2 …y n . Quindi i valori dei blocchi y i  sono dati da: y i  = DES k (x i )   Modalità del DES: ECB
L'unico problema con questo metodo si ha quando il messaggio è costituito da un numero di bit che non è un multiplo di 64, cioè quando l'ultimo blocco non contiene esattamente 64 bit, ma di meno. La soluzione per questo caso non è definita dallo standard, ma bisogna convenire su come risolverlo. L'idea potrebbe essere quella di inserire del testo opportuno alla fine del blocco, in modo tale che, in fase di decifratura, possa essere semplice distinguere il testo aggiunto da quello originale.  Una possibile soluzione è quella di aggiungere al messaggio originale la sequenza 100...0, in modo da completare l'ultimo blocco a 64 bit. Naturalmente, questa operazione deve essere fatta anche quando l'ultimo blocco è già di 64 bit, in modo da stabilire un criterio generale. Questo significa che, in fase di decifratura si sa con certezza che la stringa finale del messaggio decifrato, cioè la stringa 100...0, è stata aggiunta in fase di cifratura, e quindi non viene considerata come facente parte del messaggio originario.   Modalità   del DES: ECB
L'operazione di decifratura considera un blocco alla volta del messaggio, così come accadeva per la cifratura, applicando però in questo caso l'algoritmo di decifratura DES.   Modalità   del DES: ECB Il vantaggio di questo metodo sta nella sua rapidità di esecuzione.  Lo svantaggio è dato dal fatto che, durante la trasmissione del messaggio, potrebbe verificarsi sia la perdita di un blocco che l'attacco da parte di un nemico.  In particolare, quest'ultimo potrebbe sostituire un blocco con un altro, senza la possibilità che colui che riceve il messaggio possa accorgersene. Per esempio egli potrebbe cambiare in un messaggio il blocco "do" con "do not" senza essere scoperto. Questo è dovuto alla mancanza di dipendenza tra i vari blocchi
Modalità del DES: CBC   CBC (Cipher Block Chaining) Dato un messaggio in chiaro x 1 x 2  ...x n  ed una chiave nascosta k, in questa modalità un generico y i  è dato da: y i  = DES k (y i-1     x i ), 1    i    n  con y 0  = IV(vettore di inizializzazione a 64 bit).   Quest'ultimo viene poi utilizzato per fare lo xor bit a bit col blocco successivo del messaggio in chiaro x 2 , quindi si applica alla stringa così ottenuta l'algoritmo DES sempre con la stessa chiave k, ottenendo il blocco cifrato y 2  e così via. Con questo metodo, si definisce in qualche modo un legame tra y i  ed il blocco precedente y i-1 .    Il procedimento di cifratura considera inizialmente il vettore IV, di 64 bit, quindi effettua lo xor bit a bit tra questi ed i primi 64 bit del messaggio in chiaro, infine applica alla stringa così ottenuta l'algoritmo di cifratura DES con chiave k, ottenendo il blocco cifrato y 1 .
Per decifrare operiamo all'inverso del caso della cifratura, cioè si applica y 1  come input del DES -1  (algoritmo di decifratura) con la stessa chiave k, ottenendo quindi la stringa che precedentemente definiva lo xor bit a bit tra x 1  ed IV, che costituiva l'input del DES. Ora poiché si vuole calcolare x 1  si effettua l'operazione inversa, cioè lo xor bit a bit del valore in output del DES-1 con IV e ottenendo x 1 . In generale quindi:  x i  = y i-1     DES k -1(y i ) per 1    i    n   Modalità del DES: CBC   Il vantaggio di questo schema è che se si cambia un solo bit del messaggio originario cambia di conseguenza anche la parte rimanente del messaggio. Questa caratteristica elimina la possibilità di un attacco tramite sostituzione di un blocco. Infatti, in una tale evenienza il messaggio sarebbe irrimediabilmente compromesso.  Lo svantaggio di tale metodo è che in esso vengono eseguite più operazioni rispetto all'ECB, e quindi rispetto ad esso è più lento .
Modalità del DES: CFB   CFB (Cipher Feedback) In questa modalità viene fornito un vettore di inizializzazione IV, che è una stringa di 64 bit. Sia x 1 x 2 …x n  il messaggio in chiaro. Allora il generico y i  è definito da: y i  = x i     DES k  (y i-1 ) con 1    i    n
Esiste una versione più generale detta Cipher Feedback con j bit. Per essa si considera inizialmente una stringa di 64 bit (costituita dal vettore IV), che si può immaginare suddivisa in due parti, di 64-j bit a sinistra e j bit a destra. Quindi si cifra tale stringa usando l'algoritmo di cifratura DES con chiave k. Modalità del DES: CFB j-bit Ad ogni passo, da j bit del testo in chiaro otteniamo j bit del testo cifrato.  Della stringa cifrata così ottenuta vengono considerati solo i j bit più a sinistra. Quindi si effettua lo xor bit a bit tra questi j bit ed i prossimi j bit del messaggio in chiaro, ottenendo j bit del messaggio cifrato. Tali j bit così definiti rientrano nel circuito, in quanto al passo successivo il vettore originale di 64 bit viene shiftato di j posizioni a sinistra, e gli ultimi j bit di tale vettore diventano i j bit del messaggio cifrato.
La decifratura avviene in maniera analoga alla cifratura. E’ importante osservare che per la decifratura viene usato ancora l’algoritmo DES e non il DES -1 .  L'unica variante significativa in tale schema è data dal fatto che i j bit del messaggio cifrato, vengono utilizzati per effettuare lo xor bit a bit con i j bit più a sinistra dell'output del DES, oltre a costituire in seguito i nuovi j bit più a destra del vettore iniziale (su cui viene applicato l'algoritmo DES), definendo così j bit del messaggio in chiaro. Modalità del DES: CFB j-bit Il vantaggio di questo schema è dato dal fatto che il valore di j può essere scelto a piacimento.  Per esempio alcune applicazioni scelgono j = 8, che significa cifrare 8 bit (1 byte) alla volta del messaggio in chiaro. Questa scelta si  presta particolarmente alla cifratura on-line; infatti con j = 8 può essere trasmesso un carattere alla volta.   Lo svantaggio di questo metodo è che per valori di j piccoli esso diventa sicuramente più oneroso di quelli visti in precedenza.
Anche in questa modalità si utilizza una stringa iniziale di 64 bit (vettore IV). Come primo passo viene costruita la sequenza:  z 0 z 1 z 2 z 3 …. dove  z 0  = IV e z i  = DES k (z i -1) con chiave k segreta.  Come si può notare tale stringa è del tutto indipendente dal messaggio in chiaro.  Quindi sia x 1 x 2 ...x n  il messaggio in chiaro; il messaggio cifrato è definito da y 1 y 2 …y n  dove: y i  = x i   z i   Modalità del DES:  Output Feedback  Anche per tale metodo c'è la variante a j bit, che è analoga a quella del CFB, l'unica diversità sta nel fatto che il feed-back (cioè il riutilizzo di una certa parte dell'informazione) non riguarda j bit del testo cifrato, ma i j bit più a sinistra della stringa in output prodotta dal DES.
Per la decifratura si può notare che la prima parte del metodo è uguale a quello che viene utilizzata per effettuare la cifratura (ciò è valido dal momento che la sequenza del messaggio in chiaro generata da questa prima parte è indipendente dal messaggio in chiaro, così come dal messaggio cifrato).  Quindi, ad ogni passo si considerano i j bit più a sinistra delle stringhe fornite in output dall'algoritmo DES, e si effettua lo xor bit a bit con j bit del messaggio cifrato, ottenendo così j bit del messaggio in chiaro.   Modalità del DES:  Output Feedback  ESERCIZIO
Applicazioni del DES   L'algoritmo DES può essere usato come standard sia per la cifratura che per l'autenticazione dei dati. Cifratura Dati :  è semplice vedere come il DES può essere usato per cifrare un testo in chiaro di 64 bit, tuttavia la lunghezza dei testi è raramente limitata a 64 bit. Per testi più lunghi possono essere utilizzate le modalità di operative viste in precedenza. Ognuna di tali modalità ha vantaggi e svantaggi.  Per esempio l'ECB è eccellente per la cifratura delle chiavi; CFB è usato tipicamente per cifrare caratteri individuali; OFB è tipicamente usato per cifrare comunicazioni via satellite (in cui è necessario ridurre al minimo la possibilità di errori alla stazione ricevente); ed infine entrambi CBC e CFB possono essere usati per l'autenticazione di dati.  Tuttavia per essi non esistono delle analisi formali che dimostrino qual'è il più sicuro, a meno che non si faccia uso di ipotesi molto restrittive.
Applicazioni del DES   Autenticazione Dati : Originariamente il DES fu introdotto per permettere la cifratura e la decifratura di dati usati sul computer. Tuttavia la sua applicazione si è estesa anche alla autenticazione dei dati.  Tale necessità è nata dalla difficoltà di riconoscere se in un messaggio c'erano state delle modifiche o meno, durante la fase di trasmissione. Più in particolare, nel caso in cui i dati erano cifrati con una delle due modalità CFB o CBC, allora queste possono essere usate per produrre un Codice di Autenticazione del Messaggio (MAC).  Il MAC viene posto alla fine del messaggio in chiaro, ed è usato per convincere chi riceve il messaggio che esso non è stato alterato da nessuno. Così il MAC garantisce l'integrità (o autenticità) del messaggio (ma non la sua segretezza).
y 1 ,y 2 ,…y n Applicazioni del DES: MAC   La modalità di operazione CBC viene usata per produrre un MAC (Message Authentication Code) nel seguente modo:  x 1 ,x 2 ,…x n y 1 ,y 2 ,…y n MAC=   y n x 1 ,x 2 ,…x n ,y n x 1 ,x 2 ,…x n ,y n x 1 ,x 2 ,…x n y n Si noti che un nemico che vuole attaccare il sistema non può produrre un MAC valido poiché non conosce la chiave di cifratura. Quindi se Carmen intercetta il messaggio x 1 ,x 2 ... x n ,y n  e cambia uno o più bit di tale messaggio, è altamente improbabile che riesca a cambiare anche il  MAC evitando che Bob si accorga delle modifiche.
x 1 ,x 2 ,…x n ,y n Applicazioni del DES   Cifratura ed Autenticazione dei Dati : è spesso desiderabile combinare autenticità e segretezza. Questo potrebbe essere fatto usando due chiavi:  y 1 ,y 2 ,…y n x 1 ,x 2 ,…x n y 1 ,y 2 ,…y n MAC=   y n x 1 ,x 2 ,…x n ,y n x 1 ,x 2 ,…x n y n
Applicazioni del DES   Trasferimento Elettronico di Fondi (EFT) (ANSI X9.9) :  probabilmente l'uso più significativo del DES è quello riguardante la protezione dei messaggi di trasferimento, relativi a vendite al dettaglio ed all'ingrosso. I dati protetti tramite DES sono relativi a trasferimenti di fondi che variano da $50 a svariati milioni di dollari.  In particolare il governo degli Stati Uniti è responsabile di trasferimenti di miliardi di dollari al giorno. Per far sì che questi trasferimenti siano sicuri, il Dipartimento del Tesoro Americano ha dato inizio alla politica precedentemente citata sull'autenticazione dei messaggi EFT.  Anche la Banca federale coopera con il Tesoro per la buona riuscita di queste operazioni. Uno dei sistemi che si sta considerando consiste di strumenti manuali contenenti chiavi DES usati nella cifratura di messaggi finanziari. Questi strumenti forniscono la chiave per l'autenticazione delle firme di documenti cartacei.
Applicazioni del DES   Immagazzinamento Dati e Sistemi di Posta (ANSI X9.19) :  il DES viene utilizzato per la cifratura di password per l'accesso a sistemi computerizzati. L'algoritmo confronta la cifratura della stringa data in input come password con quella conservata in memoria, ed attiva o nega l'accesso al sistema a seconda che il match fra le due stringhe abbia o meno esito positivo.  Il DES può anche essere utilizzato per la protezione di file in memoria. Una pubblicazione speciale dell'NBS descrive un sistema di notarizzazione di chiavi che può essere integrato in un sistema computerizzato, per proteggere file da modifiche e divulgazioni e per provvedere a una firma digitale usando il DES.  Il sistema di notarizzazione che incorpora il DES può anche essere usato congiunto ad un sistema di posta per provvedere della posta sicura. Un software di cifratura/decifratura che contiene le informazioni necessarie a decifrare ed autenticare un file di posta è automaticamente aggiunto al file che è trasmesso al ricevente. Quest'ultimo in seguito potrà decifrare ed autenticare il file facilmente sfruttando quest'informazione.
DES: Crittoanalisi   “ La sicurezza di un sistema crittografico deve dipendere solo dalla segretezza della chiave   e non dalla segretezza del metodo ”  Auguste Kerckhoffs von Nieuwenhof (1835-1903) La sicurezza di un crittosistema non deve dipendere dalla segretezza dell’algoritmo usato, ma solo dalla segretezza della chiave Questo principio, apparso per la prima volta nel 1883 nel libro «La criptographie militarie» di Kerckhoffs un filologo olandese, è fondamentale per una corretta visione del problema sicurezza. Per poter comprendere meglio l’aspetto della sicurezza di un sistema crittografico dobbiamo metterci nei panni della «spia» che intercetta il messaggio. La spia cercherà di decrittare (questo è il termine esatto) il messaggio e quindi dovrà conoscere l’algoritmo utilizzato per la cifratura e la chiave. Un principio fondamentale della crittologia moderna afferma che:
Un primo semplice attacco è quello di forza bruta: provare tutte le possibili chiavi. La lunghezza della chiave determina il numero di chiavi possibili e quindi la fattibilità dell'attacco. Lo spazio delle chiavi del DES è formato da 2 56  elementi, che in notazione decimale equivale a circa 72 milioni di miliardi di combinazioni distinte, per cui un ipotetico computer a 500 MHz che può sondare una chiave ad ogni ciclo di clock impiegherebbe 144 milioni di secondi ad esaminarle tutte.  Tuttavia, a dispetto delle 2 56  chiavi possibili, in media bastano 2 55  tentativi. Questo consegue dalla proprietà di complementazione del DES: C = DES K (M) allora ¬C = DES ¬K (¬M).  DES: Crittoanalisi   Ma anche supponendo che sia sufficiente esaminare solo la metà delle chiavi occorrerebbero comunque ben 834 giorni, pari a 2 anni e 3 mesi di lavoro continuativo!
A livello teorico, furono avanzate varie proposte per un computer in grado di violare il DES.  Nel 1977, Diffie ed Hellman proposero una macchina del costo stimato di 20 milioni di dollari in grado di trovare una chiave DES in un solo giorno. Nel 1993 Wiener propose una macchina per la ricerca della chiave, del costo di un milione di dollari, in grado di trovarla in 7 ore.  La vulnerabilità del DES fu dimostrata praticamente nel 1998 quando fu costruita appositamente la DES-Crack dall‘   Electronic Frontier Foundation (EFF) ,  un gruppo per la difesa dei diritti civili nel ciberspazio, del costo di circa 250.0000 dollari. Fu costruita per dimostrare che il DES era violabile in pratica, non solo in teoria. Questa macchina violò con la sola forza bruta una chiave in pochi giorni di ricerca. Inoltre è stata pubblicata la   documentazione completa  del progetto DES-Crack in modo da consentire ad altri gruppi di scienziati di riprodurre e di migliorare la macchina realizzata dall'EFF.  DES: Crittoanalisi
Il miglior attacco al DES conosciuto è senza dubbio quello definito dal metodo della Crittoanalisi differenziale, introdotto da E. Biham e A. Shamir.  Esso defininisce un attacco che si presta con successo alla rottura del DES nell'ipotesi che il numero di iterazioni sia ridotto (il DES a 8 iterazioni può essere rotto in un paio di minuti su un personal computer). Tuttavia quando il numero di iterazioni sale a 16 o più, attacchi di questo tipo hanno complessità uguale a quella che si avrebbe con un algoritmo di ricerca nello spazio delle chiavi.  Per violare tutti i 16 cicli, la crittanalisi differenziale richiede 247 testi in chiaro scelti (chosen plaintext) DES: Crittoanalisi   ESERCIZIO
Weak-Key Tra le 256 chiavi possibili ve ne sono di particolari per le quali le sottochiavi prodotte dalla fase di schedulazione sono tutte uguali. Queste chiavi sono dette weak key (chiavi deboli). Quindi se cifriamo un testo cifrato con una weak key otteniamo il testo in chiaro.  Questo succede perché, visto che le sottochiavi prodotte dal processo di schedulazione sono le stesse sia nel caso della cifratura che della decifratura, queste due operazioni coincidono. Le weak key sono quelle composte da tutti 0, tutti 1, oppure da una metà da tutti 0 e l'altra da tutti 1.  Tali chiavi diminuiscono la sicurezza del sistema in quanto basta trovare una sola sottochiave k i  per scoprire tutte le altre.   Le quattro weak key in rappresentazione esadecimale
Critiche al DES   ,[object Object],[object Object],[object Object]
Esercizi   Siano x 1 …x n  n blocchi di 64 bit e siano y 1 …y n  gli n blocchi ottenuti cifrando x 1 …x n  con DES. Si supponga che a causa di un errore di trasmissione, il blocco y 1  non sia trasmesso correttamente (alcuni 0 diventano 1 o viceversa). Analizzare quanti e quali blocchi sono decifrati non correttamente se la modalità operativa utilizzata per la cifratura è:  a. ECB b. CBC c. CFB d. OFB Soluzione: per le modalità ECB e OFB, soltanto il primo blocco sarà decifrato non correttamente; per le modalità CBC e CFB, i primi due blocchi saranno decifrati non correttamente.
cifratura decifratura DES x 1 x 2 x n y 1 y 2 y n …  DES DES DES -1 y 1 y 2 y n …  DES -1 DES -1 x 1 x 2 x n Non corretto Electronic codebook chaining (ECB)   Non corretto corretti
decifratura y 1 DES DES DES y 2 x 1 x 2 x n k k k IV … … x 1 DES -1 DES -1 DES -1 x 2 y 1 y 2 y n k k k IV … … cifratura x n y n Non corretto Cipher Block Chaining   CBC   Non corretti corretti
Cipher feedback   CFB   y 1 y n DES IV DES x 1 x n DES … k k k x 2 cifratura decifratura x n DES IV DES y n DES … k k k y 2 x 1 y 1 y 2 x 2 Non corretto Non corretti corretti
64-bit Output feedback   Cifratura   Decifratura DES k 64 bit del  testo  in chiaro shift di 64 bit DES 64 bit del  testo  in chiaro k shift di 64 bit 64 bit testo cifrato 64 bit testo cifrato y 1  non corretto x 1  x 2  … x n corretti non corretto
Si consideri il crittosistema DES. E’ possibile utilizzare la proprietà del complemento per migliorare il running time della ricerca esaustiva in un attacco known plaintext? E in un attacco chosen plaintext? Giustificare le risposte. Soluzione:  Non è noto come sia possibile utilizzare la proprietà del complemento per migliorare il running time della ricerca esaustiva in un attacco known plaintext. Invece, tale proprietà consente il miglioramento del running time della ricerca esaustiva di un fattore ½ nel caso di un attacco chosen plaintext. Infatti, supponiamo che k sia la chiave segreta da trovare. In un attacco chosen plaintext, si considerino due coppie (m, c1) e (m’, c2), dove m’ indica il complemento di m. Per la proprietà del complemento, per ogni possibile chiave h si ha c=DES(h,m) e c’=DES(h’,m’), dove c’ e h’ indicano il complemento di c e h, rispettivamente. Pertanto, se c  c1, allora k  h e se c’  c2 allora k  h’. Quindi le due chiavi candidate h e h’ possono essere eliminate mediante una singola cifratura DES durante la ricerca esaustiva.  Esercizi
Esercizi Quindi dalla stringa R 16 L 16  possiamo risalire alla stringa R 15 L 15  utilizzando la sottochiave k 16 . Questo è vero per tutte le iterazioni, quindi utilizzando lo stesso algoritmo di cifratura DES, con le sottochiavi schedulate in ordine inverso, possiamo effettuare la decifratura DES. Dimostrare che la decifratura DES può essere effettuata applicando l’algoritmo di cifratura DES al testo cifrato con le chiavi schedulate in ordine inverso. Soluzione: Nella fase di cifratura DES dopo avere effettuato lo scambio di 32 bit successivo alla sedicesima iterazione, abbiamo la stringa di 64 bit R 16 L 16 , dove L 16 = R 15 R 16 =L 15     f(R 15 ,k 16 ) da cui otteniamo: R 15 = L 16 L 15 =R 16     f(R 15 ,k 16 ) = R 16     f(L 16 ,k 16 ).

More Related Content

Viewers also liked (7)

Storia di Linux
Storia di LinuxStoria di Linux
Storia di Linux
 
ISDN
ISDNISDN
ISDN
 
Algoritmi di ordinamento
Algoritmi di ordinamento Algoritmi di ordinamento
Algoritmi di ordinamento
 
SeaLab
SeaLabSeaLab
SeaLab
 
Circuito 3-STATE
Circuito 3-STATECircuito 3-STATE
Circuito 3-STATE
 
2 .Introduzione a internet
2 .Introduzione a internet2 .Introduzione a internet
2 .Introduzione a internet
 
Introduzione al computer e a Internet
Introduzione al computer e a InternetIntroduzione al computer e a Internet
Introduzione al computer e a Internet
 

Similar to DES

02 - Paolo Lessio, Processo civile telematico
02 - Paolo Lessio, Processo civile telematico02 - Paolo Lessio, Processo civile telematico
02 - Paolo Lessio, Processo civile telematico
Andrea Rossetti
 
Crittografia Firma Digitale
Crittografia Firma DigitaleCrittografia Firma Digitale
Crittografia Firma Digitale
Mario Varini
 
Crittografia firma digitale
Crittografia firma digitaleCrittografia firma digitale
Crittografia firma digitale
jamboo
 
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - trascrizione
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - trascrizioneLinuxBeach 2006 - Criptografia e firma digitale con GnuPG - trascrizione
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - trascrizione
Maurizio Antonelli
 
Data hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open sourceData hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open source
Marco Ferrigno
 
Crittografia Quantistica: Fisica Teorica al Servizio dell’Informatica Applicata
Crittografia Quantistica: Fisica Teorica al Servizio dell’Informatica ApplicataCrittografia Quantistica: Fisica Teorica al Servizio dell’Informatica Applicata
Crittografia Quantistica: Fisica Teorica al Servizio dell’Informatica Applicata
ameft
 
La crittografia
La crittografiaLa crittografia
La crittografia
lukarosati
 

Similar to DES (20)

Algoritmi di cifratura DES (a blocchi) e DES OFB (a stream)
Algoritmi di cifratura DES (a blocchi) e DES OFB (a stream)Algoritmi di cifratura DES (a blocchi) e DES OFB (a stream)
Algoritmi di cifratura DES (a blocchi) e DES OFB (a stream)
 
Paolo Lessio, Processo Civile Telematico 2
Paolo Lessio, Processo Civile Telematico 2Paolo Lessio, Processo Civile Telematico 2
Paolo Lessio, Processo Civile Telematico 2
 
02 - Paolo Lessio, Processo civile telematico
02 - Paolo Lessio, Processo civile telematico02 - Paolo Lessio, Processo civile telematico
02 - Paolo Lessio, Processo civile telematico
 
Corso IFTS CyberSecurity Expert
Corso IFTS CyberSecurity ExpertCorso IFTS CyberSecurity Expert
Corso IFTS CyberSecurity Expert
 
Crittografia DEFINTIIVA
Crittografia DEFINTIIVACrittografia DEFINTIIVA
Crittografia DEFINTIIVA
 
Crittografia Firma Digitale
Crittografia Firma DigitaleCrittografia Firma Digitale
Crittografia Firma Digitale
 
Crittografia firma digitale
Crittografia firma digitaleCrittografia firma digitale
Crittografia firma digitale
 
Crittografia
Crittografia Crittografia
Crittografia
 
Crittografia
CrittografiaCrittografia
Crittografia
 
Scacco matto ai crytpo malware (milano)
Scacco matto ai crytpo malware (milano)Scacco matto ai crytpo malware (milano)
Scacco matto ai crytpo malware (milano)
 
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - trascrizione
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - trascrizioneLinuxBeach 2006 - Criptografia e firma digitale con GnuPG - trascrizione
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - trascrizione
 
Data hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open sourceData hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open source
 
Workshop sulla Sicurezza Informatica
Workshop sulla Sicurezza InformaticaWorkshop sulla Sicurezza Informatica
Workshop sulla Sicurezza Informatica
 
Crittografia Quantistica: Fisica Teorica al Servizio dell’Informatica Applicata
Crittografia Quantistica: Fisica Teorica al Servizio dell’Informatica ApplicataCrittografia Quantistica: Fisica Teorica al Servizio dell’Informatica Applicata
Crittografia Quantistica: Fisica Teorica al Servizio dell’Informatica Applicata
 
La crittografia
La crittografiaLa crittografia
La crittografia
 
Data Hiding
Data HidingData Hiding
Data Hiding
 
Sgi breve storia della crittografia ep II
Sgi   breve storia della crittografia  ep IISgi   breve storia della crittografia  ep II
Sgi breve storia della crittografia ep II
 
Cybercrime: investigazione forense e mitigazione (p.1)
Cybercrime: investigazione forense e mitigazione (p.1)Cybercrime: investigazione forense e mitigazione (p.1)
Cybercrime: investigazione forense e mitigazione (p.1)
 
Crittografia
CrittografiaCrittografia
Crittografia
 
Public Key Infrastructure
Public Key InfrastructurePublic Key Infrastructure
Public Key Infrastructure
 

DES

  • 1. DES: applicazioni ed evoluzioni Calzetta Emilia Cervone Vincenzo Reti di calcolatori
  • 2.
  • 3.
  • 4. Crittografia: cenni storici Crittografia “ cryptos" = segreto “grafien” = scrittura La crittografia tratta i metodi per rendere un messaggio “segreto” in modo da non essere comprensibile a persone non autorizzate, è una scienza antica nata dall’esigenza di riservare solo al destinatario la facoltà di comprendere il significato di un messaggio. Nel corso della storia la crittografia è stata usata per scopi civili e militari e oggi assume importanza ancor maggiore con l’espansione delle reti. Si hanno traccia di applicazioni di crittografia (in special modo sulle comunicazioni) risalenti persino agli antichi egizi. Uno dei più antichi cifrari che si conoscano è il "Cifrario di Cesare", utilizzato dagli imperatori romani e basato sulla trasposizione delle lettere.
  • 5.
  • 6. Il cifrario ebraico (ATBASH) La prima lettera dell'alfabeto ebraico ‘ aleph’ viene sostituita con l'ultima ‘ taw’ e la seconda ‘ beth ’ con la penultima ‘ shin’ . Da qui il nome Atbash. Esempio : nella Bibbia, Geremia, 25: “… il re di Sesac ”; si tratta invece del re di Babel. Crittografia: cenni storici
  • 7. Il cifrario Albam (ROT-13) Ad ogni lettera si sostituisce quella che la segue 13 posti più avanti nell'alfabeto. I cifrari Albam e Atbash, sono reversibili, cioè, se sono applicati due (o un numero pari di) volte di seguito ad un testo, si ottiene il testo originale. Crittografia: cenni storici ESERCIZIO A B C D E F G H I J K L M N O P Q R … | | | | | | | | | | | | | | | | | | N O P Q R S T U V W X Y Z A B C D E …
  • 8.
  • 9.
  • 10. Requisiti di disponibilitá : Rendere disponibili a ciascun utente abilitato le informazioni alle quali ha diritto di accedere, nei tempi e nei modi previsti. Crittografia moderna Requisiti di integrità : Impedire l’alterazione diretta o indiretta delle informazioni, sia da parte di utenti e processi non autorizzati, che a seguito di eventi accidentali. Se i dati vengono alterati e’ necessario fornire strumenti per poterlo verificare facilmente.
  • 11. Requisiti di riservatezza : Nessun utente deve poter ottenere o dedurre dal sistema informazioni che non è autorizzato a conoscere. Se una informazione è protetta, o se esiste una comunicazione in atto fra due utenti o processi in un certo contesto, il sistema non deve permettere di dedurre informazioni riservate. Crittografia moderna Requisiti di autenticazione : Ciascun utente deve poter verificare l’autenticità delle informazioni. Si richiede di poter verificare se una informazione, non necessariamente riservata, e’ stata manipolata. Requisiti di non ripudiazione : Nessun utente deve poter ripudiare o negare messaggi da lui spediti o firmati. Questo evita che le informazioni e i messaggi siano negati dal firmatario in tempi successivi (es. firma di un contratto)
  • 12.
  • 14. DES: Data Encryption Standard (storia) Il DES nasce nella metà degli anni 70 dai laboratori di ricerca dell’IBM. Nel 1972 l'NBS (National Bureau of Standards) dopo aver concluso una serie di studi sulla sicurezza informatica per il governo statunitense definì la necessità dell'individuazione di un algoritmo di cifratura in modo da favorire la comunicazione protetta tra le varie organizzazioni governative statunitensi. Dopo essersi consultata con l'NSA (National Security Agency) il 15 maggio 1972 venne presentata la prima richiesta pubblica di uno standard di cifratura definito secondo criteri rigorosi. Nessuno degli algoritmi presentati superò i test dell'NSA e quindi il 27 agosto 1974 fù diramato un secondo bando. L’IBM sottopose come candidato il suo algoritmo di cifratura sviluppato tra il 1973 e il 1974. Questo algoritmo chiamato Lucifer fù sviluppato da un team guidato da Horst Feistel e si basava su una chiave da 128 bit. L'attività di ricerca continuò e la chiave fù portata da 128 a 56 bit, i risultati raggiunti apparvero in una serie di pubblicazioni e documenti ufficiali.
  • 15. DES: Data Encryption Standard (storia) Il 17 marzo 1975, il DES fu pubblicato nel Federal Register. Lo standard proposto fù subito messo in discussione da Martin Hellman e Whitfield Diffie che citavano la brevità della lunghezza della chiave e le misteriose S-box come prova di un'interferenza impropria da parte della NSA. Il sospetto che aleggiava era che l'algoritmo fosse stato indebolito di nascosto dall'agenzia di intelligence in modo che essi, ma nessun altro, potessero facilmente leggere messaggi cifrati. Il Select Committee on Intelligence del Senato degli Stati Uniti esaminò le azioni della NSA per determinare se ci fosse stato un coinvolgimento improprio. Nel resoconto delle indagini pubblicato nel 1978, il Comitato scrisse, " L'NSA non alterò il progetto dell'algoritmo in alcun modo. L'IBM inventò e progettò l'algoritmo, prese tutte le decisioni pertineti e fu d'accordo nel ritenere che la lunghezza della chiave fosse più che adeguata a tutti gli usi commerciali al quale il DES era destinato ".
  • 16. Nonostante le critiche, il DES fu approvato come standard federale nel novembre 1976 e pubblicato il 15 gennaio 1977 come FIPS (Federal Information Processing Standard) PUB 46. È stato in seguito riconfermato come standard nel 1983, 1988 (riesaminato come FIPS-46-1), 1993 (FIPS-46-2) e nuovamente nel 1998 (FIPS-46-3), nel quale si introduce il "Triple DES". Il 26 maggio 2002, il DES è stato finalmente rimpiazzato dall'AES, l'Advanced Encryption Standard. Ancora oggi, ad ogni modo, il DES è ancora largamente utilizzato. L'introduzione del DES è stata un catalizzatore per ricerche accademiche sulla crittografia, in particolare sui metodi di violazione dei cifrari a blocchi. Bruce Schneier scrive: " Ufficiosamente, la NSA ha definito il DES come uno dei propri più grandi errori. Se avessero saputo che i dettagli sarebbero stati rilasciati pubblicamente in modo che chiunque avrebbe potuto scrivere il software, non sarebbero stati d'accordo ." DES: Data Encryption Standard (storia)
  • 17. Nel 1990 in seguito alla pubblicazione da parte di Eli Biham e Adi Shamir della crittanalisi differenziale, un metodo per violare i cifrari a blocchi, si scoprì che Le S-box del DES erano molto resistenti agli attacchi facendo fortemente sospettare che l'IBM conoscesse le techiche di crittoanalisi differenziale già negli anni '70. Quando nel 1994, furono pubblicati i criteri di progetto originali delle S-box si capì che l'IBM aveva scoperto la crittanalisi differenziale negli anni '70 e che dopo aver reso sicuro il DES, gli fu richiesto dalla NSA di mantenere segreta questa tecnica. Q uesto accadde perché la crittanalisi differenziale può essere una tecnica molto potente usata contro vari schemi e quindi avrebbe potuto generare problemi di sicurezza nazionale. DES: Data Encryption Standard (storia)
  • 18. DES: struttura generale Il DES codifica blocchi di 64 bit e usa una chiave di 56 bit. La chiave in realtà è lunga 64 bit ma solo 56 di questi sono effettivamente utilizzati dall'algoritmo in quanto 8 bit sono utilizzati solo per il controllo di parità
  • 19. La chiave (k) è memorizzata sfruttando 64 bit, dove l'ottavo, il 16-esimo, ... , il 64-esimo, sono i bit di parità per i sette bit precedenti. Possiamo immaginare i 64 bit della chiave k divisi in 8 byte, dove per ognuno di questi l'ottavo bit definisce la parità del byte. Quindi concretamente ci sono solo 56 bit su cui può variare la chiave per un totale di 2 56 possibili combinazioni XOR (0+0=0, 1+0=1, 0+1=1, 1+1=0) DES: struttura generale
  • 20. DES: struttura generale permutazione iniziale di 64 bit le sedici iterazioni che trasformano la stringa in input sono uguali nel senso che la funzione che le realizza è sempre la stessa (ad ogni iterazione cambia solo la chiave utilizzata) scambia i 32 bit più a sinistra con quelli più a destra della stringa prodotta come output alla 16-esima iterazione sfruttando la sola chiave k, produce le chiavi k1, k2, ..., k16 di 48 bit ciascuna, per le iterazioni da 1 a 16.
  • 21. DES: Permutazione IP Sia x un testo in chiaro di 64 bit: l'algoritmo costruisce una stringa binaria permutando la stringa iniziale mediante la permutazione iniziale fissata IP 1 2 50 58 bit iniziali bit permutati 64 ... Il primo valore della tabella specifica che il primo bit della stringa permutata IP(x) è il 58-esimo bit della stringa da permutare x; il secondo elemento della tabella, 50, ne specifica il secondo e così via.
  • 22. Passo 3: L'output dell'algoritmo è ottenuto applicando la permutazione IP -1 a R 16 L 16 . Si noti l'ordine inverso delle ultime due stringhe di bit R 16 e L 16 dovuto allo scambio di 32 bit 1 2 8 40 bit iniziali bit permutati 64 ... DES: permutazione inversa IP -1 Questa tabella si legge nello stesso modo della precedente. Queste permutazioni sono solo una scelta dello standard, potremmo infatti fare a meno della permutazione iniziale e finale senza perdere in sicurezza.
  • 23. Il DES effettua 16 iterazioni. Per 1  i  16 l'input della i-esima iterazione è una stringa di 64 bit divisa in due parti, L i-1 e R i-1 , ognuna di 32 bit (chiamate rispettivamente parte sinistra e parte destra della stringa). I valori di output L i e R i sono prodotti in base alla seguente regola: L i =R i-1 e R i =L i-1  f(R i-1 , k i ) DES: iterazioni L'operatore  denota la funzione xor bit a bit delle due stringhe, ed f è una funzione che, data la chiave k i e la sottostringa R i-1 , produce una stringa lunga 32 bit. k 1 , k 2 , ..., k 16 sono le chiavi prodotte dal processo di schedulazione. All'i-esima iterazione verrà usata la sola chiave k i . singola iterazione
  • 24. DES: funzione di Feistel La funzione f prende in input una stringa A di 32 bit, una stringa K di 48 bit, e fornisce in output una stringa di 32 bit. La stringa A di 32 bit viene espansa dalla funzione E in una stringa 48 bit. Viene computato lo xor bit a bit tra K e E(A), che è una stringa di 48 bit. La sequenza viene divisa in 8 sottosequenze di 6 bit ciascuna, dette sottosequenze B 1 , B 2 , ..., B 8 . L'S-box Si (per 1  i  8) prende in input Bi (a 6 bit) e da in output una sequenza a 4 bit, che chiamiamo Ci. La stringa C 1 ,C 2 ,...,C 8 (a 32 bit) viene permutata tramite la permutazione P e questo è il valore f(A, K). K
  • 25. La funzione E duplica e permuta 16 bit dei 32 di A in base allo schema della tabella E Espansione (E) e permutazione (P) Tabella E Tabella P La tabella P specifica la permutazione P
  • 26. L'unico punto in cui il sistema DES non utilizza funzioni di tipo lineare (cioè gli xor, le permutazioni e le espansioni) è nelle S-box, che costituiscono il fulcro dell'algoritmo. DES: S-BOX S-BOX S1 Dato Bi (l'input a 6 bit dell‘S-box Si), il primo e l'ultimo bit di Bi vengono interpretati come indice di riga, mentre i bit centrali come indice di colonna. Si consulta la tabella Si alle coordinate prescritte e il valore trovato nell'S-box è un decimale la cui conversione binaria dà i 4 bit output
  • 27. Box S1 Input B 1 = 101110 10 primo ed ultimo bit output S 1 = 11 ---> in binario = 1011 DES: S-BOX (esempio)
  • 28.
  • 29.
  • 30. Permutazione PC1 1 2 1 64 bit iniziali bit dopo permutazione 56 57 3 ... I bit in posizione 8, 16, 24, 32, 40, 48, 56, 64 sono di parità e non compaiono, essi servono per rivelare un errore in ogni byte.
  • 31. La funzione shift a sinistra LS i iterazione shift Lo shift LSi riguarda una sola posizione alle iterazioni 1, 2, 9 e 16, e due posizioni a tutte le altre iterazioni Totale shift nelle 16 iterazioni = 28 posizioni
  • 32. Compressione-permutazione PC2 1 2 1 56 bit iniziali bit dopo compressione 8 bit soppressi in posizione 9, 18, 22, 25, 35, 38, 43 e 54 48 14 3 ...
  • 33. Decifratura del DES IP IP -1 iterazione 1 iterazione 16 testo cifrato scambio ... schedulazione chiave Chiave k k 16 k 1 Per decifrare si usa lo stesso algoritmo e la stessa chiave K usati per cifrare, eccezion fatta per la schedulazione delle chiavi ad ogni round, che è invertita. ESERCIZIO
  • 34. l'ECB (Electronic Codebook chaining). Un messaggio in chiaro x 1 x 2 …x n , dove ogni x i rappresenta un blocco di 64 bit) viene cifrato applicando ripetutamente ad ogni blocco x i l'algoritmo DES, sempre con la stessa chiave k, producendo un testo cifrato y 1 y 2 …y n . Quindi i valori dei blocchi y i sono dati da: y i = DES k (x i ) Modalità del DES: ECB
  • 35. L'unico problema con questo metodo si ha quando il messaggio è costituito da un numero di bit che non è un multiplo di 64, cioè quando l'ultimo blocco non contiene esattamente 64 bit, ma di meno. La soluzione per questo caso non è definita dallo standard, ma bisogna convenire su come risolverlo. L'idea potrebbe essere quella di inserire del testo opportuno alla fine del blocco, in modo tale che, in fase di decifratura, possa essere semplice distinguere il testo aggiunto da quello originale. Una possibile soluzione è quella di aggiungere al messaggio originale la sequenza 100...0, in modo da completare l'ultimo blocco a 64 bit. Naturalmente, questa operazione deve essere fatta anche quando l'ultimo blocco è già di 64 bit, in modo da stabilire un criterio generale. Questo significa che, in fase di decifratura si sa con certezza che la stringa finale del messaggio decifrato, cioè la stringa 100...0, è stata aggiunta in fase di cifratura, e quindi non viene considerata come facente parte del messaggio originario. Modalità del DES: ECB
  • 36. L'operazione di decifratura considera un blocco alla volta del messaggio, così come accadeva per la cifratura, applicando però in questo caso l'algoritmo di decifratura DES. Modalità del DES: ECB Il vantaggio di questo metodo sta nella sua rapidità di esecuzione. Lo svantaggio è dato dal fatto che, durante la trasmissione del messaggio, potrebbe verificarsi sia la perdita di un blocco che l'attacco da parte di un nemico. In particolare, quest'ultimo potrebbe sostituire un blocco con un altro, senza la possibilità che colui che riceve il messaggio possa accorgersene. Per esempio egli potrebbe cambiare in un messaggio il blocco "do" con "do not" senza essere scoperto. Questo è dovuto alla mancanza di dipendenza tra i vari blocchi
  • 37. Modalità del DES: CBC CBC (Cipher Block Chaining) Dato un messaggio in chiaro x 1 x 2 ...x n ed una chiave nascosta k, in questa modalità un generico y i è dato da: y i = DES k (y i-1  x i ), 1  i  n con y 0 = IV(vettore di inizializzazione a 64 bit). Quest'ultimo viene poi utilizzato per fare lo xor bit a bit col blocco successivo del messaggio in chiaro x 2 , quindi si applica alla stringa così ottenuta l'algoritmo DES sempre con la stessa chiave k, ottenendo il blocco cifrato y 2 e così via. Con questo metodo, si definisce in qualche modo un legame tra y i ed il blocco precedente y i-1 .    Il procedimento di cifratura considera inizialmente il vettore IV, di 64 bit, quindi effettua lo xor bit a bit tra questi ed i primi 64 bit del messaggio in chiaro, infine applica alla stringa così ottenuta l'algoritmo di cifratura DES con chiave k, ottenendo il blocco cifrato y 1 .
  • 38. Per decifrare operiamo all'inverso del caso della cifratura, cioè si applica y 1 come input del DES -1 (algoritmo di decifratura) con la stessa chiave k, ottenendo quindi la stringa che precedentemente definiva lo xor bit a bit tra x 1 ed IV, che costituiva l'input del DES. Ora poiché si vuole calcolare x 1 si effettua l'operazione inversa, cioè lo xor bit a bit del valore in output del DES-1 con IV e ottenendo x 1 . In generale quindi: x i = y i-1  DES k -1(y i ) per 1  i  n Modalità del DES: CBC Il vantaggio di questo schema è che se si cambia un solo bit del messaggio originario cambia di conseguenza anche la parte rimanente del messaggio. Questa caratteristica elimina la possibilità di un attacco tramite sostituzione di un blocco. Infatti, in una tale evenienza il messaggio sarebbe irrimediabilmente compromesso. Lo svantaggio di tale metodo è che in esso vengono eseguite più operazioni rispetto all'ECB, e quindi rispetto ad esso è più lento .
  • 39. Modalità del DES: CFB CFB (Cipher Feedback) In questa modalità viene fornito un vettore di inizializzazione IV, che è una stringa di 64 bit. Sia x 1 x 2 …x n il messaggio in chiaro. Allora il generico y i è definito da: y i = x i  DES k (y i-1 ) con 1  i  n
  • 40. Esiste una versione più generale detta Cipher Feedback con j bit. Per essa si considera inizialmente una stringa di 64 bit (costituita dal vettore IV), che si può immaginare suddivisa in due parti, di 64-j bit a sinistra e j bit a destra. Quindi si cifra tale stringa usando l'algoritmo di cifratura DES con chiave k. Modalità del DES: CFB j-bit Ad ogni passo, da j bit del testo in chiaro otteniamo j bit del testo cifrato. Della stringa cifrata così ottenuta vengono considerati solo i j bit più a sinistra. Quindi si effettua lo xor bit a bit tra questi j bit ed i prossimi j bit del messaggio in chiaro, ottenendo j bit del messaggio cifrato. Tali j bit così definiti rientrano nel circuito, in quanto al passo successivo il vettore originale di 64 bit viene shiftato di j posizioni a sinistra, e gli ultimi j bit di tale vettore diventano i j bit del messaggio cifrato.
  • 41. La decifratura avviene in maniera analoga alla cifratura. E’ importante osservare che per la decifratura viene usato ancora l’algoritmo DES e non il DES -1 . L'unica variante significativa in tale schema è data dal fatto che i j bit del messaggio cifrato, vengono utilizzati per effettuare lo xor bit a bit con i j bit più a sinistra dell'output del DES, oltre a costituire in seguito i nuovi j bit più a destra del vettore iniziale (su cui viene applicato l'algoritmo DES), definendo così j bit del messaggio in chiaro. Modalità del DES: CFB j-bit Il vantaggio di questo schema è dato dal fatto che il valore di j può essere scelto a piacimento. Per esempio alcune applicazioni scelgono j = 8, che significa cifrare 8 bit (1 byte) alla volta del messaggio in chiaro. Questa scelta si presta particolarmente alla cifratura on-line; infatti con j = 8 può essere trasmesso un carattere alla volta. Lo svantaggio di questo metodo è che per valori di j piccoli esso diventa sicuramente più oneroso di quelli visti in precedenza.
  • 42. Anche in questa modalità si utilizza una stringa iniziale di 64 bit (vettore IV). Come primo passo viene costruita la sequenza: z 0 z 1 z 2 z 3 …. dove z 0 = IV e z i = DES k (z i -1) con chiave k segreta. Come si può notare tale stringa è del tutto indipendente dal messaggio in chiaro. Quindi sia x 1 x 2 ...x n il messaggio in chiaro; il messaggio cifrato è definito da y 1 y 2 …y n dove: y i = x i  z i Modalità del DES: Output Feedback Anche per tale metodo c'è la variante a j bit, che è analoga a quella del CFB, l'unica diversità sta nel fatto che il feed-back (cioè il riutilizzo di una certa parte dell'informazione) non riguarda j bit del testo cifrato, ma i j bit più a sinistra della stringa in output prodotta dal DES.
  • 43. Per la decifratura si può notare che la prima parte del metodo è uguale a quello che viene utilizzata per effettuare la cifratura (ciò è valido dal momento che la sequenza del messaggio in chiaro generata da questa prima parte è indipendente dal messaggio in chiaro, così come dal messaggio cifrato). Quindi, ad ogni passo si considerano i j bit più a sinistra delle stringhe fornite in output dall'algoritmo DES, e si effettua lo xor bit a bit con j bit del messaggio cifrato, ottenendo così j bit del messaggio in chiaro. Modalità del DES: Output Feedback ESERCIZIO
  • 44. Applicazioni del DES L'algoritmo DES può essere usato come standard sia per la cifratura che per l'autenticazione dei dati. Cifratura Dati : è semplice vedere come il DES può essere usato per cifrare un testo in chiaro di 64 bit, tuttavia la lunghezza dei testi è raramente limitata a 64 bit. Per testi più lunghi possono essere utilizzate le modalità di operative viste in precedenza. Ognuna di tali modalità ha vantaggi e svantaggi. Per esempio l'ECB è eccellente per la cifratura delle chiavi; CFB è usato tipicamente per cifrare caratteri individuali; OFB è tipicamente usato per cifrare comunicazioni via satellite (in cui è necessario ridurre al minimo la possibilità di errori alla stazione ricevente); ed infine entrambi CBC e CFB possono essere usati per l'autenticazione di dati. Tuttavia per essi non esistono delle analisi formali che dimostrino qual'è il più sicuro, a meno che non si faccia uso di ipotesi molto restrittive.
  • 45. Applicazioni del DES Autenticazione Dati : Originariamente il DES fu introdotto per permettere la cifratura e la decifratura di dati usati sul computer. Tuttavia la sua applicazione si è estesa anche alla autenticazione dei dati. Tale necessità è nata dalla difficoltà di riconoscere se in un messaggio c'erano state delle modifiche o meno, durante la fase di trasmissione. Più in particolare, nel caso in cui i dati erano cifrati con una delle due modalità CFB o CBC, allora queste possono essere usate per produrre un Codice di Autenticazione del Messaggio (MAC). Il MAC viene posto alla fine del messaggio in chiaro, ed è usato per convincere chi riceve il messaggio che esso non è stato alterato da nessuno. Così il MAC garantisce l'integrità (o autenticità) del messaggio (ma non la sua segretezza).
  • 46. y 1 ,y 2 ,…y n Applicazioni del DES: MAC La modalità di operazione CBC viene usata per produrre un MAC (Message Authentication Code) nel seguente modo: x 1 ,x 2 ,…x n y 1 ,y 2 ,…y n MAC= y n x 1 ,x 2 ,…x n ,y n x 1 ,x 2 ,…x n ,y n x 1 ,x 2 ,…x n y n Si noti che un nemico che vuole attaccare il sistema non può produrre un MAC valido poiché non conosce la chiave di cifratura. Quindi se Carmen intercetta il messaggio x 1 ,x 2 ... x n ,y n e cambia uno o più bit di tale messaggio, è altamente improbabile che riesca a cambiare anche il MAC evitando che Bob si accorga delle modifiche.
  • 47. x 1 ,x 2 ,…x n ,y n Applicazioni del DES Cifratura ed Autenticazione dei Dati : è spesso desiderabile combinare autenticità e segretezza. Questo potrebbe essere fatto usando due chiavi: y 1 ,y 2 ,…y n x 1 ,x 2 ,…x n y 1 ,y 2 ,…y n MAC= y n x 1 ,x 2 ,…x n ,y n x 1 ,x 2 ,…x n y n
  • 48. Applicazioni del DES Trasferimento Elettronico di Fondi (EFT) (ANSI X9.9) : probabilmente l'uso più significativo del DES è quello riguardante la protezione dei messaggi di trasferimento, relativi a vendite al dettaglio ed all'ingrosso. I dati protetti tramite DES sono relativi a trasferimenti di fondi che variano da $50 a svariati milioni di dollari. In particolare il governo degli Stati Uniti è responsabile di trasferimenti di miliardi di dollari al giorno. Per far sì che questi trasferimenti siano sicuri, il Dipartimento del Tesoro Americano ha dato inizio alla politica precedentemente citata sull'autenticazione dei messaggi EFT. Anche la Banca federale coopera con il Tesoro per la buona riuscita di queste operazioni. Uno dei sistemi che si sta considerando consiste di strumenti manuali contenenti chiavi DES usati nella cifratura di messaggi finanziari. Questi strumenti forniscono la chiave per l'autenticazione delle firme di documenti cartacei.
  • 49. Applicazioni del DES Immagazzinamento Dati e Sistemi di Posta (ANSI X9.19) : il DES viene utilizzato per la cifratura di password per l'accesso a sistemi computerizzati. L'algoritmo confronta la cifratura della stringa data in input come password con quella conservata in memoria, ed attiva o nega l'accesso al sistema a seconda che il match fra le due stringhe abbia o meno esito positivo. Il DES può anche essere utilizzato per la protezione di file in memoria. Una pubblicazione speciale dell'NBS descrive un sistema di notarizzazione di chiavi che può essere integrato in un sistema computerizzato, per proteggere file da modifiche e divulgazioni e per provvedere a una firma digitale usando il DES. Il sistema di notarizzazione che incorpora il DES può anche essere usato congiunto ad un sistema di posta per provvedere della posta sicura. Un software di cifratura/decifratura che contiene le informazioni necessarie a decifrare ed autenticare un file di posta è automaticamente aggiunto al file che è trasmesso al ricevente. Quest'ultimo in seguito potrà decifrare ed autenticare il file facilmente sfruttando quest'informazione.
  • 50. DES: Crittoanalisi “ La sicurezza di un sistema crittografico deve dipendere solo dalla segretezza della chiave e non dalla segretezza del metodo ” Auguste Kerckhoffs von Nieuwenhof (1835-1903) La sicurezza di un crittosistema non deve dipendere dalla segretezza dell’algoritmo usato, ma solo dalla segretezza della chiave Questo principio, apparso per la prima volta nel 1883 nel libro «La criptographie militarie» di Kerckhoffs un filologo olandese, è fondamentale per una corretta visione del problema sicurezza. Per poter comprendere meglio l’aspetto della sicurezza di un sistema crittografico dobbiamo metterci nei panni della «spia» che intercetta il messaggio. La spia cercherà di decrittare (questo è il termine esatto) il messaggio e quindi dovrà conoscere l’algoritmo utilizzato per la cifratura e la chiave. Un principio fondamentale della crittologia moderna afferma che:
  • 51. Un primo semplice attacco è quello di forza bruta: provare tutte le possibili chiavi. La lunghezza della chiave determina il numero di chiavi possibili e quindi la fattibilità dell'attacco. Lo spazio delle chiavi del DES è formato da 2 56 elementi, che in notazione decimale equivale a circa 72 milioni di miliardi di combinazioni distinte, per cui un ipotetico computer a 500 MHz che può sondare una chiave ad ogni ciclo di clock impiegherebbe 144 milioni di secondi ad esaminarle tutte. Tuttavia, a dispetto delle 2 56 chiavi possibili, in media bastano 2 55 tentativi. Questo consegue dalla proprietà di complementazione del DES: C = DES K (M) allora ¬C = DES ¬K (¬M). DES: Crittoanalisi Ma anche supponendo che sia sufficiente esaminare solo la metà delle chiavi occorrerebbero comunque ben 834 giorni, pari a 2 anni e 3 mesi di lavoro continuativo!
  • 52. A livello teorico, furono avanzate varie proposte per un computer in grado di violare il DES. Nel 1977, Diffie ed Hellman proposero una macchina del costo stimato di 20 milioni di dollari in grado di trovare una chiave DES in un solo giorno. Nel 1993 Wiener propose una macchina per la ricerca della chiave, del costo di un milione di dollari, in grado di trovarla in 7 ore. La vulnerabilità del DES fu dimostrata praticamente nel 1998 quando fu costruita appositamente la DES-Crack dall‘ Electronic Frontier Foundation (EFF) , un gruppo per la difesa dei diritti civili nel ciberspazio, del costo di circa 250.0000 dollari. Fu costruita per dimostrare che il DES era violabile in pratica, non solo in teoria. Questa macchina violò con la sola forza bruta una chiave in pochi giorni di ricerca. Inoltre è stata pubblicata la documentazione completa del progetto DES-Crack in modo da consentire ad altri gruppi di scienziati di riprodurre e di migliorare la macchina realizzata dall'EFF. DES: Crittoanalisi
  • 53. Il miglior attacco al DES conosciuto è senza dubbio quello definito dal metodo della Crittoanalisi differenziale, introdotto da E. Biham e A. Shamir. Esso defininisce un attacco che si presta con successo alla rottura del DES nell'ipotesi che il numero di iterazioni sia ridotto (il DES a 8 iterazioni può essere rotto in un paio di minuti su un personal computer). Tuttavia quando il numero di iterazioni sale a 16 o più, attacchi di questo tipo hanno complessità uguale a quella che si avrebbe con un algoritmo di ricerca nello spazio delle chiavi. Per violare tutti i 16 cicli, la crittanalisi differenziale richiede 247 testi in chiaro scelti (chosen plaintext) DES: Crittoanalisi ESERCIZIO
  • 54. Weak-Key Tra le 256 chiavi possibili ve ne sono di particolari per le quali le sottochiavi prodotte dalla fase di schedulazione sono tutte uguali. Queste chiavi sono dette weak key (chiavi deboli). Quindi se cifriamo un testo cifrato con una weak key otteniamo il testo in chiaro. Questo succede perché, visto che le sottochiavi prodotte dal processo di schedulazione sono le stesse sia nel caso della cifratura che della decifratura, queste due operazioni coincidono. Le weak key sono quelle composte da tutti 0, tutti 1, oppure da una metà da tutti 0 e l'altra da tutti 1. Tali chiavi diminuiscono la sicurezza del sistema in quanto basta trovare una sola sottochiave k i per scoprire tutte le altre. Le quattro weak key in rappresentazione esadecimale
  • 55.
  • 56. Esercizi Siano x 1 …x n n blocchi di 64 bit e siano y 1 …y n gli n blocchi ottenuti cifrando x 1 …x n con DES. Si supponga che a causa di un errore di trasmissione, il blocco y 1 non sia trasmesso correttamente (alcuni 0 diventano 1 o viceversa). Analizzare quanti e quali blocchi sono decifrati non correttamente se la modalità operativa utilizzata per la cifratura è: a. ECB b. CBC c. CFB d. OFB Soluzione: per le modalità ECB e OFB, soltanto il primo blocco sarà decifrato non correttamente; per le modalità CBC e CFB, i primi due blocchi saranno decifrati non correttamente.
  • 57. cifratura decifratura DES x 1 x 2 x n y 1 y 2 y n … DES DES DES -1 y 1 y 2 y n … DES -1 DES -1 x 1 x 2 x n Non corretto Electronic codebook chaining (ECB) Non corretto corretti
  • 58. decifratura y 1 DES DES DES y 2 x 1 x 2 x n k k k IV … … x 1 DES -1 DES -1 DES -1 x 2 y 1 y 2 y n k k k IV … … cifratura x n y n Non corretto Cipher Block Chaining CBC Non corretti corretti
  • 59. Cipher feedback CFB y 1 y n DES IV DES x 1 x n DES … k k k x 2 cifratura decifratura x n DES IV DES y n DES … k k k y 2 x 1 y 1 y 2 x 2 Non corretto Non corretti corretti
  • 60. 64-bit Output feedback Cifratura Decifratura DES k 64 bit del testo in chiaro shift di 64 bit DES 64 bit del testo in chiaro k shift di 64 bit 64 bit testo cifrato 64 bit testo cifrato y 1 non corretto x 1 x 2 … x n corretti non corretto
  • 61. Si consideri il crittosistema DES. E’ possibile utilizzare la proprietà del complemento per migliorare il running time della ricerca esaustiva in un attacco known plaintext? E in un attacco chosen plaintext? Giustificare le risposte. Soluzione: Non è noto come sia possibile utilizzare la proprietà del complemento per migliorare il running time della ricerca esaustiva in un attacco known plaintext. Invece, tale proprietà consente il miglioramento del running time della ricerca esaustiva di un fattore ½ nel caso di un attacco chosen plaintext. Infatti, supponiamo che k sia la chiave segreta da trovare. In un attacco chosen plaintext, si considerino due coppie (m, c1) e (m’, c2), dove m’ indica il complemento di m. Per la proprietà del complemento, per ogni possibile chiave h si ha c=DES(h,m) e c’=DES(h’,m’), dove c’ e h’ indicano il complemento di c e h, rispettivamente. Pertanto, se c  c1, allora k  h e se c’  c2 allora k  h’. Quindi le due chiavi candidate h e h’ possono essere eliminate mediante una singola cifratura DES durante la ricerca esaustiva. Esercizi
  • 62. Esercizi Quindi dalla stringa R 16 L 16 possiamo risalire alla stringa R 15 L 15 utilizzando la sottochiave k 16 . Questo è vero per tutte le iterazioni, quindi utilizzando lo stesso algoritmo di cifratura DES, con le sottochiavi schedulate in ordine inverso, possiamo effettuare la decifratura DES. Dimostrare che la decifratura DES può essere effettuata applicando l’algoritmo di cifratura DES al testo cifrato con le chiavi schedulate in ordine inverso. Soluzione: Nella fase di cifratura DES dopo avere effettuato lo scambio di 32 bit successivo alla sedicesima iterazione, abbiamo la stringa di 64 bit R 16 L 16 , dove L 16 = R 15 R 16 =L 15  f(R 15 ,k 16 ) da cui otteniamo: R 15 = L 16 L 15 =R 16  f(R 15 ,k 16 ) = R 16  f(L 16 ,k 16 ).

Editor's Notes

  1. IP ed FP non hanno alcuna importanza per la cifratura ma sono state probabilmente aggiunte per facilitare il caricamento dei blocchi sull'hardware tipico degli anni '70.
  2. I bit di parità sono tali che ogni byte della chiave contenga un numero dispari di bit 1. Ciò significa che solo un errore può essere rivelato in ogni byte. Un bit di parità è calcolato come XOR dei precedenti 7 bit XOR (0+0=0, 1+0=1, 0+1=1, 1+1=0)
  3. Il vettore di inizializzazione IV potrebbe essere scelto a caso e tenuto nascosto per una maggiore sicurezza, tuttavia in molte implementazioni esso viene addirittura reso pubblico.
  4. Il vantaggio di questo schema è che se si cambia un solo bit del messaggio originario cambia di conseguenza anche la parte rimanente del messaggio. Questo legame (dipendenza) esistente tra i vari blocchi del messaggio è alla base del funzionamento del Message Autentication Code (MAC) una delle applicazioni del DES.
  5. Tale metodo ha il vantaggio che la sequenza z 0 z 1 z 2 ... può essere computata indipendentemente dal messaggio in chiaro, e quindi può essere precalcolata (sfruttando per esempio dei tempi in cui la macchina è inattiva), in modo tale che quando viene immesso il messaggio da cifrare, la cifratura può essere eseguita immediatamente: y i = x i  z i (lo stesso vale per la decifratura). Quindi in realtà le operazioni di cifratura/decifratura vere e proprie consisteranno semplicemente di operazioni di xor che come sappiamo sono estremamente veloci da realizzare. Lo svantaggio rispetto al metodo precedente è dovuto al fatto che il cambiamento di un bit nel messaggio originario provoca il cambiamento di un solo bit nel testo cifrato e viceversa, e tutti gli altri bit che precedono e seguono questi rimangono inalterati. In definitiva possiamo dire che per tale modalità non c'è dipendenza tra i vari blocchi del messaggio cifrato, e questo porta ai problemi già visti in precedenza, cioè durante la trasmissione del messaggio potrebbe verificarsi sia la perdita di un blocco che l'attacco da parte di un nemico.
  6. Supponiamo che Alice voglia trasmettere a Bob la sequenza x1x2 ... xn; costruiamo i blocchi del testo cifrato y1y2 ... yn con chiave k. Definiamo yn come il MAC del messaggio, quindi Alice trasmette la sequenza in chiaro x1x2 ... xn seguita dal MAC yn. Quando Bob riceve il messaggio, egli può ricostruire semplicemente il messaggio cifrato y1y2 ... yn usando la chiave segreta k, e verificare se yn ha lo stesso valore del MAC ricevuto come parte del messaggio.
  7. Alice utilizza una prima chiave k1 per produrre un MAC per il testo in chiaro definito da x1x2 ... xn, così come è stato visto per l'autenticazione . Si supponga di indicare tale MAC con xn+1. Quindi Alice cifra la sequenza x1 ... xnxn+1 usando una seconda chiave k2, e producendo il messaggio cifrato y1y2 ...yn+1. Quando Bob riceve tale messaggio, prima lo decifra usando la chiave k2, e poi controlla che xn+1 sia effettivamente il MAC per x1x2 ... xn usando la chiave k1.