Attacco di Wiener ad RSA (tesi di laurea triennale in matematica)

54
2012/2013

Transcript of Attacco di Wiener ad RSA (tesi di laurea triennale in matematica)

  • Universit degli Studi di Trento

    Facolt di Scienze Matematiche Fisiche e Naturali

    Dipartimento di Matematica

    Attacco di Wiener ad RSA

    Elisa Signori

    Relatore: Prof. Massimiliano Sala

    Controrelatore: Prof. Andrea Caranti

    Anno accademico 2012/2013

  • Universit degli Studi di Trento

    Facolt di Scienze Matematiche Fisiche e Naturali

    Dipartimento di Matematica

    Attacco di Wiener ad RSA

    Tesi di:

    Elisa Signori

    Relatore:

    Prof. Massimiliano Sala

    Controrelatore:

    Prof. Andrea Caranti

    Anno accademico 2012/2013

  • A Linda, che mi ha dato la carica per portare a termine

    questo percorso, e a tutta la mia grande famiglia...

  • Ringraziamenti

    Desidero ringraziare il prof. Sala, relatore di questa tesi, e Marco Calderini che

    mi hanno costantemente guidata e supportata durante la stesura della stessa.

    Ringrazio Simone e Linda per essermi stati pazientemente accanto durante questo

    percorso ed Emanuela, Paolo e Lorenzo per l'incrollabile sostegno dimostratomi in

    tutti questi anni.

    Ringrazio inne gli innumerevoli amici che mi hanno tirato su il morale nei mo-

    menti di sconforto e tutti i compagni di studi che, in vari modi, mi hanno saputo

    aiutare.

  • Indice

    Acknowledgment 1

    Introduzione 1

    1 Introduzione alla crittograa e preliminari 1

    1.1 Cifrari a chiave pubblica e a chiave privata . . . . . . . . . . . . . . . 1

    1.2 Numeri primi e funzione di Eulero . . . . . . . . . . . . . . . . . . . . 3

    1.3 Teorema cinese dei resti . . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.4 Fattorizzazione in numeri primi . . . . . . . . . . . . . . . . . . . . . 9

    2 Algoritmo RSA, requisiti di sicurezza e principali attacchi 11

    2.1 Algoritmo RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.2 Firma autenticata nell'RSA . . . . . . . . . . . . . . . . . . . . . . . 15

    2.3 Requisiti generali per la sicurezza . . . . . . . . . . . . . . . . . . . . 17

    2.4 Attacchi elementari dovuti a errata scelta del modulo . . . . . . . . . 19

    2.5 Attacchi con esponente pubblico piccolo . . . . . . . . . . . . . . . . 19

    2.5.1 Attacco di Hstad sulla trasmissione . . . . . . . . . . . . . . 20

    2.5.2 Attacco di Franklin-Reiter sui messaggi correlati . . . . . . . . 22

    2.5.3 Attacco di Coppersmith . . . . . . . . . . . . . . . . . . . . . 22

    2.6 Attacchi all'esposizione parziale della chiave . . . . . . . . . . . . . . 23

    2.6.1 Esposizione parziale della chiave con esponenti piccoli . . . . . 23

    2.6.2 Esposizione parziale della chiave con esponenti medi . . . . . . 24

    2.7 Attacchi con esponente privato piccolo . . . . . . . . . . . . . . . . . 24

    3 Frazioni continue 25

    4 Attacco di Wiener a RSA 29

    4.1 Attacco di Wiener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.2 Algoritmo dell'attacco di Wiener passo per passo . . . . . . . . . . . 35

    4.3 Esempio numerico di attacco di Wiener . . . . . . . . . . . . . . . . . 37

    4.4 Come contrastare l'attacco di Wiener . . . . . . . . . . . . . . . . . . 39

    4.4.1 Scelta di e grande . . . . . . . . . . . . . . . . . . . . . . . . . 39

    i

  • 4.4.2 Utilizzo del teorema cinese dei resti . . . . . . . . . . . . . . . 39

    4.5 Miglioramenti dell'attacco di Wiener . . . . . . . . . . . . . . . . . . 40

    Bibliograa 42

    ii

  • Introduzione

    Il crittosistema RSA [RSA78], che deve il nome ai suoi inventori Rivest, Shamir e

    Adleman, fa parte dei crittosistemi cos detti a chiave pubblica, dove ad ogni utente

    coinvolto nella comunicazione viene associata una coppia di chiavi, una pubblica ed

    una privata.

    Tale algoritmo stato ed ancora largamente utilizzato per proteggere dati digitali

    e per garantirne l'autenticit (ad esempio pagamenti con carte di credito on-line, posta

    elettronica certicata, ecc.). Nel corso degli anni, sono stati ideati vari attacchi ad

    RSA ([Bon99]); tuttavia, il crittosistema non mai stato veramente compromesso a

    livello pratico.

    Per cifrare con il crittosistema RSA, il mittente utilizza due interi, l'esponente di

    cifratura e e il modulo n (la coppia di valori (n, e) costituisce la chiave pubblica del

    destinatario). Per decifrare, il destinatario sfrutta invece la cosiddetta chiave privata

    composta dalla coppia di interi (n, d), dove n il modulo del sistema e d l'esponente

    privato di decifratura (noto soltanto al destinatario). Tali parametri sono scelti in

    modo tale che n sia il prodotto di due numeri primi segreti, p e q, e i valori e e d

    soddisno la seguente equivalenza in modulo

    e d 1 (mod (p 1)(q 1)).1

    La sicurezza di RSA si basa sulla dicolt di fattorizzare numeri interi grandi in

    fattori primi. Per rompere il sistema, necessario fattorizzare n (ovvero calcolare i

    primi p e q); si pu dimostrare che tale problema equivalente a ricavare l'esponente

    privato d. Per questo motivo scegliere opportunamente i vari parametri di fonda-

    mentale importanza per la sicurezza del sistema.

    In questo elaborato verr descritto in dettaglio RSA e verranno illustrati alcu-

    ni attacchi ad esso; in particolare, si focalizzer l'attenzione sull'attacco di Wiener,

    il quale permette di determinare l'esponente privato d, se scelto sotto una certa soglia.

    In sintesi, vengono ora riportati gli argomenti presentati in questa tesi.

    1

    Si noti che, anch d esista, ci si deve assicurare che e e (p 1)(q 1) siano coprimi.

    iii

  • Il Capitolo 1 tratter generalmente i sistemi crittograci a chiave pubblica e a

    chiave privata. Esso conterr inoltre alcuni importanti teoremi e dezioni prelimina-

    ri; servir anzitutto denire la relazione di congruenza e la funzione di Eulero (n).

    Verr poi enunciato il teorema cinese dei resti e si tratter brevemente il problema

    della fattorizzazione in numeri primi, su cui si basa la sicurezza di RSA.

    Nel Capitolo 2 si passer a descrivere dettagliatamente l'algoritmo di RSA, siste-

    ma crittograco a chiave pubblica; dopo averne illustrato un esempio, si vedr come

    si pu facilmente ottenere una rma digitale per garantire l'autenticit del mittente

    di un messaggio. Seguir una sezione dedicata all'elencazione di alcuni requisiti di

    sicurezza; tali norme sono dettate dal NIST, ovvero il National Institute of Standards

    and Technology. Verr poi fatta una breve panoramica su alcuni tra i principali

    attacchi noti al sistema RSA.

    Per poter descrivere in particolare l'attacco di Wiener, servir la teoria delle fra-

    zioni continue, sulla quale si concentra tutto il Capitolo 3. Verranno dati quindi la

    denizione di frazione continua nita semplice, la denizione di convergente m-esima

    dello sviluppo in frazione continua e alcuni teoremi e proposizioni fondamentali per

    la comprensione dei contenuti seguenti.

    Inne, il Capitolo 4 si focalizzer sull'attacco di Wiener ad RSA. Si enuncer e si

    dimostrer quindi il teorema di Wiener e si descriver dettagliatamente l'algoritmo

    di attacco. Verranno illustrati inoltre dei metodi per contrastarlo, ideati da Wiener

    stesso, e verranno fornite alcune note storiche su ulteriori miglioramenti scoperti di

    recente.

    iv

  • Introduzione alla crittograa e preliminari

    Questo capitolo inizia con una breve introduzione alla crittograa, alla quale segue

    una descrizione sintetica dei sistemi crittograci a chiave pubblica e a chiave privata.

    Per comprendere il funzionamento dell'algoritmo del sistema RSA, necessario de-

    nire la funzione di Eulero (n), dove n un intero positivo, e enunciare il teorema

    cinese dei resti. Si tratta poi brevemente il problema della fattorizzazione in numeri

    primi.

    1.1 Cifrari a chiave pubblica e a chiave privata

    La crittograa la scienza che si occupa di proteggere le informazioni che vengo-

    no scambiate durante la comunicazione tra due utenti su un canale potenzialmente

    insicuro; l'obiettivo che essa si pregge quindi di impedire a una terza persona di

    comprendere i messaggi inviati tra mittente e destinatario del sistema.

    Lo sviluppo della crittograa andato di pari passo con quello della crittanalisi, che

    si occupa dello studio degli attacchi ai cifrari, e dell'informatica, che studia invece l'e-

    laborazione di dati e la loro rappresentazione mediante apparecchiature elettroniche;

    questo perch crittogra e crittanalisti necessitano di elaboratori molto sosticati per

    poter condurre le loro indagini sulla cifratura e decifratura dei messaggi.

    Con l'avvento di internet le applicazioni della crittograa hanno assunto importanza

    sempre maggiore, essendoci sempre pi bisogno di sicurezza, specialmente nelle tran-

    sazioni in rete e non (si pensi a bancomat e carte di credito in generale).

    Fino a non molti anni fa si utilizzavano sistemi crittograci a chiave simmetrica;

    in questi casi Alice e Bob, che vogliono scambiarsi informazioni, utilizzano una sola

    chiave privata per cifrare e decifrare i messaggi. Questa chiave ovviamente deve essere

    nota solo a loro perch possano comunicare senza che Eva (l'intruso) la intercetti e

    possa decifrare i messaggi; il problema che lo scambio della chiave deve avvenire in

    modo sicuro, quindi si richiede necessariamente che il canale lo sia.

    Per eliminare il pericolo di cui abbiamo parlato, negli anni Settanta nasce la critto-

    graa a chiave pubblica (o asimmetrica) che andremo qui di seguito a descrivere.

    1

  • Capitolo 1. Introduzione alla crittograa e preliminari

    Figura 1.1: chiave pubblica

    Alice e Bob scelgono entrambi una chiave pubblica con la quale poter cifrare messaggi

    a loro diretti, mentre mantengono segreta la chiave associata per decifrarli; cio, Alice

    cifra con la chiave pubblica di Bob che l'unico in grado di decifrare il messaggio,

    utilizzando la chiave privata nota solo a lui (vedi gura 1.1). Con i sistemi crittogra-

    ci asimmetrici ogni utente possiede due chiavi, una pubblica (nota a tutti coloro con

    cui si vuole comunicare) e una privata (nota soltanto all'utente che deve decifrare i

    messaggi). Si risolve cos il problema dello scambio delle chiavi, cruciale nei sistemi

    a chiave privata.

    2

  • 1.2. Numeri primi e funzione di Eulero

    La crittograa a chiave pubblica permette anche di garantire l'identit di chi invia

    un messaggio (rma digitale); infatti il mittente pu rmare un messaggio con la

    sua chiave privata (che solo lui possiede) e chiunque potr vericare l'autenticit

    di tale rma grazie alla chiave pubblica, che nota a tutti. Questa innovazione

    molto importante se si considerano tutte le operazioni che compiamo ogni giorno (ad

    esempio la PEC

    1

    ) in cui ci necessario.

    Il pi conosciuto cifrario a chiave pubblica RSA, ideato da Ronal Rivest, Adi Shamir

    e Leonard Adleman nel 1976, che sfrutta alcune propriet fondamentali dei numeri

    primi ([RSA78]). La sua sicurezza si basa sulla dicolt di fattorizzare un numero

    intero; in particolare, nell'RSA la chiave pubblica costituita da un numero intero n

    ottenuto moltiplicando tra loro due numeri primi molto grandi, che restano segreti.

    1.2 Numeri primi e funzione di Eulero

    Denizione 1. Un numero intero maggiore di 1 si dice primo se divisibile senza resto

    soltanto per 1 e per se stesso.

    Ci sono vari modi per testare la primalit di un intero n. Il pi semplice provare

    a dividerlo per tutti i primi no a

    n (non ha senso andare avanti perch, se n non

    primo, avr sicuramente un fattore primo minore o uguale a

    n); tuttavia questo

    metodo non praticabile perch molto laborioso per primi grandi e quindi necessita

    di tempi eccessivamente lunghi. Ci sono metodi pi sosticati per determinare che un

    numero primo, ma spesso pi facile vedere che un numero non primo. Questo

    perch i numeri primi sono numeri speciali, che godono di particolari propriet: se

    una di esse non soddisfatta per un certo numero, possiamo dire con certezza che

    esso non primo.

    Denizione 2 (Congruenza). Sia n Z; allora a e b si dicono congruenti modulo nse n divide a b ovvero se esiste un numero intero c tale che a = b+ cn. In simboli:a b (mod n).Si pu facilmente dimostrare che la congruenza modulo n (con n > 0) una

    relazione di equivalenza; in particolare, essa d luogo a n classi di equivalenza

    [0] , [1] , [n 1]

    che corrispondono a tutti i possibili resti della divisione per n.

    Si denota con Zn l'anello quoziente modulo la relazione di equivalenza; in particolare,

    1

    Sta per posta elettronica certicata.

    3

  • Capitolo 1. Introduzione alla crittograa e preliminari

    si dimostra che Zn un campo se e solo se n primo.

    Denizione 3 (Funzione di Eulero). Sia n un numero intero positivo; allora (n) il

    numero degli interi non negativi minori di n che sono coprimi con n. Equivalente-

    mente, (n) l'ordine del gruppo degli elementi invertibili dell'anello Zn (ogni classeresto ha un unico rappresentante non negativo minore di n).

    Proposizione 1. La funzione moltiplicativa, cio

    (m n) = (m) (n)

    se (m,n) = 1.

    Dimostrazione. Per il Teorema (3) cinese dei resti, che verr enunciato in seguito, si

    ha l'isomorsmo seguente

    Zmn Zm Znu + mnZ 7 (u + mZ, u + nZ). (1.1)

    Grazie a esso possiamo dire che il numero (mn) di elementi invertibili del primo

    anello uguaglia quello del secondo, che (m)(n) per una generale propriet del

    prodotto diretto di anelli.

    Osservazione 1. Se p primo, (n) = p 1, perch tutti gli interi positiviminori di p sono coprimi con p.

    Se n potenza di un primo p, cio n = p, per un opportuno vale

    (n) = p p1 = p1 (p 1).

    Questo perch il numero di interi positivi coprimi con p dato dalla dierenza

    tra il numero degli interi positivi minori di p e il numero dei multipli positivi

    di p minori o uguali a p.

    Il caso che interessa a noi, relativo all'RSA n = p q dove p e q sono due numeriprimi grandi e distinti (anch ci sia una certa sicurezza p e q dovrebbero avere circa

    100 cifre decimali). Dalle propriet della funzione di Eulero abbiamo che

    (n) = (p) (q) = (p 1) (q 1).

    4

  • 1.2. Numeri primi e funzione di Eulero

    Teorema 1 (di Eulero-Fermat). Siano a, n interi positivi con (a, n) = 1; allora

    a(n) 1 (mod n).

    Dimostrazione. Se (a, n) = 1, l'intero a appartiene al gruppo degli elementi invertibili

    dell'anello Zn (indicato come Zn). Poich tale gruppo ha ordine (n), segue le tesi.

    Teorema 2 (piccolo teorema di Fermat). Sia p un primo; allora per ogni intero a vale

    ap a (mod p).

    Dimostrazione. Se p | a, la conclusione immediata; se invece p - a la tesi segue dalteorema di Eulero-Fermat. Tale risultato ancora pi evidente se la tesi si scrive

    nella forma a (ap1 1) 0 (mod p).

    Il piccolo teorema di Fermat ci illustra una delle propriet dei numeri primi, per

    cui possiamo dire che, se un intero gode di questa propriet, c' un'alta probabilit

    che esso sia primo. Tuttavia, bisogna fare attenzione ad alcuni numeri che deniamo

    qui di seguito.

    Denizione 4 (numero pseudoprimo). Un numero intero n si dice pseudoprimo rispet-

    to alla base b se

    bn1 1 (mod n).Notiamo che, se n primo, allora n pseudoprimo rispetto ad ogni base b, per il

    piccolo teorema di Fermat.

    I numeri pseudoprimi sono quindi numeri che pretenderebbero di essere primi passan-

    do solo per il test bn1 1 (modn) per un certo b e ci ovviamente non sucienteper determinare la sua primalit. Tali numeri per fortuna si determinano facilmente;

    possibile fare ci per la seguente Proposizione.

    Proposizione 2. Sia n intero diverso da 1 e non primo; se n non pseudoprimo rispetto

    a una certa base b allora non pseudoprimo rispetto ad almeno la met delle basi

    possibili (che sono le (n) basi b con 0 < b < n e (b, n) = 1).

    Dimostrazione. Sia B = {b (Zn) : bn1 = 1} l'insieme delle basi per cui n pseudoprimo, considerate modulo n. Osserviamo che B un sottogruppo proprio di

    (Zn); infatti un sottogruppo in quanto, dati a, b B, cio an1 = bn1 = 1,segue che (ab)n1 = 1, quindi ab B e (a1)n1 = (an1)1 = 1, quindi a1 B.

    5

  • Capitolo 1. Introduzione alla crittograa e preliminari

    Inoltre, per ipotesi, esiste almeno una base b per cui n non pseudoprimo e che quindi

    non sta in B. Segue che

    |B| = (n)|(Zn) : B| (n)

    2

    dove |(Zn) : B| indica la dimensione di B in Zn, cio il grado dell'estensione Zn diB (abbiamo dovuto provare che B sottogruppo di Zn).

    Denizione 5. Sia n un intero dispari non primo e diverso da 1. Allora n si dice

    numero di Carmichael se

    bn1 1 (mod n)per ogni base b tale che (b, n) = 1.

    Un numero di Carmichael quindi un numero non primo ma pseudoprimo rispet-

    to a qualunque base. Anche i numeri di Carmichael si possono scoprire facilmente,

    usando un semplice algoritmo basato sul fatto che, se un intero n primo, allora gli

    unici interi b tali che b2 1 (mod n) sono 1.Esistono anche algoritmi pi ranati (in cui non ci addentriamo) per testare la pri-

    malit di un intero, che non presentano casi eccezionali come i numeri di Carmichael.

    1.3 Teorema cinese dei resti

    Teorema 3 (Teorema cinese dei resti). Siano n1, n2, . . . , nm numeri interi positivi a

    due a due coprimi e siano a1, a2, . . . , am altrettanti interi. Allora:

    esiste un intero x che risolve il seguente sistema:x a1 (modn1)x a2 (modn2). . .

    x am (modnm).(1.2)

    Inoltre, detta x0 una soluzione particolare, essa rappresenta la soluzione generale

    xk = x0 + (n1 n2 . . . nm) k, con k Z; due interi b e c che sono soluzione del sistema (1.2) sono congruenti tra loromodulo N = n1 n2 . . . nm, cio b c (modN); due interi v e z che siano congruenti tra loro modulo ni, per ogni i = 1 . . .m,lo sono anche modulo N .

    6

  • 1.3. Teorema cinese dei resti

    Dimostrazione. Dimostrazione seguendo [Jac89] e [Sta07].

    1. SiaN = n1n2. . .nm e sia, per ogni i = 1, . . . ,m, Ni = Nni =

    j 6=i nj. Allora,per ogni indice i, non avendo ni alcun fattore primo con nj, (per ogni j 6= i),segue che ni non ha fattori primi in comune con Ni, ossia (Nj, ni) = 1. Quindi,

    per ogni i = 1, . . . ,m, la congruenza lineare Nix bi (modni) ammette unasoluzione ci.

    Sia ora c =m

    i=1 Nici e sia ssato un indice i. Si osservi che, per ogni j 6= i,ni divide Nj e quindi anche Nici. Pertanto

    c = Nici +j 6=i

    Njcj Nici bi (modni).

    L'ultima congruenza dovuta al fatto che ci verica il sistemaNix bi (modni).Sia ora k Z; allora, essendo N ni, per ogni i = 1, . . . ,m, si ha chexk x0 bi (modni), per ogni i = 1, . . . ,m, ossia xk soluzione del sistema(1.2).

    Sia quindi x una soluzione del sistema (1.2). Allora x x0 (modni) per ogniindice i, quindi ni | (x x0). Poich gli ni sono a due a due coprimi, il loro pro-dotto (cio N) divide xx0; questo per il teorema fondamentale dell'aritmetica(4). Quindi esiste k Z tale che x x0 = kN , cio x = xk.

    2. Siano b, c le soluzioni del sistemax a1 (modn1)x a2 (modn2). . .

    x am (modnm).Allora b c soddisfa

    b c 0 (modn1)b c 0 (modn2). . .

    b c 0 (modnm)cio b c 0 (modni) per ogni i; ci signica che N | (b c), cio per ogniindice i b c multiplo del massimo comune divisore degli ni. Poich gli nisono a due a due coprimi, tale massimo comune divisore coincide proprio con il

    loro prodotto.

    7

  • Capitolo 1. Introduzione alla crittograa e preliminari

    3. Tale dimostrazione l'inversa del punto 2.

    Il Teorema cinese dei resti (3) fondamentale nel funzionamento dell'algoritmo

    del sistema RSA; esso permette infatti di eseguire calcoli modulari rispetto ad un

    certo numero intero n e in particolare mostra come si possa calcolare x conoscendo

    x (mod p) e x (mod q) (con p e q coprimi). La Formula di Garmer ([Sta07]) ci dice

    operativamente come calcolare x.

    Proposizione 3 (Formula di Garmer). Nelle ipotesi del teorema cinese dei resti, si ha

    che la soluzione x al sistema (1.2) data da

    x = (((a b)(q1 (mod p))) (mod p)) q + b.

    Dimostrazione. Si verica inanzitutto che 0 x (n 1). Naturalmente x 0 et := (((a, b)(q1 (mod p))) (mod p)) un termine compreso tra 0 e p 1 perch calcolato modulo p.

    Poich t (p1), tq (p1)q e x = tq + b (p1)q + (q1) = pq 1 = n 1si ha 0 x (n 1).Ora controlliamo che il risultato sia eettivamente corretto. Sia x (mod p) = a e

    x (mod q) = b; allora

    x (mod q) = (((a, b)(q1 (mod p))) (mod p)) q + b (mod q)= (K q + b) (mod q) per qualche K= b (mod q)

    = b;

    (1.3)

    x (mod p) = (((a, b)(q1 (mod p))) (mod p)) q + b (mod p)= ((a b)q1 q + b) (mod p)= ((a b)(q1 q) + b) (mod p)= ((a b) + b) (mod p)= a (mod p)

    = a.

    (1.4)

    8

  • 1.4. Fattorizzazione in numeri primi

    Osservazione 2. Dal teorema cinese dei resti sappiamo che la soluzione al sistema

    (1.2) pu essere solo una, quindi la formula di Garmer risolve completamente il pro-

    blema della risoluzione di tale sistema.

    1.4 Fattorizzazione in numeri primi

    La sicurezza dell'algoritmo RSA si basa sulla dicolt di fattorizzare numeri interi

    molto grandi.

    Denizione 6. Per fattorizzazione si intende la scomposizione di un numero intero

    in un insieme di divisori non banali che, moltiplicati fra loro, diano il numero di

    partenza.

    Il teorema Fondamentale dell'Aritmetica assicura che la scomposizione in fattori

    primi unica, a meno di cambi d'ordine tra i fattori.

    Teorema 4 (Teorema fondamentale dell'aritmetica). Ogni numero intero a > 1 o

    un numero primo o si scrive in modo unico come

    a =ni=1

    pi = p11 p22 . . . pnn

    dove pi sono numeri primi e i interi positivi. A meno che non si inverta l'ordine dei

    fattori, tale scomposizione unica.

    Naturalmente, calcolare il prodotto di due o pi numeri interi primi p e q, anche

    se molto grandi (composti di qualche centinaio di cifre) un'operazione pressoch

    elementare e qualasiasi calcolatore attuale in grado di farlo in tempo breve. Tuttavia,

    dato n = p q, dicile scomporlo nei suoi fattori elementari p e q. Nel corso dellastoria sono stati ideati molti metodi per rendere la fattorizzazione un problema sempre

    pi veloce ed agevole; esso per rimane tuttora un problema complesso.

    9

  • Algoritmo RSA, requisiti di sicurezza e principali

    attacchi

    In questo capitolo si va ad analizzare nel dettaglio il sistema crittograco a chiave

    pubblica RSA. Viene inoltre descritto un esempio di rma autenticata e si elencano

    le principali norme di sicurezza da seguire per non esporre il sistema ai pericoli pi

    comuni. Inne, si presentano sinteticamente alcuni attacchi noti.

    2.1 Algoritmo RSA

    Nel 1978 Ronal Rivest, Adi Shamir e Leonard Adelman pubblicarono sulla rivista

    Communication of ACM ([RSA78]) la descrizione del cifrario RSA (acronimo ottenu-

    to dalle iniziali dei suoi inventori). Esso fu uno dei primi sistemi crittograci a chiave

    pubblica (si veda la Sezione 1.1) ed operava a blocchi interpretando ogni messaggio

    come un numero intero. Per alcuni anni RSA rimase soltanto una bella idea, ma

    ben presto, per la sua semplicit e sicurezza, venne utilizzato (e lo anche oggi) in

    molti settori, specialmente per la protezione di comunicazioni su piattaforme digitali.

    L'algoritmo di codica e decodica sfruttato nel sistema RSA il seguente.

    Alice, che vuole ricevere messaggi da Bob (o da qualsiasi utente), si costruisce

    anzitutto una chiave pubblica. Sceglie quindi due numeri primi dispari distinti p e q

    molto grandi (per avere una certa sicurezza, p e q devono avere circa 128 cifre, ovvero

    circa 425 cifre binarie) e calcola n = p q; per quanto visto nella Proposizione 1

    (n) = (p 1) (q 1).

    Sceglie poi un intero e tale che (e, (n)) = 1.

    Alice si quindi costruita la coppia (n, e), che rappresenta la sua chiave pubblica (di

    cifratura); ogni utente potr utilizzarla per inviare un messaggio ad Alice.

    Bob traduce il messaggio che vuole inviare ad Alice in una sequenza di numeri xi

    X = (x1, x2, . . .)

    11

  • Capitolo 2. Algoritmo RSA, requisiti di sicurezza e principali attacchi

    con xi < n i. Si osservi che gli xi saranno quasi sicuramente primi con n, es-sendo che il rapporto

    (n)ntende a 1 per n opportunamente grande. Bob deve ora

    cifrare il messaggio in chiaro X = (x1, x2, . . .) per ottenere il messaggio cifrato

    Y = (y1, y2, . . .) utilizzando la chiave pubblica e messa a disposizione da Alice e

    lo fa nel modo seguente:

    yi = xei (modn);

    invia quindi Y ad Alice.

    Per decifrare il messaggio Alice deve utilizzare la funzione inversa, che solo lei pu

    calcolare perch l'unica a conoscere la fattorizzazione di n. Ricava quindi due numeri

    d e t tali che

    de + (n)t = 1

    e procede nel modo seguente, presumendo per semplicit che gli xi siano primi con n:

    xi = x1i = x

    de+(n)ti = x

    dei x(n)ti ydi (modn)

    dato che yi = xei (modn) e x

    (n)ti 1 (modn) per il teorema di Eulero-Fermat (1).Se xi non fosse primo con n, Alice compirebbe la stessa operazione applicando prima

    il teorema cinese dei resti (3) su n = p q e poi il teorema di Eulero-Fermat (1).Per ottenere il messaggio in chiaro, ad Alice basta dunque calcolare la potenza d-

    esima di yi e calcolarne il resto modulo n.

    Riassumendo, i parametri utilizzati nell'algoritmo sono:

    informazioni pubbliche informazioni private

    n, e p, q, d

    ALGORITMO ESEMPIO NUMERICO

    Esempio 1. Alice sceglie due primi

    grandi p e q e ne calcola il prodotto

    n = p q

    p = 31, q = 41 = n = 1271

    Tabella 2.1: continua nella prossima pagina

    12

  • 2.1. Algoritmo RSA

    Tabella 2.1: continua dalla pagina precedente

    ALGORITMO ESEMPIO NUMERICO

    Alice calcola (n), cio trova il

    numero degli interi minori di n e primi

    con esso

    (n) = 30 40 = 1200

    Alice sceglie un numero e < (n) tale

    che

    (e, (n)) = 1

    e = 13

    la chiave pubblica (n, e) costruita (1200, 13)

    Bob traduce il suo messaggio in una

    sequenza di numeri xi minori di n

    Supponiamo il messaggio sia

    CIFRARIO: gli xi si otterranno ad

    esempio dalla seguente relazione

    xi = a + b 26, dove ogni letteracorrisponde a un numero compreso tra

    0 e 25 cio

    CI = x1 = 2 + 8 26 = 210FR = x2 = 5 + 17 26 = 447AR = x3 = 0 + 17 26 = 442IO = x4 = 8 + 14 26 = 372

    Tabella 2.1: continua nella prossima pagina

    13

  • Capitolo 2. Algoritmo RSA, requisiti di sicurezza e principali attacchi

    Tabella 2.1: continua dalla pagina precedente

    ALGORITMO ESEMPIO NUMERICO

    Bob cifra il messaggio calcolando

    yi = xei (modn)

    Il messaggio cifrato risulta quindi:

    y1 21013 (mod 1271) 818y2 44713 (mod 1271) 879y3 44213 (mod 1271) 729y4 37213 (mod 1271) 899

    Alice calcola d e t con l'algoritmo di

    Euclide esteso in modo che

    d e + (n) t = 1

    si ha quindi d = 277 e t = 3

    Alice procede alla decodica del

    messaggio: xi = ydi (modn)

    x1 818277 (mod 1271) 210x2 879277 (mod 1271) 447x3 729277 (mod 1271) 442x4 899277 (mod 1271) 372

    Alice applica la funzione inversa a

    quella che ha applicato Bob per cifrare

    e ottiene il messaggio in chiaro

    210 = 2 + 8 26 = CI447 = 5 + 17 26 = FR442 = 0 + 17 26 = AR372 = 8 + 14 26 = IO

    Tabella 2.1: Esempio numerico algoritmo RSA

    14

  • 2.2. Firma autenticata nell'RSA

    2.2 Firma autenticata nell'RSA

    Come stato anticipato nella Sezione (1.1), la crittograa a chiave pubblica per-

    mette di rmare un messaggio; nel caso dell'algoritmo RSA, tale procedimento fun-

    ziona nel modo seguente.

    Sia 0 M < n un messaggio che Alice vuole inviare a Bob 1.Si possono dare varie denizioni di rma associata a un messaggio; la seguente ne

    un semplice esempio.

    Denizione 7 (Firma di un messaggio). Sia d esponente privato del sistema RSA con

    modulo n; allora deniamo rma di un messaggio M la seguente:

    sig(n,d)(M) = Md (modn).

    Una rma denita in questo modo ha le seguenti caratteristiche.

    Per Alice facile calcolare la rma del messaggio M da inviare a Bob; bastafare un elevamento a potenza modulo n.

    La verica dell'autenticit della rma pu essere fatta da chiunque.

    La rma dicile da falsicare per Eva; infatti tale operazione equivale arompere il crittosistema RSA.

    Per vericare la rma si pu usare la seguente procedura:

    ver(n,e)(M,F ) =

    {VERO, seM = F e (modn)

    FALSO, altrimenti.

    Sia denito un sistema RSA con n = 47 71 = 3337, e = 79, d = 1019; conquesti parametri, (n) = 46 70 = 3220 ed eettivamente e d 1 (mod(n)).

    1

    Si pu eventualmente scomporre il messaggio in due parti, associate a due numeri minori di n;questa condizione necessaria poich non vogliamo che due messaggi distinti siano accoppiati alla

    stessa rma.

    15

  • Capitolo 2. Algoritmo RSA, requisiti di sicurezza e principali attacchi

    ALGORITMO ESEMPIO NUMERICO

    Esempio 2. Alice vuole rmare un

    messaggio; associa perci ad esso un

    numero M , che sceglier compreso tra

    0 e n, utilizzando un certo algoritmo

    M = 1570

    Alice utilizza il proprio esponente

    privato d per calcolare la rma F

    associata al messaggio M :

    F = sig(n,d)(M) = Md (modn)

    sig(3337,1019)(1570) =

    15701019 (mod 3337) = 668

    Bob riceve (M,F ), cio il messaggio

    M con rma associata ad esso F

    Bob riceve (1570, 668)

    Bob deve vericare se eettivamente F

    la rma del messaggio M calcolando

    ver(n,e)(M,F ), cio Fe (modn); se tale

    risultato pari a M la rma

    garantita, altrimenti non lo

    ver(3337,79)(1570, 668) = V ERO

    perch 66879 1570 (mod 3337)

    Tabella 2.2: Firma RSA

    16

  • 2.3. Requisiti generali per la sicurezza

    2.3 Requisiti generali per la sicurezza

    Nonostante la sua ecienza, il sistema RSA ha un costo computazionale piut-

    tosto elevato perch, per garantire la sua integrit, si devono scegliere parametri

    opportunamente grandi; ecco perch forte la tentazione di ridurre i tempi di codi-

    ca/decodica, ad esempio abbassando alcuni parametri del sistema (come esponenti

    pubblici o privati).

    I requisiti generali per la sicurezza di RSA sono dati dal NIST, che sta per Na-

    tional Institute of Standards and Technology. Elenchiamo di seguito alcune tra le pi

    importanti norme che tale ente invita a rispettare (si veda [BCRS09]).

    1. Le chiavi devono essere generate usando un metodo appropriato.

    2. La chiave privata e i fattori primi p e q devono essere opportunamente protetti.

    3. Ogni chiave pubblica e ogni utilizzo della chiave devono poter essere ricondotti

    a un utente identicato.

    4. La chiave pubblica deve essere protetta da modiche non autorizzate; a tale

    riguardo, esiste un'Autorit Certicativa (CA), cio un ente abilitato a rila-

    sciare un certicato digitale che segue standard internazionali e conforme alla

    normativa vigente in materia.

    5. Il destinatario della chiave pubblica deve essere certo dell'integrit dei dati ri-

    cevuti e della corretta associazione tra chiave pubblica e possessore della coppia

    di chiavi.

    6. Una coppia di chiavi non pu essere usata per diversi scopi crittograci (come

    rma digitale e processo di creazione di chiavi).

    7. Il proprietario di una coppia di chiavi dev'essere sicuro che essa sia stata creata

    con metodo appropriato e sicuro.

    2

    8. Il destinatario di una chiave pubblica dev'essere certo dell'identit del proprie-

    tario della chiave e del fatto che esso eettivamente possieda tale chiave.

    Oltre a questi vincoli sulla generazione delle chiavi (che impediscono di risalire

    dalla chiave pubblica alla chiave privata), il NIST fornisce delle indicazioni per la

    sicurezza nella cifratura e decifratura dei messaggi, cio per fare in modo che sia im-

    possibile risalire dal messaggio cifrato al messaggio in chiaro. Questo processo di

    2

    Una coppia di chiavi nel sistema RSA consiste in una chiave pubblica (n, e) e in una chiaveprivata (p, q, d), dove n = p q, e primo con (n) e d tale che e d + (n) d 1 (modn).

    17

  • Capitolo 2. Algoritmo RSA, requisiti di sicurezza e principali attacchi

    dicile realizzazione per gli ardui problemi della fattorizzazione del modulo n e del

    calcolo delle radici modulo n. 3

    Il NIST propone quindi il rispetto di alcune norme per evitare la rottura dell'algorit-

    mo RSA, che sono le seguenti:

    n dev'essere prodotto di esattamente due primi distinti;

    l'esponente pubblico e dev'essere scelto prima di generare i primi p e q e l'espo-nente privato d e deve essere un numero primo tale che

    65.537 e 2256;

    i primi p e q devono soddisfare le seguenti propriet:

    1. devono essere generati indipendentemente e casualmente per diverse coppie

    di chiavi;

    2. (n), dove n = p q, dev'essere maggiore di e e relativamente primo conesso;

    3. p e q devono essere scelti casualmente tra i primi che soddisfano

    2(2(nbit/2)1) p, q (2nbit/2 1)

    dove nbit corrisponde alla lunghezza in bit di n (solitamente 1024 che

    corrisponde a 309 cifre decimali);

    4. p q > 2(nbit/2)100;

    l'esponente privato d, che dev'essere scelto dopo aver determinato e e dopo avergenerato i primi p e q

    1. deve essere un intero positivo tale che

    2nbit/2 < d(n);

    2. ed 1 (mod(n)), quindi

    d e1 (mod(n)).3

    Si tende a basare la sicurezza di RSA sulla dicolt della fattorizzazione di n, essendo unaquestione molto pi discussa rispetto a quella del calcolo delle radici modulo n.

    18

  • 2.4. Attacchi elementari dovuti a errata scelta del modulo

    Se d 2nbit/2, si devono rideterminare p, q ed e (e dev'essere scelto perprimo, prima di generare i nuovi p e q).

    I principali attacchi ad RSA si basano sul mancato rispetto di almeno una di queste

    norme.

    2.4 Attacchi elementari dovuti a errata scelta del modulo

    RSA stato analizzato n dalla sua creazione per la sua vulnerabilit ad attacchi

    di vario tipo; nel corso delle ricerche si sono formulati degli algoritmi di rottura di

    RSA molto eleganti, ma nessuno di essi si rivelato realmente minatorio per la sicu-

    rezza del sistema. Questo perch il pericolo deriva da un uso errato dell'algoritmo, in

    particolare da scelte infelici di alcuni parametri.

    Un primo esempio di attacco al sistema RSA con chiave pubblica (n, e) quello che

    sfrutta la fattorizzazione di n. Conoscere la fattorizzazione di n signica conoscere p

    e q, quindi facile ricavare (n), da cui si ottiene l'esponente privato di decifrazione

    d essendo d e1 (modn).Il modo pi intuitivo per decifrare il messaggio consiste nel calcolare, per ogni valore

    di Zn, il valore crittato e ricercare quali parametri si trovano nel messaggio cifrato,ottenendo cos il messaggio in chiaro. Tuttavia questo procedimento risulta troppo

    lungo, richiedendo un algoritmo di tempo esponenziale.

    Un attacco interessante invece quello di Fermat, che consiste nella facile fatto-

    rizzazione di n se (p q) < n1/2 e n 1 (mod 4). Con queste premesse, n sarfattorizzabile individuando due interi positivi x, y tali che

    4n = x2 y2.

    Fatto ci, p e q si ricaveranno ponendo p = 12(x+ y) e q = 1

    2(x y); eettivamente

    p e q saranno interi maggiori di 1 che moltiplicati tra loro danno n.

    2.5 Attacchi con esponente pubblico piccolo

    Per ridurre il tempo di cifratura o di verica della rma digitale, si pu esse-

    re tentati di utilizzare un esponente pubblico e piccolo. Si noti che il pi picco-

    lo valore di e possibile 3, ma in generale si raccomanda di assumere al minimo

    e = 216 + 1 = 65.537, per evitare di incorrere in alcuni tipi di attacco. Se si prende

    e = 216 +1, servono 17 moltiplicazioni per vericare la rma digitale; se invece si usa

    un e casuale, comunque minore di (n), ne servono circa 1000. I valori di e vengono

    19

  • Capitolo 2. Algoritmo RSA, requisiti di sicurezza e principali attacchi

    solitamente scelti tra i primi di Fermat, cio primi del tipo 22x + 1 per il fatto che

    rendono pi veloce l'elevamento a potenza modulo n e sono coprimi con p 1 e q 1.Quasi tutti gli attacchi che sfruttano il fatto che l'esponente pubblico e piccolo si

    basano sul teorema di Coppersmith (vedi [Bon99]).

    Teorema 5 (di Coppersmith). Sia n un intero e f Z[x] un polinomio monico digrado s; si consideri ssato X = n

    1sper qualche 0. Allora, dati (n, f), possibile trovare tutti gli interi x0 tali che

    |x0| < X e f(x0) 0 (modn).

    Il teorema fornisce a Eva un eciente algoritmo per ricavare tutte le radici di f

    modulo n minori di un ssato X = n1s. Al diminuire di X, si abbassa il tempo di

    implementazione dell'algoritmo.

    Un altro teorema ([BDF98], pag. 4, teorema 2.1), sempre dovuto a Coppersmith,

    che generalizza il precedente e su cui si basano gli attacchi ad RSA con esponente

    pubblico e piccolo, il seguente .

    Teorema 6. Sia f(x, y) una funzione polinomiale, in due variabili sugli interi, di grado

    massimo rispetto ad ogni variabile e si assumano i coecienti di f relativamente

    primi fra loro. Siano X, Y limitazioni sulle soluzioni desiderate x0, y0; deniamo

    f(x, y) := f(xX, yY ) e poniamo D come valore assoluto del massimo coeciente di

    f . Se XY < D23, allora si possono determinare in tempo polinomiale tutte le coppie

    di interi (x0, y0) con

    f(x0, y0) = 0, |x0| < X e |y0| < Y.

    Il seguente corollario mostra come si pu applicare il teorema di Coppersmith per

    attaccare RSA.

    Corollario 1. Sia n = p q modulo di un sistema RSA a nbit e siano dati r 2n4 ,p0 := p (mod r). Allora possibile fattorizzare n in un tempo polinomiale di n.

    2.5.1 Attacco di Hstad sulla trasmissione

    Alcuni attacchi che utilizzano il teorema di Coppersmith hanno lo scopo di recupe-

    rare il messaggio in chiaro conoscendo il messaggio cifrato e le relazioni tra i messaggi

    da cifrare (purch il messaggio sia cifrato utilizzando lo stesso esponente pubblico).

    20

  • 2.5. Attacchi con esponente pubblico piccolo

    L'attacco di Hstad ad RSA ([Hs88]) rientra in questa categoria.

    Si supponga che Bob voglia inviare un messaggio M a pi persone, ognuna delle

    quali possiede una propria chiave pubblica (ni, ei) (sia M < ni per ogni i). Egli

    cifra quindi il messaggio M usando ognuna delle chiavi pubbliche associate ai vari

    destinatari e invia loro il messaggio. Eva intercetta tutti questi messaggi, che sa

    essere in qualche relazione tra loro.

    Assumiamo ei = 3 per ogni i; allora si pu dimostrare che Eva potr conoscere M se

    i destinatari sono 3 o pi di 3. Infatti, i messaggi da decifrare sono:

    C1 M3 (modn1)

    C2 M3 (modn2)C3 M3 (modn3).

    Sia inoltre (ni, nj) = 1 per ogni i 6= j, altrimenti gli ni sarebbero facilmentefattorizzabili.

    Applicando il teorema cinese dei resti (3) a C1, C2, C3 possiamo ottenere C Zn1n2n3tale che

    C M3 (modn1n2n3).Si noti che, essendoM < ni,M

    3 < n1n2n3, quindi C = M3 sugli interi; Eva quindipu ottenere M calcolando le radici cubiche reali di C .

    In generale, se tutti gli esponenti pubblici valgono e, Eva pu ottenere il messag-

    gio in chiaro se il numero di destinatari maggiore o uguale ad e. Naturalmente,

    l'attacco di Hstad applicabile per valori di e opportunamente piccoli.

    Hstad descrive anche un attacco molto pi potente, basato sull'ipotesi che i mes-

    saggi siano legati tra loro da una relazione polinomiale (come ad esempio Mi =

    i2m + M); in tal caso, Bob ottiene per ogni destinatario un polinomio pubblico sso

    fi ZNi . Il messaggio segreto sar quindi il cifrato dei vari fi(M), quindi Eva inter-cetta i Ci (fi(M))ei (modni) per ogni i. Si dimostra che Eva potr ottenere M seil numero di destinatari del messaggio almeno uguale al massimo prodotto dell'e-

    sponente pubblico per il grado della funzione che lega tra di loro i vari messaggi. In

    particolare, se Bob invia messaggi legati tra loro da una funzione lineare a k destinata-

    ri, con esponenti pubblici uguali e, Eva pu risalire al messaggio segreto solo se k > e.

    Si pu concludere quindi che per mantenere una certa sicurezza del sistema RSA

    21

  • Capitolo 2. Algoritmo RSA, requisiti di sicurezza e principali attacchi

    bisogna utilizzare esponenti di cifratura opportunamente elevati e continuamente di-

    versi tra loro (cos come i moduli ni) oppure trasformare i messaggi tramite relazioni

    polinomiali non stabili.

    2.5.2 Attacco di Franklin-Reiter sui messaggi correlati

    Franklin e Reiter danno il nome ad un attacco che si basa sull'uso di uno stes-

    so modulo, di un esponente pubblico piccolo e di una funzione polinomiale che lega

    tra loro i messaggi da inviare (si veda [CFPR96]). Con queste premesse possibile

    recuperare il messaggio originale da quelli cifrati conoscendo la relazione che li lega,

    purch siano creati usando la stessa chiave pubblica (n, e) (con e esponente pubbli-

    co piccolo). Tale idea riassunta nel seguente lemma ([Bon99], pagina 209, Lemma 7).

    Lemma 2.5.1. Sia e un esponente pubblico piccolo e (n, e) la chiave pubblica per RSA.

    Siano M1,M2 Zn, M1 6= M2 messaggi da cifrare tali che M1 = f(M2) (modn),con f Zn[x] funzione polinomiale lineare f = ax + b (b 6= 0) 4; siano C1, C2 imessaggi M1,M2 cifrati. Allora, dati (n, e, C1, C2, f), Eva pu risalire al messaggio

    in chiaro.

    L'attacco di Franklin-Reiter costituisce la base per una classe pi ampia di attac-

    chi ad RSA, sempre nelle ipotesi di modulo costante e esponente pubblico piccolo.

    Per evitare questi tipi di attacchi, l'unica soluzione scegliere esponente pubblico ab-

    bastanza grande, modicare n ad ogni cifratura ed eventualmente utilizzare relazioni

    polinomiali non costanti per i vari messaggi.

    2.5.3 Attacco di Coppersmith

    Coppersmith raorza l'attacco di Franklin-Reiter (si veda [CFPR96]), riettendo

    su come si possa facilmente camuare un messaggio. Un modo molto semplice per

    rendere un messaggio pi dicile da decifrare aggiungere in coda al messaggio ori-

    ginale alcuni bit casuali. Coppersmith ha vericato per che tale metodo pu portare

    a dei pericoli per la sicurezza del sistema; infatti, se per caso Bob invia ad Alice

    pi volte lo stesso messaggio (che viene intercettato da Eve), Eve ha a disposizione

    pi messaggi cifrati che corrispondono allo stesso messaggio originale e pu, pur non

    conoscendo i bit nali, leggere il messaggio in chiaro (si veda [Bon99]).

    4

    Questo attacco si pu estendere anche al caso in cui f una funzione polinomiale di un certogrado .

    22

  • 2.6. Attacchi all'esposizione parziale della chiave

    Teorema 7. Sia (n, e) la chiave pubblica del sistema RSA, dove n lungo nbit; sia

    inoltre m = ne2. Sia M Zn un messaggio lungo al massimo n m bit. Sia datol'algoritmo di cifratura seguente: M1 = 2

    mM + r1, M2 = 2mM + r2, con r1 6= r2e 0 r1, r2 < 2m. Se Eva conosce la chiave pubblica (n, e) e la cifratura di M1,M2,cio C1, C2, pu ottenere facilmente il messaggio M pur non conoscendo r1, r2.

    2.6 Attacchi all'esposizione parziale della chiave

    Gli attacchi a esposizione parziale ([Bon99]) si basano sulla possibilit di risalire

    all'esponente di decifratura d conoscendone soltanto una parte. Questo sistema

    impiegato ad esempio negli attacchi di temporizzazione, che rompono sistemi RSA

    studiando il tempo di esecuzione delle operazioni crittograche.

    Sia n = p q il modulo del sistema RSA, composto da nbit; sia soddisfatta inoltre laseguente:

    4 0, allora k > qn.2

    Dimostrazione. Per assurdo, sia

    hk6= pn

    qnuna frazione che verica hk

    < pnqncon h, k coprimi e 0 < k < qn. Allora, moltiplicando entrambi i membri per k e

    tenendo conto dell'ipotesi k < qn abbiamo

    |k h| < kqn|qn pn| < |qn pn| .

    Ma questo in contraddizione con il lemma (3.0.1).

    2

    In altri termini, la migliore approssimazione razionale di un numero razionale che ha lacaratteristica di essere pi vicino a di qualsiasi altra approssimazione frazionaria con denominatorepi piccolo.

    28

  • Attacco di Wiener a RSA

    In questo capitolo si descrive nel dettaglio l'attacco di Wiener al sistema RSA.

    Dopo averne illustrato con un esempio numerico il funzionamento, si accenna bre-

    vemente a come sia possibile contrastare tale attacco e a come si sia recentemente

    sviluppata la ricerca in questo settore.

    4.1 Attacco di Wiener

    L'attacco di Wiener ([Wie06]) fa parte della categoria di attacchi ad RSA basati

    sulla scelta di un esponente privato piccolo; la tentazione ad abbassare gli esponenti

    forte perch in questo modo si accelerano i processi di cifratura e di decifratura.

    Tuttavia, ci sono alcuni pericoli che devono essere evitati.

    Wiener mostr, gi nel 1990, che, scegliendo d < n1/4 (uscendo cio dai limiti det-

    tati dal NIST), l'algoritmo RSA pu essere rotto. Wiener diede inoltre delle soluzioni

    per evitare l'attacco da lui descritto; una di queste scegliere l'esponente pubblico e

    sucientemente grande, in particolare e > n3/2.

    Come si visto nella Sezione 3, le frazioni continue possono essere usate per

    calcolare numeratore e denominatore di una frazione quando una buona stima di tale

    frazione nota.

    Sia f un numero razionale e q0, q1, . . . , qm la sua espansione in frazione continua.Allora essa si ottiene sottraendo la parte intera di f , invertendo ripetutamente il resto

    e sottraendo ancora la parte intera, nch il resto non 0; cio:

    q0 = bfc , r0 = f q0qi =

    1

    ri1

    , ri =

    1

    ri1 qi(4.1)

    per i = 1, 2, . . . ,m.

    29

  • Capitolo 4. Attacco di Wiener a RSA

    Osservazione 5. Per ogni m vale qm 2; infatti, se qm = 1 allora rm1 = 1,fatto impossibile.

    Per ogni x > 0 si ha

    q0, q1, . . . , qm < q0, q1, . . . , qm1, qm + x se m pariq0, q1, . . . , qm > q0, q1, . . . , qm1, qm + x se m dispari(4.2)

    cio le approssimazioni razionali di un numero f che provengono dall'algoritmo

    delle frazioni continue sono alternativamente pi grandi di f e pi piccole di f .

    Infatti, q0, q1, . . . , qm1, qm = q0 +m1

    j=0(1)jdjdj+1dove i di sono i denominatori

    delle convergenti ai vari passi dell'algoritmo (q0, q1, . . . , qi = nidi , con (ni, di) =1).

    Se f un numero reale e nmdm la convergente m-esima del suo sviluppo in frazione

    continua, ricordiamo che valgono le seguenti relazioni (vedi Proposizione 5):

    nidi1 ni1di = (1)i

    per i = 1, 2, . . . ,m.

    Sia ora f un'approssimazione di f cio tale che

    f = f(1 )

    per qualche 0; siano inoltre qi, ri e qi, ri i quozienti e i resti rispettivamente dif e di f .Se abbastanza piccolo, i numeratori e i denominatori di f possono essere ricavati

    utilizzando il seguente algoritmo, da ripetersi nch non si ricava f .

    1. Si generano i quozienti qi dell'espansione di f.

    2. Utilizzando la relazione sui numeratori e i denominatori delle convergenti, si

    costruisce la frazione q0, q

    1, . . . , q

    i1, q

    i + 1

    se i pari

    q0, q1, . . . , q

    i1, q

    i

    se i dispari.

    3. Si controlla se la frazione costruita proprio f .

    Osservazione 6. La ragione per cui si aggiunge 1, se i quozienti sono in numero pari,

    che la supposizione di f deve essere maggiore di f , poich f f ; infatti, per la

    30

  • 4.1. Attacco di Wiener

    (4.2), si ha q0, q

    1, . . . , q

    i1, q

    i

    < f =

    q0, q

    1, . . . , q

    i1, q

    i + r

    i

    .

    Si noti che deve esistere un test che verichi la correttezza della supposizione di

    f . L'algoritmo avr successo se

    q0, q1, . . . qm1, qm 1 < f < q0, q1, . . . , qm1, qm se m pariq0, q1, . . . qm1, qm + 1 < f < q0, q1, . . . , qm1, qm se m dispari.(4.3)

    Usando queste relazioni, si pu trovare che deve soddisfare la seguente:

    1 f

    f

    (si veda [Wie06]).

    Proposizione 6. Anch sia garantito il successo dell'algoritmo delle frazioni continue,

    necessario che

    pq; riscrivendo la (4.8) si ha

    edg = k(p 1)(q 1) + g; (4.11)

    quindi, si pu vedere che dividendo edg per k si ottiene quoziente (p 1)(q 1) eresto g, supponendo che k > g.

    Ragionando in questo modo, si giunge a una supposizione di (p 1)(q 1) e g. Sela supposizione di (p 1)(q 1) 0, si hanno valori sbagliati per k e dg; questo casova escluso. La supposizione di (p 1)(q 1) serve a trovare una supposizione per(p+ q)

    2usando la seguente identit:

    pq (p 1)(q 1) + 12

    =(p + q)

    2. (4.12)

    34

  • 4.2. Algoritmo dell'attacco di Wiener passo per passo

    Se la supposizione di

    (p+ q)2non un intero, la supposizione di k e dg non pu essere

    usata; la supposizione di

    (p+ q)2pu essere usata per ottenere una supposizione di

    (p q2

    )2 usando l'identit seguente:(p + q

    2

    )2 pq =

    (p q

    2

    )2. (4.13)

    Se la supposizione di (p q2

    )2 un quadrato perfetto allora le supposizioni di k e dg

    sono corrette e in questo caso possibile ricavare d dividendo dg per g (si ricordi

    che g era il resto della divisione di edgper k). Ora p e q possono essere determinati

    partendo dalla conoscenza di

    p+ q2e

    p q2.

    Se g piccolo e k < dg, da (4.10) si vede che esponenti privati d aventi numero di

    cifre no a circa 1/4 i bit di n si possono reperire in tempo polinomiale.

    Osservazione 7. Poich il numero di passi nello sviluppo in frazione continua dien al pi una costante moltiplicata per log n, e poich l'algoritmo della frazione

    continua si ferma quando si ottiene

    en, il procedimento che Eva deve compiere

    per fattorizzare n termina rapidamente!

    Generalmente, n di 1024 bit; quindi, per evitare questo attacco, d dev'esserealmeno di 256 bit. Sfortunatamente, 256 bit sono il limite operativo attuale

    delle smart card.

    4.2 Algoritmo dell'attacco di Wiener passo per passo

    Partendo dalle ipotesi iniziali del Teorema 13, cio q < p < 2q e d < 13n

    14, si

    vuole scrivere cosa debba fare in pratica Eva per attaccare il sistema RSA utilizzando

    la teoria fornita da Wiener (si veda [Ren04]).

    In input si ha: e, pq.

    In output si ha: d.

    1. Sia i = 0, 1, 2, . . . ,m.

    2. Si calcoli

    qi =

    epq

    , se i = 0

    1

    ri1

    , altrimenti.

    (4.14)

    35

  • Capitolo 4. Attacco di Wiener a RSA

    3. Si calcoli

    ri =

    epq q0, se i = 0

    1ri1 qi, altrimenti.(4.15)

    4. Si calcoli

    nidi

    = q0, q1, . . . , qi:

    ni =

    q0, se i = 0

    q0q1 + 1, se i = 1

    qini1 + n

    i2, altrimenti.

    (4.16)

    qi =

    1, se i = 0

    q1, se i = 1

    qidi1 + d

    i2, altrimenti.

    (4.17)

    5. Si trova una supposizione di

    kdg:

    q0, q1, . . . , qi + 1 , se i pari

    q0, q1, . . . , qi , se i dispari.(4.18)

    6. Si trova una supposizione di edg = e dg.

    7. Si trova una supposizione di (p 1)(q 1) = edgk

    .

    8. Se (p 1)(q 1) = 0, si incrementa i e si riparte con l'algoritmo.

    9. Si trova una supposizione di g = edg (mod k).

    10. Si trova una supposizione di

    p+ q2

    = pq (p 1)(q 1)+12.

    11. Se

    p+ q2

    = 0, si incrementa i e si riparte con l'algoritmo.

    12. Si trova una supposizione di (p q2

    )2 = (p+ q2

    )2 pq.

    13. Se (p q2

    )2 non un quadrato perfetto, si incrementa i e si riparte con l'algoritmo.

    14. Si calcola d = dgg.

    36

  • 4.3. Esempio numerico di attacco di Wiener

    Si pu inoltre calcolare il valore di p e q sfruttando le seguenti relazioni:

    p =p q

    2+p + q

    2

    q = (p q

    2 p + q

    2

    ).(4.19)

    4.3 Esempio numerico di attacco di Wiener

    La seguente tabella illustra un esempio concreto di attacco di Wiener ad RSA.

    Siano:

    n = p q = 8927 e e = 2621.L'espansione in frazione continua sar eseguita su

    en

    = 26218927.

    QUANTITA'

    i=0 i=1 i=2

    qi0 3 2

    ri26218927

    10642621

    4931064

    nidi

    = q0, q1, . . . , qi01

    13

    27

    supposizione per

    kdG

    11

    13

    310

    Tabella 4.1: continua nella prossima pagina

    37

  • Capitolo 4. Attacco di Wiener a RSA

    Tabella 4.1: continua dalla pagina precedente

    QUANTITA' i=0 i=1 i=2

    supposizione per edG2621 7863 26210

    supposizione per (n)2621 7863 8736

    supposizione per G0 0 2

    supposizione per

    p+q2

    3153.5 532.5 96

    supposizione per

    pq2

    289 = 172

    d5

    Tabella 4.1: Esempio numerico di attacco di Wiener

    38

  • 4.4. Come contrastare l'attacco di Wiener

    4.4 Come contrastare l'attacco di Wiener

    Come si anticipato, Wiener stesso sugger due metodi per non incorrere nel suo

    attacco ([Wie06]).

    4.4.1 Scelta di e grande

    In questo primo caso, bisogna assicurarsi che e > n3/2; in tal caso, nella dimo-

    strazione del Teorema di Wiener (13) non si pu pi essere sicuri che k sia piccolo e

    quindi non si riesce a concludere l'attacco. Si consideri l'equazione ed = k(n) + 1

    e si divida tutto per dn; si ottiene

    e

    n=

    k(n) + 1

    dn=

    k(n p q + 1dn

    =k

    d

    [1 k(p + q 1) 1

    kn

    ] n3/2. Si noti per che un valore cos alto di e fa crescere notevolmente il tempo

    di cifratura.

    4.4.2 Utilizzo del teorema cinese dei resti

    Questo metodo consiste nell'utilizzare il Teorema cinese dei resti (3) per velo-

    cizzare la decifrazione senza scegliere d troppo piccolo. Supponiamo di utilizzare

    nell'algoritmo RSA un esponente privato d tale che

    dp := d (mod (p 1)),

    dq := d (mod (q 1))siano piccoli (si possono intendere ad esempio di 128 bit ciascuno).

    Allora si pu compiere una veloce decodica di un messaggio C calcolando dapprima

    Mp Cdp (mod p),

    Mq Cdq (mod q)

    39

  • Capitolo 4. Attacco di Wiener a RSA

    e usando il teorema cinese dei resti per ottenere l'unico valore M che verichi M Cd (modn). Il vantaggio i questo metodo consiste nel fatto che, anche se dp e dq

    sono piccoli, d pu essere sucientemente grande (ad esempio dell'ordine di (n)).

    L'utilizzo del Teorema cinese dei resti per la codica o la decodica richiede per che

    non ci siano errori di calcolo, altrimenti RSA diventa vulnerabile; inoltre, dp e dq non

    possono essere troppo piccoli, altrimenti sar possibile fattorizzare n.

    4.5 Miglioramenti dell'attacco di Wiener

    Sono stati dati, da Boneh e Durfee nel 2000, dei miglioramenti al limite dettato per

    d daWiener; tali miglioramenti si basano sul teorema dovuto a Coppersmith su piccole

    radici di polinomi a variabile unica. L'attacco di Boneh-Durfee consiste in un metodo

    euristico con polinomi a due variabili; per l'implementazione dell'attacco coinvolta

    la teoria sui reticoli, in particolare richiesto l'uso dell'algoritmo di riduzione delle

    basi dei reticoli. Sulla base di tali teorie matematiche, Boneh e Durfee dimostrarono

    che il sistema RSA insicuro per d < n121/2

    < n0,292 ([BD06]).

    Recentemente Hinek, Low e Teske hanno osservato che la dimostrazione di Boneh

    e Durfee non totalmente corretta (si veda [HLT03]); si suppone di poter ottenere

    d < n1/2, ma ad oggi questo un problema aperto. Al momento il miglior risultato

    noto si deve a Verheul-van Tilborg e a Dujella ([Duj04]); il limite raggiunto d