Professional Documents
Culture Documents
Kriptografinių Apsaugos Metodų Analizė
Kriptografinių Apsaugos Metodų Analizė
Olga Ščuckaja
Darbo vadovas:
habil dr. prof. K. Kazlauskas
Vilnius, 2006
Turinys
Įvadas...............................................................................................................................................4
1. Elipsinės kriptosistemos........................................................................................................... 5
1.1. Matematiniai pagrindai..................................................................................................5
1.2. Elipsinės kreivės grupė.................................................................................................. 6
1.3. Elipsinė kreivė virš GF(p)............................................................................................. 8
1.4. ECDSA – Elektroninio parašo algoritmas naudojantis elipsines kreives.....................11
2. Elektroninių pinigų nesusekamumo analizė........................................................................ 13
3. Vienos krypties funkcijų panaudojimo galimybių tyrimas pseudoatsitiktinių kodų
generatoriuose.........................................................................................................................21
4. Tikimybinis šifravimas...........................................................................................................23
5. Stochastinių duomenų perdavimo metodų analizė..............................................................25
5.1. Pagrindinės kodavimo sąvokos....................................................................................25
5.2. Kodavimas ir kriptografija...........................................................................................29
5.3. Stochastiniai (n, k, q)-kodai......................................................................................... 30
5.4. Stochastinis blokinis (n, k, q)-kodas, ištaisantis klaidas..............................................32
5.5. Kripto- ir imitoapsauga esant stochastiniam kodavimui............................................. 37
6. Programų vykdymo kontrolės metodai................................................................................ 38
7. Kriptosistemų nepatikimumo priežasčių analizė.................................................................44
8. Naujų idėjų kriptografijoje analizė.......................................................................................50
8.1. Atskleidimo laike kriptografija....................................................................................50
8.1.1.„Galvosūkiai“ su laiko užraktu..................................................................................51
8.1.2.„Galvosūkių“ su laiko užraktu kūrimas.....................................................................52
8.1.3.„Galvosūkio“ sprendimas.......................................................................................... 53
8.2. Kvantinė kriptografija..................................................................................................53
8.2.1.Kvantinės kriptografijos gimimas............................................................................. 54
8.2.2.Kvantinės fizikos esmė.............................................................................................. 55
8.2.3.Raktų paskirstymo kvantinis protokolas....................................................................58
Rezultatai ir išvados..................................................................................................................... 66
Santrauka...................................................................................................................................... 67
Summary....................................................................................................................................... 68
Literatūros sąrašas.......................................................................................................................... 69
2
Priedas 1......................................................................................................................................... 70
Priedas 2......................................................................................................................................... 73
3
Įvadas
• elipsinė kriptosistema;
• stochastiniai duomenų perdavimo metodai;
• pseudoatsitiktinių kodų generatorių projektavimo metodai;
• elektroninių mokėjimo sistemų organizavimas naudojant akląjį parašą;
• kvantinė kriptografija.
Darbo uždaviniai:
• atlikti e-pinigų nesusekamumo analizę;
• ištirti vienos krypties funkcijų panaudojimą pseudoatsitiktinių kodų generatoriuose;
• išanalizuoti stochastinių duomenų perdavimo metodus;
• atlikti programų vykdymo kontrolės ir kriptosistemų nepatikimumo priežasčių bei naujų idėjų
kriptografijoje analizę;
• ištirti elipsines kreives virš GF(p) ir parašyti programą, apskaičiuojančią elipsinės kreivės
E: y2 = x3 + a x + b, a, b ∈ GF(p), taškus.
4
1. Elipsinė kriptosistema
Elipsinė kreivė yra matematinis objektas, kuris gali būti apibrėžtas bet kuriame lauke
(baigtiniame, sveikajame, racionaliajame ir kompleksiniame). Kriptografijoje naudojami
baigtiniai laukai. Dviems taškams elipsinėje kreivėje įvedama sudėties operacija, kurios paskirtis
tokia pati, kaip ir daugybos operacija RSA ir Al-Gamalio kriptosistemose.
Tyrimai parodė, kad elipsinės kriptosistemos pranašesnės, negu sistemos su viešuoju raktu dėl
dviejų dalykų: jos yra atsparesnės ir spartesnės.
5
Baigtinė grupė, kuri susidaryta iš vieno grupės elemento g laipsnių 1, g, g2, g3,..., vadinama
cikline grupe. Taipogi mažiausias sveikasis skaičius e, toks, kad ge = 1, vadinamas elemento g
eile.
y E
A C x
D B
1 pav. Elipsinės kreivės E, kurios lygtis y2 + y = x3 – x2, penkių taškų grupė; O – be galo nutolęs taškas
6
P
R
• per taškus P ir Q nubrėžkime tiesę, raskime šios tiesės trečiąjį susikirtimo tašką S su
kreive E;
• per tašką S nubrėžkime vertikalią tiesę iki kreivės E susikirtimo taško T;
• ieškoma suma lygi: P + Q = T (3 pav.).
7
A + A = B, A + B = C, A + C = D, A + D = O,
arba
2A = B, 3A = C, 4A = D, 5A = 0, 6A = A (4 pav.).
Bet kuriems taškams P, Q ∈ G teisinga P + Q = Q + P. Bet kuriam taškui P ∈ G teisinga
P + O = P; kitaip sakant, taškas O yra grupės G adityvusis vienetinis elementas.
O
A C
D B
8
y 2 − y1
, jei P ≠ Q;
x − x
λ = 22 1
3x1 + a
, jei P = Q.
2 y1
Skaičius λ yra nubrėžtos per taškus P = (x1, y1) ir Q = (x2, y2) kirstinės kampo koeficientas.
Kai P = Q, tai kirstinė tampa liestine, dėl ko λ apskaičiuojamas pagal dvi išraiškas.
Bet kuriam taškui P ∈ E(GF(p)) teisinga P + O = O + P = P. Jei P = (x, y) ∈ E(GF(p)), tai
(x, y) + (x, –y) = O. Taškas (x, –y) ∈ E(GF(p)) yra atvirkštinis elementas P atžvilgiu ir žymimas –
P.
Užduotį, kurią turi spręsti įsilaužėlis kai naudojama elipsinė kriptosistema, formuluojama
tokiu būdu: duoti taškai P ir Q elipsinėje eilės r kreivėje, kur r – taškų skaičius kreivėje. Reikia
rasti vienintelį tašką x, tokį, kad
P = xQ.
1 pavyzdys. Tegu p = 5, a = b = 1, 4a3 + 27b2 = 4 + 2 = 6 ≠ 0. Nagrinėsime elipsinę kreivę
E: y2 = x3 + x + 1 (5 pav.).
E(GF(5)) sudaryta iš tokių taškų:
P = (0, 1), 2P = (4, 2), 3P = (2, 1), 4P = (3, 4), 5P = (3, 1),
6P = (2, 4), 7P = (4, 3), 8P = (0, 4), 9P = O, ir 10P = P.
1
1 x
9
0 = 9P
8P 6P 4P
3 7P
2P
P 3P 5P
0 1 2 3 4
22
20 P+Q
18
16
14
2P
12
10
8 P
6 Q
4
2
x
0 2 4 6 8 10 12 14 16 18 20 22
ECDSA (Elliptic Curve Digest Signature Algorithm) algoritmas yra priimtas ANSI X9F1 ir
IDEE P1363 standartuose. Vokietijoje ECDSA yra valstybės standartas. Rusijoje dar dirbama su
GOST naudojančiu ECDSA.
Rakto generavimo algoritmas:
1. Pasirenkame elipsinę kreivę E, apibrėžtą Zp. E(Zp) taškų skaičius turi dalintis iš didelio
sveikojo n.
2. Pasirenkame n-osios eilės tašką P ∈ E(Zp).
3. Pasirenkame atsitiktinį skaičių d ∈ [1, n – 1].
4. Apskaičiuojame Q = dP.
5. Privatusis raktas yra d, viešas – (E, P, n, Q).
~
Pranešimo p parašo formavimo algoritmas:
1. Pasirenkame atsitiktinį skaičių k ∈ [1, n – 1].
2. Apskaičiuojame
kP =(x1, y1)
ir
11
r = x1 mod n.
Jei r ≠ 0, tai pereiname prie 3 žingsnio. Priešingu atveju grįžtame prie 1 žingsnio.
3. Apskaičiuojame
k-1 mod n.
4. Apskaičiuojame
s = k − 1 h ~
p + d r mod n.
~
5. Pranešimo p parašas yra sveikųjų skaičių pora (r, s).
Pastabos:
1. 4 žingsnyje vietoj santraukos h(x) standartuose ANSI X9F1 ir IDEE naudojamas santraukos
algoritmas SHA-1.
2. Kai r = 0, s apskaičiavimo rezultatas nepriklauso nuo privataus rakto p.
3. Kai s = 0, tai parašui patikrinti reikalingas skaičius s-1 mod n neegzistuoja.
~
Pranešimo p parašo (r, s) patikrinimo algoritmas viešojo rakto (E, P, n, Q) pagalba:
1. Jei r ir s – sveikieji skaičiai, priklausantys intervalui [1, n – 1], tai pereiname prie 2 žingsnio.
Priešingu atveju tikrinimo rezultatas neigiamas (parašas atmetamas).
2. Apskaičiuojame
w = s − 1 mod n
~
ir h( p ).
3. Apskaičiuojame
u1 = h ~
p w mod n
ir
u2 = r w mod n.
4. Apskaičiuojame
u1P + u2Q = ( x0 , y0 )
ir
v = x0 mod n.
5. Parašas teisingas tik tuo atveju, kai v = r.
12
2. Elektroninių pinigų nesusekamumo analizė
Bankai ir kitos komercinės struktūros atlikdami verslo operacijas naudoja elektroninius
duomenų mainus – EDI (Electronic Data Interchange) ir elektroninius pinigų pervedimus – EFT
(Electronic Funds Transfer). Šiuolaikinėse mokėjimo sistemose visas procesas vyksta nuo
pradžios iki pabaigos skaitmeniniu būdu. Apsaugai užtikrinti ir dokumentų teisėtumui pripažinti
(persiunčiamų elektroninių dokumentų konfidencialumas, informacijos mainų dalyvių
autentifikavimas) naudojamos kriptosistemos su viešuoju raktu dokumentų šifravimui ir
elektroninio parašo formavimui.
Atsižvelgiant į tai, kad tradicinės piniginės kupiūros yra ne kas kita, kaip nuo suklastojimo
apsaugotas dokumentas, yra logiška pereiti prie elektroninių pinigų naudojimo. O apsaugą nuo
suklastojimo gali užtikrinti banko elektroninis parašas, kuris, akivaizdu, yra labiau patikimas,
negu tradiciniai vandens ženklai, metalinės juostos ir t.t.
Atsiskaitant kreditine kortele (8 pav.) visą laiką, kada kortelės savininkas jos pagalba sumoka
už pirkinius, kažkur duomenų bazėje pažymima apie šį įvykį. Surinkę šiuos atskirai
nereikšmingus duomenis, galima surinkti labai daug informacijos apie tam tikrą žmogų. O
pastarasis negali žinoti, kam ir kas žinoma apie jo asmeninį gyvenimą, negali suvaldyti
informacijos tikslumo arba sužinoti, kas gali ją gauti. Reikia sudaryti tokią priėjimo prie
duomenų ir paslaugų sistemą, kurioje kartu su identifikavimo, autentifikavimo ir autorizavimo
uždaviniais yra išspręstas anonimiškumo užtikrinimo uždavinys. Įprasti popieriniai pinigai turi
visas šias savybes. Jei paklausos šaltinis yra prekė, tai pirkėjo pakankamas kupiūrų kiekis ir yra
jo teisė įsigyti prekę. Nors kupiūra ir turi savo unikalų numerį, atsekti kupiūras pagal numerius
beveik neįmanoma. Problema yra tokia: kaip padaryti elektroninius apmokėjimus tokius pat
anoniminius, kaip ir atsiskaitymus paprastais pinigais. Kitaip sakant, kyla elektroninių
dokumentų (pinigų) nesusekamumo užtikrinimo klausimas.
13
Pirkėjas Mokėjimo sistema Pardavėjas
Duomenų apdoro-
jimo centras
Pirkėjas perduoda kortelės rekvizitus arba mokėjimo sistemai (MS) tiesiogiai, arba
pardavėjui, kuris perduoda juos MS, o MS išsiunčia užklausą į mokėjimo sistemos duomenų
apdorojimo centrą (DAC). DAC susisiekia su pirkėjo banko autorizacijos centru, gauna atsakymą
ir persiunčia jį į DAC, kuris savo ruožtu, persiunčia atsakymą pirkėjui ir pardavėjui. Jei
gaunamas leidimas, tai pardavėjas išduoda pirkėjui prekę, o DAC praneša atsiskaitomajam
bankui (AB) duomenis apie atliktą pinigų pervedimą. Po to lėšos iš pirkėjo sąskaitos pirkėjo
banke pervedamos per AB į pardavėjo sąskaitą, esančią pardavėjo banke.
Elektroninių pinigų „tėvu“ galima pavadinti D. Šaumą, firmos DigiCash vykdomąjį direktorių
ir pripažintą specialistą kriptografijos srityje. DigiCash paruošė ir užpatentavo saugią elektroninių
mokėjimų kriptografinę technologiją. Pasirodė informacija apie kompanijos MasterCard
International leidimo gavimą naudoti šią technologiją AS kūrimui – gaminti kreditines korteles su
mikroschemomis, atitinkančias elektroninių mokėjimų EMV (Europay, MasterCard, VISA)
standartą.
Elektroniniai pinigai – tai tik informacija apie esančias lėšas. Galima kitaip apibrėžti
elektroninius pinigus [1]. Elektroniniai pinigai – banko arba kitos komercinės struktūros
piniginiai įsipareigojimai, pateikti elektroniniu pavidalu, pridedant juos išdavusios struktūros
elektroninį parašą ir padengiami, kaip įprastos piniginės lėšos.
Elektroninė kupiūra atrodo apytiksliai taip, kaip parodyta 9 pav. Dokumentą sudaro kupiūros
nominalas ir numeris, o taip pat pirkėjo banko parašas, kuris gaunamas iš jo privataus rakto.
14
Elektroninis parašas apsaugo kupiūrą nuo padirbimo, bet neapsaugo nuo kopijavimo. Kad
elektroninė kupiūra netaptų „aukso gysla“, pirkėjo bankas turi kontroliuoti kiekvieną sandėrį.
Nominalas
100 $
Kupiūros numeris
122383226577229782555
Pirkėjas Pardavėjas
A B
Bankas-emitentas
C
Bankas Bankas
Pav. 10. Atsiskaitymo schema elektroniniais pinigais. Pirkėjas perveda pinigus į banką-emitentą arba
tiesiogiai, arba per banką – sistemos dalyvį. Mainais pirkėjas gauna elektroninius pinigus. Pardavėjas,
gavęs juos atsiskaitant už prekę ir patikrinęs jų tikrumą, išduoda prekę, perveda elektroninius pinigus į
banką-emitentą. Pastarasis perveda pinigines lėšas į pardavėjo sąskaitą.
15
Klientas A (būsimasis pirkėjas), norintis gauti atitinkamą sumą elektroninių pinigų, siunčia
bankui-emitentui, kuriame jis turi sąskaitą, elektroninės kupiūros „pusiau fabrikatą“, turintį
analogišką pavidalą, kaip parodytą 9 pav. Tik pasirašo tą dokumentą pats klientas A. Kadangi A
yra banko klientas, tenai žino jo viešąjį raktą. O tai reiškia, kad bankas gali patikrinti kliento
parašą. Įsitikinę, kad tikrai A užsisakė elektroninius pinigus, bankas pašalina jo parašą, įdeda
savąjį, nuima iš A sąskaitos sumą, lygią kupiūros nominalui ir paskutiniąją nusiunčia A.
Gavęs elektroninę kupiūrą, A gali ją išleisti pats, persiuntęs (arba perdavęs) ją parduotuvėje
mainais į prekę pardavėjui B1, priimančiam elektroninius pinigus, arba persiųsti (arba perduoti) ją
kitam žmogui B2. Kad įvykdyti elektroninės kupiūros perdavimą tarp A ir B, kartu su banku-
emitentu jie turi išeiti į tiesioginį ryšį. Klientas A prieš perduodamas kupiūrą klientui B, ją
pasirašo savo privačiuoju raktu. Gavęs kupiūrą, B patikrina parašą, o vėliau, įsitikinęs jo tikrumu,
jį pašalina ir įdeda savąjį. Po to nusiunčia į banką-emitentą. Bankas patikrina, ar negavo tos
kupiūros anksčiau (apsauga nuo kopijavimo!), t.y. ieško jos numerio kupiūrų sąraše, kuriomis
anksčiau jau buvo atsiskaitoma. Jei banknotu niekas anksčiau nebuvo pasinaudojęs, jo numerį
įrašo į panaudotų kupiūrų sąrašą (jau antrą kartą atsiskaitant jos nepriims!) ir perveda sumą,
lygią elektroninės kupiūros nominalui, į savo kliento B sąskaitą.
Nagrinėta schema kol kas neužtikrina elektroninių mokėjimo priemonių nesusekamumo, nes
leidžia susekti pinigų judėjimą nuo A iki B. Kada klientas A atsiunčia paraišką elektroninės
kupiūros vertei, tarkime, 100 dolerių, bankas atpažįsta kupiūros numerį. Galų gale, kada šia
kupiūra atsiskaito klientas B, bankas sužino, kad A sumokėjo B 100 dolerių. Tokiu būdu, tokia
schema neužtikrina mokėjimų anonimiškumo. Bankas gali surinkti daug informacijos apie savo
klientą: kas, kiek ir kam mokėjo, kiek ir iš ko gavo.
Kad elektroninė kupiūra būtų ekvivalenti to paties nominalo popierinei, D. Šaumas pateikė
aklojo parašo protokolą (blind signature). Jo esmę galima paaiškinti taip [2]. Užsisakant
elektroninę kupiūrą, klientas A sukuria ruošinį, kuriame parašo nominalą ir kupiūros numerį. Po
to įdeda į voką, pagamintą iš kalkės, ir nusiunčia bankui-emitentui. Bankas pasirašo ant voko ir
grąžina klientui A. Atplėšęs voką, klientas A gauna banko pasirašytą kupiūrą. Jei po kiek laiko ši
kupiūra bus pateikta bankui, tai jis privalės ją priimti, nes joje yra banko parašas. Bankas, kaip ir
anksčiau, įrašo kupiūros numerį į sąrašą. Bet jis neturi galimybės sužinoti, nuo ko gauta ši
kupiūra. Kada bankas ją pasirašė, jis negalėjo matyti jos numerio.
Nagrinėsime aklojo parašo pavyzdį, kai naudojama RSA schema. Bankas C išrenka du slaptus
didelius pirminius skaičius p ir q, apskaičiuoja jų sandaugą n = pq, o taip pat suranda e ir d –
atitinkamai banko viešą kC(public) ir slaptą kC(secret) raktus, tokius, kad
16
e d = 1 mod ( p − 1)(q − 1).
Pasirenkama vienos krypties funkcija:
f: Zn → Zn.
Skaičiai n, e ir funkcija f yra viešinami. O raktų porą (e, d) bankas naudoja vieno fiksuoto
nominalo kupiūroms gaminti. Kito nominalo kupiūrai naudojama savo raktų pora.
Elektroninių pinigų pervedimo protokolas naudojantis akląjį parašą:
1. Klientas A pasirenka atsitiktinį skaičių (iš esmės, kupiūros numerį) x ∈ Zn ir apskaičiuoja
f(x).
2. Klientas A inicijuoja aklojo parašo protokolo pradžią, pasirinkdamas atsitiktinį skaičių r ∈
Zn, r ≠ 0. Klientas A apskaičiuoja
y = f ( x ) r e mod n ,
kur re – maskuojantis daugiklis, ir nusiunčia užklausą bankui C.
3. Bankas C pasirašo kupiūrą, apskaičiuodamas
yd mod n,
ir gautą reikšmę
(f (x))d ∙ r mod n
siunčia klientui A.
4. Klientas A „nuima“ maskuojantį daugiklį ir gauna pasirašytą kupiūrą
(x, (f (x))d mod n),
kur
s = (f (x))d mod n
ir yra banko C parašas.
Pastaba. Pilname protokole papildomai naudojami užklausos y formavimo ir kliento A parašo
tikrinimo žingsniai (11 pav.).
Mokėjimo protokolas naudojant elektroninius pinigus:
1. Pirkėjas A perduoda pardavėjui B elektroninę kupiūrą (x, s).
2. Pardavėjas B nusiunčia (x, s) bankui C.
3. Bankas C apskaičiuoja f(x) ir patikrina savo parašą, įsitikindamas lygybės teisingumu
f(x) = se mod n.
4. Bankas C patikrina, ar nebuvo ši kupiūra su duotu numeriu panaudota anksčiau. Ir, jeigu ne,
tai perveda į pardavėjo B sąskaitą sumą, lygią kupiūros nominalui, ir jam praneša apie tai.
17
Pastaba. Pilname protokole papildomai naudojami persiunčiamo dokumento (x, s)
formavimo ir pardavėjo B parašo tikrinimo žingsniai (11 pav.).
Išnagrinėta mokėjimų sistema, dalyvaujant bankui, vadinama centralizuota. Skirtingai nuo
pastarosios autonominė mokėjimų sistema numato, kad pats pardavėjas B, nesikreipdamas į banką
C, patikrina pirkėjo A pateiktų elektroninių pinigų tikrumą. Suprantama, kad bankas tam tikra
prasme rizikuoja, nes naudojamos schemos neužtikrina kliento A piktnaudžiavimo atskleidimo.
Pagrindinė atitinkamų protokolų idėja – bet kokiu atveju identifikuoti pažeidėją.
18
Klientas A
Banko C viešasis Kliento A
PKGA
raktas privatusis raktas
Kupiūros
numeris
Maskuojantis Santraukos
Heš- funkcija
daugiklis funkcija
Užklausos Parašo A
formavimas formavimas
Pasirašyta
Užklausa
užklausa
Banko C elektro-
ninis parašas
Maskuojančio
dau-giklio
nuėmimas
Bankas-emitentas C
Parašo A
patikrinimas
Parašo C
formavimas
Kliento A Banko C
viešasis raktas privatusis raktas
19
Klientas A
Banko C elektro- (pirkėjas)
Kupiūros numeris ninis parašas
Elektroninė kupiūra
Klientas B
Elektroninė kupiūra
(pardavėjas)
Parašo B Kliento B
formavimas privatusis raktas
Bankas-emitentas
Parašo B
C
tikrinimas
Banko C elektro-
Kupiūros numeris ninis parašas
Kupiūros numerio
tikrinimas
b
11 pav. Elektroninių pinigų apyvarta
20
3. Vienos krypties funkcijų naudojimo galimybių tyrimas
pseudoatsitiktinių kodų generatoriuose
Kriptografiškai atsparūs pseudoatsitiktinių kodų generatoriai gali būti sukurti panaudojant
vienos krypties funkcijas. M. Bliumas ir S. Mikali kriptografiškai atsparaus pseudoatsitiktinių
kodų generatoriaus (PKG) pagrindiniam reikalavimui apibrėžti įvedė sąvoką – nenuspėjamumas
(unpredictable). Kriptoanalitikas, žinantis tokio generatoriaus veikimo būdą ir turintis galimybę
analizuoti jo išėjimo seką, bet nežinantis naudojamo inicijuojančio vektoriaus (sinchrosiuntos),
pirmojo bito nustatymui negali pasiūlyti geresnio būdo, kaip burtų metimas.
Teisingi tokie teiginiai:
• Neprognozuojamas kairėn generatorius yra kriptografiškai atsparus;
• Kriptografiškai atsparūs generatoriai egzistuoja tada ir tik tada, kai egzistuoja vienos
krypties funkcijos.
Nagrinėkime, taip vadinamą BBS-generatorių, kurio pagrindas yra Bliumo kriptosistema.
Tegu p ir q – beveik vienodo ilgio du dideli pirminiai skaičiai, ir
p ≡ 3 mod 4, q ≡ 3 mod 4.
~
Tada skaičius n = pq yra vadinamas Bliumo sveikuoju skaičiumi. Tegu Z n* – teigiamų
~
sveikųjų skaičių aibė, mažesnių negu n, kurie nesidalina nei iš p, nei iš q. Tegu QRn – aibės Z n*
~
poaibis, susidarytas iš kvadratinių likinių moduliu n. Aibės Z n* elementų skaičius lygus (p – 1)(q
~
– 1), ir ketvirtąją jų dalį sudaro poaibio QRn elementai. Kiekvienas QRn elementas aibėje Z n* turi
4 skirtingas šaknis, ir tik viena iš jų, vadinama primityviąja šaknimi, priklauso poaibiui QRn.
21
f(x) = x2 mod n
lengvai apskaičiuojama, o pertvarkyti atgal gali tik tas, kas žino paslaptį, t.y. n gali išskaidyti į
daugiklius.
Tegu n – Bliumo sveikasis skaičius.
E. Blium – M. Bliumo – M. Šubo generatorius:
1. Parinkime atsitiktinį skaičių x0 ∈ QRn kaip inicijuojantį vektorių. Tam paimkime atsitiktinį
skaičių x, tokį, kad (x, n) = 1, ir apskaičiuokime
x0 = x2 mod n.
2. Ieškoma ilgio m bitų seka ir bus seka
BBS n, m (x0) = b0b1b2...bi... bm – 1, i = 0, (m − 1),
kur bi – skaičiaus xi jauniausias bitas,
xi + 1 = xi2 mod n.
Šis generatorius yra vertingas tuo, kad žinant n išskaidymą į daugiklius, jis leidžia tiesiogiai
apibrėžti atskirus bitus. Turime:
i
xi = x02 mod n.
t.y. modulinio kėlimo laipsniu dviejų operacijų pagalba, bet kuris skaičius xi gali būti rastas
žinant pradinį vektorių x0 ir indeksą i.
PKG galima sudaryti panaudojant kitą vienos krypties funkciją su paslaptimi, pavyzdžiui,
RSA kriptosistemos funkciją
f(x) = xe mod n.
RSA generatorius:
1. Parinksime atsitiktinį skaičių x0 ∈ Z n* kaip inicijuojantį vektorių.
2. Ieškoma ilgio m bitų seka ir bus seka
RSA n, m (x0) = b0b1b2...bi... bm – 1, i = 0, (m − 1),
kur bi – skaičiaus xi jauniausias bitas,
xi + 1 = xie mod n.
22
4. Tikimybinis šifravimas
Viena iš pseudoatsitiktinių kodų generatorių (PKG) funkcija informacijos kriptografinės
apsaugos sistemose – neapibrėžtumo įtraukimas į apsaugos priemonių darbą. Pavyzdžiui,
tikimybinės erdvės R elementų tikimybinio šifravimo parinkimas
Ek: P × R → C,
kur Ek, k, P, C – atitinkamai šifravimo funkcija, slaptasis raktas, atvirų tekstų erdvė ir šifrotekstų
erdvė. Tikimybinio šifravimo pagrindinė savybė – vienas ir tas pats išeities tekstas gali būti
užšifruotas ne į vieną šifrotekstą.
Terminą tikimybinis šifravimas (Probabilistic Encryption) įvedė Š. Goldvaseris ir S. Mikali.
Jie pasiūlė šifravimo schemą, kurios pagrindas yra BBS-generatorius, formuojantis raktinę seką.
~
Tegu išeities pranešimas p yra m-skilčių bitų seka, x0 – atsitiktinis kvadratinis likinys
moduliu n. Šifravimo funkcija pagal Goldvaser-Mikali schemą turi pavidalą
~
c = (xm, p ⊕ BBS n, m (x0)),
čia xm įtraukiamas į šifrotekstą tam, kad teisėtas gavėjas galėtų jį iššifruoti. Paprasčiausias
iššifravimo algoritmas, šiuo atveju, gali būti pseudoatsitiktinės sekos atstatymas naudojant
rekurentinę lygtį
xi = xi + 1 mod n,
23
u = ( x m mod p ) mod p;
α
v = ( x m mod q ) mod q;
β
pi ri PKG ci
n m n+m
n+m Di k
Ei k n+m
n+m n m
ci pi ri
24
• kriptosistemose su viešuoju raktu įsilaužėlis netenka galimybės apskaičiuoti jį šifravimo
funkcijų reikšmes dominančių tekstų ir lyginti juos su perimtais šifrotekstais;
~
• viešojo teksto pi′ bloko ir jį atitinkančio tikimybinės erdvės elemento ri ilgių santykis
naudojant 12 pav. schemą yra algoritmo patikimumo parametras.
Nagrinėjamos schemos trūkumas tik vienas – šifrotekstas visą laiką ilgesnis, negu jį
atitinkantis viešasis tekstas.
p p
1 1
1-p
Užduotis – perduoti informaciją per kanalą, pavaizduotą 13 pav., kaip įmanoma sparčiau ir
saugiau. Kodavimo teorija siūlo ryšio kanalu perduoti sekas, vadinamas kodiniais žodžiais. Visų
galimų kodinių žodžių sąrašas yra vadinamas kodu. Jis žinomas ir siuntėjui ir informacijos
gavėjui, kurie bendradarbiauja tarpusavyje, tam, kad neutralizuoti klaidas, atsirandančias
perduodant pranešimą.
Pranešimai pateikiami kodiniais žodžiais. Kiekvieną kartą, kai reikia išsiųsti tą ar kitą
pranešimą, per ryšio kanalą išsiunčiamas atitinkamas kodinis žodis, gautas koduojančios
25
priemonės – koderio išėjime. Gavėjas gauna galbūt iškraipytą kodinio žodžio variantą. Po to
dekoduojanti priemonė – dekoderis turi nustatyti, koks žodis buvo išsiųstas, t.y. atstatyti
persiunčiamą pranešimą.
14 pav. parodyta paprasčiausia kodavimo-dekodavimo schema – kodek, kurioje perdavimo
pranešimai yra tik „taip“ (1) ir „ne“ (0) ir yra du atitinkami kodiniai žodžiai 11111 ir 00000. Toks
kodas, kurio kodiniai žodžiai sudaryti iš vieno informacijos dvejetainio simbolio ir keturių
perteklinių, vadinami (5, 1)-kodu. Bendru atveju (n, k)-kodas – tai kodas, sudarytas iš kodinių
žodžių. Vieną kodinį žodį sudaro k informacinių simbolių (ne būtinai dvejetainių) ir n – k
perteklinių ar patikrinimo simbolių.
Galutinis Nusiųstas Gautas Gautas
pranešimas kodinis žodis kodinis žodis pranešimas
„Ne“ 0000 0000 „Ne“
Informacijos Informacijos
Koderis Ryšio kanalas Dekoderis
šaltinis gavėjas
14 pav. Paprasčiausias kodas su klaidų taisymu, sudarytas iš dviejų kodinių žodžių 00000 ir 11111
Sakykime, kad perduodamas pranešimas „ne“, kurį atitinka kodinis žodis 00000. Dėl
atsitiktinės klaidos kanalo priimančioje pusėje gautas žodis 01000. Dekoderis, turėdamas
omenyje mažą klaidų tikimybę, nusprendžia kad iš tikrųjų buvo perduotas kodinis žodis 00000,
kuris atitinka pranešimą „ne“. Bendru atveju, dekoderis išrenka kodinį žodį pagal maksimalaus
tikėtinumo kriterijų, t.y. „labiausiai artimą“ gautai 0 ir 1 sekai.
Nagrinėkime bendrą informacijos perdavimo sistemos schemą (15 pav.). Tegu dvejetainis
pranešimas
a = a1 a2 ... ak
kuris išsiunčiamas per ryšio diskretinį kanalą (DK). Kadangi DK galimos atsitiktinės klaidos, tai
gautas žodis
x ′ = x1′ x2′ ... xn′
e = e1 e2 ... ek , ei = xi ⊕ xi′ , ∀ i = 1, n ,
26
yra klaidų vektorius, ir ei = 0, t.y. i-tasis simbolis yra teisingas su tikimybe 1 – p; ir ei = 1, t.y. i-
tasis simbolis yra klaidingas su tikimybe p. Tokiu būdu, aprašant DK veiksmus, galima teigti, kad
jis iškreipia kodinį žodį x, pridedant prie jo klaidų vektorių e moduliu 2.
DK
a x x' a'
Informacijos Informacijos
šaltinis Koderis Dekoderis gavėjas
Žodžio
x = x1x2...xn
t.y. fiksuotas klaidų vektorius su svoriu 1 labiau tikėtinas, negu fiksuotas klaidų vektorius su
svoriu 2, ir t.t. Todėl dekodavimo principas formuluojamas tokiu būdu: Gautas pranešimas x ′
dekoduojamas į artimiausią, turint omenyje Hamingo atstumą, kodinį žodį. Kitaip sakant,
27
išrenkamas klaidų vektorius su mažiausiu svoriu. O tai reiškia, kad kodas su minimaliu Hamingo
atstumu d gali aptikti d – 1 klaidų arba pataisyti
[(d – 1)/2]
klaidų, kur [x] – didžiausias sveikasis skaičius mažesnis arba lygus x.
Tegu ai – informacijos simboliai, bi – patikrinimo simboliai. Tiesiniuose (n, k)-koduose
pertekliniai (patikrinimo) simboliai parenkami tokiu būdu, kad kodiniai žodžiai
x = x1x2...xn = a1a2...ak b1b2...bn − k
tenkintų lygybę
x1
x2
Η = H x T = 0,
...
xn
kurio patikrinimo skiltys parenkamos tokiu būdu, kad būtų tenkinama lygybė HxT = 0, t.y.
patikrinimo išraiškos turi pavidalą:
s1 = a 2 ⊕ a3 ⊕ a 4 ⊕ b1 = 0;
s 2 = a1 ⊕ a3 ⊕ a 4 ⊕ b2 = 0;
s3 = a1 ⊕ a 2 ⊕ a 4 ⊕ b3 = 0;
s 4 = a1 ⊕ a 2 ⊕ a3 ⊕ b4 = 0.
28
Seka s = s1s2 s3s4 yra vadinama sindromu. Ji priklauso tik nuo klaidų konfigūracijos. Tai
reiškia, kad sindromo analizė leidžia dekoderiui taisyti vienetines klaidas, kadangi kiekviena iš jų
turi savo sindromus.
Tegu x = Ga. Duoto kodo generuojanti matrica G8, 4, kuri leidžia pagal duotąjį pranešimą
suformuoti kodinį žodį, turi pavidalą
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
.
0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
5. 2. Kodavimas ir kriptografija
Kodavimo tikslas yra įtraukti perteklinę informaciją taip, kad, atsiradus klaidoms, būtų
galima atstatyti pranešimą.
Tokiu būdu, kodavimas ir kriptografija turi priešingus tikslus. Kodavimo metu pranešimą
stengiasi pateikti tokiu pavidalu, kad jį perduodant būtų padaryta nedidelis kiekis labiausiai
tikėtinų klaidų. Ta prasme galima laikyti, kad kodavimo metu pranešimo aiškumas padidėja.
Šifravimo metu siekiama sumažinti pranešimo aiškumą, t.y. padaryti jį nesuprantamu įsilaužėliui.
Pranešimą reikia taip pertvarkyti, kad jis būtų apsaugotas nuo įsilaužėlio ir ryšio tinklų klaidų.
Todėl jis pirmiausia užšifruojamas, o po to koduojamas, bet ne atvirkščiai.
Tokio požiūrio klaidingumas parodytas S. A. Osmolovskio darbe [3], kur siūlomi
stochastiniai (n, k, q)-kodai su klaidų taisymu. Teigiama, kad šitų kodų pagrindu bus įmanoma
išspręsti užduotį iš trijų dalių:
• duomenų kriptoapsauga;
• duomenų imitoapsauga;
• apsauga nuo atsitiktinių ryšio kanalo klaidų.
29
5. 3. Stochastiniai (n, k, q)-kodai
Pakeistas DK
e e'
Stochastinis koderis Stochastinis dekoderis
a
30
Pertekliniai (patikrinimo)
simboliai Informaciniai simboliai
Palyginimas
16 pav. Stochastinio kodeko sudarymas: a – duomenų perdavimo kanalo schema; b – klaidų aptikimo
principas
Kodavimo blokas kartu su tiesioginio stochastinio pertvarkymo bloku sudaro stochastinį koderį,
o atvirkščias stochastinio pertvarkymo blokas kartu su dekodavimo bloku – stochastinį dekoderį.
Ryšio kanale ilgio L kodinės sekos iškreipiamos klaidos vektoriumi e su tam tikru klaidų
pasiskirstymu, kurį galima aprašyti Pi tikimybėmis, iš 2L – 1 galimų klaidų e(i), i ∈ [1, 2L – 1].
Ryšio kanaluose, nenaudojančiuose stochastinių pertvarkymų, didesnio dalumo klaidos tikimybė
mažesnė, negu mažesnio dalumo klaidos tikimybė, t.y.
Pi > Pj, kai wt(e(i)) < wt(e(j)).
Pakeistame DK turime pakeistus klaidų vektorius e′ . Kai e ≠ 0, tai kiekviena nenulinė
(
reikšmė e(i′ ) gaunama su vienoda tikimybe Pi′ = 1 / 2 − 1 .
L
)
Teisingi tokie teiginiai [3]:
• pakeistame kanale negalima aptikti visas DK klaidas su vektoriais e, kurio dalumas
mažesnis už minimalų kodinį atstumą d;
31
• kai L = n, klasikinių (n, k)-kodų naudojimas q-tajame kanale (q = 2n) neturi prasmės, kadangi
neaptiktos klaidos tikimybė nepriklauso nuo klaidos savybių, o apibrėžiama tik perteklinių
skilčių skaičiumi; kitais žodžiais, paprastas įrašas vietoje patikrinimo skilčių n – k nulių (16b
pav.) duoda tą patį efektą, kaip ir (n, k)-kodo naudojimas;
• jei L < n, (n, k)-kodas, operuojantis su dvejetainės sekos L ilgio atkarpa kaip su q-taisiais
simboliais (q = 2n), kur k – informacinių simbolių skaičius, o (n, k) – patikrinimo simbolių
skaičius (17 pav.), turi naujas originalias savybes, tarp jų – visada aptinka vienetinę klaidą
(vieno q-tojo simbolio iškreipimą);
• perduotos gavėjui informacijos klaidos tikimybė nepriklauso nuo klaidos pasikartojimo q-tojo
simbolio viduje.
Patikrinti teisingą priėmimą paėmus kodinį bloką su tam tikru nenuliniu etalonu, kurio
reikšmė nėra susijusi su informacinių skilčių reikšmėmis, yra naudinga, kai sprendžiamos tokios
užduotys [3]:
• papildomai patikrinti, ar teisingas anksčiau priimtas kodinis blokas, kuriame nebuvo aptikta
klaida, jeigu kaip etalonas yra naudojama prieš tai einančio bloko informacinės sekos dalis ar
funkcija;
• kontroliuoti pranešimų srauto vientisumą, kai etalonas yra nrb duomenų nepasikartojantis
blokas;
• informacijos kodų padalijimas, skirtas įvairiems gavėjams, jei kiekvienas gavėjas naudoja
savo etaloną.
Stochastinis (n, k, q)-kodas, skirtingai nuo daugumos žinomų kodų, klaidų taisymo režime
gali užtikrinti:
• garantuotą dekodavimo klaidos tikimybę pasikeitus diskretaus kanalo parametrams;
• patikimą atsisakymą nuo dekodavimo, kai neįmanoma ištaisyti klaidos.
Be to, galima tvarkyti koreguojančią kodo savybę, o ir su ja susijusią kodavimo/ dekodavimo
procedūrų spartą. Pasirinkimo galimybė priklauso nuo realaus DK parametrų optimalaus dydžio
k/n.
32
Išeities blokas
L L
a1
ak … a …
i
a
L
q-tasis simbolis, q = 2
b1
ak … ai … a1 br … bj … ak … ai … a1
xn … xi … x1 cn … ci … c1
c
17 pav. Stochastinio (n, k, q)-kodo koderio funkcionavimo principas:
a – išeities blokas a, sudarytas iš k informacinių q-tųjų simbolių; b – kodavimo procedūra ir n-skilčių
kodinio bloko x, sudaryto iš k informacinių ir (n – k) patikrinimo q-tųjų simbolių, gavimas;
c – kiekvieno q-tojo kodinio bloko simbolio stochastinio pertvarkymo procedūra
Kaip buvo anksčiau pažymėta, atvirkštinis stochastinis pertvarkymas turi tokią savybę, kad
funkcijos R –1 rezultatas – klaidos vektorius e, esant pertvarkymo sekos ilgiui L, pertvarkomas su
vienoda tikimybe į bet kurią iš 2L – 1 nenulinių sekų e′ .
Stochastiniai kodai su klaidų ištaisymu sudaromi vadovaujantis teisingai priimtos sekos
lokalizacijos principu, kuris naudoja keletą teiginių iš šiuolaikinės teorijos apie tiesinius
dvejetainius kodus.
5 pavyzdys. Nagrinėkime praeito pavyzdžio Hamingo dvejetainį (8, 4)-kodą su papildomu
patikrinimu ar lyginis ir kodiniu atstumu d = 4, kuris leidžia vienu metu taisyti vieną klaidą ir
aptikti dvi:
33
0 1 1 1 1 0 0 0
1 0 1 1 0 1 0 0
H 8, 4 = .
1 1 0 1 0 0 1 0
1 1 1 0 0 0 0 1
Pasinaudosime taisykle, pagal kurią gaunamos šio kodo perteklinės skiltys, tam, kad
užkoduotume q-tųjų simbolių bloką iš 4-skilčių
a = a1a2a3a4 , ai ∈ [ 0, 2L − 1 ], i = 1, 4 ,
b1 = a 2 ⊕ a3 ⊕ a 4 ;
b2 = a1 ⊕ a3 ⊕ a 4 ;
b3 = a1 ⊕ a2 ⊕ a4 ;
b4 = a1 ⊕ a 2 ⊕ a3 .
Kiekvienas perteklinis q-tasis simbolis yra gaunamas sumuojant panariui moduliu 2
atitinkamus q-tuosius informacinius simbolius.
Kiekvienas iš gautų aštuonių q-tųjų bloko simbolių
x = x1x2 x3 x4 x5 x6 x7 x8 = a1a2a3a4b1b2b3b4
a1 ⊕ a2 ⊕ b1 ⊕ b2 = 0
a2 ⊕ a 3 ⊕ b2 ⊕ b3 = 0
a3 ⊕ a 4 ⊕ b3 ⊕ b4 = 0
a1 ⊕ a3 ⊕ b1 ⊕ b3 = 0
a1 ⊕ a 4 ⊕ b1 ⊕ b4 = 0
a2 ⊕ a 4 ⊕ b2 ⊕ b4 = 0
a4 ⊕ b1 ⊕ b2 ⊕ b3 = 0
a3 ⊕ b1 ⊕ b2 ⊕ b4 = 0
a2 ⊕ b1 ⊕ b3 ⊕ b4 = 0
a1 ⊕ b2 ⊕ b3 ⊕ b4 = 0
a1 ⊕ a 2 ⊕ a3 ⊕ a 4 ⊕ b1 ⊕ b2 ⊕ a3 ⊕ b4 = 0.
34
Dekoduojant tikrinama15 lygybių.
Sakykime, kad simboliai x1(a1) ir x2(a2) yra pakeisti. Tada nei viena iš keturių pirmųjų lygybių
nebus tenkinama, jei tik nesutaps L-skilčių klaidų vektorių e1′ ir e2′ atitinkami simboliai. Iš
tikrųjų, pirmajai išraiškai gauname
a2 ⊕ e2′ ⊕ a3 ⊕ a4 ⊕ b1 = e2′ ≠ 0,
ir t.t.
Tačiau yra teisingos septinta, vienuolikta ir dvylikta išraiškos, kadangi jos neturi pakeistų
simbolių
a3 ⊕ a4 ⊕ b3 ⊕ b4 = 0 ;
a 4 ⊕ b1 ⊕ b2 ⊕ b3 = 0 ;
a3 ⊕ b1 ⊕ b2 ⊕ b4 = 0 .
Kadangi po trijų pateiktų patikrinimo santykių įvykdymo, į juos įeinantys simboliai su kai
kuria tikimybe galima laikyti priimtus teisingai, tai tie santykiai leidžia išaiškinti priimamų
simbolių teisingumą
x3, x4 , x5, x6 , x7 , x8 ( a3 , a 4 , b1 , b2 , b3 , b4 ) .
Iš to seka, kad visi neiškreipti simboliai išaiškinti kaip teisingai priimti arba lokalizuoti.
(8, 4, q)-kodas leidžia ištaisyti dvi klaidas, t.y. jei žinomi 6 teisingi simboliai, tai kitus
simbolius galima atstatyti žinant kitus teisingai priimtus simbolius. Nagrinėjamame pavyzdyje
taisytinos dvi „klaidos“ x1(a1) ir x2(a2), kurias galima išreikšti per žinomus simbolius, pavyzdžiui,
iš pirmosios ir antrosios išraiškų gauname, kad
a2 = a3 ⊕ a4 ⊕ b1 ;
a1 = a3 ⊕ a 4 ⊕ b2 .
Lengvai įsitikiname, kad dviejų simbolių iškreipimas netrukdo lokalizuoti kitus kodo
simbolius.
Pateikto pavyzdžio analizė rodo, kad egzistuoja dekodavimo galimybė be pertekliaus įvedimo
į kiekvieną simbolį. Kodo išraiškų patikrinimą galima nagrinėti kaip „kaukės“ uždėjimą ant kodo
simbolių. Jei per šią kaukę „matosi“ tik neiškreipti simboliai, tai išraiškos teisingos ir šitie
simboliai lokalizuojami. Nagrinėtas kodas leidžia taisyti du klaidingus q-uosius simbolius, kas
viršija maksimalaus tikėtinumo algoritmo gebėjimą taisyti, kuris ištaiso [(d – 1)/2] klaidų. Toks
35
prieštaravimas yra paaiškinamas tuo, kad faktiškai dvi klaidos yra pataisomos tik esant sąlygai
e1 ≠ e2 (nagrinėtam pavyzdžiui) taip, kad galima ištaisyti tik vieną klaidą.
Stochastinio blokinio (n, k, q)-kodo dekodavimo algoritmas (pasikartojimo klaidų t ≤ d –
2 taisymas):
1. Stochastinis atvirkštinis q-tųjų simbolių pertvarkymas.
2. Neiškraipytų q-tųjų simbolių lokalizavimas naudojant 2n–k – 1 (n, k, q)-kodo patikrinimo
sąryšius. Lokalizavimo metu apskaičiuojamas teisingų sąryšių skaičius Nc ir lokalizuotų
simbolių skaičius Nl.
3. Teisingos lokalizacijos sąlygų tikrinimas Nc = 2 r − t * – 1, kur t* = n – Nl, t* ≤ d – 2.
4. Nelokalizuotų simbolių trynimas ir atstatymas.
Pastabos:
1. Patikrinimo sąryšis laikomas teisingai įvykdytu, jei jį sudaro tik neiškreipti simboliai.
2. Simbolis laikomas lokalizuotu, jei jis įeina nors į vieną teisingą sąryšį.
18 pav. parodytas (n, k, q)-kodo dekodavimo algoritmas, kurio patikrinimo matrica atitinka
Hamingo kodą su papildomu lyginumo patikrinimu.
36
Sąryšių patikrinimas
Nc = ?
Ne Ne
Klaidų nėra Nl = 7? Nl = 6?
Taip Taip
Atsisakymas nuo
Vienetinė klaida Dviguba klaida
dekodavimo
kad pertvarkytame DK, kai e ≠ 0, L-skilčių simbolio pertvarkyto klaidos vektoriaus e(′i ) kiekviena
( )
iš nenulinių reikšmių, gaunama su tikimybe Pi ′ = 1/ 2 − 1 , todėl kiekvienos situacijos dekodavimo
L
klaidos pasirodymo tikimybę, galima lengvai apskaičiuoti. Tai reiškia, kad konkrečiu atveju
galima gauti garantuotą informacijos priėmimo tikrumą. Pavyzdžiui, jei DK(kanale) išsikreipia
trys q-tieji simboliai xi, xj, xm, tai dekodavimo klaidos gaunamos tuo atveju, jei
37
Būtinos sąlygos slaptumui ir autentiškumui užtikrinti esant informacijos stochastiniam
kodavimui, yra tokios:
• pertvarkymas R turi būti kriptografiškai atsparus;
• pertvarkymai R ir R –1 turi būti L-skilčių sinchroniški srautiniai kriptoalgoritmai;
• bloke R –1 generuojant srautinio šifro gamas, tokias, kurios buvo aprašytos 2 skyriuje, būtina
naudoti tiesioginį ir atvirkštinį režimus.
38
Operatyvios kontrolės metodai
Struktūriniai Algoritminiai
Kombinuoti metodai
39
3) nesutapimo atveju apsauginis procesorius formuoja klaidos signalą, kuris nutraukia
kompiuterinės sistemos darbą ir inicijuoja atstatymo procedūrą.
Adresas
Nuskaitymas iš
komandų atminties
Klaida
Apsauginis
procesorius
40
atliekamas mikroprogramos algoritmas, tai kontrolinis sekančios MK kodas būtų nustatomas iš
kontrolinio prieš tai einančios MK kodo ir vykdymo įrenginio būklės.
Algoritmo kontrolės metu jis išskaidomas į fragmentus, kiekvienas iš kurių turi vieną įėjimą
ir vieną ar keletą išėjimų. Kiekvieną fragmentą sudaro linijinės atkarpos, kurios apibrėžiamos
kaip maksimalūs nuoseklių komandų rinkiniai, turintys vieną įėjimo tašką ir vieną išėjimo tašką.
Šio komandų rinkinio vykdymas visada pradedamas nuo įėjimo taško ir visada baigiasi išėjimo
taške. Linijinių atkarpų ribos (įėjimo taškai ir išėjimo taškai) nustatomos valdymo perdavimo
komandomis, algoritmo šakų susiliejimo taškais, a taipogi blokais „pradžia“ ir „pabaiga“.
Vietoje algoritmo linijinės atkarpos akto sekos charakteristikos galima naudoti:
• kontrolinę sumą;
• algoritmo veiksmų kiekį;
• CRC-kodą;
• santrauką.
Didžiausią efektą CRC-kodo panaudojimas duoda apsisaugant nuo atsitiktinių programos ir
santraukos operacijos vykdymo klaidų, bei nuo tyčinių algoritmo veiksmų pakeitimų.
Algoritmo veikimo sekos charakteristika gali būti gaunama vienu arba keliais čia išvardintais
būdais:
• nuo komandų arba MK kodų sekos;
• nuo komandų arba MK adresų kodų sekos;
• nuo algoritmo veiksmų numerių;
• nuo kodų specialaus lauko komandos arba MK kontrolinių skilčių kodų sekos;
• nuo sąlygos signalų sekos.
Lengviausia, algoritmo ilgose atkarpose kontrolės metu formuoti patikrinimo sąlygą atskirai,
o perteklinė informacija (etaloniniai kontroliniai kodai), kuri pranešama apsauginiam procesoriui,
taip pat priklauso kiekvienai atskirai algoritmo daliai.
Reikalui esant, perteklinė informacija gali priklausyti tam tikrai algoritmo atkarpų sekai ir
laikyti duomenis apie jų perėjimus tarpusavyje. Šitie duomenys gali būti:
• laikomi apsauginio procesoriaus atmintyje;
• priskirti prie etaloninio kontrolinio kodo;
• netiesioginiu būdu pateikiami programoje arba mikroprogramoje.
Visi žinomi algoritmo atkarpų kontrolės metodai, pagal perteklinės informacijos pranešimo
būdą apsauginiam procesoriui, galima suskirstyti į 3 grupes:
41
• metodai, kurių pagrindas – įterpti etaloninius kontrolinius kodus į programą;
• metodai, kurių pagrindas – saugoti etaloninius kodus apsauginio procesoriaus atmintyje;
• kombinuoti metodai.
Pirmos metodų grupės, numanančios etaloninių kontrolinių kodų įterpimą į komandų žodžių
seką programos atkarpoje, savybės:
• įterpiamas kontrolinis kodas tampa algoritmo atkarpos dalimi, t.y. atkarpa pailgėja;
• programos vykdymo metu kontrolinis kodas perduodamas į duomenų sistemos magistralę be
jokio apsauginio procesoriaus dalyvavimo, tačiau visą laiką yra jo atpažįstamas;
• kontrolinis kodas, perteiktas iš komandų atminties į duomenų magistralę, arba nepriimamas
kontrolinio procesoriaus arba priimamas, bet neiškreipia programos vykdymo rezultatų.
Etaloninių kontrolinių kodų įterpimo vietos gali būti skirtingos. Jie gali būti įterpti algoritmo
pradžioje ir tapti įėjimo taškais. Jie taip pat gali būti patalpinti algoritmo pabaigoje ir tapti išėjimo
taškais. Pagaliau, jie gali atsidurti kažkur algoritmo viduje.
Egzistuoja 3 pagrindiniai signatūrų įterpimo būdai į programą. Procesoriuose su atvira
komandų sistema galima įvesti papildomą pseudokomandą, kurios paskirtis bus signatūros
perdavimas iš atminties į duomenų magistralę. Jeigu tokios galimybės nėra, tai apsauginis
procesorius gali pats kreiptis į atmintį ir gauti įterptą signatūrą. Paprasčiausias sprendimas –
naudoti bet kurios egzistuojančios komandų sistemos perteklių ir retai naudojamas komandas
naudoti kaip pseudokomandas. Įterpta signatūra įjungiama į šias komandas arba kaip betarpiškas
operandas, arba kaip adresas arba postūmis ir, kai yra įvykdoma komanda, išvedama į duomenų
magistralę ir perduodama apsauginiam procesoriui.
Jau sutvarkytos kontroliuojamos programos modifikacija, t.y. jos padalijimas į dalis,
pseudokomandų įterpimas į kontrolinius taškus, signatūrų nustatymas iš komandų kodų ir jų
performavimas į pseudokomandas, įgyvendinamas specialaus PA pagalba.
Ilgų algoritmo dalių, turinčių šakų susiliejimo taškus, kontrolė reikalauja į programos kūną
įterpti ne tik patikrinimo, bet ir taip vadinamas ištiesinančias signatūras, kurios užtikrina šakų
susiliejimo taške, kai teisingai veikia programa, vienintelę etaloninio kontrolinio kodo reikšmę,
kadangi teisingos signatūros reikšmė susiliejimo taške priklauso nuo to, kaip buvo vykdoma
programa. Bendru atveju signatūros, gautos praėjus įvairias trasas, nesutampa.
Antros grupės metodai pagrįsti signatūrų palyginimais, suformuotų iš programos visų žodžių,
su kodiniu etalonu, gaunamu iš apsauginio procesoriaus atminties. Jei gautas kontrolinis kodas
sutampa su etalonine signatūra, nuskaityta apsauginio procesoriaus atminties bloko pagal tą patį
42
adresą, kaip ir programos sekantis žodis, daroma išvada, kad programa vykdoma teisingai (22
pav.). Priešingu atveju suformuojamas klaidos signalas. Tam, kad aprūpintume programų,
turinčių šakų susiliejimo taškus, kodo kontrolę, ir taip aptiktume neteisingus perėjimus iš vieno
taško prie kito, kiekvienam iš taškų suformuojami kodai-identifikatoriai, kurie įrašomi apsauginio
procesoriaus atminties bloke pagal šių taškų adresus. Signatūrų ištiesinimas iki atitinkamo
identifikatoriaus reikšmės įvykdomas apsauginio procesoriaus aparatūra. Šios grupės metodų
privalumai: nesumažinama kontroliuojamos programos sparta, o programos vykdymo klaidos
aptinkamos jau kitame mašininiame cikle.
… …
h(si) si h'(si)
… … …
22 pav. Programos vykdymo kontrolė: ... Si-1 Si Si+1 ... – komandų (arba algoritmo aktų) seka; h(Si) –
etaloninis kontrolinis kodas, priklausantis nuo viso prieš tai buvusio sistemos elgesio (trasos, kurioje buvo
vykdoma programa); h ′ (Si ) – realiai gautas paketo kodas. Jei aptinkami h(Si) ir h ′ (Si ) nesutapimai, tada
fiksuojamas programos vykdymo eigos pažeidimo faktas.
43
23 pav. parodyta apsauginio procesoriaus schema, kai naudojamas kombinuotas metodas,
pagrįstas įterpiant ištiesinančias komandas į programą ir naudojant etaloninių CRC-kodų
atminties blokus.
Duomenys
CRC - generatorius
Klaida
Palyginimo
blokas
Adresas
Atminties blokas
Apsauginiai procesoriai yra kompiuterinių sistemų neatsiejama dalis, kuriose būtinas bet
kurių pažeidimų operatyvus atskleidimas programos vykdymo eigoje. Atrodo, kad nagrinėti
metodai turi perspektyvas juos naudojant kartu su kriptografinėmis apsaugos priemonėmis nuo
taip vadinamų griaunančių programinių poveikių.
44
kad jų analize priverstos užsiiminėti daug kompanijų, iš kurių labiausiai žinoma Briuso Šnajerio
Counterpane Systems.
Apsaugos sistema negali būti saugesnė, negu jos atskiri komponentai. Kitais žodžiais, tam,
kad įveikti apsaugos sistemą, pakanka pralaužti arba naudoti įsilaužant patį nepatikimiausią jos
komponentą. Dažniausiai kriptografinės apsaugos sistemų nepatikimumo priežastys yra (24 pav.):
• žmogiškasis faktorius;
• realizacijos savybės.
Pati nepatikimiausia apsaugos sistemų grandis – žmogus. Tipiškos vartotojų klaidos,
pažeidžiančios visos apsaugos sistemos saugumą:
• savo slaptažodžio įteikimas darbo kolegoms neatidėliotinų darbų pabaigimui;
• pakartotinas slaptažodžių panaudojimas neslaptose sistemose;
• pačių vartotojų slaptažodžių generavimas, slaptažodžių parinkimas pagal atsiminimo
patogumo kriterijų;
• nesavalaikis informavimas apie raktinės informacijos kompromitaciją, pavyzdžiui, apie
intelektualiosios kortos praradimą.
Vis labiau dažnėja tokio tipo atakos, kaip aptarnavimo atsisakymas (denial of service),
provokuojančios vartotoją išjunginėti „stringančią“ apsaugos sistemą sprendžiant neatidėliotinas
užduotis.
Galima paminėti kriptosistemų, susijusių su jų realizavimo savybėmis, tokias nepatikimumo
priežastis:
• neatsparių kriptoalgoritmų naudojimas;
• neteisingas kriptoalgoritmų naudojimas;
• klaidos kriptoalgoritmų realizavime.
Kai kuriais atvejais, ypač realaus laiko sistemose, atsparių algoritmų naudojimas iš principo
neįmanomas dėl jų mažos spartos, todėl naudojami mažiau atsparūs, bet spartūs kriptoalgoritmai.
Dauguma kokybiškos kriptografinės priemonės patenka į eksportinių apribojimų įtaką.
Pavyzdžiui, į JAV uždraustas kriptoalgoritmų, su rakto ilgiu didesniu nei 56 bitai, eksportas.
Visos programinės priemonės, sukurtos JAV ir legaliai eksportuojamos į užsienį, užtikrina
silpnoką kriptografinę apsaugą. Analogiška situacija yra ir Europoje. Pavyzdžiui, egzistuoja
srautinio šifravimo algoritmo A5 dvi versijos – patikima A5/1 ir mažiau atspari A5/2 skirta
eksportui į besivystančias šalis.
45
Kriptosistemų nepatikimumo priežastys
Neatsparių kriptoalgoritmų
panaudojimas
Atsparių kriptoalgoritmų žema
sparta
Klaidos realizuojant
kriptoalgoritmus
Eksporto apribojimai
Neteisingas kriptoalgoritmų
panaudojimas Nuosavų algoritmų naudojimas
Programos klaidos
Nepakankamas rakto ilgis
Nekokybiškas PKG
Apsaugos nebuvimas nuo
griaunančių programinių
poveikių
Kriptoalgoritmo panaudojimas
ne pagal paskirtį
Nesankcionuotų veiksmų
Patikimų santykių modelio operatyvaus aptikimo ir po jų
panaudojimas, skirtingo nuo to, aptikimo apsaugos sistemos
kurio buvo tikimasi veiksmingumo atstatymo
projektuojant sistemą nekokybiškos procedūros
Daugelis PA rengėjų į savo produkciją įdeda nuosavus algoritmus, patys laikydami save
specialistais ir pamiršdami, kad šiuolaikinė kriptografija pagrįsta giliais tyrinėjimais tokiose
46
matematikos srityse, kaip aukštoji algebra, skaičių teorija, informacijos teorija, skaičiavimų
sudėtingumo teorija ir kt. Jei kriptografinių metodų kūrėjai nesinaudoja teoriniais metodais, tai
įsilaužėlių šansai, net visiškai neturint papildomos informacijos apie panaudotą algoritmą, labai
padidėja.
Pagrindinės klaidos daromos naudojant kriptoalgoritmus: pasirenkamas nepakankamas rakto
ilgis, nekokybiška raktų valdymo procedūra, nekokybiškas pseudoatsitiktinių kodų generatorius
arba neteisingas jo inicijavimas ir, pagaliau, kriptoalgoritmų panaudojimas ne pagal paskirtį,
pavyzdžiui, slaptažodžių saugojimas užšifruotame, o ne santraukos pavidale.
Kriptosistemų nepatikimumo priežastis, susijusi su klaidomis realizuojant kriptoalgoritmus,
dėl savo netrivialumo ir įvairumo reikalauja atskiro nagrinėjimo, todėl apsiribosime tik trumpu
pagrindinių problemų išvardijimu.
Patikima apsaugos sistema privalo operatyviai aptikti nesankcionuotus veiksmus galimos
žalos minimizavimui. Sistemos pažeidimų aptikimo atveju turi įsijungti efektyvios sunaikintų
elementų atsistatymo procedūros. Sistema neturi prarasti gyvybingumo net sėkmingos atakos į ją
atveju.
Daugumos „skylių“, esančių PA priežastys, t. y. neaprašytų dokumentacijoje, akivaizdžios.
Visų pirma, gamintojų užmaršumas, kurie produkto suderinimo procese sukuria laikinus
mechanizmus, palengvinančius jo vykdymą, pavyzdžiui, tiesioginį priėjimą prie tvarkomų
programos dalių. Baigus tvarkyti sistemą dalis „skylių“ naikinama, o apie kitas gamintojai
pamiršta arba palieka jas sąmoningai, ypač ankstesnėse produkto versijose, kada ateityje
nusimato jo tobulinimas.
„Skylės“ gali atsirasti dėl programų rašymo technologijos „aukštyn kojomis“, kada
programuotojas iš pradžių rašo vykdomąją programą, pakeičiant numanomas ateityje
paprogrames „slopintuvais“, imituojančiais realias paprogrames arba tiesiog žyminčiais jų
būsimo įterpimo vietą. Labai dažnai šie „slopintuvai“ pasilieka programos galutinėje versijoje.
Arba vėl, dėl užmaršumo priežasties, arba atsižvelgiant į būsimą produkto modifikaciją, arba, jei
rašymo procese išaiškinama, kad kokia nors paprogramė nereikalinga, o pašalinti „slopintuvą“
jau neįmanoma. Tokio „slopintuvo“ aptikimo atveju įsilaužėlis gali pasinaudoti juo prisijungiant
prie programos savo paprogrames.
Trečia „skylių“ priežastis – neteisingas apdorojimas (arba jo nebuvimas) kokių tai
nestandartinių situacijų, kurios gali iškilti veikiant programai: neapibrėžtas duomenų įvedimas,
vartotojų klaidos, blogas veikimas ir t. t. Tokiu atveju įsilaužėlis sistemoje gali dirbtinai sukurti
nestandartines situacijas ir įvykdyti jam reikalingus veiksmus. Pavyzdžiui, jis gali sukelti avarinę
47
programos, veikiančios privilegijuotame režime, pabaigą, perimti valdymą ir pasilikti šiame
privilegijuotame režime.
Pagaliau, žinomi atvejai, kada „liukas“, esantis PA arba aparatūroje – pirmas žingsnis prie
apsaugos sistemos atakos. Programuotojas tyčia palieka jį galutiniame produkte, kad ateityje,
pavyzdžiui, turėtų galimybę modifikuoti informaciją nepastebimai nuo vartotojo ir iššifruotų ją,
nežinant rakto.
Egzistuoja programos, kurių paskirtis ir yra naikinanti veikla: tai kompiuteriniai virusai,
kompiuteriniai sliekai ir programos-žymekliai, tarp paskutiniųjų, savo ruožtu, galima išskirti
logines bombas, Trojos arklius ir t. t. Pagal savo paskirtį jos gavo naikinančių programinių
poveikių (NPP) pavadinimą. Jos gali vykdyti vieną arba keletą žemiau išvardytų veiksmų,
pavojingų apsaugos sistemai:
• nesankcionuotas kopijavimas ir slaptos informacijos gavimas;
• apsaugos sistemos privedimas prie neveiklumo būklės arba jos komponentų sunaikinimas;
• slaptos informacijos sunaikinimas arba modifikavimas;
• slaptos informacijos apdorojimo proceso ir apsaugos priemonių funkcionavimo principų
stebėjimas;
• nuolatinis arba trumpalaikis slaptos informacijos apsaugos laipsnio pakeitimas;
• informacijai perduoti slaptų kanalų sukūrimas;
• darbo režimų, didinančių po apdorojimo pasiliekančių slaptos informacijos fragmentų apimtį,
inicijavimas;
Dar įvairesni NPP įsibrovimo keliai. Galima paminėti tokias priemones, skirtas kovai su NPP,
be kurių bet kuri programinė kriptoalgoritmo realizacija praktiškai neįmanoma:
• priemonės, trukdančios įsibrauti, ir NPP aptikimo priemonės iki programinių produktų
panaudojimo;
• priemonės, aprūpinančios NPP operatyvų aptikimą PA realaus funkcionavimo procese;
• NPP panaikinimo priemonės;
• Priemonės nustatančios ar naujame PA, kurį numatoma panaudoti, yra ar nėra NPP.
Aparatūrą fiziškai lengviau apsaugoti nuo įsibrovimų iš išorės. Kriptomoduliai gali būti
patalpinami į specialius konteinerius, dėl ko neįmanoma pakeisti algoritmo darbą. Integrinės
schemos gali būti dengiamos specialia chemine medžiaga, o bet koks apsauginio sluoksnio
įveikimo bandymas inicijuoja vidinės loginės struktūros susinaikinimą. Tačiau, žinomi ir
aparatinių pakeitimų atvejai.
48
Be to, atsiranda apsaugos nuo egzotiškų atakų problema, taikomų realizacijai intelektualiose
kortose, – laiko analizės ir naudojamo galingumo analizės. Šios atakos pagrįstos faktu, kad
įvairios operacijos, vykstančios mikroprocesoriuje, reikalauja skirtingo laiko, o taip pat įvairaus
galingumo panaudojimo. Šių atakų idėja – analizuojant laikines algoritmo charakteristikas arba
galingumo panaudojimą, galime sudaryti bendrą vykdomų operacijų vaizdą ir net gi apskaičiuoti
jų apytikslius argumentus. Apytikslė įvairių operacijų pažeidžiamumo analizė laikinių
charakteristikų atžvilgiu duoda tokius rezultatus:
• paieška lentelėse – nepažeidžiama laikinėmis atakomis;
• fiksuoti poslinkiai – nepažeidžiami laikinėmis atakomis;
• bulinės operacijos – nepažeidžiamos laikinėmis atakomis;
• sudėtis/atimtis – sunku apsaugoti nuo laikinių atakų;
• sandauga/dalyba –labiausiai pažeidžiamos laikinėms atakoms operacijos;
Atsparumą tokios rūšies atakoms, nukreiptoms ne į kriptoalgoritmą, o į jo realizavimą, irgi
reikia įskaityti. Apsaugą laiko analizės atžvilgiu galima padidinti įvedant papildomas kliūtis.
Sudėtingesnė apsauga yra nuo galingumo analizės. Bet ją galima padidinti įvedus tolydų įvairių
operacijų išsidėstymą pagal kodą, panaudoti specialias „triukšmo“ operacijas, arba, pagaliau,
parinkti kitą mikroprocesorių [4].
Neseniai pradėtos naudoti kriptosistemų aparatūros atakos, pagrįstos elektromagnetinio
spinduliavimo analize ir kitais pašaliniais informacijos šaltiniais.
Ima plėstis taip vadinami „biologiniai“ įsilaužimo metodai, nagrinėjantys kriptosistemas kaip
sudėtingus objektus, atitinkamu būdu reaguojančius į išorinius dirgiklius. Tokio pobūdžio atakos
pagrįstos sistemos elgesio analize po veiklos atsitiktinių ar tyčinių trikdžių.
Nepaisant šiuolaikinės kriptografijos laimėjimų, kriptografinės apsaugos patikimos sistemos
sudarymo užduotis yra kompleksinė. Jinai yra žymiai sudėtingesnė, negu kaip atrodo iš pirmo
žvilgsnio. Patikima apsaugos sistema gali būti sudaryta tik paisant visų išvardintų faktorių.
49
8. Naujų idėjų kriptografijoje analizė
50
• Privatus asmuo gali panorėti užšifruoti savo dienoraštį taip, kad jis galėtų būti dešifruotas
pasibaigus nustatytam laikui.
Šifravimo schema su raktų disponavimu (key-escrow scheme) gali būti realizuota
„galvosūkių“ su laiko užraktu bazėje, tam, kad organizacijos galėtų gauti raktus pranešimui
iššifruoti tik pasibaigus nustatytam laiko periodui. Šiuo metu egzistuoja du pagrindiniai
atskleidimo laike kriptografijos metodai:
• galvosūkių“ su laiko užraktu apskaičiavimo problemos su nuosekliais sprendimo
algoritmais;
• patikimų agentų panaudojimas, kurie įsipareigoja neatskleisti informacijos per nustatytą
laiko tarpą.
Akivaizdu, kad naudojant patikimus agentus atsiranda pasitikėjimo problema, kuri iš dalies
gali būti išspręsta panaudojus paslapties išskaidymo kriptografijos metodą. Procesoriaus
laikas, būtinas „galvosūkio“ sprendimui, priklauso nuo aparatinio aprūpinimo kiekio ir nuo
pasiekimų lygiagretaus paskirstymo skaičiavimų srityje. Toliau bus nagrinėjami abu metodai.
Idėja yra tokia, kad išsprendę „galvosūkį“ gauname slaptąjį raktą užšifruotajam pranešimui
dešifruoti. Kaip buvo minėta aukščiau, „galvosūkio“ sprendimo sunkumas (laikas) priklauso nuo
skaičiavimo resursų kiekio. Todėl, bet kokio „galvosūkio“ pagrindinė užduotis yra išrinkti tokį
algoritmą, kuris negali būti iš principo išlygiagretintas. Panaudojimas kelių lygiagrečiai dirbančių
kompiuterių nepagreitina „galvosūkio“ sprendimo (tam tikra prasme tai analogiška vaiko
išnešiojimui: dvi moterys negali išnešioti to paties vaiko per 4,5 mėnesių). Metodas, sudarytas
panaudojant patikimus agentus, labiau pageidaujamas, kai sprendimas turi būti pateiktas tiksliai
nurodytą laiką.
Būtina pabrėžti, kad siūlomas „galvosūkių“ kūrimo metodas neleidžia gauti sprendimo per
apibrėžtą laiką, o reikalauja nepertraukiamo kompiuterio darbo per nustatytą laiką. Pavyzdžiui,
sprendimas, apskaičiuotas 10-čiai metų, reikalauja nepertraukiamų skaičiavimų per 10 metų.
Akivaizdu, kad sprendimo negaus po 10 metų, jei skaičiavimo procesas buvo paleistas po
penkerių metų po to, kai pranešimas buvo užšifruotas. Todėl, palyginus su patikimais agentais,
nuoseklių skaičiavimų metodas reikalauja didelio resursų kiekio (atlikti nepertraukiamus
skaičiavimus), ir metodą gali aktyviai naudoti sprendžiant paprastus „galvosūkius“ (pavyzdžiui,
kurių atskleidimo laikas būtų mėnuo).
51
Nagrinėkime tokį pavyzdį. Pažymėkime M – pranešimą, kuris turi būti užšifruotas, o S –
kompiuterio našumą (dešifravimai per sekundę). Pranešimo M užšifravimui, kad jis galėtų būti
dešifruotas praėjus T sekundžių, pasirinksime simetrinę kriptosistemą (pavyzdžiui, RC5) ir
užšifruosime pranešimą raktu, kurio ilgis r = lg(2ST) bitų. Išsaugosime kriptogramą ir
sunaikinsime raktą. Jėgos atakos pagalba įmanoma rasti raktą vidutiniškai per T sekundžių.
Pastebėkime, kad Merklis (R. C. Merkle) [7] buvo pirmas, kas pasiūlė duotąjį „galvosūkių“
kūrimo metodą ir apibrėžė tyrimų kryptį kriptografijos su viešuoju raktu srityje.
Minėtas metodas kelia dvi problemas:
• įmanoma lygiagreti jėgos ataka, t.y. naudojant N kompiuterių, ataka pagreitėja N kartų;
• laikas T yra laukiamas dešifravimo laikas; praktikoje šis laikas gali būti ilgesnis arba
trumpesnis, priklausomai nuo to, kokia tvarka tikrinami raktai.
CK = K + a 2t mod n. (5)
Tam pirmiausia apskaičiuoja
52
e = 2t mod φ(n) (6)
ir po to
b = ae mod n. (7)
• Paskelbia „galvosūkį“ kaip parametrų (n, a, t, CK, CM) rinkinį ir ištrina kintamuosius
p ir q, gautus skaičiavimo procese.
8.1.3.„Galvosūkio“ sprendimas
Pagal rakto K sandarą, jis negali būti surastas jėgos atakos pagalba. Todėl pats greičiausias
„galvosūkio“ sprendimo būdas – apskaičiuoti
t
b = a 2 mod n. (8)
Kai žinomas φ(n), tai galima greitai apskaičiuoti e pagal (6) formulę ir po to b pagal
(7) formulę. Tačiau žinoma, kad φ(n) apskaičiavimas irgi sudėtingas uždavinys, kaip ir skaičiaus
n išskaidymas į daugiklius. Todėl, vienintelis žinomas šiuo metu būdas apskaičiuoti b (kai
teisingas parinkti parametrai a, p, q) yra nuoseklus skaičiaus a kėlimas kvadratu (t kartų).
Nors bandymas skaičių n išskaidyti į daugiklius yra alternatyvus sprendimo metodas, bet
esant pakankamai dideliems p ir q toks metodas mažiau efektyvus, negu nuoseklus kėlimas
kvadratu.
Kėlimo kvadratu skaičių t galima kontroliuoti, o iš to seka, kad galima kurti įvairių lygių
sunkumo „galvosūkius“.
Daug svarbiau, kad apskaičiavimo b algoritmas pagal (8) formulę yra nuosekliai įrodomas
(sunkumo teorijoje panašus uždavinys žinomas diskrečios logaritminės problemos pavadinimu).
Kitais žodžiais sakant, lygiagretus b apskaičiavimo algoritmas pagal (8) formulę šiuo metu nėra
žinomas. Todėl kompiuterių naudojamų sprendimui skaičius, šioje situacijoje neturi reikšmės.
Kvantinės kriptografijos tėvu laikomas S. Visneris (S. Wiesner), kuris davė pradžią parašęs
veikalą „Jungtinis kodavimas“ (Conjugate Coding). Tikriausiai, 60-tųjų metų pabaigoje Visnerio
idėjos atrodė per daug „keistos“, todėl jo straipsnis buvo išspausdintas tik 1983 m. [8]. Jame
Visneris parodė, kaip kvantinės fizikos principai gali būti pritaikomi piniginių ženklų – kvantinių
banknotų, kurių neįmanoma padirbti, kūrimui. Kita idėja, išdėstyta Visnerio straipsnyje ir
priklausanti kriptografinių protokolų sričiai, praėjus dešimčiai metų buvo iš naujo atrasta Rabino
(M. O. Rabin) ir pavadinta užmirštantis perdavimas (oblivious transfer).
Kvantinė kriptografija prasidėjo nuo Beneto (C. H. Bennet), asmeniškai pažinojusio Visterį,
ir nuo Brasaru (G. Brassard), kurie suformulavo ir išspausdino naujos mokslinės krypties
pagrindinius teiginius simpoziumo, surengto JAV elektrotechnikos ir radiotechnikos inžinierių
Instituto 1979 m. spalio mėnesį, veikaluose. Pradėjus plačiai aptarinėti Visnerio idėjas buvo
išspausdintas jo straipsnis žurnale Sigact News.
Pradžioje kvantinis-mechaninis metodas informacijos saugojimui buvo suvokiamas kaip
dalykas, kuris priklauso mokslinei fantastikai; technologijos lygis neleido praktiškai realizuoti
idėjas (pavyzdžiui, kvantinio banknoto kūrimui būtina saugoti poliarizuotą fotoną arba dalelę su
1
spinu 2
ilgą laiko tarpą be poliarizacijos įsisavinimo arba praradimo).
Kvantinės fizikos nagrinėjimo objektai yra fotonai – smulkiausios dalelytės, arba kvantai,
šviesos, sudarančios mikroskopinį kintantį elektromagnetinį lauką. Poliarizacijos reiškinys –
elektromagnetinio lauko krypties pakitimas – gerai išnagrinėta šiuolaikinėje fizikoje. Kvantinėje-
mechaninėje sistemoje egzistuoja fotonai su skirtinga poliarizacija. Taigi, jei paprastą šviesą
praleistume per poliarizacijos filtrą, tai pro jį gali praeiti fotonai turintys atitinkamą poliarizaciją.
Išskaidyti fotonus galima dvigubo spindulių lūžio kristalo, pavyzdžiui kalcito, pagalba.
Poliarizuojant statmenos optinės ašies, įeinantis į kristalą fotonas determinuotai bus nukreiptas
paslinktu keliu. Poliarizuojant ties optine ašimi – tiesiu keliu. Taipogi žinoma, kad matavimo
procesas kvantinėje-mechaninėje sistemoje palyginus su klasikine fizika yra neatskiriama pačios
sistemos dalis. Esant tam tikroms sąlygoms fotono matavimo veiksmas keičia jo poliarizaciją, ir
rezultatas turi tikimybinį charakterį. Ši kvantinės-mechaninės sistemos fundamentali savybė
žinoma kaip Geizenbergo neapibrėžtumo principas. Pavyzdžiui, jeigu fotono poliarizacija skiriasi
nuo statmenos arba išilginės (fotono poliarizacijos būsenų labai daug), tai išeinantis fotonas su
tam tikra tikimybe bus nukreiptas vienu iš dviejų galimų kelių. Nekreipiant dėmesio į tai, kad nuo
teorijos gimimo praėjo 70 metų, kvantinės sistemos sąvokos „būsena“ tiksli fizinė prasmė vis dar
aptarinėjama. Nesiginčijama dėl vieno: kvantinės sistemos būsena iki sąveikos su tam tikru
klasikiniu matuokliu (detektoriumi) gali būti panaudota galimų rezultatų tikimybių numatymui,
kurie bus fiksuojami duotu detektoriumi. Panašus metodas žinomas kopengaginės interpretacijos
pavadinimu ir priklauso Nilsui Borui, vienam iš kvantinės teorijos pradininkų.
55
α
I' = I I' = 0 I cos2 α
Toliau matuosime šviesos I' intensyvumą antrojo poliarizatoriaus išėjime. (1) atveju gausime
I' = I, (2) atveju – I' = 0, (3) atveju – I' = I cos2 α.
Mažinkime šviesos pluošto intensyvumą iki tol, kol pro poliarizatorius eis vienetiniai fotonai.
Nagrinėkime paveiksle pavaizduotus vienetinių fotonų atvejus. Fotonai (pirmojo poliarizatoriaus
išėjime) turės tiesioginę poliarizaciją poliarizatoriaus optinės ašies kryptimi. (1) atveju išeities
fotonas visada praeina pro antrąjį poliarizatorių, (2) atveju, atvirkščiai, niekada nepraeina. Kitais
žodžiais sakant, pirmu atveju „vartai“ fotonui atviri (optinės ašys lygiagrečios), antruoju „vartai“
uždaryti (optinės ašys statmenos). (3) atveju fotonas gali praeiti pro antrąjį poliarizatorių, bet gali
ir nepraeiti. Neįmanoma numatyti, kuri iš dviejų alternatyvų (praėjo arba nepraėjo) bus realizuota
konkrečiu fotonu. Jei fotonas praėjo, jo poliarizacija pasikeis – dabar jis turės antrojo
poliarizatoriaus ašies krypties poliarizaciją. Tokiu būdu, fotono likimas (pirmojo poliarizatoriaus
išėjime) iš principo neprognozuojamas – jis gali „dingti“ arba pasirodyti turėdamas naujas
savybes.
56
Tegul turime N fotonų. Jei N pakankamai daug, tai praėjusių fotonų skaičių galima numatyti
su dideliu tikslumu – jis artimas N cos2 α. Kitais žodžiais sakant, atskiro fotono elgesio
neapibrėžtumas derinasi su daugelio fotonų elgesio apibrėžtumu. Egzistuoja apibrėžta tikimybė
praeinant išeities fotonui per antrąjį
N cos2 α sin2 α
2
poliarizatorių, ir ji lygi cos α. α
antrojo poliarizatoriaus ašį. Analogiškai mąstant toliau, darome išvadą, kad po trečiojo
poliarizatoriaus turime N cos2 α sin2 α fotonų, ir jų poliarizacija turi sutapti su trečiojo
poliarizatoriaus ašies kryptimi.
Jei pašalintume vidurinį poliarizatorių, tai po trečiojo poliarizatoriaus neaptiktumo jokių
fotonų. Iš pirmo žvilgsnio, pašalinant vidurinį poliarizatorių, mes gauname geresnes sąlygas
fotonų praėjimui, bet rezultate pasiekiame priešingą efektą.
Žinoma, kad fotonų elgesys paklūsta būsenų superpozicijos principui. Kvantinės sistemos
būsena gaunama kaip bazinių būsenų tiesinė kombinacija, arba superpozicija. Taigi,
poliarizacijos būseną po pirmojo poliarizatoriaus 2 paveiksle galima nagrinėti kaip dviejų bazinių
būsenų, nusakančių dviejų fotonų nepriklausomas poliarizacijas – atitinkamai išilgai (1 būsena su
tikimybe cos2 α) ir skersai (2 būsena) antrojo poliarizatoriaus ašies, superpoziciją. Prieš antrąjį
poliarizatorių fotonas yra dalinai pirmoje ir dalinai antroje būsenoje (pažymėsime, kad žodį
„dalinai“ nereikia suprasti tiesiogiai, tikslesnė interpretacija išplaukia iš matematikos teorijos
įrodymo). Fotono ir poliarizatoriaus sąveikoje vyksta fotono realizacija arba 1 būsenoje, ir tada
jis praeina pro poliarizatorių, arba 2 būsenoje, ir tada jis nepraeina. Konkrečiam fotonui
neįmanoma nusakyti, kokia tiksliai būsena bus realizuota, ar praeis arba nepraeis duotas fotonas
pro poliarizatorių. Analogiškas samprotavimas teisingas ir trečiam poliarizatoriui, kuris praleidžia
fotonus pirmoje būsenoje su tikimybe sin2 α. Todėl, jeigu pašalinti antrąjį poliarizatorių, tai nei
viena fotonų bazinė būsena po pirmojo poliarizatoriaus negali būti realizuota trečiojo
poliarizatoriaus pagalba.
57
Fotono superpozicinė būsena atitinka situacijai, kada fotonas turi potencialių galimybių
apibrėžtą rinkinį. Fotono ir detektoriaus sąveikos rezultate potencialiai galimų alternatyvų
superpozicija, iširimo procese pasikeičia viena realizuota alternatyva. Šio sprendimo veiksmas
yra neatsekamas ir nekontroliuojamas.
58
Šviesos šaltinio
skaidymo aparatas Bobas (gavėjas)
Impulsų šaltinis
1 „Petys“
2 „Petys“
Alisa (siuntėjas)
1 Fotodetektoriai
Alisa generuoja šviesos impulsų iš daug fotonų seką ir perduoda juos į šviesos pluošto
išskaidymo prietaiso įėjimą. Išskaidymas atliekamas su duotais atspindžio ir perdavimo
koeficientais. Impulsų seka iš Alisos skaidymo prietaiso išėjimo per šviesolaidinį kabelį patenka į
fazės moduliatoriaus įėjimą ir po to, pakitus fazei – į Bobo pirmojo skaidymo prietaiso įėjimą.
Impulsų seka iš Alisos fazės moduliatoriaus išėjimo irgi pereina per šviesolaidinį kabelį ir
atkeliauja prie Bobo antrojo skaidymo prietaiso įėjimo. Interferencija nustatoma fazių pakitimais,
atsirandančiais po parametrų nustatymų fazės moduliatoriuose. Be dviejų įėjimų Bobo skaidymo
prietaisas turi du išėjimus – 1 „petį“ ir 2 „petį“.
Alisa Bobas
Fazės nustatymai Bito reikšmė Fazės nustatymai Bito reikšmė
0° 0 0° 0 (1 „petys“)
180° 1 1 (2 „petys“)
0° 0 90° tikimybinis
180° 1 rezultatas
90° 0 0° tikimybinis
270° 1 rezultatas
90° 0 90° 0 (1 „petys“)
270° 1 1 (2 „petys“)
1 lentelė. Subalansuoto interferometro matavimų rezultatai. Informacijos perdavimas įmanomas
tik tada, kai Alisa ir Bobas išrenka vienodą bazę dvejetainės informacijos
kodavimui/dekodavimui.
59
Impulsų pasirodymas viename iš „pečių“ (arba abiejuose iš karto) priklauso nuo nustatytų
moduliatoriuose fazinio pakitimo ir skaidymo prietaiso koeficientų. Subalansuotas
interferometras su lygiais atspindžio ir perdavimo koeficientais užtikrina šviesos impulsų
paskirstymą į lygias proporcijas. Jeigu, pavyzdžiui, Alisos moduliatorius perjungia fazę tarp 0° ir
180°, o fazė Bobo moduliatoriuje nuolat nustatyta 0° (laipsnyje), tai Bobas stebės impulsus 1 ir 2
„pečiuose“ skaidymo prietaiso išėjime. Todėl, galime naudotis tokia dvejetainės informacijos
kodavimo schema: fazės pakitimas 0° = 0 bitų ir fazės pakitimas 180° = 1bitui. Atitinkamai
subalansuotam interferometrui: impulsas „petyje“ 1 = 0 bitų ir impulsas „petyje“ 2 = 1 bitui.
Tarkime,kad Alisos šviesos impulsų šaltinio intensyvumas toks, kad vienam impulsui atitinka
vienas fotonas. Pateikiant vieno fotono impulsą į skaidymo prietaiso įėjimą, impulso dalinimas
neįmanomas. Kitais žodžiais, fotodetektoriai, esantys pirmojo skaidymo prietaiso išėjimuose,
negali suveikti vienu laiku. Esant duotoms sąlygoms vienetinis fotonas atsitiktinai „išsirenka“
vieną iš dviejų kelių, ir „pasirinkimo“ tikimybė priklauso nuo skaidymo prietaiso atspindžio ir
perdavimo koeficientų. Fotonų pasirodymas Bobo skaidymo prietaiso išėjime bus irgi atsitiktinis.
Fotonų elgesio tikimybinę prigimtį skaidymo prietaise galima naudoti atsitiktinių dvejetainių
sekų generavimui. Fazių nustatymų įtaka matavimų rezultatams pateikta 1 lentelėje.
Kodavimo 0°/180° schema nėra vienintelė, egzistuoja labai daug fazių nustatymų,
koduojančių dvejetainę informaciją. Pavyzdžiui, dvejetainės informacijos perdavimas irgi
įmanomas, jei Bobas pasirenka fazės nustatymus 90°, o Alisa perjunginėja fazę tarp 90° ir 270°.
Abi kodavimo schemos pateiktos 1 lentelėje. Pasirinktos kodavimui bazės yra jungtinės. Iš to
seka, jei Alisa pasirenka schemą 0°/180°, o Bobo moduliatorius pastumia fazę 90°, tai bitų seka
Bobo prietaiso išėjime bus atsitiktinė.
Raktų paskirstymo protokolas sudarytas iš tokių etapų:
• Alisa ir Bobas kartu pasirenka kodavimo/dekodavimo schemą (pavyzdžiui, 0°/180° ir
90°/270°). Alisa generuoja raktą atsitiktinių bitų sekos pavidalu. Bito kodavimas vyksta
pasirenkant kodavimo schemą (0°/180° ir 90°/270°) su tikimybe 0.5 ir panaudojant ją
atskiram fotonui – informacijos bito pernešėjui kvantiniame kanale;
• Alisa siunčia fotonų seką Bobui, kuris, savo ruožtu, juos dekoduoja – pasirenka
dekodavimo schemą (0°/180° ir 90°/270°) su tikimybe 0.5 ir panaudoja ją kiekvieno
priimto fotono matavimui;
• pabaigę matuoti, Alisa ir Bobas pereina prie kodavimo/dekodavimo rezultatų viešojo
aptarimo viešajame (nekvantiniame) kanale, pavyzdžiui, tradiciniame
60
telekomunikaciniame kanale. Kadangi įsilaužėlis gali įsiterpti į aptarimus, todėl
informacijos keitimasis turi būti autentiškas – būtinas pranešimo tikrumo įsitikinimo
mechanizmas kaip iš Alisos pusės, taip ir iš Bobo pusės. Aptarimo metu viešajame kanale
Bobas praneša, kokia dekodavimo schema buvo naudojama kiekvieno gaunamo fotono
matavimui ir kokiose pozicijose fotonai buvo nepriimti. Tuo metu jis neatskleidžia
konkrečių informacijos bitų, gautų matavimo procese;
• Alisa palygina Bobo pasirinkimą su savo pasirinkimu ir praneša Bobui (per viešąjį
kanalą), kur jie sutapo. Visi bitai, atitinkantys įvairioms kodavimo/dekodavimo
schemoms, ir taip pat bitai, neaptikti priėmimo metu, išmetami. Rezultate Alisa ir Bobas
turi vienodas atsitiktines rakto bitų sekas;
• įsilaužėlio veiksmai gali suklaidinti atskirų rakto bitų priėmimą. Klaidų aptikimui Alisa ir
Bobas susitaria dėl tam tikro kiekio rakto pozicijų pasirinkimo, apskaičiuoja kontrolines
sumas (bitų suma moduliu 2 pasirinktose pozicijose) ir apsikeičia rezultatais. Esančios
klaidos rodo įsilaužėlio veiksmus. Kaip ir ankstesniame etape, visi panaudoti klaidų
aptikimui bitai išmetami.
Raktų paskirstymo kvantinio protokolo schema pateikta 4 paveiksle.
kvantinis kanalas
L Pasiruošimas Matavimas D
... N, N, Y, N
... 1, 0, 1, 0 ... 0, 0, 1, 1
... N, N, Y, N
Bobas
4 pav. Raktų paskirstymo kvantinio protokolo bendra schema. Siuntėjo ir gavėjo kompiuteriai
valdo atskirų fotonų pasiruošimą ir matavimą – „L“ lazeriu ir „D“ detektoriumi.
Kodavimas/dekodavimas atliekamas Cendero-Macho interferometro pagalba. Rakto suderinimas
vyksta viešajame, nekvantiniame kanale. Pavyzdys parodo vieno rakto bito perdavimą, kuris
gautas suderinus keturių bitų perdavimą.
61
Aprašytas protokolas reikalauja papildomų paaiškinimų. Kokia rakto paslaptingumo sąlyga?
Nagrinėkim protokolą iš įsilaužėlio pusės. Įsilaužėlis turi priėjimą prie kvantinio kanalo, per kurį
perduodami fotonai, viešojo (nekvantinio) kanalo slaptas klausymas irgi neapribotas. Kvantinis ir
viešasis kanalai turi skirtingą fizinę prigimtį. Sakykime, kad įsilaužėlis bando atskleisti slaptąjį
raktą. Tam jis perima fotonus kvantiniame kanale ir analizuoja aptarimą viešajame kanale. Jis
nežino tikros kodavimo schemos, kadangi Alisa atsitiktinai ir nepriklausomai pasirenka vieną iš
galimų dviejų kodavimo schemų kiekvienam perduodamam bitui. Atlikęs neteisingą pasirinkimą,
įsilaužėlis negali nustatyti patį klaidos faktą. Įsilaužėlis priverstas perdavinėti Bobui fotonus,
kadangi žino, kad praleisti perdavimo metu fotonai išmetami. Todėl, pagrindinė įsilaužėlio
užduotis – atspėti kodavimo schemą. Bobas atskirai ir nepriklausomai nuo Alisos pasirenka vieną
iš dviejų galimų dekodavimo schemų kiekvienam priimtam fotonui. O tai reiškia, kad 50% Alisos
perduotų ir Bobo priimtų rakto bitų viešojo aptarimo rezultate bus išimti. Iš 2 lentelės pavyzdžio
seka, kad Alisos ir Bobo pasirinktos kodavimo/dekodavimo schemos tam tikroms pozicijoms
sutampa. Tačiau įsilaužėlis, esantis tarp Alisos ir Bobo, kartais klysta pasirenkant schemą, kas
pakeičia pradinę fotono būseną ir kodavimo schemą. Dėl įsilaužėlio veiksmų atsiranda klaidos.
Klaidos aptinkamos palyginant kontrolines sumas, apskaičiuotas atsitiktinai pasirinktose ir
suderintose pozicijose viešojo aptarimo metu. Ši protokolo fazė vadinama suderinimo faze. Iš
įsilaužėlio strategijos ir jungtinių bazių kodavimui/dekodavimui pasirinkimo gauname, kad 25%
perduotos informacijos bus priimta su klaidomis. Apskritai, jei Alisa, Bobas ir įsilaužėlis
atsitiktinai ir nepriklausomai pasirenka kodavimo/dekodavimo schemą, tai apytiksliai 5/8 bitų bus
dekoduota be klaidų. Tikrai, 5/8 = 2/8 + 1/2 × 6/8, kur 2/8 – tikimybė, kad visi trys pasirinks tą
pačią schemą (schemos dvi, tai ir įvykiai du, kiekvienas įvyksta su tikimybe 1/8), o 6/8 –
atvirkštinio įvykio tikimybė, kurio klaida įvyksta su tikimybe 1/2. Iš 2 lentelės matome, kad bitai
esantys 4,7 ir 10 pozicijose, yra žinomi įsilaužėliui. Sakykime, kad klaidų atskleidimo (su
patikrintų bitų išmetimu) procedūros rezultate visi įsilaužėliui žinomi bitai liko slaptojo rakto
sudėtyje. Iš to seka, kad gautas raktas yra dalinai slaptas. Kaip ištaisyti padėtį? Garantuotai
slaptasis raktas gali būti gautas, jei Alisa ir Bobas apskaičiuos dvejetainės sekos, gautos
suderinimo rezultate, santraukos reikšmę. Akivaizdu, kad siuntėjo ir gavėjo santraukos turi būti
vienodos.
62
Pozicijų numeriai
10 9 8 7 6 5 4 3 2 1
Alisa perduoda
180° 180° 0° 90° 270° 0° 270° 90° 180° 270°
√ √ √ √ √
1 1 0 0 1 0 1 0 1 1
0° 90° 90° 0° 90° 90° 90° 0° 0° 90°
„Slaptas klausimasis“ √ √ √ √ √ √
1 1 0 0 0 1 1 0 1 1
90° 0° 0° 90° 0° 0° 90° 90° 90° 0°
√ √ √ √ √
Bobas priima
1 1 0 0 1 0
– + – + – +
2 lentelė. 10 bitų rakto perdavimo kvantiniame kanale pavyzdys. „√“ simbolis naudojamas bazės
90°/270° žymėjimui, pasirinktas Alisos, Bobo arba įsilaužėlio informacijos bito
kodavimui/dekodavimui. Kadangi 2, 3, 6 ir 9 pozicijose Alisa ir Bobas pasirinko skirtingas bazes,
bitai šiose pozicijose išimami nuo peržiūros (pažymėti simboliu „“). 1, 5 ir 8 pozicijose Alisa ir
Bobas palyginus su įsilaužėliu pasirinko vienodas bazes, o bitai šiose pozicijose (pažymėti
simboliu „+“ yra pretendentai į raktą, tačiau gali būti klaidingi (pozicijose 1 ir 8). Bitai
pozicijose, pažymėti simboliu „–“, yra žinomi įsilaužėliui – atsitiktinai atspėjo teisingą bazę.
Rakto slaptumas naudojant tokį metodą reikalauja daug skaičiavimų atstatant išeities
dvejetainę seką pagal santrauką. Ši protokolo fazė vadinama slaptumo išplėtimo faze. Pavyzdžiui,
viename iš pirmųjų eksperimentų, esant pradiniam rakto ilgiui 105 bitų, laukiamas informacijos
kiekis apie raktą, gautas įsilaužėlio po slaptumo išplėtimo fazės pabaigos, buvo vertinamas kaip
6 × 10 –171 bitų.
Kaip buvo pažymėta anksčiau, būtina užtikrinti visų perduodamų viešojo aptarimo metu
pranešimų autentiškumą. Tai padaryti galima pranešimų autentifikacijos kodo (PAK) pagalba,
apskaičiuojamo siuntėjo ir patikrinamo pranešimų gavėjo. PAK apskaičiavimui ir patikrinimui
siuntėjas ir gavėjas turi dalintis bendru slaptu raktu. Todėl susidaro paradoksali situacija: dėl
slaptojo rakto suderinimo, perduodamo per kvantinį kanalą, Alisa ir Bobas turi žinoti tam tikrą
kitą slaptąjį raktą, būtiną pranešimų autentifikavimui viešajame, nekvantiniame ryšio kanale. Iš
pirmo požiūrio, duotoji sąlyga verčia abejotinomis visas kvantinės kriptografijos vertybes. Tačiau
ne viskas taip blogai, kaip atrodo. Kvantinė kriptografija neišsprendžia iš principo slaptojo kanalo
problemos, bet siūlo kompromisinį sprendimą. Slaptojo rakto paskirstymo „pirmojo“ kanalo
būtinumas lieka. „Pirmojo“ kanalo pagrindinis tikslas – raktų paskirstymo kvantinio protokolo
vykdymas. Po pirmojo slaptojo rakto perdavimo per kvantinį kanalą „pirmojo“ kanalo būtinumas
atpuola. Naujas autentifikacijos raktas gaunamas apskaičiuojant santrauką nuo slaptojo rakto,
perduoto ankstesnio seanso metu ir nuo senojo rakto autentifikacijos. Kadangi autentifikacijai
63
reikalingas slaptasis raktas, tai viešasis aptarimas gali būti konfidencialus – niekas netrukdo
naudoti raktą pranešimo šifravimui viešajame, nekvantiniame kanale. Šifravimas leidžia naudoti
koreguojančius kodus su klaidų taisymu ir padidinti kvantinio kanalo praleidžiamumo savybę –
patikrintų bitų išmetimo būtinumas čia atpuola. Gali būti, raktų paskirstymo kvantinį protokolą
reikėtų priimti ne kaip rakto perdavimo būdą, o kaip bendrą atsitiktinės dvejetainės sekos
generavimo procedūrą.
Nagrinėta įsilaužėlio strategija žinoma perėmimo su perdavimu (intercept/resent strategy)
pavadinimu. Sunkumai atsiranda protokolo praktinėje realizacijoje. Realūs prietaisai – detektoriai
ir moduliatoriai – įneša savo klaidas nepriklausomai nuo įsilaužėlių. Tačiau garantuoto slaptumo
užtikrinimui būtina priimti, kad visos klaidos yra sukeltos įsilaužėlio.
Egzistuoja perdavimo galimybė per kvantinį kanalą atstumu, didesniu negu 30 km. Tam
tikras detektorių patobulinimas padidina atstumą iki 100 km ir daugiau. British Telecom
kompanija pasiūlė gausybę eksperimentinių nagrinėjimų šioje srityje. Raktų paskirstymo
kvantinio protokolo pirmas variantas paskirstyto interferometro su bangos ilgiu 1300 nm
pagrindu užtikrino raktų perdavimą per atstumą didesnį negu 30 km ir 1 Kbitai/s greičiu.
Pademonstruota raktų perdavimo galimybė 20 Kbitai/s ir didesniu greičiu. Pagrindinis praktinės
realizacijos sunkumas yra stabilios poliarizacijos užtikrinimas perduodant šviesolaidiniu kabeliu
per dešimtis kilometrų. Dvigubo spindulių atspindžio efektas, sąlygotas kabelio nevienodų
pluoštų, o taip pat kitų efektų gausumas lemia atsitiktinę poliarizacijos fluktuaciją. Eksperimentų
rezultatai parodė, kad bendru atveju fluktuacijų intervalas pakankamai didelis (dešimtys minučių)
ir, todėl, gali būti kompensuotas. Fluktuacijų kompensavimo uždavinys iš principo yra
išsprendžiamas, tačiau gali sukelti papildomų rūpesčių praktinėje realizacijoje.
Paskirstytas (arba dvigubas) Cendero-Macho inteferometras (3 pav.) yra visų žinomų raktų
paskirstymo kvantinio protokolo prototipas. Interferuojantys impulsai tarp Alisos ir Bobo yra
vienodo užlaikymo. Tačiau Alisos ir Bobo interferometrų parametrai gali būti skirtingi. Tiksliau,
kelio ilgis, kurį nueina impulsai, įvairiuose interferometruose gali būti skirtingas. Todėl,
kokybiškos interferencijos gavimui būtina užtikrinti interferometrų identiškumą ir jų stabilų
darbą perdavimo kvantiniame kanale metu. Be to, tam tikri optiniai komponentai, pavyzdžiui
fazės moduliatoriai, irgi reikalauja poliarizacijos kontrolės pačiame interferometre ir perdavimo
metu. Nurodyti faktoriai daro sudėtingesnę raktų paskirstymo kvantinio protokolo praktinę
realizaciją.
Kvantinė kriptografija tapo tikrove – faktas neginčijamas. Investuojant ir atliekant
papildomus tyrimus galima laukti komercinės sistemos atsiradimo artimiausiais metais. Su
64
globalios informacinės infrastruktūros plėtra, asmeninių elektroninių pinigų ir mokėjimo sistemos
atsiradimu informacijos saugumo klausimai bus nagrinėjami pirmoje eilėje. Akivaizdu, šioje
situacijoje kvantinės kriptografijos galimybes sunku pervertinti. Tačiau įskaitant paskutiniuosius
teorinius rezultatus kvantinė kriptografija gali iš principo įtakoti slaptumo užtikrinimo problemą.
1994 m. Šoras (P. Shor) i AT&T Laboratories parodė, kaip kvantinės mechanikos principai gali
būti panaudoti klasikinių dviejų raktų kriptosistemų atakai, pavyzdžiui kriptosistemos RSA ir
skaitmeninio parašo standarto DSA. Žinoma, kad RSA praktinis kriptoatsparumas priklauso nuo
faktorizavimo daug skaičiavimų reikalaujančio uždavinio – dviejų pirminių skaičių sandaugos
skaidymas į daugiklius. Modulio faktorizavimo pagalba galima atskleisti slaptąjį raktą ir
dešifruoti bet kurį pranešimą, suklastoti skaitmeninį parašą. DSA atakos esmė – diskretinio
logaritmavimo uždavinio efektyvus sprendimas. Šoras pasiūlė faktorizavimo ir diskretinio
logaritmavimo algoritmus kvantiniam kompiuteriui, kurie išsprendžia uždavinius žymiai greičiau,
negu žinomi algoritmai klasikiniam kompiuteriui.
65
Rezultatai ir išvados
• Literatūros šaltinių analizė parodė, kad Bliumo kriptosistemos uždavinys yra primityvių
kvadratinių šaknų moduliu n radimas, kas žymiai padidina BBS-generatoriaus
kriptoatsparumą.
• Stochastinių (n, k, q)-kodų su klaidų taisymu analizė parodė, kad jų pagalba bus įmanoma
išspręsti uždavinį iš trijų dalių (duomenų kriptoapsauga, duomenų imitoapsauga, apsauga nuo
atsitiktinių ryšio kanalo klaidų).
66
Santrauka
67
Summary
68
Literatūros sąrašas
69
Priedas 1
Paskalio programavimo kalba parašytos programos, apskaičiuojančios elipsinės kreivės
E: y2 = x3 + a x + b, a, b ∈ GF(p), taškus virš GF(p) ir k – taškų skaičių kreivėje, tekstas.
program algoritmas;
var a, b, xpirm, ypirm: integer;
p, skait, vard, k, k1, k2, i, j, liam: integer;
x1, y1, x2, y2, x3, y3: integer;
desine, kaire: integer;
x:array[1..100] of integer;
y:array[1..100] of integer;
begin
writeln('-------------------------------------------------------------');
write('Įveskite GF(p) baigtinių elementų skaičių p = ');
readln(p);
writeln;
write(' lygties koeficientą a<p, a = ');
readln(a);
writeln;
write(' lygties koeficientą b<p, b = ');
readln(b);
writeln;
writeln('Turime elipsinę kreivę: y^2=x^3+(',a,')*x+(',b,');');
writeln;
{ Tikriname diskriminantą }
if (4*b*b*b+27*a*a)=0 then
begin
writeln('Su įvestais a ir b lygtis neturi sveikųjų šaknų!');
writeln('Įveskite a ir b');
readln(a, b)
end;
x1:=0;
y1:= x1*x1*x1 + a*x1 + b;
70
writeln;
writeln(' P = (',xpirm,',',ypirm,');');
x[1]:= xpirm; y[1]:= ypirm; { Pirmojo taško koordinatės }
{ Skaičiuojame liamdą: }
if (skait=0) or (vard=0) then liam:=0
else
if (skait mod vard)=0 {Tikrinama, ar liamda sveikasis skaičius }
then liam:=trunc(skait/vard)
else
begin {1}
k:=0;
repeat
skait:= skait + p;
k:= k + 1;
until (skait mod vard)=0;
liam:= trunc(skait/vard);
end; {1}
i:=2;
repeat
begin {5}
begin {4}
begin skait:= y[1]-y[i]; vard:= x[1]-x[i] end;
{Skaičiuojame liamdą}
if (skait=0) or (vard=0) then liam:=0
else
if (skait mod vard)=0 then liam:=trunc(skait/vard)
else
begin {1.1}
k:=0;
repeat
skait:= skait + p;
k:= k + 1;
until (skait mod vard)=0;
liam:= trunc(skait/vard);
end; {1.1}
71
y[i+1]:= (liam*(x[i] - x[i+1]) - y[i]) mod p;
if y[i+1]<0 then y[i+1]:= y[i+1] + p;
end; {4}
{ ------Ar taškas tenkina lygybę?------ }
{---------------------------------------}
writeln;
k1:=i-1;
for i:=2 to k1 do
begin
writeln(' ',i,'P = (',x[i],',',y[i],');');
{writeln;}
end;
writeln(' ',i+1,'P = O (be galo nutolęs taškas);');
writeln;
writeln(' ',i+2,'P = P(',xpirm,',',ypirm,'). k=',i+1);
writeln('--------------------------------');
readln
end.
72
Priedas 2
P = (1,3); P = (0,1);
2P = (26,1); 2P = (8,26);
3P = (11,4); 3P = (10,22);
4P = (28,16); 4P = (22,21);
5P = (30,6); 5P = (17,23);
6P = (10,26); 6P = (19,20);
7P = (25,8); 7P = (13,17);
8P = (15,7); 8P = (23,16);
9P = (29,20); 9P = (12,6);
10P = (9,1); 10P = (28,8);
11P = (23,18); 11P = (5,21);
12P = (27,30); 12P = (11,17);
13P = (21,12); 13P = (7,17);
14P = (13,4); 14P = (21,13);
15P = (0,10); 15P = (4,10);
16P = (17,16); 16P = (3,0);
17P = (7,27); 17P = (4,21);
18P = (8,0); 18P = (21,18);
19P = (7,4); 19P = (7,14);
20P = (17,15); 20P = (11,14);
21P = (0,21); 21P = (5,10);
22P = (13,27); 22P = (28,23);
23P = (21,19); 23P = (12,25);
24P = (27,1); 24P = (23,15);
25P = (23,13); 25P = (13,14);
26P = (9,30); 26P = (19,11);
27P = (29,11); 27P = (17,8);
28P = (15,24); 28P = (22,10);
29P = (25,23); 29P = (10,9);
30P = (10,5); 30P = (8,5);
31P = (30,25); 31P = (0,30);
32P = (28,15); 32P = O (be galo nutoles taskas);
33P = (11,27); 33P = (0, 1);
34P = (26,30); k = 32.
35P = (1,28);
36P = O (be galo nutoles taskas);
37P = P(1,3);
k =36
73
n =19, a = 1, b = 1 n = 29, a = 1, b = 7
P = (0,1); P = (1,3);
2P = (5,6); 2P = (21,3);
3P = (15,3); 3P = (7,26);
4P = (9,13); 4P = (22,18);
5P = (16,3); 5P = (0,6);
6P = (14,2); 6P = (8,18);
7P = (2,7); 7P = (24,14);
8P = (7,16); 8P = (13,19);
9P = (10,2); 9P = (20,20);
10P = (13,11); 10P = (28,11);
11P = (13,8); 11P = (16,28);
12P = (10,17); 12P = (18,17);
13P = (7,3); 13P = (17,6);
14P = (2,12); 14P = (15,27);
15P = (14,17); 15P = (26,8);
16P = (16,16); 16P = (9,7);
17P = (9,6); 17P = (12,6);
18P = (15,16); 18P = (12,23);
19P = (5,13); 19P = (9,22);
20P = (0,18); 20P = (26,21);
21P = O (be galo nutoles taskas); 21P = (15,2);
22P = P(0,1); 22P = (17,23);
k =21. 23P = (18,12);
24P = (16,1);
25P = (28,18);
26P = (20,9);
27P = (13,10);
28P = (24,15);
29P = (8,11);
30P = (0,23);
31P = (22,11);
32P = (7,3);
33P = (21,26);
34P = (1,26);
35P = O (be galo nutoles taskas);
36P = P(1,3);
k =35.
74
n = 29, a = 3, b = 5 n = 37, a = 10, b = 5
P = (1,3); P = (1,4);
2P = (28,28); 2P = (7,14);
3P = (4,20); 3P = (3,5);
4P = (11,8); 4P = (24,3);
5P = (10,7); 5P = (2,25);
6P = (25,25); 6P = (31,32);
7P = (27,7); 7P = (21,2);
8P = (6,23); 8P = (25,28);
9P = (9,23); 9P = (12,22);
10P = (18,27); 10P = (12,15);
11P = (14,23); 11P = (25,9);
12P = (21,22); 12P = (21,35);
13P = (0,11); 13P = (31,5);
14P = (5,0); 14P = (2,12);
15P = (0,18); 15P = (24,34);
16P = (21,7); 16P = (3,32);
17P = (14,6); 17P = (7,23);
18P = (18,2); 18P = (1,33);
19P = (9,6); 19P = O (be galo nutoles taskas);
20P = (6,6); 20P = P(1,4);
21P = (27,22); k =19.
22P = (25,4);
23P = (10,22);
24P = (11,21);
25P = (4,9);
26P = (28,1);
27P = (1,26);
28P = O (be galo nutoles taskas);
29P = P(1,3);
k =28.
75