D07 Crittografia a Chiave Pubblica Parte I

  • Upload
    lezan

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    1/97

    Crittografia a Chiave Pubblica

    Parte I

    Luca Grilli

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    2/97

    INTRODUZIONE

    Crittografia a Chiave Pubblica Parte I

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    3/97

    Introduzione

    La crittografia a chiave pubblica si basa su alcunirisultati nellambito della teoria dei numeri

    Gli algoritmi di crittografia a chiave pubblica sono

    molto eterogenei e differiscono profondamente non soltanto in come alcune funzioni vengono

    eseguite, ma spesso in quali funzioni vengonoeseguite

    tutti gli algoritmi di hash fanno la stessa cosa prendonoun messaggio ed eseguono una trasformazione irreversibile

    tutti gli algoritmi a chiave segreta fanno la stessa cosa prendono un blocco, lo cifrano in modo reversibile eapplicano dei metodi di concatenamento dei blocchi per

    cifrare dei messaggi generici

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    4/97

    Introduzione

    Si esamineranno i seguenti schemi di cifratura a chiavepubblica

    RSA e ECC, usati per cifrare e per calcolare la firma digitale

    ElGamal e DSS, usati per la firma digitale

    Diffie-Hellman, permette di stabilire un segreto condiviso,ma non fornisce alcun algoritmo che usa effettivamentetale segreto

    potrebbe essere usato in congiunzione ad uno schema di cifratura

    a chiave segreta Sistemi di dimostrazione a conoscenza zero (zero

    knowledge proof systems), usati soltanto perlautenticazione

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    5/97

    Introduzione

    Lunico aspetto comune a tutti gli algoritmi di

    crittografia a chiave pubblica

    la presenza di due quantit correlate

    chiave segreta, chiave pubblica

    associate a ciascuna entit che partecipa ad una

    comunicazione cifrata

    spesso si usa il termine principal per denotare una siffatta

    entit, che pu essere un calcolatore o una persona

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    6/97

    ARITMETICA MODULARE

    Crittografia a Chiave Pubblica Parte I

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    7/97

    Aritmetica modulare

    La maggior parte degli algoritmi a chiave pubblicasi basano sullaritmetica modulare

    Fissato un interno n > 1, laritmetica modulare

    considera linsieme degli interi non negativi minori din: {0, 1, 2, , n1}

    effettua operazioni ordinarie come laddizione e lamoltiplicazione, e

    sostituisce il risultatoxcon il resto rdella divisioneintera dixper n

    il risultato finale viene detto modulon o modn

    xmod n significa dividixper n e considera il resto

    qualche volta mod n omesso se chiaro dal contesto

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    8/97

    Addizione modulare mod 10

    Consideriamo laddizione mod 10 siano a e b due numeri minori di 10

    (a + b) mod 10 si ottiene effettuando laddizione ordinaria, e

    considerando come risultato finale la cifra meno significativa; cioil resto della divisione per 10

    + 0 1 2 3 4 5 6 7 8 9

    0 0 1 2 3 4 5 6 7 8 9

    1 1 2 3 4 5 6 7 8 9 0

    2 2 3 4 5 6 7 8 9 0 1

    3 3 4 5 6 7 8 9 0 1 2

    4 4 5 6 7 8 9 0 1 2 3

    5 5 6 7 8 9 0 1 2 3 4

    6 6 7 8 9 0 1 2 3 4 5

    7 7 8 9 0 1 2 3 4 5 6

    8 8 9 0 1 2 3 4 5 6 7

    9 9 0 1 2 3 4 5 6 7 8

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    9/97

    Addizione modulare mod 10

    Sia m (< 10), un qualche messaggio

    laddizione di una costante kmod 10 puriguardarsi come una cifratura a chiave segreta

    ogni cifra decimale m viene mappata in una diversacifra decimale c = (m + k) mod 10 in modo reversibile

    k la chiave segreta; chiaramente si tratta di unpessimo cifrario ( il cifrario di Cesare)

    la decifratura consiste nel sottrarre kmod 10; cio vasottratto ke se il risultato minore di 0, va aggiunto 10

    come nellaritmetica ordinaria, sottrarre kequivale asommare -k, cio linverso additivo di k

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    10/97

    Addizione modulare mod 10

    un inverso additivo di k un numero che sommato a k

    d 0; formalmente (k+ (-k)) = 0 mod 10

    ad esempio, linverso additivo di 4 6 perch 4 + 6 = 0

    nellaritmetica modulo 10

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    11/97

    Moltiplicazione modulare mod 10

    Si consideri la tabella della moltiplicazione mod 10

    la moltiplicazione mod 10 per una costante k {1, 3, 7, 9}pu riguardarsi come una cifratura a chiave segreta

    produce una permutazione dellinput

    la moltiplicazione per ogni altro numero invece non funziona

    0 1 2 3 4 5 6 7 8 9

    0 0 0 0 0 0 0 0 0 0 0

    1 0 1 2 3 4 5 6 7 8 9

    2 0 2 4 6 8 0 2 4 6 8

    3 0 3 6 9 2 5 8 1 4 7

    4 0 4 8 2 6 0 4 8 2 6

    5 0 5 0 5 0 5 0 5 0 5

    6 0 6 2 8 4 0 6 2 8 4

    7 0 7 4 1 8 5 2 9 6 3

    8 0 8 6 4 2 0 8 6 4 2

    9 0 9 8 7 6 5 4 3 2 1

    Ad esempio, se si prova a cifrare

    moltiplicando per 5, met dei numeri

    sarebbero cambiati in 0e laltra met

    in 5

    ci comporta una perdita di

    informazione; la trasformazione non

    invertibile

    impossibile decifrare

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    12/97

    Moltiplicazione modulare mod 10

    Pertanto, la moltiplicazione mod 10 pu essereusata per cifrare

    a condizione che il fattore ksia scelto in modo

    opportuno La decifratura pu essere eseguita, analogamente

    al caso delladdizione, moltiplicando per linversomoltiplicativo di k

    nellaritmetica ordinaria linverso moltiplicativo di k1/k in generale 1/k una quantit frazionaria

    ma nellaritmetica modulare si considerano solonumeri interi

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    13/97

    Inverso moltiplicativo mod n

    Linversomoltiplicativo di k, scritto k-1, quelnumero che moltiplicato per kd 1

    (kk-1) mod 10 = 1 mod 10

    in generale, (kk-1

    ) mod n = 1 mod n Si osservi che per un dato n, non tutti i numeri

    hanno un inverso moltiplicativo mod n

    solo i numeri {1, 3, 7, 9} hanno gli inversi moltiplicativi

    mod 10 ad esempio, 7 un inverso moltiplicativo di 3 la cifratura

    pu ottenersi moltiplicando per 3 e la decifratura puottenersi moltiplicando per 7

    9 un inverso di se stesso; 1 un inverso di se stesso

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    14/97

    Inverso moltiplicativo mod n

    Si osservi inoltre che

    se kammette un inverso moltiplicativo mod nesiste un unico inverso moltiplicativo k-1 < n

    ad esempio, il numero 7ammette i seguenti inversimoltiplicativi mod 10 {3, 13, 23, 33, , 3 + i10, },

    ma soltanto 3 linverso moltiplicativo strettamente minoredi 10

    Ovviamente, la moltiplicazione mod n di per s

    non costituisce un cifrario sicuro ma funziona, nel senso che la moltiplicazione per k

    produce un mescolamento dellinput; la decifraturapu ottenersi moltiplicando per k-1

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    15/97

    Inverso moltiplicativo mod n

    Trovare un inverso moltiplicativo k-1 nellaaritmetica mod n, non affatto banale se n molto grande

    ad esempio, se n un intero a 100 cifre un approccio aforza bruta sarebbe impraticabile

    Esiste un modo efficiente per risolvere taleproblema, noto come algoritmo di Euclide

    datixed n (x< n), lalgoritmo di Euclide trova ilnumero y< n tale che (xy) mod n = 1

    ammesso che un siffatto yesista

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    16/97

    Numeri relativamente primi

    DOMANDA Per quale motivo soltanto i numeri {1, 3, 7, 9} ammettono un

    inverso moltiplicativo mod 10?

    Quali numeri ammettono un inverso moltiplicativo mod 10?

    RISPOSTA: sono tutti e soli i numeri (minori di 10)relativamente primi con 10

    Due numeri sono relativamenteprimise lunico fattorecomune 1

    equivalentemente,

    Due numeri interi a e b sono relativamenteprimi seMCD(a, b) = 1 MCD Massimo Comun Divisore, o

    GCD Greatest Common Divisor

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    17/97

    Funzione totiente di Eulero

    in generale, nellaritmetica mod n, tutti gli interi (positivi)xrelativamente primi con n ammettono un inversomoltiplicativox-1

    se n un numero primo tutti gli interi positivix< n

    ammettono un inverso moltiplicativo (mod n)x-1

    Dato un intero n > 1

    Si definisce funzione di Eulero, o funzionetotiente,la funzione che associa ad n il numero (n) degli interipositivi i n e relativamente primi con n

    cio (n) = |{0 < i n: MCD(i, n) = 1}|

    per convenzione (0) = 0

    Security token

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    18/97

    Funzione totiente di Eulero

    Se n primo tutti gli interi {1, 2, , n1} sonorelativamente primi con n (n) = n 1

    DOMANDA: Se n =pq, ovep e q sono due numeriprimi maggiori di 1, quanto vale (n)?

    RISPOSTA:

    (n) = |N

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    19/97

    Esponenziazione modulare

    Lesponenziazionemodulare, o elevamento a potenzamodulare, simile a quella ordinaria

    si esegue lesponenziazione ordinaria e si considera il restodella divisione per n

    ad esempio, 46 = 6 mod 10 perch 46 = 4096 e 4096 = 6 mod 10

    xy 0 1 2 3 4 5 6 7 8 9 10 11 12

    0 0 0 0 0 0 0 0 0 0 0 0 0

    1 1 1 1 1 1 1 1 1 1 1 1 1 1

    2 1 2 4 8 6 2 4 8 6 2 4 8 6

    3 1 3 9 7 1 3 9 7 1 3 9 7 1

    4 1 4 6 4 6 4 6 4 6 4 6 4 6

    5 1 5 5 5 5 5 5 5 5 5 5 5 5

    6 1 6 6 6 6 6 6 6 6 6 6 6 6

    7 1 7 9 3 1 7 9 3 1 7 9 3 1

    8 1 8 4 2 6 8 4 2 6 8 4 2 6

    9 1 9 1 9 1 9 1 9 1 9 1 9 1

    si osservi che

    nellesponenziazione modularexymod n diverso daxy+n mod n

    ad esempio, 31 = 3 mod 10, ma

    311 = 7mod 10 (311 = 177147)

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    20/97

    Esponenziazione modulare mod 10

    Dalla precedente tabella, che illustralesponenziazione mod 10, si osserva che

    lesponenziazione per 3 (quarta colonna) puconsiderarsi una cifratura

    determina un mescolamento dellinput

    lesponenziazione per 2 invece no

    alcuni input scompaiono non iniettiva

    quando lesponenziazione iniettiva, la decifraturapu ottenersi ricorrendo al logaritmodiscreto(inverso dellesponenziazione)

    come nel caso della moltiplicazione, nellesponenziazionemodulare non tutti i numeri ammettono un logaritmo

    discreto

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    21/97

    Esponenziazione modulare

    Esaminando la tabella di esponenziazione mod 10si nota un periodicit

    per ogni i> 0, le colonne ie i+ 4 coincidono, cio

    per ogni i> 0,xi

    mod 10 =xi+ 4

    mod 10 In effetti, si pu dimostrare il seguente risultato

    Sia n > 1 un interoprivo di quadrati (squarefree), allora per ogni y> 0,

    xymod n =x(y+ (n)) mod n un intero privo di quadrati se non compaiono fattori

    al quadrato nella sua scomposizione in fattori primi

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    22/97

    Esponenziazione modulare

    ad esempio, 10 privo di quadrati essendo 10 = 21 51

    un numero primo sempre privo di quadrati

    nel caso n = 10, i numeri relativamente primi a 10

    sono {1, 3, 7, 9} (n) = 4 Dalla precedente relazione risulta che

    se y= 1 mod (n)

    xy

    mod n =xmod n questultimo risultato sfruttato dallalgoritmo

    RSA

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    23/97

    RSA

    Crittografia a Chiave Pubblica Parte I

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    24/97

    RSA Introduzione

    RSA un algoritmo di cifratura (a blocchi) achiave pubblica

    il nome deriva degli inventori Rivest, Shamir eAdleman

    la lunghezza della chiave variabile

    ci consente di ottenere il giusto compromessosicurezza/efficienza

    solitamente si considerano chiavi di lunghezza 512 bit

    anche la lunghezza dei blocchi variabile un blocco di testo in chiaro deve avere una lunghezza

    inferiore a quella della chiave

    un blocco di testo cifrato lungo come la chiave

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    25/97

    RSA Introduzione

    RSA computazionalmente molto pi lento

    degli algoritmi a chiave segreta pi popolari

    come DES e IDEA

    difficilmente viene usato per cifrare messaggi

    lunghi

    generalmente viene usato per cifrare una

    chiave segreta K, il messaggio viene poi cifrato conKusando un algoritmo a chiave segreta

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    26/97

    Algoritmo RSA

    Lalgoritmo RSA pu essere impiegato

    sia per cifrare/decifrare messaggi

    sia per la firma digitale di messaggi

    In entrambi i casi necessario disporre dellacoppia

    chiave pubblica, chiave privata = PU, PR

    tale coppia deve essere generata in modo opportuno

    Nelle prossime slide si esaminer la1. generazione di una coppia PU, PR

    2. cifratura/decifratura RSA

    3. firma digitale RSA

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    27/97

    Generazione di PU, PR

    1. Scegliere due numeri primi grandip e q (circa256 bit ciascuno); porre n =p q

    fondamentale chep e q rimangano segreti

    si noti che fattorizzare n impraticabile2. Scegliere un numero e che sia relativamente

    primo rispetto a (n) = (p1)(q1)

    3. La chiave pubblica PU = e, n

    4. Calcolare linverso moltiplicativo ddi e mod (n)

    cio d tale che (de) mod (n) = 1

    5. La chiave privata PR = d, n

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    28/97

    Cifratura/decifratura RSA

    Sia PU = e, n la chiave pubblica del destinatario delmessaggio cifrato e sia PR = d, n la sua chiave privata

    Sia m (< n) un messaggio da cifrare

    CIFRATURA: il mittente, chiunque sia, usando lachiave pubblica PU del destinatario calcola il testocifrato

    c= me mod n

    DECIFRATURA: il destinatario usando la propriachiave privata PR decifra c nel seguente modo

    m = cdmod n

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    29/97

    Firma digitale RSA

    Sia PR = d, n la chiave privata del firmatario delmessaggio e sia PU = e, n la sua chiave pubblica

    Sia m (< n) un messaggio o un piccolo blocco di datiche funzione del messaggio

    FIRMA: il firmatario usando la propria chiaveprivata PR calcola la firma digitale s

    s = mdmod n

    VERIFICA: chiunque desidera verificarelautenticit della firma, usando la chiave pubblicaPU del firmatario verifica che

    m = se mod n

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    30/97

    Alcune domande

    Di seguito si risponder alle seguenti domande

    Perch RSA funziona?

    Decifrando un messaggio cifrato si ottiene il messaggio

    in chiaro? Perch RSA sicuro?

    Dati e ed n, perch non possibile risalire a d?

    Le operazioni di cifratura, decifratura, firma, e

    verifica della firma sono tutte sufficientemente

    efficienti da essere realizzabili nella pratica?

    Come possibile ottenere numeri primi grandi?

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    31/97

    Perch RSA funziona

    Mostriamo che

    se c = E(PU, m) m = D(PR, c) = D(PR, E(PU, m))

    si sfrutteranno le seguenti propriet

    se m < n m mod n = m

    (xa mod n)b mod n = (xa)b mod n =xab mod n

    (e d) mod (n) = 1

    PROVA

    c = E(PU, m) = me

    mod n m = D(PR, c) = cdmod n = (me mod n)dmod n = (me)dmod n

    = medmod n = m(1 mod (n)) mod n = m mod n = m

    la prova di correttezza della verifica della firma analoga

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    32/97

    Perch RSA sicuro?

    Non esistono prove formali di sicurezza

    ci si affida al Fundamental Tenet of Cryptogtaphy

    molte persone intelligenti hanno tentato di violarlo, ma

    hanno fallito la sicurezza di RSA risiede nel fatto che fattorizzare

    interi molto grandi impraticabile

    se esistesse un metodo veloce per fattorizzare interi molto

    grandi, allora nota la chiave pubblica PU = e, n si potrebbeottenere la chiave privata PR = d, n

    infatti, identificando i numeri primip e q tali che n =p q

    si ottiene facilmente (n) = (p1)(q1) e quindi si pu

    calcolare dcome linverso moltiplicativo di e modulo (n)

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    33/97

    Perch RSA sicuro?

    tuttavia non si possono escludere altri metodi diviolazione di RSA che non richiedono la fattorizzazione

    sebbene RSA ritenuto sicuro, per chiavi di almeno256 bit, possibile utilizzarlo in modo improprio!

    si supponga che Carol spedisca un messaggio ad Alicecontenente il nome del suo fidanzato segreto

    Bob geloso, sa del messaggio di Carol ad Alice e sa che ilfidanzato uno dei 15 ragazzi del corso di SicurezzaInformatica

    Bob non pu decifrare il messaggio,

    ma pu cifrare il nome di ogni ragazzo del corso di SicurezzaInformatica con la chiave pubblica di Alice e

    verificare quale di questi coincide con il messaggio inviato daCarol

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    34/97

    Perch RSA sicuro?

    DOMANDA: assumendo che Bob intercetti il

    messaggio di Carol, possibile impedirgli di

    ottenere informazioni?

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    35/97

    Perch RSA sicuro?

    Nel seguito si discuter come usare RSA inmodo appropriato

    per il momento una possibile risposta alla

    precedente domanda la seguente RISPOSTA

    Carol pu concatenare il nome del suo fidanzatocon un numero random molto grande, diciamo a

    64 bit Bob anzich 15 tentativi deve fare 15 264

    tentativi!

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    36/97

    Efficienza delle operazioni di RSA

    In base al tipo di impiego, RSA svolge le seguentioperazioni molto frequentemente (ad ogni sessione dilavoro) cifratura,

    decifratura, generazione di una firma digitale e

    verifica di una firma digitale

    necessario pertanto che tali operazioni siano svoltenel modo pi efficiente possibile

    Invece, loperazione di generazione delle chiavi vieneeseguita meno frequentemente si pu tollerare una minore efficienza

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    37/97

    Esponenziazione di grandi numeri

    Le operazioni di cifratura, decifratura, firma e verificadella firma richiedono tutte di dover considerare un intero molto grande,

    elevarlo ad un esponente (intero) molto grande, e

    trovare il resto della divisione intera per un numero moltogrande

    Considerando la dimensione dei numeri interi per iquali RSA ritenuto sicuro tali operazioni

    risulterebbero proibitive se eseguite nel modo piovvio le prossime slide illustrano come possibile aumentare la

    velocit dei calcoli

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    38/97

    Esempio calcolo di 12354 mod 678

    assumendo di disporre di un software per la gestionedellaritmetica a precisione multipla

    La soluzione pi ovvia moltiplicare 54 volte 123 per se stesso

    ottenendo un prodotto enorme (circa 100 cifre decimali)

    e poi dividere per 678 per ottenere il resto un computer potrebbe farlo con facilit

    Tuttavia, per essere sicuro RSA richiede che i numeri sianodi 150 cifre! elevare un numero di 150cifre ad un esponente anchesso di

    150 cifre computazionalmente impraticabile un calcolo di questo tipo esaurirebbe le capacit di tutti i computer

    esistenti per un tempo superiore al tempo di vita previstodelluniverso

    Per fortuna esiste un metodo molto pi efficiente

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    39/97

    Esempio calcolo di 12354 mod 678

    Per evitare di ottenere numeri enormi

    conviene effettuare una riduzione modulare di ogniprodotto intermedio; si noti che valgono le seguenti

    (a b) mod n = ((a mod n ) (b mod n )) mod n

    (a b) mod n = (a (b mod n )) mod n

    si pu procedere nel seguente modo

    1232 = 123 123 = 15129 = 213 mod 678

    1233 = 123 213 = 26199 = 435 mod 678

    1234 = 123 435 = 53505 = 621 mod 678

    12353 = 123 567= 69741 = 585 mod 678

    12354 = 123 585 = 71955 = 87mod 678

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    40/97

    Esempio calcolo di 12354 mod 678

    necessario effettuare 54 moltiplicazioni e 54

    divisioni di piccoli (< 678) numeri interi

    ancora una soluzione impraticabile

    considerata la dimensione degli esponenti usati in RSA

    tuttavia, esiste un metodo per migliorare

    ulteriormente lefficienza

    si supponga per semplicit che lesponente sia una

    potenza di 2, ad esempio 32 = 25

    la potenza a32 pu essere ottenuta calcolando 5

    potenze al quadrato in cascata

    a32 = ((((a2 mod n)2 mod n)2 mod n)2 mod n)2 mod n

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    41/97

    Esempio calcolo di 12354 mod 678

    nel caso generale in cui lesponente non unapotenza di 2, ad esempio 54, si pu tener contodelle seguenti osservazioni

    noto ax a2x ottenibile da axcome segue

    a2x= (ax)2 mod n = (axmod n)2 mod n

    mentre a2x+1 ottenibile da a2xcome segue

    a2x+1 = ((a2x) a) mod n = ((a2xmod n) a) mod n

    inoltre, la rappresentazione binaria di 54(110110)2 fornisce

    la corretta sequenza di potenze al quadrato e dimoltiplicazioni (per la base 123)

    da effettuare in cascata per ottenere 12354

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    42/97

    12354 cascata di pot. e molt.

    1 ( )2 b ( )2 ( )2 ( )2b b ( )2

    0

    87mod 678

    1 1 0 1 1 0codifica binaria di 54

    ( )2

    b

    LEGENDA

    eleva al quadrato la base ed effettua la riduzione modulare

    moltiplica per la base 123 ed effettua la riduzione modulare

    INPUT OUTPUT

    2 +1 2 2 2+1 +1 22 +1

    ( )2 b

    54

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    43/97

    12354 cascata di pot. e molt.

    in definitiva, per effettuare lesponenziazione di

    una base ad un esponente

    si parte da un valore iniziale tmp = 1, e

    si scandisce lesponente, bit a bit, dal bit pisignificativo a quello meno significativo

    per ciascun bit considerato si eleva al quadrato il valore

    corrente di tmp

    se il bit 1 si moltiplica anche per la base chiaramente, dopo ogni operazione si esegue la

    riduzione modulare

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    44/97

    12354 cascata di pot. e molt.

    con la tecnica appena illustrata il calcolo di 12354

    richiede di fatto 8 moltiplicazioni e 8 divisioni, ma

    soprattutto

    il numero di moltiplicazioni e divisioni crescelinearmente con il numero di bit dellesponente e

    non con il suo valore

    e = 2Nb1 ove Nb= numero bit dellesponente

    con questa tecnica RSA sufficientemente

    efficiente da poter essere usato

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    45/97

    Generazione delle chiavi RSA

    La generazione delle chiavi RSA unoperazione pocofrequente

    in gran parte delle applicazioni della tecnologia a chiavepubblica deve essere eseguita soltanto una volta

    ad esempio quando un impiegato viene assunto

    non richiesta la stessa efficienza delle altre operazioniRSA; deve comunque essere garantita unefficienzaragionevole

    Per generare una coppia di chiavi PU, PR necessario trovare due numeri primip e q molto grandi, e

    trovare due interi ded e con le propriet precedentementedescritte

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    46/97

    Trovare due numeri primi grandip e q

    esistono infiniti numeri primi; tali numeri tendono

    per a diradarsi sempre pi al crescere di n

    estraendo n a caso Pr{n primo} 1 / ln n

    Pr{n primo} 1 / Nb ove Nb denota il numero di bitdi n

    la densit dei numeri primi inversamente

    proporzionale alla loro lunghezza in bit (o in cifre

    decimali)

    per un numero n a dieci cifre decimali (dimensione

    usata in RSA) c una possibilit su 230 di essere primo

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    47/97

    Trovare due numeri primi grandip e q

    Pertantop e q sono generati con la seguente strategia

    1. estrai un numero dispari molto grande

    2. verifica se primo, in caso negativo ritenta

    mediamente sono necessari 230 tentativi per trovare un

    numero primo

    tale strategia praticabile solo se si dispone di untest di primalit efficiente

    Come possibile testare se un intero n primo?

    un metodo banale consiste nel dividere n per tutti gliinteri n1/2 e verificare che non ci sono divisori > 1, maci richiederebbe diverse vite delluniverso!

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    48/97

    Trovare due numeri primi grandip e q

    prima del 2002 non esisteva un test di primalit polinomiale

    nel 2002 stato pubblicato il test di primalit deterministico

    AKS

    RSA usa un test di primalit probabilistico

    non si pu affermare con certezza che lesito del test

    corretto

    tuttavia, la probabilit di errore pu essere resa

    arbitrariamente piccola aumentando il tempo di test

    il test si basa sul teorema di Fermat che fornisce unacondizione necessaria affinch un intero n sia primo

    se n primo per ogni intero a risulta an 1 = 1 mod n

    non vale per il viceversa, esistono degli interi a per i quali

    luguaglianza verificata anche se n non primo

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    49/97

    Test di primalit probabilistico

    Dato un intero n, un possibile test di primalit ilseguente

    1) scegliere un intero a < n

    2) calcolare a

    n-1

    mod n 3a) se il risultato diverso da 1 n certamente

    non primo

    3b) se il risultato 1 n potrebbe essere primo, mapotrebbe anche non esserlo

    stato dimostrato che se n un intero random di circacento cifre decimali la probabilit di un falso positivo dicirca 10-13

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    50/97

    Test di primalit probabilistico

    si osservi che un errore nel test di primalit purendere

    impossibile la decifratura RSA di un messaggio

    pi facile lidentificazione della chiave privata

    se una probabilit di errore pari a 10-13 non ritenutasufficiente si possono effettuare pi test con diversivalori di a

    Pr{falso positivo dopo ktest} = (10-13)k

    la probabilit di errore pu essere resa arbitrariamentepiccola, ma non sempre la vita cos semplice!

    ci possono essere dei casi veramente sfortunati non rilevabilidal test, ci accade se n un numero di Carmichael

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    51/97

    Test di primalit probabilistico

    un numero n un numero di Carmichael se non

    primo e se per ogni a < n risulta an-1 = 1 mod n

    i numeri di Carmichael sono sufficientemente rari che

    estremamente improbabile estrarli a caso

    tuttavia, a fronte di un piccolo costo computazionale

    aggiuntivo

    possibile migliorare il test di primalit precedente

    introducendo altri controlli che permettono di rilevare

    con maggior probabilit se n non primo

    un test molto efficace il test di primalit di Miller e

    Rabin

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    52/97

    Test di primalit di Miller e Rabin

    Sfrutta un ulteriore CN di primalit:

    se n primo le uniche radici quadrate modulon di 1 sono 1 e -1 (si noti che -1 = n 1 mod n)

    cio, se a un intero tale che a

    2

    mod n = 1 deve essere a = 1 oppure a = -1

    in caso contrario si desume che n non primo

    tali controlli sulle radici quadrate vengono eseguiti

    nei risultati intermedi necessari al calcolo di an-1

    mod n per il test precedente

    a tale scopo viene sempre espresso n1 come 2bc ovec un numero dispari

    il test precedente diventa a^(2bc) mod n = 1

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    53/97

    Test di primalit di Miller e Rabin

    il test sulle radici quadrate mod n di 1 permette di

    aumentare notevolmente la capacit di

    individuare dei falsi positivi

    se n non primo (anche se un numero di Carmichael)almeno di tutti i possibili valori di a permettono di

    rilevarlo

    lesecuzione del test con diversi valori di a permette

    di ridurre a piacere la probabilit di errore; anche nel

    caso in cui n un numero di Carmichael

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    54/97

    Test di primalit di Miller e Rabin

    1. Sia n un numero dispari.

    2. Testare se n divisibile per qualche numero primo piccolo. In

    caso affermativo tornare al punto 1. (tale step non strettamentenecessario, ma vale la pena eseguirlo perch pu rilevare un numero non

    primo con buona probabilit)

    3. Ripetere i seguenti step arrestandosi quando si prova che n

    non primo oppure dopo un numero di volte ritenute sufficienti

    a considerare n primo con elevata probabilit.

    3.1 Scegliere randomicamente un numero a.3.2 Calcolare acmod n (dove c il numero dispari tale che n1 =

    2bc) eseguendo una sequenza di potenze al quadrato e/o

    moltiplicazioni per la base a.

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    55/97

    Test di primalit di Miller e Rabin

    Ad ogni elevamento al quadrato controllare se il risultato 1.

    Se s, controllare se il numero elevato al quadrato (cio la

    radice quadrata mod n di 1) era pari a 1; in caso negativo, n

    non primo.

    3.3 Se acmod n pari a 1, n supera il test di primalit per questo

    valore di a.

    3.4 Altrimenti, acmod n 1, al pi b1 volte, sostituisci il

    risultato con il suo quadrato e verifica se si ottiene 1.

    Se si ottiene 1, n non primo (perch il precedente risultato una radice quadrata di 1 diversa da 1).

    Se si ottiene -1, n supera il test di primalit per questo valore

    di a.

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    56/97

    Test di primalit di Miller e Rabin

    Se sono state eseguite b1 potenze al quadrato, n non

    primo (perch a(n 1)/2 diverso da 1)

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    57/97

    Calcolo di ded e

    Gli interi ded e sono definiti nel seguente

    modo

    e un qualunque numero relativamente primo

    rispetto allintero (n) = (p1)(q1)

    d lintero tale che (e d) mod (n) = 1

    noto e, dsi calcola con lalgoritmo di Euclide

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    58/97

    Calcolo di ded e

    esistono due possibili strategie per il calcolo di e

    1. Una volta ottenutip e q

    scegliere e randomicamente e

    testare se e e (p1)(q1) sono relativamente primi

    in caso negativo, selezionare un altro valore per e

    2. Non selezionare primap e q, invece

    scegliere prima e

    poi selezionarep e q in modo tale che (p1) e (q1)sono relativamente primi rispetto ad e

    nelle slide seguenti si illustrer per quale motivo lastrategia 2. conveniente e come possibile attuarla

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    59/97

    Come scegliere e

    La sicurezza di RSA non diminuisce (per quanto adoggi noto) se e sempre scelto allo stesso modo

    si noti che dcontinua ad essere imprevedibile sep e qnon sono noti

    doltre a dipendere da e dipende anche dap e da q

    se e un intero piccolo o facile da calcolare leoperazioni di cifratura e di verifica della firmadiventano pi efficienti

    cio le operazioni che richiedono luso della chiave pubblicaPU = e, n sono pi veloci, mentre

    risulta invariata lefficienza delle operazioni che richiedono lachiave privata PR = d, n

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    60/97

    Come scegliere e

    chiaramente, diversamente da e, non si pu assegnare

    a dun valore piccolo

    sebbene ci renderebbe molto pi veloci le operazioni

    che usano la chiave privata PR, la sicurezza di RSA

    verrebbe meno; un avversario potrebbe identificare PRcon una semplice ricerca!

    Generalmente si assegna ad e uno dei

    seguenti valorie = 3

    e = 65537

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    61/97

    Perch e = 3?

    La scelta e = 3 quella che assegna ad e il pi

    piccolo valore possibile

    2 non va bene perch non relativamente primo con

    (p1)(q1) che un numero pari 3 pu funzionare

    il calcolo di m3 mod n richiede soltanto due moltiplicazioni

    un esponente pubblico pari a 3 massimizza le prestazioni

    per quanto ad oggi noto, la sicurezza di RSA non indebolitase vengono messi in essere degli opportuni accorgimenti

    pratici

    nelle prossime slide si esaminer quali rischi si corrono se e =

    3 e come sia possibile far fronte a tali rischi

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    62/97

    e = 3 vulnerabilit/patch

    La scelta di e = 3 comporta le seguentevulnerabilit

    se il messaggio m da cifrare rappresenta un interopiccolo, in particolare se m inferiore alla radice

    cubica ordinaria di n: m < n1/3

    c = me mod n = m3 mod n = m3

    un avversario pu decifrare c senza conoscere lachiave privata; semplicemente estraendo la radice

    cubica ordinaria di c: m = c1/3

    tale vulnerabilit pu essere rimossa eseguendo unpadding random del messaggio tale che m3 > n

    ci garantisce che m3 viene sempre ridotto mod n

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    63/97

    e = 3 vulnerabilit/patch

    Unaltra vulnerabilit si ha se uno stesso messaggio m viene inviato cifrato

    a tre o pi destinatari aventi un esponente pubblico e= 3

    il messaggio in chiaro m pu essere decifratoconoscendo soltanto i tre messaggi cifrati c1, c2 e c3 e

    le tre chiavi pubbliche 3, n1 , 3, n2 e 3, n3

    PROVA si supponga che un avversario intercetti tre cifrature

    dello stesso messaggio m

    c1 = m3 mod n1 c2 = m

    3 mod n2 c3 = m3 mod n3

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    64/97

    e = 3 vulnerabilit/patch

    conoscendo anche le tre chiavi pubbliche deidestinatari 3, n1 , 3, n2 e 3, n3

    e utilizzando il teorema cinese del resto, lavversariopu calcolare m3 mod n1 n2 n3

    essendo m < ni per i= 1, 2, 3 m3 < n1 n2 n3 m3 mod n1 n2 n3 = m

    3

    lavversario pu risalire ad m estraendo una radicecubica ordinaria

    anche questa vulnerabilit pu essere rimossamediante un padding random

    in pratica si evita che uno stesso messaggio cifrato vengainviato a pi destinatari

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    65/97

    e = 3 vulnerabilit/patch

    Si osservi che nelle applicazioni pratiche di RSA, il messaggio m generalmente una chiave di un

    algoritmo di cifratura a chiave segreta e

    in ogni caso m molto pi piccolo di n

    sempre possibile aggiungere dei bit diriempimento (padding) in modo tale che il messaggiorisultante presenti delle caratteristiche desiderate

    se per ogni destinatario il padding scelto random laprecedente vulnerabilit viene rimossa

    la vulnerabilit pu essere rimossa anche usandocome padding gli identificatori univoci (ID) deidestinatari

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    66/97

    Come sceglierep e q se e = 3

    Essendo e = 3, come possibile selezionarep e q garantendo che

    e e (n) siano relativamente primi?

    necessario garantire che (p1) e (q1) sianorelativamente primi rispetto a 3

    ci pu ottenersi

    scegliendop tale che p mod 3 = 2, e

    scegliendo q tale che q mod 3 = 2

    (p 1) mod 3 = 1 (p 1) non divisibile per 3

    (q 1) mod 3 = 1 (q 1) non divisibile per 3

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    67/97

    Come sceglierep e q se e = 3

    essendop e q due interi dispari

    p = 2kp + 1

    q = 2kq + 1

    per imporre anche che risulti p mod 3 = 2

    q mod 3 = 2

    si pu porre

    p = (2kp + 1)3 + 2 = 6kp + 5

    q = (2kq + 1)3 + 2 = 6kq + 5

    dopodich pu essere effettuato il test di primalit

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    68/97

    Perch e = 65537?

    La scelta di e = 65537

    (in opposizione ad altri interi della stessa dimensione)

    deriva dal fatto che 65537= 216 + 1 ed primo

    (65537)2 = 10000000000000001

    lesponenziazione richiede 17moltiplicazioni

    pi lenta del caso e = 3, ma

    molto pi veloce del caso in cui e scelto in modorandomico; mediamente sono richieste 768

    moltiplicazioni nel caso di 512 bit

    non presenta le vulnerabilit viste nel caso e = 3

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    69/97

    e = 65537introduce vulnerabilit?

    La scelta di e = 65537rimuove o riduce quasi

    del tutto le vulnerabilit viste nel caso e = 3

    la prima vulnerabilit con 3 si ha se m3 < n

    nel caso e = 65537

    a meno che n non sia molto pi lungo di 512 bit

    non ci sono molti valori di m tali che m65537< n

    quindi lestrazione della 65537-esima radice

    ordinaria di m non costituisce una vulnerabilit

    seria

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    70/97

    e = 65537vantaggi/svantaggi

    la seconda vulnerabilit con 3 si ha se uno stessomessaggio m cifrato inviato a 3 destinatari

    nel caso e = 65537la stesso tipo di vulnerabilit si haquando m viene inviato a 65537destinatari!

    non si pu dire certo che si tratti i un messaggio segreto!

    in fine, la scelta di fissare a priori e = 3 ha richiesto discegliere n in modo tale che (n) e 3 fosserorelativamente primi

    nel caso e = 65537conviene generarep e q come se e non fosse prefissato, e

    rigettare ogni valore dip o q che uguale a 1 mod 65537

    tale evento si verifica con una probabilit molto piccola (2-16)

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    71/97

    Vulnerabilit arcane di RSA

    Nel caso della firma digitale risulta che

    per ogni numerox< n

    x la firma digitale del messaggio mx=xe mod n

    infatti, mxdmod n = (xe mod n)dmod n =xedmod n =

    = x(1 mod (n)) mod n =xmod n =x

    banale falsificare la firma di qualcuno se il

    messaggio m da firmare non interessa

    la difficolt sta nel falsificare la firma di uno

    specifico messaggio

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    72/97

    Vulnerabilit arcane di RSA

    generalmente, ci che viene firmato (messaggio +padding) ha una struttura sufficientemente vincolata

    vengono inseriti dei bit di riempimento organizzati in pattern

    regolari

    la probabilit che un numero random costituisca unmessaggio (padding incluso) valido trascurabile; cio

    estremamente improbabile che un numero random

    contenga i pattern regolari di bit

    tuttavia, visto che i numeri in RSA sono molto grandi unavversario ha a disposizione molti tentativi

    i pattern di riempimento vanno scelti in modo opportuno

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    73/97

    Smooth Numbers

    Intuitivamente, uno smooth number un numero

    scomponibile nel prodotto di (molti) numeri primi

    ragionevolmente piccoli

    non conviene usare una definizione assoluta; un

    numero piccolo o grande in base alle capacit di

    calcolo dellavversario

    esempio, il numero 6056820 pi smooth del

    numero 6567587, poich

    6056820 = 22 32 5 7 11 19 23

    6567587= 13 557 907

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    74/97

    Vulnerabilit smooth number

    Si tratta di una vulnerabilit di RSAprevalentemente teorica

    nella pratica difficilmente realizzabile

    richiederebbe unimmensa capacit di calcolo, la raccolta di

    un numero enorme di messaggi firmati e molta fortuna (perlavversario)

    IDEA BASE

    dalle firme s1 e s2 dei messaggi m1 ed m2,

    possibile calcolare le firme dei messaggi m1 m2, m1 / m2,m1j, m2

    k, e m1j m2

    k

    ad esempio, conoscendo la firma s1 = m1dmod n possibile

    ottenere la firma di m12 senza conoscere d(chiave privata)

    infatti, (m12)dmod n = (m1

    d)2 mod n = (m1dmod n)2 mod n

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    75/97

    Vulnerabilit smooth number

    la firma di m12 pari a s12 mod n

    se un avversario riesce a collezionare moltimessaggi firmati, pu ottenere la firma di ognimessaggio m esprimibile come prodotto e/o

    divisione di messaggi della collezione in particolare, se ottiene le firme di due messaggi m1 e

    m2 tali che il rapporto m1 / m2 =p dovep un numeroprimo

    pu calcolare la firma dip se abbastanza fortunato da raccogliere molte

    coppie di questo tipo

    pu calcolare la firma di molti numeri primi

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    76/97

    Vulnerabilit smooth number

    pu falsificare la firma di ogni messaggio dato dalprodotto di ogni sottoinsieme di tali numeri primi ciascuno

    elevato ad una qualunque potenza

    con abbastanza coppie, pu falsificare la firma di

    ogni messaggio rappresentato da uno smooth number generalmente, ci che si firma con RSA un digest

    messaggio con padding m* =pad(h(m))

    al digest del messaggio m vengono aggiunti, in modo

    opportuno, dei bit di riempimento (padding) ottenendo m*

    se i bit di riempimento sono degli zeri, anzich essere

    random pi probabile che m* sia uno smooth number

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    77/97

    Vulnerabilit smooth number

    invece, estremamente improbabile che un numerorandom mod n sia smooth

    con un padding a sinistra di soli zeri

    lintero da firmare mp = h(m) rimane piccolo

    il padding non riduce la probabilit che mp sia

    smooth

    con un padding a destra di soli zeri

    mp = h(m) 2

    k

    un intero molto pi grande, ma divisibile per una potenza di due

    di nuovo, il padding non riduce la probabilit che mp

    sia smooth

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    78/97

    Vulnerabilit smooth number

    con un padding a destra random

    lintero da firmare mp estremamente improbabile

    che sia smooth

    tuttavia, si espone RSA alla minaccia nota come il

    problema della radice cubica

    bl d ll d b

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    79/97

    Problema della radice cubica

    Si assuma che si optato per padding a destra

    random

    per ridurre la probabilit che le firme prodotte

    siano smooth

    si ha in seguente inconveniente se lesponente

    pubblico e = 3 un attaccante pu virtualmente falsificare la

    firma di un qualsiasi messaggio

    bl d ll d b

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    80/97

    Problema della radice cubica

    supponiamo che un attaccante, Carol, vogliafalsificare la firma di un qualche messaggio m

    avente digest hm allora

    Carol applica un padding a destra, di hm,considerando bit a zero ottenendopm = hm0000

    poi calcola la radice cubica ordinaria e la

    arrotonda allintero pi vicino r = round(pm1/3)

    r la firma falsificata di m infatti, re = r3 =pm ossia hm con un padding a destra che

    apparentemente casuale

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    81/97

    PUBLIC-KEY CRYPTOGRAPHYSTANDARD (PKCS)

    Crittografia a Chiave Pubblica Parte I

    PKCS

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    82/97

    PKCS

    PKCS sta per Public-Key Cryprography

    Stanbdard

    Standard di Crittografia a Chiave Pubblica

    si visto che ogni applicazione di RSA, cifratura,decifratura e firma, pu essere soggetta a diversi

    tipi di attacchi

    che possono essere sventati con opportune

    contromisure,

    basate sulla scelta di unopportuna codifica/formato

    (quindi padding) del messaggio da cifrare/firmare

    PKCS i i hi

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    83/97

    PKCS: impieghi

    esistono 15 standard PKCS per le diverse situazioni incui la cifratura a chiave pubblica viene utilizzata

    nelle prossime slides si esaminer solo PKCS #1

    Tale standard stabilisce le codifiche per la chiave pubblica RSA

    la chiave privata RSA

    la firma RSA

    la cifratura RSA di messaggi corti (ossia chiavi segrete)

    la firma RSA di messaggi corti (tipicamente digest)

    PKCS #1 i id

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    84/97

    PKCS #1: minacce considerate

    Lo standard PKCS #1 stato concepito perfronteggiare le seguenti minacce:

    cifratura di messaggi prevedibili

    smooth number per le firme

    destinatari multipli di uno stesso messaggio

    quando e = 3

    cifratura di messaggi di lunghezza inferiore ad unterzo della lunghezza di n quando e = 3

    firma di messaggi dove linformazione posta nei

    bit pi significativi ed e = 3

    PKCS #1 Cif t

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    85/97

    PKCS #1: Cifratura

    PKCS #1 definisce uno standard, tra laltro, per laformattazione di un messaggio da cifrare con RSA

    in genere, RSA non viene usato per cifrare messaggi

    ordinari, ma per cifrare delle chiavi segrete

    per questioni di efficienza conviene usare la cifratura a

    chiave segreta per dati ordinari

    lo standard prevede il seguente formato per linput m

    0 2 0almeno otto ottettirandom non nulli data

    PKCS #1 Cif t

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    86/97

    PKCS #1: Cifratura

    i dati effettivi da cifrare, generalmente una chiavesegreta, sono pi corti del modulo (cio di n, chegeneralmente ha una lunghezza di 512 bit)

    KDES ha una lunghezza di 64 bit

    K3DES ha una lunghezza di 128 bit il 1 ottetto 0 (cio otto bit nulli)

    ci garantisce che m < n; se fosse m > n la decifraturaprodurrebbe m mod n m

    il 2 ottetto 2, definisce il tipo di formato

    il valore 1 stabilisce che m viene firmato

    il valore 2 stabilisce che m viene cifrato

    0 2 0almeno otto ottettirandom non nulli data

    PKCS #1 Cif t

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    87/97

    PKCS #1: Cifratura

    seguono poi almeno otto ottetti di padding nonnulli scelti in modo randomico e indipendente

    luno dallaltro

    lottetto 0 (nullo) va scartato perch viene usato come

    separatore del padding dalla parte dati

    0 2 0almeno otto ottettirandom non nulli data

    PKCS #1 t i i if t

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    88/97

    PKCS #1: protezione minacce cifratura

    vediamo come le scelte del formato standard per lacifratura permettono di sventare le minacceprecedentemente esaminate

    Cifratura di messaggi prevedibili

    con almeno otto ottetti (64 bit) di padding random

    anche se un attaccante in grado di prevedere i datieffettivi da cifrare

    ad esempio i dati potrebbero appartenere ad un insieme con

    pochi elementi noti allattaccante lattaccante potrebbe cifrare ciascun dato e verificare se

    quanto ottenuto coincide con il testo cifrato

    lattaccante dovrebbe anche indovinare il padding

    cio una sequenza di almeno 64 bit random

    PKCS #1 t i i if t

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    89/97

    PKCS #1: protezione minacce cifratura

    Spedizione di uno stesso messaggio cifrato a

    pi di tre destinatari

    nellipotesi e = 3

    anche se i dati dati da cifrare sono esattamente gli

    stessi per tutti i destinatari,

    la scelta del padding random garantisce che, in input allalgoritmo di cifratura sono forniti, con

    elevatissima probabilit, dei messaggi distinti

    PKCS #1 t i i if t

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    90/97

    PKCS #1: protezione minacce cifratura

    Cifratura di messaggi di lunghezza inferiore ad unterzo della lunghezza di n

    nellipotesi e = 3

    essendo il secondo ottetto non nullo, ( pari a 2),

    il messaggio ottenuto m ha sicuramente unalunghezza superiore ad un terzo della lunghezza

    del modulo n

    PKCS #1 fi di it l

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    91/97

    PKCS #1: firma digitale

    PKCS #1 definisce anche uno standard per laformattazione di un messaggio da firmare con

    RSA

    in genere, i dati da firmare consistono in un digest diun messaggio, tipicamente 128 bit

    analogamente alla cifratura necessario applicare un

    padding

    lo standard prevede il seguente formato per linput m

    0 1 0almeno otto ottetti diff16 tipo-di-digest e digest

    il tipo-di-digest viene specificato

    con una notazione ASN.1

    PKCS #1 prote ione minacce firma

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    92/97

    PKCS #1: protezione minacce firma

    il 1 ottetto pari 0 m < n

    il 2 ottetto 1, e specifica il tipo di formato PKCS

    in questo caso, una quantit da firmare

    il paddingcon almeno otto ottetti pari aff16 (ottobit a 1) rende la quantit da firmare molto grande

    altamente improbabile che sia uno smooth

    number

    PKCS #1 protezione minacce firma

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    93/97

    PKCS #1: protezione minacce firma

    Domanda: perch viene anche incluso il tipodi algoritmo di digest utilizzato?

    espresso nella notazione ASN.1

    Risposta: il tipo di digest incluso per duemotivi

    1. viene standardizzato come comunicare allaltra

    parte lalgoritmo di digest utilizzato

    2. serve a prevenire una minaccia oscura

    PKCS #1: protezione minacce firma

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    94/97

    PKCS #1: protezione minacce firma

    la minaccia oscura la seguente una funzione di hash, ad esempio MD4, potrebbe

    essere debole

    qualcuno potrebbe essere in grado di generare un

    messaggio con un particolare digest MD4 si supponga, che nel firmare un messaggio m venga usato

    MD5, ma non sia incluso lalgoritmo di digest usato

    un avversario potrebbe allora generare un messaggio mtaleche MD4(m) = MD5(m)

    ed usare la firma corrispondente ad m per m

    includere il tipo di algoritmo di digest

    il rischio di falsificazione che si corre dipende solodalla robustezza di tale algoritmo

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    95/97

    APPENDICE

    Crittografia a Chiave Pubblica

    Teoremi di Eulero e di Fermat

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    96/97

    Teoremi di Eulero e di Fermat

    Teorema di Eulero: per ogni intero arelativamente primo ad n si ha

    a(n) = 1 mod n

    nel caso in cui n primo (n) = n1 il teorema

    assume una forma pi semplice e un altro nome

    Teorema di Fermat: sep primo e 0 < a

  • 7/29/2019 D07 Crittografia a Chiave Pubblica Parte I

    97/97

    Bibliografia

    [DES81] DES Modes of Operation, FIPS PUB 81, NationalBureau of Standards, U.S. Department of Commerce, 1981.

    [KPS02] C. Kaufman, R. Perlman, M. Speciner. NetworkSecurity Private 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, PrenticeHall.

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

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

    [ISECOM] Institute for Security and Open Methodologies