Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Klassikalised Sifrid:Nihutus- ja korrutussifrid
Ahto Buldas
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Kruptosusteem
• X - loplik avatekstide hulk.
• Y - loplik kruptogrammide hulk.
• Z - loplik votmeruum, st koikvoimalike votmete hulk.
Iga z ∈ Z korral on olemas efektiivselt arvutatavad funktsioonid
Ez : X→ Y ja Dz : Y → X ,
mis iga x ∈ X korral rahuldavad samasust Dz(Ez(X)) = X.
2
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Krupteeritud andmeedastus
Turvalisus: Rundajal ei tohi olla voimalik kruptogrammi y pohjal tuletadaavateksti x ega votit z.
3
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Krupteerimisfunktsiooni omadusi
Krupteerimisfunktsioon Ez peab olema iga z vaartuse korral injektiivne, stseosest Ez(x) = Ez(x′) jareldub x = x′.
Vastasel korral ei teaks Bob, millise sonumi (kas x voi x′) Alice tegelikultsaatis.
Kui X = Y, siis krupteerimisfunktsioon Ez on hulga X permutatsioon.
4
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Nihutussiffer
Tahestiku tsukliline nihe mingi kindla vaartuse vorra.
Naiteks Julius Caesari (100–44 e.m.a.) poolt kasutatud sifris kolme vorra:
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 tuupi sifrite kasitlemist tutvume modulaararitmeetikaga.
5
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Arvude kongruentsus mooduli m jargi
Olgu m > 1 mingi taisarv. Taisarve a ja b nimetatakse kongruentseteksmooduli m > 1 jargi ja kirjutatakse
a ≡ b (mod m) ,
kui vahe b− a jagub jaagita arvuga m (tahistakse m | (b− a)).
Igale taisarvule a vastab parajasti uks arv a hulgast
Zm = {0,1, . . .m− 1} ,
nii et a ≡ a′ (mod m). Seda arvu tahistatakse
a′ = a mod m .
6
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Arvuvald Zm
Hulgas Zm saab defineerida liitmise ja korrutamise operatsioonid ⊕ ja ⊗jargmiselt:
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 .
7
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Kujutuse mod m : Z→ Zm omadused
•modm on projektor :
a mod m mod m = a mod m .
•modm sailitab tehted (on homomorfism): Kuia′ = a mod m, b′ = b mod m ja c′ = c mod m, siis
a+ b = c =⇒ a′ ⊕ b′ = c′
a · b = c =⇒ a′ ⊗ b′ = c′ .
Jareldus 1: Arvutustes
a+ b · (c+ d · (e+ f)) . . . mod m
voib tehte modm teha mistahes vaheetapil arvutuse tulemust muutmata.
Jareldus 2: ⊕ ja ⊗ on paljuski sarnased tavalise liitmise ja korrutamisega.8
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Arvuvalla Zm tavalised omadused
Edaspidi kasutame ⊕ ja ⊗ asemel tavalisi tehtemarke + ja ⊗
Kommutatiivsus: a+ b = b+ a, a · b = b · a
Assotsiatiivsus: (a+ b) + c = a+ (b+ c), (a · b) · c = a · (b · c)
Nullelement: a+0 = 0+ a = a, a · 0 = 0 · a = 0
Uhikelement: a · 1 = 1 · a = a
Distributiivsus: (a+ b) · c = a · c+ b · c,
9
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Arvuvalla Zm erilised omadused
• Elemendi a vastandelement −a on m− a, sest
a+ (m− a) = m ≡ 0 (mod m) .
• Nullitegurid: kahe mittenullise elemendi korrutis voib olla null. Naiteksarvuvallas Z6 on
2 · 3 ≡ 0 .
• Igal elemendil a ei tarvitse olla poordelementi a−1 nii et
a · a−1 ≡ 1 .
Naiteks nulliteguritel ei saa olla poordelementi!
10
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Nihutussiffer Ladina tahestikus ja arvuvald Z26
Teksti krupteerimiseks asendatakse tahed A ... Z arvudega 0 . . .25:
A B C D E F G H I J ... T U V W X Y Z0 1 2 3 4 5 6 7 8 9 ... 19 20 21 22 23 24 25
X = Y = Z = Z26.
Krupteerimine ja dekrupteerimine:
Ez(x) = x+ z mod 26
Dz(y) = y − z mod 26 = y+ (26− z) mod 26
Kui z = 3, siis saame Caesari sifri.
11
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Krupteerimisnaide
Sonumi KOHTUME KELL KAKS krupteerimiseks votmega z = 7:
• Kodeerime sonumi: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 teisendust y = x+7 mod 26:10 14 7 19 20 12 4 10 4 11 11 10 0 10 1817 21 14 0 1 19 11 17 11 18 18 17 7 17 25
• Dekodeerime kruptogrammi:17 21 14 0 1 19 11 17 11 18 18 17 7 17 25R V O A B T L R L S S R H R Z
12
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Nihutussifri murdmine
Oletame, et luure on saanud katte strateegilise tahtsusega kruptogrammi
NDVVLGRQNDUYDVHG
ja on pohjust oletada, et kasutati nihutussifrit.Proovime labi koik votmed alates votmest z = 1 ja uritame dekrupteerida,kuni saame loomuliku keele teksti:
z Dekrupteeritud tekst1 MCUUKFQPMCTXCUGF2 LBTTJEPOLBSWBTFE3 KASSIDONKARVASED
Seega oige voti z = 3 on leitud ja kruptogramm edukalt dekrupteeritud.
Jareldus: Nihutussiffer ei ole (korduvkasutuseks!) turvaline, sest votmeidon liiga vahe.
13
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Afiinne siffer
X = Y = Zm
Voti z on paar (a, b), kus a, b ∈ Zm
Krupteerimine: E(x) = ax+ b mod m
Kusimus: Kas iga votme (a, b) korral on funktsioon E injektiivne?
Vastus on eitav: kui naiteksm = 26, a = 13 ja b=0, siis x1 = 0 ja x2 = 2
annavad sama krptogrammi 0, sest
E(2) = 2 · 13 mod 26 = 0 = 0 · 13 mod 26 = E(0) .
14
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Afiinse sifri pooratavus
Afiinne siffer esitub korrutussifri E·a(x) = x · a mod m ja nihutussifriE+b(x) = x+ b mod m kompositsioonina:
E(x) = E+b(E·a(x)) .
Et nihutussiffer on pooratav, siis afiinse sifri pooratavuse kusimus taandubkorrutussifri E·a pooratavuse kusimusele.
Kusimus: Milliste a vaartuste korral on teisendus
y = E·a(x) = a · x mod 26
injektiivne, s.t. E·a(x1) = E·a(x2) ainult siis kui x1 = x2?
15
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Suurim uhistegur ja pooratavuse tingimus
Naturaalarvude a ja b suurimaks uhisteguriks sut(a, b) nimetatakse suuri-mat arvu, millega molemad arvud a ja b jaguvad jaagita, st
sut(a, b) = max{d : d | a ja d | b} .
Teoreem: Korrutussiffer E·a on pooratav parajasti siis, kui sut(a,m) = 1.
Teoreemi toestame hiljem, kui oleme tutvunud suurima uhisteguri omadus-tega.
16
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Eukleidese algoritm
Pohineb jargmistel rekurrentsetel seostel:
sut(a, b) =
a kui a = bsut(a− b, b) kui a > bsut(a, b− a) kui a < b
(1)
Algoritmi too on esitatav vorduste jadana:
sut(a, b) = sut(a1, b1) = . . . = sut(am, bm) = am ,
kus m on vahim selline indeks, et am = bm.
Algoritm peatub (selline m leidub!), sest vastasel korral oleks
a+ b > a1 + b1 > . . . > ai+ bi > . . .
naturaalarvude lopmatult kahanev jada, mida ei saa eksisteerida.17
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Eukleidese algoritmi korrektsus
Piisab kui toestada seoste (1) kehtivus. Seos sut(a, a) = a on ilmne. See-ga piisab kui toestada a > b eeldusel seos
sut(a, b) = sut(a− b, b) .
OlguDa,b = {d : d | a ja d | b} arvude a ja b koigi uhiste tegurite hulk. Suu-rima uhisteguri definitsiooni jargi sut(a, b) = maxDa,b ja sut(a − b, b) =
maxDa−b,b. Piisab kui toestada hulkade vordsus Da,b = Da−b,b, mis tu-leneb tahelepanekutest, et:• Kui d | a ja d | b, siis ka d | (a− b), ja seega Da,b ⊆ Da−b,a• Kui d | (a − b) ja d | b, siis ka d | a, sest a = (a − b) + b, ja seegaDa,b ⊇ Da−b,a.Seos sut(a, b) = sut(a, b− a) (eeldusel b > a) toestatakse analoogiliselt.
18
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Jareldused Eukleidese algoritmist
Jareldus 1: Kui a > 0 ja b > 0 on taisarvud, siis leiduvad α, β ∈ Z, nii et
sut(a, b) = αa+ βb .
Jareldus 2: sut(a, b) = 1 parajasti siis kui leiduvad α, β ∈ Z, nii et
αa+ βb = 1 .
Toestus: Kui sut(a, b) = 1, siis vt Jareldus 1. Kui aga leiduvad α, β ∈ Z,nii et αa+ βb = 1, ja sut(a, b) = d > 1, siis jarelikult leiduvad taisarvuda′ ja b′, nii et a = d · a′, b = d · b′ ja
1 = αa+ βb = d ·∈Z︷ ︸︸ ︷
(αa′+ βb′) ,
mis on d ≥ 2 tottu voimatu.
19
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Veelkord korrutussifri pooratavusest
Teoreem: Korrutussiffer E·a on pooratav parajasti siis, kui sut(a,m) = 1.
Toestus: Kui sut(a,m) = 1 ja E·a(x1) = E·a(x2) mingite x1, x2 ∈ Zmkorral, siis uhelt poolt a(x1 − x2) ≡ 0 (mod m) ja seega a(x1 − x2) =k ·m mingi k korral; ja teiselt poolt (Jareldusest 2) leiduvad α, β ∈ Z, nii etαa+ βm = 1 ja seega
(1− βm)(x1 − x2) = αa(x1 − x2) = αkm ,
mistottu
x1 − x2 = m · [β(x1 − x2) + αk] ≡ 0 (mod m) .
Seega x1 = x2, eelduse x1, x2 ∈ Zm tottu.
Kui sut(a,m) = d > 1 ja m = d · m′, siis E·a(m′) = E·a(0) = 0 jaseega E·a ei ole injektiivne.
20
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Korrutussifri desifreerimine ja poordelemendid
Teoreem: Kui sut(a,m) = 1, siis ∃a−1 ∈ Zm, nii et a−1·a ≡ 1 (mod m).Toestus: Leiduvad α, β ∈ Z, nii et αa+ βm = 1. Defineerime a−1 = α
mod m. Siis
a−1 · a ≡ αa = 1− βm ≡ 1 (mod m) .
Def.: Elementi a−1 nimetatakse elemendi a poordelemendiks modulo m.Tahistatakse ka 1
a mod m.
Jareldus: Korrutussifri E·a desifreerimisfunktsioon on korrutussiffer E·a−1.Toepoolest,
E·a−1(E·a(x)) ≡ a−1 · (a · x) = (a−1 · a) · x ≡ x (mod m) .
21
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Poordelemendi leidmine Eukleidese algoritmi abil
Naide: Leiame 13 mod 26. Tahistame a = 3 ja b = 26.
3 26 a b3 2 a b− 8a1 2 a− (b− 8a) = 9a− b b− 8a1 1 9a− b b− 8a− (9a− b) = −17a+2b
Seega, 9 · 3− 26 = 1, millest tulenevalt 9 · 3 ≡ 1 (mod 26)
22
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Kui palju on pooratavaid elemente mod m?
Vastust kusimusele nimetatakse Euleri funktsiooniks ja tahistatakse ϕ(m).
Euleri funktsiooni ϕ(m) saab arvutada, kuid selleks peab teadma arvu mlahutust algarvude astmete korrutisena.
Algarvuks nimetatakse arvu p ≥ 2, mis jagub vaid 1 ja p-ga. Naiteks: 2, 3,5, 7, 11, 13, ...
Aritmeetika pohiteoreem: Iga positiivne taisarv m > 0 lahutub uhesel viisilalgravude astmete korrutiseks
pe11 · p
e22 · . . . · p
ekk ,
kus p1 < p2 < . . . < pk.
Naiteks: 60 = 22 · 31 · 51.23
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Aritmeetika Pohiteoreemi toestus
Lemma 1: Iga taisarv m ≥ 2 on algarvude korrutis.Toestus: Olgum vahim kordarv, mis ei ole algarvude korrutis. Seega leidu-vad m1,m2 < m, nii et m = m1 ·m2. Seega on nii m1 kui m2 algarvudekorrutised. Jarelikult on seda ka m. Vastuolu!
Lemma 2: Kui sut(a1, b) = 1 = sut(a2, b), siis sut(a1 · a2, b) = 1.Toestus: Vastavalt eeldusele leiduvad α1, β1 ja α2, β2, nii et
α1a1 + β1b = 1 = α2a2 + β2b ,
ja seega
1 = (α1a1 + β1b)︸ ︷︷ ︸1
(α2a2 + β2b)︸ ︷︷ ︸1
= α1α2︸ ︷︷ ︸α
·a1a2 + (β1 + α1a1β2)︸ ︷︷ ︸β
·b ,
millets jarelduvalt sut(a1a2, b) = 1.24
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Aritmeetika Pohiteoreemi toestus
Teoreem: Iga taisarv m ≥ 2 on uhesel viisil esitatav algarvude korrutisenap1 · p2 · . . . · pk, kus p1 ≤ p2 ≤ . . . ≤ pk.
Toestus: Olgu m vahim arv, millel on kaks erinevat esitust p1p2 . . . pk =
m = q1q2 . . . q`.
Seega pi 6= qj, sest vastasel korral oleks m′ = m/pi < m veel vaiksemarv kahe erineva (NB!) esitusega.
Jarelikult sut(p1, q1) = sut(p2, q1) = . . . = sut(pk, q1) = 1, millesteelduse q1 | m ja Lemma 2 pohjal jareldub vastuolu:
q1 = sut(m, q1) = sut(p1p2 · . . . · pk, q1) = 1 .
25
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Euleri funktsiooni arvutamine
Teoreem: Kui m esitub algarvude p1 < p2 < . . . < pk astmete korrutisenam = p
e11 · p
e22 · . . . · p
ekk , siis
ϕ(m) =(pe11 − p
e1−11
)·(pe22 − p
e2−12
)· . . . ·
(pekk − p
ek−1k
)= m ·
(1−
1
p1
)·(1−
1
p2
)· . . . ·
(1−
1
pk
).
Toestus pohineb elimineerimisprintsiibil, mis on uks elementaarkombina-toorika alustaladest.
26
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Elimineerimisprintsiip
Olgu P1, . . . , Pk hulga M alamhulgad. Soovime leida valemit nende ele-mentide arvu jaoks, mis ei kuulu mitte uhtegi hulkadest Pi, s.t. tahamearvutada |M\ ∪i Pi |.
Kui k = 1, siis |M\ ∪i Pi |=|M| − |P1|.
Kui k = 2, siis |M\ ∪i Pi |=|M| − |P1| − |P2| + |P1 ∩ P2|.
Kui k = 3, siis:
|M\ ∪i Pi | = |M| − |P1| − |P2| − |P3|+ |P1 ∩ P2| + |P1 ∩ P3| + |P2 ∩ P3| − |P1 ∩ P2 ∩ P3| .
27
Klassikalised sifrid: nihutus- ja korrutussifrid Veebruar, 2013
Elimineerimisprintsiip ja Euleri funktsioon
Olgu M = Zm, kus m = pe11 · p
e22 · . . . · p
ekk . Olgu Pi hulk, mis koosneb
pi-ga jaguvatest arvudest.
|Pi|= mpi
, |Pi ∩ Pj|= mpipj
... |Pi1 ∩ . . . ∩ Pi`|=m
pi1pi2...pi`.
Element a ∈ Zm on pooratav parajasti siis, kui ta ei kuulu uhtegi hulkadestP1, . . . , Pk, s.t. ϕ(m) =|M\ ∪i Pi | ja seega
ϕ(m) = m−m
p1− . . .−
m
pk+
m
p1p2+ ...+
m
pk−1pk−
m
p1p2p3− . . .
= m ·(1−
1
p1
)·(1−
1
p2
)· . . . ·
(1−
1
pk
).
28