Gruppi, Anelli, Campi
(A1) Chiusura per addizione
(A2) Associatività addizione
(A3)Elemento neutro addizione
(A4)Esistenza inversi additivi
Campo
(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
1
Campi finiti di tipo GF(p)
Un campo finito ( o di Galois) è formato :
Dall’insieme p (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
2
Campi finiti di tipo GF(p)

Esempio: 2 è il più semplice campo finito:
+
0
1

0
1
0
0
1
0
0
0
1
1
0
1
0
1
(xor)
3
(and)
Example GF(7)
4
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
5
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
6
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
7
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
8
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
9
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

10
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 irriducibile m(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)
11
Aritmetica dei polinomi

esempio: per n=3 ci sono solo due polinomi
irriducibili a coefficienti in GF(2):
x3 + x2 + 1
e
x3 + x + 1
Quindi, ci sono due rappresentazioni
diverse (cioè, due etichettature degli
elementi) di GF(23)

per n = 8 ci sono 30 scelte diverse per
m(x)
12
Operazioni in GF(2n)
Fissato il polinomio irriducibile di grado n,
 somma: si fa lo xor bit a bit (coefficiente per
coefficiente)
 sottrazione: uguale alla somma
 prodotto: come per i polinomi ordinari, poi si fa la
riduzione modulo m(x) del risultato


inversione: dato a(x)  GF(2n), è possibile
calcolare a-1(x)  GF(2n) usando l’algoritmo di
Euclide esteso
divisione: per calcolare a(x)/b(x), si calcola
a(x)b-1(x)
13
Esempio GF(23)
14
Aritmetica polinomiale modulare
Molte operazioni in Rijndael sono definite lavorando sui
singoli byte, c’è quindi la necessità di rappresentare un
byte nel campo finito GF(28).
Un byte b composto dagli 8 bit b7 b6 b5 b4 b3 b2 b1 b0 è
considerato come un polinomio b(x) con coefficienti in
{0,1}:
b7 x7+ b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x + b0
Esempio: il byte con valore in esadecimale ‘57’ (binario
01010111) corrisponde al polinomio
x6 + x4 + x2 + x + 1
15
Aritmetica polinomiale modulare
Somma
Nella rappresentazione polinomiale la somma di due elementi
è un polinomio i cui coefficienti
sono dati dalla somma modulo 2 dei coefficienti dei due
addendi.
Esempio: '57'+'83'='D4' o con la notazione polinomiale:
(x6 + x4 + x2 + x + 1) + (x7 + x + 1) = x7 + x6 + x4 + x2.
In notazione binaria abbiamo: ''01010111'' + ''10000011'' =
''11010100''
Chiaramente l'addizione corrisponde ad un semplice XOR
(denotato con Å) bit a bit.
16
Moltiplicazione
Nella rappresentazione polinomiale, la moltiplicazione in
GF(28) corrisponde ad una
moltiplicazione di polinomi modulo un polinomio binario
irriducibile di grado 8. Un polinomio è
irriducibile se non ha divisori oltre che 1 e se stesso. Per
Rijndael questo polinomio è chiamato m(x) ed è dato da
m(x) = x8 + x4 + x3 + x + 1
o '11B' nella rappresentazione esadecimale.
17
Esempio: '53' · '83' = 'C1' o, nella rappresentazione
polinomiale
(x6 + x4 + x2 + x + 1)(x7 + x + 1) = x13 + x11 + x9 + x8 + x7
+x7 + x5 + x3+ x2 + x
x6 + x 4 + x 2 + x + 1
= x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1
e facendone modulo m(x) ottengo x7 + x6 + 1 che è il risultato
cercato.
Chiaramente il risultato deve essere un polinomio binario di
grado minore di 8.
La moltiplicazione definita prima è associativa ed ha l’elemento
neutro che è ‘01’ in notazione esadecimale.
18
Per ogni polinomio binario b(x) di grado minore di 8,
l’algoritmo esteso di Euclide può essere usato per calcolare i
polinomi a(x) e c(x) tali che
b(x) a(x) + m(x) c(x) = 1
NOTA: L’algoritmo esteso di Euclide intende trovare il
M.C.D. tra i polinomi b(x) e m(x)
attraverso la tecnica delle divisioni successive.
Percio` a(x)· b(x) mod m(x) =1 oppure b-1(x) = a(x) mod m(x).
19