You are on page 1of 75

VILNIAUS PEDAGOGINIS UNIVERSITETAS

MATEMATIKOS IR INFORMATIKOS FAKULTETAS


INFORMACINIŲ TECHNOLOGIJŲ KATEDRA

Olga Ščuckaja

KRIPTOGRAFINIŲ APSAUGOS METODŲ


ANALIZĖ

Magistro diplominis darbas


(Informatika)

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

Šiuolaikinės visuomenės gyvenimas sunkiai įsivaizduojamas be automatizuotų duomenų


apdorojimo sistemų kasdieninio naudojimo, susieto su informacijos įvedimu, saugojimu,
apdorojimu ir spausdinimu. Viską aprėpianti kompiuterizacija turi ir daugybę problemų. Viena iš
jų yra informacijos apsaugos problema, kurią nagrinėja ir sprendžia kriptografija.
Šiuo metu informacinėse sistemose naudojami skirtingo sudėtingumo ir paskirties
kriptografiniai duomenų apsaugos metodai. Pagrindiniai šiuolaikinės kriptografijos metodai yra:

• elipsinė kriptosistema;
• stochastiniai duomenų perdavimo metodai;
• pseudoatsitiktinių kodų generatorių projektavimo metodai;
• elektroninių mokėjimo sistemų organizavimas naudojant akląjį parašą;
• kvantinė kriptografija.

Kompiuterinių sistemų apsauga seniai tapo savarankiška sritis moksliniuose tyrimuose ir


darbuose. Tačiau, nepaisant šiuolaikinės kriptografijos pasiekimų, neišspręstų problemų
nemažėja. Tai paaiškinama vis greitėjančiais mokslinio-techninio progreso tempais, kurių
rezultatas yra dar naujesnės kompiuterinės technologijos. Jų atsiradimas ne tik pateikia naujas
apsaugos aprūpinimo problemas, bet ir pateikia rodos jau išspręstus klausimus visiškai naujoje
šviesoje.

Darbo tikslas – kriptografinių apsaugos metodų analizė.

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.

1.1. Matematikos pagrindai

G grupe vadinama aibė elementų α, β, γ, ..., turinti šias savybes:

1. Aibės G elementams apibrėžtos dviejų kintamųjų operacijos: α + β = γ arba αβ = γ.


Pirmuoju atveju operaciją vadina sudėtimi, antruoju – daugyba.
2. Aibėje G galioja šios taisyklės:

• pritaikius bet kuriems dviems grupės elementams operacijas, gaunamas elementas


priklausantis šiai grupei (uždarumo savybė);
• bet kuriems trims grupės elementams teisinga: (α + β) + γ = α + (β + γ), jeigu operacija
yra sudėtis, arba (αβ)γ = α(βγ), jeigu operacija yra daugyba (asociatyvumo savybė);
• grupėje egzistuoja vienetinis elementas, kuris žymimas 0 sudėčiai, ir bet kuriam grupės
elementui α teisinga 0 + α = α + 0 = α, arba 1 daugybai, ir bet kuriam grupės elementui α
teisinga 1α = α 1 = α;
• kiekvienas grupės elementas α turi atvirkštinį elementą, kuris žymimas (–α) sudėčiai, ir
α + (–α) = (–α) + α, arba α–1 daugybai, ir α α –1 = α–1α = 1.
Jeigu bet kuriems grupės elementams α, β galioja komutatyvumo dėsnis, t.y. teisinga lygybė
α + β = β + α arba αβ = βα, tada grupė yra komutatyvi arba Abelio grupė.
Grupės elementų skaičius vadinamas grupės eile. Visų nenulinių lauko GF(p) elementų aibė
Z*p sudaro (p – 1) eilės Abelio grupę.
Abelio grupė sudėties operacijos atžvilgiu vadinama aditatyvia Abelio grupe, o Abelio grupė
daugybos operacijos atžvilgiu vadinama multiplikatyvia Abelio grupe.
Tam tikras grupės G poaibis vadinamas pogrupiu, jei jis tenkina visas grupės savybes.

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.

1.2. Elipsinės kreivės taškų grupė

Nagrinėkime elipsinę kreivę E, kuri apibrėžiama lygtimi (1 pav.):


y2 + y = x3 – x2.
Šiai kreivei priklauso tik keturi taškai, kurių koordinatės yra sveikieji skaičiai. Tai yra taškai:
A(0, 0), B(1, –1), C(1, 0), D(0, –1).

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

Sudėties operacijos apibrėžimui elipsinės kreivės taškų grupėje laikysime, kad:

• plokštumoje egzistuoja be galo nutolęs taškas O ∈ E, kurioje susikerta visos vertikalios


tiesės;
• kreivės liestinė lietimo taške P susikerta 2 kartus (šis teiginys tampa suprantamas, jei
prisiminsime, kad liestinė PR yra kirstinės PM (2 pav.) ribinė padėtis, kai taškas M siekia
tašką P).

6
P
R

2 pav. Elipsinės kreivės liestinė


Dabar galima suformuluoti taškų P, Q ∈ E sudėties taisykles:

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

3 pav. Taškų P + Q = T sudėtis elipsinėje kreivėje


Panaudoję šią taisyklę taškų grupei G = {A, B, C, D, O}, gauname:

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

4 pav. Adityvi Abelio grupė {A, B, C, D, O} elipsinėje kreivėje

1.3. Elipsinė kreivė virš GF(p)

Kriptosistemose naudojama lygtis:


y2 = x3 + ax+ b,
kur a, b ∈ GF(p), 4a3 + 27b2 ≠ 0 (mod p), p > 3 – pirminis. Grupė E(GF(p)) sudaryta iš visų
taškų (x, y); x, y ∈ GF(p), tenkinančių lygtį, ir be galo nutolusio taško O. Apibrėžta taškuose iš
E(GF(p)) sudėties operacija gali būti aprašyta tokiu būdu.
Tegu P = (x1, y1) ir Q = (x2, y2). Tada P + Q = (x3, y3),
kur
x3 = λ2 – x1 – x2;
y3 = λ(x1 – x3) – y1,
o

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

5 pav. Elipsinė kreivė, kurios lygtis yra y2 = x3 + x + 1.

9
0 = 9P

8P 6P 4P

3 7P

2P

P 3P 5P

0 1 2 3 4

6 pav. Adityvi grupė E(Z5)

2 pavyzdys. Tegu p = 23. Nagrinėkime elipsinę kreivę E: y2 = x3 + x + 1.


E(GF(p)) sudaryta iš taško O, o taip pat iš taškų:
(0, 1); (0, 22); (1, 7); (1, 16); (3, 10); (3, 13); (4, 0); (5, 4); (5, 19); (6, 4); (6, 19); (7, 11); (7, 12);
(9, 7); (9, 16); (11, 3); (11, 20); (12, 4); (12, 19); (13, 7); (13, 16); (17, 3); (17, 20); (18, 3); (18,
20); (19, 5); (19, 18).
Tegu P = (3, 10) ir Q = (9, 7). Raskime P + Q ir 2P.
Tegu P + Q = (x3, y3), tada
7 − 10 1
λ= = − = 11;
9− 3 2
x3 = 121 – 3 – 9 = 17;
y3 = 11(3 + 6) – 10 = 89 = 20.
Tokiu būdu, P + Q = (17, 20).
2P = P + P = (x3, y3), tada
3⋅ 9 + 1 1
λ = = = 6;
20 4
x3 = 36 – 6 = 30 = 7;
y3 = 6(3 – 7) – 10 = – 24 – 10 = – 11 = 12.
Tokiu būdu, 2P = (7, 12).
10
Visi veiksmai buvo atliekami moduliu 23.
y

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

7 pav. Adityvi grupė E(Z23)

1. 4. ECDSA – Elektroninio parašo algoritmas naudojantis elipsines kreives

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ėjo bankas Pardavėjo bankas


Atsiskaitymo
Pirkėjo sąskaita bankas Pardavėjo sąskaita

8 pav. Atsiskaitymo schema, kai naudojama kreditinė kortelė

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ėjo banko parašas


SETAg19061055XVmu0709197y712197

9 pav. Elektroninė kupiūra


Nagrinėkime mokėjimų elektroniniais pinigais procedūrą (10 pav.).

Pirkėjas Pardavėjas
A B

Bankas-emitentas
C

Bankas Bankas

Pirkėjo sąskaita Pardavėjo sąskaita

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

Kliento B pasirašyta elektroninė


kupiūra

Bankas-emitentas
Parašo B
C
tikrinimas

Banko C elektro-
Kupiūros numeris ninis parašas

Kliento B viešasis Parašo C Banko C privatusis


raktas tikrinimas raktas

Kupiūros numerio
tikrinimas

Sumos, lygios kupiūros nominalui,


pervedimas į kliento B sąskaitą

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.

3 pavyzdys. Jei p = 19, q = 23, turime n = 437. Tada


~* ~* ~*
133 = 19 ∙ 7 ∉ Z 437 , 135 ∈ Z 437 , 139 ∈ Z 437 ;
kartu atsižvelgiant ir į tai, kad neegzistuoja toks sveikasis skaičius a, kad
a2 ≡ 135 mod 437,
o
242 ≡ 139 mod 437,
galima užrašyti:
135 ∉ QR437, 139 ∈ QR437.
Kvadratinės šaknys iš 139 moduliu 437 yra skaičiai 24, 185, 252 ir 413, o 24 – yra
primityvioji kvadratinė šaknis, kadangi
472 ≡ 24 mod 437.
Primityviųjų kvadratinių šaknų moduliu n radimo uždavinys ekvivalentus šito skaičiaus
išskaidymo į daugiklius uždaviniui. Tokiu būdu, gauname vienos krypties funkciją su paslaptimi,
kadangi funkcija

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.

Pagal Oilerio teoremą,


x( p − 1)( q − 1) ≡ 1 mod n,
todėl
i mod ( p − 1)(q − 1)
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,

o vėliau gaunant išeities tekstą pagal formulę


~
p = c ⊕ BBC n, m ( x0 ).

Daugiklių p ir q žinojimas leidžia teisėtam gavėjui iš xm gauti x0, o po to formuoti


pseudoatsitiktinę seką taip pat, kaip tai darė siuntėjas.
x0 apskaičiavimo algoritmas:
1. Naudodami apibendrintą Euklido algoritmą apskaičiuojame sveikuosius skaičius a ir b,
tokius, kad
ap + bq = 1.
2. Apskaičiuojame
m
 p − 1
α =   mod ( p − 1) ;
 4 
m
 q − 1
β =   mod ( q − 1) ;
 4 

23
u = ( x m mod p ) mod p;
α

v = ( x m mod q ) mod q;
β

x0 = ( apv + bqu ) mod n.


Taigi, išnagrinėtos schemos efektyvumas didesnis, negu RSA schemos efektingumas. BBS-
generatoriaus išsami analizė parodė, kad po kiekvienos modulinio kėlimo kvadratu operacijos
galima naudoti apytiksliai log2L skaičiaus xi jaunesniuosius bitus, kur L – modulio n skilčių
skaičius.
Tikimybinio blokinio šifravimo viena iš galimų variantų schema parodyta 12 pav., kur
~
šifravimo funkcijos Ek įėjime suformuojamas „išsiplėtęs“ blokas pi′ , sudarytas iš n-ios eilės
~
atviro teksto pi bloko sujungto su m-ios eilės dvigubu rinkiniu ri gautu pseudoatsitiktiniame
kodų generatoriuje. Užšifravus gauname (n + m)-os eilės šiftoteksto bloką ci. Taigi, užšifravę
duomenų bloką tuo pačiu raktu gauname ne vieną šifroteksto bloką. Iššifruojant dalis bloko ri,
gauto funkcijos Dk išėjime, tiesiog atmetama.
m

pi ri PKG ci

n m n+m

n+m Di k

Ei k n+m

n+m n m

ci pi ri

12 pav. Tikimybinio šifravimo pavyzdys: Ek ir Dk – simetrinės ir asimetrinės kriptosistemos šifravimo


funkcijos.

Galima paminėti tokius tikimybinio šifro privalumus:


• padidėja kriptogramos atsparumas;
• padidėja seansinių raktų naudojimo laikas;
• kokybiško PKG vartojimas leidžia naudojant simetrines kriptosistemas sumažinti šifravimo
skaičiavimų apimtį.

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.

5. Stochastinių duomenų perdavimo metodų analizė


5.1. Pagrindinės kodavimo sąvokos
Kodai reikalingi klaidų aptikimui ir ištaisymui ryšio kanaluose su triukšmu. Sakykime,
perduodame informaciją dvejetainėje sistemoje kanalu, kuriame yra triukšmas (13 pav.).
Paprastai išsiuntę 0, irgi gauna 0, bet kai kada gauna ir 1. Analogiškai, jei išsiunčiamas 1, tai ir
kitoje pusėje įprastais atvejais gauna 1, ir būna labai retai, kada gauna 0. Pavyzdžiui, laikysime,
kad vidutiniškai vienas iš 100 simbolių bus klaidingas. Jei viename ryšio gale perduotas 0, tai 99
atvejais iš 100 kitame ryšio gale bus gautas 0, bet vienu atveju iš 100 kitame ryšio gale gauna 1.
Tokiu būdu, galima tvirtinti, kad su tikimybe p = 1/100 kanale įvyks klaida. Aprašytas modelis
vadinamas dvejetainiu simetriniu kanalu.
0 1-p 0

p p

1 1

1-p

13 pav. Dvejetainis simetrinis kanalas su klaidos tikimybe p, 0 ≤ p ≤ 1 / 2

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

po kodavimo tapo kodiniu žodžiu


x = x1 x2 ... xn ,

kuris išsiunčiamas per ryšio diskretinį kanalą (DK). Kadangi DK galimos atsitiktinės klaidos, tai
gautas žodis
x ′ = x1′ x2′ ... xn′

gali skirtis nuo tikrojo. Tegu

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

15 pav. Ryšio sistema

Hamingo atstumu dist (x, y) tarp dviejų žodžių


x = x1x2...xn ir y = y1 y2... yn

vadinamas pozicijų skaičius, kuriose jie skiriasi. Pavyzdžiui


dist (11100, 01001) = 3;
dist (0312, 0011) = 2.
Vienas iš pagrindinių parametrų yra Hamingo minimalus atstumas d tarp jo bet kurių kodinių
žodžių u ir v, t.y.
d = min { dist ( u, v )}.
u≠ v

Žodžio
x = x1x2...xn

Hamingo svoriu wt (x) vadinamas nenulinių xi skaičius. Pavyzdžiui


wt (10110) = 3;
wt (30123) = 4.
Jei klaidos įvyksta su tikimybe p, tai tam tikram pasirinktam klaidų vektoriui v su svoriu α yra
teisinga
P { e = v } = pα (1 − p )
n− α
.

Kadangi praktikoje p < 1/2 , tai 1 – p > p ir


(1− p) 5 > p(1 − p) 4 > p 2 (1 − p ) > ...,
3

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

kur visos operacijos apskaičiuojamos moduliu 2, o dvejetainė patikrinimo matrica H dydžio


(n – k) × (n – k) turi pavidalą
H = [B|E].
B – yra tam tikra (n – k) × k dydžio fiksuota matrica, o E – vienetinė (n – k) × (n – k) dydžio
matrica. Kitais žodžiais sakant, tiesinis kodas su patikrinimo matrica H sudarytas iš vektorių x,
tokių, kad HxT = 0.

4 pavyzdys. Hamingo (8, 4)-kodui su papildomu lyginumo patikrinimu ir kodiniu atstumu d


= 4 atitinka patikrinimo matrica
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

Pranešimas a = a1a2a3a4 koduojamas į kodinį žodį


x = x1x2 x3 x4 x5 x6 x7 x8 = a1a2a3a4b1b2b3b4 ,

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

S. A. Osmolovskio siūloma kodavimo schema parodyta 16a paveiksle. Dvejetainis


pranešimas išskaidomas į L-skilčių dvejetainius rinkinius – q-ousius simbolius, q = 2L; nL-skilčių
kodinė seka nagrinėjama kaip n-skilčių kodinis blokas, sudarytas iš q-ųjų simbolių, iš kurių k
informaciniai, o n – k pertekliniai. Duomenų perdavimo kanalą sudaro: kodavimo blokas, kuris
pakeičia k simbolių ilgio pradinį bloką į n simbolių ilgio kodinį bloką; tiesioginio stochastinio
pakeitimo blokas, realizuojantis R (Random) funkciją; dvejetainis diskretinis kanalas; atvirkštinio
stochastinio pakeitimo blokas, realizuojantis R – l funkciją; dekodavimo blokas (klaidų suradimo ir
– 1
ištaisymo blokas). Blokai R ir R įvykdo kiekvieno q-tojo simbolio pakeitimą, ir pakeitimo
rezultatas nepriklauso nuo kodinės sekos kitų simbolių pakeitimo.
Dviejų stochastinio pakeitimo blokų, sujungtų diskrečiu ryšio kanalu, visuma sudaro pakeistą
ryšio kanalą – q-tąjį simetrinį kanalą. DK galima aprašyti klaidos vektoriumi e, pakeistą kanalą –
pakeistu klaidos vektoriumi
E = E1E2...En
Klaidų vektoriaus elementas Ei lygus nuliui, jei atitinkantis q-sis simbolis neiškreiptas, o
priešingu atveju lygus vienetui. Šioje schemoje lemiantį vaidmenį vaidina atvirkštinio
stochastinio pakeitimo blokas, kurio užduotis yra, kai Ei = 1, užtikrinti visų i-tojo išėjimo q-tojo
simbolio (q – 1) galimų klaidų vienodą tikimybę.

Pakeistas DK

a x c c' x x' a'


Tiesioginio Atvirkštinio
stochastinio stochastinio
Kodavimo Dekodavimo
pakeitimo pakeitimo
blokas blokas
blokas R blokas R -1

e e'
Stochastinis koderis Stochastinis dekoderis
a

30
Pertekliniai (patikrinimo)
simboliai Informaciniai simboliai

Palyginimas

Kodinio etalono generatorius

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

5. 4. Stochastinis blokinis (n, k, q)-kodas, ištaisantis klaidas

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

Įvesties blokas Išvesties blokas


Kodavimas
(pertekliaus
įnešimas)

b1
ak … ai … a1 br … bj … ak … ai … a1

Perteklinės skiltys Informacinės skiltys b

Įvesties blokas Išvesties blokas


Stochastinis
pertvarkymas
ci = R (xi)

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 ,

ir taisykle, pagal kurią gaunami pertekliniai simboliai b j , j = 1, 4 , b j ∈ [ 0, 2L − 1 ]:

 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

po kodavimo ir prieš dekodavimą praeina atitinkamai tiesioginį ir atvirkštinį pertvarkymą.


Užrašykime patikrinimo santykius, kuriuos pateikia matrica H 8, 4, ir visas tiesines
kombinacijas:
a 2 ⊕ a3 ⊕ a 4 ⊕ b1 = 0
a1 ⊕ a3 ⊕ a 4 ⊕ b2 = 0
a1 ⊕ a 2 ⊕ a 4 ⊕ b3 = 0
a1 ⊕ a 2 ⊕ a3 ⊕ b4 = 0

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,

trečiai išraiškai gauname


a1 ⊕ e1′ ⊕ a2 ⊕ e2′ ⊕ a4 ⊕ b3 = e1′ ⊕ 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 = ?

Nc = 15 Nc = 7 Nc = 3 Kitas Nc

Ne Ne
Klaidų nėra Nl = 7? Nl = 6?

Taip Taip

Atsisakymas nuo
Vienetinė klaida Dviguba klaida
dekodavimo

Klaidos pataisymas Klaidų taisymas

18 pav. (8, 4, q)-kodo dekodavimo algoritmas

Aiškėja anksčiau suformuluoti atvirkštinio stochastinio pertvarkymo reikalavimai. Žinodami,

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

ei′ = e′j , ei′ = e′j = e′m , ei′ ⊕ e ′j ⊕ e′m = 0 ir t. t.

5.5. Kripto- ir imitoapsauga esant stochastiniam kodavimui

Tam, kad išspręstume persiunčiamų pranešimų kripto- ir imitoapsaugos uždavinius,


stochastinis pertvarkymas turi turėti papildomas savybes, be tų, kurios jau buvo paminėtos 5.3
skyriuje.

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.

6. Programų vykdymo kontrolės metodai


Sprendžiant objektų ir kriptografinės apsaugos priemonių funkcionavimo kontrolės
uždavinius galima išskirti du metodus: struktūrinį ir algoritminį (19 pav.).
Pirmuoju atveju, objektas yra nagrinėjamas kaip tipinių mazgų visuma: procesorių, atminties
blokų, skaitliukų, sumatorių ir t.t. Šiuo atveju nagrinėjamos struktūros patikrinamos tradicinėmis
priemonėmis. Antruoju atveju, objektas pateikiamas jo algoritminiu modeliu. Šiuo atveju
tikrinama valdymo signalų arba vykdymo algoritmo veiksmų seka. Metodą, kurio pagrindas yra
algoritmo teisingo vykdymo patikrinimas, reikėtų pripažinti labiau perspektyviu, ta prasme, kad
jis leidžia aptikti klaidas, padarytas ne tik dėl atsitiktinių priežasčių, pavyzdžiui, aparatūros
gedimų, bet ir dėl akivaizdžių tyčinių poveikių.

38
Operatyvios kontrolės metodai

Struktūriniai Algoritminiai

Valdymo būklių kontrolė

Kaimyninių algoritmo aktų teisingo valdymo kontrolė

Ištiesintų algoritmo aktų teisingo valdymo kontrolė

Kontrolinių kodų įterpimas į komandų seką

Etaloninių kontrolinių kodų atminties bloko panaudojimas

Kombinuoti metodai

19 pav. Operatyvios kontrolės metodų klasifikacija

Išskiriami 4 tipai algoritminių defektų:


• komandos dingimas;
• komandos iškreipimas;
• komandos pakeitimas;
• loginių sąlygų klaidingas apskaičiavimas.
Įrenginys, kuris kontroliuoja programos vykdymą, vadinamas apsauginiu procesoriumi
(Watchlog Proccesor). Jo veiksmų seka atrodo taip:
1) apsauginis procesorius naudoja tam tikrą perteklinę informaciją, kuri užtikrina teisingą
algoritmo vykdymą;
2) realios užduoties sprendimo metu sargybinis procesorius renka informaciją apie tikrąją
programos vykdymo eigą ir tikrina ją su pateikta;

39
3) nesutapimo atveju apsauginis procesorius formuoja klaidos signalą, kuris nutraukia
kompiuterinės sistemos darbą ir inicijuoja atstatymo procedūrą.

Adresas

Centrinis Duomenys Komandų


procesorius atmintis

Nuskaitymas iš
komandų atminties

Klaida
Apsauginis
procesorius

20 pav. Programų vykdymo kontrolė panaudojant apsauginį procesorių

Kompiuteris turi du valdymo lygius: mikroprograminį ir programinį. Kiekviename valdymo


lygyje naudojamas savo algoritmas, nustatantis valdančių signalų seką. Mikroprograminiame
lygyje valdymo algoritmas pateiktas kaip mikroprograma, o programiniame – kaip programa.
Kontrolė su apsauginio procesoriaus panaudojimu irgi gali būti vykdoma kaip
mikroprograminiame, taip ir programiniame lygyje.
Kalbant apie kontrolės metodus, sukurtus tikrinti algoritmo vykdymo teisingumą, visų pirma,
reikia pažymėti būtiną sąlygą: programa, realizuojanti algoritmą, neturi modifikuotis savo
vykdymo eigoje.
Pradiniame etape apsauginis procesorius aprūpinamas pertekline informacija. Papildomai turi
būti atsakyta į tokius klausimus:
1. kokia turi būti patikrinimo sąlyga, t. y. išraiška, kuri vykdoma, jei nėra algoritminių defektų?
2. kurioje algoritmo dalyje ši išraiška turi būti patikrinta?
3. kokia yra perteklinė informacija apie algoritmą?
4. kokiu būdu patikrinimo sąlyga ir perteklinė informacija pranešami apsauginiam procesoriui?
Metodai, kontroliuojantys gretimų algoritmo veiksmų vykdymo teisingumą, įprastai
naudojami mikroprograminio valdymo lygyje. Kontrolė vykdoma pagal principą „ankstesnė-
vėlesnė“ kiekvienai porai nuosekliai atliekamų makrokomandų (MK). Perteklinė informacija
(kontrolinis kodas) pridedama prie kiekvienos MK žodžio tokiu būdu, kad, kai yra teisingai

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-1) si-1 h'(si-1)

h(si) si h'(si)

h(si+1) si+1 h'(si+1)

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

Nuskaitymas iš komandų atminties

23 pav. Apsauginio procesoriaus schema

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

7. Kriptosistemų nepatikimumo priežasčių analizė


Šiuo metu informacinėse sistemose naudojami skirtingo sudėtingumo ir paskirties
kriptografiniai duomenų apsaugos metodai. Kriptografiniais metodais apsaugomos valstybinės
paslaptys, užtikrinama elektroninių dokumentų apsauga, užkertami keliai sukčiavimo
bandymams elektroninės prekybos sistemose. Be kriptografijos metodų panaudojimo užtikrinti
reikalaujamą saugumo laipsnį šiuolaikiniame kompiuterizuotame pasaulyje neįmanoma. Su laiku
jos vaidmuo ir reikšmė bus dar didesnė.
Šiuolaikinė kriptografija pateikia visus būtinus algoritmus, metodus ir priemones, kurie
leidžia sudaryti apsaugos sistemą, kurios įsilaužimo išlaidos tokios, kad įsilaužėliui su ribotais
finansiniais ir techniniais ištekliais lieka tik dvi galimybės – pasinaudoti, pirmiausia,
žmogiškaisiais faktoriais, ir antra, konkrečios kriptoalgoritmų ir kriptoprotokolų realizacijos
trūkumais. Būtent tokią išvadą galima padaryti, analizuojant realių sėkmingų atakų į
kriptosistemas pavyzdžius. Žinomi tik vienetiniai įsilaužimo atvejai su išimtinai matematinių
metodų panaudojimu. Tuo pačiu metu įvairių įsilaužimo į realias sistemas pavyzdžių tiek daug,

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

Realizacijos ypatybės Žmogaus faktorius

Neatsparių kriptoalgoritmų
panaudojimas
Atsparių kriptoalgoritmų žema
sparta
Klaidos realizuojant
kriptoalgoritmus
Eksporto apribojimai

Neteisingas kriptoalgoritmų
panaudojimas Nuosavų algoritmų naudojimas

Programos klaidos
Nepakankamas rakto ilgis

Kriptoalgoritmo veikimo laiko


priklausomybė nuo duomenų
Nekokybiškos generavimo,
saugojimo ir paskirstymo
procedūros
„Skylių“ aibė PA

Nekokybiška PKG inicijavimo


procedūra Nekokybiška atsistatymo po
trukdžių procedūra

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

24 pav. Kriptosistemų nepatikimumo priežastys

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ė

8.1. Atskleidimo laike kriptografija


Pranešimo šifravimo uždavinys kriptografijoje nagrinėjamas tokiu būdu, kad gautą
kriptogramą galėtų dešifruoti, kartu ir pats pranešimo siuntėjas, praėjus duotam laiko tarpui.
Įsilaužimas į panašią kriptosistemą laikomas sėkmingu, jei pasiseka dešifruoti pranešimą
anksčiau nustatyto termino. Toks apsaugos būdas, atskleidžiantis slaptą informaciją per nustatytą
laiką, vadinamas atskleidimo laike kriptografija (timed-release crypto). Rivesto (R. Rivest),
Šamiro (A. Shamir) ir Vagnerio (D. A. Wagner) pasiūlyta atskleidimo laike kriptografija [6] gavo
„galvosūkio“ su laiko užraktu pavadinimą (time-lock puzzles). Tokio informacijos apsaugos
metodo įgyvendinimas susijęs, visų pirma, su problemomis, atsirandančiomis „siunčiant“ slaptą
pranešimą į ateitį. Metodas ypatingas tuo, kad palyginus su tradiciniais kriptografijos metodais,
numatančiais siuntėjo pranešimo slaptojo rakto siuntimą gavėjui (simetrinėse kriptosistemose)
arba gavėjo pranešimo autentiško viešojo rakto siuntimas siuntėjui (asimetrinėse
kriptosistemose), slaptasis raktas sunaikinamas iš karto po užšifravimo ir yra nežinomas nei
pranešimo siuntėjui, nei gavėjui. Mej (T. May) buvo pirmasis, kas kreipėsi į Internet bendrovę su
pasiūlymu peržiūrėti panašų uždavinį dėl žmonių lūkesčių, naudojančių kriogeninių depozitarijų
(cryonic suspension) paslaugas. Šiuolaikinės technologijos leidžia „sušaldyti“ žmogaus kūną iki
minimalių organizmo gyvybingumo funkcijų palaikymo lygio. Tokio pobūdžio paslaugos kartais
yra vienintelė viltis sunkiai sergantiems žmonėms. Akivaizdu, kad „sušaldytas“ žmogus yra
nefunkcionalus ir negali būti atsakingas už tam tikrą informaciją. Bet kartu jis turi turėti galimybę
palikti kai kuriuos pavedimus (pavyzdžiui, nustatyti „iššaldymo“ datą), kurie būtų užtikrintai
atlikti praėjus nustatytam laikui. Todėl kriptografiniai metodai, užtikrinantys konfidencialumą,
kai žinomas pranešimo dešifravimo laikas ir slaptasis raktas, leidžia išspręsti duotą uždavinį. Taip
pat žinomi ir kai kurie kiti atskleidimo laike kriptografijos panaudojimai:
• Prekybų dalyvis gali panorėti „užšaldyti“ kainos pasiūlymą tam, kad jis būtų „atšaldytas“
po prekybos sesijos pabaigos;
• Namo šeimininkas nori pasiūlyti nuomininkui galimybę vykdyti apmokėjimus naudojant
užšifruotus elektroninius pinigus su skirtingomis dešifravimo datomis taip, kad
mokėjimas vyktų kiekvieno mėnesio pradžioje;

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.

8.1.1.„Galvosūkių“ su laiko užraktu

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.

8.1.2.„Galvosūkių“ su laiko užraktu kūrimas

Nagrinėkime „galvosūkių“ kūrimo metodą, kai naudojamas kėlimo kvadratu operacijos.


Tarkime, kad Alisa pageidauja užšifruoti pranešimą M panaudojant „galvosūkį“ taip, kad
iššifruoti jį būtų galima per T sekundžių. Tam Alisa
• generuoja modulį
n = pq (1)
kaip dviejų pirminių, atsitiktinai parinktų skaičių p ir q sandaugą, ir apskaičiuoja
φ(n) = (p – 1)(q – 1). (2)
• Po to apskaičiuoja
t = T S, (3)
kur S – kompiuterio, skirto „galvosūkio“ sprendimui, spartumas (kėlimo kvadratu
moduliu n skaičius per sekundę). Generuoja atsitiktinį raktą K simetrinei kriptosistemai,
pavyzdžiui RC5. Raktas turi būti pakankamai ilgas (pavyzdžiui, 160 bitų), tam, kad
išvengtume galimos jėgos atakos (turint omenyje technologijos plėtrą „galvosūkio“
egzistavimo metu).
• Naudoja RC5 pranešimo M užšifravimui raktu K
CM = RC5(K, M). (4)
• Atsitiktinai pasirenka a moduliu n (1 < a < n) ir užšifruoja raktą K

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.

8.2. Kvantinė kriptografija


Slaptojo kanalo kūrimas – principinė problema informacijos apsaugos technologijoje. Iš
tikrųjų, slaptasis kanalas – tai fizinė aplinka, garantuojanti, kad su nustatyta tikimybe nebus
įmanoma nuskaityti ir pakeisti informaciją jos perdavimo metu. Absoliučiai patikimas ir labai
spartus slaptasis kanalas išspręstų konfidencialumo problemą be kriptografijos panaudojimo.
Deja, tradiciniai ryšio kanalai neužtikrina slaptumo dėl savo fizinės kilmės. Tačiau negalima
visiškai atsisakyti slaptojo kanalo perduodant, saugant ir tvarkant konfidencialią informaciją.
Vienas iš pagrindinių kriptografijos plėtros metodų yra adekvačių apsaugos metodų kūrimas
53
esant slaptų kanalų minimaliems kiekiams. Sukūrus dviejų raktų kriptografiją, kuri iš dalies
supaprastino situaciją, visgi slaptas kanalas lieka svarbus paskirstant viešuosius raktus.
Pasirodžius kvantinei kriptografijai, kuri pagrįsta kvantinės mechanikos fundamentaliais
principais, atsirado naujas kelias slapto kanalo problemos sprendimui. Kvantinį-mechaninį
metodą būtina nagrinėti kaip vieną iš pirmųjų bandymų kuriant kanalą ir griežtai teoriškai
grindžiant jo slaptumą.

8.2.1.Kvantinės kriptografijos gimimas

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

Rusijos matematikas A. S. Cholevas pirmasis suvokė, kad fotoną galima naudoti ne


informacijos saugojimui, o perdavimui (Visnerio veikale panaši galimybė irgi buvo nagrinėjama).
Pirmas bandymas išplėsti idėją kriptografijos srityje truputį pakeitė daugkartinio naudojimo
Vernamo šifrą (arba taip vadinamąjį vienkartinį bloknotą). Vėliau Benetas paruošė raktų
paskirstymo kvantinį protokolą, o Brasaras pasiūlė monetos mėtimo kvantinį protokolą [9, 10].
Šiais laikais kvantinė kriptografija intensyviai plėtojama. Paruoštas kvantinis protokolo variantas,
žinomas kaip įrodymas su nulinėmis žiniomis. Ekertas (A. Ekert) pasiūlė raktų paskirstymo
kvantinio protokolo alternatyvų variantą Einšteino-Podolskio-Rozeno efekto (EPR effect) ir Belo
54
teorijos pagrindu. Supaprastintas, bet ne mažiau kriptoatsparus Ekerto protokolo variantas,
pasiūlytas anksčiau Benetu ir Brasaru.
Nuo pirmųjų pasiekimų kvantinės kriptografijos praktinės idėjų realizacijos srityje buvo gauti
įspūdingi rezultatai.

8.2.2.Kvantinės fizikos esmė

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 α

(1) (2) (3)

1 pav. Tyrimas su dviem poliarizatoriais

Kvantinės-mechaninės sistemos tikimybines savybes parodo fizikinio tyrimo pavyzdys, gerai


žinomas klasikinėje optikoje (1 pav.).
Praleiskime šviesos pluoštą pro poliarizatorių, pavyzdžiui turmalino kristalą. Iš kristalo išeis
poliarizuotas šviesos pluoštas; jo poliarizacijos kryptis sutampa su poliarizatoriaus ašies kryptimi.
Pažymėkime raide I – poliarizuoto pluošto intensyvumą. Patalpinkime išeinančio pluošto kelyje
antrąjį poliarizatorių ir nagrinėkime tris atvejus:
(1) antrojo poliarizatoriaus ašis lygiagreti pirmojo ašiai;

(2) antrojo poliarizatoriaus ašis statmena pirmojo ašiai;

(3) antrojo poliarizatoriaus ašis su pirmojo ašimi sudaro kampą α.

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

Pasunkinkime tyrimą: pridėkime


N cos2 α
trečiąjį poliarizatorių, kurio ašis statmena
3
pirmojo poliarizatoriaus ašiai (2 pav.).
Tegu turime N fotonų pirmojo 2
poliarizatoriaus išėjime. Kaip pažymėta 1
aukščiau, antrojo poliarizatoriaus išėjime
turime N cos2 α fotonų, poliarizuotų pagal 2 pav. Trijų poliarizatorių tyrimas

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.

8.2.3.Raktų paskirstymo kvantinis protokolas

Pagal tradiciją, pavadinsime pranešimų siuntėją ir gavėją atitinkamai Alisa ir Bobu.


Raktų paskirstymo tikslas – Alisos ir Bobo aprūpinimas bendru slaptuoju raktu tokiu būdu,
kad įsilaužėlis, slaptai stebėdamas ryšio kanalą, negalėtų atskleisti perduodamą raktą.
Konfidencialumas užtikrinamas informacijos šifravimo/dešifravimo su slaptuoju raktu pagalba.
Ryšių sistemos šiuolaikinių modelių pagrindinė hipotezė numato informacijos perdavimo kanalų
pasyvaus monitoringo galimybę. Pasyvus monitoringas suprantamas kaip kanalų slaptas
klausymas. Kriptoanalizėje panašioms atakoms pažymėti dažnai naudojamas terminas pranešimų
pasyvus perėmimas.
Informacijos perdavimas kvantiniame kanale vykdomas atskirų poliarizuotų fotonų pagalba.
Pavyzdžiui, elementari kvantinė sistema sukurta iš dviejų poliarizacijos būsenų, perduoda
dvejetainę informaciją („1“ bitas – vienos poliarizacijos būsenos fotonas, „0“ bitų – kitos būsenos
fotonas). Pagal neapibrėžtumo principą teoriškai egzistuoja galimybė sudaryti kvantinį kanalą,
kurio būsena keičiasi. Rezultatas gausis atsitiktinis, jeigu išrinktume dvi skirtingas bazes ir vienos
bazės matavimo metodą naudotume matuojant kitos bazės fotonų poliarizaciją. Adekvatus
matavimo metodas leidžia nustatyti vienetinio fotono poliarizacijos būseną. Dvi bazės, turinčios
matavimo rezultatų panašią randomizacijos savybę, vadinamos jungtinėmis.
Nagrinėkime raktų paskirstymo kvantinio protokolo pavyzdį. Schema sudaryta naudojant
interferometrą. Jo veikimo principas: du (arba daugiau) kogerentiniai spinduliai (vienodo
dažnumo ir fazės skirtumų) nueina įvairius kelius ir susitikę viename erdvės taške interferuoja,
t.y. stiprėja, silpnėja arba sunaikina vienas kitą priklausomai nuo fazių santykių, su kuriais jie
ateina į duotąjį tašką. Ryšio kvantinė sistema (supaprastinta schema parodyta 3 pav.) sudaryta
Cendero-Macho išplėsto interferometro pagrindu užtikrina slaptą raktinį informacijos perdavimą
per standartinį šviesolaidinį kabelį 30-ies ir daugiau kilometrų atstumu. Kaip matome iš
paveikslo, vieną interferometro pusę kontroliuoja siuntėjas (Alisa), o kitą – gavėjas (Bobas).

58
Šviesos šaltinio
skaidymo aparatas Bobas (gavėjas)

Impulsų šaltinis

Fazės moduliatorius φ φ Fazės moduliatorius

1 „Petys“

2 „Petys“
Alisa (siuntėjas)
1 Fotodetektoriai

3 pav. Ryšio kvantinė sistema Cendero-Macho interferometro pagrindu

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

 Alisa viešasis kanalas

... N, N, Y, N
 Bobas

... 1, 0, 1, 0 bendras raktas ... 0, 0, 1, 1

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

• Išsiaiškinta, kad elipsinės kriptografijos patikimumas ir kriptoatsparumas pagrįstas ECDLP


užduoties sprendimo sunkumais, kai reikia apskaičiuoti sveikąjį skaičių k pagal žinomus
taškus P ir Q = kP.

• Nustatyta, kad elektroninių dokumentų nesusekamumo užtikrinimo klausimui išspręsti


tinkamiausias yra D.Šaumo aklojo parašo protokolas.

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

• Sprendžiant objektų ir kriptografinės apsaugos priemonių funkcionavimo kontrolės


uždavinius perspektyviausias yra algoritminis metodas, kuris leidžia aptikti klaidas, padarytas
ne tik dėl atsitiktinių priežasčių (pvz. aparatūros gedimų), bet ir dėl įsilaužėlio programinių
poveikių.

• Svarbiausia kriptografinės apsaugos sistemų nepatikimumo priežastis yra žmogiškasis


faktorius.

• Kvantinė kriptografija tampa tikrove. Investuojant ir atliekant papildomus tyrimus galima


laukti komercinės sistemos atsiradimo artimiausiais metais.

66
Santrauka

Šiame darbe nagrinėjami šiuolaikiniai kriptografiniai informacijos apsaugos metodai:


• elipsinė kriptosistema;
• stochastiniai duomenų perdavimo metodai;
• pseudoatsitiktinių kodų generatoriaus projektavimo metodai;
• elektroninių mokėjimo sistemų organizavimas naudojant akląjį parašą;
• kvantinė kriptografija.
Išnagrinėtas kriptografinių apsaugos metodų efektyvumas, patikimumas ir perspektyvos
automatinėse informacijos apdorojimo sistemose.
Priede pateikta 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 ir jų skaičių virš GF(p), tekstas.

67
Summary

In this work we have discussed the following cryptographic protection methods:


• elliptic cryptographic systems;
• stochastic methods of data transmission;
• a method of designing of pseudo-random code generators;
• the organization of electronic payment systems with use of the report blind signatures;
• quantum cryptography.
We have discussed efficiency, reliability of cryptographic methods in the context of
automated data processing. The most attention is given to problems and prospects of these
methods.
In the attachment you can find text of a program which finds points on the elliptic curve
E: y2 = x3 + a x + b, (a, b) ∈ GF(p) written in Pascal.

68
Literatūros sąrašas

1. Афонина С.В. Электронные деньги.СПб.: Питер, 2001.


2. Крупник А. Как продать и получить деньги в Internet (введение в электронную
коммерцию).М.: МикроАрт, 2000.
3. Осмоловский С.А. Стохастические методы передачи данных.М.: Радио и связь, 1991.
4. Jelly Andrey. Криптографический стандарт в новом тысячелетии // BYTE, Россия.
1991.6 июня.
5. Rivest Ronald L., Shamir A., Wagner David A. Time-lock puzzle and timed-release Crypto.
Manuscript, 1996, http://theory.lcs.mit.edu/~rivest/publication.html
6. Mercle R.C. Secure communication over insecure channels // Comm. of the ACM, Apr 1978,
v. 21, № 4, pp. 294-299.
7. Wiesner S. Conjugate coding // Sigact News, v. 15, № 1, pp. 78-88.
8. Bennet C.H., Brassad G. An update on quantum cryptography // Proc. of CRYPTO’84.
Lecture Notes I Comp. Sci. Springer-Verlag, Aug 1984, pp. 475-480.
9. Bennett C.H., Brassad G. Quantum cryptography: Public key distribution and coin tossing //
Proc. of IEEE International Conference on Computers, Systems, and Signal Processing,
Bangalore, India, Dec 1984, pp. 175-179.
10. Nuorodos į publikacijas:
http://stokos.ru/stat1.htm
http://www.intuit.ru/department/security/networksec/11/
http://www.comprice.ru/safe/2004-26.phtml
http://www.racal.ru/rsp/eliptic_curve_cryptography.htm
http://www.osp.ru/os/2002/07-08/010_1.htm
http://ru.wikipedia.org/wiki/Эллиптическая_кривая

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;

{ ------Surandame lygties y^2 = x^3 + a*x + b bazinį tašką------- }

if (trunc( sqrt(y1) )*trunc( sqrt(y1) ) = y1) then


writeln(' Kreivės bazinis taškas yra P = (',x1,',',trunc(sqrt(y1)),');')
else
begin {2}

while ( trunc(sqrt(y1)) * trunc(sqrt(y1)) <> y1 ) do


begin {1}
begin
x1:=x1+1;
y1:= x1*x1*x1 + a*x1 + b
end;
if x1=p then writeln('Ieškomo sveikojo skaičiaus nėra!')
end; {1}
writeln(' Kreivės bazinis taškas yra P = (',x1,',',trunc(sqrt(y1)),');')
end; {2}
xpirm:=x1; ypirm:= trunc(sqrt(y1));
writeln('------------------------------------------------------------');

70
writeln;
writeln(' P = (',xpirm,',',ypirm,');');
x[1]:= xpirm; y[1]:= ypirm; { Pirmojo taško koordinatės }

{ ----------Skaičiuojame dviejų vienodų taškų sumą---------- }

skait:= 3*x[1]*x[1] + a; { Liamdos skaitiklis }


vard:= 2*y[1]; { ir vardiklis }

{ 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}

if liam<0 then liam:= liam + p;

{ Skaičiuojame x[2], y[2] }


x[2]:= (liam*liam - 2*x[1]) mod p;
if x[2]<0 then x[2]:= x[2] + p;
y[2]:= (liam*(x[1] - x[2]) - y[1]) mod p;
if y[2]<0 then y[2]:= y[2] + p;

{ --------Skaičiuojame dviejų skirtingų taškų sumas-------- }

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}

if liam<0 then liam:= liam + p;

{ Skaičiuojame x[i+1], y[i+1] }


x[i+1]:= (liam*liam - x[i] - x[1]) mod p;
if x[i+1]<0 then x[i+1]:= x[i+1] + p;

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ę?------ }

desine:=( x[i]*x[i]*x[i] + a*x[i] +b) mod p;


kaire:=( y[i]*y[i] ) mod p;
if desine=kaire then i:=i+1
else begin x[i]:=xpirm; y[i]:=ypirm end;
end; {5}
until ((x[i]=xpirm) and (y[i]=ypirm));

{---------------------------------------}
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

Praktinės dalies skaičiavimai, parenkant reikšmes n, a ir b.


n = 31, a = 1, b = 7 n = 31, a = 1, b = 1

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.

Atliekant skaičiavimus buvo susidurta su n, a ir b reikšmių parinkimo sunkumais, kad gauti


pakankamą grupės E(GF(p)) taškų kiekį.

75

You might also like