klassikaline krüptograafia

39
Klassikaline krüptograafia Ahto Buldas

Upload: toviel

Post on 15-Jan-2016

129 views

Category:

Documents


0 download

DESCRIPTION

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 K  K korral on olemas efektiivselt arvutatavad funktsioonid E K : P  C ja D K : C  P , - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Klassikaline krüptograafia

Klassikaline krüptograafia

Ahto Buldas

Page 2: Klassikaline krüptograafia

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.

Page 3: Klassikaline krüptograafia

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.

Page 4: Klassikaline krüptograafia

Pikkade sõnumite edastus:

• Avatekst X = x1x2…xn

• Iga i=1…n korral arvuta

yi = EK(xi)

• Krüptogramm Y = y1y2…yn

Page 5: Klassikaline krüptograafia

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.

Page 6: Klassikaline krüptograafia

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.

Page 7: Klassikaline krüptograafia

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.

Page 8: Klassikaline krüptograafia

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.

Page 9: Klassikaline krüptograafia

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: +

Page 10: Klassikaline krüptograafia

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,

Page 11: Klassikaline krüptograafia

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.

Page 12: Klassikaline krüptograafia

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

Page 13: Klassikaline krüptograafia

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

Page 14: Klassikaline krüptograafia

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.

Page 15: Klassikaline krüptograafia

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

Page 16: Klassikaline krüptograafia

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.

Page 17: Klassikaline krüptograafia

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)

Page 18: Klassikaline krüptograafia

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.

Page 19: Klassikaline krüptograafia

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.

Page 20: Klassikaline krüptograafia

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.

Page 21: Klassikaline krüptograafia

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

Page 22: Klassikaline krüptograafia

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.

Page 23: Klassikaline krüptograafia

Ü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?

Page 24: Klassikaline krüptograafia

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.

Page 25: Klassikaline krüptograafia

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

Page 26: Klassikaline krüptograafia

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.

Page 27: Klassikaline krüptograafia

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)

Page 28: Klassikaline krüptograafia

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!

Page 29: Klassikaline krüptograafia

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.

Page 30: Klassikaline krüptograafia

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

Page 31: Klassikaline krüptograafia

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

Page 32: Klassikaline krüptograafia

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.

Page 33: Klassikaline krüptograafia

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))

Page 34: Klassikaline krüptograafia

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

Page 35: Klassikaline krüptograafia

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

Page 36: Klassikaline krüptograafia

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).

Page 37: Klassikaline krüptograafia

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.

Page 38: Klassikaline krüptograafia

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

Page 39: Klassikaline krüptograafia

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