klassikaline krüptograafia
Post on 15-Jan-2016
128 Views
Preview:
DESCRIPTION
TRANSCRIPT
Klassikaline krüptograafia
Ahto Buldas
Krüptosüsteem
• P - lõplik avatekstide hulk
• C - lõplik krüptogrammide hulk
• K - lõplik võtmeruum(võimalike võtmete hulk)
• Iga KK korral on olemas efektiivselt arvutatavad funktsioonid
EK:PC ja DK:CP,
mis iga xP korral rahuldavad samasust:
DK(EK(x)) = x.
Krüpteeritud andmeedastus
Alice E D Bob
Turvaline kanal
Võtmeallikas
x y
K K
y x
Carol (ründaja)
Ründajal ei tohi olla võimalik krüptogrammi y põhjal tuletada avateksti x või võtit K.
Pikkade sõnumite edastus:
• Avatekst X = x1x2…xn
• Iga i=1…n korral arvuta
yi = EK(xi)
• Krüptogramm Y = y1y2…yn
Krüpteerimisfunktsiooni omadusi
• Krüpteerimisfunktsioon EK peab olema iga K väärtuse korral injektiivne, st seosest
y = EK(x) = EK(x’) järeldub x = x’.
• Vastasel korral ei teaks Bob, millise sõnumi (kas x või x’) krüptogramm y on.
• Kui P=C, siis krüpteerimisfunktsioon EK on hulga P permutatsioon.
Nihutusšiffer(I)
• Tähestiku tsükliline nihe mingi kindla väärtuse võrra.
• Näiteks Caresari šifris kolme võrra:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
• NB! Enne erinevat tüüpi šifrite käsitlemist tutvume modulaararitmeetikaga.
Kongruentsus mooduli m järgi
• Definitsioon. Täisarve a ja b nimetatakse kongruentseteks mooduli (posit. täisarvu) m järgi ja kirjutatakse a b (mod m), kui täisarv b a jagub jäägita arvuga m (tähistakse m|ba).
• Igale täisarvule a vastab parajasti üks arv a’ hulgast Zm ={x Z | 0x<m}, nii et a a’ (mod m). Seda arvu tähistatakse
a’ = a mod m.
Arvuvald Zm
• Hulgas Zm saab defineerida liitmise ja korrutamise operatsioonid järgmiselt:
a b = (a + b) mod m,
a b = (a b) mod m.
• Näiteks arvuvallas Z3:
2 2 = 2 2 = 1, 1 2 = 0, ja
arvuvallas Z5:
2 3 = 0, 3 3 = 1 = 3 2 ja 3 4 = 2.
Tavatehete omaduste ülekantavus arvuvalda Zm
• Kõigi täisarvude a ja b korral kehtivad seosed:
(a mod m) mod m = (a mod m),
(a mod m) (b mod m) = (a + b) mod m,
(a mod m) (b mod m) = (a b) mod m.
• Sellest järeldub operatsioonidel ja on samasugused omadused kui tavalisel liitmisel ja korrutamisel, mistõttu neid võib tähistada tavaliste tehtemärkidega: +
Arvuvalla Zm “tavalised” omadused:
• Kommutatiivsus: a + b = b + a, ab = ba
• Assotsiatiivsus: (a+b)+c=a+(b+c), (ab)c=a(bc)
• Nullelement: a + 0 = 0 + a = a, a 0 = 0 a = 0
• Ühikelement: a 1 = 1 a = a
• Distributiivsus: (a+b)c=ac+bc,
Arvuvalla Zm “erilised”omadused:
• Elemendi a vastandelement (-a) on ma, sest a + (ma) = m 0 (mod m).
• Nullitegurid: kahe mittenullise elemendi korrutis võib tulla null. Näiteks hulgas Z6 on 2 3 = 0.
Nihutusšiffer(II)
• P = C = K = Z26
EK(x) = (x + K) mod 26
DK(y) = (y K) mod 26 = (y + (26 K)) mod 26
• Kui K=3, siis saame Caesari šifri.• Teksti krüpteerimiseks asendatakse tähed
arvudega 0 … 25:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z0 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
Krüpteerimisnäide
• Olgu meil sõnum: “Kohtume kell kaks”
• Kodeerime sõnumi:
K O H T U M E K E L L K A K S10 14 7 19 20 12 4 10 4 11 11 10 0 10 18
• Kasutame võtit K=7:17 21 14 0 1 19 11 17 11 18 18 17 7 17 25
R V O A B T L R L S S R H R Z
Dekrüpteerimisnäide
• Krüpteerimiseks leiame K pöördväärtuse 26 K = 26 7 = 19 ja kasutame sama võtet:
• Krüptogrammi RVOABTLRLSSRHRZ iga tähe y koodi teisendame eeskirjaga
x = (y + (26 K)) mod 26 = (y + 19) mod 26.
• Näiteks esimene täht R(17) teisendub täheks (17+19) mod 26 = 36 mod 26 = 10, st K.
Nihutusšifri murdmine
• Oletame, et edastati strateegilise tähtsusega krüptogramm: Y= NDVVLGRQNDUYDVHG.
• Proovime järjest läbi kõik võtmed alates võtmest K=1 ja üritame dekrüpteerida, kuni saame loomuliku keele teksti:
K=1 (-K=25): MCUUKFQPMCTXCUGF
K=2 (-K=24): LBTTJEPOLBSWBTFE
K=3 (-K=23): KASSIDONKARVASED
Seega: K=3 ja X= KASSID ON KARVASED
Märkused ja järeldus
• Nihutusšifrit on kerge murda, sest õige võtme leidmiseks on vaja keskmiselt läbi proovida 26/2=13 võtmekandidaati.
• Arvuti murrab nihutusšifri mõne hetkega, kui tal on kasutada vastava loomuliku keele sõnastik.
Afiinne šiffer• P=C=Z26
• Iga võti K on paar (a,b), kus a,b Z26
• Krüpteerimine: E(x) = ax + b mod 26
• Küsimus: Kas iga võtme korral on funktsioon E injektiivne?
• Vastus on eitav: kui a=13 ja b=0, siis x1=0 ja x2=2 annavad sama krüptogrammi 0, sest
E(2) = 2 13 mod 26 = 0 = 0 13 mod 26 = E(0)
Afiinse šifri pööratavus
• Võrrand ax + b y (mod 26) on samaväärne võrrandiga ax y b (mod 26).
• Nihketeisendus on injektiivne. Seega on meie küsimus samaväärne küsimusega, millal on elemendil a arvuvallas Z26 olemas pöördelement a-1, nii et
a-1(a x) = x, iga xZ26 korral, st
a-1a = 1.
Vastuse annab arvuteooria
• Definitsioon. Positiivsete täisarvude x ja y suurimaks ühisteguriks süt(x,y) nimetatakse suurimat arvu, millega mõlemad arvud x ja y jaguvad jäägita, st
süt(x,y) = max{ d: d|x ja d|y }.
Teoreem. Element aZm on pööratav parajasti siis, kui süt(a,m) = 1.
Tõestus:
• Kui süt(a,m) = 1 ja ax1ax2(mod m), siis ax1ax2 = a(x1x2) jagub arvuga m. Seega m=m1m2, kus m1|a ja m2|(x1x2). Arv m1 on järelikult arvude m ja a ühine tegur, mistõttu m1 süt(a,m) = 1. Seega m1=1 ja järelikult x1x2 0 (mod m) ja x1 x2(mod m).
• Kui z=süt(a,m) > 1, siis a=a1z ja m=zm1. Võtame x1=m1 ja x2=0. Saame
ax1 = am1 = (a1z)m1 = a1(zm1) = a1m 0 (mod m)
ax2 = a 0 0 (mod m),
mis tähendabki, et a ei ole pööratav.
Kui palju on pööratavaid elemente?
• Tähistame hulga Zm pööratavate elementide arvu (m) – nn. Euleri funktsioon.
• Algarv: positiivne ühest suurem täisarv, mis jagub vaid 1 ja iseendaga: 2, 3, 5, 7, 11, 13, ...
• Aritmeetika põhiteoreem: iga posit. täisarv m on ühesel viisil esitatav algarvude astmete korrutisena: m = p1
e1 … pses.
• Näiteks 60 = 22 31 51, 56 = 23 71 ja
26 = 21 131
Euleri teoreem
• Teoreem (Euler). Kui m = p1e1 … ps
es, siis
(m) = (p1e1 p1
e11)... (pses ps
es1).
Näiteks (26) = (21) (13 1) = 12 ja
(60) = (42) (3 1) (5 1) = 16.
Järeldus. Afiinse šifri erinevate võimalike võtmete arv on 26(26) = 2612 = 312.
Üldine afiinne šiffer
• P=C=Zm
• K = {(a,b): a,bZm ja süt(a,m)=1}
• Ea,b(x) = ax + b mod m
• Da,b(y) = a-1(y b) mod m
Küsimus: Kuidas leida pöördelementi a-1?
Eukleidese algoritm
• Põhineb seostel:Kui a=b, siis süt(a,b)=a
Kui a>b, siis süt(a,b)= süt(ab,b)
Kui a<b, siis süt(a,b)= süt(a,ba)• Esitab suurima ühisteguri lineaarkombinatsioonina
süt(a,b) = a + b,
kus ja on (mitte tingimata positiivsed) täisarvud.
Näidea=26 ja b=7
süt(26,7) = süt(a,b) = süt(a-b,b) =
süt(19,7) = süt(a-2b,b) =
süt(12,7) = süt(a-3b,b) =
süt(5,7) = süt(a-3b,b-(a-3b)) = süt(a-3b, -a+4b) =
süt(5,2) = süt((a-3b)-(-a+4b),-a+4b)= süt(2a-7b, -a+4b)=
süt(3,2) = süt((2a-7b)-(-a+4b),-a+4b)= süt(3a-11b, -a+4b)=
süt(1,2) = süt(3a-11b,(-a+4b)-(3a-11b))=
süt(3a-11b,-4a+15b)= süt(1,1) = 1 = -4a + 15b
Pöördväärtuse leidmise idee
• Teoreem. Kui a + m = 1, siis = a-1 arvuvallas Zm.
Tõestus. a mod m = (1 m) mod m = 1.
Järeldus. Võrdusest 1 = -4 26 + 15 7 järeldub, et 7-1 = 15 arvuvallas Z26.
Vigenere šiffer
• P=C=K=(Z26)m
• Kui K=(k1,…,km), siis
• EK(x1,…,xm) = (x1+ k1,…, xm+ km)
• DK(y1,…,ym) = (y1 k1,…, ym km)
ArvutusnäideNäide.
Olgu K=KALAD ja Y= VIGENEREONMURTAV
KALADKALADKALADK
siis saame FIREQORPOQWUCTDF• Vigenere šifris on erinevate võtmete arv 26m,
mis piisavalt suure m korral välistab võtmete läbiproovimise. Kui m=5, siis |K|107 , mis välistab käsitsi proovimise, kuid mitte arvuti abiga teostatud proovimise!
Hilli šiffer (1929)
• P=C=(Z26)m
• Idee: Krüptogrammi Y iga tähe kood on lineaarkombinatsioon võtmetähtedest ja teistest tähtedest m-elemendilises plokis.
• X=(x1…xm), Y=(y1…ym) ja K- mm maatriks
Y=XK
• NB! Vignere šifri m-tähelises plokis ei mõjuta teised tähed ega võtmeelemendid ühegi tähe koodi.
Hilli- ja Vigenere šifrite võrdlus
• Vigenere šifri (vasakul) iga väljund yi sõltub ainult vastavast sisendist xi.
• Hilli šifri (paremal) iga väljund yi sõltub kõikidest sisenditest x1,…, xm.
x1 x2 … xm
y1 y2 … ym
E k1 k2 … kmE E
x1 x2 … xm
y1 y2 … ym
E - lineaarteisendus K
Hilli šiffer: näide
• Olgu m=2, X=(x1,x2), Y=(y1,y2) ja K-maatriks:
K =
Siis kehtivad lineaarvõrrandid:
y1 = 11x1 + 3x2
y2 = 8x1 + 7x2
11 8
3 7
Hilli šifri pööratavus
• Tuleb leida maatriksi K pöördmaatriks K-1. Kui y=xK , siis
yK-1 = (xK)K-1 = x(KK-1 ) = xI = x. • Võti K peab olema pööratav maatriks.
Pööratavaid maatrikseid on suurusjärgus 26m(m-1). Ka suhteliselt väikeste m-de korral on võtmete läbiproovimine suhteliselt raske isegi arvutiga.
Permutatsioonšiffer
• Hilli šifri erijuht.
• P=C=(Z26)m
• K - hulga {1…m} permutatsioonide hulk Sm.
• E(x1,…,xm) = (x(1),…,x(m)) = (y1,..., ym)
• D(y1,…,ym) = (x1,…,xm)
• Saab esitada lineaarteisendusena, kui permutatsioon esitada permutatsiooni-maatriksina K: (x1,…,xm) K = (x(1),…,x(m))
Näide: permutatsioon ja pöördpermutatsioon
• Permutatsioon =
• Vastav pöördpermutatsioon -1 =
• Ja vastav
permutatsioonimaatriks:
1 2 3 4 5 66 2 5 1 4 3
1 2 3 4 5 64 2 6 5 3 1
0 0 0 1 0 0
0 1 0 0 0 0
0 0 0 0 0 1
0 0 0 0 1 0
0 0 1 0 0 0
1 0 0 0 0 0
Näide: permutatsioonšifri kasutamine:
• Olgu = ja sõnum
JAHPII LUPART OLIRON GIJUHT
IAIJPH TURLAP NLOORI TIHGUJ
• Erinevaid permutatsioone on |Sm|=m!, mis kasvab küllalt kiiresti.
• Permutatsioonšiffer on ka käsitsi kasutatav.
1 2 3 4 5 66 2 5 1 4 3
Jadašifrid
• Genereeritakse võtmejada z0, z1, …
• Teisendadatske sisendjada X: x0, x1, …
Y= y0y1 … = Ez0(x0) Ez1
(x1) …
• Võtmejada saamise eeskiri:
zi = fi(K, x0, x1,…, xi-1)
Jadašifrit nimetatakse sünkroonseks, kui võtmejada element ei sõltu sisenditest (avatekstist).
Vigenere šiffer kui jadašiffer
• Vigenere šiffer on sünkroonne jadašiffer, kui defineerida zi = fi(k0,…,km-1) = ki mod m, ja
yi = xi + zi mod 26.
• Jadašifreid kirjeldatakse enamasti kaheelemendilise tähestiku Z2={0,1} baasil. See võimaldab nende efektiivset aparatuurset realiseerimist.
Lineaarsed nihkeregistrid• Jadašifrid, kus kasutatakse lineaarset seoseid:
zi = ki, kui i=0…m-1 ja
zi+m = c0zi + c1zi+1+…+cm-1zi+m-1 mod 2.
zi+mzi+m-1zi+1zi ...
c0 c1
ci+m-1
Lineaarne nihkeregister: näide
• zi+4 = zi + zi+1 mod 2, st c0=c1=1 ja c2=c3=0.
• Võti (0,0,0,0) annab nullise väljundjada ja ei ole loomulikult krüpteerimiseks sobilik.
• Võti K=(k0,k1,k2,k3)=(1,0,0,0) annab väljundjada:
1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 …
zi zi+1 zi+2 zi+3 zi+4
top related