620 likes | 932 Views
I campi finiti. Cap. 4 Crittografia e sicurezza delle reti William Stallings. I campi finiti.
E N D
I campi finiti Cap. 4 Crittografia e sicurezza delle reti William Stallings
I campi finiti The next morning at daybreak, Star flew indoors, seemingly keen for a lesson. I said, "Tap eight." She did a brilliant exhibition, first tapping it in 4, 4, then giving me a hasty glance and doing it in 2, 2, 2, 2, before coming for her nut. It is astonishing that Star learned to count up to 8 with no difficulty, and of her own accord discovered that each number could be given with various different divisions, this leaving no doubt that she was consciously thinking each number. In fact, she did mental arithmetic, although unable, like humans, to name the numbers. But she learned to recognize their spoken names almost immediately and was able to remember the sounds of the names. Star is unique as a wild bird, who of her own free will pursued the science of numbers with keen interest and astonishing intelligence. — Living with Birds, Len Howard
I campi finiti Gli algoritmi che implementano i sistemi crittografici moderni si basano su modelli matematici.
Introduzione ◘ Campi finiti ◘ Concetti di importanza crescente in criptografia (AES, Curva ellittica, IDEA, Chiavi pubbliche) ◘ Concetti di gruppo, anello, campo propri dell’algebra astratta ◘ Riguardano operazioni sui numeri dove però ciò che costituisce un numero e il tipo di operazioni varia considerevolmente
Gruppi • Un insieme non vuoto G di elementi • Sul quale sono definite alcune operazioni I cui risultati fanno parte dell’insieme (chiusura) • vale: • Legge associativa: (a◦b)◦c = a◦(b◦c) • Elemento neutro e: e◦a = a◦e = a • Esistenza inversi a-1: a◦a-1=a-1◦a=e • se vale la proprietà commutativa a◦b = b◦a • Allora forma un gruppoabeliano
Gruppi ciclici • definisce l’exponenziazione come l’applicazione ripetuta di un operatore • esempio: an = a.a.a…a • L’identità come: e=a0 • Un gruppo è ciclico se ogni elemento si ottiene come potenza di un prefissato elemento detto generatore • cioè b =ak, dove a e b sono elementi del gruppo • un gruppo ciclico è sempre abeliano n volte
Anelli • Un anello R, denotato da (R, +, , 0, 1), è una struttura algebrica formata da: • un insieme R di elementi • un’operazione binaria + : R x R R (somma) • un’operazione binaria : R x R R (prodotto)
Anelli Valgono le seguenti proprietà: • (R, +, 0) è un gruppo abeliano • chiusura per : se a, b R, allora anche a b R • associativa per : • a, b, c R, (a b) c = a (b c) • distributive: a, b, c R, • a (b + c) = a b + a c, (a + b) c = a c + b c Un anello è un insieme in cui si possono eseguire la somma , la sottrazione e la moltiplicazione senza uscire dall’insieme stesso
Anelli Esempi • Gli insiemi Z,Q,R,C sono anelli • l’insieme di tutte le matrici quadrate di ordine n, ad elementi reali, è un anello (rispetto alla somma e alla moltiplicazione tra matrici) • L’insieme di tutti gli interi dispari non è un anello R è commutativo (abeliano) se: • a, b R vale a b = b a • L’insieme di tutti gli interi pari è un anello commutativo • l’anello di matrici di cui sopra non è commutativo
Dominio integrale Un dominio integrale è un anello commutativo R che soddisfa i seguenti assiomi: identità moltiplicativa: 1 R tale che a R vale a 1 = 1 a = a assenza di divisori dello zero: se a, b R e a b = 0, allora a = 0 oppure b = 0
Campi Un campo F, denotato da (F, +, , 0, 1), è un dominio integrale che soddisfa il seguente assioma: inverso moltiplicativo: a F, a 0, a-1 F tale che a a-1 = a-1 a = 1 In crittografia si lavora in campi finiti si può definire la sottrazione come: a, b F, a – b = a + (-b) si può definire la divisione come: a, b F, a / b = a b-1 esempi: (, +, , 0, 1), (, +, , 0, 1) e (, +, , 0, 1) sono campi (infiniti). (, +, , 0, 1) è un dominio integrale ma non è un campo
Gruppi, Anelli, Campi (A1) Chiusura per addizione (A2) Associatività addizione (A3)Elemento neutro addizione (A4)Esistenza inversi additivi (A5) Commutatività addizione (M1) Chiusura per moltiplicazione (M2)Associatività moltiplicazione (M3) Proprietà distributive (M4) Commutatività moltiplicazione (M5) Elemento neutro moltiplicativo (M6) Assenza divisori dello 0 (M7)Esistenza inversi moltiplicativi Campo
Sia n un intero positivo ogni intero a, diviso per n, produce un quoziente q e un resto r tali che: a=qn+r 0≤r<|n| r a volte viene chiamato residuo definiamo a mod n come il resto della divisione tra a ed n dati a, b , b 0, si dice che b divide a (b|a) se m tale che a = mb Aritmetica modulare
Modulo 7 Example ... -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...
Congruenze modulo n • due interi a e b sono detti congrui modulo n| a-b. Si scrive a b mod n • esempi: • 73 4 mod 23 21 -9 mod 10 • una proprietà dell’operatore mod: • a b mod n e b c mod n implicano • a c mod n • l’operatore mod n mappa in n = {0,1,2,…,n-1}
Divisori • Un numero non-nullo bdividea se esiste un m tale che a=mb (a,b,m interi) • Ossia se b divide a senza resto • Si indica con la notazione b|a • Valgono le relazioni: • Se a|1 (a divide 1, cioè a divisore di 1) allora a= ±1 • Se a|b e b|a allora a= ±b • Qualsiasi b0 divide 0 • Se b|g e B|h allora b|(mg+nh) per m ed n interi arbitrari
Operazioni dell’aritmetica modulare Per l’insieme n degli interi non negativi minori di n ( detto l’insieme delle classi di resto modulo n) valgono le seguenti proprietà: • [(a mod n) + (b mod n)] mod n = (a + b) mod n • [(a mod n) – (b mod n)] mod n = (a – b) mod n • [(a mod n) (b mod n)] mod n = (a b) mod n • quindi, possiamo definire somme, sottrazioni e prodotti in n • possiamo definire anche l’esponenziazione: • (a mod n)0 = 1 (a mod n)k = akmod n
Operazioni dell’aritmetica modulare Dimostrazione della proprietà 1
Classi di resto mod n Più precisamente, gli elementi di n sono le classi di resto [0]n, [1]n, …, [n-1]n, dove: [r]n = {a | a r mod n} • Per rappresentare una classe di resti si sceglie il più piccolo tra gli interi della classe di resto • La ricerca del più piccolo intero non negativo al quale k è congruente modulo n si dice riduzione di k modulo n.
Aritmetica modulare Esempio: le classi di equivalenza (resto) modulo 4 [0]4 = {…, -16, -12, -8, -4, 0, 4, 8, 12, 16, …} [1]4 = {…, -15, -11, -7, -3, 1, 5, 9, 13, 17, …} [2]4 = {…, -14, -10, -6, -2, 2, 6, 10, 14, 18, …} [3]4 = {…, -13, -9, -5, -1, 3, 7, 11, 15, 19, …}
Aritmetica modulare L’aritmetica modulare in Zn = {0, 1, … , n-1} soddisfa le proprietà: • commutative (w+x)mod n=(x+w)mod n (wx)mod n=(x w) mod n • associative [(w+x)+y]mod n=[w+(x+y)]mod n [(wx) y]mod n=[w (x y)] mod n
Aritmetica modulare • Distributive [w (x+y)]mod n=[(w+(x+y)]mod n [w +(x y)]mod n=[(w +x)(w+y)]mod n • Identità (0+w)mod n=w mod n (1 w)mod n=w mod n • inverso additivo Per ogni w Zn, esiste z tale che w+z0 (mod n) Zn è un anello commutativo
Aritmetica modulare • se (a+b)≡(a+c) mod n allora b≡c mod n • ma (ab)≡(ac) mod n allora b≡c mod n se e solo se a è relativamente prime a n • Due interi sono primi relativi l’unico fattore intero positivo che hanno in comune è 1.
Somma modulo 8 Esempio
prodotto modulo 8 Esempio
Inversi additivi e moltiplicativi 8 Esempio In generale si ha un inverso moltiplicativo in Zn se tale intero è primo relativo di n
Greatest Common Divisor (GCD) [Massimo comune divisore] • Il GCD (a,b) è il più grande numero che divide • sia a che b • p.e. gcd(60,24) = 12 • L’intero c è il massimo comune divisore di a e di b se • c è un divisore di a e di b • Qualsiasi divisore di a e di b è divisore di c • Per la ricerca del massimo comune divisore si • può usare l’algoritmo di Euclide
Algoritmo Euclideo Teorema: Siano a, b, c interi, con b < a Si dimostra che: GCD(a, b) = GCD(a-cb, b) o anche che GCD(a, b) = GCD(b, a-cb) Ma a-cb = a (mod b) per cui GCD(a, b) = GCD(b, a mod b) Esempio: Gcd(55,22)=gcd(22,55 mod22)=gcd(22,11)=11
L’algoritmo di Euclide • Algoritmo di Euclide, nella formulazione di base, utilizzata per calcolare il più grande divisore comune di due interi positivi, r0 e r1, con r0> r1 • L’algoritmo di Euclide consiste nell’esecuzione delle seguenti divisioni • r0=q1r1+ r2 0<r2<r1 • r1=q2r2+ r3 0<r3<r2 • rm-2=qm-1rm-1+ rm 0<rm<rm-1 • rm-1=qmrm • da cui si ricava facilmente che • MCD(r0,r1)=MCD(r1,r2)=…=MCD(rm-1,rm)=rm • Pertanto, MCD(r0,r1)=rm
Algoritmo Euclideo • Tempo di esecuzione O(log3a) • Usa : • GCD(a,b) = GCD(b, a mod b) • pseudocodice: Euclid(a, b) a > b > 0 while b 0 do r = a mod b a = b b = r return a • si può dimostrare che l’algoritmo termina poiché ri+1<riper ogni input, e che l’ultimo resto non nullo è il massimo comune divisore di a e b) Euclide
L’algoritmo di Euclide Infatti… L’asserto è banalmente vero per j=0 e j=1. Per induzione, supponiamo che la relazione sia valida per j=i-1 e j=i-2, con i2, allora ri=ri-2-qi-1ri-1ti-2r1-qi-1ti-1r1 (mod r0) (ti-2-qi-1ti-1 ) r1 (mod r0) tir1 (mod r0) Corollario 1 Sia MCD(r0,r1)=1. Allora tm=r-1 (mod r0)
Esempio GCD(1970,1066) 1970 = 1 x 1066 + 904 gcd(1066, 904) 1066 = 1 x 904 + 162 gcd(904, 162) 904 = 5 x 162 + 94 gcd(162, 94) 162 = 1 x 94 + 68 gcd(94, 68) 94 = 1 x 68 + 26 gcd(68, 26) 68 = 2 x 26 + 16 gcd(26, 16) 26 = 1 x 16 + 10 gcd(16, 10) 16 = 1 x 10 + 6 gcd(10, 6) 10 = 1 x 6 + 4 gcd(6, 4) 6 = 1 x 4 + 2 gcd(4, 2) 4 = 2 x 2 + 0 gcd(2, 0)
Campi finiti I campi finiti hanno tutti ordine pn, dove p è un numero primo e n 1 è un numero intero solitamente si distingue tra GF(p) e GF(pn), con n 2 Un anello nè un campo se e solo se n = pm, con p primo e n 1intero i campi finiti sono tutti e soli gli
Campi finiti di tipo GF(p) Consideriamo p = {0,1,2,…,p-1} Dato a n, esiste a-1n se e solo se MCD(a, n) = 1 esistono gli inversi di ogni elemento 0 solo in un campo a n, MCD(a, n) = 1 se e solo se p primo e k 1 tale che n = pk se moltiplichiamo tutti gli elementi di p per w p, si ottiene una permutazione di p
Campi finiti di tipo GF(p) Un campo finito ( o di Galois) è formato : Dall’insiemep (con p primo), o dall’insieme q(con q=pn, p primo e n intero); da una operazione di “addizione” chiusa, commutativa, associativa, con elemento identità e con inverso; da una operazione di “moltiplicazione” chiusa, commutativa, associativa, distributiva rispetto alla somma, con elemento identità e in cui ogni elemento 0 ha il suo inverso moltiplicativo o reciproco. GF(p) e GF(pn) indicano rispettivamente il campo definito su p e quello definito su q In GF(p) le operazioni sono quelle dell’aritmetica modulare
Campi finiti di tipo GF(p) • Esempio: 2 è il più semplice campo finito: (xor) (and)
Determinazione di inversi Z n insieme con le operazioni aritmetiche modulo n è un anello commutativo Qualsiasi intero in Z nha un inverso moltiplicativo se e solo se quell’intero è coprimo ad n Se n è primo allora tutti gli interi non nulli in Z n sono coprimi ad n e quindi esistono i loro inversi moltiplicativi
Determinazione di inversi Se gcd(m,b)=1 allora b (con b<m) ha un inverso moltiplicativo modulo m indicato con b-1, allora bb-1=1 mod m L’algoritmo di Euclide può essere esteso in modo che oltre a trovare gcd(m,b) quando vale 1, restituisca anche l’inverso moltiplicativo di b.
L’algoritmo di Euclide Poiché l’algoritmo di Euclide calcola il più grande divisore comune, può essere utilizzato per determinare se un intero positivo b <n ha un inverso modulo n, partendo con r0=n e r1=b; tuttavia non serve a calcolare effettivamente l’inverso Teorema 1 Per 0jm, rj tjr1 (mod r0), dove qj,rj sono definiti dall’algoritmo di Euclide e tj sono definiti dalla relazione di ricorrenza t0=0, t1=1, tj=tj-2-qj-1tj-1 (mod r0) se j2
Determinazione di inversi Algoritmo di Euclide esteso (m,b) • (A1, A2, A3)=(1, 0, m); (B1, B2, B3)=(0, 1, b) 2. if B3 = 0 return A3 = gcd(m, b); no inverse 3. if B3 = 1 return B3 = gcd(m, b); B2 = b–1 mod m 4. Q = A3 div B3 5. (T1, T2, T3)=(A1 – Q B1, A2 – Q B2, A3 – Q B3) 6. (A1, A2, A3)=(B1, B2, B3) 7. (B1, B2, B3)=(T1, T2, T3) 8. goto 2
Aritmetica polinomiale Consideriamo polinomi ad una variabile Possibili diverse alternative Aritmetica polinomiale ordinaria Aritmetica polinomiale con aritmetica dei coefficienti mod p [coefficienti in GF(p)] Aritmetica polinomiale con coefficienti in GF(p) e polinomi definiti modulo un polinomio m(x) di grado n
Aritmetica polinomiale ordinaria Include operazioni di somma sottrazione, moltiplicazione Include anche l’operazione di divisione se la varibile x è un elemento di un campo con
Aritmetica polinomiale ordinaria Esempio: sia f(x) = x3 + x2 + 2 e g(x) = x2 – x + 1 f(x) + g(x) = x3 + 2x2 – x + 3 f(x) – g(x) = x3 + x + 1 f(x) x g(x) = x5 + 3x2 – 2x + 2
Aritmetica polinomiale con coefficienti modulo Consideriamo polinomi in cui i coefficienti sono elementi di un campo F Si parla di polinomi su un campo F L’insieme di questi polinomi forma un anello polinomiale Possiamo operare modulo qualsiasi numero primo Il nostro interesse prevalente è in modulo 2 (In GF(2) addizione equivalente ad XOR e moltiplicazione a AND) Siano f(x) = x3 + x2 e g(x) = x2 + x + 1 allora f(x) + g(x) = x3 + x + 1 f(x) x g(x) = x5 + x2
Divisione polinomiale Se facciamo aritmetica polinomiale su polinomi su un campo, allora è possibile la divisione Questo non vuol dire che sia possibile una divisione esatta Si può scrivere una divisione polinomiale nella forma: cioè r(x) può essere interpretato come il resto r(x) = f (x) mod g(x) Se non vi è resto si dice che g(x) è divisore di f(x) Se g(x) non ha altri divisori al di fuori di se stesso ed 1 si dirà che è un polinomio irriducibile o primo L’aritmetica modulo un polinomio irriducibile forma un campo
Aritmetica polinomiale modulare • possiamo definire f(x) mod g(x) = r(x), cioè f(x) r(x) mod g(x) • se r(x) = 0, diciamo che g(x) divide f(x), e scriviamo g(x)| f(x) • i polinomi per noi più interessanti sono quelli a coefficienti in GF(2) • somma e sottrazione coincidono
Aritmetica dei polinomi • molti algoritmi crittografici lavorano su interi compresi tra 0 e 2n-1 (numeri da n bit) • consideriamo gli n bit come i coefficienti in GF(2) di polinomi di grado n-1 • si sceglie un polinomio irriducibilem(x) di grado m, a coefficienti in GF(2) Esempio: in AES, le operazioni sui byte vengono fatte in GF(28), con m(x) = x8 + x4 + x3 + x + 1 • scelte diverse per m(x) producono diverse rappresentazioni di GF(2n), come classe dei residui modulo m(x)