Campo finito GF(p)
Algebra astratta
Campo
Anello
Gruppo ciclico
Gruppo abeliano
Gruppo finito
Insieme
finito
Operazione •×
Ø chiusa
Ø associativa
Ø con el. identità
Ø con el. inverso
Operazione +
Ø chiusa
Ø associativa
Ø con el. identità
Ø con el. inverso
Ø Commutativa
Ø generatore
g∈I, g.g=a, g.g.g=b, g.g.g.g=c .. a≠b ≠c .. ∈I
Ø distributiva
GF(p): elementi, operazioni e proprietà
Campo finito →Campo di Galois: GF(pn) con p primo e n intero
n = 1: GF(p)
a,b ∈ Zp
Zp = {0, 1, …, p-1} & aritmetica modulare
Addizione: (a+b) mod p
Moltiplicazione: (a × b) mod p
O(log p) operazioni su bit
O((log p)2) operazioni su bit
Proprietà notevole dell’Aritmetica modulare
Sia m primo o composto e siano a,b interi qualsiasi , allora
(a+b) mod m = ((a mod m) + (b mod m)) mod m
(a×b) mod m = ((a mod m) × (b mod m)) mod m
GF(11): elementi
p = 11
Z11: {0,1,2,3,4,5,6,7,8,9,10}
Z*11: {1,2,3,4,5,6,7,8,9,10} (insieme dei coprimi con 11)
Φ(11) = p-1 = 10
GF(11): addizione
y
chiusura
associativa
commutativa
elemento
identità
inverso
additivo
x
0
1
2
3
4
5
6
7
8
9
10
0
0
1
2
3
4
5
6
7
8
9
10
1
1
2
3
4
5
6
7
8
9
10
0
2
2
3
4
5
6
7
8
9
10
0
1
3
3
4
5
6
7
8
9
10
0
1
2
4
4
5
6
7
8
9
10
0
1
2
3
5
5
6
7
8
9
10
0
1
2
3
4
6
6
7
8
9
10
0
1
2
3
4
5
7
7
8
9
10
0
1
2
3
4
5
6
8
8
9
10
0
1
2
3
4
5
6
7
9
9
10
0
1
2
3
4
5
6
7
8
10
10
0
1
2
3
4
5
6
7
8
9
(x + y) mod 11
(3+1)+2 =
3+(1+2)
Tutti i risultati appartengono a Z11 (chiusura)
Ogni riga e ogni colonna contiene una permutazione di Z11
Scambiando gli addendi si ottiene lo stesso risultato
(commutativa)
La somma di un elemento con 0 fornisce l’elemento stesso
(identità)
In ogni riga e in ogni colonna l’elemento 0 è presente una
volta sola
GF(11): moltiplicazione
y
chiusura
associativa
commutativa
elemento
identità
reciproco
distributiva
x
0
1
2
3
4
5
6
7
8
9
10
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
2
3
4
5
6
7
8
9
10
2
0
2
4
6
8
10
1
3
5
7
9
3
0
3
6
9
1
4
7
10
2
5
8
4
0
4
8
1
5
9
2
6
10
3
7
5
0
5
10
4
9
3
8
2
7
1
6
6
0
6
1
7
2
8
3
9
4
10
5
7
0
7
3
10
6
2
9
5
1
8
4
8
0
8
5
2
10
7
4
1
9
6
3
9
0
9
7
5
3
1
10
8
6
4
2
10
0
10
9
8
7
6
5
4
3
2
1
(x × y) mod 11
Ogni riga della tabella (ad esclusione di a=0) è una permutazione di Z11
L’elemento identità è 1
L’inverso moltiplicativo di ogni a diverso da 0 è il valore b che fornisce a per bbmod11=1; tale valore
È presente una volta sola in ogni riga (ad esclusione di a=0) ed in ohni colonna (ad esclusione di b=0)
Esponenziazione
Esponenziazione modulare
a = be mod m
a = (b×b× … ×b) mod m
e volte
a = [(b mod m)×(b mod m)× … ×(b mod m)] mod m
e volte
b,e ∈ Zm
Caso peggiore e=m-1
m moltiplicazioni → 2log m moltiplicazioni
O(exp(log m)) !!
Algoritmi più efficienti
GF(11): esponenziazione
e
b
1
2
3
4
5
6
7
8
9
10
1
1
1
1
1
1
1
1
1
1
1
2
2
4
8
5
10
9
7
3
6
1
3
3
9
5
4
1
3
9
5
4
1
4
4
5
9
3
1
4
5
9
3
1
5
5
3
4
9
1
5
3
4
9
1
6
6
3
7
9
10
5
8
4
2
1
7
7
5
2
3
10
4
6
9
8
1
8
8
9
6
4
10
3
2
5
7
1
9
9
4
3
5
1
9
4
3
5
1
10
10
1
10
1
10
1
10
1
10
1
be mod 11
b,e ∈ Z*11
Piccolo teorema di Fermat
T4 (piccolo teorema di Fermat): per ogni primo p e per ogni x
di Z*p si ha
x p-1 mod p = 1 , cioè xp-1 ≡ 1 (mod p)
e
b
1
2
3
4
5
6
7
8
9
10
1
1
1
1
1
1
1
1
1
1
1
2
2
4
8
5
10
9
7
3
6
1
3
3
9
5
4
1
3
9
5
4
1
4
4
5
9
3
1
4
5
9
3
1
5
5
3
4
9
1
5
3
4
9
1
6
6
3
7
9
10
5
8
4
2
1
7
7
5
2
3
10
4
6
9
8
1
8
8
9
6
4
10
3
2
5
7
1
9
9
4
3
5
1
9
4
3
5
1
10
10
1
10
1
10
1
10
1
10
1
Corollari
T4.1: Per ogni x ∈ Z*p, se s ≡ r (mod p-1), allora xs ≡ xr (mod p).
xp ≡ xp mod(p-1) (mod p) ≡ x (mod p)
14 ≡ 4 (mod 10)
e
e
b
1
2
3
4
5
6
7
8
9
10
b
11
12
13
14
15
16
17
18
19
20
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
4
8
5
10
9
7
3
6
21
2
4
8
5
10
9
7
3
6
1
3
3
9
5
4
1
3
9
5
4
31
3
9
5
4
1
3
9
5
4
1
4
4
5
9
3
1
4
5
9
3
41
4
5
9
3
1
4
5
9
3
1
5
5
3
4
9
1
5
3
4
9
51
5
3
4
9
1
5
3
4
9
1
6
6
3
7
9
10
5
8
4
2
61
6
3
7
9
10
5
8
4
2
1
7
7
5
2
3
10
4
6
9
8
71
7
5
2
3
10
4
6
9
8
1
8
8
9
6
4
10
3
2
5
7
81
8
9
6
4
10
3
2
5
7
1
9
9
4
3
5
1
9
4
3
5
91
9
4
3
5
1
9
4
3
5
1
10
10
1
10
1
10
1
10
1
10
1
10
10
1
10
1
10
1
10
1
10
1
Quando si calcola un’esponenziazione modulare è inutilmente oneroso
impiegare esponenti maggiori di p-1 e basi maggiori di p-1
Corollari
T4.2: x(p-1)/2 mod p è uguale a 1 o a -1.
e
b
1
2
3
4
5
6
7
8
9
10
1
1
1
1
1
1
1
1
1
1
1
2
2
4
8
5
10
9
7
3
6
1
3
3
9
5
4
1
3
9
5
4
1
4
4
5
9
3
1
4
5
9
3
1
5
5
3
4
9
1
5
3
4
9
1
6
6
3
7
9
10
5
8
4
2
1
7
7
5
2
3
10
4
6
9
8
1
8
8
9
6
4
10
3
2
5
7
1
9
9
4
3
5
1
9
4
3
5
1
10
10
1
10
1
10
1
10
1
10
1
Calcolo del reciproco
T5: “l’inverso moltiplicativo di x in GF(p) è
x-1 = xp-2 mod p (infatti x xp-2 mod p = 1)
e
b
1
2
3
4
5
6
7
8
9
10
1
1
1
1
1
1
1
1
1
1
1
2
2
4
8
5
10
9
7
3
6
1
3
3
9
5
4
1
3
9
5
4
1
4
4
5
9
3
1
4
5
9
3
1
5
5
3
4
9
1
5
3
4
9
1
6
6
3
7
9
10
5
8
4
2
1
7
7
5
2
3
10
4
6
9
8
1
8
8
9
6
4
10
3
2
5
7
1
9
9
4
3
5
1
9
4
3
5
1
10
10
1
10
1
10
1
10
1
10
1
N.B. il modo più semplice di calcolare l’inverso moltiplicativo
è l’algoritmo esteso di Euclide (lo vedremo più avanti)
Proprietà dell’esponenziazione
mod n
T12 (estensione di Eulero del piccolo teorema di Fermat):
“per ogni intero n, primo o composto, e per ogni x ∈ Z*n si ha
xΦ(n) ≡ 1 (mod n)”
N.B. x coprimo con n
n = 3 × 5 = 15
Φ(15) = 8 Z*15 = {1,2,4,7,8,11,13,14}
x 01 02 03 04 05 06 07 08 09 10 11 12 13 14
x8 mod 15 01 01 06 01 10 06 01 01 06 10 01 06 01 01
T13 (corollario di T12): “per ogni n = p × q, con p e q primi, e
per ogni x > 0 si ha xΦ(n)+1 ≡ x (mod n)
e anche, per ogni intero k, x k Φ(n)+1 ≡ x (mod n) ”
pB=9733;qB=10177; phiB=99032832;!
r=Random[Integer,10^8]!
70920080!
PowerMod[r,(pB-1)(qB-1)+1,pB*qB]!
70920080
Giustificazione di RSA
Da T13 discende che per n = p.q e per ogni 0 < m < n si ha:
m k Φ(n)+1 ≡ m k (p-1)(q-1) +1 (mod n) = m
In RSA deve essere:
m e d ≡ m (mod n) ≡ m
Ciò è vero se
e d = k(p-1)(q-1)+1
o anche
e d - k(p-1)(q-1) = 1
e quindi
•  MCD (e, Φ(n)) = 1
•  d = e-1 mod Φ(n)
proprietà vere
per costruzione
T14 (Teorema cinese dei resti): “Se gli interi n1,n2,..,nk
sono a due a due coprimi, allora il sistema di congruenze
x ≡ a1 (mod n1),
x ≡ a2 (mod n2),
…,
x ≡ ak (mod nk)
ha un’unica soluzione modulo n = n1 × n2 × …. × nk ”.
Conseguenze (nel caso n1 = p, n2 = q con p,q primi):
• 
Ogni intero x < n = pq ha un’unica rappresentazione modulare
v(x) = (v1 ,v2) = (x mod p, x mod q)
•  Somme e moltiplicazioni modulari possono essere fatte
vantaggiosamente sulla rappresentazione modulare degli operandi
•  Esistono algoritmi facili (Gauss, Garner) per ripristinare la
rappresentazione originaria dell’intero
Decifrazione con CRT
1.  Rappresentazione modulare di c :
v(c) = (c mod p, c mod q)
2.  Calcolo della rappresentazione modulare di cd mod n:
vd(c) = ((c mod p) d mod p, (c mod q) d mod q)
N.B: numeri di dimensione più piccola (½ log n)
3.  Ripristino della rappresentazione usuale di m:
m = cd mod n
= {a×[(c mod p) d mod p] + b×[(c mod q) d mod q]} mod n
Per T14 a, b devono soddisfare le congruenze
a ≡ 1 (mod p)
b ≡ 0 (mod p)
a ≡ 0 (mod q)
b ≡ 1 (mod q)
Circa quattro volte più veloce
Ancora più efficiente se n è il prodotto di più di due primi (PKCS#1)