cryptography and network security 3/e...–Абелова група за сабирање...
TRANSCRIPT
ЗАШТИТА ПОДАТАКА
Симетрични алгоритми заштите
коначна поља
Преглед
• Биће објашњено:
– концепти група, прстенова и поља
– модуларна аритметика са целим бројевима
– Еуклидов GCD алгоритам
– коначна поља GF(p)
– полиноми
2/26
Дељење
• нека неки број који није нула b дели a
ако за неко m имамо a=mb (a,b,m цели
бројеви)
• тј. b се садржи у a без остатка
• записујемо b|a
• и кажемо да је b делилац за a
• нпр. 13|182, -5|30, 17|0
3/26
Дељење (2)
• следеће релације важе:
–ако a|1 онда је a=±1
–ако a|b и b|a онда je a=±b
–свако b≠0 дели 0
–ако a|b и b|c онда a|c
–ако b|g и b|h онда b|(mg+nh)
•ако b|g онда je g=bxg1
•ако b|h онда je h=bxh1
•тада je mg+nh = mbg1+nbh1 = b(mg1+nh1)4/26
Група
• је низ елемената А={a,b,c,…}
• са неком бинарном операцијом * чији резултат је
увек у истом низу елемената
– затвореност: ако су a и b из А, тада је и a*b из А
• поштује:
– закон асоцијативности: (a*b)*c = a*(b*c)
– има јединични елемент e: e*a = a*e = a
– има инверзни елемент a-1: a*a-1 = e
• ако има коначан број елемената то је коначна група
и број елемената представља ред групе, у супротном
је бесконачна група
• ако важи комутативност a*b = b*a
– тада је то Абелова група5/26
Циклична група
• експонент дефинишемо као вишеструку
примену операције
– пример: a3 = a*a*a
• и нека је јединични елемент: e=a0
• и нека је a-n = (a-1)n
• група је цикличка ако је сваки елемент
експонент неког фиксираног елемента
– нпр. b = ak за неко a и свако b из групе
• за a се каже да је генератор групе
• циклична група је увек Абелова и може бити
коначна или бесконачна6/26
Прстен
• је низ елемената са две бинарне операције(сабирање и множење) који је:
• Абелова група са операцијом сабирања
• за множење важе:– затвореност
– асоцијативност
– дистрибутивност над сабирањем: a(b+c) = ab + ac
• у суштини прстен је скуп над којим можемо да примењујемо сабирање, одузимање и множење без да напустимо скуп
• ако је мултипликативност комутативна, онда је токомутативни прстен
7/26
Поље
• низ елемената са две операције:
– Абелова група за сабирање
– Абелова група за множење (игноришући 0)
– прстен
• у суштини поље је скуп над којим
можемо да примењујемо сабирање,
одузимање, множење и дељење, а да
не напустимо скуп
8/26
Модуларна аритметика
• дефинише се оператор модула a mod
n као остатак дељења целобројне
вредности a са позитивном
целобројном вредношћу n
• користи се израз конгруенција за:
– (a mod n) = (b mod n)
– пише се a ≡ b (mod n)
– нпр. 100 ≡ 34 mod 11
9/26
Пример за модуло 7
...
-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
...
10/26
Особине конгруентности
• a ≡ b (mod n) ако n|(a-b)
• a ≡ b (mod n) implicira
b ≡ a (mod n)
• a ≡ b (mod n) i b ≡ c (mod n)
implicira a ≡ c (mod n)
11/26
Операције модуларне
аритметике
• користи се коначан број вредности, и
резултати се добијају увек у том скупу
вредности
• модуларна аритметика је када се сабирањем
и множењем и мод операцијом редуковањем
долази до решења
• редуковање је могуће у сваком тренутку, нпр
– (a+b) mod n = ((a mod n) + (b mod n)) mod n
– (12+9) mod 5 = 1
– ((12 mod 5)+(9 mod 5)) mod 5 = (2+4) mod 5 = 1
12/26
Модуларна аритметика
• може се радити са било којом групом целих бројева: Zn = {0, 1, … , n-
1}
• направи се комутативни прстен за
сабирање
• мора да постоји јединични елемент за
множење
13/26
Пример за модуло 8
сабирање+ 0 1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 0
2 2 3 4 5 6 7 0 1
3 3 4 5 6 7 0 1 2
4 4 5 6 7 0 1 2 3
5 5 6 7 0 1 2 3 4
6 6 7 0 1 2 3 4 5
7 7 0 1 2 3 4 5 6
14/26
Пример за модуло 8
множењеx 0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 0 2 4 6
3 0 3 6 1 4 7 2 5
4 0 4 0 4 0 4 0 4
5 0 5 2 7 4 1 6 3
6 0 6 4 2 0 6 4 2
7 0 7 6 5 4 3 2 1
15/26
Највећи заједнички делилац
(GCD)
• GCD (a,b) за a и b је највећи могући
број који дели и a и b
– нпр GCD(100,75) = 25
• често имамо да не постоји заједнички
фактор (осим 1) и такви бројеви су
узајамно прости
– нпр GCD(7,22) = 1
– зато су 7 и 22 узајамно прости
16/26
Еуклидов GCD алгоритам
• ефикасан начин за проналажење GCD(a,b)
• користи се теорема да:
– GCD(a,b) = GCD(b, a mod b)
• Еуклидов алгоритам за рачунање GCD(a,b):
– A=a, B=b
– while B>0
• R = A mod B
• A = B, B = R
– return A
17/26
Пример GCD(2050,1128)
2050 = 1 x 1128 + 922 gcd(1128, 922)
1128 = 1 x 922 + 206 gcd(922, 206)
922 = 4 x 206 + 98 gcd(206, 98)
206 = 2 x 98 + 10 gcd(98, 10)
98 = 9 x 10 + 8 gcd(10, 8)
10 = 1 x 8 + 2 gcd(8, 2)
8 = 4 x 2 + 0 gcd(2, 0)
18/26
Поља Galois
• коначна поља играју кључну улогу у криптографији
• могуће је доказати да број елемената у коначном пољу мора бити степен простог броја pn
• Galois поља се обележавају као GF(pn)
• најчешће су у употреби:– GF(p)
– GF(2n)
19/26
Galois поља GF(p)
• GF(p) је низ целих бројева {0,1, … ,
p-1} са аритметичким операцијама по
модулу p
• могуће су операције сабирања,
одузимања, множења и дељења са резултатом у скупу GF(p)
20/26
Пример GF(7)+ 0 1 2 3 4 5 6
0 0 1 2 3 4 5 6
1 1 2 3 4 5 6 0
2 2 3 4 5 6 0 1
3 3 4 5 6 0 1 2
4 4 5 6 0 1 2 3
5 5 6 0 1 2 3 4
6 6 0 1 2 3 4 5
x 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6
2 0 2 4 6 1 3 5
3 0 3 6 2 5 1 4
4 0 4 1 5 2 6 3
5 0 5 3 1 6 4 2
6 0 6 5 4 3 2 1
21/26
Полиноми
• могу се рачунати кроз суме
• постоје и алтернативе
– класична аритметика са полиномима
– аритметика са полиномима са коефицијентима по модулу
– модуларна аритметика са полиномима
22/26
Класична аритметика са
полиномима
• саберу се или одузму одговарајући
коефицијенти
• помноже се сваки са сваким
• нпр.
– ако су f(x) = x3 + x2 + 2 и g(x) = x2 – x + 1
f(x) + g(x) = x3 + 2x2 – x + 3
f(x) – g(x) = x3 + x + 1
f(x) * g(x) = x5 + 3x2 – 2x + 2
23/26
Аритметика са полиномима са
коефицијентима по модулу
• када се израчунава вредност сваког
коефицијента, рачунање се ради по
неком модулу
• најинтеренсантније нам је mod 2
– сви коефицијенти су 0 или 1
– нпр. ако су f(x) = x3 + x2 и g(x) = x2 + x + 1
f(x) + g(x) = x3 + x + 1
f(x) x g(x) = x5 + x2
24/26
Модуларна аритметика са
полиномима
• сваки полином се може написати у
форми:
– f(x) = q(x) g(x) + r(x)
– r(x) се може тумачити као остатак
– r(x) = f(x) mod g(x)
• ако нема остатка кажемо g(x) дели f(x)
• ако g(x) нема друге делиоце осим себе
и 1 каже се да је несводљиви полином
25/26
GCD алгоритам са полиномима
• може се наћи највећи заједнички делилац за полиноме
– c(x) = GCD(a(x), b(x)) ако је c(x) полином највећег степена који дели оба a(x) и b(x)
– Euclid-ов алгоритам се може прилагодити за полиноме:
– EUCLID[a(x), b(x)]
1. A(x) = a(x); B(x) = b(x)
2. if B(x) = 0 return A(x) = gcd[a(x), b(x)]
3. R(x) = A(x) mod B(x)
4. A(x) = B(x)
5. B(x) = R(x)
6. goto 2
26/26
Модуларна аритметика са
полиномима
• може се рачунати у пољу GF(2n)
– полиноми са коефицијентима mod 2
– чији степен је мањи од n
• чине коначно поље
• може се наћи инверзна вредност
27/26
Пример GF(23)
28/26