D03 Crittografia a Chiave Segreta

download D03 Crittografia a Chiave Segreta

of 154

Transcript of D03 Crittografia a Chiave Segreta

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    1/154

    Crittografia a Chiave Segreta

    (Secret Key Cryptography)

    Luca Grilli

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    2/154

    INTRODUZIONE

    Crittografia a Chiave Segreta

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    3/154

    Introduzione

    Si descriver il funzionamento degli algoritmi di

    crittografia a chiave segreta

    si vedranno in dettaglio gli algoritmi DES e IDEA

    tali algoritmi non si applicano direttamente ad unmessaggio di lunghezza qualsiasi, ma ricevono in input

    un blocco del messaggio di lunghezza fissa (64 bit nel caso di

    DES e IDEA)

    una chiave di lunghezza fissa (56 bit per DES e 128 bit perIDEA)

    loutput un blocco cifrato (della stessa lunghezza del

    blocco di input)

    per tale ragione si parla di algoritmi di cifratura a blocchi

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    4/154

    Introduzione

    la cifratura di un messaggio di lunghezza qualsiasi

    viene ricondotta alla cifratura dei singoli blocchi

    il messaggio m viene scomposto in blocchi di lunghezza

    fissa la cifratura del messaggio m viene ottenuta

    combinando opportunamente le cifrature dei suoi

    blocchi

    In altri termini, possibile ottenere un algoritmodi cifratura simmetrica per messaggi di lunghezza

    qualsiasi utilizzando come modulo base un

    algoritmo di cifratura simmetrica a blocchi

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    5/154

    CIFRATURA A BLOCCHISCHEMAGENERALE

    Crittografia a Chiave Segreta

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    6/154

    Cifratura a blocchi introduzione

    Lalgoritmo di cifratura converte un blocco di

    testo in chiaro in un blocco di testo cifrato

    la chiave Knon deve essere troppo corta

    es. se Kha lunghezza 4 bit, sono sufficienti 24 = 64

    tentativi per individuarla!

    analogamente, la lunghezza (fissata) di un blocco

    non deve essere troppo piccola es. se un blocco ha lunghezza 8 bit, ottenendo delle

    coppie plaintext, ciphertext si potrebbe costruire unatabella di 28 = 256 coppie utilizzabile per la decifratura

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    7/154

    Cifratura a blocchi introduzione

    daltra parte, avere blocchi esageratamente lunghi

    oltre a non essere necessario dal punto di vista dellasicurezza,

    comporta una gestione pi complicata, e

    pu degradare le prestazioni

    64 bit una lunghezza ragionevole per un blocco

    improbabile ottenere ordine di 264 coppie plaintext,ciphertext per costruire una tabella di decifratura, e

    anche se fosse possibile, la sua memorizzazionerichiederebbe una spazio enorme 264 record da 64 bit,

    come pure lordinamento per consentire ricercheefficienti

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    8/154

    Cifratura a blocchi concetti generali

    Il modo pi generale per cifrare un blocco da 64

    bit definire una biiezione : {0, 1}64 {0, 1}64

    memorizzare la definizione della biiezione in una

    struttura dati impraticabile sono richiesti 64 264 bit, cio 270 bit

    ad essere precisi ce ne vogliono un po di meno, trattandosi

    di un biiezione, comunque almeno 269 bit sono richiesti

    inoltre, cos facendo la chiave incorporata nellabiiezione

    per rendere parametrica la biiezione rispetto la chiave

    necessario memorizzare una biiezione per ogni possibile

    chiave!

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    9/154

    Cifratura a blocchi concetti generali

    I sistemi di crittografia a chiave segreta sonoconcepiti per

    usare una chiave ragionevolmente lunga

    ad esempio 64 bit generare una biiezione che appare, a chi non conosce

    la chiave, completamente random

    cio, la biiezione sembra essere definita utilizzando un

    generatore di numeri casuali loutput (i) di un input isi ottiene lanciando un dado a 64

    facce o facendo 64 lanci di monete

    avendo laccortezza di ripetere la procedura se il valoreottenuto per loutput (i) coincide con qualche (j) con j < i

    (cio se (i) era gi stato assegnato ad un precedente input)

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    10/154

    Cifratura a blocchi concetti generali

    Se la biiezione fosse realmente random

    un input iottenuto cambiando un qualunque bit di uninput i

    sarebbe mappato in un output (i) tale che (i) e (i)risultano statisticamente indipendenti ad esempio, non pu succedere che il terzo bit delloutput

    cambia sempre quando il dodicesimo bit dellinput cambia

    Gli algoritmi crittografici sono pensati perdiffondere/spargere in tutti i bit delloutput ilvalore di ogni bit dellinput

    ogni bit delloutput deve dipendere da tutti i bitdellinput e allo stesso modo

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    11/154

    Sostituzione

    Sostituzioni e permutazioni sono due

    trasformazioni base applicabili ad un blocco di dati

    Si assuma di dover cifrare un blocco di kbit

    Una sostituzione specifica, per ciascuno dei 2k

    possibili valori dellinput, i kbit delloutput

    per specificare una sostituzione completamente

    random sono necessari circa k2kbit

    impraticabile implementare una sostituzione per

    blocchi di 64 bit,

    ma fattibile per blocchi di lunghezza di 8 bit

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    12/154

    Permutazione

    Una permutazione specifica, per ciascuna

    delle kposizioni dei bit in input, la posizione

    del corrispondente bit nelloutput

    ad esempio, il bit in posizione 1 diventa il bit in

    posizione 13nelloutput,

    il bit in posizione 2 diventa il bit in posizione 61

    nelloutput, e cos via

    per specificare una permutazione

    completamente random per un blocco di

    lunghezza kbit sono necessari klog2kbit

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    13/154

    Permutazione

    per ciascuno dei kbit va specificata la sua

    posizione nelloutput; ogni posizione richiede

    log2kbit

    ad esempio, essendo 2

    6

    = 64, sono necessari 6 = log264bit per specificare la nuova posizione che li-esimo bit in

    input avr in output

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    14/154

    Permutazione vs Sostituzione

    Una permutazione un caso particolare di

    sostituzione in cui ogni bit delloutput ottiene

    il suo valore da esattamente un bit dellinput

    per blocchi di 64 bit possibile specificare e

    realizzare un permutatore

    un modulo che riceve in input un blocco di 64 bit e

    produce in output una data permutazione dei bit in

    input

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    15/154

    Cifrario a blocchi schema generale

    Un algoritmo di cifratura a chiave segreta pufunzionare come segue

    scompone il blocco in input in pezzi pi piccoli (blocchi da8 bit)

    applica una sostituzione a ciascun pezzo da 8 bit la sostituzione dipender dal valore della chiave

    gli output delle sostituzioni vengono riuniti in un unicoblocco (64 bit),

    tale blocco viene permutato in un permutatore a 64 bit

    che ha il compito di diffondere le modifiche eseguite nellesostituzioni

    il processo viene ripetuto un certo numero di volteriportando loutput in ingresso

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    16/154

    Esempio di cifrario a blocchi

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    17/154

    Esempio di cifrario a blocchi

    Ogni attraversamento del cifrario viene detto

    round

    con un solo round, un bit bxdi input pu influenzare

    soltanto 8 bit bx1, bx2, , bx8delloutput poich bxha attraversato soltanto un blocco di sostituzione

    in generale i bit bx1, bx2, , bx8 non sono consecutivi essendo

    stati mescolati nel permutatore

    alla fine del secondo round, assumendo che i bit bx1,bx2, , bx8 siano smistati in un diverso blocco di

    sostituzione

    il bit bxiniziale influenza tutti i bit in output

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    18/154

    ALGORITMO DESDATA ENCRYPTION STANDARD

    Crittografia a Chiave Segreta

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    19/154

    Data Encryption Standard (DES)

    DES fu pubblicato nel 1977 dal National Bureau ofStandards

    ora rinominato National Institute ofStandards andTechnology (NIST)

    per usi commerciali e altre applicazioni del governostatunitense

    progettato da IBM, si basa sul precedente cifrarioLucifered frutto della collaborazione con consulentidella NSA

    DES usa una chiave di 56 bit, e mappa un blocco diinput da 64 bit in un blocco di output da 64 bit

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    20/154

    Data Encryption Standard (DES)

    la chiave in realt costituita da una sequenza di64 bit, ma un bit in ogni ottetto (il blocco da 64 bit formato da 8 sequenze di 8 bit dette ottetti) usato come odd paritysu ciascun ottetto

    di fatto, soltanto 7bit in ogni ottetto sonoveramente significativi come chiave

    DES efficiente se realizzato in hardware, ma

    relativamente lento se implementato in software sebbene lessere difficilmente implementabile come

    software non era un requisito specificato nel progetto,

    molti sostengono che in realt era un fatto voluto,

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    21/154

    Data Encryption Standard (DES)

    forse per limitarne luso ad organizzazioni in grado di

    realizzare sistemi hardware, o

    forse perch rese pi facile controllare laccesso alla

    tecnologia

    ad ogni modo, laumento delle capacit di calcolo delle CPUrese possibile realizzare una versione software di DES

    una 500-MIPS (Million Instruction Per Second) CPU pu cifrare ad

    un tasso di circa 30 KB/s,

    e forse pi, dipende dai dettagli architetturali della CPU e dalla

    intelligenza dellimplementazione

    un processore Intel Core i7 Extreme Edition i980EE ha una

    capacit di calcolo di circa 150 MIPS pu cifrare ad un tasso dicirca 9 KB/s per cifrare 1 MB impiega circa 110 secondi

    limplementazione software pertanto adeguata a molte

    applicazioni

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    22/154

    Perch chiavi da 56 bit?

    La scelta di una chiave da 56 bit caus molte

    controversie

    prima che DES fu adottato, le persone al di fuori

    della intelligence communitylamentavano che 56bit non offrivano una sicurezza adeguata

    perch solo 56 dei 64 bit di una chiave DES sono

    effettivamente usati nellalgoritmo? lo svantaggio di usare 8 bit della chiave per un controllo

    di parit che ci rende DES molto meno sicuro (256

    volte meno sicuro contro una ricerca esaustiva)

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    23/154

    Perch chiavi da 56 bit?

    Qual il vantaggio di usare 8 bit per uncontrollo di parit?

    una possibile risposta : per verificare che la

    chiave non sia corrotta! ma questa spiegazione non regge!

    se si considerassero 64 bit a caso invece della chiave,c una probabilit su 256 che il controllo di parit dia

    esito positivo la probabilit che la chiave siacomunque errata troppo alta! inoltre avere una chiave corrotta non comporta un

    problema di sicurezza, semplicemente lacifratura/decifratura non viene eseguita correttamente

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    24/154

    Perch chiavi da 56 bit?

    chiaramente anche ridicolo sostenere che la

    scelta di 56 bit stata fatta per risparmiare

    memoria

    La risposta ormai condivisa che il governo

    statunitense abbia deliberatamente indebolito

    la sicurezza di DES di una quantit appenasufficiente da consentire alla NSA di violarlo

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    25/154

    Sulla violabilit di DES

    Gli avanzamenti tecnologici dellindustria deisemiconduttori hanno reso ancora pi critico ilproblema della lunghezza della chiave di DES

    la velocit dei chip e un po di furbizia permettono diviolare (individuare) le chiavi DES con approcci a forzabruta in tempi ragionevoli

    forse una chiave a 64 bit sarebbe stata sicura perpochi anni in pi rispetto ad una chiave a 56 bit

    il rapporto prestazioni/prezzo dellhardware cresce del40% per anno la lunghezza delle chiavi dovrebbeaumentare di 1 bit ogni 2 anni

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    26/154

    Sulla violabilit di DES

    assumendo che 56 bit erano appena sufficienti nel

    1979 (quando DES fu standardizzato)

    64 bit erano adeguati nel 1995, e

    128 bit dovrebbero essere sufficienti fino al 2123

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    27/154

    Quanto sicuro DES?

    Se si dispone di un singolo blocco plaintext,ciphertext quanto difficile trovare la chiave? un approccio a forza bruta dovrebbe provare ordine di

    256 1017chiavi se ogni tentativo richiede una singola istruzione sono

    necessarie ordine di 1000 MIPS-year istruzioni

    1 MIPS = 1 Milione di Istruzioni Per Secondo

    1 MIPS-year = numero di istruzioni eseguite in un anno ad untasso pari a 1 MIPS

    1 MIPS-year = 1MIPS (365 86400) secondi in un anno =

    3,1536 1013 istruzioni

    2

    56

    1017

    103

    MIPS-year

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    28/154

    Quanto sicuro DES?

    Anche nellipotesi pi scomoda per lavversario didisporre solo di testo cifrato

    una ragionevole quantit di testo cifrato

    un attacco a forza bruta pu essere ancora possibile

    se ad esempio lavversario sa soltanto che il testo in chiaro ASCII a 7bit

    ogni volta che prova una chiave deve verificare se sononulli tutti i bit nelle posizioni 8, 16, 24, , n8,

    per ogni blocco di 64 bit, vanno esaminati solo 8 bit; i bit inposizione 8, 16, 24, 32, 40, 48, 56, 64

    se almeno uno di questi bit vale 1 la chiave sicuramente errata

    in caso contrario nulla si pu dire; la probabilit di errore pertanto 1 su 256 ossia la probabilit che tutti questi bit valgano 0

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    29/154

    Quanto sicuro DES?

    se lavversario esamina diversi blocchi, ad esempio 10,e verifica che si tratta sempre di ASCII a 7bit laprobabilit che la chiave scelta sia errata si riduce a 1su 2560

    si noti che gli attuali chip commerciali cheimplementano DES non si prestano a ricercheesaustive della chiave, sono pensati per cifrare moltidati con una stessa chiave

    il caricamento di una chiave unoperazione lenta seconfrontata con la velocit con la quale viene eseguita lacifratura dei dati

    tuttavia sempre possibile costruire un chip ottimizzato adeseguire ricerche esaustive della chiave

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    30/154

    Quanto sicuro DES?

    Ovviamente possibile cifrare pi volte e con

    diverse chiavi lo stesso blocco di dati

    si parla di cifraturamultipla (multipleencryption)

    Si ritiene che una cifratura con un triplo DES

    256 volte pi difficile da violare

    pu considerarsi sicura per il prossimo futuro

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    31/154

    DES Struttura base

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    32/154

    DES Struttura base

    In estrema sintesi la cifratura di DES come segue

    Linput di 64 bit sottoposto ad una permutazioneiniziale; un semplice mescolamento dei bit

    La chiave da 56 bit viene usata per generare 16 per-roundchiavi da 48 bit; una chiave per ciascuno dei 16round

    prendendo 48 differenti sottoinsiemi dei 56 bit della chiave

    Ogni round riceve in input

    loutput di 64 bit del round precedente

    la chiave da 48 bit di quel round

    e produce un output di 64 bit

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    33/154

    DES Struttura base

    Dopo il 16-esimo round, le due met delloutputdi 64 bit vengono scambiate e il risultato vienesottoposto ad unaltra permutazione

    la permutazione finale, che linverso di quella iniziale La decifratura consiste esattamente nelleseguire

    la cifratura DES allindietro

    Per decifrare un blocco necessario:

    applicare la permutazione iniziale; ci annulla leffettodella permutazione finale

    generare le 16 chiavi di round, che andranno usate inordine inverso (prima K16lultima chiave generata)

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    34/154

    DES Struttura base

    eseguire 16 round esattamente come nella cifratura

    il motivo per cui funziona sar illustrato quando si spiegher

    cosa succede durante un round

    dopo 16round di decifratura, le due met delloutput

    di 64 bit vengono scambiate e il risultato viene

    sottoposto ad unaltra permutazione

    che annulla la permutazione iniziale

    Per descrivere in dettaglio DES necessario illustrare le permutazioni iniziale e finale,

    come le chiavi di round sono generate, e

    cosa succede durante un round

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    35/154

    Permutazioni dei dati

    DES effettua una permutazione iniziale e una

    permutazione finale dei dati che

    NON migliorano la sua sicurezza!

    forse sono state introdotte per rendere meno

    efficienti le implementazioni software

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    36/154

    Permutazioni dei dati

    Le permutazioni specificate in DES sonorappresentate nelle due tabelle

    58 50 42 34 26 18 10 2

    60 52 44 36 28 20 12 4

    62 54 46 38 30 22 14 6

    64 56 48 40 32 24 16 8

    57 49 41 33 25 17 9 1

    59 51 43 35 27 19 11 3

    61 53 45 37 29 21 13 5

    63 55 47 39 31 23 15 7

    40 8 48 16 56 24 64 32

    39 7 47 15 55 23 63 31

    38 6 46 14 54 22 62 30

    37 5 45 13 53 21 61 29

    36 4 44 12 52 20 60 28

    35 3 43 11 51 19 59 27

    34 2 42 10 50 18 58 26

    33 1 41 9 49 17 57 25

    Initial Permutation (IP) Final Permutation (IP-1)

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    37/154

    Permutazioni dei dati

    Le tabelle vanno interpretate nel seguente

    modo

    i numeri, da 1 a 64, riportati in tabella

    rappresentano le posizioni dei bit in input allapermutazione

    lordine (per righe da sx verso dx) dei numeri nella

    tabella rappresenta la corrispondente posizionedei bit in output

    ad esempio, la permutazione iniziale sposta il 58-esimo

    bit in input nel primo bit in output, e

    il 50-esimo bit in input nel secondo bit in output

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    38/154

    Permutazione iniziale input e output

    Non si tratta di una permutazione generata in modorandom nel senso che presenta delle regolarit evidenti

    b1 b2 b3 b4 b5 b6 b7 b8

    b9 b10 b11 b12 b13 b14 b15 b16

    b17 b18 b19 b20 b21 b22 b23 b24

    b25 b26 b27 b28 b29 b30 b31 b32b33 b34 b35 b36 b37 b38 b39 b40

    b41 b42 b43 b44 b45 b46 b47 b48

    b49 b50 b51 b52 b53 b54 b55 b56

    b57 b58 b59 b60 b61 b62 b63 b64

    b58 b50 b42 b34 b26 b18 b10 b2

    b60 b52 b44 b36 b28 b20 b12 b4

    b62 b54 b46 b38 b30 b22 b14 b6

    b64 b56 b48 b40 b32 b24 b16 b8b57 b49 b41 b33 b25 b17 b9 b1

    b59 b51 b43 b35 b27 b19 b11 b3

    b61 b53 b45 b37 b29 b21 b13 b5

    b63 b55 b47 b39 b31 b23 b15 b7

    input output

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    39/154

    Permutazione iniziale input e output

    linput costituito da 8 ottetti

    un ottetto un gruppo di 8 bit corrispondenti ad unariga della tabella

    loutput costituito da 8 ottetti

    i bit nel primo ottetto (prima riga) in input vengonodiffusi nellottavo bit di ogni ottetto (di ogni riga)

    i bit nel secondo ottetto (seconda riga) in inputvengono diffusi nel settimo bit di ogni ottetto (di ogni

    riga) i bit nelli-esimo ottetto vengono diffusi nel (9-i)-esimo

    bit di ogni ottetto; i bit in posizione pari vanno nei primiquattro ottetti delloutput, mentre quelli in posizionidispari negli ultimi quattro

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    40/154

    Perch permutare?

    Le permutazioni iniziale e finale di DES non

    contribuiscono alla sicurezza

    si supponga per assurdo che siano fondamentali

    allora chiamando EDS lalgoritmo ottenuto da DES

    togliendo tali permutazioni

    EDS deve essere pi facile da violare di DES supponiamo allora che nota una coppia plaintext,

    ciphertext EDS sia pi facilmente violabile; cio sia pifacile calcolare la chiave KEDS

    mostriamo allora che DES risulta violabile con la stessa

    facilit

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    41/154

    Perch permutare?

    infatti, sia m, c una coppia plaintext, ciphertext diDES

    si consideri allora la coppia m, c ove me csonoottenuti applicando la permutazione iniziale ad m e c

    allora, la chiave KEDS che si ottiene violando EDS per la

    coppia m, c coincide con la chiave KDES di DES per lacoppia m, c

    EDSIP IP-1

    DES

    m m c c

    KEDS(= KDES)

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    42/154

    Generazione delle chiavi di round

    DES genera

    sedici chiavi di round da 48 bit a partire dalla chiave

    principale Kdi 64 bit nominali, di cui solo 56 effettivi

    i bit di parit di Knon vengono considerati denoteremo con K1, K2, , K16 le chiavi di round

    il procedimento il seguente

    viene prima effettuata una permutazione iniziale sui

    56 bit effettivi di K

    i 56 bit in output vengono divisi in due met C0 e D0 la permutazione illustrata nelle slide seguenti

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    43/154

    Gen. chiavi Permutazione iniziale

    il valore numerico di un elemento della tabellarappresenta la posizione del bit in input,

    mentre lordine nella tabella rappresenta la posizionedel bit in output

    ad esempio, il bit pi a sx nelloutput ottenuto estraendo il57-esimo bit della chiave K

    i numeri 8, 16, 24, 32, 40, 48, 56, 64 non sono presentiperch corrispondono ai bit di parit della chiave

    57 49 41 33 25 17 9

    1 58 50 42 34 26 18

    10 2 59 51 43 35 27

    19 11 3 60 52 44 36

    63 55 47 39 31 23 15

    7 62 54 46 38 30 22

    14 6 61 53 45 37 29

    21 13 5 28 20 12 4

    C0

    D0

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    44/154

    Gen. chiavi Permutazione iniziale

    b1 b2 b3 b4 b5 b6 b7

    b9 b10 b11 b12 b13 b14 b15

    b17 b18 b19 b20 b21 b22 b23

    b25 b26 b27 b28 b29 b30 b31

    b33 b34 b35 b36 b37 b38 b39

    b41 b42 b43 b44 b45 b46 b47

    b49 b50 b51 b52 b53 b54 b55b57 b58 b59 b60 b61 b62 b63

    b57 b49 b41 b33 b25 b17 b9

    b1 b58 b50 b42 b34 b26 b18

    b10 b2 b59 b51 b43 b35 b27

    b19 b11 b3 b60 b52 b44 b36

    b63 b55 b47 b39 b31 b23 b15

    b7 b62 b54 b46 b38 b30 b22

    b14 b6 b61 b53 b45 b37 b29b21 b13 b5 b28 b20 b12 b4

    input output

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    45/154

    Gen. chiavi Permutazione iniziale

    La permutazione non random

    nel senso che presenta delle regolarit evidenti

    come nel caso delle permutazioni dei dati anche lepermutazioni iniziale e finale dei bit della chiave KNON contribuiscono alla sicurezza!

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    46/154

    Generazione chiavi: i-esimo round

    Le sedici chiavi vengono generate in sedici round

    nelli-esimo round viene generata la chiave di round Ki

    generazione di Ki: round i

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    47/154

    Generazione chiavi: i-esimo round

    i bit delle due met Ci-1Di-1 della (i-1)-esima chiave Ki-1vengono ruotati (traslazione ciclica) a sx

    lentit della traslazione a sx dipende dal round

    nei round 1, 2, 9 e 16 si ha una rotazione a sx di un solo bit; il

    primo bit diventa lultimo bit a dx negli altri round si ha una rotazione a sx di due bit

    la permutazione di Ciche produce la met sx di Kiillustrata sotto

    si noti che i bit in posizione 9, 18, 22, e 25 sono scartati14 17 11 24 1 5

    3 28 15 6 21 10

    23 19 12 4 26 8

    16 7 27 20 13 2

    permutazione per ottenere

    la met sx di Ki

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    48/154

    Generazione chiavi: i-esimo round

    la permutazione di Di-1 ruotato, cio di Di, che

    produce la met dx di Ki illustrata sotto

    si noti che i bit in posizione 35, 38, 43, e 54 sono

    scartati; rimangono cos 24 bit anzich 28 ciascuna delle met di Ki di 24 bit

    complessivamente Kiha una lunghezza di 48 bit

    14 17 11 24 1 5

    3 28 15 6 21 10

    23 19 12 4 26 8

    16 7 27 20 13 2

    permutazione per ottenere

    la met dx di Ki

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    49/154

    Un round di DES

    ENCRYPTION DECRYPTION

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    50/154

    n-esimo round di DES

    CIFRATURA (ENCRYPTION)

    i 64 bit in input sono divisi in due met da 32 bit

    Ln: met sx dopo l(n-1)-esimo round

    Rn: met dx dopo l(n-1)-esimo round

    loutput di 64 bit del round si ottiene

    concatenando le due met

    Ln+1

    : met sx dopo ln-esimo round

    Rn+1: met dx dopo ln-esimo round

    Ln+1 semplicemente Rn

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    51/154

    n-esimo round di DES

    Rn+1 ottenuto come segue

    Rn e Kn sono posti in input alla mangler function; la

    mangler function viene anche detta funzione di Feistel

    loutput della mangler function, mangler(Rn, K

    n), una

    quantit di 32 bit; si noti che Rn e Kn sono composti da

    32 e 48 bit rispettivamente

    loutput mangler(Rn, Kn) viene poi sommato (XOR)con Ln

    il risultato ottenuto Rn+1 = mangler(Rn, Kn) Ln

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    52/154

    n-esimo round di DES

    si noti che ogni round di DES facilmente

    invertibile

    noti Ln+1, Rn+1 e Kn facile ottenere Ln e Rn

    infatti, Rn = Ln+1, ed essendo Rn+1 = mangler(Rn, Kn) Ln risulta che

    Rn+1 mangler(Rn, Kn) = Ln (si noti che xyy=x)

    cio Ln = Rn+1mangler(Ln+1, Kn)

    la mangler function non mai usata in sensoinverso

    DES elegantemente progettato da essere invertibile

    senza richiedere linvertibilit della mangler function

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    53/154

    n-esimo round di DES

    DECIFRATURA (DECRYPTION)

    esaminando attentamente la figura,

    si evince che la decifratura di fatto identica alla

    cifratura,

    tranne il fatto che le due met da 32 bit sono

    invertite

    in altre parole, fornendo Rn+1|Ln+1 in input al round n siottiene Rn|Ln in uscita

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    54/154

    Mangler Function ofunzione di Feistel

    Rn

    n

    n,7 n,8

    Kn

    Kn,1 Kn,2 Kn,7 Kn,8

    +

    SB2SB1 SB7 SB8

    +

    ++

    n+1

    Rn+1

    n,1 n,2

    n+1,1 n+1,2 n+1,7 n+1,8

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    55/154

    Mangler Function ofunzione di Feistel

    La mangler function prende in input i 32 bit di Rn, o R per semplificare

    i 48 bit della chiave Kn, o Kper semplificare

    e produce un output da 32 bit

    che sommato ( XOR) con Ln permette di ottenere Rn+1 (ilprossimo R) la prima operazione lespansione di R, da 32 bit a 48

    bit R scomposto in otto pezzi da 4 bit R = {r1, r2, , r8}

    li-esimo pezzo riviene espanso a 6 bit aggiungendo intesta e in coda rispettivamente lultimo bit di ri-1 e il primobit di ri+1

    r1 e r8 sono considerati adiacenti, cio r0 = r8 e r9 = r1

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    56/154

    Espansione di R (Rn) a 48 bit

    R a 32 bit

    a 48 bit

    chunk 1

    di Respanso

    chunk 2

    di Respanso

    chunk 3

    di Respanso

    chunk 4

    di Respanso

    chunk 5

    di Respanso

    chunk 6

    di Respanso

    chunk 7

    di Respanso

    chunk 8

    di Respanso

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    57/154

    Mangler Function S-box

    la chiave K(Kn) viene scomposta in otto chunk(pezzi)

    da 6 bit

    li-esimo chunk di R (Rn) espanso viene sommato (XOR) alli-esimo chunk di K

    loutput a 6 bit ottenuto viene sottoposto ad una

    sostituzioneS-box che produce un output di 4 bit

    ci sono in tutto otto S-box distinte; li-esima S-box elabora la

    somma delli-esimo chunk di Ke di R

    ogni S-box ha 64 possibili input e 16 possibili output

    input diversi possono essere mappati nello stesso output

    le S-box sono definite in modo tale che esattamente quattro

    input distinti sono mappati in ciascun output possibile

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    58/154

    Mangler Function S-box

    ogni S-box pu riguardarsi come quattro S-box separate

    aventi 4 bit sia in input che in output

    i quattro bit in input corrispondono ai bit interni (dal

    secondo al quinto) dellinput globale, e

    i due bit esterni (primo e sesto) dellinput globale

    servono a selezionare quale dei quattro output ottenuti

    rappresenta loutput globale

    Nelle slide seguenti sono illustrate la tabelle che

    definiscono le otto S-box

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    59/154

    Mangler function Funzione di Fiestel

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    60/154

    Tabella di output di S-box 1

    Loutput (a 4 bit) di S-box 1, specifica i primiquattro bit delloutput della mangler function

    loutpout y1y2y3y4 espresso dai quattro bit riportatinelle varie celle della tabella

    linputx1x2x3x4x5x6 espresso

    dai quattro bit internix2x3x4x5 riportati nelle intestazionidelle colonne, e

    dai due bit esternix1x6 riportati nelle intestazioni di righe

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    61/154

    Tabelle di S-box 2, S-box 3 e S-box 4

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    62/154

    Tabelle di S-box 5, S-box 6 e S-box 7

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    63/154

    Tabella di S-box 8

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    64/154

    Permutazione delloutput dellS-box

    Gli otto output, da 4 bit, delle otto S-box sonoriuniti in un unico output a 32 bit che vienesottoposto ad una permutazione

    tale permutazione aumenta il livello di sicurezzaperch le sostituzioni fatte in ciascuna S-box in unround di DES vengono diffuse negli input di pi S-boxnel round seguente

    senza tale permutazione, un bit nella parte sx dellinput

    influenzerebbe principalmente alcuni bit della parte sxdelloutput

    la permutazione illustrata sotto; il primo bit in output siottiene da 16-esimo bit in input, e cos via

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    65/154

    Chiavi deboli e semi-deboli

    Ci sono sedici chiavi DES il cui utilizzo

    sconsigliato

    hanno delle propriet strane

    tuttavia la probabilit di generarne unarandomicamente 16/256

    anche sconsigliato usare chiavi DES aventi un

    valore (interpretate come intero) pari a qualchemigliaia

    un avversario potrebbe tentare una ricerca esaustiva a

    partire da 0 incrementando ogni volta di 1

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    66/154

    Chiavi deboli e semi-deboli

    Le sedici chiavi sospette si ottengono combinando lequattro configurazioni base di C0 e D0 a) tutti 1 b) tutti 0 c) 1 e 0 alternati d) 0 e 1 alternati

    quattro di queste corrispondono alle chiavi deboli

    quelle che combinano le configurazioni a) e b)

    le rimanenti dodici corrispondono alle chiavi semi-deboli

    1111 1111 1111 1111

    0000 0000 0000 0000

    1010 1010 1010 1010

    0101 0101 0101 0101

    C0 D0

    4 combinazioni

    4 chiavi deboli 16 combinazioni

    16 chiavi sospette

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    67/154

    Chiavi deboli e semi-deboli

    Due chiave sono inverse se cifrare con unaequivale a decifrare con laltra

    E(K1, m) = D(K1-1, m)

    E(K1

    -1, m) = D(K1, m)

    Ogni chiave debole coincide con la propriainversa

    Linversa di una chiave semi-debole unaltrachiave semi-debole

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    68/154

    Cosa c di speciale in DES?

    DES un algoritmo semplice

    ci induce a pensare che ognuno pu sviluppare

    un algoritmo di cifratura a chiave segreta!

    basta prendere i bit, fare qualche sostituzione, qualchemescolamento, ripetere pi volte ed ecco lalgoritmo!

    in realt ci sono molti misteri da comprendere

    come si giunti alle definizioni delle S-box?

    stato provato che invertendo la S-box 3 con la S-box 7

    DES un ordine di grandezza pi insicuro per alcuni

    attacchi specifici

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    69/154

    Segretezza del processo di progettazione

    Il processo di progettazione di DES non fu reso pubblico non si sa se alcuni dettagliprogettuali/implementativi sono stati voluti per aumentare la sicurezza, o

    sono puramente casuali, o sono stati apportati per renderlo vulnerabile a particolari

    attacchi noti solo ai progettisti

    Si dice che il processo di progettazione di DES fumantenuto segreto perch si basava su una attenta

    analisi di molti tipi di attacchi crittografici DES fu progettato per resistere a molti tipi di attacchi

    crittografici

    rendere pubblico il processo di progettazione implicavadivulgare anche le varie tipologie di attacchi

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    70/154

    ALGORITMO IDEAINTERNATIONAL DATA ENCRYPTION

    ALGORITHM

    Crittografia a Chiave Segreta

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    71/154

    International Data Encryption Algorithm (IDEA)

    IDEA, originariamente chiamato IPES (ImprovedProposed Encryption Standard), fu pubblicato nel 1991

    Fu progettato per consentire una implementazionesoftware computazionalmente efficiente

    IDEA prende in input blocchi di testo in chiaro da 64 bite produce in output blocchi di testo cifrato da 64 bit

    La chiave ha una lunghezza di 128 bit

    IDEA per molti aspetti somiglia a DES

    opera in pi round

    entrambi hanno una complicata mangler function che non sottoposta al vincolo di invertibilit generalmenterichiesto per permettere la decifratura

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    72/154

    International Data Encryption Algorithm (IDEA)

    la mangler function viene sempre eseguita nella

    stessa direzione sia in cifratura che in decifratura

    DES e IDEA hanno entrambi la propriet che la cifratura

    e la decifratura sono identiche tranne che per

    lespansione della chiave

    in DES, le stesse chiavi sono usate in ordine inverso

    in IDEA, il legame tra le chiavi di cifratura e di

    decifratura pi complesso

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    73/154

    Struttura base di IDEA

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    74/154

    Operazioni primitive

    Ogni operazione primitiva in IDEA mappa

    due quantit di 16 bit in input

    in una quantit di 16 bit in output

    mentre ogni S-box di DES mappa una quantit di 6 bit ininput in una di 4 bit in output

    IDEA usa tre operazioni, tutte facilmente

    calcolabili in software, per creare la biiezione che

    specifica la cifratura tutte e tre le operazioni sono invertibili, cosa

    importante per eseguire IDEA allindietro (decifratura)

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    75/154

    Operazioni primitive

    Le tre operazioni primitive sono or-esclusivo (XOR ) bit a bit unaddizione (+) leggermente modificata (mod 216)

    una moltiplicazione () leggermente modificata(mod (216 + 1))

    X=x1x2x16

    Y= y1y2y16

    Z= z1z2z16

    X=x1x2x16

    Y= y1y2y16

    Z= z1z2z16

    X=x1x2x16

    Y= y1y2y16

    Z= z1z2z16

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    76/154

    Operazioni primitive

    la ragione che non consente di utilizzare laddizione e lamoltiplicazione tradizionale che il risultato a 16 bit e

    possono esserci situazioni di overflow dato che anche

    gli input sono a 16 bit

    laddizione in IDEA consista semplicemente in unasomma binaria in cui si trascura il riporto finale; ci

    equivale a dire che si tratta di unaddizione mod216

    la moltiplicazione in IDEA si ottiene calcolando prima il

    risultato a 32 bit, e prendendo poi il resto delladivisione per 216 + 1; con un po di furbizia ci

    fattibile in modo efficiente

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    77/154

    Operazioni primitive

    la moltiplicazione mod (216 + 1) invertibile, nel sensoche ogni numeroxtra 1 e 216 ha un inverso y(cio un

    numero tra 1 e 216 tale che la moltiplicazione per y

    annulla leffetto della moltiplicazione perx: a

    risulta ax y= a), poich 216

    + 1 un numero primo tuttavia c una piccola furbata, il numero 0, che pu

    essere espresso con 16 bit, non avrebbe un inverso,

    mentre il numero 216, presente nellinsieme delle classi

    di resto modulo 216

    + 1, non esprimibile con 16 bit, entrambi i problemi sono risolti considerando 0

    come la codifica di 216

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    78/154

    Invertibilit delle operazioni primitive

    Come possibile invertire le tre operazioni

    primitive?

    chiaramente non si tratta di uninversione che

    permette di risalire ai due operandi a partire dalsolo risultato finale!

    seXY=Z, non possibile risalire adXe ad Ya partiredal soloZ,

    tuttavia, nellesecuzione allindietro di IDEA sarannonoti un operando e il risultato, diciamo Ye Z, e da

    questi sar possibile ottenereX

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    79/154

    Invertibilit delle operazioni primitive

    Si consideri loperazione generica Xop Y=Z e sisupponga di conoscere YeZ,

    allora per ciascuna delle tre operazioni primitive,

    X ottenibile come segue

    Inversione or-esclusivo (XOR ) bit a bit seXY=Z XYY=ZY X=ZY

    rispetto alloperazione ogni numero linverso di sestesso; YY= 0

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    80/154

    Invertibilit delle operazioni primitive

    Inversione addizione (mod 216)(+) seX+ Y(mod 216) =Z

    X+ Y+ (-Y)(mod 216) =Z+ (-Y) (mod 216) X=Z+ (-Y) (mod 216)

    rispetto alloperazione + linverso di un numero Y il numero-Y(mod 216)

    Inversione moltiplicazione (mod 216 + 1)() seXY(mod (216 + 1)) =Z XYY-1(mod (216 + 1)) =ZY-1(mod (216 + 1)) X=ZY-1(mod (216 + 1))

    Y-1(mod (216 + 1)) ottenibile con il lalgoritmo di Euclide

    b l d ll

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    81/154

    Invertibilit delle operazioni primitive

    Lunica parte di IDEA che non

    necessariamente invertibile la mangler

    function

    La gestione del progetto di IDEA stata molto

    ingegnosa per evitare la necessit di invertire

    la mangler function

    E i d ll hi i

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    82/154

    Espansione delle chiavi

    La chiave di 128 bit espansa in 52 chiavi da

    16 bit, K1, K2, , K52

    lespansione per la cifratura diversa da quella

    per la decifratura cifratura e decifratura coinciderebbero se non

    fosse per le chiavi che differiscono

    sia per lordine,

    sia per il valore delle chiavi usate nei round dispari

    E i d ll hi ( if )

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    83/154

    Espansione della chiave (cifratura)

    La chiave di 128 bit espansa in 52 chiavi da16 bit, K1, K2, , K52

    la procedura come segue

    le prime otto chiavi K1, K

    2, , K

    8sono ottenute

    spezzando la chiave da 128 bit in corrispondenza dei bitin posizione 161, 162, , 167

    le successive otto chiavi K9, K10, , K16 sono generateallo stesso modo, ma partendo dal bit in posizione 25 e

    tornando allinizio quando si arriva alla fine (scansioneciclica)

    le successive otto chiavi sono generate considerando 25bit di offset in pi e cos via finch non si ottengono 52chiavi

    E i d ll hi ( if )

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    84/154

    Espansione della chiave (cifratura)

    si noti che in 6 fasi vengono generate 48 chiavi e in 7fasi 52 nellultima fase, la settima, sono generatesolo 4 chiavi

    lultima fase inizia dal bit in posizione 23 e si estende

    fino al bit in posizione 86 i bit in posizione da 1 a 22e da 87a 128 sono usati una volta in meno rispetto

    quelli in posizione da 83 a 128

    E i d ll hi ( if t )

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    85/154

    Espansione della chiave (cifratura)

    generazione delle chiavi K1, K2, , K8

    generazione delle chiavi K9, K10, , K16

    E i d ll hi ( if t )

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    86/154

    Espansione della chiave (cifratura)

    la generazione delle 52 chiavi di decifratura sarillustrata nel seguito

    WARNING! nello standard IDEA c una piccola stranezza: le chiavi

    K50 e K51 sono invertite!

    probabilmente c stata una svista nella definizione

    dello standard! se si desidera implementare IDEA necessario, dopo

    aver generato le 52 chiavi di cifratura, provvedere ad

    invertire K50 e K51

    IDEA d

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    87/154

    IDEA un round

    IDEA esegue 17round

    i round dispari sono diversi da quelli pari

    in alcuni casi si parla di 8 round; due round vengono

    considerati come un singolo round

    linput di ogni round una quantitXa 64 bit separata

    in quattro quantitXa,Xb,Xc,Xdda 16 bit

    cioX=Xa |Xb |Xc |Xd

    ad ogni round linputXa |Xb |Xc |Xdviene combinatocon alcune delle 52 chiavi per ottenere in output una

    versione aggiornata diXa |Xb |Xc |Xd i round dispari usano quattro delle 52 chiavi Ki: Ka, Kb, Kc, Kd

    i round pari usano due delle 52 chiavi Ki: Ke, Kf

    IDEA d

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    88/154

    IDEA un round

    Ad esempio nel round 1, Ka, Kb, Kc, Kd= K1, K2, K3, K4 nel round 2, Ke, Kf= K5, K6 nel round 3, Ka, Kb, Kc, Kd= K7, K8, K9, K10 nel round 4, Ke, Kf= K11, K12

    in un round dispari gli input sono

    Xa,Xb,Xc,Xd Ka, Kb, Kc, Kd

    in un round pari gli input sono

    Xa,Xb,Xc,Xd K

    e

    , Kf

    R d di i

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    89/154

    Round dispari

    Il round dispari semplice XaXaKa XdXdKd X

    c

    Xb

    + Kb

    XbXc + Kc

    R d di i

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    90/154

    Round dispari

    Si osservi che un round dispari facilmente invertibile il vecchioXa si ottiene moltiplicando () il nuovoXa per

    linverso moltiplicativo mod (216 + 1) di Ka analogamente si procede conXd

    il vecchioXb si ottiene sommando al nuovoXclinversoadditivo di Kb, cio sottraendo Kb

    analogamente si procede conXc

    in fase di decifratura il round dispari analogo alla cifratura, tranne il fatto di

    dover considerare per ogni chiave il suo inversomatematico (rispetto le relative operazioni)

    ci annulla le operazioni fatte nella fase di cifratura

    R d i

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    91/154

    Round pari

    Il round pari pi complicato

    gli input sono Xa,Xb,Xc,Xd e Ke, Kf

    prima vengono calcolate due quantit (a 16 bit)

    Yin eZin

    poi viene applicata una funzione, la mangler

    function, che

    prende in input Yin,Zin, Ke e Kf, e

    produce in output due quantit (a 16 bit) YouteZout

    in fine, vengono calcolati

    i nuovi valori diXa,Xb,Xc,Xdcombinando

    i loro vecchi valori con YouteZout

    Round pari

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    92/154

    Round pari

    In particolare, si hanno le seguenti relazioni Yin =XaXb Zin =XcXd Y

    out

    = ((Ke

    Yin

    ) +Zin

    )Kf

    Zout= (KeYin) + Yout

    i nuovi valori diXa,Xb,Xc,Xd sono

    XaXaYout XbXbYout XcXcZout XdXdZout

    Round pari

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    93/154

    Round pari

    Inversione del round pari

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    94/154

    Inversione del round pari

    linversione del round pari veramente ingegnosa il round pari coincide con il suo inverso

    la decifratura di un round pari usa le stesse chiavie non il loro inverso matematico

    nella decifratura dei round dispari si considerava un setdi chiavi ottenuto facendo linverso matematico dellechiavi di cifratura

    il round pari prende in input

    Xa,Xb,Xc,Xd e Ke, Kf

    e produce in output

    Xa,Xb,Xc,Xd cio i nuovi valori diXa,Xb,Xc,Xd

    Inversione del round pari

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    95/154

    Inversione del round pari

    risulta che (sar mostrato dopo) se gli input del round pari sonoXa,Xb,Xc,Xd, e

    le chiavi rimangono le stesse,

    loutput Xa

    ,Xb

    ,Xc

    ,Xd

    Xa Xb Xc Xd

    Xa

    Xb

    Xc

    Xd

    KeKf

    round 2nENCRYPTION

    Xa Xb Xc Xd

    Xa

    Xb

    Xc

    Xd

    round 2nDECRYPTION

    Inversione del round pari prova

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    96/154

    Inversione del round pari prova

    Mostreremo che inserendo in input al round pariXa,Xb,Xc,Xd, e

    considerando le stesse chiavi Ke, Kf

    si ottengono in outputXa,Xb,Xc,Xd tali che Xa =Xa Xb =Xb Xc =Xc Xd=Xd

    Prova

    daX

    a =XaYoute daX

    b =XbYout Yin =XaXb = (XaYout) (XbYout) =XaXb = Yin daXc =XcZoute daXd=XdZout Zin =XcXd= (XcZout) (XdZout) =XcXd=Zin

    Inversione del round pari prova

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    97/154

    Inversione del round pari prova

    gli input della mangler function sono gli stessi Yout= Yout e Zout=Zout Xa =XaYout= (XaYout) Yout=

    =XaYoutYout=Xa Xb =XbYout= (XbYout) Yout=

    =XbYoutYout=Xb Xc =XcZout= (XcZout) Zout=

    =XcZoutZout=Xc Xd=XdZout= (XdZout) Zout=

    =XdZoutZout=Xd

    Calcolo chiavi di decifratura

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    98/154

    Calcolo chiavi di decifratura

    IDEA stato progettato in modo tale che lo stessocodice (o hardware) pu effettuare sia la cifraturache la decifratura

    scegliendo in modo opportuno (diversamente) le 52

    chiavi espanse per la cifratura e per la decifratura

    si possono scegliere la chiavi inverse (di decifratura) inmodo tale che la procedura di cifratura, cos come ,esegue anche la decifratura

    lidea base di prendere le inverse (dal punto di vistamatematico) delle chiavi di cifratura e usarle in ordineopposto

    Calcolo chiavi di decifratura

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    99/154

    Calcolo chiavi di decifratura

    Si considerino le 52 chiavi usate in cifratura K1, K2, ,K52 nei round dispari sono state usate quattro chiavi mentre

    nei round pari solo due round 1 K1, K2, K3, K4 round 3 K7, K8, K9, K10 round 17 K49, K50, K51, K52

    quindi le prime quattro chiavi da usare nel primo round didecifratura devono essere

    K1 : inverso matematico di K49; trattandosi di una moltiplicazione() K1 deve essere linverso moltiplicativo di K49 mod (216 + 1) K2 : inverso additivo di K50; cio -K50 K3 : inverso additivo di K51 ; cio -K51 K4 : inverso moltiplicativo di K52

    Calcolo chiavi di decifratura

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    100/154

    Calcolo chiavi di decifratura

    considerando la seguente notazione im(Ki): inverso moltiplicativo di Kimod (2

    16 + 1)

    ia(Ki): inverso additivo di Kimod 216

    le 52 chiavi di decifratura Kisono

    round 1: K1, K2, K3,K4 = im(K49), ia(K50), ia(K51), im(K52)

    round 2: K5, K6= K47, K48 round 3: K7, K8, K9,K10 = im(K43), ia(K44), ia(K45), im(K46)

    round 4: K11, K12= K41, K42

    round 17: K49, K50, K51,K52 = im(K1), ia(K2), ia(K3), im(K4)

    Architettura hardware/software

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    101/154

    Architettura hardware/software

    Da quanto detto, una possibile architettura diun sistema hardware/software per IDEA laseguente

    5216 bit

    input

    plaintext or ciphertext

    output

    ciphertext or plaintextENCRYPTION

    KEY EXP

    K E/D

    K*

    128 bit

    64 bit 64 bit

    E/D true K* = K1

    , K2

    , , K52E/D false K* = K1, K2, , K52

    Funziona IDEA?

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    102/154

    Funziona IDEA?

    Si mostrato che nota la chiave di cifratura ladecifratura consente di risalire al testo in chiaro

    Riguardo il livello di sicurezza offerto da IDEA non esistono prove formali che stabiliscono in modo

    chiaro quanto IDEA sia sicuro

    si assume che sia sicuro semplicemente perch ancora

    nessuno ha reso pubblico un modo per violarlo

    chiaramente, tentare di violare IDEA con un approccio

    esaustivo richiede attualmente una quantit smisurata

    di risorse di calcolo/tempo

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    103/154

    ALGORITMO AES

    ADVANCED ENCRYPTION STANDARD

    Crittografia a Chiave Segreta

    Advanced Encryption Standard (AES)

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    104/154

    Advanced Encryption Standard (AES)

    AES fu introdotto perch DES aveva una chiave troppo corta

    3DES (triplo DES) era troppo lento

    IDEA era protetto da un brevetto, era in parte

    sospetto e lento

    Il NIST si impegn a sviluppare un nuovo standard

    non si trattava di un problema solo tecnico, ma

    anche di un problema politico alcuni rami del governo avevano ostacolato il pi possibile la

    diffusione e lesportazione della crittografia sicura

    il fatto che il governo appoggiasse NIST era visto conscetticismo; molti non si fidavano

    Un po di storia

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    105/154

    Un po di storia

    Il NIST voleva realmente creare un nuovostandard di sicurezza eccellente

    cio efficiente, flessibile, sicuro e free (non protetto),

    ma quale poteva essere il modo migliore per farlo?

    da un lato NIST doveva essere parte integrante del processo

    di progettazione

    poich si trattava di uno sforzo ingente e sembrava che

    nessun altro avesse le competenze tecniche e lenergia per

    compierlo

    dallaltro proporre un cifrario sviluppato, segretamente, dalla

    NSA non avrebbe funzionato; nessuno si sarebbe fidato, ci

    potevano essere delle trapdoor

    Un po di storia

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    106/154

    Un po di storia

    Nel 1997 il NIST annunci una gara per laselezione di un nuovo standard di cifratura

    destinato a proteggere informazioni governativesensibili

    la gara era aperta ad ogni persona/gruppo in qualsiasiparte del mondo

    furono specificati i requisiti del cifrario incluso unadocumentazione che spiegasse le ragioni delle scelte

    progettuali per molti anni si tennero delle conferenze per la

    presentazione di proposte,

    che venivano sottoposte a cicli di revisione eseguiti dacrittografi esperti e motivati

    Un po di storia

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    107/154

    Un po di storia

    Dopo molti anni di studio e discussioni, il NISTscelse lalgoritmo Rijndael

    proposto da due crittografi belgi Joan Daemen eVincet Rijmen

    Rijndael prevede diverse lunghezze per i blocchi eper la chiave

    128, 160, 192, 224, e 256 bit

    la lunghezza di un blocco e quella della chiave possonodifferire

    Il 26 Novembre 2001, viene emanato AES

    una standardizzazione di Rijndael

    Un po di storia

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    108/154

    Un po di storia

    Lo standard AES fissa la lunghezza dei blocchi a 128 bit

    la chiave pu essere di 128, di 192 o di 256 bit

    si parla di AES-128, AES-192 e AES-256

    Nel seguito si descriver Rijndael

    specificando di volta in volta i parametri di AES

    Rijndael somiglia a DES e a IDEA

    ci sono pi round che strapazzano un blocco di testoin chiaro per ottenere il corrispondente cifrato, e

    c un algoritmo per lespansione della chiave; a partiredalla chiave segreta genera le chiavi da usare nei vari

    round

    Rijndael/AES parametri

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    109/154

    Rijndael/AES parametri

    Rijndael ha una struttura flessibile grazie allusodi due parametri indipendenti, e di un terzo

    parametro derivato dai primi due

    Nbdimensione di un blocco: numero di parole (word)da 32 bit (colonne da 4 ottetti) in un blocco da cifrare

    in AES Nb = 4, un blocco ha lunghezza 128 bit4 parole da32 bit; 4 colonne da 4 ottetti

    ottetto

    Nb

    Rijndael/AES parametri

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    110/154

    Rijndael/AES parametri

    Nkdimensione della chiave: numero di parole(word) da 32 bit (colonne da 4 ottetti) in una

    chiave di cifratura

    in AES-128 Nk= 4

    in AES-192 Nk= 6

    in AES-256 Nk= 8

    in Rijndael Nkpu essere un qualsiasi intero tra 4 e 8

    ottetto

    NK

    Rijndael/AES parametri

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    111/154

    Rijndael/AES parametri

    Nrnumero di round: questo parametro dipendeda Nb e da Nk pi lunga la chiave pi round sono necessari per

    rendere la violazione della cifratura difficile quanto un

    attacco a forza bruta sulla chiave il numero di round deve aumentare allaumentare della

    lunghezza di un blocco (e della chiave); ogni bit deltesto in chiaro (e della chiave) deve influenzare (inmodo complesso) ciascun bit del testo cifrato

    Rijndael specifica che Nr= 6 + max(Nb, Nk) in AES-128 Nr= 10 in AES-192 Nr= 12 in AES-256 Nr= 14

    Array di stato

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    112/154

    Array di stato

    Rijndael mantiene un array di statorettangolare

    ogni elemento dellarray un ottetto

    complessivamente ci sono Nb colonne da 4 ottetti lo stato iniziale ottenuto popolando larray, colonna

    per colonna, mediante le Nb colonne da 4 ottetti che

    costituiscono il blocco di input

    durante gli Nrround lo stato viene modificato

    il blocco di output dellalgoritmo si ottiene leggendo

    colonna per colonna lo stato finale

    Array di stato

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    113/154

    Array di stato

    Prima del round 1, tra i vari round, e dopo ilround Nrviene eseguito

    lor-esclusivo ( XOR) del contenuto dellarray di

    stato, con i prossimi 4Nb ottetti della chiave espansa

    gli ottetti della chiave espansa vengono letti per

    colonna in modo da formare un matrice di Nb colonne

    da 4 ottetti ciascuna

    i primi Nr1 round comprendono una sequenza di

    operazioni identiche, mentre il round Nrne

    omette una

    Struttura base di Rijndael

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    114/154

    Struttura base di Rijndael

    Espansione della chiave

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    115/154

    Espansione della chiave

    La chiave segreta di Rijndael un bloccoformato da 4Nkottetti

    Lalgoritmo di espansione della chiave

    scandisce la chiave in modo da ottenere Nkcolonne da 4 ottetti,

    poi espande la matrice ottenuta introducendo

    delle colonne (da 4 ottetti) aggiuntive, lespansione si arresta quando si hanno

    complessivamente (Nr+ 1)Nb colonne

    lesatta quantit di chiavi espanse

    Espansione della chiave

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    116/154

    Espansione della chiave

    la procedura di espansione usa lo stesso tipo dioperazioni primitive usate durante i round

    Numerazioni

    righe, colonne, e chiavi di round sono numerate apartire 0

    i round sono invece numerati a partire da 1

    Operazioni primitive

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    117/154

    Operazioni primitive

    Rijndael utilizza quattro operazioni primitive1. or-esclusivo (XOR )

    in cui sono coinvolte le chiavi espanse

    2. sostituzione di byte, chiamata S-box

    si tratta di una sostituzione ottetto-per-ottetto (byte-per-

    byte) definita da una specifica tabella

    per ciascuno dei possibili 256 byte in input viene specificato

    il corrispondente byte in output tra i 256 possibili

    per la rappresentazione della tabella fa comodo usare la

    notazione esadecimale; ad esempio FCrappresenta il 252-

    esimo byte

    la tabella pu essere visualizzata come una matrice 1616

    Rijndael Sbox

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    118/154

    Rijndael Sbox

    Esempio

    il 97-esimo byte il numero

    61HEX in esadecimale,quindi mappato nel byte

    nella riga 6 e colonna 1che EFHEXche corrisponde

    al 239-esimo byte

    in binario si ha che

    (1100001)2= (97)10 mappato in

    (11101111)2 = (239)10

    Operazioni primitive

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    119/154

    Operazioni primitive

    3. scorrimento circolare di ottetti (byte) di una riga o diuna colonna pari a un qualche numero di celle

    4. mescolamento colonne, MixColumn: sostituzione diuna colonna di 4ottetti con unaltra colonna di 4ottetti MixColumn pu essere implementata con una singola tabella

    contenente 256 colonne di 4 ottetti

    ciascuno dei 4 ottetti in una colonna di input usato comeun indice per recuperare una colonna dalla tabella

    ogni colonna recuperata dalla tabella ruotata (scorrimento

    verticale circolare dallalto in basso) verticalmente in modotale che il suo ottetto in cima sia posto nella stessa rigadellottetto di input;

    e le quattro colonne ruotate sono sommate XOR () perprodurre la colonna di output

    MixColumn mediante tabella di lookup

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    120/154

    p

    4 ottetti di unacolonna di input

    scorrimento della colonna per

    allinearla allottetto di input ad

    da cui stata derivata

    4 ottetti di unacolonna di output

    MixColumn tabella di lookup

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    121/154

    p

    Esempio

    Allottetto 2b corrisponde la colonna

    di 4 ottetti che si trova allincrocio della

    riga 2 e della colonna b, cio la

    colonna56

    2b

    28

    7d

    Invertibilit delle operazioni primitive

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    122/154

    p p

    Lor-esclusivo (XOR ) chiaramente invertibile coincide con il suo inverso:XYY=X

    Linversa della S-box si ottiene considerandosemplicemente una tabella diversa

    cio la tabella inversa

    Linversa dello scorrimento circolare di una riga ocolonna si ottiene semplicemente eseguendo lo

    stesso scorrimento, ma in direzione opposta Linversa di MixColumn, detta InvMixColumn,

    esattamente come MixColumn, ma con unatabella di lookup diversa

    Rijndael S-box inversa

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    123/154

    j

    InvMixColumn tabella di lookup

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    124/154

    p

    Decifratura di Rijndael

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    125/154

    j

    Il cifrario inverso di Rijndael pu pertantoimplementarsi applicando

    le inverse delle operazioni primitive,

    eseguite in sequenza opposta rispetto quella di cifratura

    Tuttavia, si pu mostrare che, grazie alle propriet matematiche di cui gode Rijndael,

    il cifrario inverso ha una struttura molto simile al cifrariodiretto, ma con operazioni invertite, e con le chiavi di

    round non soltanto in ordine inverso, ma con InvMixColumn applicato a tutte tranne la prima e

    lultima colonna

    Espansione della chiave

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    126/154

    p

    Lespansione delle chiavi inizia con la chiave segreta organizzata come Nk

    colonne di 4 ottetti, e

    iterativamente genera le prossime Nkcolonne della

    chiave espansa

    Espansione della chiave

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    127/154

    p

    Per generare li-esimo insieme di Nkcolonne iinizia da 1; lo 0-esimo insieme la chiave segreta

    serve soltanto l(i-1)-esimo insieme di colonne

    la prima colonna (colonna 0) del nuovo insieme siottiene mediante

    uno scorrimento circolare verticale di una cella

    dellultima colonna dell(i-1)-esimo insieme, e

    applicando la S-box ad ogni ottetto, e

    sommando in XOR () una costante Cicon lottetto 0(che sta in cima)

    Espansione della chiave (Nk 6)

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    128/154

    p ( k )

    le rimanenti colonne sono generate a turno sommando in XOR la precedente colonna con,

    la corrispondente colonna del precedente (i-1)-esimo

    insieme

    Valori delle costanti Ci

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    129/154

    i

    1 2 4 8 10 20 40 80 1b 36

    6c d8 ab 4d 9a 2f 5e bc 63 c6

    97 35 6a d4 B3 7d fa ef c5 (91)

    i= 1 to 10

    i= 11 to 20

    i= 21 to 30

    Espansione della chiave (Nk > 6)

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    130/154

    p ( k )

    c uneccezione nel procedimento di espansionedella chiave,

    se Nk> 6, allora necessario uno step aggiuntivo

    per generare la colonna 4

    necessario applicare la S-box ad ogni ottetto

    lespansione della chiave termina non appena (Nr

    + 1)Nb colonne di chiavi espanse sono generate

    Espansione della chiaveNk > 6

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    131/154

    p k

    Rijndael round

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    132/154

    j

    Ogni round di Rijndael una sequenza identica di treoperazioni:

    1. Ogni ottetto della matrice di stato viene sottopostoalla S-box

    2. Scorrimenti circolari La riga 1 dello stato viene fatta scorrere a sx di una colonna

    La riga 2 dello stato viene fatta scorrere a sx di 2 + Nb/8colonne (2 se Nb< 8, 3 altrimenti)

    La riga 3 dello stato viene fatta scorrere a sx di 3 + Nb/7colonne (3 se Nb< 7, 4 altrimenti)

    (in AES si semplifica in scorrimento a sx di icolonne della riga i)

    3. Ogni colonna dello stato viene sottoposta allaMixColumn; il round Nromette questa operazione

    Rijndael round invertito

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    133/154

    j

    Essendo ogni operazione invertibile la decifratura pu effettuarsi applicando in ordine

    inverso linversa (in senso matematico) di ognioperazione, e

    usando le chiavi di round in ordine inverso

    Tuttavia la decifratura pu avere la stessastruttura della cifratura necessario usare le chiavi di round in ordine

    opposto, e

    applicare InvMixColumn ad ogni colonna delle chiaviespanse tranne quelle del round iniziale e finale

    Rijndael round invertito

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    134/154

    Ogni round invertito di Rijndael una sequenzaidentica di tre operazioni:

    1. Ogni ottetto della matrice di stato viene sottopostoalla S-box

    2. Scorrimenti circolari La riga 1 dello stato viene fatta scorrere a dx di una

    colonna

    La riga 2 dello stato viene fatta scorrere a dx di 2 + Nb/8colonne (2 se Nb< 8, 3 altrimenti)

    La riga 3 dello stato viene fatta scorrere a dx di 3 + Nb/7colonne (3 se Nb< 7, 4 altrimenti)

    (in AES si semplifica in scorrimento a dx di icolonne della riga i)

    3. Ogni colonna dello stato viene sottoposta alla

    InvMixColumn; il round Nromette questa operazione

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    135/154

    CIFRARI A FLUSSO E RC4

    Crittografia a Chiave Segreta

    Cifrari a blocchi vs cifrari a flusso

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    136/154

    Un cifrario a blocchi elabora un blocco dielementi in ingresso per volta produce un blocco di uscita per ciascun blocco di

    ingresso

    il testo in chiaro deve essere preliminarmente suddivisoin blocchi il testo cifrato si ottiene combinando i vari blocchi cifrati DES, IDEA e AES sono esempi di cifrari a blocchi simmetrici

    Un cifrario a flusso elabora continuamente gli

    elementi in ingresso produce in uscita un flusso di elementi cifrati

    gli elementi cifrati vengono prodotti singolarmente, uno allavolta, man mano che la cifratura procede

    Cifrari a blocchi vs cifrari a flusso

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    137/154

    Sebbene i cifrari a blocchi siano molto picomuni, in alcune applicazioni i cifrari a flussosono pi adatti

    applicazioni che richiedono la cifratura/decifratura di

    un flusso di dati ad esempio le trasmissioni di stream audio/video

    di seguito sar esaminato il cifrario a flusso pipopolare: RC4

    preliminarmente sar discussa la struttura generale diun cifrario a flusso

    Struttura di un cifrario a flusso

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    138/154

    Un tipico cifrario a flusso cifra il testo in chiaro unbyte per volta

    sebbene possa essere progettato per agire su unitpi grandi di un byte

    pseudo-random

    stream gener.

    pseudo-random

    stream gener.

    K K

    plaintext

    stream

    plaintext

    stream

    ciphertext

    stream

    ENCRYPTION DECRYPTION

    keystream keystream

    Struttura di un cifrario a flusso

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    139/154

    La chiave segreta K(di lunghezza finita) lingresso di un generatore pseudo-casuale dibit

    che produce un flusso (di lunghezza arbitraria) di

    byte apparentemente casuale, chiamato chiave diflusso (keystream)

    la chiave di flusso un flusso

    impredicibile se non si conosce la chiave, maviene generato in modo deterministico a partiredalla chiave

    non presenta regolarit statistiche

    Cifratura

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    140/154

    Il keystream combinato un byte alla voltacon il flusso del testo in chiaro mediante un

    or-esclusivo (XOR ) bit a bit

    il risultato di questo processo il flusso cifrato ad esempio, se

    pi= 11001100 li-esimo byte del flusso del testo in

    chiaro, e

    ki= 01101100 li-esimo byte del keystream, allora

    ci=piki= 10100000 li-esimo byte del flusso deltesto cifrato

    Decifratura

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    141/154

    La decifratura richiede luso della stessasequenza pseudo-casuale (keystream)

    combinata un byte alla volta con il testo cifrato

    mediante or-esclusivo (EX-OR ) bit a bit ad esempio, se

    ci=piki= 10100000 li-esimo byte del flusso deltesto cifrato, e

    ki= 01101100 li-esimo byte del keystream, allora

    pi= ciki= (piki)ki=pi (kiki) =pi= 11001100 li-esimo byte del flusso del testo in chiaro

    Osservazioni

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    142/154

    Pi casuale laspetto del keystream, pi randomizzato il testo cifrato

    rendendo la crittoanalisi pi difficile

    Pertanto il keystream

    dovrebbe avere un periodo grande

    la funzione deterministica che genera il keystream, a partiredalla chiave segreta, per forza di cose periodica

    dovrebbe approssimare il pi possibile un flusso

    casuale ad esempio, 0 e 1 dovrebbero essere equamente presenti

    riguardando il keystream come una sequenza di byte, tutti i256possibili byte dovrebbero apparire disordinatamente econ una frequenza uniforme

    Osservazioni

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    143/154

    Come nei cifrari a blocchi, necessario che lachiave sia sufficientemente lunga per

    proteggersi dagli attacchi a forza bruta

    preferibile una lunghezza della chiave di almeno128 bit

    Cifrari a flusso vs cifrari a blocchi

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    144/154

    Se un cifrario a flusso correttamente progettato pu essere sicuro tanto quanto un cifrario a blocchi

    a parit di lunghezza della chiave segreta

    Il vantaggio principale di un cifrario a flusso che

    quasi sempre pi veloce, vedi tabella, ed

    facilmente implementabile

    spesso bastano poche linee di codice, vedi descrizione RC4

    Cifrari a flusso vs cifrari a blocchi

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    145/154

    Confronto delle velocit di cifrari simmetrici suun Pentium II

    Cifrario Lunghezza della chiave Velocit variabile (Mbps)

    DES 56 9

    3DES 168 3

    RC2 variabile 0,9

    RC4 variabile 45

    Cifrari a flusso vs cifrari a blocchi

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    146/154

    Il vantaggio di un cifrario a blocchi che la chiavesegreta riutilizzabile per pi comunicazioni

    se due testi in chiaro sono cifrati con la stessa chiave

    segreta, usando un cifrario a flusso, la crittoanalisi

    spesso molto semplice

    se i due flussi di testo cifrato sono sommati in XOR () il flusso risultante lo XOR dei flussi di testo inchiaro

    se i testi in chiaro sono stringhe testuali, numeri di carta di

    credito o altri flussi di byte con propriet note lacrittoanalisi pu aver successo

    Algoritmo RC4

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    147/154

    RC4 un cifrario a flusso con dimensione della chiave variabile,

    con funzionamento orientato al byte

    fu progettato nel 1987 da Ron Rivest RSA Security

    Si basa sulluso di una permutazione casuale

    dagli studi sembra che il periodo del cifrario siasuperire a 10100

    viene usato

    negli standard SSL/TLS (Secure Socket Layer/Transport LayerSecurity)

    nel protocollo WEP (Wired Equivalent Privacy)

    nel protocollo WPA (WiFi Protected Access)

    Algoritmo RC4

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    148/154

    Lalgoritmo RC4 molto semplice da spiegare;basta spiegare come viene generato il

    keystream

    lalgoritmo mantiene un array di statomonodimensionale S contenente 256 byte

    S[0], S[1], , S[255] sono i 256 byte

    ogni elemento/byte S[i] rappresenta un numero da 1

    a 255

    una chiave di lunghezza variabile da 1 a 256 byte

    (da 8 a 2048 bit) viene usata per inizializzare il

    contenuto dellarray di stato

    Algoritmo RC4

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    149/154

    S contiene in ogni momento una delle 256!permutazioni dei numeri da 0 a 255

    per la cifratura/decifratura viene generato un byte

    kselezionando da S uno dei 255 elementi in

    maniera sistematica

    subito dopo la generazione del byte k, gli elementi

    di S vengono permutati

    lalgoritmo prosegue alternando le ultime due fasi(generazione di ke permutazione) finch il flusso

    in input non termina

    RC4 inizializzazione

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    150/154

    gli elementi di S vengono impostati uguali ai valori da0 a 255 in ordine crescente

    S[0] = 0, S[1] = 1, , S[255] = 255

    un vettore temporaneo T, della stessa lunghezza di S,viene usato per memorizzare temporaneamente lachiave K

    se la lunghezza di K 256 byte Kviene trasferita in T altrimenti, Kviene copiata pi volte in Tfino a riempirlo

    /* Inizializzazione */for i = 0 to 255 do {

    S[i] = i;

    T[i] = K[imodkeylen]; // keylen: lunghezza di S

    }

    RC4 permutazione iniziale

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    151/154

    successivamente si user Tper produrre lapermutazione iniziale

    si scandisce S e per ciascun S[i], si scambia S[i] con unaltro elemento di S scelto in modo sistematico in base,tra laltro, al contenuto di T[i]

    poich la sola operazione su S lo scambio, il soloeffetto una permutazione

    S contiene ancora tutti i numeri da 0 a 255

    /* Permutazione iniziale di S */j = 0;

    for i = 0 to 255 do {

    j = (j + S[i] + T[i])mod256;

    scambia(S[i], S[j]);

    }

    RC4 generazione del flusso

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    152/154

    Una volta che S inizializzato, la chiavesegreta K(quindi anche larray T) non vienepi utilizzata

    il keystream viene generato facendo una

    scansione ciclica di S ciascun elemento S[i] viene scambiato con un altro byte

    di S a secondo di uno schema che dipende dallaconfigurazione corrente di S

    dopodich, viene generato un singolo byte kdelkeystream sempre in base alla configurazione correntedi S

    RC4 generazione del flusso

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    153/154

    /* Generazione del flusso */

    i, j = 0;while (true) {

    i = (i + 1)mod256;

    j = (j + S[i])mod256;

    scambia(S[i], S[j]);

    t = (S[i] + S[j])mod256;k = S[t];

    }

    Bibliografia

  • 7/29/2019 D03 Crittografia a Chiave Segreta

    154/154

    [KPS02] C. Kaufman, R. Perlman, M. Speciner. NetworkSecurityPrivate Communication in a Public World.Prentice Hall.

    [PFL08] C. P. Pfleeger, S. L. Pfleeger. Sicurezza inInformatica. Pearson, Prentice Hall.

    [STA07] W. Stallings. Sicurezza delle reti. Pearson,Prentice Hall.

    [Wiki-it] http://it.wikipedia.org/wiki/

    [Wiki-en] http://en.wikipedia.org/wiki/

    [ISECOM] Institute for Security and OpenMethodologies