Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Relatore:
Anno accademico
2012/2013
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 momenti di sconforto e tutti i compagni di studi che, in vari modi, mi hanno saputo aiutare.
Indice
Acknowledgment Introduzione 1 Introduzione alla crittograa e preliminari
1.1 1.2 1.3 1.4 Cifrari a chiave pubblica e a chiave privata . . . . . . . . . . . . . . . Numeri primi e funzione di Eulero . . . . . . . . . . . . . . . . . . . . Teorema cinese dei resti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1
1 3 6 9
11
11 15 17 19 19 20 22 22 23 23 24 24
Attacchi elementari dovuti a errata scelta del modulo . . . . . . . . . Attacchi con esponente pubblico piccolo 2.5.1 2.5.2 2.5.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6
Esposizione parziale della chiave con esponenti piccoli . . . . . Esposizione parziale della chiave con esponenti medi . . . . . . . . . . . . . . . . . . . . . . .
2.7
25 29
29 35 37 39 39
Esempio numerico di attacco di Wiener . . . . . . . . . . . . . . . . . Come contrastare l'attacco di Wiener . . . . . . . . . . . . . . . . . . 4.4.1 Scelta di
grande . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.2 4.5
39 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 il modulo
(n, e)
destinatario). Per decifrare, il destinatario sfrutta invece la cosiddetta chiave privata composta dalla coppia di interi
q,
e i valori
(ovvero calcolare i
q );
privato
d.
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
chiave privata. Esso conterr inoltre alcuni importanti teoremi e dezioni preliminari; servir anzitutto denire la relazione di congruenza e la funzione di Eulero Verr poi enunciato il teorema cinese dei resti e si tratter
(n).
brevemente il problema
Nel
Capitolo 2
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
and Technology.
Verr
Per poter descrivere in particolare l'attacco di Wiener, servir la teoria delle frazioni continue, sulla quale si concentra tutto il
Capitolo 3.
m-esima
dello sviluppo in frazione continua e alcuni teoremi e proposizioni fondamentali per la comprensione dei contenuti seguenti.
Inne, il
Capitolo 4
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
(n),
dove
cinese dei resti. Si tratta poi brevemente il problema della fattorizzazione in numeri primi.
1.1
La crittograa la scienza che si occupa di proteggere le informazioni che vengono 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'elaborazione 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 transazioni 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 crittograa a chiave pubblica (o asimmetrica) che andremo qui di seguito a descrivere.
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 crittograci 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.
molto importante se si considerano tutte le operazioni che compiamo ogni giorno (ad esempio la PEC
) 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
ottenuto moltiplicando tra loro due numeri primi molto grandi, che restano segreti.
1.2
Denizione 1.
soltanto per
Ci sono vari modi per testare la primalit di un intero a dividerlo per tutti i primi no a
Il pi semplice provare
n);
non
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
se
2 (Congruenza)
Sia
n Z;
allora
Si pu facilmente dimostrare che la congruenza modulo relazione di equivalenza; in particolare, essa d luogo a
(con
una
classi di equivalenza
[0] , [1] , [n 1]
che corrispondono a tutti i possibili resti della divisione per Si denota con
n.
Zn
1 Sta
Zn
un campo se e solo se
primo.
Denizione
3 (Funzione di Eulero)
Sia
(n)
il
n. Equivalentemente, (n) l'ordine del gruppo degli elementi invertibili dell'anello Zn (ogni classe resto ha un unico rappresentante non negativo minore di n).
numero degli interi non negativi minori di che sono coprimi con
Proposizione 1.
La funzione
moltiplicativa, cio
(m n) = (m) (n)
se
(m, n) = 1.
Per il Teorema (3) cinese dei resti, che verr enunciato in seguito, si
Dimostrazione.
ha l'isomorsmo seguente
(1.1)
(mn) di elementi invertibili del primo (m)(n) per una generale propriet del
Osservazione 1.
minori di
Se
primo,
(n) = p 1,
p.
cio
Se
potenza di un primo
p,
n = p ,
per un opportuno
vale
(n) = p p1 = p1 (p 1).
Questo perch il numero di interi positivi coprimi con tra il numero degli interi positivi minori di di
minori o uguali a
n = p q dove p e q sono due numeri primi grandi e distinti (anch ci sia una certa sicurezza p e q dovrebbero avere circa
Il caso che interessa a noi, relativo all'RSA 100 cifre decimali). Dalle propriet della funzione di Eulero abbiamo che
Teorema
1 (di Eulero-Fermat)
Siano
a, n
(a, n) = 1;
allora
a(n) 1 (mod n). (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.
Se
Dimostrazione. Teorema
Sia
vale
ap a (mod p).
Dimostrazione.
nella forma
Se
p | a,
p a
teorema di Eulero-Fermat.
a (a
p1
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
to alla base
4 (numero pseudoprimo)
Un numero intero
se
primo, allora
b,
per il
piccolo teorema di Fermat. I numeri pseudoprimi sono quindi numeri che pretenderebbero di essere primi passando solo per il test
bn1 1 (mod n)
per un certo
per determinare la sua primalit. Tali numeri per fortuna si determinano facilmente; possibile fare ci per la seguente Proposizione.
Proposizione 2.
Sia
(n)
basi
con
0 < b < n
(b, n) = 1).
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, n1 segue che (ab) = 1, quindi ab B e (a1 )n1 = (an1 )1 = 1, quindi a1 B .
Sia 5
Dimostrazione.
B.
Segue che
|B | =
dove
|(Zn ) : B |
indica la dimensione di
Z n,
Z n
di
sottogruppo di
Z n ). 1.
Allora
Denizione 5.
si dice
numero di Carmichael se
bn1 1 (mod n)
per ogni base
tale che
(b, n) = 1.
Un numero di Carmichael quindi un numero non primo ma pseudoprimo rispetto a qualunque base. Anche i numeri di Carmichael si possono scoprire facilmente, usando un semplice algoritmo basato sul fatto che, se un intero unici interi
tali che
b 1 (mod n)
sono
1.
Esistono anche algoritmi pi ranati (in cui non ci addentriamo) per testare la primalit di un intero, che non presentano casi eccezionali come i numeri di Carmichael.
1.3
Teorema
Siano
n1 , n2 , . . . , nm
a1 , a2 , . . . , am
esiste un intero
(1.2)
due interi
ni ,
per ogni
i = 1 . . . m,
Dimostrazione.
1. Sia
N N = n1 n2 . . .nm e sia, per ogni i = 1, . . . , m, Ni = n = j =i nj . Allora, i per ogni indice i, non avendo ni alcun fattore primo con nj , (per ogni j = 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 Ni x bi (mod ni ) ammette una soluzione ci . m Sia ora c = i=1 Ni ci e sia ssato un indice i. Si osservi che, per ogni j = i, ni divide Nj e quindi anche Ni ci . Pertanto
c = Ni ci +
j =i
Nj cj Ni ci bi (mod ni ). Ni x bi (mod ni ). N ni , per ogni i = 1, . . . , m, si ha che i = 1, . . . , m, ossia xk soluzione del sistema x x0 (mod ni )
per ogni
indice i, quindi
ni | (x x0 ). Poich gli ni sono a due a due coprimi, il loro prodotto (cio N ) divide x x0 ; questo per il teorema fondamentale dell'aritmetica (4). Quindi esiste k Z tale che x x0 = kN , cio x = xk .
2. Siano
b, c
bc
soddisfa
per ogni
i;
ci signica che
ni
sono a due a due coprimi, tale massimo comune divisore coincide proprio con il
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)
che la soluzione
Dimostrazione.
0 x (n 1).
Naturalmente
x 0
t := (((a, b)(q
calcolato modulo
p1
perch
p. Poich t (p 1), tq (p 1)q e x = tq + b (p 1)q + (q 1) = pq 1 = n 1 si 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)(q 1 (mod p))) (mod p)) q + b (mod q ) = (K q + b) (mod q ) per qualche K = b (mod q ) = b; x (mod p) = (((a, b)(q 1 (mod p))) (mod p)) q + b (mod p) = ((a b)q 1 q + b) (mod p) = ((a b)(q 1 q ) + b) (mod p) = ((a b) + b) (mod p) = a (mod p) = a.
(1.4) (1.3)
Osservazione 2.
(1.2) pu essere solo una, quindi la formula di Garmer risolve completamente il problema della risoluzione di tale sistema.
1.4
La sicurezza dell'algoritmo RSA si basa sulla dicolt di fattorizzare numeri interi molto grandi.
Denizione 6.
partenza.
in un insieme di divisori non banali che, moltiplicati fra loro, diano il numero di
Il teorema Fondamentale dell'Aritmetica assicura che la scomposizione in fattori primi unica, a meno di cambi d'ordine tra i fattori.
Teorema
a > 1
a =
i=1
dove
2 n 1 pi = p 1 p2 . . . pn
pi
fattori, tale scomposizione unica. Naturalmente, calcolare il prodotto di due o pi numeri interi primi
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,
q.
storia sono stati ideati molti metodi per rendere la fattorizzazione un problema sempre pi veloce ed agevole; esso per rimane tuttora un problema complesso.
2.1
Algoritmo RSA
Nel 1978 Ronal Rivest, Adi Shamir e Leonard Adelman pubblicarono sulla rivista
Communication of ACM
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 molto grandi (per avere una certa sicurezza, circa 425 cifre binarie) e calcola
peq
n = p q;
(n) = (p 1) (q 1).
Sceglie poi un intero
tale che
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
xi < n i.
X = (x1 , x2 , . . .)
Y = (y1 , y2 , . . .)
y i = xe i (mod n);
invia quindi
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.
tali che
de + (n)t = 1
e procede nel modo seguente, presumendo per semplicit che gli
xi
n:
xi = x1 i = xi
dato che Se
de + (n)t
= xde i xi
(n)t
d yi (mod n)
y i = xe i (mod n)
xi
(n)t
1 (mod n)
xi
n,
n = pq n.
Per ottenere il messaggio in chiaro, ad Alice basta dunque calcolare la potenza esima di
d-
yi
ALGORITMO
Esempio 1.
grandi Alice sceglie due primi e ne calcola il prodotto
ESEMPIO NUMERICO
p = 31, q = 41 = n = 1271
n=pq
12
ALGORITMO
Alice calcola
ESEMPIO NUMERICO
(n) = 30 40 = 1200
(n),
cio trova il
e primi
e < (n)
tale
e = 13
(e, (n)) = 1
la chiave pubblica
(n, e)
costruita
(1200, 13)
xi
minori di
xi
si otterranno ad
xi = a + b 26,
13
ALGORITMO
Bob cifra il messaggio calcolando
ESEMPIO NUMERICO
Il messaggio cifrato risulta quindi:
yi =
xe i
(mod n)
y1 y2 y3 y4
21013 (mod 1271) 44713 (mod 1271) 44213 (mod 1271) 37213 (mod 1271)
Alice calcola
con l'algoritmo di
si ha quindi
d = 277
t = 3
d e + (n) t = 1
xi =
d yi
(mod n)
x1 x2 x3 x4
818277 (mod 1271) 879277 (mod 1271) 729277 (mod 1271) 899277 (mod 1271)
Alice applica la funzione inversa a quella che ha applicato Bob per cifrare e ottiene il messaggio in chiaro
14
Come stato anticipato nella Sezione (1.1), la crittograa a chiave pubblica permette di rmare un messaggio; nel caso dell'algoritmo RSA, tale procedimento funziona nel modo seguente.
Sia
0 M < n
Si possono dare varie denizioni di rma associata a un messaggio; la seguente ne un semplice esempio.
Denizione
modulo
7 (Firma di un messaggio)
Sia
n;
la seguente:
Per Alice facile calcolare la rma del messaggio fare 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 a rompere il crittosistema RSA.
ver(n,e) (M, F ) =
Sia denito un sistema RSA con questi parametri,
VERO, se
M = F e (mod n)
FALSO, altrimenti.
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
1 Si
ALGORITMO
Esempio 2.
numero Alice vuole rmare un
ESEMPIO NUMERICO
M = 1570
M,
n,
M: F = sig(n,d) (M ) = M (mod n)
associata al messaggio
Bob riceve
(M, F ),
cio il messaggio
Bob riceve
(1570, 668)
M calcolando ver(n,e) (M, F ), cio F e (mod n); se tale risultato pari a M la rma
garantita, altrimenti non lo
16
Nonostante la sua ecienza, il sistema RSA ha un costo computazionale piuttosto elevato perch, per garantire la sua integrit, si devono scegliere parametri opportunamente grandi; ecco perch forte la tentazione di ridurre i tempi di codica/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-
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
peq
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
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 ricevuti 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.
8. Il destinatario di una chiave pubblica dev'essere certo dell'identit del proprietario 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 impossibile risalire dal messaggio cifrato al messaggio in chiaro. Questo processo di
coppia di chiavi nel sistema RSA consiste in una chiave pubblica (n, e) e in una chiave privata (p, q, d), dove n = p q , e primo con (n) e d tale che e d + (n) d 1 (mod n).
17
2 Una
e del
n.
Il NIST propone quindi il rispetto di alcune norme per evitare la rottura dell'algoritmo RSA, che sono le seguenti:
e l'espo-
65.537 e 2256 ;
i primi
(n),
esso;
dove
n = p q,
dev'essere maggiore di
3.
2(2(nbit/2)1 ) p, q (2nbit/2 1) n
(solitamente
dove
nbit
1024
che
corrisponde a 4.
309
cifre decimali);
p q > 2(nbit/2)100 ; d, che dev'essere scelto dopo aver determinato e e dopo aver peq
ed 1 (mod (n)),
quindi
d e1 (mod (n)).
tende a basare la sicurezza di RSA sulla dicolt della fattorizzazione di n, essendo una questione molto pi discussa rispetto a quella del calcolo delle radici modulo n.
18
3 Si
d 2nbit/2 ,
si devono rideterminare
p, q
ed
e (e
q ).
I principali attacchi ad RSA si basano sul mancato rispetto di almeno una di queste norme.
2.4
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 sicurezza 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 sfrutta la fattorizzazione di e
(n, e)
quello che
q,
n. Conoscere la fattorizzazione di n signica conoscere p (n), da cui si ottiene l'esponente privato di decifrazione
d
di
essendo
d e1 (mod n).
Il modo pi intuitivo per decifrare il messaggio consiste nel calcolare, per ogni valore
Zn ,
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 fattorizzazione di
se
(p q ) < n1/2
sar
4n = x2 y 2 .
Fatto ci,
si ricaveranno ponendo
1 p = 2 (x + y )
q = 1 (x y ); 2 loro danno n.
eettivamente
2.5
Per ridurre il tempo di cifratura o di verica della rma digitale, si pu essere tentati di utilizzare un esponente pubblico lo valore di
piccolo.
e possibile 3, ma in generale si raccomanda di assumere al minimo e = 2 + 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
16
19
22x + 1
Teorema
grado s; possibile
n un intero e f Z[x] un polinomio monico di 1 si consideri ssato X = n s per qualche 0. Allora, dati (n, f ), trovare tutti gli interi x0 tali che
5 (di Coppersmith) Sia
|x0 | < X
Il teorema fornisce a Eva un eciente algoritmo per ricavare tutte le radici di modulo
minori di un ssato
X = n
1 s.
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
piccolo, il seguente .
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 (x, y ) := f (xX, yY ) e poniamo D come valore assoluto del massimo coeciente di f . Se XY < D 32 , allora si possono determinare in tempo polinomiale tutte le coppie f di interi (x0 , y0 ) con
Sia
Teorema 6.
|y0 | < Y.
Il seguente corollario mostra come si pu applicare il teorema di Coppersmith per attaccare RSA.
Corollario 1.
Sia
n = pq
p0 := p (mod r).
in un tempo polinomiale
r 24, di n.
20
Si supponga che Bob voglia inviare un messaggio quali possiede una propria chiave pubblica cifra quindi il messaggio
(ni , ei )
(sia
M < ni
per ogni
i).
Egli
usando ognuna delle chiavi pubbliche associate ai vari Eva intercetta tutti questi messaggi, che sa
destinatari e invia loro il messaggio. essere in qualche relazione tra loro. Assumiamo
ei = 3
se
(ni , nj ) = 1
per ogni
i = j,
altrimenti gli
ni
sarebbero facilmente
C M 3 (mod n1 n2 n3 ).
Si noti che, essendo pu ottenere
gio in chiaro se il numero di destinatari maggiore o uguale ad l'attacco di Hstad applicabile per valori di
e.
Naturalmente,
opportunamente piccoli.
Hstad descrive anche un attacco molto pi potente, basato sull'ipotesi che i messaggi siano legati tra loro da una relazione polinomiale (come ad esempio
Mi =
i2 + 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 intere cetta i Ci (fi (M )) i (mod ni ) per ogni i. Si dimostra che Eva potr ottenere M se
il numero di destinatari del messaggio almeno uguale al massimo prodotto dell'esponente 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 destinatari, 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
ni )
(n, e)
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 = M2 messaggi da cifrare tali che M1 = f (M2 ) (mod n), con f Zn [x] funzione polinomiale lineare f = ax + b (b = 0) 4 ; siano C1 , C2 i messaggi 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 attacchi ad RSA, sempre nelle ipotesi di modulo costante e esponente pubblico piccolo. Per evitare questi tipi di attacchi, l'unica soluzione scegliere esponente pubblico abbastanza grande, modicare
grado .
4 Questo
22
Teorema 7.
(n, e) la chiave pubblica del sistema RSA, dove n lungo nbit; sia inoltre m = M Z n un messaggio lungo al massimo n m bit. Sia dato m m l'algoritmo di cifratura seguente: M1 = 2 M + r1 , M2 = 2 M + r2 , con r1 = r2 m e 0 r1 , r2 < 2 . 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 .
Sia
n . Sia e2
2.6
Gli attacchi a esposizione parziale ([Bon99]) si basano sulla possibilit di risalire all'esponente di decifratura
Questo sistema
impiegato ad esempio negli attacchi di temporizzazione, che rompono sistemi RSA studiando il tempo di esecuzione delle operazioni crittograche.
Sia
n =pq
seguente:
4 <
siano
e, d
ed 1 (mod (n))
con
1 < e, d (n).
Siano inne
ed k(n) = ed k ((n p q ) + 1) = 1.
Scelto un qualsiasi esponente pubblico, conoscendo una parte di all'intero esponente privato.
si riesce a risalire
Teorema 8.
n = p q un modulo di nbit tale che n 3 (mod 4) 5 e siano n 1 < e, d (n) tali che ed 1 (mod (n)) ed e < 2 4 3 . Allora esiste un algoritmo che restituisce, in un tempo polinomiale, l'intera chiave privata d conoscendo (n, e) e
Sia
5 Si
noti che con questa condizione n non si pu scrivere come somma di due quadrati.
23
24
22,
nente pubblico una frazione delle cifre signicative; anche in questo caso, il metodo per risolvere questi attacchi consiste nel trovare
che verichi
ed k(n) = ed k ((n p q ) + 1) = 1.
Il modo pi semplice per ricavare un tale
(2.1)
n = p q modulo del sistema RSA composto di nbit e siano p e q primi n < q < p < 2 n; siano inoltre e e d esponenti pubblico e distinti tali che 4 < 2 privato tali che ed 1 (mod (n)) con 1 < e, d (n) e t 0, . . . , n un intero 2 t t+1 positivo. Si supponga 2 <, e < 2 e siano note le t cifre pi signicative di d. Allora si pu calcolare k che soddisfa l'equazione (2.1). Inoltre, una volta noto k si pu ricostruire d e quindi fattorizzare n.
Sia
Teorema 9.
Osservazione 3.
n e = 24,
primo ed
n sono necessari solo i primi bit di d per calcolare l'intero 4 n invece sono necessari gli bit di d pi signicativi. 2
d;
2.7
Per ridurre il tempo di decifrazione dei messaggi e di generazione della rma digitale, si pu essere tentati di abbassare considerevolmente l'esponente privato Nel 1989 Wiener mostr per che, preso
d.
,
d < n
0,25
il crittosistema pu essere rotto (si veda [Wie06]). Egli utilizz un algoritmo basato sulla teoria delle frazioni continue che, in tempo polinomiale, permette di determinare numeratore e denominatore di una frazione quando nota una stima abbastanza buona di essa; relativamente al sistema RSA, vengono utilizzati l'esponente pubblico
e e il modulo n per l'approssimazione di una frazione contenente l'esponente privato d. L'algoritmo che serve poi a fattorizzare il modulo n funziona se e < n, il massimo comune divisore tra p 1 e q 1 piccolo e p e q hanno circa lo stesso numero di bit.
Ci occuperemo nel dettaglio di questo attacco nella Sezione 4.
24
Frazioni continue
Questo capitolo tratta la teoria delle frazioni continue, strumento matematico fondamentale per l'implementazione dell'attacco di Wiener.
Denizione
della forma
8 (Frazione continua)
x = a0 +
dove
1 a1 +
1 a2 + a
1 3 +...
a0
an ,
con
n = 1, 2, . . .,
a0 , a1 , . . . , an , . . .
Le frazioni continue consentono di rappresentare numeri reali in forma frazionaria mediante approssimazioni successive. Il modo pi semplice per fare ci usare l'espansione decimale; tuttavia esso presenta alcuni problemi, come ad esempio il fatto che molti numeri semplici non hanno una rappresentazione nita con questo sistema.
a0 = a0 , a0 ; a1 = a0 +
e per induzione
1 1 , a0 ; a1 ; a2 = a0 + a1 a1 +
1 a2
a0 ; a1 ; . . . ; an1 ; an =
a0 ; a1 ; . . . ; an1 +
1 an
= a0 +
1 . a1 ; . . . ; an1 ; an
Denizione 9. Denizione
10
I numeri
a0 , a1 , a2 , . . . , an
Sia
a0 ; a1 ; . . . ; an1 ; an
una frazione
continua nita.
25
= a0 +
1 a1 +
1 a2 +
a3 + 1 1 1 ... + a n
Teorema
un numero razionale non negativo e sia a0 = Int(), cio la parte intera di . Allora sono determinati univocamente n N e una sequenza ordinata di ai N, con i = 1, 2, . . . , n e an 2, tali che sia il valore della frazione continua di termini ai , i = 0, 1, 2, . . . , n, cio
10 Sia
= a0 ; a1 ; . . . ; an1 ; an .
Viceversa, ogni sequenza di
ai N ,
con
i = 1, 2, . . . , n
an 2,
associata ad uno
La seguente ci mostra un modo compatto per esprimere una frazione continua (si veda [Old63]).
Proposizione
pn , qn ,
cio
a0 ; a1 ; . . . ; an1 ; an =
i polinomi
pn ; qn
pn , qn
Dimostrazione.
a0 ; a1 ; . . . ; an ; an+1 = an + = an + =
1 Questa
1 an+1
1 an+1 1 an+1
pn + qn +
notazione non crea ambiguit: ogni frazione continua nita rappresenta un numero razionale, che appunto il suo valore.
26
a0 ; a1 ; . . . ; an ; an+1 =
pn+1 . qn+1
pn si pu rappresentare con qn
a0 0 1 p0 1 0 q0
a1 p1 q1
aj 2 pj 2 q j 2
aj 1 pj 1 qj 1
aj pj qj
pj , q j
si ottiene in funzione di
precedenti (le prime due colonne vengono aggiunte per ottenere allo stesso modo anche
p0 , p1 , q0 , q1 ).
Siano
Proposizione 5.
pj , qj
Dimostrazione.
pj pj +1 pj aj +1 pj + pj 1 pj pj 1 = = qj aj +1 qj + qj 1 qj qj 1 qj qj +1
pj pj +2 pj aj +2 pj +1 + pj pj pj +1 = = aj +2 . qj qj +2 qj aj +2 qj +1 + qj qj qj +1
Osservazione 4. Denizione
zionale ha lunghezza innita. 11 (Ridotta n-esima di una frazione continua) pn frazione continua di un numero irrazionale, che si scrive qn
la convergente
n-esima
27
Esempio 3.
1 , 1, 1 , 1, 1, 4 , 1, 1, 4, 1 , 1, 1, 4, 1, 22 , . . . .
Teorema
11
= a0 ; a1 ; . . . ; an1 ; an ; . . . ; per ogni scelta dell'intero a0 e degli interi positivi a1 , a2 , . . . , an , . . ., la pn converge e ha per limite un numero reale non numeri razionali qn
per ogni h, dove pn1 , qn1 sono numeratore e denominatore della convergente n 1-esima nello sviluppo in frazione continua di .
Il seguente teorema ci dice che, in un certo senso, l'approssimazione con frazioni continue la migliore possibile per un numero reale (si veda [Dav94]).
Teorema
,
con
12
Le convergenti
n 1,
disuguaglianza
per ogni numero razionale
pn h < k qn
allora
h con k
k > 0,
h k
k > qn .
Dimostrazione.
con
h pn < k qn k
e
h, k
coprimi e
tenendo conto
altri termini, la migliore approssimazione razionale di un numero razionale che ha la caratteristica di essere pi vicino a di qualsiasi altra approssimazione frazionaria con denominatore pi piccolo.
28
2 In
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.
d < n1/4
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 sucientemente grande, in particolare
e > n
3/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
un numero razionale e
q0 , q1 , . . . , qm
Allora essa si ottiene sottraendo la parte intera di e sottraendo ancora la parte intera, nch il
q0 = f , r0 = f q0 qi =
per
1 ri1
, ri =
1 ri1
qi
(4.1)
i = 1, 2, . . . , m.
29
Osservazione 5.
Per ogni
Per ogni
vale
qm 2;
infatti, se
qm = 1
allora
rm1 = 1,
fatto impossibile.
x > 0
si ha se se
m m
pari dispari
(4.2)
delle frazioni continue sono alternativamente pi grandi di f e pi piccole di f . 1 (1)j Infatti, q0 , q1 , . . . , qm1 , qm = q0 + m j =0 dj dj +1 dove i di sono i denominatori n delle convergenti ai vari passi dell'algoritmo ( q0 , q1 , . . . , qi = i , con (ni , di ) = di
1).
Se
un numero reale e
nm la convergente dm
i = 1, 2, . . . , m. ora f un'approssimazione
di
f = f (1 )
per qualche
0;
siano inoltre
qi , ri
qi , ri
e di
Se
f.
1. Si generano i quozienti
qi
dell'espansione di
q0 , q1 , . . . , qi1 , qi + 1 q0 , q1 , . . . , qi1 , qi
se
se
pari
dispari.
f.
Osservazione 6.
1,
che la supposizione di
, poich
f f
; infatti, per la
30
f.
se se
m m
pari dispari.
(4.3)
1
(si veda [Wie06]).
f f
Proposizione 6.
necessario che
<
dove
1
3 n d 2 m m
nm
dm
m-esima
nello
f.
Dimostrazione.
CASO 1: CASO 2: CASO 3: CASO 4:
m = 0; m = 1; m m
pari e
m 2; m 3.
dispari e
CASO 1: m = 0
Usando (4.3), per sostituire
in
f si ha: f
< 1 q0 1 / q0 .
Ci signica che
<
1 , cio, siccome q0
n0 = q 0 1 n0 d0
d0 = 1,
<
CASO 2: m = 1
31
in
f si ha: f
< 1 q0 , q1 + 1 / q0 , q1 .
Ci signica che
<
Si visto che
1 . (q0 q1 + 1)(q1 + 1)
3 q 2 1
qm 2,
q1 + 1 .
Combinando
<
1
3 nd 2 1 1
CASO 3: m pari e m 2
f
in
f si ha: f
(4.4)
< 1 q0 , q1 , . . . , qm1 , qm 1 / q0 , q1 , . . . , qm .
Per la proposizione (4) otteniamo le equazioni:
q0 , q1 , . . . , qm1 , qm 1 = q0 , q1 , . . . , qm =
che, sostituite in 4.4, danno
(qm 1)nm1 + nm2 (qm 1)dm1 + dm2 qm nm1 + nm2 qm dm1 + dm2
<
nm1 dm2 nm2 dm1 . (qm nm1 + nm2 )(qm dm1 + dm2 )
<
Quindi
nm (dm
1 . dm1 )
<
1 nm dm
CASO 4: m dispari e m 3
32
<
Poich
nm (dm
1 . + dm1 )
3 dm + dm1 2 dm ;
quindi
dm = qm dm1 + dm2
qm 2, <
si ha che
. 3 n d 2 m m
Questa la soglia che mi garantisce il successo dell'algoritmo delle frazioni continue. Considerando complessivamente i quattro casi, la soglia che otteniamo per
<
. 3 n d m m 2
x = max(nm , dm ); si pu mostrare che il numero di quozienti dell'espansione in frazione continua di f O (log x) (vedi [HW79]). Supponendo che i test sulle supposizioni di f diano esiti positivi in tempo polinomiale su log x, l'esecuzione dell'algoritmo delle frazioni continue richiede un tempo polinomiale in log x.
Consideriamo il tempo di esecuzione dell'algoritmo. Sia
Teorema
n = p q modulo di un crittosistema RSA, dove p e q sono numeri primi tali che q < p < 2q . Siano 1 d, e < (n) tali che 1 1 ed 1 (mod (n)). Se d < 3 n 4 , allora possibile calcolarlo, cio possibile rompere
13 (Wiener) Siano il sistema RSA.
Dimostrazione.
Si ricordi che
(n) = (p q ) = (p) (q ) = (p 1)(q 1). d | (n), risulta ed 1 (mod d); in particolare, si ha ed 1 (mod lcm((p 1)(q 1))).
(4.5)
tale che
(4.6)
e si ricorda che
(p 1)(q 1) G
abbiamo che
K (p 1)(q 1) + 1. G
G k . Quindi, (K,G) g
(4.7)
k :=
K e (K,G)
g :=
K e G
(k, g ) = 1
e riscrivendo
ed =
Dividendo per
k (p 1)(q 1) + 1. g
(4.8)
dpq
si ottiene
p+q 1 e k = (1 ) dove = pq dg pq
Si noti che di
g k
(4.9)
k . dg
Si osservi che mediante l'algoritmo delle frazioni continue otteniamo sempre frazioni ridotte ai minimi termini; dalla (4.6) abbiamo che
1.
Ricordando che
pu essere
Usando l'equazione (4.9) e la limitazione per delta trovata alla Proposizione 6, si ottiene che
kdg <
3 (p 2
pq + q)
(4.10)
suciente per calcolare k e dg (nell'equazione (4.10) abbiamo usato il fatto che g (1 k ) un valore irrilevante confrontato con (p + q ); ci non compromette il nostro risultato, perch il valore di
Serve ora un metodo che permetta di testare l'accuratezza della supposizione. Per semplicare i calcoli, si assuma
ed > pq ;
riscrivendo la (4.8) si ha
edg = k (p 1)(q 1) + g ;
quindi, si pu vedere che dividendo resto
(4.11)
edg
per
si ottiene quoziente
(p 1)(q 1)
g,
supponendo che
k > g.
(p 1)(q 1) e g . Se la supposizione di (p 1)(q 1) 0, si hanno valori sbagliati per k e dg ; questo caso va escluso. La supposizione di (p 1)(q 1) serve a trovare una supposizione per
Ragionando in questo modo, si giunge a una supposizione di
pq (p 1)(q 1) + 1 (p + q ) = . 2 2
(4.12)
34
p+q 2
Se la supposizione di
pq =
pq 2
(4.13)
q 2 ) (p 2
dg
sono corrette e in questo caso possibile ricavare era il resto della divisione di edg per p+q pq partendo dalla conoscenza di e . 2 2 che Se
k ).
Ora
d p
dividendo e
dg
per
(si ricordi
piccolo e
cifre no a
aventi numero di
Osservazione 7.
e al pi una costante moltiplicata per log n, e poich l'algoritmo della frazione n e , il procedimento che Eva deve compiere continua si ferma quando si ottiene n
per fattorizzare
termina rapidamente!
Generalmente,
dev'essere
4.2
q < p < 2q
d <
1 1 n 4 , si 3
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:
1. Sia
i = 0, 1, 2, . . . , m.
2. Si calcoli
e pq
se
i = 0
(4.14)
qi =
1 ri1
altrimenti.
35
ri =
e pq q0 ,
1 ri1
se
i = 0
(4.15)
qi ,
altrimenti.
4. Si calcoli
ni di
= q0 , q1 , . . . , qi
q0 , se i = 0 ni = q0 q1 + 1, se i = 1 q n + n , altrimenti.
i i1 i 2
(4.16)
1, se i = 0 qi = q1 , se i = 1 q d i i1 + di2 ,
5. Si trova una supposizione di
(4.17)
altrimenti.
k : dg
se
q0 , q1 , . . . , qi + 1 , q ,q ,...,q , i 0 1
6. Si trova una supposizione di 7. Si trova una supposizione di 8. Se se
pari (4.18)
dispari.
edg = e dg . (p 1)(q 1) = i
edg . k
(p 1)(q 1) = 0,
si incrementa
g = edg (mod k ).
p+q 2
pq (p 1)(q 1) + 1 . 2
p+q 2
= 0,
si incrementa
q 2 q 2 (p ) = (p+ ) pq . 2 2
14. Si calcola
d =
dg . g
36
p =
pq p+q + 2 2 p+q pq q = 2 2
(4.19)
4.3
n = p q = 8927 e e = 2621.
L'espansione in frazione continua sar eseguita su
e n
2621 . 8927
QUANTITA'
i=0
i=1
i=2
qi
ri
2621 8927
1064 2621
493 1064
ni di
= q0 , q1 , . . . , qi
0 1
1 3
2 7
supposizione per
k dG
1 1
1 3
3 10
37
QUANTITA'
i=0
i=1
i=2
supposizione per
edG
2621
7863
26210
supposizione per
(n)
2621
7863
8736
supposizione per
supposizione per
p+q 2
3153.5
532.5
96
supposizione per
pq 2
289 = 172
d
Tabella 4.1: Esempio numerico di attacco di Wiener
38
Come si anticipato, Wiener stesso sugger due metodi per non incorrere nel suo attacco ([Wie06]).
e > n3/2 ;
strazione del Teorema di Wiener (13) non si pu pi essere sicuri che quindi non si riesce a concludere l'attacco. Si consideri l'equazione e si divida tutto per
dn;
si ottiene
e k(n) + 1 k (n p q + 1 k k (p + q 1) 1 = = = 1 n dn dn d kn
<
k ; d
(4.20) pm e k pertanto, la convergente = d della frazione continua di n deve avere indice m qm e k dall'alto e ci vero solo per le convergenti con indice dispari). dispari ( approssima d n Si osserva pertanto che
e k < . n d Per ottenere e cos grande, si pu scegliere e < (n), come richiesto dall'algoritmo RSA, e porre come chiave pubblica e = e + t(n), con t scelto in modo tale che e > n3/2 . Si noti per che un valore cos alto di e fa crescere notevolmente il tempo n1/2 <
di cifratura.
troppo piccolo.
Supponiamo di utilizzare
tale che
calcolando dapprima
C (mod n).
sono piccoli,
Il vantaggio
pu essere
M i questo metodo consiste nel fatto che, anche se dp e dq sucientemente grande (ad esempio dell'ordine di (n)). M
che verichi
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, possono essere troppo piccoli, altrimenti sar possibile fattorizzare
dp
dq
non
n.
4.5
Sono stati dati, da Boneh e Durfee nel 2000, dei miglioramenti al limite dettato per
d < n12
< 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 , Dn
1/4
d <
un opportuno parametro.
dell'esponente, ma
40
Bibliograa
[BCRS09] E. Barker, L. Chen, A. Regenscheid, and M. Smid,
Special publication 800-56b: Recommendation for pair-wise key establishment schemes using integer factorization cryptography. Cryptanalysis of rsa with private key d less than
0.292
[BD06]
n
[BDF98]
OF THE AMS
46 (1999), 203213.
NOTICES
Low-exponent
nal conference on Theory and application of cryptographic techniques, EUROCRYPT'96, 1996, pp. 19. [Dav94] H. Davenport,
Continued fractions and rsa with small secret exponent, arXiv Solving simultaneous modular equations of low degree, SIAM J. On some attacks on multi-prime
41
Bibliograa
[Jac89]
N. Jacobson, 1989.
[Old63]
C. D. Olds,
Continued fractions,
[RSA78]
[Sta07]
Collana di istruzione
scientica: Serie di telecomunicazioni, McGraw-Hill Companies, 2007. [Wie06] M. J. Wiener, Inf. Theor.
IEEE Trans.
42