12.02.2015 Views

po 8 prosojnic na eno stran

po 8 prosojnic na eno stran

po 8 prosojnic na eno stran

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

KRIPTOGRAFIJA IN<br />

TEORIJA KODIRANJA<br />

Aleksandar Jurišić<br />

Center za kriptografijo in raču<strong>na</strong>lniško varnost<br />

Politehnika Nova Gorica<br />

http://valjhun.fmf.uni-lj.si/ ∼ ajurisic<br />

9 9 1<br />

6 9 6 1 3 7 5 4 622 0 61477140922254355882905759 147397 2<br />

9 68 5<br />

4 8 1<br />

4 69512093081629822 14 570835693<br />

1 4 7 6<br />

6 2 2 88 3 98 9 62 8 01 3 391<br />

9 9055 1 829<br />

9 451 5 7815154<br />

9 9 1<br />

6 9 6 1 3 7 5 4 622 0 61477140922254355882905759 147397 2<br />

9 68 5<br />

4 8 1<br />

4 69512093081629822 14 570835693<br />

1 4 7 6<br />

6 2 2 88 3 98 9 62 8 01 3 391<br />

9 9055 1 829<br />

9 451 5 7815154<br />

9 9 1<br />

6 9 6 1 3 7 5 4 622 0 61477140922254355882905759 147397 2<br />

9 68 5<br />

4 8 1<br />

4 69512093081629822 14 570835693<br />

1 4 7 6<br />

6 2 2 88 3 98 9 62 8 01 3 391<br />

9 9055 1 829<br />

9 451 5 7815154<br />

Uvod Pametne kartice in jav<strong>na</strong> kriptografija . 1<br />

1. Klasič<strong>na</strong> kriptografija . . . . . . . . . . 45<br />

2. Shannonova teorija . . . . . . . . . . . 96<br />

3. Simetrični kriptosistemi . . . . . . . . 136<br />

4. RSA sistem in faktorizacija . . . . . . . 204<br />

5. Drugi javni kriptosistemi . . . . . . . . 301<br />

6. Sheme za digitalne <strong>po</strong>dpise . . . . . . . 391<br />

7. Zgoščevalne funkcije . . . . . . . . . . 459<br />

8. Upravljanje ključev . . . . . . . . . . 519<br />

9. Identifikacijske sheme . . . . . . . . . 614<br />

10. Kode za overjanje . . . . . . . . . . . 648<br />

11. Sheme za deljenje skrivnosti . . . . . . . 710<br />

21. Teorija kodiranja . . . . . . . . . . . 777<br />

12. Generator psevdo-<strong>na</strong>ključnih števil . . . . 850<br />

13. Dokazi brez razkritja z<strong>na</strong>nja . . . . . . . 877<br />

Priloga A Gostota praštevil . . . . . 912-943<br />

Uvod<br />

Odkar so ljudje pričeli komunicirati,<br />

pa <strong>na</strong>j si bo to preko govora, pisave, radija,<br />

telefo<strong>na</strong>, televizije ali raču<strong>na</strong>lnikov,<br />

so želeli tudi skrivati vsebino svojih s<strong>po</strong>ročil.<br />

Ta nuja, oziroma že kar obsed<strong>eno</strong>st<br />

<strong>po</strong> tajnosti, je imela dramatičen vpliv<br />

<strong>na</strong> vojne, mo<strong>na</strong>rhije in seveda tudi<br />

<strong>na</strong> individual<strong>na</strong> življenja.<br />

Vladarji in generali so odvisni od uspešne<br />

in učinkovite komunikacije že tisočletja,<br />

hkrati pa se zavedajo <strong>po</strong>sledic, v primeru,<br />

če njihova s<strong>po</strong>ročila pridejo v <strong>na</strong>pačne roke,<br />

izdajo dragocene skrivnosti rivalom ali<br />

odkrijejo vitalne informacije <strong>na</strong>sprotnikom.<br />

Danes vse to velja tudi za moder<strong>na</strong> vodstva<br />

uspešnih <strong>po</strong>djetij in tako <strong>po</strong>staja<br />

“informacijska/raču<strong>na</strong>lniška varnost”<br />

<strong>eno</strong> izmed <strong>na</strong>jbolj <strong>po</strong>membnih gesel<br />

informacijske dobe.<br />

Aleksandar Jurišić 1<br />

Aleksandar Jurišić 2<br />

Aleksandar Jurišić 1<br />

Aleksandar Jurišić 2<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Vlade, industrija ter <strong>po</strong>samezniki,<br />

vsi hranijo informacije v digitalni obliki.<br />

Ta medij <strong>na</strong>m omogoča številne prednosti<br />

pred fizičnimi oblikami:<br />

- je zelo kompakten,<br />

- pr<strong>eno</strong>s je takorekoč trenuten,<br />

hkrati pa je omogočen tudi<br />

- organiziran dostop do raznovrstnih <strong>po</strong>datkovnih baz.<br />

Z razvojem<br />

- telekomunikacij,<br />

- raču<strong>na</strong>lniških omrežij in<br />

- obdelovanja informacij<br />

pa je precej lažje prestreči in spremeniti<br />

digitalno (elektronsko) informacijo kot pa<br />

njenega papirnega predhodnika.<br />

Zato so se <strong>po</strong>večale zahteve <strong>po</strong> varnosti.<br />

Informacijska in raču<strong>na</strong>lniška varnost<br />

opisuje vse preventivne <strong>po</strong>stopke in sredstva<br />

s katerimi preprečimo ne<strong>po</strong>oblašč<strong>eno</strong> u<strong>po</strong>rabo<br />

digitalnih <strong>po</strong>datkov ali sistemov,<br />

ne glede <strong>na</strong> to ali gre pri ustreznih <strong>po</strong>datkih kot sta<br />

za<br />

digitalni de<strong>na</strong>r (nosilec vrednosti) in<br />

digitalni <strong>po</strong>dpis (za pre<strong>po</strong>z<strong>na</strong>vanje)<br />

• razkritje,<br />

• spreminjanje,<br />

• zamenjavo,<br />

• uničenje,<br />

• preverjanje verodostojnosti.<br />

Predlagani so bili številni ukrepi, a niti eden med njimi<br />

ne zagotavlja <strong>po</strong><strong>po</strong>lne varnosti.<br />

Med preventivnimi ukrepi, ki so <strong>na</strong> voljo danes, nudi<br />

kriptografija<br />

(če je seveda pravilno implementira<strong>na</strong> ter u<strong>po</strong>rablja<strong>na</strong>)<br />

<strong>na</strong>jvečjo stopnjo varnosti<br />

glede <strong>na</strong> svojo prilagodljivost digitalnim medijem.<br />

Aleksandar Jurišić 3<br />

Aleksandar Jurišić 4<br />

Aleksandar Jurišić 5<br />

Aleksandar Jurišić 6


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Kaj je kriptografija<br />

Kriptografija je veda o komunikaciji v prisotnosti<br />

aktivnega <strong>na</strong>padalca.<br />

Anita<br />

bere <strong>po</strong>datke spreminja vsebino<br />

Oskar<br />

Bojan<br />

Primer:<br />

<strong>po</strong>šiljanje papirnih dokumentov <strong>po</strong> <strong>po</strong>šti<br />

Kakš<strong>na</strong> zagotovila varnosti so <strong>na</strong> voljo In kako<br />

• Fizič<strong>na</strong> varnost: zapečatene kuverte.<br />

• Zakonska infrastruktura:<br />

ročni <strong>po</strong>dpis je zakonsko sprejeto sredstvo,<br />

zakoni proti odpiranju/oviranju <strong>po</strong>šte, itd.<br />

• Pošt<strong>na</strong> infrastruktura:<br />

varni in sprejeti mehanizmi za<br />

dostavljanje <strong>po</strong>šte širom <strong>po</strong> svetu.<br />

Primer: digitalni <strong>po</strong>datki<br />

• ZA: hranjenje je <strong>eno</strong>stavno in <strong>po</strong>ceni, hiter in<br />

<strong>eno</strong>staven trans<strong>po</strong>rt.<br />

• PROTI: <strong>eno</strong>stavno kopiranje; trans<strong>po</strong>rtni mediji<br />

niso varni (npr. <strong>po</strong>govor <strong>po</strong> mobilnem telefonu,<br />

internet<strong>na</strong> seja, ftp seja, komunikacija s <strong>po</strong>močjo<br />

elektronske <strong>po</strong>šte).<br />

• Vprašanje: Kako lahko omogočimo/<strong>po</strong>nudimo<br />

e<strong>na</strong>ke možnosti za papirni kakor tudi digitalni svet<br />

Odšifriranje (razbijanje)<br />

klasičnih šifer<br />

Kriptografske sisteme kontroliramo s <strong>po</strong>močjo ključev,<br />

ki določijo transformacijo <strong>po</strong>datkov.<br />

Seveda imajo tudi ključi digitalno obliko<br />

(bi<strong>na</strong>rno za<strong>po</strong>redje: 01001101010101...).<br />

Držali se bomo Kerckhoffovega principa,<br />

ki pravi, da “<strong>na</strong>sprotnik”<br />

<strong>po</strong>z<strong>na</strong> kriptosistem oziroma algoritme,<br />

ki jih u<strong>po</strong>rabljamo, ne pa tudi ključe,<br />

ki <strong>na</strong>m zagotavljajo varnost.<br />

Aleksandar Jurišić 7<br />

Aleksandar Jurišić 8<br />

Aleksandar Jurišić 9<br />

Aleksandar Jurišić 10<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Vohunova dilema<br />

Bilo je temno kot v rogu, ko se je vohun vračal v grad<br />

<strong>po</strong> opravljeni diverziji v sovražnem taboru.<br />

Ko se je približal vratom, je zaslišal šepetajoč glas:<br />

Geslo ali streljam!!!<br />

v<br />

Ali sepeta prijatelj<br />

v<br />

ali sovraznik<br />

Kako vohun prepriča “stražarja”, da <strong>po</strong>z<strong>na</strong> geslo, ne<br />

da bi ga izdal morebitnemu vsiljivcu/prisluškovalcu<br />

Deljenje skrivnosti<br />

Problem: V banki morajo trije direktorji<br />

odpreti trezor vsak dan, vendar pa ne želijo<br />

zaupati kombi<strong>na</strong>cijo nobenemu <strong>po</strong>samezniku.<br />

Zato bi radi imeli sistem, <strong>po</strong> katerem lahko<br />

odpreta trezor <strong>po</strong>ljub<strong>na</strong> dva med njimi.<br />

Ta problem lahko rešimo z (2, 3)-stopenjsko shemo.<br />

Stopenjske sheme za deljenje skrivnosti sta leta 1979<br />

neodvisno odkrila Blakey in Shamir.<br />

y(0)<br />

( x 1 )<br />

( x 2 )<br />

y( x 3 )<br />

y<br />

y<br />

x 1 x 2<br />

x 3<br />

x 1 x 2 x 3<br />

Vsak dobi le y-koordi<strong>na</strong>to svoje točke.<br />

Program v trezorju ima še ustrezne od 0 različne<br />

x- koordi<strong>na</strong>te, zato lahko izraču<strong>na</strong> ključ y(0).<br />

Vsaki točki <strong>na</strong>tanko določata premico in s tem ključ.<br />

Če imamo <strong>eno</strong> samo točko, ne moremo ugotoviti,<br />

kateri ključ je pravi, saj so vsi videti e<strong>na</strong>ko dobri.<br />

y( x 2 )<br />

Pametne kartice<br />

Po računski moči so pametne kartice primerljive z<br />

origi<strong>na</strong>lnim IBM-XT raču<strong>na</strong>lnikom,<br />

kartice s kripto koprocesorjem pa v nekaterih<br />

opravilih prekašajo celo 50 Mhz 486 raču<strong>na</strong>lnik.<br />

Aleksandar Jurišić 11<br />

Aleksandar Jurišić 12<br />

Aleksandar Jurišić 13<br />

Aleksandar Jurišić 14


cc<br />

000 111<br />

000 111<br />

000 111<br />

000 111<br />

000 111<br />

000 111<br />

Vpp<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

v<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

54<br />

mm<br />

V<br />

RST<br />

CLK<br />

RFU<br />

de<br />

GND<br />

I/O<br />

RFU<br />

85,6mm<br />

procesor<br />

ura<br />

reset<br />

vodilo<br />

<strong>po</strong>mnilnik<br />

zascita<br />

vhod−izhod<br />

debeli<strong>na</strong><br />

0,76 mm<br />

15mm<br />

25mm<br />

Zakaj pamet<strong>na</strong> kartica<br />

Gotovo je <strong>na</strong>jbolj <strong>po</strong>memb<strong>na</strong> razlika med pametno<br />

kartico in magnetno kartico<br />

varnost .<br />

Pamet<strong>na</strong> kartica ima svoj procesor, ki kontrolira<br />

vse interakcije med od zu<strong>na</strong>j nedostopnim s<strong>po</strong>minom<br />

in različnimi zu<strong>na</strong>njimi <strong>eno</strong>tami.<br />

Zagotovitev varnosti<br />

Identifikacija se opravi v dveh delih:<br />

(a) kartica mora biti zares prepriča<strong>na</strong>,<br />

da jo u<strong>po</strong>rablja njen lastnik (lokalno overjanje),<br />

(b) kartica komunicira (varno) z raču<strong>na</strong>lnikom<br />

(di<strong>na</strong>mično overjanje).<br />

Biometrični testi<br />

prstni odtisi geometrija roke odtis noge vzorec ven pre<strong>po</strong>z<strong>na</strong>vanje glasu<br />

Velikost pametne kartice ustreza ISO 7810 standardu,<br />

sestavljajo pa jo mikroprocesor, <strong>po</strong>mnilnik (ROM,<br />

RAM, EEPROM), vhodno/izhod<strong>na</strong> <strong>eno</strong>ta (I/O).<br />

Dodaten, <strong>po</strong>memben, del pametne kartice je<br />

non-volatile s<strong>po</strong>min (ROM),<br />

t.j. s<strong>po</strong>min, ki se ga ne da spremeniti in<br />

ostane prisoten tudi <strong>po</strong> prekinitvi <strong>na</strong>pajanja.<br />

PIN<br />

−−−−→<br />

RAND<br />

←−−−−−<br />

AP<br />

−−−−→<br />

vzorec zenice pre<strong>po</strong>z<strong>na</strong>vanje obraza zapis zob RNK (DNA) <strong>po</strong>dpis<br />

Aleksandar Jurišić 15<br />

Aleksandar Jurišić 16<br />

Aleksandar Jurišić 17<br />

Aleksandar Jurišić 18<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Pamet<strong>na</strong> kartica zgenerira<br />

<strong>na</strong>ključno število, ter ga<br />

<strong>po</strong>šlje čitalniku.<br />

Ta ga zašifrira z zasebnim<br />

ključem in rezultat <strong>po</strong>šlje<br />

pametni kartici.<br />

Če pamet<strong>na</strong> kartica uspešno<br />

odšifrira <strong>na</strong>ključno število<br />

z javnim ključem, <strong>po</strong>tem<br />

je prepriča<strong>na</strong> o pristnosti<br />

čitalnika.<br />

E<strong>na</strong>k proces <strong>po</strong>teka v <strong>na</strong>sprotni smeri.<br />

U<strong>po</strong>raba pametnih kartic<br />

<strong>po</strong>datki o <strong>na</strong>dzoru<br />

vojaski zapisi<br />

studentski zapisi<br />

splosni zdravstveni<br />

zapisi<br />

voznisko dovoljenje<br />

elektronska belezka<br />

oseb<strong>na</strong> izkaznica<br />

telefon<br />

vnos parametrov<br />

vzdrzevanje opreme<br />

javni prevoz<br />

osebni<br />

telefonski klici<br />

<strong>po</strong>datki<br />

TV programi<br />

prodaja hrane<br />

ogrevanje avta<br />

elektrika in plin<br />

vzdrzevanje avta<br />

shranjevanje<br />

nosilec<br />

<strong>po</strong>datkov<br />

s predplacilom<br />

cestni<strong>na</strong><br />

rac. termi<strong>na</strong>li<br />

placila<br />

social<strong>na</strong> <strong>po</strong>moc<br />

programi<br />

zascita<br />

pre<strong>po</strong>z<strong>na</strong>vanje<br />

brez<br />

predplacila<br />

borzno <strong>po</strong>slovanje<br />

<strong>po</strong>kojnine<br />

upravljanje z<br />

de<strong>na</strong>rjem v <strong>po</strong>djetju<br />

GSM telefoni<br />

fizicni<br />

dostop<br />

bankomat<br />

u<strong>po</strong>raba orozja<br />

krmilne <strong>na</strong>prave<br />

elektronski cek<br />

zasciteni prostori<br />

stadioni<br />

hotelski prostori<br />

parkirne hise<br />

avtomobili<br />

rekreacija<br />

elektronski de<strong>na</strong>r<br />

Plačilne, kreditne in več<strong>na</strong>menske kartice, ki se<br />

u<strong>po</strong>rabljajo <strong>na</strong> <strong>po</strong>dročju fi<strong>na</strong>nc.<br />

U<strong>po</strong>raba pametnih kartic <strong>na</strong> univerzi/fakulteti, ki je<br />

<strong>po</strong>nekod mesto v malem.<br />

Aleksandar Jurišić 19<br />

Aleksandar Jurišić 20<br />

Aleksandar Jurišić 21<br />

Aleksandar Jurišić 22


v<br />

´<br />

v<br />

A. Jurisić<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Področja v zdravstvu, kjer se u<strong>po</strong>rabljajo pametne<br />

kartice.<br />

U<strong>po</strong>raba pametne kartice v telekomunikacijah in<br />

u<strong>po</strong>rabniški elektrotehniki.<br />

GSM (globalni sistem za pr<strong>eno</strong>sno komuniciranje)<br />

Jav<strong>na</strong> kriptografija<br />

Glede <strong>na</strong> <strong>po</strong>membnost <strong>po</strong>datkov, ki jih varujemo,<br />

se moramo odločiti za ustrezno obliko zaščite:<br />

• Geslo (PIN) in zgoščevalne funkcije<br />

predstavljajo osnovno zaščito,<br />

• AES (Advanced Encryption Standard)<br />

simetrični kriptosistemi nudijo srednji nivo,<br />

• jav<strong>na</strong> kriptografija (Public Key Scheme)<br />

pa visok nivo zaščite.<br />

Odlič<strong>na</strong> uvod<strong>na</strong> knjiga o moderni kriptografiji je:<br />

Albrecht Beutelspacher, Cryptology, MAA, 1994.<br />

Aleksandar Jurišić 23<br />

Aleksandar Jurišić 24<br />

Aleksandar Jurišić 25<br />

Aleksandar Jurišić 26<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Koncept javne kriptografije<br />

Bojan <strong>po</strong>šlje Aniti pismo, pri tem pa si želi, da bi pismo<br />

lahko prebrala le o<strong>na</strong> (in prav nihče drug) [zaščita].<br />

Anita pa si <strong>po</strong>leg tega želi biti prepriča<strong>na</strong>, da je pismo,<br />

ki ga je <strong>po</strong>slal Bojan prišlo prav od njega [<strong>po</strong>dpis].<br />

Pred<strong>po</strong>stavimo, da se Anita in Bojan prej dogovorita<br />

za skupen ključ, ki ga ne <strong>po</strong>z<strong>na</strong> nihče drug<br />

(simetričen kriptosistem).<br />

Če Bojan z njim zašifrira pismo, je lahko prepričan,<br />

da ga lahko odklene le Anita.<br />

Hkrati pa je tudi Anita zadovolj<strong>na</strong>, saj je prepriča<strong>na</strong>,<br />

da ji je pismo lahko <strong>po</strong>slal le Bojan.<br />

Tak pristop je problematičen vsaj iz dveh razlogov:<br />

1. Anita in Bojan se morata prej dogovoriti za skupen<br />

ključ,<br />

2. upravljanje s ključi v omrežju z n u<strong>po</strong>rabniki je<br />

kradratne zahtevnosti ( n<br />

2)<br />

, vsak u<strong>po</strong>rabnik pa mora<br />

hraniti n−1 ključev.<br />

Leta 1976 sta Whit Diffie in Martin Hellman<br />

predstavila koncept kriptografije z javnimi ključi.<br />

Tu ima za razliko od sim. sistema vsak u<strong>po</strong>rabnik<br />

dva ključa, <strong>po</strong>datke zaklepa, drugi pa jih odklepa.<br />

Pomemb<strong>na</strong> lastnost tega sistema:<br />

ključ, ki zaklepa, ne more odklepati<br />

in obratno,<br />

ključ, ki odklepa, ne more zaklepati.<br />

A. Jurisic<br />

Jadranska 19<br />

Ljublja<strong>na</strong><br />

To omogoči lastniku, da en ključ objavi, drugega pa<br />

hrani v tajnosti (npr. <strong>na</strong> pametni kartici). Zato<br />

imenujemo ta ključa za<strong>po</strong>redoma javni in zasebni.<br />

Jadranska 19<br />

Ljublja<strong>na</strong><br />

Aleksandar Jurišić 27<br />

Aleksandar Jurišić 28<br />

Aleksandar Jurišić 29<br />

Aleksandar Jurišić 30


Bojan<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Ta pristop omogoča veliko presenetljivih <strong>na</strong>činov<br />

u<strong>po</strong>rabe, npr. omogoča ljudem varno komuniciranje,<br />

ne da bi se predhodno srečali zaradi<br />

izmenjave/dogovora o tajnem ključu.<br />

Vsak u<strong>po</strong>rabnik <strong>na</strong>jprej objavi svoj javni ključ,<br />

zasebnega pa zadrži zase. Vsak lahko <strong>na</strong>to z javnim<br />

ključem zašifrira pismo, bral (odšifriral) pa ga bo lahko<br />

le lastnik ustreznega zasebnega ključa.<br />

Bojan <strong>po</strong>šlje Aniti <strong>po</strong>dpisano zasebno pismo:<br />

(1) <strong>po</strong>dpiše ga s svojim zasebnim ključem Z B in ga<br />

(2) zašifrira z Anitinim javnim ključem J A .<br />

BOJAN<br />

ANITA<br />

B<br />

zasebni<br />

javni<br />

zasebni<br />

A javni 1 <strong>po</strong>dpise<br />

A nita<br />

A<br />

B<br />

2 zasifrira<br />

3 odsifrira<br />

4 preveri <strong>po</strong>dpis<br />

(3) Anita ga s svojim zasebnim ključem Z A odšifrira,<br />

(4) z Bojanovim javnim ključem J B preveri <strong>po</strong>dpis.<br />

V razvoju javne kriptografije je bilo predlaganih in<br />

razbitih veliko kriptosistemov.<br />

Le nekaj se jih je obdržalo in jih lahko danes smatramo<br />

za varne in učinkovite.<br />

Glede <strong>na</strong> matematični problem <strong>na</strong> katerem temeljijo,<br />

so razdeljene v tri skupine:<br />

• Sistemi faktorizacije celih števil<br />

npr. RSA (Rivest-Shamir-Adleman).<br />

• Sistemi diskretnega logaritma<br />

npr. DSA.<br />

• Kripto sistemi z eliptičnimi krivuljami<br />

(Elliptic Curve Cryptosystems)<br />

Anita<br />

Izmenjava ključev<br />

(Diffie-Hellman)<br />

Bojan<br />

α a<br />

✲<br />

a<br />

b<br />

(α b ) a α b<br />

✛<br />

(α a ) b<br />

Anita in Bojan si delita skupni element grupe: α ab .<br />

Končne grupe so zanimive zato, ker raču<strong>na</strong>nje <strong>po</strong>tenc<br />

lahko opravimo učinkovito, ne <strong>po</strong>z<strong>na</strong>mo pa vedno<br />

učinkovitih algoritmov za logaritem (za razliko od IR).<br />

Aleksandar Jurišić 31<br />

Aleksandar Jurišić 32<br />

Aleksandar Jurišić 33<br />

Aleksandar Jurišić 34<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Kaj je kriptografija<br />

• cilji kriptografije<br />

• širši <strong>po</strong>gled <strong>na</strong> kriptografijo<br />

• gradniki kriptografije<br />

Osnov<strong>na</strong> motivacija za <strong>na</strong>š študij je<br />

u<strong>po</strong>raba kriptografije v realnem svetu.<br />

Cilji kriptografije<br />

1. Zasebnost/zaupnost/tajnost:<br />

varovanje informacij pred tistimi, ki jim v<strong>po</strong>gled ni<br />

dovoljen, dosežemo s šifriranjem.<br />

2. Celovitost <strong>po</strong>datkov:<br />

zagotovilo, da informacija ni bila spremenje<strong>na</strong> z<br />

nedovoljenimi sredstvi (neavtoriziranimi sredstvi).<br />

3. Overjanje s<strong>po</strong>ročila (ali izvora <strong>po</strong>datkov):<br />

<strong>po</strong>trditev izvora informacij.<br />

4. Identifikacija:<br />

<strong>po</strong>trditev identitete predmeta ali osebe.<br />

5. Preprečevanje tajenja:<br />

preprečevanje, da bi nekdo zanikal<br />

dano obljubo ali storj<strong>eno</strong> dejanje.<br />

6. Drugi kriptografski protokoli:<br />

1. grb/cifra <strong>po</strong> telefonu<br />

2. mentalni <strong>po</strong>ker<br />

3. shema elektronskih volitev<br />

(anonimno glasovanje brez goljufanja)<br />

4. (anonimni) elektronski de<strong>na</strong>r<br />

Cilje kriptografije bomo dosegali z<br />

matematičnimi sredstvi.<br />

Aleksandar Jurišić 35<br />

Aleksandar Jurišić 36<br />

Aleksandar Jurišić 37<br />

Aleksandar Jurišić 38


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Cilji kriptografije:<br />

1. zasebnost/zaupnost/tajnost<br />

2. celovitost <strong>po</strong>datkov<br />

3. overjanje s<strong>po</strong>ročila (ali izvora <strong>po</strong>datkov)<br />

4. identifikacija<br />

5. preprečevanje nepriz<strong>na</strong>vanja<br />

6. drugi kriptografski protokoli<br />

NAUK: Kriptografija je več kot<br />

samo širfiranje (enkripcija).<br />

Širši <strong>po</strong>gled <strong>na</strong> kriptografijo<br />

– varnost informacij<br />

Kriptografija je sredstvo, s katerim dosežemo varnost<br />

informacij, ki med drugim zajema:<br />

(a) Varnost raču<strong>na</strong>lniškega sistema<br />

tj. tehnič<strong>na</strong> sredstva, ki omogočajo varnost<br />

raču<strong>na</strong>lniškega sistema, ki lahko <strong>po</strong>meni samo en<br />

raču<strong>na</strong>lnik z več u<strong>po</strong>rabniki, lokalno mrežo (LAN),<br />

Internet, mrežni strežnik, bankomat, itd.<br />

Med drugim obsega:<br />

• varnostne modele in pravila, ki določajo zahteve <strong>po</strong><br />

varnosti, katerim mora sistem ustrezati<br />

• varen operacijski sistem<br />

• zaščito pred virusi<br />

• zaščito pred kopiranjem<br />

• kontrolne mehanizme (beleženje vseh aktivnosti, ki se<br />

dogajajo v sistemu lahko omogoči odkrivanje tistih<br />

kršitev varnostnih pravil, ki jih ni mogoče preprečiti)<br />

• a<strong>na</strong>liza tveganja in upravljanje v primeru nevarnosti<br />

(b) Varnost <strong>na</strong> mreži<br />

Zaščita pre<strong>na</strong>šanja <strong>po</strong>datkov preko komercialnih mrež,<br />

tudi raču<strong>na</strong>lniških in telekomunikacijskih.<br />

Med drugim obsega:<br />

• protokole <strong>na</strong> internetu in njihovo varnost<br />

• <strong>po</strong>žarne zidove<br />

• trgovanje <strong>na</strong> internetu<br />

• varno elektronsko <strong>po</strong>što<br />

Aleksandar Jurišić 39<br />

Aleksandar Jurišić 40<br />

Aleksandar Jurišić 41<br />

Aleksandar Jurišić 42<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Gradniki kriptografije<br />

1. <strong>po</strong>glavje<br />

Zgodovi<strong>na</strong><br />

Širši <strong>po</strong>gled <strong>na</strong> kriptografijo<br />

– varnost informacij<br />

1. varnost raču<strong>na</strong>lniškega sistema<br />

2. varnost <strong>na</strong> mreži<br />

NAUK: Kriptografija je samo majhen<br />

del varnosti informacij.<br />

1. matematika (predvsem teorija števil)<br />

2. raču<strong>na</strong>lništvo (a<strong>na</strong>liza algoritmov)<br />

3. elektrotehnika (hardware)<br />

4. <strong>po</strong>z<strong>na</strong>vanje aplikacij (fi<strong>na</strong>nce,...)<br />

5. <strong>po</strong>litika (restrikcije, key escrow, NSA,...)<br />

6. pravo (patenti, <strong>po</strong>dpisi, jamstvo,...)<br />

7. družba (npr. enkripcija omogoča<br />

zasebnost, a otežuje pregon krimi<strong>na</strong>lcev)<br />

NAUK: U<strong>po</strong>rab<strong>na</strong> kriptografija je več<br />

kot samo zanimiva matematika.<br />

Klasič<strong>na</strong> kriptografija<br />

• zgodovi<strong>na</strong> (hieroglifi, antika, II. svetov<strong>na</strong> voj<strong>na</strong>)<br />

• zamenjal<strong>na</strong> šifra<br />

Klasične šifre in razbijanje<br />

• prikrita, zamenjal<strong>na</strong> (<strong>po</strong>mič<strong>na</strong>, afi<strong>na</strong>),<br />

bloč<strong>na</strong> (Vigenerjeva, Hillova)<br />

• Kerckhoffov princip in stopnje <strong>na</strong>padov<br />

• <strong>na</strong>pad <strong>na</strong> Vigenerja (Kasiski test, indeks <strong>na</strong>ključja)<br />

• <strong>na</strong>pad <strong>na</strong> Hillovo šifro<br />

• tokovne šifre<br />

Kriptografija ima dolgo in zanimivo zgodovino:<br />

– Hieroglifi, Špartanci, Cezar, ...<br />

D. Kahn, The Codebreakers<br />

(The Story of Secret Writing),<br />

hrvaški prevod: (K. and M. Miles),<br />

Šifranti protiv špiju<strong>na</strong>,<br />

Centar za informacije i Publicitet, Zagreb 1979.<br />

(429+288+451+325=1493 <strong>stran</strong>i).<br />

Aleksandar Jurišić 43<br />

Aleksandar Jurišić 44<br />

Aleksandar Jurišić 45<br />

Aleksandar Jurišić 46


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Hieroglifi<br />

Razvili so jih antični Egiptčani.<br />

Komunicirali so v jeziku<br />

sestavljenemu iz sličič <strong>na</strong>mesto besed.<br />

Najbolj izobraženi ljudje so jih razumeli,<br />

toda v religioznemu kontekstu<br />

– npr. <strong>na</strong>pisi <strong>na</strong> grobovih –<br />

so njihovi duhovniki u<strong>po</strong>rabljali tajne<br />

kriptografske verzije z<strong>na</strong>kov, da bi bila vsebi<strong>na</strong><br />

več vred<strong>na</strong> (saj je šlo za božje besede) in bolj mistič<strong>na</strong>.<br />

Mnoge religije so u<strong>po</strong>rabljale tajne z<strong>na</strong>ke,<br />

ki so jih razumeli le določeni izbranci.<br />

Razbijalci šifer<br />

Obstajajo od kar <strong>po</strong>z<strong>na</strong>mo šifriranje.<br />

L. 1799 so v Egipčanski Rosetti<br />

<strong>na</strong>šli skoraj 2.000 let star kamen.<br />

Na njemu so bili trije teksti:<br />

• hieroglifi,<br />

• pisava egiptčanov (demotic) in<br />

• starogršči<strong>na</strong>.<br />

Del kam<strong>na</strong> iz Rosette,<br />

Ko je bil končan prevod iz Grščine, <strong>na</strong> katerem je bila<br />

nez<strong>na</strong><strong>na</strong> pisava,<br />

dokler je arheologi<br />

je bilo možno razvozlati tudi hieroglife, niso odšifrirali.<br />

iz katerih smo izvedeli o zgodovini antičnega Egipta.<br />

Še e<strong>na</strong> antič<strong>na</strong>: o obriti glavi<br />

Medtem, ko je bil genialni Histius <strong>na</strong> perzijskem<br />

sodišču, je hotel obvestiti Aristagorasa iz Grčije, da<br />

dvigne u<strong>po</strong>r. Seveda je bilo <strong>po</strong>membno, da nihče ne<br />

prestreže s<strong>po</strong>ročilo.<br />

Da bi zagotovil tajnost, je Histius obril sužnja, ki mu je<br />

<strong>na</strong>bolj zaupal, mu vtetoviral <strong>na</strong> glavo s<strong>po</strong>ročilo [sužnju<br />

so rekli, da mu začenjajo zdraviti sle<strong>po</strong>to] in <strong>po</strong>čakal,<br />

da mu zrastejo lasje.<br />

Sužnju je bilo ukazano, da reče Aristagorasu:<br />

“Obrijte mojo glavo in <strong>po</strong>glejte <strong>na</strong>njo.”<br />

Aristagoras je <strong>na</strong>to zares dvignil u<strong>po</strong>r.<br />

To je primer prikrite šifre,<br />

s<strong>po</strong>ročilo je prisotno, a <strong>na</strong> nek <strong>na</strong>čin prikrito.<br />

Poz<strong>na</strong>mo mnogo takšnih primerov.<br />

Varnost takega s<strong>po</strong>ročila je odvis<strong>na</strong> od trika<br />

prikrivanja.<br />

Tak trik je lahko odkriti, <strong>po</strong>leg tega pa ne omogoča<br />

hitrega šifriranja in odšifriranja.<br />

To ne pride v<strong>po</strong>štev za resno u<strong>po</strong>rabo.<br />

Aleksandar Jurišić 47<br />

Aleksandar Jurišić 48<br />

Aleksandar Jurišić 49<br />

Aleksandar Jurišić 50<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Anglija: Sir John dobi s<strong>po</strong>ročilo: Worthie Sir<br />

John:- Hope, that is ye beste comfort of ye afflicted,<br />

cannot much, I fear me, help you now. That I would<br />

saye to you, is this only: if ever I may be able to requite<br />

that I do owe you, stand not u<strong>po</strong>n asking me. ’Tis not<br />

much that I can do: but what I can do, bee ye verie<br />

sure I wille. I knowe that, if dethe comes, if ordi<strong>na</strong>ry<br />

men fear it, it frights not you, accounting it for a high<br />

honor, to have such a rewarde of your loyalty. Pray<br />

yet that you may be spared this soe bitter, cup. I<br />

fear not that you will grudge any sufferings; only if bie<br />

submission you can turn them away, ’tis the part of<br />

a wise man. Tell me, an if you can, to do for you<br />

anythinge that you wolde have done. The general<br />

goes back on Wednesday. Restinge your servant to<br />

command. - R.T.<br />

Če vam uspe “med vrsticami” prebrati:<br />

PANEL AT EAST END<br />

OF CHAPEL SLIDES<br />

verjetno ne boste občutili e<strong>na</strong>kega olajšanja kot<br />

Sir John Trevanion, njemu pa je vsekakor uspelo<br />

<strong>po</strong>begniti, sicer bi ga v gradu Colcester gotovo usmrtili<br />

prav tako, kot so Sir Charlesa Lucasa ter Sir Georga<br />

Lislea.<br />

Druga svetov<strong>na</strong> voj<strong>na</strong><br />

– Enigma (Nemčija),<br />

– Tunny (Nemčija),<br />

– Purple (Ja<strong>po</strong>nska),<br />

– Hagelin (ZDA).<br />

Zamenjal<strong>na</strong> šifra<br />

Tomaž Pisanski, Skrivnostno s<strong>po</strong>ročilo<br />

Presek V/1, 1977/78, str. 40-42.<br />

YHWHD+CVODHVTHVO-!JVG:CDCYJ(JV/-VHV(<br />

-THVW-4YC4(-DJV/-(S-VO3CWC%J(-V4-DC<br />

V!CW-CVNJDJVD-+-VO3CWC%J(-VQW-DQ-VJ+<br />

VHVDWHN-V3C:CODCV!H+-DJVD-+CV3JO-YC<br />

(črko Č smo zamenjali s C, črko Ć pa z D)<br />

Aleksandar Jurišić 51<br />

Aleksandar Jurišić 52<br />

Aleksandar Jurišić 53<br />

Aleksandar Jurišić 54


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Imamo 26! = 40329146112665635584000000<br />

možnosti z direktnim preizkušanjem,<br />

zato v članku dobimo <strong>na</strong>slednje <strong>na</strong>svete:<br />

(0) Relativ<strong>na</strong> frekvenca črk in presledkov v slovenščini:<br />

presledek 173,<br />

E A I O N R S L J T V D<br />

89 84 74 73 57 44 43 39 37 37 33 30<br />

K M P U Z B G Č H Š C Ž F<br />

29 27 26 18 17 15 12 12 9 9 6 6 1<br />

(1) Na začetku besed so <strong>na</strong>j<strong>po</strong>gostejše črke<br />

N, S, K, T, J, L.<br />

(2) Naj<strong>po</strong>gostejše končnice pa so<br />

E, A, I, O, U, R, N.<br />

(3) Ugotovi, kateri z<strong>na</strong>ki zagotovo predstavljajo<br />

samoglasnike in kateri soglasnike.<br />

(4) V vsaki besedi je vsaj en samoglasnik<br />

ali samoglasniški R.<br />

(5) V vsaki besedi z dvema črkama je e<strong>na</strong><br />

črka samoglasnik, druga pa soglasnik.<br />

(6) detektivska sreča<br />

(0) V - C D J H W O ( + 3<br />

23 19 16 12 11 10 9 7 6 6 5 4<br />

Y 4 ! / Q : % T N S G<br />

4 3 3 2 2 2 2 2 2 1 1<br />

Zaključek V --> ’ ’ (drugi z<strong>na</strong>ki z visoko<br />

frekvenco ne morejo biti).<br />

Dve besedi se <strong>po</strong>novita: 03CWC%J(-,<br />

opazimo pa tudi <strong>eno</strong> sklanjatev:<br />

D-+- ter D-+C.<br />

Torej <strong>na</strong>daljujemo z <strong>na</strong>slednjim tekstom:<br />

YHWHD+C ODH TH O-!J G:CDCYJ(J /- H<br />

(-TH W-4YD4(-DJ /-(S- 03CWC%J(- 4-DC<br />

!CW-C NJDJ D-+- 03CWC%J(- QW-DQ- J+<br />

H DWHN- 3C:C0DC !H+-DJ D-+C 3J0-YC<br />

Aleksandar Jurišić 55<br />

Aleksandar Jurišić 56<br />

Aleksandar Jurišić 57<br />

Aleksandar Jurišić 58<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

(3) Kanditati za samoglasnike e,a,i,o so z<strong>na</strong>ki z visokimi<br />

frekvancami. Vzamemo:<br />

{e,a,i,o} = {-,C,J,H}<br />

(saj D izključi -,H,J,C in izključi -,H,C,<br />

z<strong>na</strong>ki -,C,J,H pa se ne izključujejo)<br />

Raz<strong>po</strong>reditev teh z<strong>na</strong>kov kot samoglasnikov izgleda<br />

prav verjet<strong>na</strong>. To <strong>po</strong>trdi tudi gostota končnic, gostota<br />

parov je <strong>na</strong>mreč:<br />

AV CV HV JV VO H -D DC JM W- DJ UC CW - VD<br />

7 5 5 5 4 4 4 3 3 3 3 3 3 3 3<br />

(5) Preučimo besede z dvema črkama:<br />

Samoglasnik <strong>na</strong> koncu<br />

1) da ga <strong>na</strong> pa ta za (ha ja la)<br />

2) če je le me ne se še te ve že (he)<br />

3) bi ji ki mi ni si ti vi<br />

4) bo do (ho) jo ko no <strong>po</strong> so to<br />

5) ju mu tu (bu)<br />

6) rž rt<br />

Samoglasnik <strong>na</strong> začetku<br />

1) ar as (ah aj au)<br />

2) en ep (ej eh)<br />

3) in iz ig<br />

4) on ob od os on (oh oj)<br />

5) uk up uš ud um ur (uh ut)<br />

in opazujemo besedi: /- H<br />

ter besedi: J+ H.<br />

J+ ima <strong>na</strong>jmanj možnosti, + pa verjetno ni črka n,<br />

zato <strong>na</strong>m ostane samo še:<br />

J+ H DWHN-<br />

/- H<br />

iz te (ne gre zaradi: D-+C)<br />

ob ta(e,o) (ne gre zaradi: D-+C)<br />

od te (ne gre zaradi: D-+C)<br />

tako da bo <strong>po</strong>trebno nekaj spremeniti in preizkusiti še<br />

<strong>na</strong>slednje:<br />

on bo; on jo; in so; in se; in je; in ta; en je; od tu ...<br />

Aleksandar Jurišić 59<br />

Aleksandar Jurišić 60<br />

Aleksandar Jurišić 61<br />

Aleksandar Jurišić 62


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

(6) Če <strong>na</strong>m <strong>po</strong> dolgem premisleku ne uspe <strong>na</strong>jti rdeče<br />

niti, bo morda <strong>po</strong>trebno iskati <strong>na</strong>pako s prijatelji (tudi<br />

raču<strong>na</strong>lniški program z metodo lokalne optimizacije ni<br />

zmogel problema zaradi premajhne dolžine tajnopisa,<br />

vsekakor pa bi bilo problem mogoče rešiti s <strong>po</strong>močjo<br />

elektronskega slovarja).<br />

Tudi psihološki pristop <strong>po</strong>maga, je svetoval Martin<br />

Juvan in <strong>na</strong>loga je bila reše<strong>na</strong> (<strong>po</strong>skusite sami!).<br />

Podob<strong>na</strong> <strong>na</strong>loga je v angleščini dosti lažja, saj je v<br />

tem jeziku veliko čl<strong>eno</strong>v THE, A in AN, vendar pa<br />

zato običajno <strong>na</strong>jprej izpustimo presledke iz teksta, ki<br />

ga želimo spraviti v tajnopis.<br />

V angleščini imajo seveda črke drugačno gostoto kot v<br />

slovenščini.<br />

Razdelimo jih v <strong>na</strong>slednjih pet skupin:<br />

1. E, z verjetnostjo okoli 0.120,<br />

2. T, A, O, I, N, S, H, R, vse z<br />

verjetnostjo med 0.06 in 0.09,<br />

3. D, L, obe z verjetnostjo okoli 0.04,<br />

4. C, U, M, W, F, G, Y, P, B, vse z<br />

verjetnostjo med 0.015 in 0.028,<br />

5. V, K, J, X, Q, Z, vse z verjetnostjo manjšo od 0.01.<br />

Najbolj <strong>po</strong>gosti pari so (v padajočem za<strong>po</strong>redju): TH,<br />

HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT, TO,<br />

NT, HA, ND, OU, EA, NG, AS, OR, TI, IS, ET, IT,<br />

AR, TE, SE, HI in OF,<br />

Najbolj <strong>po</strong>goste trojice pa so (v padajočem za<strong>po</strong>redju):<br />

THE, ING, AND, HER, ERE, ENT, THA, NTH,<br />

WAS, ETH, FOR in DTH.<br />

Aleksandar Jurišić 63<br />

Aleksandar Jurišić 64<br />

Aleksandar Jurišić 65<br />

Aleksandar Jurišić 66<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Trans<strong>po</strong>zicijska šifra<br />

Klasične šifre<br />

V trans<strong>po</strong>zicijski šifri ostanejo črke<br />

origi<strong>na</strong>lnega s<strong>po</strong>ročila nespremenjene, njihova mesta<br />

pa so <strong>po</strong>meša<strong>na</strong> <strong>na</strong> kakšen sistematičen <strong>na</strong>čin<br />

(primer: permutacija stolpcev).<br />

Te šifre zlahka pre<strong>po</strong>z<strong>na</strong>mo, če izraču<strong>na</strong>mo<br />

gostoto samoglasnikov (v angleščini je ta 40%,<br />

in skoraj nikoli ne pade zu<strong>na</strong>j intervala 35%–45%).<br />

Težko jih rešimo, vendar pa se <strong>po</strong>trpljenje <strong>na</strong> koncu<br />

običajno izplača.<br />

Simetrič<strong>na</strong> šifra je peterica (P, C, K, E, D) za<br />

katero velja:<br />

1. P je konč<strong>na</strong> množica možnih čistopisov<br />

2. C je konč<strong>na</strong> množica možnih tajnopisov<br />

3. K je konč<strong>na</strong> množica možnih ključev.<br />

4. Za vsak ključ K ∈ K, imamo šifrirni <strong>po</strong>stopek<br />

e K ∈ E in ustrezen odšifrirni <strong>po</strong>stopek d K ∈ D.<br />

e K : P −→ C in d K : C −→ P<br />

sta taki funkciji, da je d K(e K(x)) = x za vsak<br />

x ∈ P.<br />

Pomič<strong>na</strong> šifra (angl. shift cipher) je <strong>po</strong>seben primer<br />

zamenjalne šifre.<br />

wewillmeetatmidnight<br />

22 4 22 8 11 11 12 4 4 19 0 19 12 8 3 13 8 6 7 19<br />

7 15 7 19 22 22 23 15 15 4 11 4 23 19 14 24 19 17 18 4<br />

HPHTWWXPPELEXTOYTRSE<br />

Cezarjeva šifra zašifrira njegovo ime v Ehbčt.<br />

Cezar ukazal <strong>na</strong>pad<br />

v v v v v v v<br />

Ehbct zncbco rcscg<br />

V kriptografiji si <strong>na</strong> splošno radi omislimo končne<br />

množice, kot pri številčnici <strong>na</strong> uri (npr. praštevilske<br />

obsege Z p ).<br />

Kongruence: <strong>na</strong>j bosta a in b celi števili in m<br />

<strong>na</strong>ravno število.<br />

a ≡ b (mod m) ⇐⇒ m|b − a.<br />

Primer: za p=13 velja<br />

7+ 13 9 = 7+9 mod 13 = 3 in<br />

5 ∗ 13 4 = 5 ∗ 4 mod 13 = 7<br />

(saj ima pri deljenju s 13<br />

vsota 16 ostanek 3,<br />

produkt 20 pa ostanek 7),<br />

možno pa je tudi deljenje.<br />

10<br />

9<br />

11<br />

9<br />

12<br />

0<br />

1<br />

2<br />

7+9= 3<br />

4<br />

8 5<br />

7<br />

7 6<br />

Aleksandar Jurišić 67<br />

Aleksandar Jurišić 68<br />

Aleksandar Jurišić 69<br />

Aleksandar Jurišić 70


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Deljenje v primeru p = 13:<br />

∗ 13 1 2 3 4 5 6 7 8 9 10 11 12<br />

1 1 2 3 4 5 6 7 8 9 10 11 12<br />

2 2 4 6 8 10 12 1 3 5 7 9 11<br />

3 3 6 9 12 2 5 8 11 1 4 7 10<br />

4 4 8 12 3 7 11 2 6 10 1 5 9<br />

5 5 10 2 7 12 4 9 1 6 11 3 8<br />

6 6 12 5 11 4 10 3 9 2 8 1 7<br />

7 7 1 8 2 9 3 10 4 11 5 12 6<br />

8 8 3 11 6 1 9 4 12 7 2 10 5<br />

9 9 5 1 10 6 2 11 7 3 12 8 4<br />

10 10 7 4 1 11 8 5 2 12 9 6 3<br />

11 11 9 7 5 3 1 12 10 8 6 4 2<br />

12 12 11 10 9 8 7 6 5 4 3 2 1<br />

Afi<strong>na</strong> šifra:<br />

e(x) = ax + b (mod 26) za a,b ∈ Z 26<br />

Za a = 1 dobimo <strong>po</strong>mično šifro.<br />

Funkcija je injektiv<strong>na</strong>, če in samo če je D(a, 26) = 1.<br />

Imamo |K| = 12 × 26 = 312 možnih ključev.<br />

Za <strong>po</strong>mično šifro in afino šifro pravimo, da sta<br />

monoabecedni, ker preslikamo vsako črko v <strong>na</strong>tanko<br />

določ<strong>eno</strong> črko.<br />

Vigenèrejeva šifra (1586):<br />

Naj bo m ∈ N in<br />

P = C = K = (Z 26) m .<br />

Za ključ K = (k 1 , k 2 , ...,k m )<br />

definiramo<br />

e(x 1 , ...,x m ) = (x 1 + k 1 , ...,x m + k m ) in<br />

d(y 1,...,y m) = (y 1 − k 1,...,y m − k m),<br />

kjer sta operaciji “+” in “−” opravljeni <strong>po</strong> modulu 26.<br />

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z<br />

A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z<br />

B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A<br />

C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B<br />

D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C<br />

E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D<br />

F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E<br />

G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F<br />

H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G<br />

I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H<br />

J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I<br />

K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J<br />

L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K<br />

M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L<br />

N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M<br />

O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N<br />

P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O<br />

Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P<br />

R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q<br />

S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R<br />

T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S<br />

U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T<br />

V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U<br />

W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V<br />

X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W<br />

Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X<br />

Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y<br />

Aleksandar Jurišić 71<br />

Aleksandar Jurišić 72<br />

Aleksandar Jurišić 73<br />

Aleksandar Jurišić 74<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

S<strong>po</strong>ročilo<br />

Ponovimo:<br />

TO BE OR NOT TO BE THAT IS THE QUESTION<br />

zašifriramo s ključem RELATIONS:<br />

ključ:<br />

čistopis:<br />

tajnopis:<br />

RELAT IONSR ELATI ONSRE LATIO NSREL<br />

TOBEO RNOTT OBETH ATIST HEQUE STION<br />

KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY<br />

Npr. prvo črko tajnopisa dobimo tako, da <strong>po</strong>gledamo<br />

v tabelo <strong>na</strong> mesto (R,T).<br />

Kako pa <strong>na</strong>jdemo iz T in K <strong>na</strong>zaj R<br />

To ni monoabeced<strong>na</strong> šifra.<br />

Pravimo ji <strong>po</strong>liabeced<strong>na</strong> šifra.<br />

Vigenèrejeva šifra in 26 m možnih ključev.<br />

Za m = 5 je število 1.1 × 10 7 že preveliko, da bi “peš”<br />

iskali pravi ključ.<br />

Hillova šifra (1929)<br />

Naj bo m neko <strong>na</strong>ravno število in <strong>na</strong>j bo<br />

P = C = (Z 26 ) m .<br />

Za K vzemimo obrnljivo m×m matriko in definirajmo<br />

e K(x) = xK in d K(y) = yK −1 ,<br />

pri čemer so vse operacije opravljene v Z 26 .<br />

Odšifriranje (razbijanje)<br />

klasičnih šifer<br />

Kriptografske sisteme kontroliramo s <strong>po</strong>močjo ključev,<br />

ki določijo transformacijo <strong>po</strong>datkov.<br />

Seveda imajo tudi ključi digitalno obliko<br />

(bi<strong>na</strong>rno za<strong>po</strong>redje: 01001101010101...).<br />

Držali se bomo Kerckhoffovega principa,<br />

ki pravi, da “<strong>na</strong>sprotnik”<br />

<strong>po</strong>z<strong>na</strong> kriptosistem oziroma algoritme,<br />

ki jih u<strong>po</strong>rabljamo, ne pa tudi ključe,<br />

ki <strong>na</strong>m zagotavljajo varnost.<br />

Aleksandar Jurišić 75<br />

Aleksandar Jurišić 76<br />

Aleksandar Jurišić 77<br />

Aleksandar Jurišić 78


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Ločimo <strong>na</strong>slednje nivoje <strong>na</strong>padov <strong>na</strong> kriptosisteme:<br />

1. samo tajnopis: <strong>na</strong>sprotnik ima del tajnopisa,<br />

2. <strong>po</strong>z<strong>na</strong>ni čistopis: <strong>na</strong>sprotnik ima del<br />

čistopisa ter ustrezen tajnopis,<br />

3. izbrani čistopis: <strong>na</strong>sprotnik ima začasno <strong>na</strong><br />

voljo šifrirno mašinerijo ter za izbrani x ∈ P<br />

konstruira e(x),<br />

4. izbrani tajnopis: <strong>na</strong>sprotnik ima začasno <strong>na</strong><br />

voljo odšifrirno mašinerijo ter za izbrani y ∈ C<br />

konstruira d(y).<br />

Odšifriranje Vigenèrejeve šifre<br />

Test Friedericha Kasiskega (1863):<br />

(in Charles Babbage-a 1854)<br />

<strong>po</strong>iščemo dele tajnopisa y = y 1 y 2 ...y n , ki so identični<br />

in zabeležimo razdalje d 1 ,d 2 , ... med njihovimi<br />

začetki. Pred<strong>po</strong>stavimo, da iskani m deli <strong>na</strong>jvečji<br />

skupni delitelj teh števil.<br />

Naj bo d = n/m. Elemente tajnopisa y zapišemo <strong>po</strong><br />

stolpcih v (m×d)-razsežno matriko. Vrstice oz<strong>na</strong>čimo<br />

z y i , tj.<br />

y i = y i y m+i y 2m+i . ..<br />

Indeks <strong>na</strong>ključja (William Friedman, 1920):<br />

Za za<strong>po</strong>redje x = x 1 x 2 ...x d je indeks <strong>na</strong>ključja<br />

(angl. index of coincidence, oz<strong>na</strong>ka I c (x))<br />

verjetnost, da sta <strong>na</strong>ključno izbra<strong>na</strong> elementa<br />

za<strong>po</strong>redja x e<strong>na</strong>ka.<br />

Če so f 0 ,f 1 , ...,f 25 frekvence črk A, B,...,Z v<br />

za<strong>po</strong>redju x, je<br />

∑25<br />

)<br />

I c (x) =<br />

i=0<br />

(<br />

fi<br />

2<br />

( = d<br />

2)<br />

∑25<br />

i=0<br />

f i (f i − 1)<br />

d(d − 1) .<br />

Če so p i pričakovane verjetnosti angleških črk, <strong>po</strong>tem<br />

je<br />

∑25<br />

I c (x) ≈ p 2 i = 0.065.<br />

i=0<br />

Za <strong>po</strong>vsem <strong>na</strong>ključno za<strong>po</strong>redje velja<br />

( ) 2 1<br />

I c(x) ≈ 26 = 1<br />

26 26 = 0.038.<br />

Ker sta števili .065 in .038 dovolj <strong>na</strong>razen,<br />

lahko s to metodo <strong>na</strong>jdemo dolžino ključa<br />

(ali pa <strong>po</strong>trdimo dolžino, ki smo jo uganili<br />

s testom Kasiskega).<br />

Aleksandar Jurišić 79<br />

Aleksandar Jurišić 80<br />

Aleksandar Jurišić 81<br />

Aleksandar Jurišić 82<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Za <strong>po</strong>dza<strong>po</strong>redje y i in 0 ≤ g ≤ 25 <strong>na</strong>j bo<br />

∑25<br />

f i+g<br />

M g (y i ) = p i<br />

d .<br />

i=0<br />

Če je g = k i , <strong>po</strong>tem pričakujemo<br />

∑25<br />

M g (y i ) ≈ p 2 i = 0.065<br />

i=0<br />

Za g ≠ k i je običajno M g bistv<strong>eno</strong> manjši od 0.065.<br />

Torej za vsak 1 ≤ i ≤ m in 0 ≤ g ≤ 25 tabeliramo<br />

vrednosti M g , <strong>na</strong>to pa v tabeli za vsak 1 ≤ i ≤ m<br />

<strong>po</strong>iščemo tiste vrednosti, ki so blizu 0.065.<br />

Ustrezni g-ji <strong>na</strong>m dajo iskane zamike k 1 ,k 2 ,...,k m .<br />

Odšifriranje Hillove šifre<br />

Pred<strong>po</strong>stavimo, da je <strong>na</strong>sprotnik določil m, ki ga<br />

u<strong>po</strong>rabljamo, ter se dokopal do m različnih parov m-<br />

teric (2. stopnja – <strong>po</strong>z<strong>na</strong>n čistopis):<br />

x j =(x 1,j ,x 2,j ,...,x m,j ), y j =(y 1,j , y 2,j , ...,y m,j ),<br />

tako da je y j = e K (x j ) za 1 ≤ j ≤ m.<br />

Za matriki X = (x i,j ) in Y = (y i,j ) dobimo matrično<br />

e<strong>na</strong>čbo Y = XK.<br />

Če je matrika X obrnljiva, je K = Y X −1 .<br />

Za Hillovo šifro lahko u<strong>po</strong>rabimo tudi 1.<br />

<strong>na</strong>pada (samo tajnopis), glej <strong>na</strong>logo 1.25.<br />

stopnjo<br />

Koliko ključev imamo <strong>na</strong> voljo v primeru Hillove šifre<br />

Glej <strong>na</strong>logo 1.12.<br />

Za afino-Hillovo šifro glej <strong>na</strong>logo 1.24.<br />

Naj bo x 1 x 2 ... čistopis.<br />

Tokovne šifre<br />

Doslej smo obrav<strong>na</strong>vali kriptosisteme z enim samim<br />

ključem in tajnopis je imel <strong>na</strong>slednjo obliko.<br />

y = y 1 y 2 · · · = e K (x 1 )e K (x 2 ) ...<br />

Taki šifri pravimo bloč<strong>na</strong> šifra<br />

(angl. block cipher).<br />

Aleksandar Jurišić 83<br />

Aleksandar Jurišić 84<br />

Aleksandar Jurišić 85<br />

Aleksandar Jurišić 86


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Posplošitev: iz enega ključa K ∈ K <strong>na</strong>pravimo<br />

za<strong>po</strong>redje (tok) ključev. Naj bo f i funkcija, ki generira<br />

i-ti ključ:<br />

z i = f i (K, x 1 , ...,x i−1 ).<br />

Z njim izraču<strong>na</strong>mo:<br />

y i = e zi (x i ) in x i = d zi (y i ).<br />

Bloč<strong>na</strong> šifra je <strong>po</strong>seben primer tokovne<br />

šifre (kjer je z i = K za vse i ≥ 1).<br />

Sinhro<strong>na</strong> tokov<strong>na</strong> šifra je sedmerica<br />

(P, C, K, L, F, E, D) za katero velja:<br />

1. P je konč<strong>na</strong> množica možnih čistopisov,<br />

2. C je konč<strong>na</strong> množica možnih tajnopisov,<br />

3. K je konč<strong>na</strong> množica možnih ključev,<br />

4. L je konč<strong>na</strong> množica tokovne abecede,<br />

5. F = (f 1 , f 2 , ...) je generator toka ključev:<br />

f i : K × P i−1 −→ L za i ≥ 1<br />

6. Za vsak ključ z ∈ L imamo šifrirni (e z ∈ E)<br />

in odšifrirni (d z ∈ D) <strong>po</strong>stopek,<br />

tako da je d z(e z(x)) = x za vsak x ∈ P.<br />

Za šifriranje čistopisa x 1 x 2 ... za<strong>po</strong>redno raču<strong>na</strong>mo<br />

z 1 ,y 1 ,z 2 , y 2 ,...,<br />

za odšifriranje tajnopisa y 1 y 2 . ..<br />

raču<strong>na</strong>mo<br />

z 1 ,x 1 ,z 2 , x 2 , . ...<br />

pa za<strong>po</strong>redno<br />

Tokov<strong>na</strong> šifra je periodič<strong>na</strong> s periodo d kadar, je<br />

z i+d = z i za vsak i ≥ 1<br />

(<strong>po</strong>seben primer: Vigenèrejeva šifra).<br />

Začnimo s ključi (k 1 ,...,k m ) in <strong>na</strong>j bo z i = k i za<br />

i = 1,...,m.<br />

Definiramo linearno rekurzijo stopnje m:<br />

m−1<br />

∑<br />

z i+m = z i + c j z i+j mod 2,<br />

j=1<br />

kjer so c 1 ,...,c m−1 ∈ Z 2 v<strong>na</strong>prej določene konstante.<br />

Za ustrezno izbiro konstant c 1 , ...,c m−1 ∈ Z 2 in<br />

neničelen vektor (k 1 ,...,k m ) lahko dobimo tokovno<br />

šifro s periodo 2 m − 1.<br />

Aleksandar Jurišić 87<br />

Aleksandar Jurišić 88<br />

Aleksandar Jurišić 89<br />

Aleksandar Jurišić 90<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Hitro lahko generiramo tok ključev z u<strong>po</strong>rabo LFSR<br />

(Linear Feedback Shift Register).<br />

V <strong>po</strong>mičnem registru začnemo z vektorjem<br />

(k 1 , ...,k m ).<br />

Nato <strong>na</strong> vsakem koraku <strong>na</strong>redimo <strong>na</strong>slednje:<br />

1. k 1 dodamo toku ključev (za XOR),<br />

2. k 2 , ...,k m <strong>po</strong>maknemo za <strong>eno</strong> v levo,<br />

3. ‘nov’ ključ k m izraču<strong>na</strong>mo z<br />

m−1<br />

∑<br />

c j k j+1 (to je “linear feedback ′′ ).<br />

j=0<br />

Primer:<br />

c 0 = 1, c 1 = 1, c 2 = 0, c 3 = 0,<br />

torej je k i+4 = k i + k i+1 .<br />

Izberimo k 0 = 1, k 1 = 0, k 2 = 1, k 3 = 0.<br />

Potem je k 4 = 1, k 5 = 1, k 6 = 0, . ...<br />

Naj bo k = (k 0 , k 1 ,k 2 ,k 3 ) t in<br />

⎛ ⎞<br />

0 1 0 0<br />

A := ⎜ 0 0 1 0<br />

⎟<br />

⎝ 0 0 0 1 ⎠ .<br />

1 1 0 0<br />

Torej je A(k) = (k 1 , k 2 , k 3 , k 4 ) t ,<br />

A 2 (k) = A(k 1 , k 2 , k 3 , k 4 ) t = (k 2 , k 3 , k 4 , k 5 ) t<br />

...<br />

A i (k) = (k i ,k i+1 ,k i+2 , k i+3 ) t .<br />

Najdaljša mož<strong>na</strong> perioda je 15.<br />

Enkrat dobimo:<br />

in ker je A obrnljiva<br />

A i (k) = A j (k)<br />

A i−j (k) = k<br />

Karakteristični <strong>po</strong>linom matrike A je<br />

f(x) = 1 + x + x 4 .<br />

Ker je f(x) nerazcepen, je f(x) tudi minimalni<br />

<strong>po</strong>linom matrike A.<br />

Aleksandar Jurišić 91<br />

Aleksandar Jurišić 92<br />

Aleksandar Jurišić 93<br />

Aleksandar Jurišić 94


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Red matrike A je <strong>na</strong>jmanjše <strong>na</strong>ravno število s, tako da<br />

je A s = I. Naj bo e <strong>na</strong>jmanjše <strong>na</strong>ravno število, tako<br />

da f(x) | (x e − 1). Potem je e = s.<br />

1 + x 15 = (x + 1)(x 2 + x + 1)(x 4 + x + 1)<br />

(x 4 +x 3 +1)(x 4 +x 3 +x 2 +x+1).<br />

Splošno: če hočemo, da <strong>na</strong>m rekurzija stopnje m da<br />

periodo 2 m − 1, <strong>po</strong>tem si izberemo nerazcepen f.<br />

A<strong>na</strong>liza je neodvis<strong>na</strong> od začetnega neničelnega<br />

vektorja.<br />

Kriptoa<strong>na</strong>liza LFSR tokovne šifre:<br />

u<strong>po</strong>rabimo lahko <strong>po</strong>z<strong>na</strong>n čistopis, glej <strong>na</strong>logo 1.27.<br />

• Po<strong>po</strong>l<strong>na</strong> varnost<br />

• Entropija<br />

• Lastnosti entropije<br />

• Po<strong>na</strong>rejeni ključi<br />

in <strong>eno</strong>tska razdalja<br />

• Produktne šifre<br />

2. <strong>po</strong>glavje<br />

Shannonova teorija<br />

Po<strong>po</strong>l<strong>na</strong> varnost<br />

Omenimo nekaj osnovnih princi<strong>po</strong>v za študij varnosti<br />

nekega kriptosistema:<br />

• računska varnost,<br />

• brez<strong>po</strong>goj<strong>na</strong> varnost,<br />

• dokazljiva varnost.<br />

Kriptosistem je računsko varen, če tudi <strong>na</strong>jboljši<br />

algoritem za njegovo razbitje <strong>po</strong>trebuje vsaj N<br />

operacij, kjer je N neko konkretno in zelo veliko število.<br />

Napadalec (Oskar) ima <strong>na</strong> raz<strong>po</strong>lago 18 Crayev,<br />

4000 Pentium PC-jev in 200 DEC Alpha mašin<br />

(Oskar je “računsko omejen”).<br />

Kriptosistem je dokazljivo varen (angl. provable<br />

secure), če lahko <strong>po</strong>kažemo, da se njegova varnost<br />

zreducira <strong>na</strong> varnost kriptosistema, ki je zasnovan <strong>na</strong><br />

dobro preštudiranem problemu.<br />

Ne gre torej za absolutno varnost temveč relativno<br />

varnost.<br />

Gre za <strong>po</strong>dobno strategijo kot pri dokazovanju, da je<br />

določen problem NP-<strong>po</strong>ln (v tem primeru dokažemo,<br />

da je dani problem vsaj tako težak kot nekdrugi z<strong>na</strong>ni<br />

NP-<strong>po</strong>ln problem, ne <strong>po</strong>kažemo pa, da je absolutno<br />

računsko zahteven).<br />

Aleksandar Jurišić 95<br />

Aleksandar Jurišić 96<br />

Aleksandar Jurišić 97<br />

Aleksandar Jurišić 98<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Kriptosistem je brez<strong>po</strong>gojno varen, kadar ga<br />

<strong>na</strong>padalec ne more razbiti, tudi če ima <strong>na</strong> voljo<br />

neomej<strong>eno</strong> računsko moč.<br />

Seveda je <strong>po</strong>trebno <strong>po</strong>vedati tudi, kakšne vrste<br />

<strong>na</strong>pad imamo v mislih. S<strong>po</strong>mnimo se, da zamične,<br />

substitucijske in Vigenère šifre niso varne pred<br />

<strong>na</strong>padom s <strong>po</strong>z<strong>na</strong>nim tajnopisom (če imamo <strong>na</strong> voljo<br />

dovolj tajnopisa).<br />

Razvili bomo teorijo kriptosistemov, ki so brez<strong>po</strong>gojno<br />

varni pri <strong>na</strong>padu s <strong>po</strong>z<strong>na</strong>nim tajnopisom. Izkaže se, da<br />

so vse tri šifre brez<strong>po</strong>gojno varne, kadar zašifriramo le<br />

en sam element čistopisa.<br />

Glede <strong>na</strong> to, da imamo pri brez<strong>po</strong>gojni varnosti <strong>na</strong><br />

voljo neomej<strong>eno</strong> računsko moč, je ne moremo študirati<br />

s <strong>po</strong>močjo teorije kompleksnosti, temveč s teorijo<br />

verjetnosti.<br />

Naj bosta X in Y slučajni spremenljivki,<br />

<strong>na</strong>j bo p(x) := P(X = x), p(y) := P(Y = y) in<br />

p(x ∩ y) := P((X =x) ∩ (Y =y)) produkt dogodkov.<br />

Slučajni spremenljivki X in Y sta neodvisni, če in<br />

samo, če je p(x ∩ y) = p(x)p(y) za vsak x ∈ X in<br />

y ∈ Y .<br />

Omenimo še zvezo med <strong>po</strong>gojno verjetnostjo in<br />

pa verjetnostjo produkta dveh dogodkov oziroma<br />

Bayesov izrek o <strong>po</strong>gojni verjetnosti:<br />

p(x ∩ y) = p(x/y)p(y) = p(y/x)p(x),<br />

iz katerega sledi, da sta slučajni spremenljivki X in Y<br />

neodvisni, če in samo, če je p(x/y) = p(x) za vsak x<br />

in y.<br />

Privzemimo, da vsak ključ u<strong>po</strong>rabimo za <strong>na</strong>jveč<br />

<strong>eno</strong> šifriranje, da si Anita in Bojan izbereta ključ<br />

K z neko fiksno verjetnostno <strong>po</strong>razdelitvijo p K(K)<br />

(<strong>po</strong>gosto e<strong>na</strong>komerno <strong>po</strong>razdelitvijo, ni pa ta nuj<strong>na</strong>)<br />

in <strong>na</strong>j bo p P (x) verjetnost čistopisa x.<br />

Končno, pred<strong>po</strong>stavimo, da sta izbira čistopisa in<br />

ključa neodvis<strong>na</strong> dogodka.<br />

Porazdelitvi P in K inducirata verjetnostno<br />

<strong>po</strong>razdelitev <strong>na</strong> C. Za množico vseh tajnopisov<br />

za ključ K<br />

velja<br />

in<br />

p C (y) =<br />

C(K) = {e K (x) | x ∈ P}<br />

∑<br />

{K |y∈C(K)}<br />

P(Y = y/X = x) =<br />

p K (K) p P (d k (y))<br />

∑<br />

{K |x=d K (y)}<br />

p K (K).<br />

Aleksandar Jurišić 99<br />

Aleksandar Jurišić 100<br />

Aleksandar Jurišić 101<br />

Aleksandar Jurišić 102


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Sedaj lahko izraču<strong>na</strong>mo <strong>po</strong>gojno verjetnost p P (x/y),<br />

tj. verjetnost, da je x čistopis, če je y tajnopis<br />

P(X = x/Y = y) =<br />

p P(x) ×<br />

∑<br />

{K |y∈C(K)}<br />

∑<br />

{K |x=d K (y)}<br />

p K(K)<br />

p K (K) p P (d k (y))<br />

in o<strong>po</strong>zorimo, da jo lahko izraču<strong>na</strong> vsakdo, ki <strong>po</strong>z<strong>na</strong><br />

verjetnostni <strong>po</strong>razdelitvi P in K.<br />

Primer: P = {a,b} in K = {K 1 ,K 2 , K 3 }:<br />

p P (a) = 1/4 in p P (b) = 3/4.<br />

p K (K 1 ) = 1/2 in p K (K 2 ) = p K (K 3 ) = 1/4.<br />

Enkripcija pa je definira<strong>na</strong> z e K1 (a) = 1, e K1 (b) = 2;<br />

e K2 (a)=2, e K2 (b)=3; e K3 (a)=3, e K3 (b)=4.<br />

Potem velja<br />

p C (1)= 1 8 , p C(2)= 7<br />

16 , p C(3)= 1 4 , p C(3)= 3<br />

16 .<br />

p P (a/1)=1, p P (a/2)= 1 7 , p P(a/3)= 1 4 , p P(a/4)=0.<br />

Šifra (P, K, C) je <strong>po</strong><strong>po</strong>lnoma var<strong>na</strong>, če je<br />

P(X = x/Y = y) = p P (x) za vse x ∈ P in y ∈ C,<br />

tj. “konč<strong>na</strong>” verjetnost, da smo začeli s tajnopisom<br />

x pri danem čistopisu y, je identič<strong>na</strong> z “začetno”<br />

verjetnostjo čistopisa x.<br />

V prejšnjem primeru je ta <strong>po</strong>goj zadoščen samo v<br />

primeru y = 3, ne pa tudi v preostalih treh.<br />

Izrek 1. Če ima vseh 26 ključev pri zamični<br />

šifri e<strong>na</strong>ko verjetnost 1/26, <strong>po</strong>tem je za vsako<br />

verjetnostno <strong>po</strong>razdelitev čistopisa zamič<strong>na</strong> šifra<br />

<strong>po</strong><strong>po</strong>lnoma var<strong>na</strong>.<br />

Dokaz: P = C = K = Z 26 , e K (x) = x + K mod 26:<br />

p C (y) = 1 ∑<br />

p P (y − K) = 1<br />

26<br />

26 ,<br />

K∈Z26<br />

P(Y = y/X = x) = p K (y − x mod 26)) = 1 26 .<br />

Torej lahko zaključimo, da zamične šifre ne moremo<br />

razbiti, če za vsak z<strong>na</strong>k čistopisa u<strong>po</strong>rabimo nov,<br />

<strong>na</strong>ključno izbran ključ.<br />

Aleksandar Jurišić 103<br />

Aleksandar Jurišić 104<br />

Aleksandar Jurišić 105<br />

Aleksandar Jurišić 106<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Sedaj pa preučimo <strong>po</strong><strong>po</strong>lno varnost <strong>na</strong> splošno. Pogoj<br />

P(X = x/Y = y) = p P (x) za vse x ∈ P in y ∈ C<br />

je ekvivalenten <strong>po</strong>goju<br />

P(Y = y/X = x) = p C(y) za vse x ∈ P in y ∈ C.<br />

Privzemimo (BŠS), da je p C (y) > 0 za vse y ∈ C. Ker<br />

je P(Y = y/X = x) = p C(y) > 0 za fiksen x ∈ P in<br />

za vsak y ∈ C, za vsak tajnopis y ∈ C obstaja vsaj en<br />

ključ K, da je e K (x) = y in zato velja |K| ≥ |C|.<br />

Za vsako simetrično šifro velja |C| ≥ |P|, saj smo<br />

privzeli, da je šifriranje injektivno.<br />

V primeru e<strong>na</strong>kosti (v obeh nee<strong>na</strong>kostih) je Shannon<br />

karakteriziral <strong>po</strong><strong>po</strong>lno varnost <strong>na</strong> <strong>na</strong>slednji <strong>na</strong>čin:<br />

Izrek 2. Naj bo (P, C, K, E, D) simetrič<strong>na</strong> šifra<br />

za katero velja |K| = |C| = |P|. Potem je leta<br />

<strong>po</strong><strong>po</strong>lnoma var<strong>na</strong>, če in samo, če je vsak ključ<br />

u<strong>po</strong>rabljen z e<strong>na</strong>ko verjetnostjo 1/|K| ter za vsak<br />

čistopis x in za vsak tajnopis y obstaja tak ključ K,<br />

da je e K (x) = y.<br />

Dokaz: ( =⇒ ) Ker je |K| = |C|, sledi, da za vsak<br />

čistopis x ∈ P in za vsak tajnopis y ∈ C obstaja tak<br />

ključ K, da je e K(x) = y.<br />

Naj bo n = |K|, P = {x i | 1 ≤ i ≤ n} in <strong>na</strong>j za<br />

fiksen tajnopis y oz<strong>na</strong>čimo ključe iz K tako, da je<br />

e Ki (x i) = y za i ∈ [1..n]. Po Bayesovem izreku velja<br />

P(X = x i /Y = y) =<br />

P(Y = y/x = xi) pP(xi)<br />

p C (y)<br />

= p K(K i )p P (x i )<br />

.<br />

p C (y)<br />

Če je šifra <strong>po</strong><strong>po</strong>lnoma var<strong>na</strong>, velja<br />

P(X = x i /Y = y) = p P (x i ), torej tudi<br />

p K (K i ) = p C (y), kar <strong>po</strong>meni, da je vsak ključ<br />

u<strong>po</strong>rabljen z e<strong>na</strong>ko verjetnostjo p C (y) in zato<br />

p K(K) = 1/|K|.<br />

Dokaz obrata <strong>po</strong>teka <strong>na</strong> <strong>po</strong>doben <strong>na</strong>čin kot v<br />

prejšnjem izreku.<br />

Najbolj z<strong>na</strong><strong>na</strong> realizacija <strong>po</strong><strong>po</strong>lne varnosti je<br />

Ver<strong>na</strong>mov enkratni ščit, ki ga je leta 1917<br />

patentiral Gilbert Ver<strong>na</strong>m za avtomatizirano šifriranje<br />

in odšifriranje telegrafskih s<strong>po</strong>ročil.<br />

Naj bo P = C = K = (Z 2 ) n , n ∈ N,<br />

e K (x) = x XOR K,<br />

odšifriranje pa je identično šifriranju.<br />

Shannon je prvi <strong>po</strong> 30-ih letih dokazal, da ta sistem<br />

res ne moremo razbiti.<br />

Slabi <strong>stran</strong>i te šifre sta |K| ≥ |P| in<br />

dejstvo, da moramo <strong>po</strong> vsaki u<strong>po</strong>rabi zamenjati ključ.<br />

Aleksandar Jurišić 107<br />

Aleksandar Jurišić 108<br />

Aleksandar Jurišić 109<br />

Aleksandar Jurišić 110


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Entropija<br />

Doslej <strong>na</strong>s je zanimala <strong>po</strong><strong>po</strong>l<strong>na</strong> varnost in smo se<br />

omejili <strong>na</strong> primer, kjer u<strong>po</strong>rabimo nov ključ za vsako<br />

šifriranje.<br />

Sedaj pa <strong>na</strong>s zanimata šifriranje vse več in več čistopisa<br />

z istim ključem ter verjetnost uspešnega <strong>na</strong>pada z<br />

danim tajnopisom in neomejenim časom.<br />

Leta 1948 je Shannon vpeljal v teorijo informacij<br />

entropijo, tj. matematično mero za informacije<br />

oziroma negotovosti in jo izrazil kot funkcijo<br />

verjetnostne <strong>po</strong>razdelitve.<br />

Naj bo X slučaj<strong>na</strong> spremenljivka s končno zalogo<br />

vrednosti in <strong>po</strong>razdelitvijo p(X).<br />

Kakšno informacijo smo pridobili, ko se je zgodil<br />

dogodek glede <strong>na</strong> <strong>po</strong>razdelitev p(X)<br />

oziroma ekvivalentno,<br />

če se dogodek še ni zgodil, kolikš<strong>na</strong> je negotovost izida<br />

To količino bomo im<strong>eno</strong>vali entropija spremenljivke<br />

X in jo oz<strong>na</strong>čili s H(X).<br />

Primer: metanje kovanca, p(cifra) = p(grb) = 1/2.<br />

Smiselno je reči, da je entropija enega meta en bit.<br />

Podobno je entropija n-tih metov n, saj lahko rezultat<br />

zapišemo z n biti.<br />

Še en primer: slučaj<strong>na</strong> spremenljivka X<br />

( )<br />

x1 x 2 x 3<br />

.<br />

1<br />

2<br />

1<br />

4<br />

Najbolj učinkovito zakodiranje izidov je x 1 z 0, x 2 z 10<br />

in x 3 z 11, <strong>po</strong>vprečje pa je<br />

1<br />

2 × 1 + 1 4 × 2 + 1 4 × 2 = 3/2.<br />

1<br />

4<br />

Vsak dogodek, ki se zgodi z verjetnostjo 2 −n , lahko<br />

zakodiramo z n biti.<br />

Posplošitev: dogodek, ki se zgodi z verjetnostjo p,<br />

lahko zakodiramo s približno − log 2 p biti.<br />

Naj bo X slučaj<strong>na</strong> spremenljivka s končno zalogo<br />

vrednosti in <strong>po</strong>razdelitvijo<br />

( )<br />

x1 x<br />

p(X) = 2 . .. x n<br />

.<br />

p 1 p 2 . .. p n<br />

Potem entropijo <strong>po</strong>razdelitve p(X) definiramo s<br />

n∑<br />

n∑<br />

H(X) = − p i log 2 p i = − p(X =x i ) log 2 p(X =x i ).<br />

i=1<br />

i=1<br />

Aleksandar Jurišić 111<br />

Aleksandar Jurišić 112<br />

Aleksandar Jurišić 113<br />

Aleksandar Jurišić 114<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Za p i = 0 količi<strong>na</strong> log 2 p i ni definira<strong>na</strong>, zato seštevamo<br />

samo <strong>po</strong> neničelnih p i (tudi lim x→0 x log 2 x = 0).<br />

Lahko bi izbrali drugo logaritemsko bazo, a bi se<br />

entropija spremenila le za konstantni faktor.<br />

Če je p i = 1/n za 1 ≤ i ≤ n, <strong>po</strong>tem je H(X) = log 2 n.<br />

Velja H(X) ≥ 0, e<strong>na</strong>čaj pa velja, če in samo, če je<br />

p i = 1 za nek i in p j = 0 za j ≠ i.<br />

Sedaj pa bomo študirali entropijo različnih kom<strong>po</strong>nent<br />

simetrične šifre: H(K), H(P), H(C).<br />

Za primer P = {a,b} in K = {K 1, K 2,K 3}:<br />

p P (a) = 1/4 in p P (b) = 3/4.<br />

p K (K 1 ) = 1/2 in p K (K 2 ) = p K (K 3 ) = 1/4<br />

izraču<strong>na</strong>mo<br />

H(P) = − 1 4 log 1<br />

2<br />

4 − 3 4 log 3<br />

2<br />

4 = 2 − 3 4 log 2 3 ≈ .81 .<br />

in <strong>po</strong>dobno H(K) = 1.5 ter H(C) ≈ 1.85 .<br />

Lastnosti entropije<br />

Real<strong>na</strong> funkcija f je (striktno) konkav<strong>na</strong> <strong>na</strong><br />

intervalu I, če za vse (različne) x, y ∈ I velja<br />

( ) x + y f(x) + f(y)<br />

f (>) ≥ .<br />

2<br />

2<br />

Jens<strong>eno</strong>va nee<strong>na</strong>kost: če je f zvez<strong>na</strong> in striktno<br />

konkav<strong>na</strong> funkcija <strong>na</strong> intervalu I in ∑ n<br />

i=1 a i = 1 za<br />

a i > 0, 1 ≤ i ≤ n, <strong>po</strong>tem je<br />

( n∑ ) n∑<br />

f a i x i ≥ a i f(x i ),<br />

i=1 i=1<br />

e<strong>na</strong>kost pa velja, če in samo, če je x 1 = x 2 = · · · = x n .<br />

Izrek 3. H(X) ≤ log 2 n, e<strong>na</strong>kost pa velja,<br />

če in samo, če je p 1 = p 2 = · · · = p n = 1/n.<br />

Izrek 4. H(X, Y ) ≤ H(X) + H(Y ), e<strong>na</strong>kost<br />

pa velja, če in samo, če sta X in Y neodvisni<br />

spremenljivki.<br />

Dokaz izreka 4: Naj bo<br />

( ) ( )<br />

x1 x<br />

p(X) = 2 . .. x m y1 y<br />

, p(Y ) = 2 . .. y n<br />

p 1 p 2 . .. p m q 1 q 2 . .. q n<br />

in r ij = p((X =x i)∩(Y =y j)) za i∈[1..m], j ∈[1..n].<br />

Aleksandar Jurišić 115<br />

Aleksandar Jurišić 116<br />

Aleksandar Jurišić 117<br />

Aleksandar Jurišić 118


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Potem za i ∈ [1..m] in j ∈ [1..n] velja<br />

n∑<br />

m∑<br />

p i = r ij in q j =<br />

ter<br />

in<br />

j=1<br />

i=1 j=1<br />

i=1<br />

r ij<br />

m∑ n∑<br />

H(X) + H(Y ) = − r ij log 2 p i q j<br />

H(X,Y ) − H(X) − H(Y ) =<br />

(Jensen) ≤ log 2<br />

m<br />

∑<br />

i=1 j=1<br />

m∑<br />

n∑<br />

i=1 j=1<br />

r ij log 2<br />

p i q j<br />

r ij<br />

n∑<br />

p i q j = log 2 1 = 0.<br />

E<strong>na</strong>kost velja, če in samo, če je p i q j /r ij = c<br />

za i ∈ [1..m] in j ∈ [1..n].<br />

U<strong>po</strong>števajmo še<br />

n∑ m∑ n∑ m∑<br />

r ij = p i q j = 1<br />

j=1 i=1<br />

j=1 i=1<br />

in dobimo c = 1 oziroma za vse i in j<br />

p((X = x i) ∩ (Y = y j)) = p(X = x i) p(Y = y j),<br />

kar <strong>po</strong>meni, da sta spremenljivki X in Y neodvisni.<br />

Za slučajni spremenljivki X in Y definiramo <strong>po</strong>gojni<br />

entropiji<br />

in<br />

H(X/y) = − ∑ x<br />

H(X/Y ) = − ∑ y<br />

p(x/y) log 2 p(x/y)<br />

∑<br />

p(y)p(x/y) log 2 p(x/y).<br />

x<br />

Le-ti merita <strong>po</strong>vprečno informacijo spremenljivke X,<br />

ki jo odkrijeta y oziroma Y .<br />

Izrek 5. H(X, Y ) = H(Y ) + H(X/Y ) .<br />

Dokaz: Po definiciji je P(X =x i /Y =y j ) = r ij /q j in<br />

H(Y ) + H(X/Y ) =<br />

n∑ m∑<br />

n∑ m∑<br />

= − r ij log 2 q j − q j r ij /q j log 2 r ij /q j<br />

j=1 i=1<br />

Iz izrekov 4 in 5 sledi:<br />

j=1 i=1<br />

Posledica 6. H(X/Y ) ≤ H(X),<br />

e<strong>na</strong>kost pa velja, če in samo, če sta<br />

X in Y neodvisni spremenljivki.<br />

Aleksandar Jurišić 119<br />

Aleksandar Jurišić 120<br />

Aleksandar Jurišić 121<br />

Aleksandar Jurišić 122<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Po<strong>na</strong>rejeni ključi in <strong>eno</strong>tska razdalja<br />

Pogoj<strong>na</strong> verjetnost H(K/C) meri, koliko informacije<br />

o ključu je odkrito s tajnopisom.<br />

Izrek 7. Naj bo (P, C, K, E, D) simetrič<strong>na</strong> šifra.<br />

Potem velja H(K/C) = H(K) + H(P) − H(C).<br />

Dokaz: Velja H(K, P,C) = H(C/(K,P)) +<br />

H(K, P). Ker ključ in čistopis <strong>na</strong>tanko določata<br />

tajnopis, je H(C/K, P) = 0.<br />

Ker sta P in K neodvisni spremenljivki, dobimo<br />

H(K, P,C) = H(P) + H(K) in <strong>po</strong>dobno tudi<br />

H(K, P,C) = H(K, C) ter u<strong>po</strong>rabimo še izrek 5.<br />

Napadalec privzame, da je čistopis “<strong>na</strong>ravni” jezik<br />

(npr. anglešči<strong>na</strong>) in <strong>na</strong> ta <strong>na</strong>čin odpiše mnoge<br />

ključe. Vse<strong>eno</strong> pa lahko ostane še mnogo ključev (med<br />

katerimi je le en pravi), ki jih bomo, razen pravega<br />

ključa, im<strong>eno</strong>vali <strong>po</strong><strong>na</strong>rejeni (angl. spurious).<br />

Naš cilj bo oceniti število <strong>po</strong><strong>na</strong>rejenih ključev.<br />

Naj bo H L mera <strong>po</strong>vprečne informacije <strong>na</strong> črko (angl.<br />

per letter) v “smiselnem” čistopisu (sledi bolj <strong>na</strong>tanč<strong>na</strong><br />

definicija).<br />

Če so vse črke e<strong>na</strong>ko verjetne, je<br />

H L = log 2 26 ≈ 4.70.<br />

Kot aproksimacijo prvega reda bi lahko vzeli H(P).<br />

V primeru angleškega jezika dobimo H(P) ≈ 4.19.<br />

Tudi za<strong>po</strong>redne črke v jeziku niso neodvisne, njihove<br />

korelacije pa zmanjšajo entropijo. Za aproksimacijo<br />

drugega reda bi lahko izraču<strong>na</strong>li entropijo <strong>po</strong>razdelitve<br />

parov črk in <strong>po</strong>tem delili z dve, kajti H L meri entropijo<br />

jezika L <strong>na</strong> črko.<br />

V splošnem, <strong>na</strong>j bo P n slučaj<strong>na</strong> spremenljivka,<br />

katere verjetnost<strong>na</strong> <strong>po</strong>razdelitev je e<strong>na</strong>ka verjetnostni<br />

<strong>po</strong>razdelitvi n-teric v čistopisu.<br />

Potem je entropija za <strong>na</strong>ravni jezik L definira<strong>na</strong><br />

s<br />

H(P n )<br />

H L = lim<br />

n→∞ n ,<br />

odvečnost jezika L pa z<br />

HL<br />

R L = 1 −<br />

log 2 |P| .<br />

H L meri entropijo jezika L <strong>na</strong> črko.<br />

Entropija <strong>na</strong>ključnega jezika je log 2 |P|.<br />

R L ∈ [0, 1) meri kvocient “odvečnih z<strong>na</strong>kov” in je 0 v<br />

primeru <strong>na</strong>ključnega jezika.<br />

Aleksandar Jurišić 123<br />

Aleksandar Jurišić 124<br />

Aleksandar Jurišić 125<br />

Aleksandar Jurišić 126


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Za angleški jezik je H(P 2 )/2 ≈ 3.90.<br />

Empirični rezultati kažejo, da je 1.0 ≤ H L ≤ 1.5.<br />

Če ocenimo H L z 1.25, <strong>po</strong>tem je R L ≈ .75, kar <strong>po</strong>meni,<br />

da je anglešči<strong>na</strong> 75% odveč<strong>na</strong><br />

(tj. tekst bi lahko zakodirali le z 1/4 prvotnega teksta).<br />

Podobno kot P n definiramo še C n in za y ∈ C n še<br />

K(y) = {K ∈ K | ∃x ∈ P n , p P n(x) > 0, e K (x) = y},<br />

tj. K(y) je množica ključev, za katere je y smiselno<br />

šifriranje čistopisa dolžine n,<br />

tj. množica verjetnih ključev, za katere je y tajnopis.<br />

Matematično upanje <strong>po</strong><strong>na</strong>rejenih ključev je torej<br />

s n = ∑ y∈C n p(y)(|K(y)| − 1) = ∑ y∈C n p(y)|K(y)| − 1.<br />

Izrek 8. Če je (P, C, K, E, D) šifra za katero je<br />

|C| = |P| in so vsi ključi med seboj e<strong>na</strong>kovredni,<br />

<strong>po</strong>tem za tajnopis z n z<strong>na</strong>ki (n je dovolj velik) in<br />

za matematično upanje <strong>po</strong><strong>na</strong>rjenih ključev s n<br />

velja<br />

s n ≥<br />

|K|<br />

|P| − 1. nR L<br />

Dokaz: Iz izreka 7 sledi<br />

H(K/C n ) = H(K) + H(P n ) − H(C n ).<br />

Poleg ocene H(C n ) ≤ n log 2 |C| velja za dovolj velike<br />

n tudi oce<strong>na</strong> H(P n ) ≈ nH L = n(1 − R L ) log 2 |P|.<br />

Za |C| = |P| dobimo<br />

H(K/C n ) ≥ H(K) − nR L log 2 |P|.<br />

Ocenj<strong>eno</strong> entropijo <strong>po</strong>vežemo še s <strong>po</strong><strong>na</strong>rejenimi ključi<br />

H(K/C n ) = ∑ y∈C n p(y)H(K/y) ≤ ∑ y∈C n p(y) log 2 |K(y)|<br />

≤ log 2<br />

∑<br />

y∈C n p(y)|K(y)| = log 2 (s n + 1).<br />

Des<strong>na</strong> <strong>stran</strong> nee<strong>na</strong>kosti v zadnjem izreku gre z<br />

večanjem števila n eks<strong>po</strong>nentno proti 0 (to ni limita,<br />

števila |K|, |P| in R L so fiks<strong>na</strong>, število |K| pa je<br />

običajno veliko v primerjavi s |P| R L > 1).<br />

Enotska razdalja simetrične šifre je tako število<br />

n, oz<strong>na</strong>č<strong>eno</strong> z n 0, za katerega <strong>po</strong>stane matematično<br />

upanje <strong>po</strong><strong>na</strong>rejenih ključev nič, tj. <strong>po</strong>vpreč<strong>na</strong> dolži<strong>na</strong><br />

tajnopisa, ki jo <strong>na</strong>padalec <strong>po</strong>trebuje za raču<strong>na</strong>nje<br />

ključa pri neomejenem času.<br />

Velja n 0 ≈<br />

log 2 |K|<br />

R L log 2 |P| .<br />

Aleksandar Jurišić 127<br />

Aleksandar Jurišić 128<br />

Aleksandar Jurišić 129<br />

Aleksandar Jurišić 130<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

V primeru zamenjalnega tajnopisa sta |P| = 26 in<br />

|K| = 26!. Če vzamemo R L = .75, <strong>po</strong>tem je <strong>eno</strong>tska<br />

razdalja<br />

88.4<br />

n 0 ≈<br />

.75 × 4.7 ≈ 25 .<br />

Produktne šifre<br />

Še e<strong>na</strong> Shannonova ideja v članku iz leta 1949 igra<br />

danes <strong>po</strong>membno vlogo, predvsem pri simetričnih<br />

šifrah.<br />

Zanimali <strong>na</strong>s bodo šifre, za katere C = P,<br />

tj. endomorfne šifre.<br />

Naj bosta S i = (P, P, K i , E i , D i ), i = 1, 2,<br />

endomorfni simetrični šifri. Potem je produkt<br />

sistemov S 1 in S 2 , oz<strong>na</strong>čen s S 1 × S 2 , definiran s<br />

ter<br />

in<br />

(P, P, K 1 × K 2, E, D)<br />

e (K1,K2)(x) = e K2 (e K1 (x))<br />

d (K1,K2)(y) = d K1 (e K2 (y)).<br />

Njegova verjetnost<strong>na</strong> <strong>po</strong>razdelitev pa <strong>na</strong>j bo<br />

p K(K 1,K 2) = p K1 (K 1) × p K2 (K 2),<br />

tj. ključa K 1 in K 2 izberemo neodvisno.<br />

Če sta M in S za<strong>po</strong>redoma multiplikativni tajnopis<br />

in zamični tajnopis, <strong>po</strong>tem je M × S afin tajnopis.<br />

Malce težje je <strong>po</strong>kazati, da je tudi tajnopis S ×M afin<br />

tajnopis. Ta dva tajnopisa torej komutirata.<br />

Vsi tajnopisi ne komutirajo, zato pa je produkt<br />

asociativ<strong>na</strong> operacija:<br />

(S 1 × S 2 ) × S 3 = S 1 × (S 2 × S 3 ).<br />

Aleksandar Jurišić 131<br />

Aleksandar Jurišić 132<br />

Aleksandar Jurišić 133<br />

Aleksandar Jurišić 134


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Če je (S × S =) S 2 = S, pravimo, da je sistem<br />

idem<strong>po</strong>tenten.<br />

Zamični, zamenjalni, afin, Hillov, Vigenèrov in<br />

permutacijski tajnopisi so vsi idem<strong>po</strong>tentni.<br />

Če simetrič<strong>na</strong> šifra ni idem<strong>po</strong>tent<strong>na</strong>, <strong>po</strong>tem se z<strong>na</strong><br />

zgoditi, da z nj<strong>eno</strong> iteracijo za večkrat <strong>po</strong>večamo<br />

varnost. Na tem so zasnovani DES in mnoge druge<br />

simetrične šifre.<br />

Če sta simetrični šifri S 1 in S 2 idem<strong>po</strong>tentni in obenem<br />

še komutirata, <strong>po</strong>tem se ni težko prepričati, da je tudi<br />

produkt S 1 × S 2 idem<strong>po</strong>tent<strong>na</strong> simetrič<strong>na</strong> šifra.<br />

3. <strong>po</strong>glavje<br />

Simetrični kriptosistemi<br />

• Bločne šifre, nekaj zgodovine, DES, AES<br />

• Iterativne šifre, zmenjalno-permutacijske mreže<br />

• Produkt<strong>na</strong> šifra in Fiestelova šifra<br />

• Opis šifer DES in AES<br />

• Načini delovanja (ECB, CBC, CFB, OFB) in MAC<br />

• Napadi in velika števila<br />

• 3-DES, DESX in druge simetrične bločne šifre<br />

Bločne šifre<br />

Bloč<strong>na</strong> šifra je simetrič<strong>na</strong> šifra, ki razdeli čistopis<br />

<strong>na</strong> bloke fiksne dolžine (npr. 128 bitov), in šifrira<br />

vsak blok <strong>po</strong>samično (kontrast: tekoča šifra zašifrira<br />

čistopis <strong>po</strong> z<strong>na</strong>kih – <strong>po</strong><strong>na</strong>vadi celo <strong>po</strong> bitih).<br />

Najmodernejše bločne šifre so produktne šifre, ki<br />

smo jih s<strong>po</strong>z<strong>na</strong>li v prejšnjem <strong>po</strong>glavju: kom<strong>po</strong>niranje<br />

več <strong>eno</strong>stavnih operacij, katere (vsaka <strong>po</strong>sebej) niso<br />

dovolj varne, z <strong>na</strong>m<strong>eno</strong>m, da <strong>po</strong>večamo varnost:<br />

trans<strong>po</strong>zicije, ekskluzivni ali (XOR), tabele,<br />

linearne transformacije, aritmetične operacije,<br />

modularno množenje, <strong>eno</strong>stavne substitucije.<br />

Primeri bločnih produktnih šifer: DES, AES, IDEA.<br />

Nekatere želene lastnosti bločnih šifer<br />

Varnost:<br />

• razpršitev: vsak bit tajnopisa <strong>na</strong>j bo odvisen od<br />

vseh bitov čistopisa.<br />

• zmeda: zveza med ključem ter biti tajnopisa <strong>na</strong>j bo<br />

zaplete<strong>na</strong>,<br />

• velikost ključev: mora biti majh<strong>na</strong>, toda dovolj<br />

velika da prepreči <strong>po</strong>žrešno iskanje ključa.<br />

Učinkovitost<br />

• hitro šifriranje in odšifriranje,<br />

• <strong>eno</strong>stavnost (za lažjo implementacijo in a<strong>na</strong>lizo),<br />

• primernost za hardware ali software.<br />

Aleksandar Jurišić 135<br />

Aleksandar Jurišić 136<br />

Aleksandar Jurišić 137<br />

Aleksandar Jurišić 138<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Kratka zgodovi<strong>na</strong> bločnih šifer DES in AES<br />

Konec 1960-ih: IBM – Feistelova šifra in LUCIFER.<br />

1972: NBS (sedaj NIST) izbira simetrično šifro<br />

za zaščito raču<strong>na</strong>lniških <strong>po</strong>datkov.<br />

1974: IBM razvije DES, 1975: NSA ga “<strong>po</strong>pravi”.<br />

1977: DES sprejet kot US Federal Information<br />

Processing Standard (FIPS 46).<br />

1981: DES sprejet kot US bančni standard<br />

(ANSI X3.92).<br />

1997: AES (Advanced Encryption Standard) izbor<br />

1999: izbranih 5 fi<strong>na</strong>listov za AES<br />

Natio<strong>na</strong>l Security Agency (NSA)<br />

• www.nsa.gov<br />

• ustanovlje<strong>na</strong> leta 1952,<br />

• nez<strong>na</strong><strong>na</strong> sredstva in število za<strong>po</strong>slenih (čez 100.000)<br />

• Sig<strong>na</strong>ls Intelligence (SIGINT):<br />

pridobiva tuje informacije.<br />

• Information Systems Security (INFOSEC):<br />

ščiti vse občutljive (classified) informacije,<br />

ki jih hrani ali <strong>po</strong>šilja vlada ZDA,<br />

• zelo vpliv<strong>na</strong> pri določanju izvoznih regulacij ZDA za<br />

kriptografske produkte (še <strong>po</strong>sebej šifriranje).<br />

Data Encryption Standard (DES)<br />

64 bits<br />

Plaintext<br />

Key 56 bits<br />

DES<br />

64 bits<br />

Ciphertext<br />

Ideja za DES je bila zasnova<strong>na</strong> pri IBM-u v 60-ih<br />

letih (u<strong>po</strong>rabili so koncept Claude Shanno<strong>na</strong> im<strong>eno</strong>van<br />

Lucifer).<br />

NSA je zreducirala dolžino ključev s 128 bitov <strong>na</strong> 56.<br />

V sredini 70-ih let je <strong>po</strong>stal prvi komercijalni algoritem,<br />

ki je bil objavljen z vsemi <strong>po</strong>drobnostmi (FIPS 46-2).<br />

Advanced Encryption Standard<br />

AES je ime za nov FIPS-ov simetrični (bločni)<br />

kriptosistem, ki bo <strong>na</strong>domestil DES.<br />

Leta 2000 je zanj Natio<strong>na</strong>l Institute of Standards<br />

and Technology (NIST) izbral belgijsko bločno šifro<br />

Rijndael.<br />

Dolži<strong>na</strong> ključev oziroma blokov je 128, 192 ali 256<br />

U<strong>po</strong>rabljala pa ga tudi ameriška vlada, glej<br />

http://csrc.nist.gov/encryption/aes/round2/r2re<strong>po</strong>rt.pdf.<br />

Aleksandar Jurišić 139<br />

Aleksandar Jurišić 140<br />

Aleksandar Jurišić 141<br />

Aleksandar Jurišić 142


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Običajno u<strong>po</strong>rabljamo iterativne šifre.<br />

Tipični opis:<br />

• krož<strong>na</strong> funkcija,<br />

• raz<strong>po</strong>red ključev,<br />

• šifriranje skozi N r <strong>po</strong>dobnih krogov.<br />

Naj bo K <strong>na</strong>ključni bi<strong>na</strong>rni ključ določene dolžine.<br />

K u<strong>po</strong>rabimo za konstrukcijo <strong>po</strong>dključev za vsak krog<br />

s <strong>po</strong>močjo javno z<strong>na</strong>nega algoritma.<br />

Imenujemo jih krožni ključi: K 1 ,...,K Nr .<br />

Sez<strong>na</strong>mu krožnih ključev (K 1 ,...,K Nr ) pa pravimo<br />

raz<strong>po</strong>red ključev.<br />

Krož<strong>na</strong> funkcija g ima dva argumenta:<br />

(i) krožni ključ (K r ) in (ii) tekoče stanje (w r−1 ).<br />

Naslednje stanje je definirano z w r = g(w r−1 , K r ).<br />

Začetno stanje, w 0 , <strong>na</strong>j bo čistopis x.<br />

Potem za tajnopis, y, vzamemo stanje <strong>po</strong> N r krogih:<br />

y = g(g(...g(g(x, K 1 ), K 2 ) ...,K Nr−1 )K Nr ).<br />

Da je odšifriranje možno, mora biti funkcija g<br />

injektiv<strong>na</strong> za vsak fiksen ključ K i , tj. ∃ g −1 , da je:<br />

g −1 (g(w,K), K) = w, za vse w in K.<br />

Odšifriranje opravlj<strong>eno</strong> <strong>po</strong> <strong>na</strong>slednjem <strong>po</strong>stopku:<br />

x = g −1 (g −1 (. ..g −1 (g −1 (y, K Nr ), K Nr−1 ) ...,K 2 )K 1 ).<br />

Zamenjalno-permutacijske mreže<br />

(angl. substitution-permutation network – (SPN)).<br />

Čistopis P in tajnopis C so bi<strong>na</strong>rni vektorji dolžine lm,<br />

l,m ∈ N (tj. lm je dolži<strong>na</strong> bloka).<br />

SPN je zgrajen iz dveh kom<strong>po</strong>nent (zamenjave in<br />

permutacije):<br />

π S : {0, 1} l −→ {0, 1} l ,<br />

π P : {0,...,lm} −→ {0,...,lm}.<br />

Permutacijo π S imenujemo S-škatla in z njo<br />

zamenjamo l bitov z drugimi l biti.<br />

Permutacija π P pa permutira lm bitov.<br />

Naj bo x = (x 1 , ...,x lm ) bi<strong>na</strong>rno za<strong>po</strong>redje, ki<br />

ga lahko smatramo za s<strong>po</strong>j m l-bitnih <strong>po</strong>dza<strong>po</strong>redij<br />

oz<strong>na</strong>čenih z x (1) ,...,x (m) .<br />

SPN ima N r krogov, v vsakem (razen zadnjem, ki je<br />

bistv<strong>eno</strong> drugačen) opravimo m zamenjav z π S in <strong>na</strong>to<br />

u<strong>po</strong>rabimo še π P . Pred vsako zamenjavo vključimo<br />

krožni ključ z XOR operacijo.<br />

SPN šifra<br />

l,m, N r ∈ N, π S in π P permutaciji, P = C = {0, 1} lm<br />

in K ⊆ ({0, 1} lm ) Nr+1 , ki se sestoji iz vseh možnih<br />

raz<strong>po</strong>redov ključev izpeljanih iz ključa K z u<strong>po</strong>rabo<br />

algoritma za generiranje raz<strong>po</strong>reda kjučev.<br />

Šifriramo z algoritmom SPN.<br />

Aleksandar Jurišić 143<br />

Aleksandar Jurišić 144<br />

Aleksandar Jurišić 145<br />

Aleksandar Jurišić 146<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Alg. : SPN(x,π S , π P , (K 1 , ...,K Nr+1 ))<br />

w 0 := x<br />

for r := 1 to N r − 1 do (krožno mešanje ključev)<br />

u r := w r−1 ⊕ K r<br />

for i := 1 to m do v r (i) := π S(u r (i) )<br />

w r := (v r π P (1) ,...,vr π P (lm) )<br />

(zadnji krog)<br />

u Nr := w Nr−1 ⊕ K Nr<br />

for i := 1 to m do v Nr<br />

(i)<br />

:= πS(uNr+1<br />

(i)<br />

)<br />

y := v Nr ⊕ K Nr+1<br />

output (y)<br />

w 1 S 2 2<br />

S 3<br />

x<br />

K 1<br />

u 1<br />

1<br />

S 1 S 1 2<br />

1<br />

S 3<br />

K 2<br />

u2<br />

2<br />

S 1<br />

v 1 2<br />

v 2<br />

w 2 K 3<br />

u4<br />

3<br />

S 1 S 3 2<br />

3<br />

S 3<br />

v 4<br />

w 4 K 4<br />

y<br />

S 4<br />

1<br />

S 4<br />

2<br />

S 4<br />

3<br />

Primer: <strong>na</strong>j bo l = m = N r = 4, permutaciji π S in<br />

π P pa <strong>po</strong>dani s tabelami:<br />

ter<br />

z 0 1 2 3 4 5 6 7 8 9 A B C D E F<br />

π S (z) E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7<br />

z 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16<br />

π P (z) 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16<br />

Naj bo ključ K = (k 1 ,...,k 32 ) ∈ {0, 1} 32 definiran z<br />

K = 0011 1010 1001 0100 1101 0110 0011 1111,<br />

sedaj pa izberimo še raz<strong>po</strong>red ključev tako, da je za<br />

1 ≤ r ≤ 5, krožni ključ K r izbran kot 16 za<strong>po</strong>rednih<br />

bitov ključa K z začetkom pri k 4r−3 :<br />

K 1 = 0011 1010 1001 0100<br />

K 2 = 1010 1001 0100 1101<br />

K 3 = 1001 0100 1101 0110<br />

K 4 = 0100 1101 0110 0011<br />

K 5 = 1101 0110 0011 1111<br />

Potem šifriranje čistopisa<br />

x = 0010 0110 1011 0111<br />

<strong>po</strong>teka v <strong>na</strong>slednjem vrstnem redu.<br />

Aleksandar Jurišić 147<br />

Aleksandar Jurišić 148<br />

Aleksandar Jurišić 149<br />

Aleksandar Jurišić 150


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

w 0 = 0010 0110 1011 0111, K 1 =0011 1010 1001 0100<br />

u 1 = 0001 1100 0010 0011, v 1 =0100 0101 1101 0001<br />

w 1 = 0010 1110 0000 0111, K 2 =1010 1001 0100 1101<br />

u 2 = 1000 0111 0100 1010, v 2 =0011 1000 0010 0110<br />

w 2 = 0100 0001 1011 1000, K 3 =1001 0100 1101 0110<br />

u 3 = 1101 0101 0110 1110, v 3 =1001 1111 1011 0000<br />

w 3 = 1110 0100 0110 1110, K 4 =0100 1101 0110 0011<br />

u 4 = 1010 1001 0000 1101, v 4 =0110 1010 1110 1001<br />

K 5 = 1101 0110 0011 1111, y =1011 1100 1101 0110<br />

Možno so številne varijacije SPN šifer.<br />

Na primer, <strong>na</strong>mesto ene S-škatle lahko u<strong>po</strong>rabimo<br />

različne škatle. To lahko vidimo pri DES-u, ki u<strong>po</strong>rabi<br />

8 različnih škatel.<br />

Zopet druga možnost je u<strong>po</strong>rabiti obrnljive linearne<br />

transformacije, kot zamenjavo za permutacije ali pa<br />

samo dodatek. Tak primer je AES.<br />

Feistelova šifra<br />

Feistelova šifra: r krogov (rund)<br />

(L i−1 , R i−1 ) K i<br />

−→ (L i ,R i ).<br />

kjer je L i = R i−1 in R i = L i−1 ⊕ f(R i−1 , K i ),<br />

in smo <strong>po</strong>dključe K i dobili iz osnovnega ključa K.<br />

Končamo z (R r , L r ) (in ne z (L r ,R r )), zato je šifriranje<br />

e<strong>na</strong>ko odšifriranju, le da ključe u<strong>po</strong>rabimo v obratnem<br />

vrstnem redu.<br />

Funkcija f je lahko produkt<strong>na</strong> šifra in ni nujno<br />

obrnljiva.<br />

L i-1<br />

L i<br />

En krog<br />

R i-1<br />

f<br />

+<br />

R i<br />

K i<br />

Aleksandar Jurišić 151<br />

Aleksandar Jurišić 152<br />

Aleksandar Jurišić 153<br />

Aleksandar Jurišić 154<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

input<br />

m1 m2 m64<br />

L0<br />

IP<br />

Opis šifre DES<br />

R0<br />

32 48 32<br />

K 1<br />

32<br />

+ f<br />

+<br />

L1<br />

R 1<br />

K 2<br />

f<br />

inicial<strong>na</strong><br />

permutacija<br />

L15<br />

R 15<br />

+<br />

input<br />

IP<br />

L0<br />

R 0<br />

K 1<br />

f<br />

R 1 L 1<br />

K 2<br />

f<br />

L15<br />

R 15<br />

+<br />

DES-ove konstante<br />

začet<strong>na</strong> in konč<strong>na</strong> permutacija: IP, IP −1<br />

razširitev: E (nekatere bite <strong>po</strong>novimo), permutacija P<br />

S-škatle: S 1 , S 2 ,...,S 8<br />

(tabele: 4 × 16, z elementi 0 − 15)<br />

DES-ova funkcija<br />

A<br />

Ki<br />

32<br />

48<br />

E<br />

E(A)<br />

48<br />

+<br />

6 6 6 6 6 6 6 6<br />

B 1 B 2 B3<br />

B4<br />

B5<br />

B6<br />

B B<br />

7 8<br />

S 1 S 2 S S S S S S<br />

3 4 5 6 7 8<br />

4x16<br />

C 1<br />

Raču<strong>na</strong>nje DES-ovih ključev<br />

K<br />

56 random bitov + 8 pariti-check bitov<br />

PC- 1<br />

D<br />

LS 1 LS 1<br />

LS 2 LS 2<br />

D 1<br />

PC- 2<br />

K 1<br />

+<br />

f<br />

K 16<br />

nepravil<strong>na</strong> zamenjava<br />

L16<br />

R 16<br />

K 16<br />

f<br />

L16<br />

R 16<br />

+<br />

IP -1<br />

64<br />

output<br />

inverz<strong>na</strong><br />

permutacija<br />

c 1 c 2 c 64<br />

permutacije za gen. <strong>po</strong>dključev: PC − 1, PC − 2<br />

C 1<br />

C2<br />

C C C 3 4 5 C6<br />

C7<br />

4 4 4 4 4 4 4 4<br />

P<br />

C8<br />

C 0 0<br />

K 16<br />

LS16 LS16<br />

IP -1<br />

output<br />

32<br />

f (A,K i)<br />

C16<br />

D 16<br />

PC- 2<br />

Aleksandar Jurišić 155<br />

Aleksandar Jurišić 156<br />

Aleksandar Jurišić 157<br />

Aleksandar Jurišić 158


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

20 let je DES predstavljal delovnega konja kriptografije<br />

(bločnih šifer).<br />

• do leta 1991 je NBS sprejel 45 hardwarskih<br />

implementacij za DES<br />

• geslo (PIN) za bankomat (ATM)<br />

• ZDA (Dept. of Energy, Justice Dept.,<br />

Federal Reserve System)<br />

Načini delovanja simetričnih šifer<br />

– electronic codebook mode (ECB)<br />

– cipher block chaining mode (CBC)<br />

– cipher feedback mode (CFB)<br />

– output feedback mode (OFB)<br />

Pri ECB šifriramo za<strong>po</strong>redoma blok <strong>po</strong> blok:<br />

c = c 1 , c 2 ,...,c t , kjer je c i = E k (m i ).<br />

m1 m2 m3 mt<br />

c1<br />

c2<br />

Odšifriranje: m i = D k (c i ), i = 1, 2,...,t.<br />

c3<br />

Slabost: identični bloki čistopisa se (pri istem ključu)<br />

zašifrirajo v identične bloke tajnopisa.<br />

ct<br />

Cipher Block Chaining mode – CBC<br />

čistopis/tajnopis: 64 bitni bloki x 1 , x 2 , .../y 1 , y 2 , . ..<br />

Šifriranje: y 0 := IV, y i := e K(y i−1 ⊕ x i) za i ≥ 1.<br />

IV=y 0<br />

x 1<br />

e k<br />

y 1<br />

x<br />

e k<br />

y 2<br />

2<br />

IV=y 0<br />

y 1 y 2<br />

d k<br />

d k<br />

x 1 x 2<br />

Odšifriranje: y 0 := IV, x i := y i−1 ⊕d K (y i ) za i ≥ 1.<br />

Identiče<strong>na</strong> čistopisa z različnimi IV dasta različen<br />

tajnopis. Eno-bit<strong>na</strong> <strong>na</strong>paka pri tajnopisu <strong>po</strong>kvari le<br />

odšifriranje dveh blokov.<br />

Cipher Feedback mode – CFB<br />

čistopis/tajnopis: 64 bitni bloki x 1 , x 2 , .../y 1 , y 2 , . ..<br />

y 0 :=IV, šifriranje: z i :=e K (y i−1 ), y i :=y i−1 ⊕x i , i≥1.<br />

IV=y 0<br />

e k<br />

x 1<br />

y 1<br />

e k<br />

x 2<br />

y 2<br />

IV=y 0 e k<br />

e k<br />

x 1<br />

x 2<br />

Odšifriranje (y 0 := IV, x 0 = d K (IV)):<br />

z i := d K (x i−1 ) in x i := y i ⊕ z i za i ≥ 1.<br />

CFB se u<strong>po</strong>rablja za preverjanje celovitosti s<strong>po</strong>ročila<br />

(angl. message authentication code - MAC).<br />

y 1<br />

y 2<br />

Aleksandar Jurišić 159<br />

Aleksandar Jurišić 160<br />

Aleksandar Jurišić 161<br />

Aleksandar Jurišić 162<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Output Feedback mode – OFB<br />

čistopis/tajnopis: 64 bitni bloki x 1 , x 2 , .../y 1 , y 2 , . ..<br />

Inicializacija: z 0 := IV, šifriranje:<br />

z i := e K (z i−1 ) in y i := x i ⊕ z i za i ≥ 1.<br />

Odšifriranje:(z 0 := IV)<br />

z i := e K (z i−1 ) in x i := y i ⊕ z i za i ≥ 1.<br />

OFB se u<strong>po</strong>rablja za satelitske pr<strong>eno</strong>se.<br />

Napadi <strong>na</strong> šifro DES<br />

Požrešni <strong>na</strong>pad: preverimo vseh 2 56 ključev.<br />

Leta 1993 Michael J. Wiener, Bell-Northern Research,<br />

Ka<strong>na</strong>da, predstavi učinkovito iskanje DES ključa:<br />

• diferenč<strong>na</strong> kriptoa<strong>na</strong>liza z 2 47 izbranimi čistopisi<br />

(Biham in Shamir 1989)<br />

– je učinkovita tudi <strong>na</strong> nekaterih drugih bločnih šifrah,<br />

• linear<strong>na</strong> kriptoa<strong>na</strong>liza z 2 47 <strong>po</strong>z<strong>na</strong>nimi čistopisi<br />

(Matsui 1993):<br />

Slednja <strong>na</strong>pada sta statistič<strong>na</strong>, saj <strong>po</strong>trebujeta velike<br />

količine čistopisa in ustreznega tajnopisa, da določita<br />

ključ. Pred leti sta bila <strong>na</strong>pada zanimiva le teoretično.<br />

Wienerjev cilj je bil preciz<strong>na</strong> oce<strong>na</strong> časa in de<strong>na</strong>rja<br />

<strong>po</strong>trebnega za graditev či<strong>po</strong>v za iskanje DES ključa.<br />

Požreš<strong>na</strong> metoda <strong>na</strong> prostor ključev: 2 56 korakov je<br />

zlahka paralelizira<strong>na</strong>.<br />

Dan je par čistopis-tajnopis (P,C) ter začetni ključ<br />

K. Registri za vsako iteracijo so ločeni, tako da je vse<br />

skupaj <strong>po</strong>dobno tekočemu traku:<br />

• hitrost 50 MHz<br />

• ce<strong>na</strong> $10.50 <strong>na</strong> čip<br />

• 50 milijonov ključev <strong>na</strong> sekundo<br />

• skupaj: $100 tisoč, 5760 či<strong>po</strong>v, rabi 35 ur<br />

Pri linearni kriptoa<strong>na</strong>lizi hranjenje parov zavzame<br />

131,000 Gbytov. Implementirano leta 1993: 10 dni<br />

<strong>na</strong> 12 maši<strong>na</strong>h.<br />

Po odkritju diferenčne kriptoa<strong>na</strong>lize je<br />

Don Coppersmith priz<strong>na</strong>l, da je IBM v resnici<br />

<strong>po</strong>z<strong>na</strong>l ta <strong>na</strong>pad (ne pa tudi linearno kriptoa<strong>na</strong>lizo)<br />

že ko so razvijali DES:<br />

“Po <strong>po</strong>svetovanju z NSA, smo se zavedali, da<br />

utegne objava kriterijev <strong>na</strong>črtovanja odkriti tehniko<br />

kriptoa<strong>na</strong>lize. To je močno sredstvo, ki se ga da<br />

u<strong>po</strong>rabiti proti mnogim tajnopisom.<br />

To bi zmanjšalo prednost ZDA pred drugimi <strong>na</strong><br />

<strong>po</strong>dročju kriptografije.”<br />

Aleksandar Jurišić 163<br />

Aleksandar Jurišić 164<br />

Aleksandar Jurišić 165<br />

Aleksandar Jurišić 166


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Novejši rezultati <strong>na</strong>padov<br />

DES izivi pri RSA Security (3 <strong>po</strong>z<strong>na</strong>ni PT/CT pari ):<br />

T h e u n k n o w n m e s s a g e i s : <br />

junij 1997: razbito z internetnim iskanjem (3m).<br />

julij 1998: razbito v treh dneh z DeepCrack mašino<br />

(1800 či<strong>po</strong>v; $250,000).<br />

jan. 1999: razbita v 22 h, 15 min<br />

(DeepCrack + <strong>po</strong>razdelje<strong>na</strong>.mreža).<br />

V teku (<strong>po</strong>razdelje<strong>na</strong>.mreža): RC5 – 64-bitni izziv:<br />

• pričeli konec 1997; trenut<strong>na</strong> hitrost: 2 36 ključev/sec<br />

(2 25 secs/leto; pričakovani čas: ≤ 8 let).<br />

Implementacijski <strong>na</strong>padi <strong>na</strong> DES<br />

Napadi s <strong>po</strong>močjo diferenčne a<strong>na</strong>lize <strong>po</strong>rabe moči<br />

(angl. differential <strong>po</strong>wer a<strong>na</strong>lysis (DPA) attacks):<br />

• Kocher, Jaffe, Jun 1999,<br />

• procesorjeva <strong>po</strong>raba moči je odvis<strong>na</strong> od instrukcij,<br />

• merimo <strong>po</strong>rabo moči inštrukcij, ki se izvedejo v 16-ih<br />

krogih DES-a<br />

• ≈1000 tajnopisa zadoščajo za odkritje tajnega ključa.<br />

Napadi s <strong>po</strong>močjo diferenčne a<strong>na</strong>lize <strong>na</strong>pak<br />

(angl. differential fault a<strong>na</strong>lysis (DFA) attacks):<br />

• Biham, Shamir 1997.<br />

• <strong>na</strong>pad: zberi <strong>na</strong>ključne <strong>na</strong>pake v 16-ih krogih DES-a.<br />

• ≈200 <strong>na</strong>pačnih odšifriranj zadošča za razkritje<br />

tajnega ključa.<br />

Vse o <strong>na</strong>padih je veljalo za ECB <strong>na</strong>čin.<br />

Isti čipe se da u<strong>po</strong>rabiti tudi za druge <strong>na</strong>čine, ce<strong>na</strong> in<br />

čas pa se nekoliko <strong>po</strong>večata. Recimo <strong>po</strong> Wienerju za<br />

CBC <strong>na</strong>čin rabimo $1 milijon in 4 ure.<br />

Varnost DES-a lahko <strong>eno</strong>stavno <strong>po</strong>večamo,<br />

če u<strong>po</strong>rabimo 3-DES (zakaj ne 2-DES).<br />

DES E (P, K 1 )−→DES D (DES E (P, K 1 ), K 2 )<br />

−→ DES E (DES D (DES E (P, K 1 ), K 2 ), K 3 )<br />

Za K 1 = K 2 = K 3 dobimo običajni DES.<br />

Običajno pa zamenjamo K 3 s K 1 in dobimo približno<br />

za faktor 10 13 močnejši sistem.<br />

Kako veliko je VELIKO<br />

sekund v enem letu ≈ 3 × 10 7<br />

(živimo “le” 2-3 milijarde sekund)<br />

starost <strong>na</strong>šega sončnega sistema ≈ 6 × 10 9<br />

(v letih)<br />

urinih ciklov <strong>na</strong> leto (200 MHz) ≈ 6.4 × 10 15<br />

01-za<strong>po</strong>redij dolžine 64 ≈ 2 64 ≈ 1.8 × 10 19<br />

01-za<strong>po</strong>redij dolžine 128 ≈ 2 128 ≈ 3.4 × 10 38<br />

01-za<strong>po</strong>redij dolžine 256 ≈ 2 256 ≈ 1.2 × 10 77<br />

75 številčnih praštevil ≈ 5.2 × 10 72<br />

elektronov v vsem vesolju ≈ 8.37 × 10 77<br />

mega (M) giga (G) tera (T) peta (P) exa (E)<br />

10 6 10 9 10 12 10 15 10 18<br />

Aleksandar Jurišić 167<br />

Aleksandar Jurišić 168<br />

Aleksandar Jurišić 169<br />

Aleksandar Jurišić 170<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Računska moč<br />

za <strong>na</strong>še <strong>po</strong>trebe bomo privzeli, da se smatra:<br />

• 2 40 operacij za lahko,<br />

• 2 56 operacij za dosegljivo,<br />

• 2 64 operacij za komaj da dosegljivo,<br />

• 2 80 operacij za nedosegljivo,<br />

• 2 128 operacij za <strong>po</strong><strong>po</strong>lnoma nedosegljivo.<br />

3-DES je trikrat <strong>po</strong>časnejši od DES-a.<br />

To je <strong>po</strong>gosto nesprejemljivo, zato je leta 1984 Ron<br />

Rivest predlagal DESX:<br />

DESX k.k1.k2 (x) = k2 ⊕ DES k (k1 ⊕ x).<br />

DESX ključ K = k.k1.k2 ima<br />

56 + 64 + 64 = 184 bitov.<br />

DESX trik onemogoči preizkušanje vseh<br />

mogočih ključev (glej P. Rogaway, 1996).<br />

Sedaj rabimo več kot 2 60 izbranega čistopisa.<br />

Hitrost<br />

Preneel, Rijmen, Bosselaers 1997.<br />

Softwarski časi za implementacijo <strong>na</strong><br />

90MHz Pentiumu.<br />

šifra velikost ključa hitrost<br />

(biti)<br />

DES 56 10 Gbits/sec (ASIC chip)<br />

DES 56 16.9 Mbits/sec<br />

3DES 128 6.2 Mbits/sec<br />

RC5-32/12 128 38.1 Mbits/sec<br />

Arcfour variable 110 Mbits/sec<br />

Opis šifre AES<br />

Dolži<strong>na</strong> blokov je 128 bitov, ključi imajo tri možne<br />

dolžine: 128 (N r = 10), 192 (N r = 12) in<br />

256 (N r = 14),<br />

1. Za dan čistopis x, inicializiraState z x in opravi<br />

AddRoundKey, ki z operacijo XOR prišteje<br />

RoundKey k State.<br />

2. Za vsak od N r − 1 krogov, opravi <strong>na</strong> State<br />

za<strong>po</strong>redoma zamenjavo SubBytes, operaciji<br />

ShiftRows in MixColumns ter izvede<br />

AddRoundKey.<br />

3. Naredi SubBytes, ShiftRows in<br />

AddRoundKey.<br />

4. Za tajnopis y definira State.<br />

Aleksandar Jurišić 171<br />

Aleksandar Jurišić 172<br />

Aleksandar Jurišić 173<br />

Aleksandar Jurišić 174


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Vse operacije v AES so opravljene s <strong>po</strong>močjo besed in<br />

vse spremenljivke so sestavljene iz določenega števila<br />

besed.<br />

Čistopis x je sestavljen iz 16-ih besed: x 0 , ...,x 15 .<br />

State je sestavljen iz (4 × 4)-dim. matrike besed:<br />

⎛<br />

⎞<br />

s 0,0 s 0,1 s 0,2 s 0,3<br />

⎜ s 1,0 s 1,1 s 1,2 s 1,3<br />

⎟<br />

⎝ s 2,0 s 2,1 s 2,2 s 2,3<br />

⎠ .<br />

s 3,0 s 3,1 s 3,2 s 3,3<br />

State dobi vrednosti iz x <strong>na</strong> <strong>na</strong>slednji <strong>na</strong>čin:<br />

⎛<br />

⎞ ⎛ ⎞<br />

s 0,0 s 0,1 s 0,2 s 0,3 x 0 x 4 x 8 x 12<br />

⎜ s 1,0 s 1,1 s 1,2 s 1,3<br />

⎟<br />

⎝ s 2,0 s 2,1 s 2,2 s 2,3<br />

⎠ := ⎜ x 1 x 5 x 9 x 13<br />

⎟<br />

⎝ x 2 x 6 x 10 x 14<br />

⎠ .<br />

s 3,0 s 3,1 s 3,2 s 3,3 x 3 x 7 x 11 x 15<br />

Na vsako besedo bomo gledali kot <strong>na</strong> dve šest<strong>na</strong>jstiški<br />

števili.<br />

Operacija SubBytes deluje kot zamenjava,<br />

permutacija π S {0, 1} 8 , <strong>na</strong> vsaki besedi od State<br />

<strong>po</strong>sebej, z u<strong>po</strong>rabo S-škatel.<br />

Druge simetrične šifre:<br />

MARS, RC6, Serpent, Twofish<br />

FEAL, IDEA, SAFER,<br />

RC2, RC4, RC5,<br />

LOKI, CAST, 3WAY,<br />

SHARK, SKIPJACK,<br />

GOST, TEA, ...<br />

Dvojno šifriranje<br />

2-DES: ključ k = (k 1 ,k 2 ), k 1 ,k 2 ∈ R {0, 1} 56 .<br />

Šifriranje: c = DES k2 (DES k1 (m)).<br />

m<br />

DES DES c<br />

Odšifriranje: m = DES −1<br />

k1 (DES−1 k2 (c)).<br />

k1<br />

Dolži<strong>na</strong> ključa 2-DES-a je 112, torej za <strong>po</strong>žrešno<br />

metodo <strong>po</strong>trebujemo 2 112 korakov (nemogoče).<br />

O<strong>po</strong>mba: dolži<strong>na</strong> blokov se ni spremenila.<br />

k2<br />

Aleksandar Jurišić 175<br />

Aleksandar Jurišić 176<br />

Aleksandar Jurišić 177<br />

Aleksandar Jurišić 178<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Meet-in-the-middle <strong>na</strong>pad <strong>na</strong> 2-DES<br />

• Iz c = E k2 (E k1 (m)) sledi E −1 (c) = Ek1(m).<br />

k2<br />

• Input: z<strong>na</strong>ni čp/tp pari (m 1 ,c 1 ), (m 2 , c 2 ), (m 3 , c 3 ).<br />

• Output: tajni ključ (k 1 ,k 2 ).<br />

Za vsak h 2 ∈ {0, 1} 56 , izraču<strong>na</strong>j E −1 (c1) in shrani<br />

h2<br />

[E −1 (c h2<br />

1), h 2 ] v tabelo indeksirano s prvo koordi<strong>na</strong>to.<br />

Za vsak h 1 ∈ {0, 1} 56 <strong>na</strong>redi <strong>na</strong>slednje:<br />

1. Izraču<strong>na</strong>j E h1 (m 1 ).<br />

2. Išči E h1 (m 1 ) v tabeli.<br />

3. Za vsako trčenje [E −1<br />

h2 (c 1),h 2 ] v tabeli preveri,<br />

ali je E h2 (E h1 (m 2 )) = c 2 in E h2 (E h1 (m 3 )) = c 3 .<br />

Če se to zgodi, <strong>po</strong>tem izpiši (h 1 ,h 2 ) in se vstavi.<br />

A<strong>na</strong>liza:<br />

• Število DES operacij je ≈ 256 + 2 56 = 2 57 .<br />

• Pomnilnik: 2 56 (64 + 56) bitov ≈ 983,040 TB.<br />

Zaključek:<br />

• 2-DES ima e<strong>na</strong>ko učinkovit ključ kot DES.<br />

• 2-DES ni varnejši od DES-a.<br />

Time-memory tradeoff:<br />

• Čas: 2 56+s korakov; <strong>po</strong>mnilnik: 2 56−s <strong>eno</strong>t,<br />

1 ≤ s ≤ 55. [DN]<br />

Diferenč<strong>na</strong> kriptoa<strong>na</strong>liza<br />

• <strong>po</strong>žreš<strong>na</strong> metoda in metoda z urej<strong>eno</strong> tabelo<br />

• diferenč<strong>na</strong> metoda (za 1, 3, 6 in 16 ciklov)<br />

Bločni tajnopisi s simetričnim ključem<br />

se ne u<strong>po</strong>rabljajo samo za šifriranje, temveč tudi za<br />

konstrukcijo generatorjev psevdo<strong>na</strong>ključnih praštevil,<br />

tokovnih tajnopisov, MAC in hash-funkcij.<br />

1. Požrešni <strong>na</strong>pad: preverimo vseh 2 56 ključev<br />

(ne <strong>po</strong>trebujemo s<strong>po</strong>mi<strong>na</strong>).<br />

2. Sestavimo urej<strong>eno</strong> tabelo (e K (x),K)<br />

za vseh 2 56 ključev K in<br />

<strong>po</strong>iščemo v njej tak K, da je y = e K(x).<br />

Iskanje y-a je hitro, saj je tabela ureje<strong>na</strong>.<br />

Ta metoda je praktič<strong>na</strong> samo,<br />

če lahko večkrat u<strong>po</strong>rabimo to tabelo.<br />

Aleksandar Jurišić 179<br />

Aleksandar Jurišić 180<br />

Aleksandar Jurišić 181<br />

Aleksandar Jurišić 182


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Danes <strong>po</strong>z<strong>na</strong>mo dva moč<strong>na</strong> <strong>na</strong>pada <strong>na</strong> DES:<br />

diferenčno kriptoa<strong>na</strong>lizo in linerno kriptoa<strong>na</strong>lizo.<br />

Oba sta statistič<strong>na</strong>, saj <strong>po</strong>trebujeta velike količine<br />

čistopisa in ustreznega tajnopisa, da določita ključ in<br />

zato nista praktič<strong>na</strong>.<br />

Zelo uspeš<strong>na</strong> pa sta pri manjšem številu ciklov,<br />

npr. DES z 8imi cikli lahko razbijemo z diferenčno<br />

kriptoa<strong>na</strong>lizo v nekaj minutah že <strong>na</strong> osebnem<br />

raču<strong>na</strong>lniku.<br />

Diferenčno kriptoa<strong>na</strong>lizo sta v letih 1990 in 1991<br />

vpeljala Eli Biham in Adi Shamir (izbran čistopis).<br />

Oglejmo si pare tajnopisa za katere ima čistopis<br />

določene razlike. Diferenč<strong>na</strong> kriptoa<strong>na</strong>liza spremlja<br />

spreminjanje teh razlik, ko gre čistopis skozi nekaj<br />

ciklov DES-a in je šifriran z istim klučem.<br />

Če <strong>po</strong><strong>eno</strong>stavimo, ta tehnika izbere pare čistopisa s<br />

fiksno razliko (čistopis je lahko izbran <strong>na</strong>ključno).<br />

Z u<strong>po</strong>rabo razlik tajnopisa določimo verjetnosti<br />

različnih ključev. A<strong>na</strong>liza mnogih parov tajnopisa <strong>na</strong>m<br />

<strong>na</strong> koncu da <strong>na</strong>jbolj verjeten ključ.<br />

Naj bosta X in X ∗ par čistopisov z razliko X ′ .<br />

Tajnopisa Y in Y ∗ <strong>po</strong>z<strong>na</strong>mo, zato <strong>po</strong>z<strong>na</strong>mo tudi njuno<br />

razliko Y ′ . Naj bo A (∗) := E(X (∗) ) in P(C (∗) ) = Y (∗) .<br />

Ker <strong>po</strong>z<strong>na</strong>mo tudi razširitev E ter permutacijo P,<br />

<strong>po</strong>z<strong>na</strong>mo A ′ in C ′ (glej sliko). B (∗) = A (∗) ⊕ K i ne<br />

<strong>po</strong>z<strong>na</strong>mo, vendar je nju<strong>na</strong> razlika B ′ e<strong>na</strong>ka razliki A ′ .<br />

Trik je v tem, da za dano razliko A ′ niso e<strong>na</strong>ko verjetne<br />

vse razlike C ′ . Kombi<strong>na</strong>cija razlik A ′ in C ′ sugerira<br />

vrednosti bitov izrazov A ⊕K i in A ∗ ⊕K i . Od tod pa<br />

s <strong>po</strong>močjo A in A ∗ dobimo informacije o ključu K i .<br />

X<br />

X’<br />

E<br />

E(X)<br />

A’<br />

B’<br />

+<br />

S-Box<br />

C’<br />

Y’<br />

P<br />

Y = f (X,K i)<br />

Ki<br />

Aleksandar Jurišić 183<br />

Aleksandar Jurišić 184<br />

Aleksandar Jurišić 185<br />

Aleksandar Jurišić 186<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

V primeru, ko imamo več kot en cikel, si<br />

<strong>po</strong>magamo z določenimi razlikami, ki jih imenujemo<br />

karakteristike. Le-te imajo veliko verjetnost, da<br />

<strong>na</strong>m dajo določene razlike tajnopisa ter se razširijo,<br />

tako da definirajo <strong>po</strong>t skozi več ciklov.<br />

Poglejmo si zadnji cikel DES-a<br />

(začetno in končno permutacijo lahko ignoriramo).<br />

Če <strong>po</strong>z<strong>na</strong>mo K 16 <strong>po</strong>z<strong>na</strong>mo 48 bitov origi<strong>na</strong>lnega<br />

ključa. Preostalih 8 bitov dobimo s <strong>po</strong>žrešno metodo.<br />

Diferenč<strong>na</strong> kriptoa<strong>na</strong>liza <strong>na</strong>m da K 16 .<br />

Podrobnosti:<br />

Škatla S i oziroma funkcija S i : {0, 1} 6 −→ {0, 1} 4<br />

ima za elemente cela števila z intervala [0, 15]:<br />

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />

0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7<br />

1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8<br />

S_1:<br />

2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0<br />

3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13<br />

Naj bo B j = b 1 b 2 b 3 b 4 b 5 b 6 .<br />

S i(B j) določimo <strong>na</strong> <strong>na</strong>slednji <strong>na</strong>čin.<br />

Bita b 1 b 6 določita vrstico v, biti b 2 b 3 b 4 b 5 pa stolpec s<br />

v tabeli S i , katere (v,s)-ti element je S i (B j ) ∈ {0, 1} 4<br />

Za razliko B ′ j ∈ (Z 2 ) 6 definiramo množico z 2 6<br />

elementi: ∆(B ′ j ) := {(B j, B j ⊕ B ′ j ) |B j ∈ (Z 2 ) 6 }<br />

Primer: oglejmo si škatlo S 1 in <strong>na</strong>j bo B ′ j = 110100<br />

razlika (XOR) vhodov.<br />

∆(110100) = {(000000,110100),(000001,110101),...,(111111,001011)}<br />

Za vsak urejen par izraču<strong>na</strong>mo razliko izhoda iz S 1 :<br />

npr. S 1(000000) = 1110 in S 1(110100) = 1001<br />

=⇒ razlika izhodov C ′ j = 0111.<br />

Tabela izhodnih razlik C ′ j in možnih vhodov<br />

B j za vhodno razliko B ′ j = 110100:<br />

0000 -<br />

0001 8 000011, 001111, 011110, 011111, 101010, 101011, 110111, 111011<br />

0010 16 000100, 000101, 001110, 010001, 010010, 010100, 100101, 011011,<br />

100000, 100101, 010110, 101110, 101111, 110000, 110001, 111010<br />

0011 6 000001, 000010, 010101, 100001, 110101, 110110<br />

0100 2 010011, 100111<br />

0101 -<br />

0110 -<br />

0111 12 000000, 001000, 001101, 010111, 011000, 011000, 011101, 100011,<br />

101001, 101100, 110100, 111001, 111100<br />

1000 6 001001, 001100, 011001, 101101, 111000, 111101<br />

1001 -<br />

1010 -<br />

1011 -<br />

1100 -<br />

1101 8 000110, 010000, 010110, 011100, 100010, 100100, 101000, 110010<br />

1110 -<br />

1111 6 000111, 001010, 001011, 110011, 111110, 111111<br />

Aleksandar Jurišić 187<br />

Aleksandar Jurišić 188<br />

Aleksandar Jurišić 189<br />

Aleksandar Jurišić 190


0<br />

3<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tabela izhodnih razlik in <strong>po</strong>razdelitev vhodov za<br />

vhodno razliko 110100 (števila morajo biti soda,<br />

zakaj):<br />

Za vsako škatlo S j (8 jih je) in za vsako vhodno razliko<br />

(2 6 jih je) sestavimo tako tabelo (skupaj 512 tabel).<br />

Tako smo dobili nekaj kandidatov za (K i ) j .<br />

Napad <strong>na</strong> DES s tremi cikli<br />

+<br />

L0<br />

f<br />

R<br />

K 1<br />

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111<br />

0 8 16 6 2 0 0 12 6 0 0 0 0 8 0 6<br />

Pojavi se samo 8 od 16ih možnih izhodnih vrednosti.<br />

Če pregledamo vse možnosti (za vsako škatlo S i in<br />

vsako razliko), se izkaže, da je <strong>po</strong>vpračno zastopanih<br />

samo 75-80% možnih razlik izhodov.<br />

Ta nee<strong>na</strong>komer<strong>na</strong> <strong>po</strong>razdelitev je osnova za<br />

diferenčni <strong>na</strong>pad.<br />

Velja <strong>po</strong>vdariti, da vhod<strong>na</strong> razlika ni odvis<strong>na</strong> od ključa<br />

K i (saj smo že omenili, da je A ′ = B ′ ), zato pa izhod<strong>na</strong><br />

razlika C ′ je odvis<strong>na</strong> od ključa K i .<br />

Naj bo A = A 1 ...A 8, C = C 1 ...C 8 in<br />

j ∈ {1,...,8}.<br />

Potem <strong>po</strong>iščemo razliko (C ′ ) j v tabeli za S j in (A ′ ) j , ki<br />

<strong>na</strong>m določi vse možne vhode B j iz katerih izraču<strong>na</strong>mo<br />

vse B j ⊕ A j, ki morajo vsebovati (K i) j.<br />

Primer: A 1 = 000001, A ∗ 1 = 110101 in C ′ 1 = 1101.<br />

Potem dobimo 13-to vrstico iz Tabele 1, ki vsebuje 8<br />

elementov (torej smo zožili število možnosti iz 2 6 = 64<br />

<strong>na</strong> 8).<br />

Z <strong>na</strong>slednjim parom čistopisa dobimo nove kandidate,<br />

(K i ) j pa leži v preseku novih in starih kandidatov...<br />

+<br />

+<br />

L1<br />

R 1<br />

K 2<br />

L2<br />

f<br />

f<br />

R 2<br />

K<br />

L3<br />

R 3<br />

Naj bo L 0 R 0 in L ∗ 0R ∗ 0 par čistopisa in L 3 R 3 in L ∗ 3R ∗ 3<br />

par tajnopisa za katere velja:<br />

L 3 = L 2 ⊕ f(R 2 ,K 3 ) = L 0 ⊕ f(R 0 ,K 1 ) ⊕ f(R 2 , K 3 )<br />

Aleksandar Jurišić 191<br />

Aleksandar Jurišić 192<br />

Aleksandar Jurišić 193<br />

Aleksandar Jurišić 194<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Še L ∗ 3 izrazimo <strong>na</strong> <strong>po</strong>doben <strong>na</strong>čin in dobimo<br />

L ′ 3 = L ′ 0⊕f(R 0 , K 1 )⊕f(R ∗ 0,K 1 )⊕f(R 2 ,K 3 )⊕f(R ∗ 2,K 3 )<br />

Pred<strong>po</strong>stavimo še, da je R 0 = R ∗ 0 oziroma<br />

R ′ 0 = 00 . ..0. Od tod dobimo<br />

L ′ 3 = L ′ 0 ⊕ f(R 2 , K 3 ) ⊕ f(R ∗ 2, K 3 ),<br />

L ′ 3 je razlika tajnopisov, L ′ 0 pa razlika čistopisov, torej<br />

<strong>po</strong>z<strong>na</strong>mo<br />

f(R 2 , K 3 ) ⊕ f(R ∗ 2, K 3 ) (= L ′ 0 ⊕ L ′ 3).<br />

Naj bo f(R 2 ,K 3 ) = P(C) in f(R ∗ 2,K 3 ) = P(C ∗ ),<br />

kjer sta C in C ∗ definira<strong>na</strong> e<strong>na</strong>ko kot prej<br />

(izhoda iz S škatel <strong>po</strong> tretjem ciklu). Potem je<br />

C ′ = C ⊕ C ∗ = P −1 (R ′ 3 ⊕ L ′ 0).<br />

Poz<strong>na</strong>mo tudi R 2 = R 3 in R ∗ 2 = R ∗ 3, saj sta R 3 in R ∗ 3<br />

dela tajnopisa.<br />

Torej smo prevedli kriptoa<strong>na</strong>lizo DES-a s tremi cikli<br />

<strong>na</strong> diferenčno kriptoa<strong>na</strong>lizo DES-a z enim ciklom.<br />

∆=L<br />

+<br />

∆=0<br />

∆=L XOR 0<br />

Napad <strong>na</strong> DES s 6-imi cikli<br />

f<br />

(a)<br />

K i<br />

∆=0<br />

∆=0<br />

∆=0<br />

∆=L<br />

+<br />

∆=Y<br />

f<br />

K i<br />

∆=X<br />

∆=X<br />

∆=L XOR 0<br />

∆=X<br />

(a) Leva <strong>stran</strong> je karkoli, des<strong>na</strong> razlika pa je 0.<br />

To je trivial<strong>na</strong> karakteristika in velja z verjetnostjo 1.<br />

(b) Leva <strong>stran</strong> je karkoli, des<strong>na</strong> vhod<strong>na</strong> razlika pa je<br />

0x60000000 (vhoda se razlikujeta <strong>na</strong> 1. in 3. bitu).<br />

Verjetnost, da bosta izhodni razliki 0x60000000 in<br />

0x00808200 je e<strong>na</strong>ka 14/64.<br />

(b)<br />

Karakteristika za n-ciklov, n ∈ N, je sez<strong>na</strong>m<br />

L ′ 0,R ′ 0, L ′ 1, R ′ 1,p 1 ,...,L ′ n, R ′ n,p n ,<br />

z <strong>na</strong>slednjimi lastnostmi:<br />

• L ′ i = R ′ i−1 za 1 ≤ i ≤ n.<br />

• za 1 ≤ i ≤ n izberimo (L i−1 ,R i−1 ) in (L ∗ i−1,Ri−1),<br />

∗<br />

tako da je L i−1 ⊕L ∗ i−1 = L′ i−1 in R i−1 ⊕Ri−1 ∗ = R′ i−1 .<br />

Izraču<strong>na</strong>jmo (L i , R i ) in (L ∗ i ,R∗ i ) z enim ciklom<br />

DES-a. Potem je verjetnost, da je L i ⊕ L ∗ i = L ′ i<br />

in R i ⊕ Ri ∗ = R i ′ <strong>na</strong>tanko p i .<br />

Verjetnost karakteristike je p = p 1 × · · · × p n .<br />

Aleksandar Jurišić 195<br />

Aleksandar Jurišić 196<br />

Aleksandar Jurišić 197<br />

Aleksandar Jurišić 198


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Začnimo s karakteristiko s tremi cikli:<br />

L ′ 0 = 0x40080000, R ′ 0 = 0x04000000<br />

L ′ 1 = 0x40000000, R ′ 1 = 0x00000000 p = 1/4<br />

L ′ 2 = 0x00000000, R ′ 2 = 0x04000000 p = 1<br />

L ′ 3 = 0x40080000, R ′ 2 = 0x04000000 p = 1/4<br />

Potem velja<br />

L ′ 6 = L ′ 3⊕f(R 3 , K 4 )⊕f(R ∗ 3,K 4 )⊕f(R 5 ,K 6 )⊕f(R ∗ 5,K 6 )<br />

Iz karakteristike ocenimo L ′ 3 = 0x04000000 in<br />

R ′ 3 = 0x40080000 z verjetnostjo 1/16.<br />

Od tod dobimo razliko vhodov v S škatle 4. cikla:<br />

001000000000000001010000...0.<br />

Razlike vhodov v škatle S 2 , S 5 , S 6 , S 7 in S 8 so 000000.<br />

To <strong>na</strong>m omogoči, da z verjetnostjo 1/16 določimo v<br />

6-tem ciklu 30 bitov origi<strong>na</strong>lnega ključa.<br />

V tabelah ne smemo nikoli <strong>na</strong>leteti <strong>na</strong> prazno vrstico<br />

(filtracija). Tako izključimo približno 2/3 <strong>na</strong>pačnih<br />

parov, med preostalimi pa je približno 1/6 pravilnih.<br />

...<br />

Drugi primeri diferenčne kriptoa<strong>na</strong>lize<br />

Iste tehnike <strong>na</strong>padov <strong>na</strong> DES lahko u<strong>po</strong>rabimo tudi<br />

kadar imamo več kot 6 ciklov.<br />

DES z n cikli <strong>po</strong>trebuje 2 m izbranega čistopisa:<br />

n m<br />

--------<br />

8 14<br />

10 24<br />

12 31<br />

14 39<br />

16 47<br />

Na diferenčno kriptoa<strong>na</strong>lizo so občutljivi tudi drugi<br />

algoritmi s substitucijami in permutacijami, kot <strong>na</strong><br />

primer FEAL, REDOC-II in LOKI.<br />

Napad <strong>na</strong> DES s 16-imi cikli<br />

Bihan in Shamir sta u<strong>po</strong>rabila karakteristiko s<br />

13-imi cikli in nekaj trikov v zadnjem ciklu.<br />

Še več, z zvijačami sta dobila 56-bitni ključ, ki sta ga<br />

lahko testirala takoj (in se s tem izognila <strong>po</strong>trebi <strong>po</strong><br />

števcih). S tem sta dobila linearno verjetnost za uspeh,<br />

tj. če je <strong>na</strong> voljo 1000 krat manj parov, imamo 1000<br />

manj možnosti da <strong>na</strong>jdemo pravi ključ.<br />

Aleksandar Jurišić 199<br />

Aleksandar Jurišić 200<br />

Aleksandar Jurišić 201<br />

Aleksandar Jurišić 202<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Omenili smo že, da <strong>na</strong>jboljši <strong>na</strong>pad za DES s 16-<br />

imi cikli <strong>po</strong>trebuje 2 47 izbranih čistopisov. Lahko pa<br />

ga spremenimo v <strong>na</strong>pad z 2 55 <strong>po</strong>z<strong>na</strong>nega čistopisa,<br />

njegova a<strong>na</strong>liza pa <strong>po</strong>trebuje 2 37 DES operacij.<br />

Diferenčni <strong>na</strong>pad je odvisen predvsem od strukture S<br />

škatel. Izkaže se, da so DES-ove škatle zoptimizirane<br />

proti takemu <strong>na</strong>padu.<br />

Varnost DES-a lahko izboljšamo s tem, da <strong>po</strong>večamo<br />

število ciklov. Vendar pa diferenč<strong>na</strong> kriptoa<strong>na</strong>liza<br />

DES-a s 17-imi ali 18-imi cikli <strong>po</strong>trebuje toliko časa<br />

kot <strong>po</strong>žreš<strong>na</strong> metoda (več ciklov nima smisla).<br />

4. <strong>po</strong>glavje<br />

RSA sistem in faktorizacija<br />

• Uvod<br />

– <strong>po</strong>mankljivosti simetrične kriptografije<br />

– kriptografija z javnimi ključi<br />

• Teorija števil<br />

• Opis in implementacija RSA<br />

• Gostota praštevil<br />

• Generiranje praštevil<br />

• Gaussov izrek (o kvadratni recipročnosti)<br />

Uvod<br />

Pomankljivosti simetrične kriptografije<br />

Sodelujoči si delijo tajno informacijo.<br />

varni ka<strong>na</strong>l<br />

Anita<br />

javni ka<strong>na</strong>l<br />

Bojan<br />

Oskar<br />

Dogovor o ključu<br />

Kako Anita in Bojan vz<strong>po</strong>stavita tajni ključ k<br />

1. metoda: delitev <strong>po</strong>int-to-<strong>po</strong>int<br />

A<br />

k<br />

varen ka<strong>na</strong>l<br />

Varni ka<strong>na</strong>l je lahko:<br />

– kurir<br />

– izmenjava <strong>na</strong> štiri oči (v temnem hodniku/ulici)<br />

To ni praktično za večje aplikacije.<br />

B<br />

Aleksandar Jurišić 203<br />

Aleksandar Jurišić 204<br />

Aleksandar Jurišić 205<br />

Aleksandar Jurišić 206


v<br />

v<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

2. metoda: z neodvisnim centrom zaupanja T<br />

– Vsak u<strong>po</strong>rabnik A deli tajni ključ k AT s<br />

centrom zaupanja T za simetrično šifrirno shemo E.<br />

– Za vz<strong>po</strong>stavitev tega ključa mora A obiskati<br />

center zaupanja T samo enkrat.<br />

– T <strong>na</strong>stopa kot center za distribucijo ključev:<br />

(angl. key distribution centre - KDC):<br />

A<br />

1. zahteva<br />

A,B<br />

2. E kAT (k)<br />

T<br />

B<br />

3. E kBT (k)<br />

1. A <strong>po</strong>šlje T zahtevek za ključ, ki si ga želi deliti z B.<br />

2. T izbere ključ k, ga zašifrira za A s ključem k AT .<br />

3. T zašifrira ključ k za osebo B s ključem k BT .<br />

Problemi pri u<strong>po</strong>rabi KDC<br />

• centru zaupanja T moramo brez<strong>po</strong>gojno zaupati:<br />

– to ga <strong>na</strong>redi za očitno tarčo.<br />

• Zahteva za stalno zvezo (on-line) s centrom T:<br />

– <strong>po</strong>tencialno ozko grlo,<br />

– kritično za zanesljivost.<br />

Upravljanje ključev<br />

• v mreži z n u<strong>po</strong>rabniki, mora vsak u<strong>po</strong>rabnik deliti<br />

različen ključ z vsakim u<strong>po</strong>rabnikom,<br />

• zato mora hraniti vsak u<strong>po</strong>rabnik n − 1 različnih<br />

tajnih ključev,<br />

• vseh tajnih ključev je ( n<br />

2)<br />

≈ n 2 /2.<br />

(Tudi preprečevanje tajenja<br />

je nepraktično.)<br />

K P KS K D<br />

K P<br />

PRODAJA<br />

M<br />

KS<br />

SKLADISCE<br />

M<br />

KD<br />

DOSTAVA<br />

M<br />

K P KS K D<br />

u<strong>po</strong>rabnik 1<br />

u<strong>po</strong>rabnik n<br />

K U 1<br />

SN 1<br />

K Un SN n<br />

Termi<strong>na</strong>l<br />

v<br />

Izracu<strong>na</strong>j<br />

y’=e K S<br />

( x’ )<br />

v<br />

Izberi <strong>na</strong>kljucen<br />

v<br />

Izracu<strong>na</strong>j<br />

v<br />

Preveri, ce je<br />

x<br />

K U = e M(SN )<br />

y=e KU ( x)<br />

x’<br />

S, y’<br />

x<br />

SN, y<br />

v<br />

Izberi <strong>na</strong>kljucen x’<br />

v<br />

Preveri, ce je<br />

v<br />

Izracu<strong>na</strong>j<br />

y’=e K S<br />

( x’ )<br />

y=e KU ( x)<br />

Pamet<strong>na</strong><br />

kartica<br />

Aleksandar Jurišić 207<br />

Aleksandar Jurišić 208<br />

Aleksandar Jurišić 209<br />

Aleksandar Jurišić 210<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Kriptografija z javnimi ključi<br />

Udeleženci si predhodno delijo overj<strong>eno</strong>/avtentično<br />

informacijo.<br />

Anita<br />

overjeni ka<strong>na</strong>l<br />

javni ka<strong>na</strong>l<br />

Oskar<br />

Bojan<br />

L. 1976 sta jo predlagala Whitfield Diffie in Martin<br />

Hellman (L. 1970 pa tudi James Ellis, ki je bil<br />

član Communication Electronics Security Group pri<br />

British Government Communications Headquarters).<br />

Generiranje para ključev<br />

Vsaka oseba A <strong>na</strong>redi <strong>na</strong>slednje:<br />

• generira par ključev (J A , S A ),<br />

• S A je A-jev zasebni/tajni ključ,<br />

• J A je A-jev javni ključ.<br />

Varnost<strong>na</strong> zahteva: za <strong>na</strong>padalca mora biti<br />

nemogoče priti do kluča S A iz ključa J A .<br />

Šifriranje z javnimi ključi<br />

overjeni ka<strong>na</strong>l<br />

J B<br />

Anita javni ka<strong>na</strong>l Bojan<br />

m c SB<br />

Oskar<br />

Da bi Bojanu <strong>po</strong>slala zaupno s<strong>po</strong>ročil m, Anita:<br />

• dobi overjenjo kopijo Bojanovega javnega kjuča J B ,<br />

• izraču<strong>na</strong> c = E(J B , m), kjer je E šifrir<strong>na</strong> funkcija,<br />

• <strong>po</strong>šlje Bojanu tajnopis c.<br />

Za odšifriranje tajnopisa c Bojan <strong>na</strong>redi <strong>na</strong>slednje<br />

• Izraču<strong>na</strong> m = D(S B , c), kjer je D odšifrir<strong>na</strong> funkcija.<br />

Digitalni <strong>po</strong>dpisi<br />

Anita<br />

S A<br />

Overjen ka<strong>na</strong>l<br />

J A<br />

Nezasciten ka<strong>na</strong>l<br />

(m,s)<br />

Oskar<br />

Bojan<br />

Za <strong>po</strong>dpis s<strong>po</strong>ročila m Anita <strong>na</strong>redi <strong>na</strong>slednje:<br />

• izraču<strong>na</strong> s = Sign(S A ,m),<br />

• <strong>po</strong>šlje m in s Bojanu.<br />

Bojan preveri Anitin <strong>po</strong>dpis s s<strong>po</strong>ročila m:<br />

• pridobi si overj<strong>eno</strong> kopijo javnega ključa J A ,<br />

• sprejme <strong>po</strong>dpis, če je Verify(J A, m, s) = Accept.<br />

Aleksandar Jurišić 211<br />

Aleksandar Jurišić 212<br />

Aleksandar Jurišić 213<br />

Aleksandar Jurišić 214


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Prednosti kriptosistemov z javnimi ključi<br />

• Ni zahteve <strong>po</strong> varnem ka<strong>na</strong>lu.<br />

• Vsak u<strong>po</strong>rabnik ima 1 par ključev.<br />

• Po<strong>eno</strong>stavlj<strong>eno</strong> upravljanje s ključi.<br />

• Omogoča preprečevanje tajenja.<br />

Pomanjkljivosti kriptosistemov z javnimi ključi<br />

• Sheme z javnimi ključi so <strong>po</strong>časnejše.<br />

• Javni ključi so večji od simetričnih.<br />

V praksi u<strong>po</strong>rabljamo skupaj sheme s simetričnimi in<br />

javnimi ključi in jim rečemo hibridne sheme<br />

Primer: Da bi Bojanu <strong>po</strong>slala <strong>po</strong>dpisano<br />

tajno s<strong>po</strong>ročilo m, Anita <strong>na</strong>redi <strong>na</strong>slednje:<br />

• izraču<strong>na</strong> s = Sign(S A ,m),<br />

• izbere tajni ključ k simetrične šifrirne sheme (AES),<br />

• pridobi overj<strong>eno</strong> kopijo Bojanovega javnega ključa J B ,<br />

• <strong>po</strong>šlje c 1 = E(J B, k), c 2 = AES(k, (m, s)).<br />

Za odkritje s<strong>po</strong>ročila m in preverjanje avtentičnosti,<br />

Bojan:<br />

• odšifrira c 1 : k = D(S B ,c 1 ),<br />

• odšifrira c 2 z u<strong>po</strong>rabo ključa k, da dobi (m, s),<br />

• pridobi overj<strong>eno</strong> kopijo javnega ključa J A ,<br />

• preveri <strong>po</strong>dpis s s<strong>po</strong>ročila m.<br />

Že l. 1977 so Ro<strong>na</strong>ld L. Rivest, Adi Shamir in<br />

Leo<strong>na</strong>rd M. Adleman <strong>na</strong>redili prvo realizacijo<br />

takšnega kriptosistema (RSA)<br />

(tajno pa že l. 1973 C. Cocks pri GCHQ).<br />

Temu so sledili številni drugi nesimetrični<br />

kriptosistemi, med katerimi pa so danes<br />

<strong>na</strong>jbolj <strong>po</strong>membni <strong>na</strong>slednji:<br />

• RSA (faktorizacija),<br />

• Merkle-Hellman K<strong>na</strong>psack (metoda <strong>na</strong>hrbtnika)<br />

• Chor-Rivest<br />

• McEliece (linearne kode),<br />

• ElGamal (diskretni logaritem),<br />

• eliptične krivulje.<br />

Javni kriptosistemi niso nikoli brez<strong>po</strong>gojno varni, zato<br />

študiramo računsko/časovno zahtevne sisteme.<br />

Teorija števil<br />

Evklidov algoritem in reševanje<br />

Diofantske e<strong>na</strong>čbe<br />

ax + by = d,<br />

kjer D(a,b) |d.<br />

Evklidov algoritem je zasnovan <strong>na</strong> preprostem dejstvu,<br />

da iz k |a in k |b sledi k |a − b.<br />

Če je D(a,b) = 1 in <strong>po</strong>z<strong>na</strong>mo <strong>eno</strong> rešitev (x 0 ,y 0 ), tj.<br />

ax 0 + by 0 = d,<br />

<strong>po</strong>tem ima <strong>po</strong>ljub<strong>na</strong> rešitev (x,y) <strong>na</strong>slednjo obliko:<br />

x = x 0 − kb, y = y 0 + ka, za k ∈ Z.<br />

Aleksandar Jurišić 215<br />

Aleksandar Jurišić 216<br />

Aleksandar Jurišić 217<br />

Aleksandar Jurišić 218<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Zgodovi<strong>na</strong> Evklidovega algoritma<br />

Evklidov algoritem <strong>po</strong>išče <strong>na</strong>jvečji skupni delitelj dveh<br />

<strong>na</strong>ravnih števil in je zasnovan <strong>na</strong> dejstvu, da če število<br />

d deli števili a in b, <strong>po</strong>tem deli tudi njuno razliko a−b.<br />

V literaturi <strong>na</strong>letimo <strong>na</strong>nj prvič 300 p.n.š. v 7. knjigi<br />

Evklidovih Elementov.<br />

Nakateri strokovnjaki so mnenja, da je njegov avtor<br />

Eudoxus (c. 375 p.n.š.). Gre za <strong>na</strong>jstarejši netrivialen<br />

algoritem, ki je preživel do da<strong>na</strong>šnjih dni (glej Knuth).<br />

Eno rešitev lahko <strong>po</strong>iščemo z<br />

razširjenim Evklidovim algoritmom.<br />

Privzemimo, da je a > b in zapišimo zgornjo e<strong>na</strong>čbo<br />

malo bolj splošno (z za<strong>po</strong>redji):<br />

ap i + bq i = r i.<br />

Poiščimo dve trivialni rešitvi:<br />

in<br />

p 1 = 1, q 1 = 0, r 1 = a<br />

p 2 = 0, q 2 = 1, r 2 = b.<br />

Zaradi rekurzije<br />

r i+1 = r i − s i r i−1<br />

(kjer je s i izbran tako, da je r i+1 < r i )<br />

si lahko izberemo še<br />

p i+1 = p i − s i p i−1 in q i+1 = q i − s i q i−1 .<br />

Ko raču<strong>na</strong>mo a −1 (<strong>po</strong> modulu praštevila p), raču<strong>na</strong>mo<br />

samo r i ter p i (ne pa tudi q i ).<br />

Zgled za razširjeni algoritem:<br />

4864 = 1·3458+1406 p 2 := p 1 − 1 · p 0 = 1<br />

3458 = 2·1406+646 p 3 := p 2 − 2 · p 1 = −2<br />

1406 = 2·646+114 p 4 := p 3 − 2 · p 2 = 5<br />

646 = 5·114+76 p 5 := p 4 − 5 · p 3 = −27<br />

114 = 1·76+38 p 6 := p 5 − 1 · p 4 = 32<br />

76 = 2·38+0 p 7 := p 6 − 2 · p 5 = −91<br />

Aleksandar Jurišić 219<br />

Aleksandar Jurišić 220<br />

Aleksandar Jurišić 221<br />

Aleksandar Jurišić 222


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

4864 = 1·3458+1406 p 2 = 1 q 2 = −1<br />

3458 = 2·1406+646 p 3 = −2 q 3 = 3<br />

1406 = 2·646+114 p 4 = 5 q 4 = −7<br />

646 = 5·114+76 p 5 = −27 q 5 = 38<br />

114 = 1·76+38 p 6 = 32 q 6 = −45<br />

76 = 2·38+0 p 7 = −91 q 7 = 128<br />

4864 · (−91) + 3458 · (128) = 38<br />

Čeprav u<strong>po</strong>rabljamo ta algoritem že stoletja, pa je<br />

presenetljivo, da ni vedno <strong>na</strong>jboljša metoda za iskanje<br />

<strong>na</strong>jvečjega skupnega delitelja.<br />

R. Silver in J. Terzian sta leta 1962<br />

(v lit. J. Stein, J. Comp. Phys. 1 (1967), 397-405)<br />

predlagala bi<strong>na</strong>rni algoritem:<br />

B1. Poišči tak <strong>na</strong>jvečji k ∈ Z, da bosta števili a<br />

in b deljivi z 2 k ; a ← a/2 k in b ← b/2 k , K ← 2 k .<br />

B2. Dokler 2|a <strong>po</strong><strong>na</strong>vljaj a ← a/2 in dokler 2|b<br />

<strong>po</strong><strong>na</strong>vljaj b ← a/2.<br />

B3. Če je a = b, je D(a,b) = a ∗ K, sicer pa v<br />

primeru a > b, priredi a ← a−b, sicer b ← b−a<br />

in se vrni <strong>na</strong> korak B2.<br />

Lehmerjev algoritem deli z majhnimi <strong>na</strong>mesto<br />

velikimi števili (izboljšave J. Sorenson, Jaebelan,...).<br />

Dobro vprašanje je kako prenesti te ideje v GF(2 n ).<br />

R. Schroeppel je že <strong>na</strong>redil prvi korak s svojim<br />

algoritmom almost inverse.<br />

Kitajski izrek o ostankih. Če so števila<br />

m 1 , m 2 ,...,m r paroma tuja, tj. D(m i ,m j )=1 za i≠j,<br />

in a 1 ,a 2 ,...,a r ∈ Z, <strong>po</strong>tem ima sistem kongruenc<br />

x ≡ a 1 (mod m 1 )<br />

x ≡ a 2 (mod m 2 )<br />

.<br />

x ≡ a r (mod m r )<br />

<strong>eno</strong>lično rešitev <strong>po</strong> modulu M = m 1 · m 2 · · ·m r ,<br />

r∑<br />

x = a i · M i · y i (mod M),<br />

i=1<br />

kjer je M i = M/m i , y i = Mi<br />

−1 mod m i , i = 1,...,r.<br />

(angl. Chinese Reminder Theorem oziroma CRT)<br />

Aleksandar Jurišić 223<br />

Aleksandar Jurišić 224<br />

Aleksandar Jurišić 225<br />

Aleksandar Jurišić 226<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Red elementa g v končni multiplikativni grupi je<br />

<strong>na</strong>jmanjše celo število m tako, da g m = 1.<br />

Lagrangev izrek: Naj bo G multiplikativ<strong>na</strong> grupa<br />

reda n in g ∈ G, <strong>po</strong>tem red g deli n.<br />

Naj bo p praštevilo. Generatorju multiplikativne<br />

grupe Z ∗ p pravimo primitiven element.<br />

DN: Koliko primitivnih elementov ima Z p <br />

Naj bo α primitiven element, <strong>po</strong>tem za ∀β ∈ Z ∗ p<br />

obstaja tak i ∈ {0, 1,...,p − 2}, da je β = α i .<br />

p − 1<br />

Pokaži, da je red elementa β e<strong>na</strong>k<br />

D(p − 1,i) .<br />

Eulerjevo funkcijo ϕ definiramo s<br />

ϕ(n) = |{x ∈ N |x < n in D(x,n) = 1}|.<br />

Potem za praštevilo p, <strong>na</strong>ravno število n in <strong>po</strong>ljubni<br />

tuji si števili a in b velja<br />

ϕ(p n ) = p n − p n−1 in ϕ(ab) = ϕ(a)ϕ(b).<br />

Če <strong>po</strong>z<strong>na</strong>mo faktorizacijo števila n, <strong>po</strong>z<strong>na</strong>mo tudi<br />

ϕ(n).<br />

Fermatov izrek<br />

Za praštevilo p in b ∈ Z p velja b p ≡ b (mod p).<br />

Eulerjev izrek<br />

Če je a ∈ Z ∗ n oziroma D(n,a) = 1, <strong>po</strong>tem velja<br />

a ϕ(n) ≡ 1 (mod n).<br />

Opis in implementacija RSA<br />

Generiranje ključev: <strong>na</strong>jprej izberemo<br />

• praštevili p, q ter izraču<strong>na</strong>mo modul n := pq, in<br />

• šifrirni eks<strong>po</strong>nent e, tako da je D(e,ϕ(n))=1,<br />

<strong>na</strong>to pa izraču<strong>na</strong>mo odšifrirni eks<strong>po</strong>nent d iz<br />

kongruence<br />

ed ≡ 1 (mod ϕ(n))<br />

z razširjenim Evklidovim algoritmom<br />

(ali pa <strong>po</strong>tenciranjem).<br />

Javni ključ je (e, n), zasebni ključ pa (d, p, q).<br />

Aleksandar Jurišić 227<br />

Aleksandar Jurišić 228<br />

Aleksandar Jurišić 229<br />

Aleksandar Jurišić 230


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Šifriranje:<br />

Odšifriranje:<br />

E(e, n)(x) = x e (mod n).<br />

D(d,p,q)(y) = y d (mod n).<br />

Šifriranje in odšifriranje sta inverzni operaciji.<br />

Za x ∈ Z ∗ n to sledi iz Eulerjeve kongruence:<br />

(x e ) d ≡ x rϕ(n)+1 ≡ (x ϕ(n) ) r x ≡ x (mod n),<br />

za x ∈ Z n \Z ∗ n pa se prepričajte sami za DN.<br />

Generiranje <strong>po</strong>dpisa:<br />

za <strong>po</strong>dpis s<strong>po</strong>ročila m ∈ {0, 1} ∗ , Anita:<br />

1. izraču<strong>na</strong> M = H(m),<br />

kjer je H zgoščeval<strong>na</strong> funkcija (npr. SHA-1),<br />

2. izraču<strong>na</strong> s = M d mod n,<br />

3. Anitin <strong>po</strong>dpis za m je s.<br />

Preverjanje <strong>po</strong>dpisa:<br />

Bojan preveri Anitin <strong>po</strong>dpis s za m, tako da:<br />

1. vzame overj<strong>eno</strong> kopijo Anitinega<br />

javnega ključa (n,e),<br />

2. izraču<strong>na</strong> M = H(m),<br />

3. izraču<strong>na</strong> M ′ = s e mod n,<br />

4. sprejme (m, s) če in samo če je M = M ′ .<br />

Potenciranje z redukcijo pri RSA je <strong>eno</strong>smer<strong>na</strong> funkcija<br />

z bližnjico.<br />

Bližnjica: <strong>po</strong>z<strong>na</strong>vanje števila d oziroma ϕ(n) oziroma<br />

števil p in q.<br />

RSA v praksi<br />

• Modul n = pq mora biti dovolj velik, da je<br />

njegova faktorizacija računsko prezahtev<strong>na</strong>.<br />

• Implementacije RSA z dolžino ključev 512 bitov<br />

ne jamčijo več dolgoročne varnosti.<br />

Časov<strong>na</strong> zahtevnost računskih operacij<br />

Naj ima število n v bi<strong>na</strong>rni representaciji k bitov, tj.<br />

k = ⌊log 2 n⌋ + 1.<br />

Potem je časov<strong>na</strong> zahtevnost<br />

seštevanja O(k),<br />

Evklidovega algoritma O(k 2 ),<br />

modularne redukcije O(k 2 ),<br />

<strong>po</strong>tenciranja pa O(k 3 ).<br />

Potenciranje opravimo učinkovito z metodo<br />

“kvadriraj in množi”.<br />

Aleksandar Jurišić 231<br />

Aleksandar Jurišić 232<br />

Aleksandar Jurišić 233<br />

Aleksandar Jurišić 234<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Izbira šifrirnega eks<strong>po</strong>nenta<br />

e = 5, 17, 2 16 + 1<br />

Pospešitev odšifriranja z u<strong>po</strong>rabo kitajskega<br />

izreka o ostankih (CTR) za faktor 4:<br />

<strong>na</strong>mesto da raču<strong>na</strong>mo y d mod n direktno, <strong>na</strong>jprej<br />

izraču<strong>na</strong>mo<br />

C p :=y d mod (p−1) mod p in C q :=y d mod (q−1) mod q,<br />

<strong>na</strong>to pa <strong>po</strong> CRT še<br />

Algoritem RSA je cca. 1500-krat <strong>po</strong>časnejši od DES-a.<br />

U<strong>po</strong>rablja se za pr<strong>eno</strong>s ključev simetričnega algoritma.<br />

(Za 512-bitno število n lahko dosežemo z RSA-jem<br />

hitrost 600 Kb <strong>na</strong> sekundo, medtem ko DES zmore<br />

1 Gb <strong>na</strong> sekundo.)<br />

Nekaj lažjih <strong>na</strong>log<br />

1. Koliko množenj <strong>po</strong>trebujemo,<br />

da izraču<strong>na</strong>mo m d <br />

2. Prepričaj se, ali je dovolj, da pri RSA u<strong>po</strong>rabimo<br />

le Fermatovo kongruenco.<br />

3. Pokaži, da p | ( p<br />

i)<br />

, za 1 < i < p.<br />

4. Naj bo p praštevilo, <strong>po</strong>tem za <strong>po</strong>ljubni števili a in b<br />

velja<br />

(a + b) p ≡ a p + b p (mod p).<br />

5. Naj bo p praštevilo, <strong>po</strong>tem za <strong>po</strong>ljubno število m velja<br />

m p ≡ m (mod p).<br />

C := t p C p + t q C q mod n,<br />

kjer p |t p −1,t q in q |t p ,t q −1.<br />

Aleksandar Jurišić 235<br />

Aleksandar Jurišić 236<br />

Aleksandar Jurišić 237<br />

Aleksandar Jurišić 238


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Gostota praštevil<br />

Izrek o gostoti praštevil<br />

[de la Vallée Poussin, Hadamard, 1896]<br />

x<br />

Funkcija π(x) je asimptotično e<strong>na</strong>ka<br />

log x ,<br />

ko gre x → ∞.<br />

(angl. Prime Number Theorem oziroma PNT)<br />

Domnevo za PNT je prvi <strong>po</strong>stavil leta 1791 (še<br />

kot <strong>na</strong>jstnik) Frederic Gauss (1777-1855), za<br />

testiranje pa je kasneje u<strong>po</strong>rabljal tudi tablice Jurija<br />

Vege iz leta 1796:<br />

π(x) ≈<br />

∫ x<br />

2<br />

1<br />

log n dn .<br />

Legendre pa jo je objavil v svoji knjigi iz leta 1808:<br />

x<br />

π(x) ≈<br />

log x − 1.08366 .<br />

Namesto da bi šteli praštevila, ki so manjša ali e<strong>na</strong>ka<br />

številu n, raje <strong>po</strong>glejmo, kakš<strong>na</strong> je njihova gostota:<br />

Primerjamo<br />

z<br />

π(n)/n.<br />

π(10 10 )/10 10 = .04550525<br />

1/ ln(10 10 ) = .04342945.<br />

To je bil problem 19. stoletja.<br />

Peter Gustav Lejeune-Dirichlet (1805-1859)<br />

(začetki a<strong>na</strong>litične teorije števil): za vsaki tuji si celi<br />

števili a in b aritmetično za<strong>po</strong>redje<br />

a, a + b, a + 2b, a + 3b, ...,a + nb, ...<br />

vsebuje neskončno praštevil.<br />

Aleksandar Jurišić 239<br />

Aleksandar Jurišić 240<br />

Aleksandar Jurišić 241<br />

Aleksandar Jurišić 242<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Pafnuti Lvovich Chebyshev (1821-1884) je<br />

leta 1850 <strong>po</strong>kazal, da, če limita obstaja, <strong>po</strong>tem leži<br />

<strong>na</strong> intervalu<br />

[0.92129, 1.10555].<br />

Leta 1859 je Georg Friedrich Bernhard<br />

Riemann (1826-1866) <strong>na</strong>redil briljanten <strong>na</strong>predek<br />

<strong>na</strong> <strong>po</strong>dročju a<strong>na</strong>litične teorije števil s študijem<br />

Riemannove zeta funkcije.<br />

Leta 1896 sta končno dokazala domnevo<br />

Charles-Jean-Gustave-Nicholas<br />

de la Vallée-Poussin (1866-1962)<br />

in<br />

Jacques Hadamard (1865-1963).<br />

V Prilogi A si lahko ogledate dokaz izreka, ki sledi<br />

D. Zagieru, ki je u<strong>po</strong>rabil a<strong>na</strong>litični izrek <strong>na</strong>mesto<br />

Tauberjevih izrekov. (Newman’s Short Proof of the<br />

Prime Number Theorem, American Mathematical<br />

Monthly, October 1997, <strong>stran</strong>i 705-709).<br />

Še nekaj zanimivih referenc:<br />

J. Korevaar, On Newman’s quick way to the prime<br />

number theorem, Mathematical Intelligencer 4, 3<br />

1982, 108-115.<br />

P. Bateman and H. Diamond, A hundred years of<br />

prime numbers, American Mathematical Monthly<br />

103 1996, 729-741.<br />

Elementarni dokaz izreka o gostoti praštevil<br />

Prvi dokaz so <strong>po</strong><strong>eno</strong>stavili Landau in drugi v začetku<br />

20. stoletja. Vsi so u<strong>po</strong>rabljali zapletene metode<br />

realne in kompleksne a<strong>na</strong>lize.<br />

Leta 1949 sta Atle Selberg in Paul Erdös<br />

odkrila neodvisno elementaren dokaz (brez kompleksne<br />

a<strong>na</strong>lize).<br />

Leta 1956 je Basil Gordon dokazal izrek o gostoti<br />

praštevil s <strong>po</strong>močjo Stirlingove formule za n! .<br />

Aleksandar Jurišić 243<br />

Aleksandar Jurišić 244<br />

Aleksandar Jurišić 245<br />

Aleksandar Jurišić 246


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

The Times London, sept. 25, 1996:<br />

Selberg and Erdös agreed to publish their work in<br />

back-to-back papers in the same jour<strong>na</strong>l, explaining<br />

the work each had done and sharing the credit. But at<br />

the last minute Selberg ... raced ahead with his proof<br />

and published first. The following year Selberg won<br />

the Fields Medal for this work. Erdös was not much<br />

concerned with the competitive aspect of mathematics<br />

and was philosophical about the episode.<br />

http://www-groups.dcs.st-and.ac.uk/<br />

~history/Mathematicians/Erdos.html<br />

Posledica: Če je p n n-to praštevilo, velja<br />

n log n<br />

lim = 1.<br />

n→∞ p n<br />

Dokaz: Logaritmirajmo limito iz izreka o gostoti<br />

praštevil<br />

oziroma<br />

lim<br />

x→∞<br />

lim (log π(x) + log log x − log x) = 0<br />

x→∞<br />

{<br />

log x<br />

( )}<br />

log π(x) log log x<br />

+<br />

log x log x − 1 = 0 .<br />

Ker gre log x → ∞, velja<br />

lim<br />

x→∞<br />

{ }<br />

log π(x) log log x<br />

+<br />

log x log x − 1 = 0<br />

oziroma ker gre log log x/ log x → 0, tudi<br />

log π(x)<br />

lim = 1.<br />

x→∞ log x<br />

Pomnožimo še z limito iz izreka o gostoti praštevil in<br />

dobimo<br />

π(x) log π(x)<br />

lim<br />

= 1,<br />

x→∞ x<br />

kar pa je že žele<strong>na</strong> limita, če vzamemo x = p n oziroma<br />

π(x) = n.<br />

RSA sistem in faktorizacija<br />

• Probabilistično testiranje praštevilčnosti<br />

(<strong>po</strong>novitev Monte Carlo algoritem,<br />

Solovay-Strassen algoritem in Miller-Rabinov test)<br />

• Napadi <strong>na</strong> RSA<br />

(odšifrirni eks<strong>po</strong>nent, Las Vegas algoritem)<br />

• Rabinov kriptosistem<br />

• Algoritmi za faktorizacijo (<strong>na</strong>iv<strong>na</strong> metoda, metoda<br />

p − 1, Dixonov algoritem in kvadratno rešeto)<br />

Aleksandar Jurišić 247<br />

Aleksandar Jurišić 248<br />

Aleksandar Jurišić 249<br />

Aleksandar Jurišić 250<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Generiranje praštevil<br />

Za inicializacijo RSA kriptosistema <strong>po</strong>trebujemo velika<br />

(npr. 80-mest<strong>na</strong>) <strong>na</strong>ključ<strong>na</strong> praštevila.<br />

V praksi generiramo veliko <strong>na</strong>ključno število in<br />

testiramo, ali je praštevilo z Monte Carlo algoritmom<br />

(npr. Solovay-Stassen ali Miller-Rabin).<br />

Ti algoritmi so hitri, vendar pa so probabilistični<br />

in ne deterministični. Po izreku o gostoti praštevil<br />

je verjetnost, da je <strong>na</strong>ključno 512-bitno liho število<br />

praštevilo, približno 2/ log p ≈ 2/177.<br />

S praštevili, ki so “osnovni gradniki” matematike,<br />

so se ukvarjali učenjaki vse od antičnih časov dalje.<br />

Odločitveni problem praštevilo<br />

Za dano število n ugotovi ali je praštevilo.<br />

Leta 240 pr. n. št. se je grški matematik in filozof<br />

Eratostenes, bibliotekar aleksandrijske knjižnice,<br />

domislil prve neo<strong>po</strong>rečne metode (čas. zahtev. O(n)).<br />

V primeru zelo dolgih števil bi za rešitev tega problema<br />

<strong>po</strong>trebovali več časa kot je staro vesolje.<br />

Od tedaj so matematiki <strong>po</strong>skušali <strong>na</strong>jti algoritem,<br />

ki bi dal odgovor v smiselnem času.<br />

Karl Frederich Gauss (1777-1855) je v svoji<br />

knjigi Disquisitiones Arithmeticae (1801) zapisal:<br />

“Menim, da čast z<strong>na</strong>nosti <strong>na</strong>rekuje,<br />

da z vsemi sredstvi iščemo rešitev tako<br />

elegantnega in tako razvpitega problema.”<br />

Od prihoda raču<strong>na</strong>lnikov dalje <strong>po</strong>udarek ni več<br />

<strong>na</strong> iskanju matematične formule, ki bi dajala<br />

praštevila, ampak <strong>na</strong> iskanju učinkovitega algoritma<br />

za raz<strong>po</strong>z<strong>na</strong>vanje praštevil.<br />

Večji korak <strong>na</strong>prej je v 17. stoletju <strong>na</strong>pravil Fermat,<br />

z že omenjenim Fermatovim malim izrekom:<br />

a p−1 ≡ 1 (mod p)<br />

za vsak a ∈ N in vsako praštevilo p, ki ne deli a.<br />

Po zaslugi kriptografije so <strong>po</strong>stale raziskave problema<br />

praštevilo v zadnjih desetletjih še intenzivnejše:<br />

1976 Miller: deterministični algoritem<br />

<strong>po</strong>linomske časovne zahtevnosti<br />

(temelji <strong>na</strong> Riemannovi hi<strong>po</strong>tezi)<br />

1977 Solovay in Strassen: verjetnostni algoritem<br />

časovne zahtevnosti O(log 3 n).<br />

1980 Rabin: modifikacija Millerjevega testa<br />

v verjetnostni alg. (pravilnost dokaza<strong>na</strong>)<br />

1983 Adleman, Pomerance in Rumely:<br />

det. alg. čas. zathev. O(log n O(log log log n) )<br />

1986 Golwasser in Kilian: <strong>po</strong>linomski verj. alg. za<br />

skoraj vse <strong>po</strong>datke z u<strong>po</strong>rabo eliptičnih krivulj<br />

2002 Agrawal, Kayal in Saxe<strong>na</strong> (AKS):<br />

det. alg. s časovno zahtevnostjo O(log 12 n)<br />

v praksi O(log 6 n), tudi O(log 3 n) a brez dokaza.<br />

Aleksandar Jurišić 251<br />

Aleksandar Jurišić 252<br />

Aleksandar Jurišić 253<br />

Aleksandar Jurišić 254


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Naj bo p liho praštevilo, 0 ≤ x ≤ p − 1.<br />

Potem je x kvadratni ostanek <strong>po</strong> modulu p,<br />

tj. x ∈ QR(p), če ima kongruenca<br />

rešitev y ∈ Z p.<br />

y 2 ≡ x (mod p)<br />

Eulerjev kriterij<br />

Naj bo p liho praštevilo. Potem je<br />

x ∈ QR(p) ⇐⇒ x (p−1)/2 ≡ 1 (mod p).<br />

Torej obstaja <strong>po</strong>linomski algoritem za odločitveni<br />

problem kvadratnega ostanka.<br />

Dokaz:<br />

Naj bo p liho praštevilo in a nenegativno celo število.<br />

Potem je Legendrov simbol definiran z<br />

⎧<br />

( a<br />

⎨ 0, če p |a,<br />

= 1, če je a ∈ QR(p),<br />

p)<br />

⎩<br />

−1, sicer.<br />

Po Eulerjevem kriteriju velja<br />

( a<br />

p)<br />

≡ a (p−1)/2 (mod p).<br />

Legendrov simbol <strong>po</strong>splošimo v Jacobijev simbol.<br />

Število n <strong>na</strong>j bo celo liho število z <strong>na</strong>slednjo<br />

praštevilsko faktorizacijo n = p e1<br />

1 pe2 2 · · ·pe k<br />

k .<br />

Za nenegativno celo število a definiramo Jacobijev<br />

simbol z ( a<br />

( a<br />

) ei<br />

:= Π<br />

n)<br />

k i=1 .<br />

p i<br />

Eulerjevo psevdopraštevilo: 91 = 7 . 13, vse<strong>eno</strong><br />

pa obstaja tak a = 10, da je<br />

( 10<br />

)<br />

= −1 = 10 45 mod 91.<br />

91<br />

DN: Pokaži, da je za <strong>po</strong>ljubno sestavlj<strong>eno</strong> število n,<br />

m Eulerjevo psevdopraštevilo glede <strong>na</strong> bazo a<br />

za <strong>na</strong>jveč <strong>po</strong>lovico <strong>na</strong>ravnih števil, ki so manjša od n<br />

(glej <strong>na</strong>logo 4.14).<br />

Aleksandar Jurišić 255<br />

Aleksandar Jurišić 256<br />

Aleksandar Jurišić 257<br />

Aleksandar Jurišić 258<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

DA-<strong>na</strong>klonjen Monte Carlo algoritem je<br />

probabilistični algoritem za odločitveni problem (tj.<br />

DA/NE-problem), pri katerem je “DA” odgovor<br />

(vedno) pravilen, “NE” odgovor pa je lahko nepravilen.<br />

Verjetnost <strong>na</strong>pake za DA-<strong>na</strong>klonjen Monte<br />

Carlo algoritem je ε, če za vsak odgovor “DA”<br />

algoritem odgovori z “NE” z verjetnostjo kvečjemu ε.<br />

Solovay-Strassen algoritem<br />

( a<br />

1. Izberi <strong>na</strong>ključno število a ∈ Z n , x := .<br />

n)<br />

2. if x = 0 then return(“n je sestavlj<strong>eno</strong> število”).<br />

3. y := a (n−1)/2 mod n,<br />

if x ≡ y (mod n)<br />

then return(“n je praštevilo”)<br />

else return(“n je sestavlj<strong>eno</strong> število”).<br />

Verjetnost <strong>na</strong>pake pri Solovay-Strassen algoritmu je<br />

kvečjemu 1/2 (glej <strong>na</strong>logo 4.14 v Stinsonu).<br />

Monte Carlo verjetnostni algoritem za odločitveni<br />

problem, ali je število sestavlj<strong>eno</strong>: test <strong>po</strong>novimo<br />

m-krat z <strong>na</strong>ključnimi vrednostmi a. Verjetnost, da<br />

bo odgovor <strong>na</strong>pačen m-krat za<strong>po</strong>red <strong>na</strong>pačen je ε m ,<br />

vendar pa iz tega še ne moremo zaključiti, da je<br />

verjetnost, da je n praštevilo, 1 − ε m .<br />

Dogodek A:<br />

“<strong>na</strong>ključen lih n določene velikosti je sestavljen”<br />

in dogodek B:<br />

“algoritem odgovori ‘n je praštevilo’ m-krat za<strong>po</strong>red.”<br />

Potem očitno velja P(B/A) ≤ ε m , vendar pa <strong>na</strong>s v<br />

resnici zanima P(A/B), kar pa ni nujno isto.<br />

Naj bo N ≤ n ≤ 2N in u<strong>po</strong>rabimo izrek o gostoti<br />

praštevil<br />

2N<br />

log 2N − N<br />

log N ≈ N<br />

log N ≈ n<br />

log n .<br />

Sledi P(A) ≈ 1 − 2/ log n. Bayesovo pravilo pravi:<br />

P(A/B) = P(B/A)P(A) .<br />

P(B)<br />

Im<strong>eno</strong>valec je e<strong>na</strong>k P(B/A)P(A) + P(B/A)P(A).<br />

Aleksandar Jurišić 259<br />

Aleksandar Jurišić 260<br />

Aleksandar Jurišić 261<br />

Aleksandar Jurišić 262


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

U<strong>po</strong>števajmo še P(B/A) = 1 in dobimo<br />

P(B/A)(log n − 2)<br />

P(A/B) =<br />

P(B/A)(log n − 2) + 2 ≤<br />

≤<br />

2−m (log n−2)<br />

2 −m (log n−2) + 2 = (log n−2)<br />

log n−2 + 2 m+1,<br />

kar <strong>po</strong>meni, da gre iska<strong>na</strong> verjetnost eks<strong>po</strong>nentno<br />

proti 0.<br />

Monte Carlo verjetnostni algoritem za odločitveni<br />

problem ali je število sestavlj<strong>eno</strong>:<br />

Test <strong>po</strong>novimo k-krat z različlnimi vrednostmi a.<br />

Verjetnost, da bo ogovor k-krat za<strong>po</strong>red <strong>na</strong>pačen, je<br />

za <strong>na</strong>s ocenje<strong>na</strong> z ε k .<br />

DN: Iz <strong>na</strong>slednjega izreka izpeljite, da za izračun<br />

Jacobijevega simbola ne <strong>po</strong>trebujemo praštevilske<br />

faktorizacije števila n.<br />

Gaussov izrek<br />

Izrek o kvadratni recipročnosti (1796)<br />

Če sta p in q različni lihi praštevili, <strong>po</strong>tem velja<br />

( p<br />

)( q<br />

= (−1)<br />

q p) p−1<br />

2 ·q−1<br />

2<br />

ter za praštevilo 2<br />

( 2<br />

p)<br />

= (−1) p2 −1<br />

8 .<br />

Zakaj je ta izrek tako <strong>po</strong>memben<br />

Pomaga <strong>na</strong>m, da odgovorimo, kdaj imajo kvadratne<br />

kongruence rešitev, saj velja multiplikativno pravilo<br />

( ab<br />

) ( a<br />

)( b<br />

= .<br />

p p p)<br />

Predstavlja pa tudi nepričakovano zvezo med pari<br />

praštevil (pravilo, ki ureja praštevila).<br />

Aleksandar Jurišić 263<br />

Aleksandar Jurišić 264<br />

Aleksandar Jurišić 265<br />

Aleksandar Jurišić 266<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Eisensteinova lema. p>2 praštevilo, p̸ | q ∈ N.<br />

Naj bo A := {2, 4, 6,...,p − 1} in r a := qa mod p<br />

za a ∈ A. Potem je<br />

∑<br />

( r a<br />

q<br />

= (−1) a∈A .<br />

p)<br />

Dokaz:<br />

Za a,a ′ ∈ A, a ≠ a ′ , ne more veljati<br />

r a(−1) ra = r a ′(−1) r a ′<br />

oziroma qa ≡ ±qa ′ (mod p),<br />

saj bi od tod sledilo a = ±a ′ , kar pa ni mogoče.<br />

O<strong>po</strong>zorimo še, da so vsa števila r a (−1) ra mod p soda,<br />

torej pretečejo ravno vse elemente množice A.<br />

Od tod dobimo<br />

∏<br />

a ≡ (−1)<br />

∑ r<br />

∏<br />

r (mod p),<br />

očitno pa ne<strong>po</strong>sredno iz definicije sledi tudi<br />

q p−1<br />

2<br />

∏<br />

a ≡<br />

∏<br />

r (mod p).<br />

Torej velja q p−1<br />

2 ≡ (−1) ∑r (mod p) in <strong>po</strong> Eulerjevem<br />

kriteriju še<br />

( q<br />

p)<br />

≡ q p−1<br />

2 (mod p).<br />

Oglejmo si Eisensteinov dokaz Gaussovega izreka o<br />

kvadratni recipročnosti. Očitno velja<br />

∑ ∑⌊ qa<br />

⌋<br />

qa = p + ∑ r .<br />

p<br />

Ker so elementi a vsi sodi in je p lih, velja<br />

∑ ∑⌊ qa<br />

⌋<br />

r ≡ (mod 2)<br />

p<br />

in zato iz Eisensteinove leme sledi<br />

( q<br />

p)<br />

= (−1) ∑⌊ qa<br />

p<br />

⌋<br />

.<br />

y<br />

q F<br />

L<br />

q/2<br />

H<br />

K<br />

A p/2<br />

J<br />

y=(q/p)x<br />

D<br />

p<br />

Vsota ∑⌊ ⌋<br />

qa<br />

p je e<strong>na</strong>ka številu celoštevilčnih točk sodo<br />

x-koordi<strong>na</strong>to, ki ležijo v notranjosti trikotnika ABD.<br />

Sedaj pa si oglejmo točke z x-koordi<strong>na</strong>to večjo od p/2.<br />

Ker pa je q − 1 sod, je parnost števila ⌊ ⌋<br />

qa<br />

p točk z isto<br />

x-koordi<strong>na</strong>to <strong>po</strong>d diago<strong>na</strong>lo AB e<strong>na</strong>ko številu točk z<br />

isto sodo x-koordi<strong>na</strong>to <strong>na</strong>d diago<strong>na</strong>lo AB.<br />

B<br />

x<br />

Aleksandar Jurišić 267<br />

Aleksandar Jurišić 268<br />

Aleksandar Jurišić 269<br />

Aleksandar Jurišić 270


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

To pa je <strong>po</strong> drugi <strong>stran</strong>i e<strong>na</strong>ko številu točk <strong>po</strong>d<br />

diago<strong>na</strong>lo AB z liho x-koordi<strong>na</strong>to p − a (bijektiv<strong>na</strong><br />

kores<strong>po</strong>ndenca med točkami s sodo x-koordi<strong>na</strong>to v<br />

BHJ in liho x-koordi<strong>na</strong>to v AHK). Od tod sledi,<br />

da ima vsota ∑⌊ ⌋<br />

qa<br />

p e<strong>na</strong>ko parnost kot številu µ<br />

celoštevilčnih točk v notranjosti trikotnika AHK, tj.<br />

( q<br />

= (−1)<br />

p)<br />

µ .<br />

Če zamenjamo p in q, dobimo še število ν celoštevilčnih<br />

točk v notranjosti trikotnika AHL, kar <strong>na</strong>m da<br />

( p<br />

q)<br />

= (−1) ν<br />

in skupaj s prejšnjo relacijo Gaussov izrek.<br />

Še en Monte Carlo algoritem za testiranje<br />

sestavlj<strong>eno</strong>sti števil.<br />

Miller-Rabinov test: testiramo liho število n.<br />

1. n − 1 = 2 k m, kjer je m liho število,<br />

2. izberemo <strong>na</strong>ključno <strong>na</strong>ravno število a < n,<br />

3. izraču<strong>na</strong>mo b ≡ a m (mod n),<br />

4. if b ≡ 1 (mod n) then n je praštevilo; exit;<br />

5. for i = 0 to k − 1 do<br />

if b ≡ −1 (mod n)<br />

then n je praštevilo;<br />

exit;<br />

else b ≡ b 2 (mod n),<br />

7. število n je sestavlj<strong>eno</strong>.<br />

Izrek: Miller-Rabinov algoritem<br />

za problem sestavljenih števil je<br />

DA-<strong>na</strong>klonjen Monte Carlo algoritem.<br />

Dokaz: Pred<strong>po</strong>stavimo, da algoritem odgovori<br />

“n je sestavlj<strong>eno</strong> število” za neko praštevilo p.<br />

Potem je a m ≡/ 1 (mod n).<br />

Sledi a 2im ≡/ − 1 (mod n) za i ∈ {0, 1,...,k − 1}.<br />

Ker je n = 2 k m + 1 praštevilo, iz Fermatovega izreka<br />

sledi<br />

a 2km ≡ 1 (mod n)<br />

in je a 2k−1m koren od 1 <strong>po</strong> modulu n.<br />

Iz x 2 ≡ 1 (mod n) oziroma n|x 2 − 1 = (x − 1)(x + 1)<br />

sledi<br />

x ≡ 1 (mod n) ali x ≡ −1 (mod n)<br />

oziroma v <strong>na</strong>šem primeru a 2k−1m ≡ 1 (mod n). Na isti<br />

<strong>na</strong>čin pridemo do<br />

a m ≡ 1 (mod n),<br />

kar je protislovje, saj bi algoritem v tem primeru<br />

odgovoril “n je praštevilo”.<br />

Za konec omenimo brez dokaza še, da je verjetnost<br />

<strong>na</strong>pake Miller-Rabinovega algoritma kvečjemu 1/4.<br />

Aleksandar Jurišić 271<br />

Aleksandar Jurišić 272<br />

Aleksandar Jurišić 273<br />

Aleksandar Jurišić 274<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Napadi <strong>na</strong> RSA<br />

Odličen pregledni članek “Twenty Years of Attacks<br />

on the RSA kriptosysystem”, je objavil Dan Boneh<br />

v Notices of AMS, Feb. 1999, pp. 203-212.<br />

Mi bomo omenili le nekaj osnovnih <strong>na</strong>padov.<br />

Če <strong>po</strong>z<strong>na</strong>mo ϕ(n) in n, dobimo p, q iz <strong>na</strong>slednjega<br />

sistema dveh e<strong>na</strong>čb<br />

n = pq in ϕ(n) = (p − 1)(q − 1).<br />

Odšifrirni eks<strong>po</strong>nent kriptosistema RSA<br />

Trditev: Vsak algoritem A, ki <strong>na</strong>jde odšifrirni<br />

eks<strong>po</strong>nent d, lahko u<strong>po</strong>rabimo kot <strong>po</strong>dprogram v<br />

probabilističnem algoritmu, ki <strong>na</strong>jde faktorje<br />

števila n.<br />

Od tod sledi, da iskanje odšifrirnega eks<strong>po</strong>nenta ni nič<br />

lažje kot problem faktorizacije.<br />

O<strong>po</strong>zorilo: če “izgubimo” d, moramo <strong>po</strong>leg šifrirnega<br />

eks<strong>po</strong>nenta zamenjati tudi modul n.<br />

Naj bo ε ∈ [0, 1). Las Vegas algoritem je<br />

probabilističen algoritem, ki za dani primer problema,<br />

lahko ne da odgovora z verjetnostjo ε (se pravi, da<br />

konča s s<strong>po</strong>ročilom “ni odgovora”). Če pa algoritem<br />

odgovori, <strong>po</strong>tem je odgovor gotovo pravilen.<br />

DN: Pokaži, da je <strong>po</strong>vprečno pričakovano število<br />

<strong>po</strong>novitev algoritma vse dokler ne dobimo odgovora,<br />

e<strong>na</strong>ko 1/(1 − ε) (glej <strong>na</strong>logo 4.15).<br />

Če Las Vegas algoritem faktorizira število n z<br />

verjetnostjo vsaj ε in ga <strong>po</strong>novimo m-krat, <strong>po</strong>tem bo<br />

število n faktorizirano z verjetnostjo vsaj 1 − ε m .<br />

Trditev sledi iz algoritma, ki u<strong>po</strong>rablja <strong>na</strong>slednje:<br />

za n = pq, kjer sta p,q lihi praštevili,<br />

x 2 ≡ 1 (mod n), tj. pq|(x − 1)(x + 1),<br />

dobimo štiri rešitve; dve (trivialni) rešitvi iz e<strong>na</strong>čb<br />

x ≡ 1 (mod n) in x ≡ −1 (mod n)<br />

in s <strong>po</strong>močjo kitajskega izreka o ostankih iz<br />

x ≡ 1 (mod p), x ≡ −1 (mod q)<br />

in<br />

x ≡ −1 (mod p), x ≡ 1 (mod q)<br />

še dve (netrivialni) rešitvi.<br />

Aleksandar Jurišić 275<br />

Aleksandar Jurišić 276<br />

Aleksandar Jurišić 277<br />

Aleksandar Jurišić 278


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Algoritem za faktorizacijo z danim šifr. eksp. d<br />

1. Izberi <strong>na</strong>ključno <strong>na</strong>ravno število w < n,<br />

2. izraču<strong>na</strong>j x = D(w,n),<br />

3. if 1 < x < n then exit(uspeh x = p ali x = q)<br />

4. izraču<strong>na</strong>j d = A(e, n) in zapiši de − 1 = 2 s r, r lih,<br />

5. izraču<strong>na</strong>j v = w r mod n,<br />

6. if v ≡ 1 (mod n) then exit(neuspeh)<br />

7. while v ≡/ 1 (mod n) do v 0 = v, v = v 2 mod n<br />

8. if v 0 ≡ −1 (mod n) then exit(neuspeh)<br />

else izraču<strong>na</strong>j x = D(v 0 + 1,n)<br />

(uspeh: x = p ali x = q) .<br />

Naključne <strong>na</strong>pake<br />

(Boneh, DeMillo in Lipton, 1997)<br />

Če u<strong>po</strong>rabimo CRT in pride pri samo enem izmed C p<br />

in C q do <strong>na</strong>pake, npr. C p je pravilen, Ĉ q pa ni, <strong>po</strong>tem<br />

je Ĉ = t p C p + t q Ĉ q očitno nepravilen <strong>po</strong>dpis, saj je<br />

Ĉ e ≠ M mod N. Vendar pa je<br />

Ĉ e = M mod p, medtem, ko je Ĉ e ≠ M mod q<br />

in <strong>na</strong>m D(n,Ĉ e − M) odkrije netrivialni faktor<br />

števila n.<br />

Rabinov kriptosistem<br />

Temelji <strong>na</strong> tem, da je težko <strong>na</strong>jti faktorizacijo produkta<br />

dveh velikih praštevil p in q.<br />

n = pq, p ≠ q,<br />

p,q ≡ 3 (mod 4), P = C = Z n<br />

K = {(n,p, q,B); 0 ≤ B ≤ n − 1}<br />

Za izbrani ključ K = (n,p,q, B) <strong>na</strong>j bo:<br />

e K (x) = x(x + B)<br />

(mod n),<br />

d K (y) = √ y + B 2 /4 − B/2.<br />

Javni ključ je (n,B), zasebni ključ pa (p,q).<br />

Trditev: Naj bo ω 2 ≡ 1 (mod n) netrivialen koren<br />

(kongruenca ima 4 rešitve: 1, −1 in še dve<br />

netrivialni), in x ∈ Z n, <strong>po</strong>tem velja:<br />

e K (ω(x + B/2) − B/2) = e K (x).<br />

Imamo 4 čistopise, ki ustrezajo tajnopisu e K (x) :<br />

x, −x − B, ω(x + B 2 ) in − ω(x + B 2 ).<br />

V splošnem se ne da ugotoviti, kateri je pravi.<br />

Aleksandar Jurišić 279<br />

Aleksandar Jurišić 280<br />

Aleksandar Jurišić 281<br />

Aleksandar Jurišić 282<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Odšifriranje<br />

Imamo tajnopis y in iščemo x, ki zadošča <strong>na</strong>slednji<br />

e<strong>na</strong>čbi:<br />

x 2 + Bx ≡ y (mod n).<br />

Po<strong>eno</strong>stavimo: x = x 1 − B/2,<br />

x 2 1 ≡ y + B 2 /4 (mod n), C = y + B 2 /4.<br />

Iščemo kvadratne korene e<strong>na</strong>čbe x 2 1 ≡ C (mod n) .<br />

To je ekvivalentno sistemu:<br />

x 2 1 ≡ C (mod p) Eulerjev izrek:<br />

x 2 1 ≡ C (mod q) C (p−1)/2 ≡ 1 (mod p)<br />

pred<strong>po</strong>stavka: p ≡ 3 (mod 4)<br />

↓ ⇒ (±C (p+1)/4 ) 2 ≡ C (mod p)<br />

x 1 ≡ x 1,2 (mod p) ⇒ kore<strong>na</strong> prve e<strong>na</strong>čbe sta:<br />

x 1 ≡ x 3,4 (mod q) x 1,2 = ±C (p+1)/4<br />

kore<strong>na</strong> druge e<strong>na</strong>čbe pa:<br />

⇓ KIO x 3,4 = ±C (q+1)/4<br />

x 1 , x 2 , x 3 , x 4<br />

Primer: n = 77 = 7 · 11, B = 9<br />

e K (x) = x 2 + 9x (mod 77)<br />

d K (y) = √ y + B 2 /4 − B/2 = √ 1 + y − 43 (mod 77)<br />

Tajnopis: y = 22. Poiskati moramo rešitve:<br />

x 2 ≡ 23 (mod 7) (x ≡ ±4 (mod 7))<br />

x 2 ≡ 23 (mod 11) (x ≡ ±1 (mod 11))<br />

Dobimo štiri sisteme dveh e<strong>na</strong>čb z dvema nez<strong>na</strong>nkama,<br />

npr.:<br />

x ≡ 4 (mod 7), x ≡ 1 (mod 11)<br />

Po kitajskem izreku o ostankih velja:<br />

x = 4 · 11 · (11 −1 mod 7) + 1 · 7 · (7 −1 mod 11).<br />

Vse rešitve so:<br />

x 1 = 67 (mod 77), x 2 = 10 (mod 77),<br />

x 3 = 32 (mod 77), x 4 = −32 (mod 77).<br />

Odšifrirani tekst je:<br />

d K(y) = 67 − 43 (mod 77) = 24<br />

10 − 43 (mod 77) = 44<br />

32 − 43 (mod 77) = 66<br />

45 − 43 (mod 77) = 2,<br />

vse štiri rešitve pa se zašifrirajo v 22.<br />

Aleksandar Jurišić 283<br />

Aleksandar Jurišić 284<br />

Aleksandar Jurišić 285<br />

Aleksandar Jurišić 286


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Varnost Rabinovega kriptosistema<br />

Hi<strong>po</strong>tetični algoritem A za dekripcijo Rabinovega<br />

kriptosistema lahko u<strong>po</strong>rabimo kot <strong>po</strong>dprogram v<br />

algoritmu tipa Las Vegas za faktorizacijo števila n z<br />

verjetnostjo vsaj 1/2.<br />

1. Izberemo r, 1 ≤ r ≤ n − 1,<br />

2. y := r 2 − B 2 /4 (mod n) (y = e K (r − B/2)),<br />

3. x := A(y),<br />

4. x 1 := x + B/2 (x 2 1 ≡ r 2 (mod n)),<br />

5. če velja x 1 ≡ ±r (mod n), <strong>po</strong>tem ni odgovora,<br />

sicer (x 1 ≡ ±ω ·r (mod n), kjer je ω ≡ 1 (mod n)<br />

netrivialni koren) D(x 1 + r 1 , n) = p (ali q).<br />

V zadnjem primeru n | (x 1 − r)(x 1 + r), vendar<br />

n ̸ | (x 1 − r) in n ̸ | (x 1 + r) ⇒ D(x 1 + r, n) ≠ 1.<br />

Verjetnost, da uspemo v enem koraku:<br />

Def: r 1 ∼ r 2 ⇔ r1 2 ≡ r2 2 (mod n) (r 1 , r 2 ≠ 0).<br />

To je ekvivalenč<strong>na</strong> relacija, ekvivalenčni razredi v<br />

Z n \{0} imajo moč 4: [r] = {±r, ±ωr}.<br />

Vsak element iz [r] <strong>na</strong>m da isto vrednost y.<br />

Podprogram A <strong>na</strong>m vrne x, [x] = {±x, ±ωx},<br />

r = ±x : 4 ni odgovora r = ±ωx : dobimo odgovor.<br />

Ker izberemo r slučajno, je vsaka od teh možnosti<br />

e<strong>na</strong>ko verjet<strong>na</strong> ⇒ verjetnost, da uspemo, je 1/2.<br />

Algoritmi za faktorizacijo števil<br />

Poskušanje<br />

Število n delimo z vsemi lihimi števili do √ n :<br />

i := 3,<br />

until i ≤ √ n repeat<br />

if i |n, <strong>po</strong>tem smo <strong>na</strong>šli faktor,<br />

else i := i + 2.<br />

Algoritem je u<strong>po</strong>raben za manjše n (npr. n ≤ 10 12 ).<br />

Časov<strong>na</strong> zahtevnost za k bitov je 2 k/2−1 deljenj.<br />

Metoda p − 1 (Pollard, 1974)<br />

Podatki: n (lih, želimo faktorizirati) in B (meja)<br />

Algoritem temelji <strong>na</strong> <strong>na</strong>slednjem preprostem dejstvu:<br />

če je p praštevilo, ki deli n, in za vsako praštevilsko<br />

<strong>po</strong>tenco q, ki deli p−1, velja q ≤ B, <strong>po</strong>tem (p−1)|B!<br />

Primer: B = 9, p = 37, p − 1 = 36 = 2 2 · 3 2<br />

2 2 ≤ B, 3 2 ≤ B ⇒ 2 2 · 3 2 |1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9<br />

Aleksandar Jurišić 287<br />

Aleksandar Jurišić 288<br />

Aleksandar Jurišić 289<br />

Aleksandar Jurišić 290<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Algoritem<br />

Podatki: n,B<br />

1. a := 2<br />

2. j = 2,...,B (a ≡ 2 B! (mod n))<br />

a := a j (mod n)<br />

(⇒ a ≡ 2 B! (mod p))<br />

3. d = D(a − 1, n) (Fermat: 2 p−1 ≡ 1 (mod p))<br />

4. Če velja 1 < d < n, je d faktor števila n (saj p|d)<br />

sicer ni uspeha (to se zgodi, kadar je d=1).<br />

Če B ≥ √ n, vedno uspemo, vendar algoritem ni<br />

učinkovit.<br />

Časov<strong>na</strong> zahtevnost<br />

• B − 1 <strong>po</strong>tenciranj <strong>po</strong> modulu n,<br />

za vsako rabimo 2 log 2 B množenj <strong>po</strong> modulu n,<br />

• <strong>na</strong>jvečji skupni delitelj z Evklid. alg.: O((log n) 3 ).<br />

Skupaj O(B log B(log n) 2 + (log n) 3 ), kar <strong>po</strong>meni, da<br />

je za B ≈ (log n) i algoritem <strong>po</strong>linomski.<br />

Primer: n=143, B =4, a≡2 2·3·4 ≡131 (mod 143).<br />

Torej je a − 1 = 130 in od tod D(130, 143) = 13.<br />

Za varen RSA izberemo p = 2p 1 + 1 in q = 2q 1 + 1,<br />

kjer sta p 1 in q 1 praštevili.<br />

Dixonov algoritem in kvadratno rešeto<br />

(x≢±y (mod n),x 2 ≡y 2 (mod n) =⇒ D(x−y,n)≠1)<br />

Sestavimo bazo faktorjev B = {p 1, ...,p B}, kjer so p i<br />

“majh<strong>na</strong>” praštevila. Naj bo C malo večji kot B<br />

(npr. C = B + 10). Najdemo C kongruenc:<br />

x 2 j ≡ p α1,j<br />

1 × p α2,j<br />

2 × · · · × p α B,j<br />

B<br />

(mod n), 1 ≤ j ≤ C<br />

Oz<strong>na</strong>čimo a j := (α 1,j mod 2, ...,α B,j mod 2).<br />

Če <strong>na</strong>jdemo <strong>po</strong>dmnožico {a 1 , ...,a C }, v kateri se<br />

vektorji seštejejo v (0, 0, · · · , 0) mod 2, <strong>po</strong>tem bo<br />

produkt x j u<strong>po</strong>rabil vsak faktor iz B sodo mnogokrat.<br />

Primer: n = 15770708441, B = {2, 3, 5, 7, 11, 13}<br />

8340934156 2 ≡ 3×7 (mod n) a 1=(0,1,0,1,0,0)<br />

12044942944 2 ≡ 2×7×13 (mod n), a 2 =(1,0,0,1,0,1)<br />

2773700011 2 ≡ 2×3×13 (mod n), a 3 =(1,1,0,0,0,1)<br />

Iz a 1 + a 2 + a 3 = (0,0,0,0,0,0) mod 2 sledi<br />

(8340934156 × 12044942944 × 2773700011) 2 ≡<br />

≡ (2 × 3 × 7 × 13) 2 (mod n)<br />

oziroma 9503435785 2 ≡ 546 2 (mod n)<br />

in D(9503435785 − 546, 15770708441) = 115759.<br />

Aleksandar Jurišić 291<br />

Aleksandar Jurišić 292<br />

Aleksandar Jurišić 293<br />

Aleksandar Jurišić 294


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

• Linearno odvisnost med vektorji {a 1 , a 2 , · · · ,a C }<br />

<strong>po</strong>iščemo npr. z Gaussovo elimi<strong>na</strong>cijo.<br />

• C > B + 1 : vendar imamo raje več različnih<br />

odvisnosti, da bo vsaj e<strong>na</strong> dala faktorizacijo.<br />

• Števila x j , za katere se da x 2 j (mod n) faktorizirati v<br />

B, iščemo v množici {x j = j + ⌊ √ n⌋ | j = 1, 2,...} z<br />

metodo kvadratnega rešeta (Pomerance).<br />

• Če je B velik, je večja možnost, da se da neko število<br />

faktorizirati v B, a <strong>po</strong>trebujemo več √kongruenc, da<br />

<strong>na</strong>jdemo linearno odvisnost. (|B| ≈ e √ ln n ln ln n<br />

).<br />

Algoritmi za faktorizacijo v praksi<br />

Kvadratno rešeto O(e (1+o(1))√ ln n ln ln n )<br />

Eliptične krivulje O(e (1+o(1))√ ln p ln ln p )<br />

Številsko rešeto O(e (1.92+o(1))(ln n)1/3 (ln ln n) 2/3 )<br />

o(1) → 0, ko n → ∞<br />

p - <strong>na</strong>jmanjši praštevilski faktor n<br />

V <strong>na</strong>jslabšem primeru, ko je p ≈ √ n, imata kvadratno<br />

rešeto in eliptične krivulje približno e<strong>na</strong>ko časovno<br />

zahtevnost, sicer pa je boljše kvadratno rešeto.<br />

Faktorizacije velikih števil s kvadratnim rešetom:<br />

(n = p · q, p ≈ q)<br />

leto stevilo bitov metoda o<strong>po</strong>mbe<br />

1903 2 67 − 1 67 F. Cole (3 leta ob ned.)<br />

1988 250 QS 100 rac., e-<strong>po</strong>sta<br />

1994 RSA-129 425 QS 1600 rac. 8 mesecev<br />

1999 RSA-155 512 NFS 300 del.p.+Cray; 5 mes.<br />

2002 RSA-158 524 NFS 30 del.p.+Cray; 3 mes<br />

2003 RSA-174 576 NFS<br />

2005 RSA-200 663 NFS (55 let <strong>na</strong> eni del.p.)<br />

Fermatova števila:<br />

2 211 − 1 eliptične krivulje: 1988 (Brent)<br />

2 29 − 1 številsko rešeto:<br />

1990 (Lenstra, Lenstra, Ma<strong>na</strong>sse, Pollard)<br />

Aleksandar Jurišić 295<br />

Aleksandar Jurišić 296<br />

Aleksandar Jurišić 297<br />

Aleksandar Jurišić 298<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

5. <strong>po</strong>glavje<br />

Prof. Vidav je leta 1997 zastavil <strong>na</strong>slednje vprašanje<br />

(morda tudi zato, da preveri trenutne moči <strong>na</strong>miznih<br />

raču<strong>na</strong>lnikov): <strong>po</strong>išči prafaktorje števila<br />

10 64 + 1<br />

in <strong>na</strong>mignil, da so vsi prafaktorji, če jih je kaj, oblike<br />

128k + 1.<br />

Veči<strong>na</strong> osebnih raču<strong>na</strong>lnikov z Mathematica/Maple<br />

hitro <strong>na</strong>jde en faktor:<br />

1265011073<br />

55-mestni ostanek pa <strong>po</strong>vzroči težave.<br />

V Waterlooju sem končno <strong>na</strong>šel hiter raču<strong>na</strong>lnik<br />

(cacr: Alpha ) ter hitro programsko opremo<br />

(glej http://www.informatik.th-darmstadt.de/TI/LiDIA/), ki je v manj<br />

kot 10-ih minutah <strong>na</strong>šla še preostala prafaktorja<br />

15343168188889137818369<br />

515217525265213267447869906815873.<br />

Drugi javni kriptosistemi<br />

• ElGamalovi kriptosistemi in Massey-Omura shema<br />

• Problem diskretnega logaritma in <strong>na</strong>padi <strong>na</strong>nj<br />

• Metoda velikega in malega koraka<br />

• Pohlig-Hellmanov algoritem<br />

• Index calculus<br />

• Varnost bitov pri diskretnem logaritmu<br />

• Končni obsegi in eliptične krivulje<br />

• Eliptični kriptosistemi<br />

• Merkle-Hellmanov sistem z <strong>na</strong>hrbtnikom<br />

• Sistem McEliece<br />

Jav<strong>na</strong> kriptografija<br />

L. 1976 sta Whit Diffie in Martin Hellman<br />

predstavila koncept kriptografije z javnimi ključi.<br />

Le-ta za razliko od simetričnega sistema u<strong>po</strong>rablja dva<br />

različ<strong>na</strong> ključa, zasebnega in javnega.<br />

V prejšnjem <strong>po</strong>glavju smo s<strong>po</strong>z<strong>na</strong>li RSA (1978).<br />

Taher ElGamal (1985): enkripcije z javnimi ključi in<br />

sheme digitalnih <strong>po</strong>dpisov.<br />

Aleksandar Jurišić 299<br />

Aleksandar Jurišić 300<br />

Aleksandar Jurišić 301<br />

Aleksandar Jurišić 302


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Varianta: algoritem za digitalni <strong>po</strong>dpis<br />

(Digital Sig<strong>na</strong>ture Algorithm – DSA),<br />

ki ga je prispevala vlada ZDA.<br />

V razvoju javne kriptografije je bilo razbitih veliko<br />

predlaganih sistemov.<br />

Le tri vrste so se ohranile in jih danes lahko smatramo<br />

za varne in učinkovite.<br />

Glede <strong>na</strong> matematični problem, <strong>na</strong> katerem temeljijo,<br />

so razdeljene v tri skupine:<br />

• Sistemi faktorizacije celih števil<br />

(Integer Factorization Systems)<br />

z RSA (Rivest-Adleman-Shamir)<br />

kot <strong>na</strong>jbolj z<strong>na</strong>nim predstavnikom,<br />

• Sistemi diskretnega logaritma<br />

(Discrete Logarithem Systems),<br />

kot <strong>na</strong> primer DSA,<br />

• Kriptosistemi z eliptičnimi krivuljami<br />

(Elliptic Curve Cryptosystems).<br />

Problem diskretnega logaritma v grupi G<br />

za da<strong>na</strong> α, β ∈ G, kjer je red elementa α e<strong>na</strong>k n,<br />

<strong>na</strong>jdi x ∈ {0, . ..,n − 1}, tako da je α x = β.<br />

Število x se imenuje diskretni logaritem<br />

osnove α elementa β.<br />

Medtem ko je diskretni logaritem (verjetno) težko<br />

izraču<strong>na</strong>ti (v splošnem), lahko <strong>po</strong>tenco izraču<strong>na</strong>mo<br />

hitro (primer <strong>eno</strong>smerne funkcije).<br />

Problem diskretnega logaritma v grupi Z p<br />

Trenutno ne <strong>po</strong>z<strong>na</strong>mo nobenega <strong>po</strong>linomskega<br />

algoritma za DLP.<br />

Praštevilo p mora imeti vsaj 150 mest (500 bitov),<br />

p − 1 pa mora imeti vsaj en “velik” prafaktor.<br />

Aleksandar Jurišić 303<br />

Aleksandar Jurišić 304<br />

Aleksandar Jurišić 305<br />

Aleksandar Jurišić 306<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

ElGamalovi protokoli<br />

Delimo jih v tri razrede:<br />

1. protokoli za izmenjavo ključev,<br />

2. sistemi z javnimi ključi,<br />

3. digitalni <strong>po</strong>dpisi.<br />

Te protokole lahko u<strong>po</strong>rabimo s <strong>po</strong>ljubno končno<br />

gru<strong>po</strong> G.<br />

Osnov<strong>na</strong> razloga za u<strong>po</strong>rabo različnih grup:<br />

• operacije v nekaterih grupah so izvedene <strong>eno</strong>stavneje<br />

v programih (software) in<br />

programski opremi (hardware)<br />

kot v drugih grupah,<br />

• problem diskretnega logaritma je lahko v določeni<br />

grupi zahtevnejši kot v drugi.<br />

Naj bo α ∈ G in <strong>na</strong>ravno število n red tega elementa<br />

(t.j., α n = 1 in α k ≠ 1 za vsak k < n).<br />

zasebni<br />

1. Izmenjava ključev<br />

(Diffie-Hellman)<br />

α a<br />

✲<br />

a<br />

b<br />

✛<br />

(α b ) a α b<br />

Anita<br />

zasebni<br />

(α a ) b<br />

Bojan<br />

Anita in Bojan si delita skupni element grupe:<br />

(α a ) b = (α b ) a = α ab .<br />

2. ElGamalov kriptosistem javnih ključev<br />

m ∈ M = G<br />

(skrivni)<br />

<strong>na</strong>ključni k<br />

(dva ključa, asimetrični sistem)<br />

(α k , mα kb ) zasebni b<br />

✲<br />

javni α b<br />

javni α k<br />

Anita<br />

Bojan<br />

Če je (y 1 ,y 2 ) = e K (m, k) = (α k , mα kb ), <strong>po</strong>tem je<br />

odšifriranje definirano z d K (y 1 , y 2 ) = y 2 (y b 1) −1 .<br />

Aleksandar Jurišić 307<br />

Aleksandar Jurišić 308<br />

Aleksandar Jurišić 309<br />

Aleksandar Jurišić 310


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Massey-Omura shema<br />

Multiplikativ<strong>na</strong> grupa GF(23) ∗<br />

S<strong>po</strong>ročilo m lahko prebere le Bojan (s svojim b),<br />

ni pa nikjer reč<strong>eno</strong>, da mu ga je res <strong>po</strong>slala Anita<br />

(saj ni u<strong>po</strong>rabila svojega zasebnega ključa).<br />

V javni kriptografiji smatramo, da <strong>na</strong>m javni del<br />

(npr. α k , α b ) v ničemer ne <strong>po</strong>maga pri iskanju<br />

skrivnega/zasebnega dela (npr. k, b).<br />

(Digitalni <strong>po</strong>dpis bo obrav<strong>na</strong>van v 6. <strong>po</strong>glavju.)<br />

Anita<br />

Anita<br />

Anita<br />

Bojan<br />

Bojan<br />

Anita Bojan<br />

Bojan<br />

Zgled:<br />

za G si izberemo gru<strong>po</strong> GF(23) ∗ .<br />

Elementi obsega GF(23) so: 0, 1,...,22.<br />

Definirajmo:<br />

a + b = r 1 , kjer je r 1 vsota a + b mod 23.<br />

ab = r 2 , kjer je r 2 produkt ab mod 23.<br />

Primer: 12 + 20 = 32 = 9, 8 · 9 = 72 = 3.<br />

Elementi GF(23) ∗ so elementi GF(23)\{0} in jih<br />

lahko generiramo z enim elementom:<br />

5 0 = 1 5 8 = 16 5 16 = 3<br />

5 1 = 5 5 9 = 11 5 17 = 15<br />

5 2 = 2 5 10 = 9 5 18 = 6<br />

5 3 = 10 5 11 = 22 5 19 = 7<br />

5 4 = 4 5 12 = 18 5 20 = 12<br />

5 5 = 20 5 13 = 21 5 21 = 14<br />

5 6 = 8 5 14 = 13 5 22 = 1<br />

5 7 = 17 5 15 = 19<br />

Aleksandar Jurišić 311<br />

Aleksandar Jurišić 312<br />

Aleksandar Jurišić 313<br />

Aleksandar Jurišić 314<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Diffie–Hellmanov protokol v GF(23) ∗<br />

9<br />

(5 19 ) 9 = 15<br />

Anita<br />

✛<br />

5 9 = 11<br />

5 19 = 7<br />

✲<br />

19<br />

(5 9 ) 19 = 15<br />

Bojan<br />

Anita in Bojan si sedaj delita skupen element 5 9·19 =<br />

15.<br />

Log tabela<br />

log elt log elt log elt<br />

0 1 8 16 16 3<br />

1 5 9 11 17 15<br />

2 2 10 9 18 6<br />

3 10 11 22 19 7<br />

4 4 12 18 20 12<br />

5 20 13 21 21 14<br />

6 8 14 13<br />

7 17 15 19<br />

Gru<strong>po</strong> G in generator α si izberemo tako, da je red<br />

elementa α velik (s tem pa je velika tudi log tabela).<br />

Antilog tabela<br />

elt log elt log elt log<br />

1 0 9 10 17 7<br />

2 2 10 3 18 12<br />

3 16 11 9 19 15<br />

4 4 12 20 20 5<br />

5 1 13 14 21 13<br />

6 18 14 21 22 11<br />

7 19 15 17<br />

8 6 16 8<br />

Algoritmi za raču<strong>na</strong>nje<br />

diskretnega logaritma<br />

• Shankov algoritem<br />

(veliki korak – mali korak),<br />

• Pollardov ρ-algoritem,<br />

• Pohlig-Hellmanov algoritem,<br />

• metoda “index calculus”.<br />

Danes si bomo ogledali samo prvega in zadnja dva.<br />

Aleksandar Jurišić 315<br />

Aleksandar Jurišić 316<br />

Aleksandar Jurišić 317<br />

Aleksandar Jurišić 318


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Metoda veliki korak – mali korak:<br />

GF(23) ∗ z gen. 5: sestavi tabelo elementov<br />

5 0 , 5 5 , 5 10 , 5 15 , 5 20 in njihovih logaritmov.<br />

element 1 20 9 19 12<br />

logaritem 0 5 10 15 20<br />

Izraču<strong>na</strong>j log(18): raču<strong>na</strong>j 5 ×18, 5 2 ×18, · · · , vse<br />

dokler ne dobiš elementa iz tabele.<br />

5 × 18 = 21, 5 2 × 18 = 13, 5 3 × 18 = 19.<br />

Iz tabele dobimo log(5 3 × 18) = log 19 = 15.<br />

Sledi 3 + log 18 = 15 oziroma log 18 = 12.<br />

GF(89) ∗ z generatorjem 3: sestavi tabelo elementov<br />

3 0 , 3 10 , 3 20 , · · · , 3 80 in njihovih algoritmov.<br />

elt 1 42 73 40 78 72 87 5 32<br />

log 0 10 20 30 40 50 60 70 80<br />

Izraču<strong>na</strong>j log(36): raču<strong>na</strong>j 3 ×36, 3 2 ×36, · · · , vse<br />

dokler ne dobiš elementa iz tabele.<br />

3 ×36 = 19, 3 3 ×36 = 82, 3 5 ×36 = 26, 3 2 ×36 = 57,<br />

3 4 × 36 = 68, 3 6 × 36 = 78.<br />

Iz tabele preberemo log(3 6 × 36) = log 78. Sledi<br />

6 + log 36 = 40 oziroma log 36 = 34.<br />

Čim daljša je tabela, ki jo sestavimo, tem dlje časa jo<br />

je treba raču<strong>na</strong>ti (enkratni strošek), <strong>po</strong> drugi <strong>stran</strong>i pa<br />

hitreje <strong>na</strong>letimo <strong>na</strong> element v krajši tabeli.<br />

Običajno sestavimo tabelo velikosti m = ⌊ √ |G|⌋ in<br />

za iskanje <strong>po</strong>trebujemo O(m) časa.<br />

Pollardov ρ algoritem (s Floydovim<br />

algoritmom za iskanje ciklov)<br />

Ima isto časovno zahtevnost kot metoda veliki korak –<br />

mali korak, <strong>po</strong>rabi pa le malo s<strong>po</strong>mi<strong>na</strong>.<br />

Pohlig-Hellmanov algoritem<br />

p − 1 = Π k i=1p c i<br />

i<br />

za različ<strong>na</strong> praštevila p i . Vrednost a = log α β je<br />

<strong>na</strong>tanko določe<strong>na</strong> <strong>po</strong> modulu p − 1.<br />

Najprej izraču<strong>na</strong>mo a mod p ci<br />

i za vsak<br />

i = 1,...,k in <strong>na</strong>to izraču<strong>na</strong>mo a mod (p − 1)<br />

<strong>po</strong> kitajskem izreku o ostankih.<br />

Aleksandar Jurišić 319<br />

Aleksandar Jurišić 320<br />

Aleksandar Jurišić 321<br />

Aleksandar Jurišić 322<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Pred<strong>po</strong>stavimo, da je q praštevilo in c <strong>na</strong>jvečje <strong>na</strong>ravno<br />

število, za katero velja<br />

Kako izraču<strong>na</strong>mo<br />

p − 1 ≡ 0 (mod q c ).<br />

x = a mod q c , kjer je 0 ≤ x ≤ q c − 1<br />

Zapišimo x v številskem zapisu z osnovo q:<br />

∑c−1<br />

x = a i q i , kjer je 0 ≤ a i ≤ q − 1.<br />

i=0<br />

Od tod dobimo<br />

a = a 0 + a 1 q + · · · + a c−1 q c−1 + sq c ,<br />

kjer je s neko <strong>na</strong>ravno število in a = a 0 + Kq.<br />

a 0 izraču<strong>na</strong>mo iz <strong>na</strong>slednje identitete<br />

β (p−1)/q ≡ α a0(p−1)/q mod p.<br />

Dokažimo slednjo kongruenco:<br />

β (p−1)/q ≡ (α a ) (p−1)/q mod p<br />

≡ (α a0+Kq ) (p−1)/q mod p<br />

≡ α a0(p−1)/q α (p−1)K mod p<br />

≡ α a0(p−1)/q mod p.<br />

Najprej torej izraču<strong>na</strong>mo<br />

β (p−1)/q mod p.<br />

Če je β (p−1)/q ≡ 1 mod p, je a 0 = 0,<br />

sicer pa za<strong>po</strong>redoma raču<strong>na</strong>mo<br />

γ = α (p−1)/q mod p, γ 2 mod p, ...,<br />

vse dokler ne dobimo<br />

in je a 0 = i.<br />

γ i mod p = β (p−1)/q mod p<br />

Aleksandar Jurišić 323<br />

Aleksandar Jurišić 324<br />

Aleksandar Jurišić 325<br />

Aleksandar Jurišić 326


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Sedaj moramo določiti a 1,...,a c−1<br />

(če je c > 1). Naj bo<br />

β j = βα a0+a1q+···+aj−1qj−1 mod p,<br />

za 0 ≤ j ≤ c − 1. Tokrat velja splošnejša<br />

identiteta<br />

(β j ) (p−1)/qj+1 ≡ α aj(p−1)/q mod p,<br />

ki jo dokažemo <strong>na</strong> e<strong>na</strong>k <strong>na</strong>čin kot prejšnjo.<br />

Za dani β j ni težko izraču<strong>na</strong>ti a j , omenimo pa še<br />

rekurzijo<br />

β j+1 = β j α −ajqj mod p.<br />

Za dano faktorizacijo števila n je časov<strong>na</strong><br />

zahtevnost Pohlig-Hellmanovega algoritma<br />

O( ∑ k<br />

i=0 c i(log n + √ p i )) grupnih multiplikacij.<br />

Primer: <strong>na</strong>j bo p = 251, <strong>po</strong>tem je<br />

n = p − 1 = 250 = 2 . 5 3 .<br />

Naj bo α = 71 in β = 210,<br />

torej želimo izraču<strong>na</strong>ti a = log 71 210.<br />

Modul 2: γ 0 = 1,<br />

γ 1 ≡ α 250/2 ≡ 250 mod p<br />

in<br />

β 250/2 ≡ 250 mod p,<br />

torej a 0 = 1 in log 71 210 ≡ 1 (mod 2).<br />

Aleksandar Jurišić 327<br />

Aleksandar Jurišić 328<br />

Aleksandar Jurišić 329<br />

Aleksandar Jurišić 330<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Modul 5: γ 0 = 1,<br />

γ 1 ≡ α 250/5 ≡ 20mod p<br />

in<br />

β 250/5 ≡ 149 mod p,<br />

torej a 0 = 2. ...<br />

a 1 = 4 = log 20 113 in a 2 = 2 = log 20 149,<br />

log 71 210 ≡ 2 + 4 . 5 + 2 . 5 2 ≡ 72 (mod 125).<br />

Končno <strong>na</strong>m CRT da log 71 210 = 197.<br />

Metoda index calculus<br />

GF(23) ∗ z generatorem 5.<br />

Izberi bazo ‘majhnih’ faktorjev: B = {−1, 2, 3}<br />

in sestavi tabelo njihovih logaritmov:<br />

elt -1 2 3<br />

log 11 2 16<br />

Iščemo logaritem elementa β (Las Vegas).<br />

Poišči ‘gladko’ <strong>po</strong>tenco elementa β,<br />

tj. β x , ki se da razstaviti <strong>na</strong> faktorje iz B.<br />

Izraču<strong>na</strong>j log(13): 13 2 = 169 = 2 3 ⇐⇒<br />

log 13 2 = log 2 3 ⇐⇒ 2 log 13 ≡ 3 log 2 ⇐⇒<br />

2 log 13 ≡ 6 (mod 22)<br />

Sledi log 13 ≡ 3 ali 14 (mod 22).<br />

Preverimo log 13 = 14.<br />

Izraču<strong>na</strong>j log(14):<br />

14 3 = 2 3 7 3 = 2 3 · 21 = 2 3 · (−2) = −2 4 .<br />

3 log 14 = log(−2 4 ) = log(−1)+log 2 4 = 11+4·2 = 19,<br />

log 14 = 19<br />

3<br />

= 19 · (−7) = (−3)(−7) = 21.<br />

Izraču<strong>na</strong>j log(15):<br />

15 3 = 3 3 · 5 3 = 3 3 · 2 · 5 = (−1) · 2 · 3,<br />

3 log 15 = log(−1)+log 2+log 3 = 11+2+16 = 29 = 7,<br />

log 15 = 7 = 7(−7) = −49 = −5 = 17.<br />

3<br />

Izraču<strong>na</strong>j log(7):<br />

7 3 = 49 · 7 = 3 · 7 = 21 = (−1) · 2,<br />

3 log 7 = log(−1) + log 2 = 11 + 2 = 13,<br />

log 7 = 13 = 13 · (−7) = 63 = −3 = 19.<br />

3<br />

Aleksandar Jurišić 331<br />

Aleksandar Jurišić 332<br />

Aleksandar Jurišić 333<br />

Aleksandar Jurišić 334


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Še en primer: GF(89) ∗ z gen. 3.<br />

tabela logaritmov:<br />

elt -1 2 3 5<br />

log 44 16 1 70<br />

Izraču<strong>na</strong>j log(7):<br />

7 3 = 76 = 2 2 · 19, 7 5 = 3 · 5 2 ,<br />

5 log 7 = log 3 + 2 log 5 = 1 + 2 · 70 = 141 = 53,<br />

log 7 = 53<br />

5<br />

= 53 · (−35) = 81.<br />

Izraču<strong>na</strong>j log(53):<br />

53 3 = 3 · 23, 53 5 = 2 2 · 17, 53 7 = 2 · 3 2 ,<br />

7 log 53 = log 2 + 2 log 3 = 16 + 2 = 8,<br />

log 53 = 18<br />

7<br />

= 18 · (−25) = 78.<br />

Metoda index calculus (splošno)<br />

1. Izberi bazo faktorjev B = {p 1 , ...,p t }, tako da se<br />

da dovolj veliko število elementov grupe G dovolj hitro<br />

razstaviti v B.<br />

2. Poišči t + 10 lineranih zvez z logaritimi elementov<br />

iz B:<br />

izberi število k < n, izraču<strong>na</strong>j α k in ga <strong>po</strong>skusi zapisati<br />

kot<br />

t∑<br />

α k = Π t i=1 p ci<br />

i ⇐⇒ k ≡ c i log p i mod p − 1.<br />

i=1<br />

3. Sestavi tabelo logaritmov elementov iz B.<br />

4. Izberi <strong>na</strong>ključno število k ∈ {1, ...,n},<br />

izraču<strong>na</strong>j βα k in ga <strong>po</strong>skusi zapisati kot<br />

βα k = Π t i=1 p di<br />

i .<br />

Končno dobimo<br />

t∑<br />

log α β = ( d i log α p i − k) mod n.<br />

i=1<br />

Obstajajo različni slučajni algoritmi za metodo Index<br />

calculus. Ob sprejemljivih pred<strong>po</strong>stavkah je njihova<br />

časov<strong>na</strong> zahtevnost za pripravljalno fazo<br />

(<br />

)<br />

O e 1+o(1))√ log p loglog p<br />

,<br />

za izračun vsakega <strong>po</strong>sameznega logaritma pa<br />

(<br />

)<br />

O e 1/2+o(1))√ log p log log p<br />

.<br />

Aleksandar Jurišić 335<br />

Aleksandar Jurišić 336<br />

Aleksandar Jurišić 337<br />

Aleksandar Jurišić 338<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Varnost bitov pri diskretnem log.<br />

Podatki: (p,α, β,i),<br />

kjer je p praštevilo, α primitiven element grupe Z ∗ p<br />

in i <strong>po</strong>ljubno <strong>na</strong>ravno število, ki je manjše ali e<strong>na</strong>ko<br />

log 2 (p − 1).<br />

Cilj: izraču<strong>na</strong>j i-ti bit (oz<strong>na</strong>ka: L i (β)) logaritma<br />

log α β za fiks<strong>na</strong> α in p (začnemo šteti z desne).<br />

L 1 (β) lahko <strong>na</strong>jdemo s <strong>po</strong>močjo Eulerjevega kriterija<br />

za kvadratne ostanke <strong>po</strong> modulu p:<br />

Ker je w 2 ≡ x 2 (mod p) ⇐⇒ p|(w − x)(w + x)<br />

oziroma w ≡ ±x (mod p), velja<br />

{<br />

{x 2 mod p | x ∈ Z ∗ p} = α 2i mod p ∣ 0 ≤ i ≤ p − 3 }<br />

.<br />

2<br />

Od tod pa sledi<br />

β kvadratni ostanek ⇐⇒ 2| log α β tj. L 1(β) = 0,<br />

element β pa je kvadratni ostanek če in samo če je<br />

β (p−1)/2 ≡ 1 (mod p).<br />

Sedaj pa si oglejmo še primer, ko je i > 1.<br />

Naj bo p − 1 = 2 s t, kjer je t liho število.<br />

Potem za i ≤ s ni težko izraču<strong>na</strong>ti L i (β),<br />

verjetno pa je težko izraču<strong>na</strong>ti L s+1(β),<br />

kajti v <strong>na</strong>sprotnem primeru bi bilo možno u<strong>po</strong>rabiti<br />

hi<strong>po</strong>tetični <strong>po</strong>dprogram za rešitev DLP v Z p .<br />

Zgornjo trditev bomo dokazali za s = 1 oziroma<br />

p ≡ 3 (mod 4). Tedaj sta kvadrat<strong>na</strong> kore<strong>na</strong> iz β <strong>po</strong><br />

modulu p števili ±β (p+1)/4 mod p.<br />

Za β ≠ 0 velja L 1 (β) ≠ L 1 (p − β), saj iz<br />

α a ≡ β (mod p) =⇒<br />

ker je (p − 1)/2 liho število.<br />

α a+(p−1)/2 ≡ −β (mod p),<br />

Če je β = α a za neko sodo <strong>po</strong>tenco a, <strong>po</strong>tem je<br />

α a/2 ≡ β (p+1)/4 ali − β (p+1)/4 (mod p).<br />

Katera izmed teh dveh možnosti je pravil<strong>na</strong> lahko<br />

ugotovimo iz L 2 (β), saj velja<br />

L 2 (β) = L 1 (α a/2 ).<br />

Aleksandar Jurišić 339<br />

Aleksandar Jurišić 340<br />

Aleksandar Jurišić 341<br />

Aleksandar Jurišić 342


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Algoritem za raču<strong>na</strong>nje diskretnega<br />

logaritma v Z p za p ≡ 3 (mod 4):<br />

1. x 0 = L 1 (β), β = β/α x0 mod p, i := 1<br />

2. while β ≠ 1 do<br />

3. x i = L 2 (β)<br />

4. γ = β (p+1)/4 mod p<br />

5. if L 1 (γ) = x i then β = γ<br />

6. else β = p − γ<br />

7. β = β/α xi mod p, i := i + 1<br />

Dokaz pravilnosti zgornjega algoritma:<br />

Naj bo<br />

in definirajmo za i ≥ 0:<br />

x = log α β = ∑ i≥0<br />

Y i =<br />

⌊ x<br />

2 i+1 ⌋<br />

x i 2 i<br />

in <strong>na</strong>j bo β 0 vrednost β v koraku 1.<br />

Za i ≥ 1, pa <strong>na</strong>j bo β i vrednost β v zadnjem koraku<br />

pri i-ti iteraciji while zanke.<br />

Z indukcijo <strong>po</strong>kažemo za vsak i ≥ 0:<br />

β i ≡ α 2Yi (mod p).<br />

Iz 2Y i = Y i−1 − x i sledi x i+1 = L 2 (β i ) za i ≥ 0<br />

ter končno še x 0 = L 1 (β).<br />

Končni obsegi<br />

Primer končnega obsega: GF(2 4 )<br />

Izberimo f(x) = 1 + x + x 4 ∈ GF(2)[x].<br />

Naj bo a 0 + a 1 x + a 2 x 2 + a 3 x 3 = (a 0 ,a 1 , a 2 , a 3 ).<br />

Elementi obsega GF(2 4 ) so:<br />

(1000) (1100) (1010) (1111)<br />

(0100) (0110) (0101) (1011)<br />

(0010) (0011) (1110) (1001)<br />

(0001) (1101) (0111) (0000)<br />

Aleksandar Jurišić 343<br />

Aleksandar Jurišić 344<br />

Aleksandar Jurišić 345<br />

Aleksandar Jurišić 346<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Element končnega obsega v predstavimo kot vektor.<br />

V hardwaru <strong>po</strong><strong>na</strong>vadi delamo v GF(2), torej je v<br />

01-vektor, ki ga hranimo v registru dolžine n,<br />

in je vsota vektorjev e<strong>na</strong>ka XOR <strong>po</strong> koordi<strong>na</strong>tah.<br />

V softwaru pa hranimo bi<strong>na</strong>rni vektor v v besedah<br />

(npr. long integers)<br />

Coeff<br />

0 1 VECLEN-1<br />

b 1b2 ... bw b w+1 ... b2w ... ... b N-1 b N<br />

WORDSIZE<br />

OVERLAP<br />

UNDERLAP<br />

V splošnem obstaja veliko število različnih baz za<br />

GF(q m ) <strong>na</strong>d GF(q).<br />

junk<br />

bits<br />

Definirajmo operaciji ‘+’ in ‘×’ v GF(p n ):<br />

(a 0 , ...,a n−1 ) + (b 0 ,...,b n−1 ) = (c 0 ,...,c n−1 ),<br />

kjer je c i = a i + b i (mod p).<br />

(a 0, ...,a n−1) × (b 0, . ..,b n−1) = (r 0,...,r n−1),<br />

kjer je (r 0,...,r n−1) ostanek produkta<br />

(a 0 ,...,a n−1 ) × (b 0 , ...,b n−1 ) pri deljenju<br />

z nerazcepnim <strong>po</strong>linomom f(x) stopnje n.<br />

Primer: (1011) + (1001) = (0010)<br />

(1011) × (1001)<br />

= (1 + x 2 + x 3 )(1 + x 3 ) = 1 + x + x 5 + x 6<br />

= (x 4 + x + 1)(x 2 + x) + (1 + x + x 2 + x 3 )<br />

= (1111)<br />

Končni obseg GF(2 4 ) ∗ : izberemo f(x) = 1+x+x 4 .<br />

GF(2 4 ) ∗ je generiran z elementom α = x.<br />

α 0 = (1000) α 8 = (1010)<br />

α 1 = (0100) α 9 = (0101)<br />

α 2 = (0010) α 10 = (1110)<br />

α 3 = (0001) α 11 = (0111)<br />

α 4 = (1100) α 12 = (1111)<br />

α 5 = (0110) α 13 = (1011)<br />

α 6 = (0011) α 14 = (1001)<br />

α 7 = (1101) α 15 = α 0 = 1<br />

Aleksandar Jurišić 347<br />

Aleksandar Jurišić 348<br />

Aleksandar Jurišić 349<br />

Aleksandar Jurišić 350


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Log tabela<br />

log elt log elt<br />

0 (1000) 8 (1010)<br />

1 (0100) 9 (0101)<br />

2 (0010) 10 (1110)<br />

3 (0001) 11 (0111)<br />

4 (1100) 12 (1111)<br />

5 (0110) 13 (1011)<br />

6 (0011) 14 (1001)<br />

7 (1101)<br />

Zech log tabela<br />

1 + α i = α z(i)<br />

i z(i) i z(i)<br />

∞ 0 7 9<br />

0 ∞ 8 2<br />

1 4 9 7<br />

2 8 10 5<br />

3 14 11 12<br />

4 1 12 11<br />

5 10 13 6<br />

6 13 14 3<br />

Raču<strong>na</strong>nje v <strong>po</strong>linomski bazi je odvisno od izbire<br />

<strong>po</strong>linoma f(x).<br />

Da bi <strong>po</strong>spešili redukcijo (<strong>po</strong> množenju<br />

ali kvadriranju), si <strong>po</strong><strong>na</strong>vadi izberemo<br />

za f(x) nerazcepni trinom (to je x n + x m + 1).<br />

Na žalost nerazcepni trinomi ne obstajajo za <strong>po</strong>ljubno<br />

velikost končnega obsega. V tem primeru u<strong>po</strong>rabljamo<br />

pentonome ali helptonome.<br />

Z<strong>na</strong>no je, da ima vsak končni obseg GF(p n ) bazo <strong>na</strong>d<br />

<strong>po</strong>dobsegom GF(p) <strong>na</strong>slednje oblike:<br />

B = {β,β p , · · · ,β pn−1 }.<br />

V praksi so takšne baze, ki jih imenujemo normalne,<br />

zelo praktične za hardwersko implementacijo množenja<br />

v obsegu GF(p n ), še <strong>po</strong>sebej, kadar je p = 2.<br />

Aleksandar Jurišić 351<br />

Aleksandar Jurišić 352<br />

Aleksandar Jurišić 353<br />

Aleksandar Jurišić 354<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Implementacija<br />

Potenciranje opravimo z algoritmom kvadriraj in<br />

množi:<br />

α 21 = (α)(α 4 )(α 16 )<br />

Najprej izraču<strong>na</strong>mo faktorje α, α 2 , α 4 , α 8 , α 16 , in jih<br />

<strong>na</strong>to zmnožimo.<br />

Namesto 20 množenj smo jih <strong>po</strong>trebovali le 6.<br />

Ali je lahko kvadriranje hitrejše od<br />

(splošnega) množenja<br />

NE!<br />

ab = (a + b)2 − a 2 − b 2<br />

.<br />

2<br />

Če je kvadriranje ‘lahko’, <strong>po</strong>tem tudi splošno množenje<br />

ni dosti težje od seštevanja.<br />

DA!<br />

V normalni bazi končnega obsega GF(2 n )<br />

je kvadriranje ciklični zamik,<br />

množenje pa ostane težko v splošnem.<br />

V praksi so normalne baze zelo praktične za<br />

hardwarsko implementacijo množenja v obsegu<br />

GF(p n ), še <strong>po</strong>sebej, kadar je p = 2. in je kvadriranje<br />

cikličen zamik.<br />

S tem <strong>na</strong>m<strong>eno</strong>m so Mullin, Onyszchuk, Vanstone in<br />

Wilson [MOVW88] definirali optimalne normalne<br />

baze (ONB) kot tiste baze, katerih število koeficientov<br />

v reprezentaciji elementov β pi +1 , i = 0, · · · ,n − 1<br />

glede <strong>na</strong> bazo B je <strong>na</strong>tanko 2n − 1. Z drugimi<br />

besedami n×n-razsež<strong>na</strong> matrika T = (t mk ), definira<strong>na</strong><br />

z ββ pm = ∑ n−1<br />

k=0 βpk t mk, vsebuje <strong>na</strong>tanko 2n − 1<br />

neničelnih elementov.<br />

Ni težko preveriti, da je število 2n − 1 absolut<strong>na</strong><br />

s<strong>po</strong>dnja meja (DN).<br />

Aleksandar Jurišić 355<br />

Aleksandar Jurišić 356<br />

Aleksandar Jurišić 357<br />

Aleksandar Jurišić 358


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Izrek (Mullin et al. [MOVW]):<br />

Obseg GF(p n ) vsebuje optimalno normalno bazo v<br />

<strong>na</strong>slednjih primerih<br />

(i) n + 1 je praštevilo in p primitiven element<br />

obsega GF(n + 1),<br />

(ii) p = 2, 2n + 1 je praštevilo in bodisi<br />

2 je primitiven element obsega GF(2n+1) bodisi<br />

n je lih in 2 generira kvadratne ostanke obsega<br />

GF(2n+1).<br />

Mullin et al. [MOVW] so <strong>po</strong>stavili hi<strong>po</strong>tezo, da za<br />

p = 2 obstajajo optimalne normalne baze <strong>na</strong>tanko<br />

tedaj kadar velja en izmed <strong>po</strong>gojev (i) in (ii).<br />

Hi<strong>po</strong>tezo sta leta 1992 dokazala Gao in Lenstra.<br />

Grupa <strong>na</strong> eliptični krivulji<br />

Za kriptografijo sta jo leta 1985 prva<br />

predlagala Neal Koblitz in Victor Miller.<br />

Eliptič<strong>na</strong> krivulja E <strong>na</strong>d obsegom Z p<br />

je definira<strong>na</strong> z Weierstrassovo e<strong>na</strong>čbo:<br />

y 2 = x 3 + ax + b (1)<br />

kjer sta a,b ∈ Z p in 4a 3 + 27b 2 ≢ 0 (mod p)<br />

(GF(2 m ): y 2 + xy = x 3 + ax 2 + b).<br />

Pravilo za seštevanje<br />

1. P =(x 1,y 1), Q=(x 2,y 2) ∈ E(Z p),<br />

kjer P ≠ −Q := (x 2 , −y 2 ).<br />

Potem je P + Q = (x 3 , y 3 ), kjer je<br />

x 3 = λ 2 − x 1 − x 2 , y 3 = λ(x 1 − x 3 ) − y 1 , in<br />

⎧<br />

y 2 − y<br />

y<br />

1<br />

⎪⎨ ; za P ≠ Q<br />

Q<br />

x 2 − x 1<br />

λ =<br />

⎪⎩<br />

3x 2 1 + a<br />

2y 1<br />

; za P = Q. P<br />

0<br />

x<br />

P+Q<br />

E(Z p ) := {(x,y) | x,y ∈ Z p , ki ustrezajo (1)} ∪ O.<br />

2. P + O = O + P = P in P + (−P) = O<br />

za vsak P ∈ E(Z p ).<br />

Aleksandar Jurišić 359<br />

Aleksandar Jurišić 360<br />

Aleksandar Jurišić 361<br />

Aleksandar Jurišić 362<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Množica E(Z p ) je sestavlje<strong>na</strong> iz točk (x,y), x,y ∈ Z p ,<br />

ki ustrezajo zgornji e<strong>na</strong>čbi, vključno s točko neskončno<br />

O.<br />

Izrek (Hasse).<br />

p + 1 − 2 √ p ≤ |E| ≤ p + 1 + 2 √ p<br />

Schoofov algoritem izraču<strong>na</strong> |E| v O((log p) 8 ) bitnih<br />

operacijah.<br />

Grupa E je izomorf<strong>na</strong> Z n1 × Z n2 , kjer je n 2 |n 1 in<br />

n 2|(p − 1), tako da lahko <strong>na</strong>jdemo ciklično <strong>po</strong>dgru<strong>po</strong><br />

Z n1 , ki jo u<strong>po</strong>rabimo za ElGamalov kriptosistem.<br />

Podeks<strong>po</strong>nentno metodo index calculus zaenkrat<br />

ne z<strong>na</strong>mo u<strong>po</strong>rabiti pri DLP <strong>na</strong> eliptični grupi<br />

(razen če ni eliptič<strong>na</strong> krivulja supersingular<strong>na</strong>).<br />

Zato si lahko izberemo eliptično krivuljo s<br />

ciklično <strong>po</strong>dgru<strong>po</strong> velikosti (samo) okoli 2 160 .<br />

Primer: EC <strong>na</strong>d GF(2 4 )<br />

• Naj bo GF(2 4 ) generiran s kor<strong>eno</strong>m α = x<br />

nerazcepnega <strong>po</strong>linoma f(x) = 1 + x + x 4 .<br />

• E 1 (GF(2 4 ))<br />

= {(x,y) : y 2 + xy = x 3 + α 4 x 2 + 1} ∪ {O}.<br />

• E 1(GF(2 4 )) tvori gru<strong>po</strong> za seštevanje<br />

z O kot identiteto.<br />

Rešitve e<strong>na</strong>čbe: y 2 + xy = x 3 + α 4 x 2 + 1 <strong>na</strong>d GF(2 4 )<br />

(0, 1)<br />

(1, α 6 ) (1, α 13 )<br />

(α 3 , α 8 ) (α 3 , α 13 )<br />

(α 5 , α 3 ) (α 5 , α 11 )<br />

(α 6 , α 8 ) (α 6 , α 14 )<br />

(α 9 , α 10 ) (α 9 , α 13 )<br />

(α 10 ,α 1 ) (α 10 , α 8 )<br />

(α 12 , 0) (α 12 , α 12 )<br />

Aleksandar Jurišić 363<br />

Aleksandar Jurišić 364<br />

Aleksandar Jurišić 365<br />

Aleksandar Jurišić 366


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Primer seštevanja v E 1 (GF(2 4 )):<br />

Naj bo P 1 = (α 6 ,α 8 ), P 2 = (α 3 , α 13 ).<br />

• P 1 + P 2 = (x 3 , y 3 ):<br />

x 3 = ( α8 + α 13<br />

α 6 + α 3 )2 + α8 + α 13<br />

α 6 + α 3 + α6 + α 3 + α 4<br />

= ( α3<br />

α 2)2 + α3<br />

α 2 + α2 + α 4 = 1<br />

y 3 = ( α8 + α 13<br />

α 6 + α 3 )(α6 + 1) + 1 + α 8<br />

• 2P 1 = (x 3 , y 3 ):<br />

x 3 = (α 6 ) 2 + 1<br />

(α 6 ) 2<br />

= α 12 + α 3 = α 10<br />

y 3 = (α 6 ) 2 + (α 6 + α8<br />

α 6)α10 + α 10<br />

= α 3 + (α 6 + α 2 )α 10 = α 8<br />

Še en primer EC <strong>na</strong>d GF(2 4 )<br />

• Naj bo GF(2 4 ) generiran s kor<strong>eno</strong>m<br />

α = x nerazcepnega <strong>po</strong>linoma<br />

f(x) = 1 + x + x 4 .<br />

• E 2 (GF(2 4 ))<br />

= {(x,y) : y 2 + α 6 y = x 3 + α 3 x + 1} ∪ {O}.<br />

• E 2 (GF(2 4 )) tvori gru<strong>po</strong> za seštevanje<br />

z O kot identiteto.<br />

Iščemo rešitve e<strong>na</strong>čbe<br />

y 2 + α 6 y = x 3 + α 3 x + 1<br />

<strong>na</strong>d GF(2 4 ). Ta e<strong>na</strong>čba ima samo 8 rešitev:<br />

(α 2 , α 8 ) (α 2 ,α 14 )<br />

(α 10 , 1) (α 10 , α 13 )<br />

(α 11 , 0) (α 11 , α 6 )<br />

(α 13 ,α 5 ) (α 13 , α 9 )<br />

= ( α3<br />

α 2)α13 + α 2 = α 13<br />

Aleksandar Jurišić 367<br />

Aleksandar Jurišić 368<br />

Aleksandar Jurišić 369<br />

Aleksandar Jurišić 370<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Primer: EC <strong>na</strong>d GF(23)<br />

• Naj bo p = 23.<br />

• y 2 = x 3 + x + 1, (i.e., a = 1, b = 1).<br />

Velja: 27a 3 +16b 2 = 3·1 3 +16·1 3 = 19 ≠ 0 v GF(23).<br />

• E 3 (GF(23)) = {(x,y) : y 2 = x 3 + x + 1} ∪ {O}.<br />

• E 3 (GF(23)) tvori gru<strong>po</strong> za seštevanje<br />

z O kot identiteto.<br />

Rešitve e<strong>na</strong>čbe y 2 = x 3 + x + 1 <strong>na</strong>d Z 23 :<br />

(0, 1) (6, 4) (-11,-4)<br />

(0,-1) (6,-4) (-10, 7)<br />

(1, 7) (7, 11) (-10,-7)<br />

(1,-7) (7,-11) (-6, 3)<br />

(3, 10) (9, 7) (-6,-3)<br />

(3,-10) (9,-7) (-5, 3)<br />

(4, 0) (11, 3) (-5,-3)<br />

(5, 4) (11,-3) (-4, 5)<br />

(5,-4) (-11,4) (-4,-5)<br />

Primera seštevanja <strong>na</strong> E 3(GF(23))<br />

1. P 1 = (3, 10), P 2 = (9, 7),<br />

P 1 + P 2 = (x 3 , y 3 ).<br />

λ = 7−10<br />

9−3 = −3<br />

6 = −1<br />

2 = 11 ∈ Z 23.<br />

x 3 = 11 2 − 3 − 9 = 6 − 3 − 9 = −6,<br />

y 3 = 11(3 − (−6)) − 10 = 11(9) − 10<br />

= 89 = 20 = −3.<br />

Sledi P 1 + P 2 = (−6, −3).<br />

2. P 1 = (3, 10), 2P 1 = (x 3 ,y 3 ),<br />

λ = 3(32 )+1<br />

20<br />

= 5 20 = 1 4 = 6.<br />

x 3 = 6 2 − 6 = 30 = 7,<br />

y 3 = 6(3 − 7) − 10 = −24 − 10 = −11.<br />

Sledi 2P 1 = (7, −11).<br />

Aleksandar Jurišić 371<br />

Aleksandar Jurišić 372<br />

Aleksandar Jurišić 373<br />

Aleksandar Jurišić 374


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

P = (0, 1) je generator:<br />

P=( 0, 1)<br />

2P=(6,-4) 15P=( 9, 7)<br />

3P=(3,-10) 16P=(-6,3)<br />

4P=(-10,-7) 17P=(1,7)<br />

5P=(-5,3) 18P=(12,-4)<br />

6P=(7,11) 19P=(-4,5)<br />

7P=(11,3) 20P=(5,4)<br />

8P=(5,-4) 21P=(11,-3)<br />

9P=(-4,-5) 22P=(7 -11)<br />

10P =(12,4) 23P=(-5,-3)<br />

11P=(1,-7) 24P=(-10,7)<br />

12P=(-6,-3) 25P=(3,10)<br />

13P=(9,-7) 26P=(6,4)<br />

14P=(4,0) 27P=(0,-1)<br />

Log – antilog tabela<br />

log elt log elt<br />

0 O 14 (4,0)<br />

1 (0,1) 15 (9,7)<br />

2 (6,-4) 16 (-6,3)<br />

3 (3,-10) 17 (1,7)<br />

4 (-10,-7) 18 (-11,-4)<br />

5 (-5,3) 19 (-4,5)<br />

6 (7,11) 20 (5,4)<br />

7 (11,3) 21 (11,-3)<br />

8 (5,-4) 22 (7,-11)<br />

9 (-4,-5) 23 (-5,-3)<br />

10 (-11,4) 24 (-10,7)<br />

11 (1,-7) 25 (3,10)<br />

12 (-6,-3) 26 (6,4)<br />

13 (9,-7) 27 (0,-1)<br />

Antilog – log tabela<br />

elt log elt log<br />

O 0 (9,7) 15<br />

(0,1) 1 (9,-7) 13<br />

(0,-1) 27 (11,3) 7<br />

(1,7) 17 (11,-3) 21<br />

(1,-7) 11 (-11,4) 10<br />

(3,10) 25 (-11,-4) 18<br />

(3,-10) 3 (-10,7) 24<br />

(4,0) 14 (-10,-7) 4<br />

(5,4) 20 (-6,3) 16<br />

(5,-4) 8 (-6,-3) 12<br />

(6,4) 26 (-5,3) 5<br />

(6,-4) 2 (-5,-3) 23<br />

(7,11) 6 (-4,5) 19<br />

(7,-11) 22 (-4,-5) 9<br />

Diffie–Hellmanov protokol <strong>na</strong>d E(GF(23))<br />

Javni parametri:<br />

a = 17<br />

Anita<br />

y 2 = x 3 + x + 1<br />

P = (0, 1)<br />

✛<br />

(1,7)<br />

(-4,-5)<br />

✲<br />

b = 9<br />

Bojan<br />

Aleksandar Jurišić 375<br />

Aleksandar Jurišić 376<br />

Aleksandar Jurišić 377<br />

Aleksandar Jurišić 378<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

• Anita izraču<strong>na</strong> 17P = (1, 7),<br />

• Bojan izraču<strong>na</strong> 9P = (−4, −5),<br />

• Anita izraču<strong>na</strong> 17(−4, −5) = (6, 4),<br />

• Bojan izraču<strong>na</strong> 9(1, 7) = (6, 4).<br />

Anita in Bojan imata skupno točko (6, 4).<br />

Izraču<strong>na</strong>j log P (9, 7).<br />

Raču<strong>na</strong>nje logaritmov<br />

Izraču<strong>na</strong>j <strong>na</strong>slednjo tabelo:<br />

elt (0,1) (7,11) (-6,-3) (12,-4) (-10,7)<br />

log 1 6 12 18 24<br />

• Raču<strong>na</strong>mo<br />

(9, 7) + P, (9, 7) + 2P, (9, 7) + 3P,...,<br />

vse, dokler ne dobimo element iz tabele.<br />

• Tako dobimo: (9, 7) + 3P = (12, −4).<br />

• Iz tabele preberemo (12, −4) = 18P.<br />

• Sledi (9, 7) + 3P = 18P<br />

oziroma (9, 7) = 15P, torej k = 15.<br />

• Če je |E(GF(q))| = n, lahko <strong>po</strong>splošimo metodo za<br />

E(GF(23)) <strong>na</strong> <strong>na</strong>slednji <strong>na</strong>čin:<br />

– <strong>na</strong>redi tabelo (i,iP) velikosti √ n,<br />

– za iskanje logaritma elementa v tej tabeli<br />

<strong>po</strong>trebujemo <strong>na</strong>jveč √ n seštevanj točk.<br />

• Če je q ≈ 10 40 , <strong>po</strong>tem je |E(GF(q))| ≈ 10 40<br />

in ima tabela 10 20 vrstic.<br />

To je očitno <strong>po</strong><strong>po</strong>lnoma nedosegljivo.<br />

Če je k = log P (9, 7), <strong>po</strong>tem velja kP = (9, 7).<br />

Aleksandar Jurišić 379<br />

Aleksandar Jurišić 380<br />

Aleksandar Jurišić 381<br />

Aleksandar Jurišić 382


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Merkle-Hellmanov sistem z <strong>na</strong>hrbtnikom<br />

Merkle in Hellman sta leta 1978 predlagala ta sistem,<br />

že leta 1980 pa ga je razbil Shamir s <strong>po</strong>močjo<br />

Lenstrinega algoritma za celoštevilčno programiranje<br />

(angl. integer programming).<br />

Njegovo iterativno varianto pa je razbil malo kasneje<br />

Brickell.<br />

Drugačen sistem z <strong>na</strong>hrbtnikom je predlagal Chor,<br />

razbil pa ga je Rivest.<br />

Problem “<strong>po</strong>dmnožica za vsoto”<br />

Podatki: I = (s 1 ,...,s n ,T), T je cilj<strong>na</strong> vsota,<br />

<strong>na</strong>rav<strong>na</strong> števila s i pa so velikosti.<br />

Vprašanje: Ali obstaja tak bi<strong>na</strong>rni vektor<br />

n∑<br />

x = (x 1 ,...,x n ), za katerega velja x i s i = T<br />

Ta odločitveni problem je NP-<strong>po</strong>ln:<br />

i=1<br />

– <strong>po</strong>linomski algoritem ni z<strong>na</strong>n,<br />

– isto velja tudi za ustrezen iskalni problem.<br />

Ali za kakšno <strong>po</strong>dmnožico problemov morda obstaja<br />

<strong>po</strong>linomskim algoritem<br />

Za<strong>po</strong>redje (s 1 , ...,s n ) je super <strong>na</strong>raščajoče, če<br />

velja<br />

j−1<br />

∑<br />

s j > s i za 2 ≤ j ≤ n.<br />

i=1<br />

Če je sez<strong>na</strong>m velikosti super <strong>na</strong>raščajoč, <strong>po</strong>tem lahko<br />

iskalno varianto zgornjega problema rešimo v času<br />

O(n), rešitev x (če obstaja) pa je <strong>eno</strong>lič<strong>na</strong>.<br />

Opišimo tak algoritem:<br />

1. for i = n downto 1 do<br />

2. if T ≥ s i then<br />

3. T = T − s i , x i = 1<br />

4. else x i = 0<br />

5. if T = 0 then x = (x 1 ,...,x n ) je rešitev<br />

6. else ni rešitve.<br />

Aleksandar Jurišić 383<br />

Aleksandar Jurišić 384<br />

Aleksandar Jurišić 385<br />

Aleksandar Jurišić 386<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Naj bo s = (s 1 , ...,s n ) super <strong>na</strong>raščajoč in<br />

{ n∑<br />

}<br />

e s : {0, 1} n −→ 0,..., s i<br />

funkcija, definira<strong>na</strong> s pravilom<br />

e s (x 1 ,...,x n ) =<br />

i=1<br />

n∑<br />

x i s i .<br />

i=1<br />

Ali lahko to funkcijo u<strong>po</strong>rabimo za enkripcijo<br />

Ker je s super <strong>na</strong>raščajoče za<strong>po</strong>redje, je e s injekcija,<br />

zgoraj opisani algoritem pa lahko u<strong>po</strong>rabimo za<br />

dekripcijo.<br />

Sistem ni varen, saj dekripcijo lahko opravi prav<br />

vsak.<br />

Morda pa lahko transformiramo super <strong>na</strong>raščajoče<br />

za<strong>po</strong>redje tako, da izgubi to lastnost in edino<br />

Bojan lahko opravi inverzno operacijo, da dobi super<br />

<strong>na</strong>raščajoče za<strong>po</strong>redje.<br />

Če <strong>na</strong>padalec Oskar ne <strong>po</strong>z<strong>na</strong> te transformacije, ima<br />

pred seboj primer (<strong>na</strong> videz) splošnega problema, ki<br />

ga mora rešiti, če hoče opraviti dekripcijo.<br />

En tip takih transformacij se imenuje modular<strong>na</strong><br />

transformacija. Izberemo si tak praštevilski modul<br />

p, da je<br />

n∑<br />

p ><br />

i=1<br />

ter število a, 1 ≤ a ≤ p − 1.<br />

s i<br />

Naj bo<br />

t i = as i mod p, za 1 ≤ i ≤ n.<br />

Sez<strong>na</strong>m t = (t 1 ,...,t n ) je javni ključ, ki ga u<strong>po</strong>rabimo<br />

za enkripcijo, vrednosti a in p, ki definirata modularno<br />

transformacijo, pa sta tajni.<br />

Zakaj smo si izbrali za p praštevilo<br />

Zakaj je bil ta sistem sploh zanimiv<br />

Primer: Naj bo<br />

s = (2, 5, 9, 21, 45, 103, 215, 450, 946)<br />

tajni super <strong>na</strong>raščajoči sez<strong>na</strong>m velikosti.<br />

Za p = 2003 in a = 1289 dobimo javni sez<strong>na</strong>m velikosti<br />

t = (575, 436, 1586, 1030, 1921, 569, 721, 1183, 1570).<br />

Anita zašifrira s<strong>po</strong>ročilo x = (1, 0, 1, 1, 0, 0, 1, 1, 1):<br />

y = 575 + 1586 + 1030 + 721 + 1183 + 1570 = 6665<br />

ter ga <strong>po</strong>šlje Bojanu, ki <strong>na</strong>jprej izraču<strong>na</strong><br />

z = a −1 y mod p = 1643 in <strong>na</strong>to<br />

reši problem <strong>po</strong>dmnožice za<strong>po</strong>redja s za vsoto z.<br />

Aleksandar Jurišić 387<br />

Aleksandar Jurišić 388<br />

Aleksandar Jurišić 389<br />

Aleksandar Jurišić 390


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

6. <strong>po</strong>glavje<br />

Sheme za digitalne <strong>po</strong>dpise<br />

• uvod (<strong>po</strong>dpis z RSA sistemom)<br />

• ElGamalov sistem za digitalno <strong>po</strong>dpisovanje<br />

• Digital Sig<strong>na</strong>ture Standard<br />

• <strong>na</strong>padi<br />

• enkratni <strong>po</strong>dpis<br />

• <strong>po</strong>dpisi brez možnosti zanikanja<br />

• Fail-stop <strong>po</strong>dpisi<br />

Digitalni <strong>po</strong>dpis je <strong>na</strong>domestek za lastnoročni <strong>po</strong>dpis<br />

pri elektronski izmenjavi in digitalnemu hranjeju<br />

<strong>po</strong>datkov.<br />

Konceptualno se <strong>na</strong>čin zapisovanja informacij<br />

ni dramatično spremenil.<br />

Medtem ko smo prej shranjevali in pre<strong>na</strong>šali<br />

informacije <strong>na</strong> papirju, jih sedaj hranimo <strong>na</strong><br />

magnetnih in drugih medijih ter jih pre<strong>na</strong>šamo<br />

preko telekomunikacijskih sistemov<br />

(tudi brezžičnih).<br />

Bistv<strong>eno</strong> pa se je spremenila možnost kopiranja in<br />

spreminjanja informacij.<br />

Zlahka <strong>na</strong>redimo <strong>na</strong> tisoče kopij neke informacije,<br />

ki je shranje<strong>na</strong> digitalno, pri tem pa se<br />

nobe<strong>na</strong> ne razlikuje od origi<strong>na</strong>la.<br />

Z informacijo <strong>na</strong> papirju je to precej težje.<br />

Družba, v kateri so informacije<br />

spravljene in pre<strong>na</strong>šane v digitalni<br />

obliki, mora <strong>po</strong>skrbeti za to,<br />

da ne bo varnost informacij odvis<strong>na</strong> od<br />

fizičnega medija, ki jih je zapisal ali prenesel.<br />

Varnost informacij mora temeljiti izključno <strong>na</strong><br />

digitalni informaciji.<br />

Eno izmed osrednjih orodij pri zaščiti informacij<br />

je <strong>po</strong>dpis. Le-ta preprečuje <strong>po</strong>neverjanje,<br />

je dokaz o izvoru, identifikaciji, pričanju.<br />

Podpis <strong>na</strong>j bi bil unikat vsakega <strong>po</strong>sameznika,<br />

z njim se predstavimo, <strong>po</strong>trdimo, <strong>po</strong>oblastimo.<br />

Z razvojem digitalne informacije moramo<br />

<strong>po</strong>novno obdelati tudi koncept <strong>po</strong>dpisa.<br />

Ni več unikat, ki <strong>eno</strong>lično določa <strong>po</strong>dpisnika,<br />

kajti elektronsko kopiranje <strong>po</strong>dpisa je tako lahko,<br />

da je skoraj trivialno <strong>na</strong> ne<strong>po</strong>dpisan dokument<br />

pripeti <strong>po</strong>ljuben <strong>po</strong>dpis.<br />

Aleksandar Jurišić 391<br />

Aleksandar Jurišić 392<br />

Aleksandar Jurišić 393<br />

Aleksandar Jurišić 394<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Potrebujemo protokole, ki imajo <strong>po</strong>dobne lastnosti kot<br />

trenutni “papirni protokoli”.<br />

Družba ima enkratno priložnost, da vpelje nove in<br />

učinkovitejše <strong>na</strong>čine, ki <strong>na</strong>m bodo zagotovili varnost<br />

informacij.<br />

Veliko se lahko <strong>na</strong>učimo iz dosedanjih sistemov,<br />

obenem pa moramo odpraviti tudi številne<br />

<strong>po</strong>manjkljivosti.<br />

Primerjava digitalnega in<br />

<strong>na</strong>vadnega (lastnoročnega) <strong>po</strong>dpisa:<br />

• <strong>na</strong>vadni <strong>po</strong>dpis je fizično del <strong>po</strong>dpisanega dokumenta;<br />

• <strong>na</strong>vadni <strong>po</strong>dpis preverjamo s primerjanjem,<br />

digitalnega z algoritmom, katerega rezultat je<br />

odvisen od ključa in dokumenta;<br />

• kopija digitalnega <strong>po</strong>dpisa je identič<strong>na</strong> origi<strong>na</strong>lu;<br />

• digitalni <strong>po</strong>dpis je odvisen od dokumenta,<br />

ki ga <strong>po</strong>dpisujemo.<br />

Sistem za digitalno <strong>po</strong>dpisovanje je peterka<br />

(P, A, K, S, V), za katero velja<br />

1. P je konč<strong>na</strong> množica s<strong>po</strong>ročil,<br />

2. A je konč<strong>na</strong> množica <strong>po</strong>dpisov,<br />

3. K je konč<strong>na</strong> množica ključev,<br />

4. ∀ ključ K ∈ K obstaja algoritem za <strong>po</strong>dpisovanje<br />

sig K ∈ S,<br />

sig K : P → A<br />

in algoritem za preverjanje <strong>po</strong>dpisa<br />

ver K ∈ V,<br />

ver K : P × A → {true, false}.<br />

Funkciji sig K in ver K imata to lastnost, da za vsako<br />

s<strong>po</strong>ročilo x ∈ P in vsak <strong>po</strong>dpis y ∈ A velja<br />

{ true, če y = sigK (x)<br />

ver K(x,y) =<br />

false, če y ≠ sig K (x)<br />

Zahteve:<br />

• algoritma sig K in ver K imata<br />

<strong>po</strong>linomsko časovno zahtevnost<br />

• sig K je z<strong>na</strong>n le <strong>po</strong>dpisniku<br />

• ver K je splošno z<strong>na</strong>n<br />

• računsko mora biti nemogoče <strong>po</strong><strong>na</strong>rediti <strong>po</strong>dpis<br />

Aleksandar Jurišić 395<br />

Aleksandar Jurišić 396<br />

Aleksandar Jurišić 397<br />

Aleksandar Jurišić 398


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Primer: Algoritem RSA lahko u<strong>po</strong>rabimo tudi za<br />

<strong>po</strong>dpisovanje. Naj bo n = pq, kjer sta p in q praštevili.<br />

Če je (n, d) skriti ključ, (n, e) pa javni, pri čemer je<br />

de ≡ 1 (mod ϕ(n)), <strong>po</strong>tem definiramo:<br />

sig K (x) = d K (x) = x d mod n<br />

ver K (x,y) = true ⇐⇒ x = e K (y) = y e mod n<br />

za x,y ∈ Z n .<br />

Z zgornjim algoritmom je mogoče <strong>po</strong><strong>na</strong>rediti <strong>po</strong>dpis<br />

<strong>na</strong>ključnih s<strong>po</strong>ročil.<br />

Po<strong>na</strong>rejevalec <strong>na</strong>jprej izbere <strong>po</strong>dpis y in <strong>na</strong>to izraču<strong>na</strong><br />

x ≡ y e<br />

(mod n).<br />

Možnosti takega <strong>po</strong><strong>na</strong>rejanja se izognemo z<br />

• <strong>eno</strong>smernimi zgoščevalnimi funkcijami ali<br />

• zahtevo, da ima s<strong>po</strong>ročilo x določen <strong>po</strong>men.<br />

Pošiljanje <strong>po</strong>dpisanih tajnih s<strong>po</strong>ročil<br />

Vrstni red šifriranja in digitalnega <strong>po</strong>dpisovanja je<br />

<strong>po</strong>memben.<br />

1. Najprej <strong>po</strong>dpisovanje:<br />

x, sig Anita (x) → e Bojan ((x, sig Anita (x))).<br />

2. Najprej šifriranje z = e Bojan (x),<br />

<strong>po</strong>tem <strong>po</strong>dpis y = sig Anita (z):<br />

Bojan prejme (z, y), odšifrira tajnopis<br />

x = d Bojan (z) ter preveri <strong>po</strong>dpis ver Anita (z, y).<br />

V drugem primeru lahko <strong>na</strong>padalec Cene zamenja<br />

Anitin <strong>po</strong>dpis s svojim:<br />

y ′ = sig Cene (z) → (z,y ′ ) → x = d Bojan (z),<br />

ver Cene(z, y ′ )<br />

in Bojan bo mislil, da je s<strong>po</strong>ročilo prišlo od Ceneta.<br />

Zato se pri<strong>po</strong>roča <strong>na</strong>jprej <strong>po</strong>dpisovanje in <strong>na</strong>to<br />

šifriranje.<br />

Aleksandar Jurišić 399<br />

Aleksandar Jurišić 400<br />

Aleksandar Jurišić 401<br />

Aleksandar Jurišić 402<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

V primeru algoritma RSA je <strong>po</strong>trebno pri za<strong>po</strong>rednem<br />

<strong>po</strong>dpisovanju in šifriranju paziti <strong>na</strong> velikosti modulov<br />

(reblocking problem).<br />

Če je n Anita > n Bojan , se lahko zgodi, da Bojan ne bo<br />

mogel razvozlati s<strong>po</strong>ročila. Naj bo<br />

(n Anita ,e Anita ,d Anita ) = (62894113, 5, 37726937),<br />

(n Bojan ,e Bojan ,d Bojan ) = (55465219, 5, 44360237).<br />

Anita <strong>po</strong>dpiše s<strong>po</strong>ročilo x = 1368797 in <strong>po</strong>dpis<br />

zašifrira:<br />

1. s = x d Anita mod n Anita = 59847900,<br />

2. y = s e Bojan mod n Bojan = 38842235.<br />

Bojan izraču<strong>na</strong><br />

1. ŝ = y d Bojan mod n Bojan = 4382681,<br />

2. ̂x = ŝ e Anita mod n Anita = 54383568.<br />

Ker je s > n Bojan , je ̂x ≠ x = 1368797.<br />

Verjetnost tega dogodka je<br />

n Anita − n Bojan<br />

n Anita<br />

.<br />

Delitev shem za digitalno <strong>po</strong>dpisovanje<br />

1. Podpis je dodatek (ElGamal, DSA) s<strong>po</strong>ročilu -<br />

s<strong>po</strong>ročilo je možno rekonstruirati iz <strong>po</strong>dpisa (RSA),<br />

2. deterministični - nedeterministični,<br />

3. enkratni - večkratni.<br />

Različni sistemi za digitalno <strong>po</strong>dpisovanje<br />

• RSA<br />

• ElGamal, DSS (Digital Sig<strong>na</strong>ture Standard)<br />

• Enkratni <strong>po</strong>dpisi (one-time sig<strong>na</strong>tures)<br />

• Slepi <strong>po</strong>dpisi (blind sig<strong>na</strong>tures)<br />

• Podpisi brez možnosti zanikanja<br />

(undeniable sig<strong>na</strong>tures)<br />

• Skupinski <strong>po</strong>dpisi (group sig<strong>na</strong>tures)<br />

• Fail-Stop <strong>po</strong>dpisi<br />

Aleksandar Jurišić 403<br />

Aleksandar Jurišić 404<br />

Aleksandar Jurišić 405<br />

Aleksandar Jurišić 406


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

ElGamalov sistem za<br />

digitalno <strong>po</strong>dpisovanje<br />

Za razliko od algoritma RSA je ElGamalov sistem<br />

<strong>na</strong>menjen predvsem digitalnemu <strong>po</strong>dpisovanju, čeprav<br />

se ga da v <strong>po</strong>sebnih primerih u<strong>po</strong>rabiti tudi za<br />

šifriranje.<br />

Podpis je nedeterminističen (odvisen od <strong>na</strong>ključnega<br />

števila), torej sploh ni <strong>na</strong>tanko določen.<br />

Algoritem<br />

Naj bo p takšno praštevilo, da je v Z p težko izraču<strong>na</strong>ti<br />

diskretni algoritem in α ∈ Z ∗ p primitivni element.<br />

Naj bo še P = Z ∗ p, A = Z ∗ p × Z p−1 in<br />

K = {(p,α, a,β) : β ≡ α a<br />

Število a je skrito (zasebno),<br />

števila p,α in β pa so javno z<strong>na</strong><strong>na</strong>.<br />

(mod p)}.<br />

Podpisovanje: <strong>po</strong>dpisnik s ključem K = (p,α, a,β)<br />

izbere <strong>na</strong>ključno skrito število k ∈ Z ∗ p−1 in določi<br />

kjer je<br />

in<br />

sig K (x,k) = (γ, δ),<br />

γ ≡ α k mod p<br />

δ ≡ (x − aγ)k −1 mod (p − 1).<br />

Preverjanje <strong>po</strong>dpisa: (samo z javnimi p, α in β)<br />

ver K (x,γ, δ) = true ⇐⇒ β γ γ δ ≡ α x<br />

(mod p).<br />

Primer: Naj bo p = 467, α = 2 in a = 127.<br />

Potem je β ≡ α a mod p = 132. Recimo, da želimo<br />

<strong>po</strong>dpisati x = 100, izbrali pa smo si tudi k = 213.<br />

Podpis je e<strong>na</strong>k (γ, δ), kjer je<br />

γ ≡ 2 213 mod 467 = 29<br />

in<br />

δ ≡ (100 − 127 . 29) 431 mod 466 = 51.<br />

Pri preverjanju izraču<strong>na</strong>mo<br />

132 29 29 51 ≡ 189 mod 467 in<br />

2 100 ≡ 189 mod 467.<br />

Zadnji vrednosti se ujemata, zato je <strong>po</strong>dpis pravi.<br />

Aleksandar Jurišić 407<br />

Aleksandar Jurišić 408<br />

Aleksandar Jurišić 409<br />

Aleksandar Jurišić 410<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Varnost ElGamalovega sistema za<br />

<strong>po</strong>dpisovanje<br />

Kako bi lahko <strong>po</strong><strong>na</strong>redili <strong>po</strong>dpis, ne da bi vedeli za<br />

vrednost skritega števila a<br />

1. Za dano s<strong>po</strong>ročilo x je <strong>po</strong>trebno <strong>na</strong>jti tak par (γ, δ),<br />

da bo veljalo β γ γ δ ≡ α x (mod p), torej<br />

• če izberemo γ:<br />

rabimo δ = log γ α x β −γ (mod p),<br />

• če izberemo δ: glede <strong>na</strong> γ je <strong>po</strong>trebno rešiti e<strong>na</strong>čbo<br />

β γ γ δ ≡ α x (mod p),<br />

• hkrati raču<strong>na</strong>mo γ in δ (zaenkrat ni še nihče odkril<br />

hitrega <strong>po</strong>stopka za reševanje zgornje e<strong>na</strong>čbe).<br />

2. Za <strong>po</strong>dpis (γ, δ) je <strong>po</strong>trebno <strong>na</strong>jti ustrezno s<strong>po</strong>ročilo<br />

x:<br />

x = log α β γ γ δ (mod p).<br />

3. Hkratno raču<strong>na</strong>nje x,γ in δ: <strong>na</strong>j bosta i in j takšni<br />

števili, da velja 0 ≤ i,j ≤ p − 2 in D(j, p − 1) = 1.<br />

Potem števila<br />

γ ≡ α i β j (mod p),<br />

δ ≡ −γj −1 (mod (p − 1)),<br />

x ≡ −γij −1 (mod (p − 1))<br />

zadoščajo e<strong>na</strong>čbi β γ γ δ ≡ α x (mod p).<br />

Primer: Če je p = 467,α = 2 in β = 132, lahko<br />

z izbiro i = 99 in j = 179, dobimo veljaven <strong>po</strong>dpis<br />

(117, 41) za s<strong>po</strong>ročilo 331.<br />

4. Ali lahko pri veljavnem <strong>po</strong>dpisu (γ, δ) za x <strong>na</strong>jdemo<br />

še kakšen <strong>po</strong>dpis za neko drugo s<strong>po</strong>ročilo x ′ <br />

Odgovor je “DA”.<br />

Naj bodo h,i in j takš<strong>na</strong> števila, da zanje velja<br />

0 ≤ h,i,j ≤ p − 2 in D(hγ − jδ,p − 1) = 1.<br />

Potem je par (λ, µ) veljaven <strong>po</strong>dpis za x ′ , kjer je<br />

λ = γ h α i β j mod p,<br />

µ = δλ(hγ − jδ) −1 mod (p − 1),<br />

x ′ = λ(hx + iδ)(hγ − jδ) −1 mod (p − 1).<br />

Nevarnosti pri <strong>na</strong>pačni u<strong>po</strong>rabi<br />

ElGamalovega sistema<br />

1. Če <strong>na</strong>ključno število k ne ostane skrito, lahko<br />

izraču<strong>na</strong>mo<br />

2.<br />

a = (x − kδ)γ −1 mod (p − 1).<br />

Število k lahko u<strong>po</strong>rabimo le enkrat, sicer ga je<br />

mogoče zlahka izraču<strong>na</strong>ti.<br />

Aleksandar Jurišić 411<br />

Aleksandar Jurišić 412<br />

Aleksandar Jurišić 413<br />

Aleksandar Jurišić 414


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Digital Sig<strong>na</strong>ture Standard<br />

DSS je modifikacija ElGamalovega sistema za<br />

<strong>po</strong>dpisovanje. Kot ameriški standard je bil predlagan<br />

leta 1991, sprejet pa leta 1994.<br />

Algoritem: Naj bo p praštevilo velikosti L bitov,<br />

kjer je 512 ≤ L ≤ 1024 in 64 |L, q 160−bitno<br />

praštevilo, da q | p − 1, ter α ∈ Z ∗ p q−ti koren <strong>eno</strong>te<br />

<strong>po</strong> modulu p. Definirajmo P = Z ∗ p, A = Z q × Z q in<br />

K = {(p,q, α, a,β) : β ≡ α a<br />

(mod p)}.<br />

Vrednosti p,q, α in β so javne, število a pa skrito.<br />

Podpisovanje: <strong>po</strong>dpisnik izbere <strong>na</strong>ključno skrito<br />

število k, 1 ≤ k ≤ q − 1 in določi<br />

kjer je<br />

in<br />

sig K (x,k) = (γ, δ),<br />

γ ≡ (α k mod p) mod q<br />

δ ≡ (x + aγ) k −1<br />

(mod q).<br />

Za število δ mora veljati δ ≢ 0 (mod q).<br />

Preverjanje <strong>po</strong>dpisa: <strong>na</strong>jprej izraču<strong>na</strong>mo<br />

Potem je<br />

e 1 ≡ xδ −1 in e 2 ≡ γδ −1 .<br />

ver K (x,γ, δ) = true<br />

⇕<br />

(α e1 β e2 mod p) mod q = γ.<br />

Podobno kot pri ElGamalovi shemi je <strong>po</strong>dpisovanje<br />

hitrejše od preverjanja (za razliko od RSA).<br />

Prikrit ka<strong>na</strong>l v algoritmu DSA<br />

V algoritmu DSA obstaja prikrit ka<strong>na</strong>l, ki omogoča:<br />

(a) vključitev šifriranega s<strong>po</strong>ročila v <strong>po</strong>dpis, ki ga lahko<br />

prebere le tisti, ki <strong>po</strong>z<strong>na</strong> dodaten ključ;<br />

(b) razkritje skritega ključa, brez vednosti njegovega<br />

lastnika.<br />

Eno možnost za (a) si oglejmo <strong>na</strong> <strong>na</strong>slednji foliji,<br />

točko (b) pa prihranimo za domačo <strong>na</strong>logo.<br />

Aleksandar Jurišić 415<br />

Aleksandar Jurišić 416<br />

Aleksandar Jurišić 417<br />

Aleksandar Jurišić 418<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Primer: Izberimo n tajnih praštevil p 1 ,...,p n in<br />

<strong>po</strong>skusimo v <strong>po</strong>dpis skriti bi<strong>na</strong>rno za<strong>po</strong>redje b 1 , ...,b n .<br />

Naključno število k izbiramo toliko časa, da za vsak<br />

1 ≤ i ≤ n velja<br />

b i = 1 =⇒ γ je kvadratni ostanek <strong>po</strong> modulu p i ,<br />

b i = 0 =⇒ γ ni kvadratni ostanek <strong>po</strong> modulu p i ,<br />

kjer je sig K (x, k) = (γ, δ).<br />

Napadi<br />

Uganjevanje fraz, ki jih u<strong>po</strong>rabljamo za gesla<br />

primer število zahtevnost dolži<strong>na</strong> čas za<br />

z<strong>na</strong>kov gesla razbijanje<br />

mucka 5 25 (majhne črke) 12 bitov 40 minut<br />

br1a9Az 7 62 (črke in številke) 24 bitov 22 let<br />

TH,X1lb


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Povprečen čas za <strong>na</strong>pad z grobo silo<br />

dolži<strong>na</strong> število <strong>po</strong>treben <strong>po</strong>treben<br />

ključev možnih čas za <strong>eno</strong> čas za 10 6<br />

(v bitih) ključev šifriranje/µsek. šifriranj/µsek.<br />

32 2 32 =4.3×10 9 2 31 µsec≈36 min ≈2 milisek.<br />

56 2 56 =7.2×10 16 2 55 µsec≈1142 let ≈10 ur<br />

128 2 128 =3.4×10 38 2 127 µsec≈5×10 24 ≈5×10 18 let<br />

Napadi <strong>na</strong> PKS<br />

Napadi <strong>na</strong> DSA<br />

- Metoda Index Calculus (p ≈ 2 1024 )<br />

- Pollardova ρ-metoda ( √ πq/2, q ≈ 2 160 )<br />

Napadi <strong>na</strong> ECDSA<br />

- Pollardova ρ-metoda ( √ πn/2, n ≈ 2 160 )<br />

Programski <strong>na</strong>padi<br />

MIPS raču<strong>na</strong>lnik lahko opravi 4 × 10 4 seštevanj točk<br />

<strong>na</strong> eliptični krivulji <strong>na</strong> sekundo.<br />

(Ta oce<strong>na</strong> je precej konzervativ<strong>na</strong>. Posebaj prirej<strong>eno</strong><br />

integrirano vezje s frekvenco ure 40 MHz, ki opravlja<br />

operacije <strong>na</strong> eliptični krivulji <strong>na</strong>d obsegom GF(2 155 )<br />

in lahko izvede 40.000 seštevanj <strong>na</strong> sekundo.)<br />

Na osnovi tega zaključimo, da je število seštevanj<br />

<strong>na</strong> eliptični krivulji <strong>na</strong> GF(2 155 ) izved<strong>eno</strong> <strong>na</strong> MIPS<br />

raču<strong>na</strong>lniku v času enega leta <strong>na</strong>slednje<br />

(4 × 10 4 ) · (60 × 60 × 24 × 365) ≈ 2 40 .<br />

S<strong>po</strong>dnja tabela <strong>na</strong>m kaže kolikšno računsko moč<br />

<strong>po</strong>trebujemo za raču<strong>na</strong>nje problema diskretnega<br />

logaritma z u<strong>po</strong>rabo Pollard ρ-methodo za različne<br />

vrednosti števila n. MIPS leto je ekvivalentno računski<br />

moči 1 MIPS raču<strong>na</strong>lnika, ki je <strong>na</strong> voljo <strong>eno</strong> leto.<br />

√<br />

velikost obsega velikost πn/2 MIPS let<br />

(v bitih) števila n<br />

155 150 2 75 3.8 × 10 10<br />

210 205 2 103 7.1 × 10 18<br />

239 234 2 117 1.6 × 10 23<br />

Npr. če imamo <strong>na</strong> voljo 10.000 raču<strong>na</strong>lnikov z močjo<br />

1.000 MIPS in je n ≈ 2 150 , <strong>po</strong>tem je lahko problem<br />

diskretnega logaritma <strong>na</strong> eliptični krivulji rešen v 3.800<br />

letih.<br />

Aleksandar Jurišić 423<br />

Aleksandar Jurišić 424<br />

Aleksandar Jurišić 425<br />

Aleksandar Jurišić 426<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Prejšnjo tabelo je zanimivo primerjati s Odlyzko-vo<br />

tabelo, ki kaže kolikšno računsko moč <strong>po</strong>trebujemo<br />

za faktorizacijo celih števil s sedanjo verzijo splošnega<br />

NFS algoritma.<br />

velikost števila n MIPS let<br />

(v bitih)<br />

512 3 × 10 4<br />

768 2 × 10 8<br />

1024 3 × 10 11<br />

1280 1 × 10 14<br />

1536 3 × 10 16<br />

2048 3 × 10 20<br />

Hardwarski <strong>na</strong>padi<br />

Za bolj perspektiven <strong>na</strong>pad (s <strong>stran</strong>i<br />

dobro fi<strong>na</strong>nciranega <strong>na</strong>padalca) <strong>na</strong> ECC, bi bilo<br />

<strong>po</strong>trebno <strong>na</strong>rediti specializirano programsko opremo za<br />

paralelno iskanje <strong>na</strong> osnovi Pollard ρ-metode.<br />

Van Oorschot and Wiener ocenjujeta:<br />

za n ≈ 10 36 ≈ 2 120 bi raču<strong>na</strong>lnik z m =<br />

325.000 procesorji (ce<strong>na</strong> okoli 10 milijonov USD) lahko<br />

izraču<strong>na</strong>l diskretni logaritem v približno 35 dneh.<br />

Poudariti moramo, da raču<strong>na</strong>nje diskretnega<br />

logaritma <strong>na</strong> E(Z p ) v zgoraj omenjenih<br />

<strong>na</strong>padih odkrije en sam zasebni ključ.<br />

M. Blaze, W. Diffie, R. Rivest, B. Schneier, T.<br />

Shimomura, E. Thompson, and M. Wiener, January<br />

1996, (http://theory.lcs.mit.edu/<br />

rivest/publications.html)<br />

govorijo o minimalnih dolži<strong>na</strong>h ključev <strong>po</strong>trebnih za<br />

varen simetrični sistem (npr. DES ali IDEA):<br />

Da bi zagotovili ustrezno zaščito proti <strong>na</strong>jbolj<br />

resnim grožnjam (npr. velike komercialne<br />

ustanove in vladne agencije) mora ključ biti<br />

dolg vsaj 75 bitov. Za zaščito za <strong>na</strong>slednjih 20-<br />

let morajo ključi biti dolgi vsaj 90 bitov (pri tem<br />

u<strong>po</strong>števamo pričakovano rast računske moči).<br />

Če <strong>po</strong>splošimo te zaključke <strong>na</strong> eliptične kripto-sisteme,<br />

mora biti praštevilo n, ki zagotovlja kratkoročno<br />

varnost, dolgo vsaj 150 bitov, za srednjeročno varnost<br />

pa vsaj 180 bitov.<br />

Dolži<strong>na</strong> ključev<br />

simetrične asimetrične eliptične<br />

šifre (AES) (RSA, DSA, DH) krivulje<br />

40 bitov 274 bitov 80 bitov<br />

56 bitov 384 bitov 106 bitov<br />

64 bitov 512 bitov 132 bitov<br />

80 bitov 1024 bitov 160 bitov<br />

96 bitov 1536 bitov 185 bitov<br />

112 bitov 2048 bitov 237 bitov<br />

120 bitov 2560 bitov 256 bitov<br />

128 bitov 3072 bitov 270 bitov<br />

Aleksandar Jurišić 427<br />

Aleksandar Jurišić 428<br />

Aleksandar Jurišić 429<br />

Aleksandar Jurišić 430


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Digitalni <strong>po</strong>dpisi v Z p in <strong>na</strong> EC<br />

grupa Z ∗ p E(Zp)<br />

elementi množica celih števil točke (x, y), ki zadoščajo e<strong>na</strong>čbi<br />

{1, 2, . . ., p − 1} eliptične krivulje E<br />

in še točka v neskončnosti<br />

operacija množenje <strong>po</strong> modulu p seštevanje točk <strong>na</strong> eliptični krivulji<br />

oz<strong>na</strong>ke elementi: g, h elementi: P, Q<br />

množenje: g × h seštevanje: P + Q<br />

multiplikativni inverz: h −1 <strong>na</strong>sprot<strong>na</strong> točka: −Q<br />

deljenje: g/h odštevanje: P − Q<br />

<strong>po</strong>tenciranje: g a skalarno množenje točke: aP<br />

problem Za da<strong>na</strong> g, h ∈ Z ∗ p Za dani točki P, Q ∈ E(Zp)<br />

diskretnega <strong>po</strong>išči tako celo število a <strong>po</strong>išči tako celo število a<br />

logaritma da je h = g a mod p. da je Q = aP.<br />

Grupe<br />

Digital Sig<strong>na</strong>ture Algorithm (DSA)<br />

eliptični a<strong>na</strong>log ECDSA<br />

DSA<br />

ECDSA<br />

1. Izberi praštevili p in q velikosti 1. Izberi tako eliptično krivuljo<br />

2 1023


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Enkratni <strong>po</strong>dpis<br />

Z istim ključem lahko <strong>po</strong>dpišemo le en dokument.<br />

Po<strong>na</strong>vadi algoritem temelji <strong>na</strong> <strong>eno</strong>smernih funkcijah.<br />

Lam<strong>po</strong>rtova shema: P = {0, 1} k∈N , |Y | < ∞,<br />

<strong>eno</strong>smer<strong>na</strong> funkcija f : Y → Z.<br />

Naključno izberemo matriko (y ij) ∈ Y k×2 in določimo<br />

matriko e<strong>na</strong>ke velikosti z elementi z ij = f(y ij ).<br />

Ključ K sestavljata obe matriki, prva je skrita, druga<br />

pa jav<strong>na</strong>.<br />

Podpisovanje:<br />

sig K (x 1,...,x k) = (y 1,x1 ,...,y k,xk ).<br />

Preverjanje <strong>po</strong>dpisa:<br />

ver K (x 1 ,...,x k , a 1 ,...,a k ) = true<br />

⇕<br />

f(a i ) = z i,xi , 1 ≤ i ≤ k.<br />

Napadalec ne more <strong>po</strong><strong>na</strong>rediti <strong>po</strong>dpisa, saj ne more<br />

obrniti <strong>eno</strong>smerne funkcije f, da bi izraču<strong>na</strong>l y-e.<br />

Če pa bi <strong>po</strong>dpisali dve različni s<strong>po</strong>ročili z isto shemo,<br />

<strong>po</strong>tem bi <strong>na</strong>padalec lahko <strong>po</strong>neveril <strong>po</strong>dpis novih<br />

s<strong>po</strong>ročil.<br />

Primer: Naj bo f(x) = 3 x (mod 7879), ključ pa<br />

sestavljen iz matrik<br />

⎛ ⎞ ⎛ ⎞<br />

5831 735 2009 3810<br />

⎝ 803 2467 ⎠ in ⎝ 4672 4721 ⎠.<br />

4285 6449 268 5731<br />

Potem je <strong>po</strong>dpis za x = (1, 1, 0) e<strong>na</strong>k<br />

(y 1,1 ,y 2,1 , y 3,0 ) = (735, 2467, 4285).<br />

Pomanjkljivost te sheme je velikost <strong>po</strong>dpisa<br />

(za vsak bit čistopisa število med 1 in Y ).<br />

Spernerjeva lema<br />

Naj bo F taka druži<strong>na</strong> <strong>po</strong>dmnožic n-elementne<br />

množice, da noben njen element ni vsebovan v kakem<br />

drugem elementu iz F. Potem ima druži<strong>na</strong> F <strong>na</strong>jveč<br />

( ) n<br />

elementov.<br />

⌊n/2⌋<br />

Aleksandar Jurišić 439<br />

Aleksandar Jurišić 440<br />

Aleksandar Jurišić 441<br />

Aleksandar Jurišić 442<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Bos-Chaumova shema za enkratni <strong>po</strong>dpis<br />

P = {0, 1} k∈N , n ∈ N tak, da je 2 k ≤ ( 2n<br />

n<br />

)<br />

.<br />

B je množica z 2n elementi in<br />

φ : {0, 1} k → B<br />

injekcija, kjer je B množica n-teric iz B.<br />

Naj bo f : Y → Z <strong>eno</strong>smer<strong>na</strong> funkcija.<br />

Naključno izberemo vektor y= (y i ) ∈ Y 2n .<br />

Naj bo ključ K tajni vektor y in javni vektor (f(y i )).<br />

in<br />

sig K (x 1 , ...,x k ) = {y j |j ∈ φ(x 1 , ...,x k )}.<br />

ver K (x 1 , ...,x k ,a 1 , ...,a n ) = true<br />

⇕<br />

{f(a i ) | 1 ≤ i ≤ n} = {z j | j ∈ φ(x 1 ,...,x k )}.<br />

U<strong>po</strong>rabili smo 2 k ≤ ( 2n<br />

n<br />

)<br />

. Ocenimo binomski koeficient<br />

in dobimo ( 2n<br />

n<br />

)<br />

= (2n)!<br />

(n!) 2<br />

oziroma z u<strong>po</strong>rabo Stiringove formule 2 2n / √ (πn).<br />

Od tod dobimo<br />

k ≤ 2n − log 2(nπ)<br />

.<br />

2<br />

Asimptotično je torej n blizu k/2, zato smo dobili 50%<br />

redukcijo dolžine <strong>po</strong>dpisa.<br />

Slepi <strong>po</strong>dpis<br />

Želimo, da <strong>na</strong>m kdo <strong>po</strong>dpiše dokument, hkrati pa<br />

nočemo, da bi <strong>po</strong>dpisnik videl njegovo vsebino (npr.<br />

notarji, banke pri elektronskem de<strong>na</strong>rju).<br />

Algoritem (Chaum): Anita želi od Boja<strong>na</strong> <strong>po</strong>dpis<br />

dokumenta x, 1 ≤ x ≤ n − 1, pri čemer je (n, e)<br />

Bojanov javni ključ za algoritem RSA, d pa zasebni<br />

ključ.<br />

Aleksandar Jurišić 443<br />

Aleksandar Jurišić 444<br />

Aleksandar Jurišić 445<br />

Aleksandar Jurišić 446


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

1. Anita izbere takšno skrito <strong>na</strong>ključno število k,<br />

da velja 0 ≤ k ≤ n − 1 in D(n,k) = 1.<br />

Nato zastre dokument, tj. izraču<strong>na</strong><br />

m = xk e mod n,<br />

in ga <strong>po</strong>šlje Bojanu.<br />

2. Bojan <strong>po</strong>dpiše zastrti dokument<br />

s = m d mod n.<br />

3. Anita odstre <strong>po</strong>dpisani dokument<br />

y = k −1 s mod n.<br />

Podpisi brez možnosti zanikanja<br />

Podpisa ni mogoče preveriti brez sodelovanja<br />

<strong>po</strong>dpisnika, <strong>po</strong>dpisnik pa tudi ne more zanikati, da<br />

bi že <strong>po</strong>dpisani dokument res <strong>po</strong>dpisal<br />

(razen če odkloni sodelovanje pri <strong>po</strong>dpisu, kar pa<br />

lahko <strong>po</strong>jmujemo kot priz<strong>na</strong>nje, da je <strong>po</strong>dpis v resnici<br />

<strong>po</strong><strong>na</strong>rejen).<br />

Primer algoritma (Chaum-van Antwerpen):<br />

Naj bosta q in p = 2q + 1 praštevili, α ∈ Z ∗ p element<br />

reda q, 1 ≤ a ≤ q − 1 in β = α a mod p.<br />

Grupa G je multiplikativ<strong>na</strong> <strong>po</strong>dgrupa reda q grupe Z ∗ p<br />

(G sestavljajo kvadratični ostanki <strong>po</strong> modulo p).<br />

Naj bo P = A = G in<br />

K = {(p,α, a,β) : β = α a mod p}.<br />

Števila p,α in β so jav<strong>na</strong>, vrednost a pa je skrita.<br />

Podpisovanje (Bojan <strong>po</strong>dpiše dokument x ∈ G):<br />

Preverjanje <strong>po</strong>dpisa:<br />

y = sig K (x) = x a mod p.<br />

1. Anita izbere <strong>na</strong>ključni števili e 1 ,e 2 ∈ Z ∗ q. Nato<br />

izraču<strong>na</strong> c = y e1 β e2 mod p in ga <strong>po</strong>šlje Bojanu.<br />

2. Bojan izraču<strong>na</strong> d = c a−1 mod q mod p in ga vrne<br />

Aniti.<br />

3. Anita sprejme <strong>po</strong>dpis kot veljaven, če je<br />

d = x e1 α e2 mod p.<br />

Aleksandar Jurišić 447<br />

Aleksandar Jurišić 448<br />

Aleksandar Jurišić 449<br />

Aleksandar Jurišić 450<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Izrek. Če je y ≢ x a (mod p), <strong>po</strong>tem bo Anita<br />

sprejela y za veljaven <strong>po</strong>dpis čistopisa x<br />

z verjetnostjo 1/q.<br />

Poleg algoritmov za <strong>po</strong>dpisovanje in preverjanje<br />

obstaja še algoritem (disavowal protocol), s katerim<br />

lahko <strong>po</strong>dpisnik dokaže, da je <strong>po</strong><strong>na</strong>rejen <strong>po</strong>dpis res<br />

<strong>po</strong><strong>na</strong>rejeni, hkrati pa ne more zanikati, da pravega<br />

<strong>po</strong>dpisa ni <strong>na</strong>pravil sam.<br />

Primeri <strong>po</strong>dpisov brez možnosti zanikanja<br />

• Entrusted undeniable sig<strong>na</strong>ture: disavowal protokol<br />

lahko izvede le za to določe<strong>na</strong> ustanova, npr. sodišče.<br />

• Desig<strong>na</strong>ted confirmer sig<strong>na</strong>ture: ob <strong>po</strong>dpisu<br />

sami določimo, kdo bo <strong>na</strong>mesto <strong>na</strong>s sodeloval pri<br />

preverjanjih <strong>po</strong>dpisov. Podpišemo lahko še vedno le<br />

mi.<br />

• Convertible undeniable sig<strong>na</strong>ture: shema vsebuje<br />

skrito število. Do razkritja tega števila mora pri<br />

preverjanju <strong>po</strong>dpisa sodelovati <strong>po</strong>dpisnik.<br />

Po razkritju lahko kdorkoli preveri <strong>po</strong>dpis sam<br />

(kot pri običajnem digitalnem <strong>po</strong>dpisu).<br />

Lastnosti:<br />

Skupinski <strong>po</strong>dpisi<br />

• Dokumente lahko <strong>po</strong>dpisujejo le člani določene<br />

skupine.<br />

• Kdorkoli lahko preveri, da je dokument <strong>po</strong>dpisal<br />

nekdo iz omenjene skupine, vendar ne more ugotoviti,<br />

kdo je to bil.<br />

• V primeru s<strong>po</strong>ra je možno <strong>po</strong>dpis “odpreti” in<br />

identificirati <strong>po</strong>dpisnika.<br />

Fail-stop <strong>po</strong>dpisi<br />

Če bi <strong>po</strong><strong>na</strong>rejevalec z metodo grobe sile <strong>na</strong>šel<br />

skriti ključ, bi lahko v večini sistemov za digitalne<br />

<strong>po</strong>dpise <strong>po</strong>dpis <strong>po</strong><strong>na</strong>redil. Fail-stop sistemi takšno<br />

možnost onemogočijo tako, da vsakemu javnemu<br />

ključu priredijo več skritih ključev.<br />

Algoritem (van Heyst - Pedersen)<br />

Generiranje ključa se razdeli med Anito in TTP<br />

(Trusted Third Party).<br />

Aleksandar Jurišić 451<br />

Aleksandar Jurišić 452<br />

Aleksandar Jurišić 453<br />

Aleksandar Jurišić 454


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

TTP izbere praštevili q in p = 2q + 1 (diskretni<br />

algoritem je težko izračunljiv), element α ∈ Z ∗ p reda<br />

q ter skrito <strong>na</strong>ključno število a 0, 1 ≤ a 0 ≤ q − 1<br />

in izraču<strong>na</strong> β ≡ α a0 (mod p). Nato Anita <strong>po</strong>šlje<br />

četverko (p,q, α, β) in izbere skrita <strong>na</strong>ključ<strong>na</strong> števila<br />

a 1 ,a 2 ,b 1 ,b 2 ∈ Z q , ki predstavljajo njen skriti ključ, ter<br />

določi svoj javni ključ (γ 1, γ 2,p,q, α, β), kjer je<br />

γ 1 = α a1 β a2 (mod p) in γ 2 = α b1 β b2 (mod p).<br />

Podpisovanje: y = sig K (x) = (y 1 , y 2 ), kjer je<br />

y 1 ≡ a 1 + x b 1 (mod q)<br />

in<br />

y 2 ≡ a 2 + x b 2 (mod q).<br />

Preverjanje <strong>po</strong>dpisa:<br />

ver K(x,y 1,y 2) = true ⇐⇒ γ 1γ2 x ≡ α y1 β y2 (mod p).<br />

O<strong>po</strong>mbe:<br />

1. Natanko q 2 četverk (a ′ 1, a ′ 2,b ′ 1,b ′ 2), kjer so elementi<br />

iz Z q , da e<strong>na</strong>ki vrednosti (γ 1 ,γ 2 ) v javnem ključu.<br />

2. Teh q 2 četverk da pri istem dokumentu x q različnih<br />

<strong>po</strong>dpisov.<br />

3. Naj bo Q 1 množica q četverk, ki da pri x<br />

e<strong>na</strong>k <strong>po</strong>dpis. Potem da ta množica pri drugem<br />

dokumentu q različnih <strong>po</strong>dpisov.<br />

Varnost sistema<br />

Recimo, da želi nekdo <strong>po</strong><strong>na</strong>rediti Anitin <strong>po</strong>dpis za<br />

s<strong>po</strong>ročilo x ′ .<br />

1. Če <strong>po</strong><strong>na</strong>rejevalec <strong>po</strong>z<strong>na</strong> le skriti ključ, ki pripada<br />

javnemu, je verj<strong>eno</strong>st 1/q, da je njegov <strong>po</strong>dpis e<strong>na</strong>k<br />

Anitinemu.<br />

2. Po<strong>na</strong>rejevalec ima dostop do drugega s<strong>po</strong>ročila x<br />

in Anitinega <strong>po</strong>dpisa (y 1 , y 2 ). Po tretji o<strong>po</strong>mbi je<br />

verjetnost spet 1/q.<br />

Aleksandar Jurišić 455<br />

Aleksandar Jurišić 456<br />

Aleksandar Jurišić 457<br />

Aleksandar Jurišić 458<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

7. <strong>po</strong>glavje<br />

Zgoščevalne funkcije (Hash Functions)<br />

• zgoščevalne funkcije brez trčenj<br />

• verjetnost trčenja<br />

• <strong>na</strong>pad s <strong>po</strong>močjo paradoksa rojstnih dnevov<br />

• zgoščeval<strong>na</strong> funkcija z diskretnim logaritmom<br />

Shema DSS (brez u<strong>po</strong>rabe zgoščevalnih funkcij)<br />

<strong>po</strong>dvoji dolžino <strong>po</strong>dpisanega s<strong>po</strong>ročila.<br />

Resnejši problem <strong>na</strong>stane, ker je mogoče preurejati<br />

dele <strong>po</strong>dpisanega s<strong>po</strong>ročila ali pa nekatere celo<br />

izpustiti/dodati.<br />

Celovitost <strong>po</strong>datkov ne more biti zagotovlje<strong>na</strong><br />

izključno s <strong>po</strong>dpisovanjem majhnih delov dokumenta,<br />

zato vpeljemo zgoščevalne funkcije (angl. Hash<br />

Functions), ki <strong>po</strong>ljubno dolgemu s<strong>po</strong>ročilu priredijo<br />

kratko za<strong>po</strong>redje bitov, ki jih <strong>po</strong>tem <strong>po</strong>dpišemo.<br />

Zgoščevalne funkcije brez trčenj<br />

(angl. Collision-free Hash Functions)<br />

Naj bo (x,y) <strong>po</strong>dpisano s<strong>po</strong>ročilo, kjer je<br />

y = sig K (h(x)).<br />

Preprost <strong>na</strong>pad: izraču<strong>na</strong>mo z = h(x) in <strong>na</strong>to<br />

<strong>po</strong>iščemo tak od x različen x ′ , da je h(x ′ ) = h(x).<br />

Def: Naj bo x s<strong>po</strong>ročilo. Za zgoščevalno funkcijo h<br />

pravimo, da je šibko brez trčenj (angl. weakly<br />

collision-free), če v doglednem času ni možno <strong>na</strong>jti<br />

(izraču<strong>na</strong>ti) tak od x različen x ′ , da je h(x) = h(x ′ ).<br />

Še en <strong>na</strong>pad: <strong>po</strong>iščemo taka x in x ′ , da je x≠x ′ in<br />

h(x ′ ) = h(x) ter prisilimo Boja<strong>na</strong>, da <strong>po</strong>dpiše x.<br />

Potem je (x ′ , y) <strong>po</strong>neverjen <strong>po</strong>dpis.<br />

Def: Za zgoščevalno funkcijo h pravimo, da je<br />

krepko brez trčenj (angl. strongly collision-free),<br />

če v doglednem času ni možno <strong>na</strong>jti (izraču<strong>na</strong>ti)<br />

taka x in x ′ , da je x ≠ x ′ in h(x) = h(x ′ ).<br />

Aleksandar Jurišić 459<br />

Aleksandar Jurišić 460<br />

Aleksandar Jurišić 461<br />

Aleksandar Jurišić 462


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Pa še en <strong>na</strong>pad: recimo, da <strong>na</strong>m je uspelo<br />

<strong>po</strong><strong>na</strong>rediti <strong>po</strong>dpis <strong>na</strong>ključnega števila z, <strong>na</strong>to pa<br />

<strong>po</strong>iščemo tak x, da je z = h(x).<br />

Ta <strong>na</strong>pad preprečimo z <strong>eno</strong>smernimi funkcijami.<br />

Dokazali bomo, da so funkcije brez trčenj <strong>eno</strong>smerne.<br />

To sledi iz trditve, da je možno algoritem za raču<strong>na</strong>nje<br />

obrata zgoščevalne funkcije u<strong>po</strong>rabiti kot <strong>po</strong>dprogram<br />

Las Vegas probabilističnega algoritma, ki išče trčenja.<br />

Izrek: Naj bo h : X −→ Z zgoščeval<strong>na</strong> funkcija,<br />

|X| < ∞ in |X| ≥ 2|Z| ter <strong>na</strong>j bo A algoritem<br />

za raču<strong>na</strong>nje obrata zgoščevalne funkcije.<br />

Potem obstaja Las Vegas probabilistični algoritem,<br />

ki <strong>na</strong>jde trčenja z verjetnostjo vsaj 1/2.<br />

Dokaz: Naj bo B <strong>na</strong>slednji algoritem.<br />

1. Izberi <strong>na</strong>ključen element x ∈ X,<br />

2. izraču<strong>na</strong>j z := h(x),<br />

3. izraču<strong>na</strong>j x 1 := A(z),<br />

4. if x 1 ≠ x then x 1 in x trčita glede <strong>na</strong> h (uspeh)<br />

else QUIT(neuspeh).<br />

Izraču<strong>na</strong>jmo verjetnost za uspeh. Najprej definiramo<br />

ekvivalenčno relacijo<br />

x ∼ x ′ ⇐⇒ h(x) = h(x ′ ).<br />

Naj bo C množica ekvivalenčnih razredov,<br />

<strong>po</strong>tem je |C| ≤ |Z|. Velja tudi: |Z| ≤ |X|/2.<br />

P(uspeh) = 1 ∑ |[x]| − 1<br />

|X| |[x]|<br />

x∈X<br />

= 1 ∑<br />

(|c| − 1) ≥<br />

|X|<br />

c∈C<br />

= 1 ∑∑<br />

|X|<br />

|X| − |Z|<br />

|X|<br />

c∈C x∈c<br />

≥ 1 2 .<br />

|c| − 1<br />

|c|<br />

Verjetnost trčenja<br />

Naj bo h : X −→ Z zgoščeval<strong>na</strong> funkcija,<br />

s z = |h −1 (z)|<br />

in<br />

N = |{{x 1 , x 2 } | h(x 1 ) = h(x 2 )}|,<br />

tj. N je število neurejenih parov, ki trčijo pri funkciji h.<br />

Pokazali bomo, da obstaja od nič različ<strong>na</strong> s<strong>po</strong>dnja<br />

meja za verjetnost P, da je h(x 1 ) = h(x 2 ), kjer sta<br />

x 1 in x 2 <strong>na</strong>ključ<strong>na</strong> (ne nujno različ<strong>na</strong>) elementa iz X.<br />

Aleksandar Jurišić 463<br />

Aleksandar Jurišić 464<br />

Aleksandar Jurišić 465<br />

Aleksandar Jurišić 466<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

1. ∑ s z = |X|, tj. <strong>po</strong>vprečje s z -ov je s = |X|/|Z|.<br />

z∈Z<br />

2. N = ∑ z∈Z<br />

( )<br />

sz<br />

= 1 2 2<br />

∑<br />

z∈Z<br />

s 2 z − |X|<br />

2 .<br />

3. ∑ z∈Z(s z − s) 2 = 2N + |X| − |X| 2 /|Z|.<br />

4. N ≥ |X| ( ) |X|<br />

2 |Z| − 1 , pri čemer velja e<strong>na</strong>kost<br />

<strong>na</strong>tanko tedaj, ko je s z = |X|/|Z| za vsak z ∈ Z.<br />

5. P ≥ 1/|Z|, pri čemer velja e<strong>na</strong>kost <strong>na</strong>tanko tedaj,<br />

ko je s z = |X|/|Z| za vsak z ∈ Z.<br />

Kakšno <strong>na</strong>ključje!!! Mar res<br />

Na nogometni tekmi sta<br />

<strong>na</strong> igrišču dve e<strong>na</strong>jsterici<br />

in sodnik, skupaj<br />

23 oseb.<br />

Kakš<strong>na</strong> je verjetnost,<br />

da imata dve osebi<br />

isti rojstni dan<br />

Ali je ta verjetnost lahko<br />

večja od 0.5<br />

12.jun.<br />

15.maj<br />

1.apr.<br />

8.nov.<br />

18.maj<br />

2.avg.<br />

31.okt.<br />

24.feb.<br />

12.dec.<br />

11.dec.<br />

4.nov.<br />

1.jan.<br />

28.jul.<br />

25.maj<br />

6.dec.<br />

11.avg.<br />

2.nov.<br />

8.feb.<br />

31.maj<br />

1.apr.<br />

2.feb.<br />

22.feb.<br />

9.sept.<br />

Ko vstopi v sobo k-ta oseba, je verjetnost, da je vseh<br />

k rojstnih dnevov različnih e<strong>na</strong>ka:<br />

365<br />

365 × 364<br />

365 × 363<br />

365 × · · · × 365 − k + 1<br />

365<br />

{<br />

0.493, če je k=22<br />

=<br />

0.507, če je k=23<br />

verjetnost<br />

1<br />

0.5<br />

0<br />

verjetnost neujemanja<br />

rojstnih dnevov<br />

0.493<br />

0.507<br />

verjetnost <strong>na</strong>kljucja<br />

1 stevilo ljudi<br />

23<br />

V <strong>po</strong>ljubni skupini 23-ih ljudi je verjetnost,<br />

da imata vsaj dva skupni rojstni dan > 1/2.<br />

Čeprav je 23 majhno število, je med 23 osebami 253<br />

različnih parov. To število je veliko bolj <strong>po</strong>vezano z<br />

iskano verjetnostjo.<br />

Testirajte to <strong>na</strong> zabavah z več kot 23 osebami.<br />

Organizirajte stave in dolgoročno boste gotovo <strong>na</strong><br />

boljšem, <strong>na</strong> velikih zabavah pa boste zlahka zmagovali.<br />

Aleksandar Jurišić 467<br />

Aleksandar Jurišić 468<br />

Aleksandar Jurišić 469<br />

Aleksandar Jurišić 470


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Napad s <strong>po</strong>močjo paradoksa<br />

(angl. Birthday Attack)<br />

rojstnih dnevov<br />

To seveda ni paradoks, a vse<strong>eno</strong> <strong>po</strong><strong>na</strong>vadi zavede <strong>na</strong>š<br />

občutek.<br />

Ocenimo še splošno verjetnost.<br />

Mečemo k žogic v n <strong>po</strong>sod in gledamo, ali sta v kakšni<br />

<strong>po</strong>sodi vsaj dve žogici.<br />

Poiščimo s<strong>po</strong>dnjo mejo za verjetnost zgoraj opisanega<br />

dogodka.<br />

Privzeli bomo, da je |h −1 (x)| ≈ m/n, kjer je n = |Z|<br />

in m = |X| (v primeru, da velikosti praslik niso e<strong>na</strong>ke<br />

se verjetnost le še <strong>po</strong>veča).<br />

(<br />

1 − 1 )(<br />

1 − 2 ) (<br />

· · · 1 − k − 1 )<br />

∏k−1<br />

(<br />

= 1 − i )<br />

n n n n<br />

i=1<br />

Iz Taylorjeve vrste<br />

e −x = 1 − x + x2<br />

2! − x3<br />

3! + · · ·<br />

ocenimo 1 − x ≈ e −x in dobimo<br />

∏k−1<br />

(<br />

1 − i )<br />

∏<br />

≈<br />

n<br />

i=1<br />

Torej je verjetnost trčenja<br />

k−1<br />

e −i<br />

n<br />

i=1<br />

1 − e −k(k−1)<br />

2n .<br />

= e −k(k−1)<br />

2n .<br />

Potem velja<br />

e −k(k−1)<br />

2n ≈ 1 − ε<br />

oziroma<br />

−k(k − 1)<br />

≈ log(1 − ε)<br />

2n<br />

oziroma<br />

k 2 1<br />

− k ≈ 2n log<br />

1 − ε<br />

in če ignoriramo −k, dobimo končno<br />

√<br />

1<br />

k ≈ 2n log<br />

1 − ε .<br />

Aleksandar Jurišić 471<br />

Aleksandar Jurišić 472<br />

Aleksandar Jurišić 473<br />

Aleksandar Jurišić 474<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Za ε = 0.5 je<br />

k ≈ 1.17 √ n,<br />

kar <strong>po</strong>meni, da, če zgostimo nekaj več kot √ n<br />

elementov, je bolj verjetno, da pride do trčenja kot<br />

da ne pride do trčenja.<br />

V splošnem je k pro<strong>po</strong>rcio<strong>na</strong>len z √ n.<br />

Napad s <strong>po</strong>močjo paradoksa rojstnih dnevov s<br />

tem določi s<strong>po</strong>dnjo mejo za velikost zaloge vrednosti<br />

zgoščevalne funkcije.<br />

40-bit<strong>na</strong> zgostitev ne bi bila var<strong>na</strong>, saj bi prišli<br />

do trčenja z nekaj več kot 2 20 (se pravi milijon)<br />

<strong>na</strong>ključnimi zgostitvami z verjetnostjo vsaj 1/2.<br />

V praksi je pri<strong>po</strong>roče<strong>na</strong> <strong>na</strong>jmanj 128-bit<strong>na</strong> zgostitev in<br />

shema DSS z 160-imi biti to vsekakor u<strong>po</strong>števa.<br />

Zgoščeval<strong>na</strong> funkcija z diskretnim logaritmom<br />

Varnost Chaum, Van Heijst in Pfitzmannove<br />

zgoščevalne funkcije je zasnova<strong>na</strong> <strong>na</strong> varnosti<br />

diskretnega logaritma.<br />

Ni dovolj hitra, da bi jo u<strong>po</strong>rabljali v praksi,<br />

je pa zato vsaj primer<strong>na</strong> za študij varnosti.<br />

Naj bosta p in q = (p − 1)/2 veliki praštevili,<br />

α in β pa dva primitiv<strong>na</strong> elementa v Z p ,<br />

za katera je vrednost log α β zaseb<strong>na</strong>.<br />

Zgoščevalno funkcijo<br />

h : {0,...,q − 1} × {0, ...,q − 1} −→ Z p \{0}<br />

definirajmo z<br />

h(x 1 , x 2 ) = α x1 β x2 mod p.<br />

Pokazali bomo, da je ta funkcija krepko brez trčenj<br />

(strongly collision-free).<br />

Aleksandar Jurišić 475<br />

Aleksandar Jurišić 476<br />

Aleksandar Jurišić 477<br />

Aleksandar Jurišić 478


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Pred<strong>po</strong>stavimo obratno: za (x 1 , x 2 ) ≠ (x 3 , x 4 ) velja<br />

oziroma<br />

ali<br />

h(x 1, x 2) = h(x 3, x 4)<br />

α x1 β x2 ≡ α x3 β x4 (mod p)<br />

α x1−x3 ≡ β x4−x2 (mod p).<br />

Če je d = D(x 4 − x 2 , p − 1), <strong>po</strong>tem imamo zaradi<br />

p − 1 = 2q <strong>na</strong>tanko štiri možnost za d:<br />

Če je d = 1, definiramo<br />

y = (x 4 − x 2 ) −1 mod (p − 1)<br />

in dobimo<br />

β ≡ β (x4−x2)y ≡ α (x1−x3)y (mod p),<br />

iz česar z<strong>na</strong>mo izraču<strong>na</strong>ti diskretni logaritem<br />

log α β ≡ (x 1 − x 3 )(x 4 − x 2 ) −1 mod (p − 1).<br />

Če je d = 2, je d = D(x 4 − x 2 , q) = 1, tako da lahko<br />

definiramo<br />

y = (x 4 − x 2 ) −1 mod q<br />

in dobimo za (x 4 − x 2 )y = kq + 1, kjer je k ∈ Z,<br />

β (x4−x2)y ≡ β kq+1 ≡ (−1) k β ≡ ±β (mod p)<br />

zaradi β q ≡ −1 (mod p).<br />

Torej imamo<br />

±β ≡ β (x4−x2)y ≡ α (x1−x3)y (mod p),<br />

od koder z<strong>na</strong>mo izraču<strong>na</strong>ti diskretni logaritem<br />

log α β ≡ (x 1 − x 3)y mod (p − 1)<br />

ali pa<br />

log α β ≡ (x 1 − x 3 )y + q mod (p − 1).<br />

{1, 2,q,p − 1}.<br />

Aleksandar Jurišić 479<br />

Aleksandar Jurišić 480<br />

Aleksandar Jurišić 481<br />

Aleksandar Jurišić 482<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Primer d = q ni možen, saj iz<br />

sledi<br />

0 ≤ x 2 ≤ q − 1 in 0 ≤ x 4 ≤ q − 1<br />

−(q − 1) ≤ x 4 − x 2 ≤ q − 1.<br />

Končno si <strong>po</strong>glejmo še primer d = p − 1, kar se lahko<br />

zgodi le za x 2 = x 4 . Potem velja<br />

α x1 ≡ α x3 (mod p)<br />

oziroma x 1 = x 3 in (x 1 , x 2 ) = (x 3 ,x 4 ). Protislovje!<br />

Razširitev zgoščevalne funkcije<br />

Doslej smo študirali zgoščevalne funkcije s končno<br />

dom<strong>eno</strong>.<br />

Sedaj pa <strong>po</strong>kažimo, kako lahko razširimo zgoščevalne<br />

funkcije, ki so krepko brez trčenj in imajo končno<br />

dom<strong>eno</strong>, do zgoščevalnih funkcij, ki so krepko brez<br />

trčenj in imajo neskončno dom<strong>eno</strong>.<br />

Tako bomo lahko <strong>po</strong>dpisovali s<strong>po</strong>ročila <strong>po</strong>ljubne<br />

dolžine.<br />

Naj bo h ∗ zgoščeval<strong>na</strong> funkcija za katero je |X| = ∞.<br />

Naj bo zgoščeval<strong>na</strong> funkcija h : (Z 2 ) m −→ (Z 2 ) t ,<br />

m ≥ t + 1 krepko brez trčenj.<br />

Potem bomo za X = ∪ ∞ i=m (Z 2 ) i definirali<br />

zgoščevalno funkcijo<br />

h ∗ : X −→ (Z 2 ) t ,<br />

ki bo tudi krepko brez trčenj.<br />

Elementi množice X so za<strong>po</strong>redja bitov, |x|, x ∈ X,<br />

pa <strong>na</strong>j predstavlja dolžino elementa x, tj. število bitov<br />

x-a. Z x ||y oz<strong>na</strong>čimo spetje za<strong>po</strong>redij x in y.<br />

1.primer: m ≥ t + 2. Naj bo |x| = n > m in<br />

x spetje x 1 || x 2 || . .. || x k , kjer je<br />

|x 1| = |x 2| = · · · = |x k−1| = m − t − 1<br />

in |x k | = m−t−1−d, pri čemer je 0 ≤ d ≤ m−t−2.<br />

Torej je ⌈ ⌉<br />

n<br />

k = .<br />

m − t − 1<br />

Aleksandar Jurišić 483<br />

Aleksandar Jurišić 484<br />

Aleksandar Jurišić 485<br />

Aleksandar Jurišić 486


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Funkcijo h ∗ (x) definiramo z <strong>na</strong>slednjim algoritmom:<br />

1. for i = 1 to k − 1 do y i = x i<br />

2. y k = x k || 0 d<br />

3. <strong>na</strong>j bo y k+1 število d v dvojiškem sistemu<br />

4. g 1 = h(0 t+1 ||y 1 )<br />

5. for i = 1 to k do g i+1 = h(g i || 1 ||y i+1 )<br />

6. h ∗ (x) = g k+1<br />

Spetje y 1 ||y 2 || . .. || y k+1 smo dobili tako, da smo<br />

x k -ju <strong>na</strong> desni pripeli d ničel, za<strong>po</strong>redju y k+1 pa smo<br />

pripeli ničle <strong>na</strong> levi, tako da je |y k+1 | = m − t − 1.<br />

Izrek: Naj bo h : (Z 2 ) m −→ (Z 2 ) t , m ≥ t + 2<br />

zgoščeval<strong>na</strong> funkcija krepko brez trčenj.<br />

Potem je zgoraj def. zgoščeval<strong>na</strong> funkcija<br />

h ∗ : X −→ (Z 2) t tudi krepko brez trčenj.<br />

Dokaz: Pred<strong>po</strong>stavimo, da smo <strong>na</strong>šli x ≠ x ′ tako, da<br />

je h ∗ (x) = h ∗ (x ′ ) in <strong>po</strong>kažimo, da lahko <strong>po</strong>iščemo v<br />

<strong>po</strong>linomskem času trčenje za h. Vzamemo |x| ≥ |x ′ |.<br />

Naj bo y(x) = y 1|| ...||y k+1 in y(x ′ ) = y 1||...||y ′ j+1,<br />

′<br />

kjer sta x in x ′ do<strong>po</strong>lnje<strong>na</strong> z d ničlami <strong>po</strong> 2. koraku in<br />

so g 1 ,...,g k+1 in g 1,...,g ′ j+1 ′ za<strong>po</strong>redoma vrednosti,<br />

ki jih izraču<strong>na</strong>mo v korakih 4 in 5.<br />

Če je |x| ≢ |x ′ | (mod m − t − 1), <strong>po</strong>tem je d ≠ d ′ in<br />

od tod y k+1 ≠ y ′ j+1, torej dobimo trčenje iz<br />

h(g k ||1||y k+1 )=g k+1 =h ∗ (x)=h ∗ (x ′ )=g ′ j+1=h(g ′ j||1||y ′ j+1).<br />

Zato smemo sedaj privzeti, da m−t−1 deli |x|−|x ′ |.<br />

Iz y k+1 = y ′ j+1, tako kot v prejšnjem primeru, sledi<br />

h(g k ||1||y k+1 ) = h(g ′ j||1||y ′ j+1).<br />

Če je g k ≠ g ′ j, smo <strong>na</strong>šli trčenje, v <strong>na</strong>sprotnem primeru<br />

pa je<br />

h(g k−1 ||1||y k ) = g k = g ′ j = h(g ′ j−1||1||y ′ j).<br />

Če <strong>na</strong> ta <strong>na</strong>čin s <strong>po</strong>stopnim vračanjem ne pridemo do<br />

trčenja, dobimo <strong>na</strong> koncu<br />

{ h(0<br />

h(0 t+1 ||y 1 )=g 1 =g j−k=<br />

′ t+1 ||y 1), ′ če je |x| = |x ′ |<br />

h(g<br />

j−k ′ ||1||y′ 1), sicer<br />

Za |x| = |x ′ | oziroma k = j <strong>na</strong>m da y 1 ≠ y ′ 1<br />

trčenje, sicer pa je y i = y ′ i za 1 ≤ i ≤ k + 1.<br />

Od tod y(x) = y(x ′ ), toda <strong>po</strong>tem je x = x ′ , saj je<br />

preslikava x ↦→ y(x) injekcija. Dobili smo protislovje<br />

s pred<strong>po</strong>stavko, da je x ≠ x ′ .<br />

Končno v primeru, ko je m − t − 1 deli |x| − |x ′ | ≠ 0<br />

dobimo trčenje, ker je (t + 1)-vi bit v spetju 0 t+1 ||y 1<br />

e<strong>na</strong>k 0, (t + 1)-vi bit v spetju g ′ j−k || 1 || y′ 1 pa 1.<br />

Aleksandar Jurišić 487<br />

Aleksandar Jurišić 488<br />

Aleksandar Jurišić 489<br />

Aleksandar Jurišić 490<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

2.primer: m = t + 1. Naj bo |x| = n > m in<br />

definirajmo funkcijo f z f(0) = 0 in f(1) = 01.<br />

Zgoščevalno funkcijo h ∗ (x) definiramo z algoritmom:<br />

1. y = y 1 y 2 ...y k := 11||f(x 1 )||f(x 2 )|| · · · ||f(x n )<br />

2. g 1 = h(0 t || y 1 )<br />

3. for i = 1 to k − 1 do g i+1 = h(g i || y i+1 )<br />

4. h ∗ (x) = g k<br />

Funkcija x ↦→ y = y(x) iz prvega koraka je injekcija.<br />

Izrek: Naj bo h : (Z 2 ) t+1 −→ (Z 2 ) t<br />

zgoščeval<strong>na</strong> funkcija krepko brez trčenj.<br />

Potem je zgoraj def. zgoščeval<strong>na</strong> funkcija<br />

h ∗ : X −→ (Z 2 ) t tudi krepko brez trčenj.<br />

Dokaz: Pred<strong>po</strong>stavimo, da smo <strong>na</strong>šli x ≠ x ′ tako, da<br />

je h ∗ (x) = h ∗ (x ′ ) in <strong>na</strong>j bo y(x) = y 1 ||...||y k+1 in<br />

y(x ′ ) = y ′ 1|| ...||y ′ j+1, kjer sta x in x ′ do<strong>po</strong>lnje<strong>na</strong> z d<br />

ničlami <strong>po</strong> 2. koraku.<br />

Če je k = j, dobimo (kot pri prejšnjem dokazu) bodisi<br />

trčenje za zgoščevalno funkcijo h bodisi y = y ′ . Slednje<br />

<strong>na</strong>m da x = x ′ , kar pa je protislovje!<br />

Sedaj pa privzemimo, da je k ≠ j oziroma kar j > k.<br />

Če ne pride do trčenja, dobimo <strong>na</strong>slednje za<strong>po</strong>redje<br />

e<strong>na</strong>kosti:<br />

y k = y ′ j, y k−1 = y ′ j−1,...,y 1 = y ′ j−k+1,<br />

kar pa ni možno, saj za x ≠ x ′ ter <strong>po</strong>ljubno za<strong>po</strong>redje<br />

z velja y(x) ≠ z||y(x ′ ), kajti za<strong>po</strong>redni enici se<br />

<strong>po</strong>javita izključno <strong>na</strong> začetku za<strong>po</strong>redja y(x).<br />

Od tod zaključimo, da je h ∗ krepko brez trčenj.<br />

Za raču<strong>na</strong>nje funkcije h ∗ smo u<strong>po</strong>rabili funkcijo h<br />

kvečjemu<br />

in<br />

( ⌈ ⌉)<br />

n<br />

1 +<br />

− krat za m ≥ t + 2<br />

m − t − 1<br />

(2n + 2) − krat za m = t + 1.<br />

Aleksandar Jurišić 491<br />

Aleksandar Jurišić 492<br />

Aleksandar Jurišić 493<br />

Aleksandar Jurišić 494


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Zgoščevalne funkcije iz kriptosistemov<br />

Naj bo (P, C, K, E, D) računsko varen kriptosistem in<br />

<strong>na</strong>j bo<br />

P = C = K = Z n ,<br />

kjer je n ≥ 128, da bi preprečili <strong>na</strong>pad z rojstnim<br />

dnevom.<br />

Ta <strong>po</strong>goj izključi DES (pa tudi DES-ov čistopis ni<br />

tako dolg kot DES-ov ključ).<br />

Naj bo dano za<strong>po</strong>redje<br />

x 1 || x 2 || ... ||x k , kjer je x i ∈ (Z 2 ) n , 1 ≤ i ≤ k.<br />

Če število bitov v za<strong>po</strong>redju ne bi bilo večkratnik<br />

števila n, bi lahko dodali nekaj ničel...<br />

Začnemo z neko začetno vrednostjo g 0 = IV<br />

(initial value) in <strong>na</strong>to konstruiramo za<strong>po</strong>redje<br />

g i = f(x i,g i−1),<br />

kjer je f šifrir<strong>na</strong> funkcija izbranega kriptosistema.<br />

Potem je h(x) = g k .<br />

Definiranih je bilo veliko takih funkcij in mnoge med<br />

njimi so razbili (tj. dokazali, da niso varne), ne glede<br />

<strong>na</strong> to, ali je ustrez<strong>na</strong> šifra var<strong>na</strong> ali ne.<br />

Naslednje štiri variacije pa zaenkrat izgledajo varne:<br />

g i = e gi−1 (x i) ⊕ x i,<br />

g i = e gi−1 (x i ) ⊕ x i ⊕ g i−1 ,<br />

g i = e gi−1 (x i ⊕ g i−1 ) ⊕ x i ,<br />

g i = e gi−1 (x i ⊕ g i−1 ) ⊕ x i ⊕ g i−1 .<br />

Zgoščeval<strong>na</strong> funkcija MD4<br />

Preglejmo nekaj hitrih zgoščevalnih funkcij.<br />

MD4 je predlagal Rivest leta 1990, nj<strong>eno</strong> izboljšano<br />

verzijo MD5 pa leta 1991.<br />

Funkcija Secure Hash Standard (SHS) iz leta<br />

1992/93 je bolj komplicira<strong>na</strong>, a je zasnova<strong>na</strong> <strong>na</strong> istih<br />

principih. Nj<strong>eno</strong> “tehnično <strong>na</strong>pako” pa so odpravili<br />

šele leta 1994 (SHA-1).<br />

Aleksandar Jurišić 495<br />

Aleksandar Jurišić 496<br />

Aleksandar Jurišić 497<br />

Aleksandar Jurišić 498<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Iz danega za<strong>po</strong>redja bitov x <strong>na</strong>jprej sestavimo<br />

za<strong>po</strong>redje<br />

M = M[0]M[1] ... M[N − 1],<br />

kjer je M[i] 32-bit<strong>na</strong> beseda in je N ≡ 0 mod 16.<br />

1. d = (447 − |x|) mod 512,<br />

2. <strong>na</strong>j bo j bi<strong>na</strong>r<strong>na</strong> reprezentacija števila<br />

x mod 2 64 , pri čemer je |j| = 64,<br />

3. M = x || 1 || 0 d || j.<br />

1. A = 67452301 (hex), B = efcdab89 (hex),<br />

C = 98badcfe (hex), D = 10325476 (hex)<br />

2. for i = 1 to N/16 − 1 do<br />

3. for j = 0 to 15 do<br />

4. X[j] = M[16i + j].<br />

5. AA=A, ..., DD=D.<br />

6. 1. krog<br />

7. 2. krog<br />

8. 3. krog<br />

9. A=A+AA, . .., D=D+DD.<br />

Osnovne operacije:<br />

X ∧ Y <strong>po</strong> bitih<br />

X ∨ Y <strong>po</strong> bitih<br />

X ⊕ Y XOR <strong>po</strong> bitih<br />

¬X negacija<br />

X + Y seštevanje <strong>po</strong> modulu 2 32<br />

X ≪ s ciklični <strong>po</strong>mik v levo za s mest<br />

V big-endian arhitekturi (kot npr. Sun SPARC<br />

<strong>po</strong>staja) predstavimo število <strong>na</strong> <strong>na</strong>slednji <strong>na</strong>čin<br />

a 1 2 24 + a 2 2 16 + a 3 2 8 + a 4 ,<br />

v little-endian arhitekturi (kot npr. Intel 80xxx), ki<br />

jo je privzela funkcija MD4 pa z<br />

a 4 2 24 + a 3 2 16 + a 2 2 8 + a 1 .<br />

Aleksandar Jurišić 499<br />

Aleksandar Jurišić 500<br />

Aleksandar Jurišić 501<br />

Aleksandar Jurišić 502


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

1. krog<br />

2. krog<br />

3. krog<br />

V 1., 2. in 3. krogu funkcije MD4 u<strong>po</strong>rabimo<br />

za<strong>po</strong>redoma funkcije f, g, in h, definirane s<strong>po</strong>daj.<br />

1. A = (A + f(B,C,D) + X[0]) ≪ 3<br />

2. D = (D + f(A,B,C) + X[1]) ≪ 7<br />

3. C = (C + f(D,A,B) + X[2]) ≪ 11<br />

4. B = (B + f(C,D,A) + X[3]) ≪ 19<br />

1. A = (A + g(B,C,D) + X[0] + 5A827999) ≪ 3<br />

2. D = (D + g(A,B,C) + X[4] + 5A827999) ≪ 5<br />

3. C = (C + g(D,A,B) + X[8] + 5A827999) ≪ 9<br />

4. B = (B + g(C,D,A) + X[12] + 5A827999) ≪ 13<br />

1. A = (A + h(B,C,D) + X[0] + 6ED9EBA1) ≪ 3<br />

2. D = (D + h(A,B,C) + X[8] + 6ED9EBA1) ≪ 9<br />

3. C = (C + h(D,A,B) + X[4] + 6ED9EBA1) ≪ 11<br />

4. B = (B + h(C,D,A) + X[12] + 6ED9EBA1) ≪ 15<br />

f(X, Y,Z) = (X ∧ Y ) ∨ ((¬X) ∧ Z)<br />

5. A = (A + f(B,C,D) + X[4]) ≪ 3<br />

6. D = (D + f(A,B,C) + X[5]) ≪ 7<br />

7. C = (C + f(D,A,B) + X[6]) ≪ 11<br />

8. B = (B + f(C,D,A) + X[7]) ≪ 19<br />

5. A = (A + g(B,C,D) + X[1] + 5A827999) ≪ 3<br />

6. D = (D + g(A,B,C) + X[5] + 5A827999) ≪ 5<br />

7. C = (C + g(D,A,B) + X[9] + 5A827999) ≪ 9<br />

8. B = (B + g(C,D,A) + X[13] + 5A827999) ≪ 13<br />

5. A = (A + h(B,C,D) + X[2] + 6ED9EBA1) ≪ 3<br />

6. D = (D + h(A,B,C) + X[10] + 6ED9EBA1) ≪ 9<br />

7. C = (C + h(D,A,B) + X[6] + 6ED9EBA1) ≪ 11<br />

8. B = (B + h(C,D,A) + X[14] + 6ED9EBA1) ≪ 15<br />

g(X, Y,Z) = (X ∧ Y ) ∨ (X ∧ Z) ∨ (Y ∧ Z)<br />

h(X, Y,Z) = X ⊕ Y ⊕ Z<br />

9. A = (A + f(B,C,D) + X[8]) ≪ 3<br />

10. D = (D + f(A,B,C) + X[9]) ≪ 7<br />

11. C = (C + f(D,A,B) + X[10]) ≪ 11<br />

12. B = (B + f(C,D,A) + X[11]) ≪ 19<br />

13. A = (A + f(B,C,D) + X[12]) ≪ 3<br />

14. D = (D + f(A,B,C) + X[13]) ≪ 7<br />

15. C = (C + f(D,A,B) + X[14]) ≪ 11<br />

16. B = (B + f(C,D,A) + X[15]) ≪ 19<br />

9. A = (A + g(B,C,D) + X[2] + 5A827999) ≪ 3<br />

10. D = (D + g(A,B,C) + X[6] + 5A827999) ≪ 5<br />

11. C = (C + g(D,A,B) + X[10] + 5A827999) ≪ 9<br />

12. B = (B + g(C,D,A) + X[14] + 5A827999) ≪ 13<br />

13. A = (A + g(B,C,D) + X[3] + 5A827999) ≪ 3<br />

14. D = (D + g(A,B,C) + X[7] + 5A827999) ≪ 5<br />

15. C = (C + g(D,A,B) + X[11] + 5A827999) ≪ 9<br />

16. B = (B + g(C,D,A) + X[15] + 5A827999) ≪ 13<br />

9. A = (A + h(B,C,D) + X[1] + 6ED9EBA1) ≪ 3<br />

10. D = (D + h(A,B,C) + X[9] + 6ED9EBA1) ≪ 9<br />

11. C = (C + h(D,A,B) + X[5] + 6ED9EBA1) ≪ 11<br />

12. B = (B + h(C,D,A) + X[13] + 6ED9EBA1) ≪ 15<br />

13. A = (A + h(B,C,D) + X[3] + 6ED9EBA1) ≪ 3<br />

14. D = (D + h(A,B,C) + X[11] + 6ED9EBA1) ≪ 9<br />

15. C = (C + h(D,A,B) + X[7] + 6ED9EBA1) ≪ 11<br />

16. B = (B + h(C,D,A) + X[15] + 6ED9EBA1) ≪ 15<br />

Aleksandar Jurišić 503<br />

Aleksandar Jurišić 504<br />

Aleksandar Jurišić 505<br />

Aleksandar Jurišić 506<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Zgoščeval<strong>na</strong> funkcija MD4 še ni bila razbita, vendar<br />

pa je ni težko razbiti, če bi opustili prvi ali pa zadnji<br />

krog.<br />

Zato zgoščeval<strong>na</strong> funkcija MD5 u<strong>po</strong>rablja 5 krogov, a<br />

je 30% <strong>po</strong>časnejša (.9Mbytes/sec <strong>na</strong> SPARC-u).<br />

Zgoščeval<strong>na</strong> funkcija SHA je še <strong>po</strong>časnejša<br />

(0.2Mbytes/sec <strong>na</strong> SPARC-u).<br />

Opisali bomo le nekaj njenih modifikacij:<br />

1. SHS privzame big-endian arhitekturo <strong>na</strong>mesto<br />

little-endian.<br />

2. SHS dobi 160-bitni rezultat (5 registrov).<br />

3. SHS obdela 16 besed <strong>na</strong>enkrat, vendar jih <strong>na</strong>jprej<br />

razširi v 80 besed, <strong>po</strong>tem pa u<strong>po</strong>rabi za<strong>po</strong>redje 80-ih<br />

operacij <strong>na</strong> vsaki besedi.<br />

X[j] = X[j −3]⊕X[j −8]⊕X[j −14]⊕X[j −16]<br />

za 16 ≤ j ≤ 79.<br />

4. SHA-1 pa u<strong>po</strong>rabi<br />

X[j]=X[j−3]⊕X[j−8]⊕X[j−14]⊕X[j−16] ≪ 1<br />

za 16 ≤ j ≤ 79.<br />

Yq<br />

512<br />

MDq<br />

A B C D E<br />

KROG 0 (ABCDE, Y q, K 0)<br />

KROG 1 (ABCDE, Y q , K 1 )<br />

...<br />

MDq+1<br />

32<br />

A B C D E<br />

A B C D E<br />

KROG 79(ABCDE, Y q , K 79)<br />

160<br />

L x512<br />

bitov =Nx32<br />

64<br />

K bitov (< 2 bitov)<br />

S<strong>po</strong>rocilo<br />

100...0<br />

512<br />

bitov 512 512 512<br />

bitov bitov bitov<br />

Y Y ... Y ... Y 1<br />

0 1 q L-<br />

512 512 512 512<br />

ABCDE HSHA<br />

HSHA<br />

HSHA<br />

HSHA<br />

160<br />

160<br />

160 160<br />

160 bit<strong>na</strong><br />

zgostitev<br />

Aleksandar Jurišić 507<br />

Aleksandar Jurišić 508<br />

Aleksandar Jurišić 509<br />

Aleksandar Jurišić 510


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

X i[0..15]<br />

X i[ ρ(0..15)]<br />

X i [ ρ 2 (0..15)]<br />

X i[ ρ 3 (0..15)]<br />

X i[ ρ 4 (0..15)]<br />

f 1, κ1<br />

f 2, κ2<br />

f 3, κ3<br />

f 4, κ4<br />

f 5, κ5<br />

h h h h h<br />

0 1 2 3 4<br />

h h h h h<br />

0 1 2 3 4<br />

f 1, κ1 ’<br />

f 2, κ2 ’<br />

f 3, κ3 ’<br />

f 4, κ4 ’<br />

f 5, κ’<br />

5<br />

X i[ π(0..15)]<br />

X i[ ρπ (0..15)]<br />

X i[ ρ 2 π(0..15)]<br />

X i [ ρ π(0..15)]<br />

X i<br />

3<br />

[ ρ 4 π(0..15)]<br />

RIPEMD-160<br />

HMAC<br />

(Keyed-Hashing for Message Authentication)<br />

Prednosti:<br />

1. Kripto. zgoščevalne funkcije so v splošnem hitrejše<br />

v softwaru kot pa simetrične šifre (kot <strong>na</strong> primer<br />

DES).<br />

2. Knjižnice zgoščevalnih funkcij so široko dostopne<br />

(medtem ko so bločne šifre, tudi kadar so<br />

u<strong>po</strong>rabljene samo za MAC, omejene v smislu<br />

izvoznih dovoljenj).<br />

Za design objectives v HMAC algoritmu in njegovo<br />

varnost glej:<br />

M. Bellare, R. Canetti in H. Krawczyk, CRYPTO’96<br />

(in http://wwwcse.ucsd.edu/users/mihir),<br />

ki ga trenutno <strong>po</strong>skušajo vključiti v IETF<br />

(Internet Engineering Task Force).<br />

Časovne oz<strong>na</strong>ke/žigi (Timestamping)<br />

Potrebujemo pričo o obstoju določenih <strong>po</strong>datkov ob<br />

določenem času, <strong>na</strong> primer <strong>na</strong> <strong>po</strong>dročju<br />

• zaščite intelektualne lastnine<br />

(angl. intelectual property - IP), ali pa<br />

• zanesljivega servisa za preprečevanje zanikanja<br />

(za dokaz, da je bil digitalni <strong>po</strong>dpis generira<br />

v času veljavnosti ustreznega javnega ključa).<br />

Aleksandar Jurišić 511<br />

Aleksandar Jurišić 512<br />

Aleksandar Jurišić 513<br />

Aleksandar Jurišić 514<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Če želi Bojan imeti dokaz o obstoju <strong>po</strong>datkov x ob<br />

nekem določenem času, <strong>po</strong>tem <strong>na</strong>redi <strong>na</strong>slednje:<br />

1. <strong>na</strong>jprej izraču<strong>na</strong> zgostitev z = h(x),<br />

2. <strong>na</strong>to še zgostitev s<strong>po</strong>ja<br />

z ′ = h(z || jav<strong>na</strong> informacija),<br />

3. rezultat <strong>po</strong>dpiše y = sig K (z ′ ), in<br />

4. <strong>na</strong>slednji dan v časopisu objavi <strong>po</strong>datke<br />

(z, jav<strong>na</strong> informacija, y).<br />

Časovne oz<strong>na</strong>ke s TS<br />

Časovne žige omogoča <strong>po</strong>oblašče<strong>na</strong> organizacija za<br />

<strong>po</strong>dpise, (angl. Timestamper - TS), ki je<br />

elektronski notar (angl. trusted timestamping service)<br />

oz. center zaupanja (TTP, angl. trusted third party).<br />

Bojan <strong>na</strong>jprej izraču<strong>na</strong><br />

z = h(x),<br />

in <strong>po</strong>šlje par (z, y) notarju TS,<br />

y = sig K (x)<br />

ki doda še datum D in <strong>po</strong>dpiše trojico (z,y, D).<br />

Zgornji algoritem je varen le <strong>po</strong>d <strong>po</strong>gojem, če je notar<br />

ne<strong>po</strong>dkupljiv.<br />

Potencialno se TS sooči z <strong>eno</strong>rmno odgovornostjo, če<br />

so časi kompromitirani.<br />

Na primer, u<strong>po</strong>rabnik lahko zanika vse <strong>po</strong>dpise, ki jih<br />

je opravil kdaj koli.<br />

Morda lahko <strong>na</strong>stane hujša škoda kot kompromitacija<br />

CA-jevega zasebnega ključa, o katerem bomo govorili<br />

v <strong>na</strong>slednjem <strong>po</strong>glavju.<br />

Sicer pa si <strong>po</strong>magamo z <strong>na</strong>slednjim algoritmom:<br />

1. TS <strong>na</strong>jprej izraču<strong>na</strong><br />

L n = (t n−1 , ID n−1 , z n−1 ,y n−1 ,h(L n−1 )),<br />

2. <strong>na</strong>to še C n = (n,t n,z n,y n, ID n, L n),<br />

3. rezultat <strong>po</strong>dpiše s n = sig TS (h(C n ))), ter<br />

4. <strong>po</strong>šlje (C n , s n , ID n+1 ) osebi ID n .<br />

Aleksandar Jurišić 515<br />

Aleksandar Jurišić 516<br />

Aleksandar Jurišić 517<br />

Aleksandar Jurišić 518


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

8. <strong>po</strong>glavje<br />

Upravljanje ključev<br />

• Distribucija ključev<br />

(Blomova shema, Diffie-Hellmanova shema)<br />

• Certifikati<br />

(avtentikacijska drevesa, certifikat<strong>na</strong> agencija,<br />

infrastruktura javnih ključev, proces certifikacije,<br />

modeli zaupanja)<br />

• Uskladitev ključev<br />

(Kerberos, Diffie-Hellmanova shema,<br />

MTI protokoli, Giraultova shema)<br />

• Internetne aplikacije<br />

(Internet, IPsec: Virtual Private Networks,<br />

Secure Sockets Layer, var<strong>na</strong> e-<strong>po</strong>šta)<br />

Vprašanja<br />

• Od kje dobimo ključe<br />

• Zakaj zaupamo ključem<br />

• Kako vemo čigav ključ imamo<br />

• Kako omejiti u<strong>po</strong>rabo ključev<br />

• Kaj se zgodi, če je kompromitiran (izgubljen)<br />

zasebni ali tajni ključ Kdo je odgovoren<br />

• Kako preklicati ključ<br />

• Kako lahko obnovimo ključ<br />

• Kako omogočimo servis preprečitve zanikanja<br />

Ta vprašanja veljajo tako za simetrične (tajne) ključe<br />

kakor tudi za javne in zasebne ključe.<br />

Upravljanje ključev je množica tehnik in<br />

<strong>po</strong>stopkov, ki <strong>po</strong>dpirajo dogovor in vzdrževanje relacij<br />

ključev med <strong>po</strong>oblaščenimi <strong>stran</strong>kami/sogovorniki.<br />

Infrastruktura javnih ključev (PKI):<br />

<strong>po</strong>d<strong>po</strong>rni servisi (tehnološki, pravni, komercialni, itd.),<br />

ki so <strong>po</strong>trebni, da lahko tehnologijo javnih ključev<br />

u<strong>po</strong>rabimo za večje projekte.<br />

Sistemi z javnimi ključi imajo prednost pred sistemi<br />

s tajnimi ključi, saj za izmenjavo tajnih ključev ne<br />

<strong>po</strong>trebujejo varnega ka<strong>na</strong>la.<br />

Veči<strong>na</strong> sistemov z javnimi ključi (npr. RSA) je tudi<br />

do 100-krat <strong>po</strong>časnejša od simetričnih sistemov (npr.<br />

DES). Zato v praksi u<strong>po</strong>rabljamo za šifriranje daljših<br />

besedil simetrične sisteme.<br />

Obrav<strong>na</strong>vali bomo več različnih protokolov za tajne<br />

ključe. Razlikovali bomo med distribucijo ključev in<br />

uskladitvijo ključev.<br />

Aleksandar Jurišić 519<br />

Aleksandar Jurišić 520<br />

Aleksandar Jurišić 521<br />

Aleksandar Jurišić 522<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Sistem distribucije ključev je mehanizem, kjer<br />

<strong>na</strong> začetni stopnji verodostoj<strong>na</strong> agencija generira in<br />

distribuira tajne <strong>po</strong>datke u<strong>po</strong>rabnikom tako, da lahko<br />

vsak par u<strong>po</strong>rabnikov kasneje izraču<strong>na</strong> ključ, ki je<br />

ne<strong>po</strong>z<strong>na</strong>n ostalim.<br />

Uskladitev ključev oz<strong>na</strong>čuje protokol, kjer dva<br />

ali več u<strong>po</strong>rabnikov sestavjo skupen tajni ključ, s<br />

komunikacijo <strong>po</strong> javnem ka<strong>na</strong>lu. Vrednost ključa je<br />

določe<strong>na</strong> s funkcijo vhodnih <strong>po</strong>datkov.<br />

Obstaja <strong>po</strong>treba <strong>po</strong> zaščiti pred <strong>po</strong>tencialnimi<br />

<strong>na</strong>sprotniki, tako pasivnimi kot tudi aktivnimi.<br />

Pasivni sovražnik je osredotočen <strong>na</strong> prisluškovanje<br />

s<strong>po</strong>ročilom, ki se pretakajo <strong>po</strong> ka<strong>na</strong>lu.<br />

Več nevšečnosti <strong>na</strong>m lahko <strong>na</strong>redi aktivni sovražnik:<br />

• spreminjanje s<strong>po</strong>ročil,<br />

• shranjevanje s<strong>po</strong>ročil za kasnejšo u<strong>po</strong>rabo,<br />

• maskiranje v u<strong>po</strong>rabnika omrežja.<br />

Cilj aktivnega sovražnika u<strong>po</strong>rabnikov U in V je lahko:<br />

• prelisičiti U in V tako, da sprejmeta<br />

neveljaven ključ kot veljaven,<br />

• prepričati U in V , da sta si izmenjala ključ,<br />

čeprav si ga v resnici nista.<br />

Center zaupanja<br />

V omrežju, ki ni varno, se v nekaterih shemah <strong>po</strong>javi<br />

agencija, ki je odgovor<strong>na</strong> za<br />

• <strong>po</strong>trjevanje identitete,<br />

• izbiro in pr<strong>eno</strong>s ključev<br />

• itd.<br />

Rekli ji bomo center zaupanja ali verodostoj<strong>na</strong><br />

agencija (angl. Trusted Authority – TA ali Trusted<br />

Third Party – TTP). U<strong>po</strong>rabljali bomo oz<strong>na</strong>ko TA.<br />

Distribucija ključev<br />

• “Point-to-<strong>po</strong>int” distribucija <strong>po</strong> varnem ka<strong>na</strong>lu:<br />

– zaupni kurir,<br />

– enkrat<strong>na</strong> registracija u<strong>po</strong>rabnikov,<br />

– pr<strong>eno</strong>s <strong>po</strong> telefonu.<br />

• Ne<strong>po</strong>sreden dostop do overjene javne datoteke:<br />

– avtentič<strong>na</strong> drevesa,<br />

– digitalno <strong>po</strong>dpisa<strong>na</strong> datoteka.<br />

• U<strong>po</strong>raba “on-line” zaupnih strežnikov,<br />

• “Off-line” certifikat<strong>na</strong> agencija (CA).<br />

Aleksandar Jurišić 523<br />

Aleksandar Jurišić 524<br />

Aleksandar Jurišić 525<br />

Aleksandar Jurišić 526


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Point-to-<strong>po</strong>int<br />

Pred<strong>po</strong>stavimo, da imamo<br />

– omrežje z n u<strong>po</strong>rabniki,<br />

– agencija TA generira in preda <strong>eno</strong>lično določen ključ<br />

vsakemu paru u<strong>po</strong>rabnikov omrežja.<br />

Če imamo varen ka<strong>na</strong>l med TA in vsakim u<strong>po</strong>rabnikom<br />

omrežja, <strong>po</strong>tem dobi vsak <strong>po</strong>sameznik n − 1 ključev,<br />

zahtevnost problema pa je vsaj O(n 2 ).<br />

Ta rešitev ni praktič<strong>na</strong> celo za relativno majhne n.<br />

Želimo si boljšo rešitev, npr. z zahtevnostjo O(1).<br />

Blomova shema<br />

Naj bo javno p praštevilo večje od danega n ∈ N in<br />

<strong>na</strong>j bo k ∈ N za katerega velja k ≤ n − 2.<br />

TA <strong>po</strong>šlje <strong>po</strong> varnem ka<strong>na</strong>lu k + 1 elementov Z p vsaki<br />

osebi in <strong>na</strong>to si lahko vsak par {U,V } izraču<strong>na</strong> svoj<br />

ključ K U,V = K V,U .<br />

Število k je velikost <strong>na</strong>jvečje koalicije, proti kateri bo<br />

shema še vedno var<strong>na</strong>.<br />

Paul R. Halmos<br />

“...the source of all great mathematics is the special<br />

case, the concrete example. It is frequent in<br />

mathematics that every instance of a concept of<br />

seemingly great generality is in essence the same<br />

as a small and concrete special case.”<br />

I Want to be a Mathematician, Washington: MAA Spectrum, 1985.<br />

<br />

“ Sometimes a research is a lot of hard work in<br />

looking for the easy way.”<br />

David Hilbert (-1900)<br />

“The art of doing mathematics consists in finding<br />

that special case which contains all the germs of<br />

generality.”<br />

Aleksandar Jurišić 527<br />

Aleksandar Jurišić 528<br />

Aleksandar Jurišić 529<br />

Aleksandar Jurišić 530<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Najprej opišimo shemo v primeru, ko je k = 1.<br />

• Izberemo javno praštevilo p.<br />

• TA izbere tri <strong>na</strong>ključne elemente a,b,c ∈ Z p<br />

(ne nujno različne) in oblikuje <strong>po</strong>linom<br />

f(x, y) = a + b(x + y) + cxy mod p.<br />

• Za vsakega u<strong>po</strong>rabnika U izbere TA javni<br />

r U ∈ Z p , tako da so le-ti medseboj različni.<br />

• Za vsakega u<strong>po</strong>rabnika U izraču<strong>na</strong> TA <strong>po</strong>linom<br />

g U (x) = f(x,r U ) mod p<br />

in mu ga <strong>po</strong>šlje <strong>po</strong> varnem ka<strong>na</strong>lu.<br />

O<strong>po</strong>zorimo, da je g U (x) linearen <strong>po</strong>linom, tako da ga<br />

lahko zapišemo v <strong>na</strong>slednji obliki<br />

kjer je<br />

g U (x) = a U + b U x,<br />

a U = a + br U mod p in b U = b + cr U mod p.<br />

• Za medsebojno komunikacijo osebi U in V<br />

u<strong>po</strong>rabita ključ<br />

K U,V = K V,U = f(r U , r V )<br />

= a + b(r U + r V ) + c r U r V mod p.<br />

U<strong>po</strong>rabnika U in V izraču<strong>na</strong>ta svoja ključa K U,V in<br />

K U,V za<strong>po</strong>redoma s<br />

f(r U ,r V ) = g U (r V ) in f(r U ,r V ) = g V (r U ).<br />

Izrek 1. Blomova shema za k = 1 je brez<strong>po</strong>gojno<br />

var<strong>na</strong> pred <strong>po</strong>sameznimi u<strong>po</strong>rabniki.<br />

Dokaz: Recimo, da želi u<strong>po</strong>rabnik W izraču<strong>na</strong>ti ključ<br />

K U,V = a + b(r U + r V ) + cr Ur V mod p.<br />

Vrednosti r U in r V so javne, a,b in c pa ne.<br />

Oseba W <strong>po</strong>z<strong>na</strong> vrednosti<br />

a W = a + br W mod p in b W = b + cr W mod p,<br />

ker sta to koeficienta <strong>po</strong>linoma g W (x), ki ju je dobila<br />

od agencije TA.<br />

Aleksandar Jurišić 531<br />

Aleksandar Jurišić 532<br />

Aleksandar Jurišić 533<br />

Aleksandar Jurišić 534


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Pokažimo, da je informacija, <strong>po</strong>z<strong>na</strong><strong>na</strong> osebi W,<br />

konsistent<strong>na</strong> s <strong>po</strong>ljubno vrednostjo l ∈ Z p za ključ<br />

K U,V , tj. W ne more izločiti nobene vrednosti za K U,V .<br />

Poglejmo si <strong>na</strong>slednjo matrično e<strong>na</strong>čbo v (Z p ):<br />

⎛<br />

⎞⎛<br />

⎞ ⎛ ⎞<br />

1 r U + r V r U r V a l<br />

⎝ 1 r W 0 ⎠⎝<br />

b ⎠ = ⎝ a W<br />

⎠.<br />

0 1 r W c b W<br />

Prva e<strong>na</strong>čba vsebuje hi<strong>po</strong>tezo, da je K U,V = l, drugi<br />

dve e<strong>na</strong>čbi pa sledita iz definicije števil a W in b W.<br />

Determi<strong>na</strong>nta zgornje matrike je<br />

r 2 W + r U r V − (r U + r V )r W = (r W − r U )(r W − r V ).<br />

Iz r W ≠ r U in r W ≠ r V sledi, da je determi<strong>na</strong>nta<br />

različ<strong>na</strong> od nič in zato ima zgornji sistem <strong>eno</strong>lično<br />

rešitev za a,b in c.<br />

Koalicija u<strong>po</strong>rabnikov {W, X} pa ima štiri e<strong>na</strong>čbe ter<br />

tri nez<strong>na</strong>nke in od tod zlahka izraču<strong>na</strong> a, b in c ter<br />

končno še <strong>po</strong>linom f(x,y), s katerim dobi vsak ključ.<br />

Posplošitev<br />

Za splošno shemo (tj. shemo, ki je var<strong>na</strong> pred<br />

koalicijo velikosti k) je <strong>po</strong>treb<strong>na</strong> e<strong>na</strong> sama sprememba.<br />

Pri drugem koraku TA u<strong>po</strong>rablja <strong>po</strong>linom f(x, y)<br />

<strong>na</strong>slednje oblike<br />

f(x, y) =<br />

k∑<br />

i=0 j=0<br />

k∑<br />

a ij x i y j mod p,<br />

kjer je a ij ∈ Z p za 0 ≤ i,j ≤ k in a ij = a ji za vsak<br />

i,j. Ostali del protokola se ne spremeni.<br />

• Merkle, 1979.<br />

Avtentič<strong>na</strong> drevesa<br />

• metoda za hranjenje javno dostopnih in preverljivo<br />

overjenih <strong>po</strong>datkov<br />

• U<strong>po</strong>raba:<br />

– avtentičnost velike datoteke javnih ključev,<br />

– servis časovnih oz<strong>na</strong>k (Timestamping).<br />

Aleksandar Jurišić 535<br />

Aleksandar Jurišić 536<br />

Aleksandar Jurišić 537<br />

Aleksandar Jurišić 538<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Primer: H je zgoščeval<strong>na</strong> funkcija brez trčenj.<br />

h1=H(Y1)<br />

H1=H(h1,h2)<br />

R=H(H1,H2)<br />

h2=H(Y2)<br />

h3=H(Y3)<br />

H2=H(h3,h4)<br />

h4=H(Y4)<br />

Za avtenticiranje javne vrednosti Y 2 :<br />

• sledi (<strong>na</strong>tanko določ<strong>eno</strong>) <strong>po</strong>t od Y 2 do kore<strong>na</strong>,<br />

• pridobi vrednosti h 1 , H 2 , R,<br />

• preveri avtentičnost R,<br />

• preveri R = H(H(h 1 ,H(Y 2 )),H 2 ).<br />

Diffie-Hellmanova distribucija ključev<br />

Zaradi <strong>eno</strong>stavnosti bomo delali v obsegu Z p ,<br />

kjer je p praštevilo in α generator grupe Z ∗ p.<br />

Naj bo ID(U) oz<strong>na</strong>ka za določ<strong>eno</strong> informacijo,<br />

ki <strong>eno</strong>lično identificira osebo U<br />

(npr. ime, e-<strong>po</strong>šta, telefonska številka itd).<br />

Agancija TA si izbere shemo za digitalni <strong>po</strong>dpis z<br />

javnim algoritmom za preverjanje <strong>po</strong>dpisov ver TA in<br />

tajnim algoritmom za <strong>po</strong>dpisovanje sig TA .<br />

Nazadnje privzemimo še, da so vse informacije<br />

zgoščene z javno zgoščevalno funkcijo, preden jih<br />

<strong>po</strong>dpišemo, vendar pa zaradi estetskih razlogov<br />

ne bomo omenjali zgoščevalne funkcije pri opisu<br />

protokolov.<br />

Y1 Y2 Y3 Y4<br />

Vzdržujemo avtentičnost korenske vrednosti R<br />

(npr. s <strong>po</strong>dpisom agencije TA).<br />

Če ima drevo n javnih vrednosti,<br />

avtenticiranja kvečjemu ⌈log 2 n⌉.<br />

je dolži<strong>na</strong><br />

Slaba <strong>stran</strong>: dodajanje in brisanje javnih vrednosti je<br />

lahko precej zamud<strong>na</strong>.<br />

Vsak u<strong>po</strong>rabnik si izbere tajni/zasebni<br />

a U ∈ {0, 1, ...,p − 2}, in <strong>na</strong>j bo<br />

b U = α a U<br />

mod p.<br />

Za osebo U bo agancija TA izdala <strong>na</strong>slednji<br />

certifikat:<br />

C(U) = ( ID(U), b U , sig TA (ID(U), b U ) )<br />

(TA ne <strong>po</strong>trebuje zasebne vrednosti a U ).<br />

Aleksandar Jurišić 539<br />

Aleksandar Jurišić 540<br />

Aleksandar Jurišić 541<br />

Aleksandar Jurišić 542


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

• Izberemo javno praštevilo p in<br />

javen primitivni element α ∈ Z ∗ p.<br />

• Oseba V izraču<strong>na</strong><br />

K U,V = α a Ua V<br />

mod p = b a V<br />

U<br />

mod p,<br />

z u<strong>po</strong>rabo javne vrednosti b U iz certifikata<br />

osebe U in s svojo zasebno vrednostjo a V .<br />

• Oseba U izraču<strong>na</strong><br />

K U,V = α a Ua V<br />

mod p = b a U<br />

V<br />

mod p,<br />

z u<strong>po</strong>rabo javne vrednosti b V iz certifikata<br />

osebe V in s svojo zasebno vrednostjo a U .<br />

Podpis agencije TA preprečuje osebi W, da spreminja<br />

certifikate, torej je dovolj preprečiti pasivne <strong>na</strong>pade.<br />

Ali lahko oseba W izraču<strong>na</strong> K U,V , če je W ≠ U,V , tj,<br />

če <strong>po</strong>z<strong>na</strong>mo α a U mod p in α a V mod p ne pa tudi a U<br />

ali a V , ali je mogoče izraču<strong>na</strong>ti α a Ua V mod p<br />

To bomo im<strong>eno</strong>vali Diffie-Hellmanov problem.<br />

Očitno je Diffie-Hellmanova distribucija<br />

ključev var<strong>na</strong> <strong>na</strong>tanko tedaj, ko je varen<br />

Diffie-Hellmanov problem.<br />

Izrek 2. Razbitje ElGamalovega kriptosistema<br />

je ekvivalentno reševanju Diffie-Hellmanovega<br />

problema.<br />

Dokaz: S<strong>po</strong>mnimo se, kako <strong>po</strong>tekata ElGamalovo<br />

šifriranje in odšifriranje. Ključ je K = (p,α, a,β),<br />

kjer β = α a mod p (a je tajni in p,α in β so javni).<br />

Za tajno <strong>na</strong>ključno število k ∈ Z p−1 je<br />

e K(x,k) = (y 1, y 2),<br />

kjer y 1 = α k mod p in y 2 = xβ k mod p.<br />

Za y 1 , y 2 ∈ Z ∗ p je d K (y 1 , y 2 ) = y 2 (y a 1) −1 mod p.<br />

Pred<strong>po</strong>stavimo, da imamo algoritem A, ki reši Diffie-<br />

Hellmanov problem in <strong>po</strong>dano ElGamalovo šifriranje<br />

(y 1 ,y 2 ). Z u<strong>po</strong>rabo algoritma A <strong>na</strong> <strong>po</strong>datkih p,α, y 1<br />

in β dobimo vrednost<br />

A(p, α, y 1 , β) = A(p, α, α k , α a ) =<br />

= α ka mod p = β k mod p.<br />

Potem odšifriranje (y 1 ,y 2 ) lahko <strong>eno</strong>stavno izraču<strong>na</strong>mo:<br />

x = y 2 (β k ) −1 mod p.<br />

Aleksandar Jurišić 543<br />

Aleksandar Jurišić 544<br />

Aleksandar Jurišić 545<br />

Aleksandar Jurišić 546<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Pred<strong>po</strong>stavimo, da imamo še algoritem B, ki izvrši<br />

ElGamalovo odšifriranje. Torej B vzame <strong>po</strong>datke<br />

p,α, β,y 1 in y 2 in izraču<strong>na</strong><br />

x = y 2 (y log α β<br />

1 ) −1 mod p.<br />

Naj bodo p, α, β in γ <strong>po</strong>datki Diffie-Hellmanovega<br />

problema. Torej je β = α b in γ = α c za neka b,c ∈ N,<br />

ki nista <strong>po</strong>z<strong>na</strong><strong>na</strong>, pa vendar lahko izraču<strong>na</strong>mo<br />

(B(p,α, β,γ, 1)) −1 = (1(γ log α β ) −1 ) −1 mod p =<br />

= γ log α β mod p = α c·b mod p,<br />

torej DH-ključ, kar smo tudi želeli.<br />

Certifikati<br />

Certifikat<strong>na</strong> agencija (CA) izda certifikat C(U), ki<br />

<strong>po</strong>veže u<strong>po</strong>rabnika U z njegovim javnim ključem.<br />

Sestavljen je iz:<br />

• <strong>po</strong>datkovnega dela D(U):<br />

u<strong>po</strong>rabnikova identifikacija, njegov javni ključ in<br />

druge informacije kot npr. veljavnost,<br />

• <strong>po</strong>dpisanega dela sig CA (D(U)):<br />

CA-jev <strong>po</strong>dpis <strong>po</strong>datkovnega dela.<br />

B pridobi avtentično kopijo A-jevega javnega ključa<br />

<strong>na</strong> <strong>na</strong>slednji <strong>na</strong>čin:<br />

• pridobi avtentično kopijo javnega ključa CA (npr.<br />

dobljenega z brskalnikom ali operacijskim sistemom),<br />

• pridobi C(U) (preko nezavarovanega ka<strong>na</strong>la),<br />

• preveri <strong>po</strong>dpis sig CA (D(U)).<br />

O<strong>po</strong>mbe: 1. CA ni <strong>po</strong>trebno zaupati u<strong>po</strong>rabniških<br />

zasebnih ključev.<br />

2. CA moramo zaupati, da ne bo izdajala <strong>po</strong><strong>na</strong>rejenih<br />

certifikatov.<br />

Infrastruktura javnih ključev (PKI)<br />

Nekatere kom<strong>po</strong>nente:<br />

• format certifikata,<br />

• proces certificiranja,<br />

• razdelje<strong>na</strong>nje certifikatov,<br />

• modeli zaupanja,<br />

• preklic certifikatov,<br />

• <strong>po</strong>litika certificiranja: <strong>po</strong>drobnosti o <strong>na</strong>menu in<br />

obsegu u<strong>po</strong>rabe določenega certifikata.<br />

• Izjava o prakticiranju certificiranja (CPS)<br />

(<strong>po</strong>stopki in <strong>po</strong>litike CA).<br />

Aleksandar Jurišić 547<br />

Aleksandar Jurišić 548<br />

Aleksandar Jurišić 549<br />

Aleksandar Jurišić 550


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Format certifikata: X.509 Ver.3<br />

• X.509 origi<strong>na</strong>lno predlagan za <strong>po</strong>d<strong>po</strong>ro X.500, ki<br />

omogoča servis imenikov <strong>na</strong> velikih raču<strong>na</strong>lniških<br />

mrežah.<br />

• Ver. 1 izide leta ’88;<br />

Ver. 2 leta ’93;<br />

Ver. 3 pa leta ’97.<br />

• Najnovejši PKI produkti u<strong>po</strong>rabljajo Ver.3.<br />

• Dopušča precejšnjo fleksibilnost.<br />

Podatkov<strong>na</strong> <strong>po</strong>lja zajemajo:<br />

• verzijo številke certifikata,<br />

• certifikatovo serijsko številko,<br />

• CA-jev <strong>po</strong>dpisni algoritem ID,<br />

• CA-jevo ime v X.500,<br />

• rok veljave,<br />

• u<strong>po</strong>rabnikovo X.500 ime,<br />

• u<strong>po</strong>rabnikova informacija o javnem ključu,<br />

– algoritmov ID, vrednost javnega ključa,<br />

• Ext. <strong>po</strong>lja: omogočajo vključevanje <strong>po</strong>ljubnega<br />

števila dodatnih <strong>po</strong>lj. Primeri:<br />

– <strong>po</strong>litika certifikata in <strong>po</strong>litika prirejanja,<br />

<strong>po</strong>t certificiranja, omejitve.<br />

Proces certifikacije<br />

1. Generiranje para ključev za CA-jev <strong>po</strong>dpis:<br />

• varnost zasebnega ključa CA je osrednja,<br />

• <strong>po</strong> možnosti opravlje<strong>na</strong> v nepropustni <strong>na</strong>pravi,<br />

• deljenje delov zasebnega ključa večim modulom,<br />

tako da certifikat ne more biti izdan s <strong>stran</strong>i<br />

<strong>po</strong>sameznega modula.<br />

2. Generiranje para ključev osebe A:<br />

• bodisi s stani osebe A ali CA.<br />

3. Zahteva za A-jev certifikat:<br />

• lahko, da bo CA kasneje <strong>po</strong>trebovala to zahtevo,<br />

• avtentičnost zahteve je <strong>po</strong>treb<strong>na</strong>.<br />

4. Identiteta osebe A je preverje<strong>na</strong>:<br />

• to je lahko zamudno in drago v praksi,<br />

• preložiti to delo <strong>na</strong> Registration Authority (RA);<br />

npr. <strong>po</strong>što ali banko,<br />

• RA generira registracijski certifikat in ga prosledi<br />

CA za izdajo certifikata.<br />

5. A-jev par ključev je preverjen:<br />

• CA preveri, da je javni ključ veljaven,<br />

tj. zasebni ključ logično obstaja,<br />

• A dokaže, da ima zasebni ključ.<br />

6. CA <strong>na</strong>redi A-jev certifikat.<br />

7. A preveri, da je certifikat izpraven:<br />

• CA lahko zahteva od A še <strong>po</strong>trdilo od prejemu.<br />

Aleksandar Jurišić 551<br />

Aleksandar Jurišić 552<br />

Aleksandar Jurišić 553<br />

Aleksandar Jurišić 554<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Primer: Verisignov digitalni ID<br />

Model zaupanja<br />

Navzkriž<strong>na</strong> certifikacija<br />

Pomisleki glede <strong>na</strong>vskrižnega certificiranja<br />

• www.verisign.com/client/index.html<br />

• Certifikat za javno <strong>po</strong>dpisovanje in javno šifriranje.<br />

• Certifikati so hranjeni v brskalniku ali<br />

e-<strong>po</strong>štni programski opremi.<br />

• Brezplačni certifikati za 60-dnevno preiskusno dobo.<br />

• Trije razredi certifikatov:<br />

– odgovornost prevzema Verisign<br />

(US $100, $5,000, $100,000),<br />

– <strong>po</strong>trditev identitete,<br />

– zaščita CA-jevega zasebnega ključa,<br />

– zaščita <strong>po</strong>sameznih u<strong>po</strong>rabnikovih zasebnih ključev.<br />

• www.versign.com/re<strong>po</strong>sitory/index.html<br />

• strukturiran odnos med številnimi CA-ji.<br />

CA1<br />

A1 A2 A3<br />

CA2<br />

A4 A5 A6<br />

• Stranke dobijo avtentične kopije CA-jevega javnega<br />

ključa (zu<strong>na</strong>j tekočega obsega - out-of-band, npr. med<br />

certifikacijo).<br />

• Kako lahko A 1 preveri <strong>po</strong>dpis s<strong>po</strong>ročila osebe A 5 Tj.<br />

kako lahko dobi overj<strong>eno</strong> kopijo javnega ključa od A 1<br />

• A 1 <strong>po</strong>trebuje overj<strong>eno</strong> kopijo javnega ključa od CA 2 .<br />

• CA-ji si lahko medsebojno overijo javne ključe<br />

CA1<br />

A1 A2 A3<br />

CA2<br />

A4 A5 A6<br />

• A 1 pridobi A 5 -jev overjeni javni ključ:<br />

– Pridobitev certifikatov CA 2 in A 5 z javnega<br />

(nezaščitenega, ne-overjenega) imenika.<br />

– Preveri od CA 1 <strong>po</strong>dpisan certifikat CA 2<br />

(s tem dobi overj<strong>eno</strong> kopijo javnega ključa CA 2 ).<br />

– Preveri od CA 2 <strong>po</strong>dpisan certifikat A 5<br />

(s tem dobi overj<strong>eno</strong> kopijo javnega ključa A 5 ).<br />

• Ali je CA 1 odgovoren osebi A 1 za varnostne probleme<br />

v domeni CA 2 <br />

– Potencialni problemi so lahko omejeni z izjavo v<br />

<strong>po</strong>litiki CA 1 za CA 2 certifikate.<br />

– CA 1 mora previdno preveriti CA 2 jev CPS.<br />

– Neodvisni pregled <strong>po</strong>litike CA 2 bo <strong>po</strong>magal.<br />

• Ali je CA 1 odgovoren osebam iz CA 2 domene za<br />

varnostne probleme v svoji domeni<br />

• Vprašanje: ali bodo problemi <strong>na</strong>vskrižnega<br />

certificiranja za obsežnejše aplikacije kdaj rešeni<br />

Aleksandar Jurišić 555<br />

Aleksandar Jurišić 556<br />

Aleksandar Jurišić 557<br />

Aleksandar Jurišić 558


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Strogo hierarhičen model<br />

CA Root CA<br />

CA1<br />

CA2<br />

CA3<br />

A1 A2 A3 A4<br />

A5 A6<br />

• Vsi vipis začenjajo z overj<strong>eno</strong> kopijo korenskega<br />

javnega ključa.<br />

• Zadrški:<br />

– vse zaupanje je odvisno od korenskega CA,<br />

∗ rešitev: razdeli dele zasebnega ključa;<br />

– Certifikatne verige lahko <strong>po</strong>stanejo predolge,<br />

∗ rešitev: nekatere certifikate spravimo v cache.<br />

– Certifikatne verige zahtevane celo za osebe znotraj<br />

iste CA,<br />

∗ rešitev: nekatere certifikate spravimo v cache.<br />

Povratni hierarhičen model<br />

CA Root CA<br />

CA1<br />

CA2<br />

CA3<br />

A1 A2 A3 A4<br />

A5 A6<br />

• CA lahko preveri javni ključ starševskega CA.<br />

• Vsaka oseba prične z overjenim javnim ključem<br />

svojega CA.<br />

• Najkrajša veriga zaupanja med A in B je <strong>po</strong>t od A<br />

do <strong>na</strong>jmlajšega skupnega prednika od A in B, in <strong>na</strong>to<br />

<strong>na</strong>vzdol do B.<br />

Aleksandar Jurišić 559<br />

Aleksandar Jurišić 560<br />

Aleksandar Jurišić 561<br />

Aleksandar Jurišić 562<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Secure Electronic Transaction (SET)<br />

• Standard, ki sta ga predlagala Visa in MasterCard<br />

(Feb 1996).<br />

• Glej www.setco.org<br />

• Cilj: varne transakcije s kreditnimi karticami prko<br />

Interneta.<br />

• Sodelujoči pri transakciji s kreditno kartico:<br />

– Izdajatelj: fi<strong>na</strong>nčno <strong>po</strong>djetje, ki izdaja kreditne<br />

kartice.<br />

– Lastnik kartice: Ne<strong>po</strong>oblaščen imetnik kreditne<br />

kartice holder of a credit card who is registered<br />

with the corres<strong>po</strong>nding issuer.<br />

– Prodajalec: trgovec, services, or information, who<br />

accepts payment electronically.<br />

– Dobavitelj: fi<strong>na</strong>nč<strong>na</strong> inštitucija, ki <strong>po</strong>dpira<br />

prodajalca s tem, da <strong>po</strong>nuja servis za procesiranje<br />

transakcij z bančnimi karticami.<br />

• Plačilo s kreditno kartico:<br />

Issuer<br />

Cardholder<br />

Payment system provider (VISA)<br />

Acquirer<br />

Merchant<br />

• Po Internetu: C ←→ M in M ←→ A.<br />

• Šifriranje se u<strong>po</strong>rabi za zaščito številk kreditnih kartic<br />

med pr<strong>eno</strong>som <strong>po</strong> Internetu; številke niso razkrite<br />

prodajalcu.<br />

• Digitalni <strong>po</strong>dpisi se u<strong>po</strong>rabljajo za celovitost<br />

<strong>po</strong>datkov in overjanje udeleženih <strong>stran</strong>k.<br />

SET-ov hierarhični PKI<br />

Root CA (SetCo)<br />

VISA CA MasterCard CA<br />

VISA Europe CA VISA NA CA<br />

Cardholder CA Merchant CA Payment CA<br />

Cardholders Merchants Acquirers<br />

Aleksandar Jurišić 563<br />

Aleksandar Jurišić 564<br />

Aleksandar Jurišić 565<br />

Aleksandar Jurišić 566


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Preklic certifikata<br />

Problemi z CRLs<br />

• Razlogi za preklic certifikata:<br />

– kompromitiran ključ (redko).<br />

– Lastnik zapusti organizacijo.<br />

– Lastnik spremeni vlogo v organizaciji.<br />

• Primer: Scotiabank tele-banking PKI:<br />

– Čez 90,026 certifikatov izdanih do aprila 21, 1999.<br />

– Čez 19,000 certifikatov preklicanih.<br />

• U<strong>po</strong>rabnik <strong>na</strong>j bi preveril veljavnost certifikata pred<br />

njegovo u<strong>po</strong>rabo.<br />

• Preklic je <strong>eno</strong>staven v primeru on-line CA.<br />

Certifikatne preklicne liste (CRL)<br />

• Lista preklicanih certifikatov, ki je <strong>po</strong>dpisa<strong>na</strong> in<br />

periodično izda<strong>na</strong> od CA.<br />

• U<strong>po</strong>rabnik preveri CRL predno u<strong>po</strong>rabi certifikat.<br />

• časov<strong>na</strong> prerioda CRL<br />

– Čas med preklicom in obnovitvijo CRL.<br />

• velikost CRL<br />

– Delta CRL: vključuje le zadnje preklicane certifikate.<br />

– Groupiraj razloge za preklic.<br />

– Delitvene točke: revocation data is split into<br />

buckets; each certificate contains data that<br />

determines the bucket it should be placed in<br />

(patent: Entrust Technologies).<br />

– U<strong>po</strong>rabi avtentikacijska drevesa<br />

(komercializacija: Valicert).<br />

Kerberos<br />

Doslej smo s<strong>po</strong>z<strong>na</strong>li sisteme, kjer vsak par u<strong>po</strong>rabnikov<br />

izraču<strong>na</strong> fiksen ključ, ki se ne spreminja.<br />

Zaradi tega je preveč iz<strong>po</strong>stavljen <strong>na</strong>sprotnikom.<br />

Zato bomo vpeljali tako im<strong>eno</strong>van sejni ključ, ki se<br />

oblikuje brž, ko se <strong>po</strong>javita dva, ki želita komunicirati.<br />

Tak sistem, ki u<strong>po</strong>rablja simetrične sisteme, je<br />

Kerberos. Slabost tega sistema pa je zahteva <strong>po</strong><br />

sinhronizaciji ur u<strong>po</strong>rabnikov omrežja.<br />

Določe<strong>na</strong> časov<strong>na</strong> variacija je dovolje<strong>na</strong>.<br />

Aleksandar Jurišić 567<br />

Aleksandar Jurišić 568<br />

Aleksandar Jurišić 569<br />

Aleksandar Jurišić 570<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Pr<strong>eno</strong>s sejnega ključa z u<strong>po</strong>rabo Kerberosa<br />

Pred<strong>po</strong>stavimo, da vsak u<strong>po</strong>rabnik deli z agencijo TA<br />

tajni DES ključ K U . Tako kot prej imejmo tudi ID(U).<br />

Ko dobi agencija TA zahtevo <strong>po</strong> novem sejnem<br />

ključu, si TA izbere <strong>na</strong>ključni ključ K, zabeleži<br />

časovno oz<strong>na</strong>ko T (timestamp), določi življenjsko<br />

dobo L (lifetime) za ključ K ter vse skupaj <strong>po</strong>šlje<br />

u<strong>po</strong>rabnikoma U in V .<br />

• U<strong>po</strong>rabnik U zahteva od agencije TA sejni<br />

ključ za komunikacijo z u<strong>po</strong>rabnikom V .<br />

• Agancija TA izbere <strong>na</strong>ključni sejni ključ K,<br />

časovno oz<strong>na</strong>ko T in življenjsko dobo L.<br />

• TA izraču<strong>na</strong> m 1 = e KU (K, ID(V ), T,L)<br />

in m 2 = e KV (K, ID(U),T, L)<br />

ter ju <strong>po</strong>šlje u<strong>po</strong>rabniku U.<br />

• U u<strong>po</strong>rabi odšifrirno funkcijo d KU , da dobi<br />

iz m 1 K, T, L in ID(V ). Potem izraču<strong>na</strong><br />

m 3 = e K (ID(U),T) in ga <strong>po</strong>šlje osebi V skupaj<br />

s s<strong>po</strong>ročilom m 2 , ki ga je dobil od agencije TA.<br />

• V u<strong>po</strong>rabi odšifrirno funkcijo d KV , da dobi iz<br />

m 2 K, T, L in ID(U). Potem u<strong>po</strong>rabi d K ,<br />

da dobi T in ID(U) iz m 3. Preveri, da sta<br />

tako dobljeni vrednosti za T in ID(U) e<strong>na</strong>ki<br />

prejšnjim. Če je tako, <strong>po</strong>tem izraču<strong>na</strong> še<br />

m 4 = e K (T + 1)<br />

in ga <strong>po</strong>šlje u<strong>po</strong>rabniku U.<br />

• U odšifrira m 4 z u<strong>po</strong>rabo e K in preveri, ali je<br />

rezultat e<strong>na</strong>k T + 1.<br />

V tem protokolu se pre<strong>na</strong>šajo različne funkcije s<strong>po</strong>ročil.<br />

S<strong>po</strong>ročili m 1 in m 2 <strong>po</strong>skrbita za tajnost pri pr<strong>eno</strong>su<br />

sejnega ključa K.<br />

S<strong>po</strong>ročili m 3 in m 4 se u<strong>po</strong>rabljata kot <strong>po</strong>trdilo sejnega<br />

ključa K tako, da se U in V prepričata, da imata res<br />

isti sejni ključ K.<br />

Aleksandar Jurišić 571<br />

Aleksandar Jurišić 572<br />

Aleksandar Jurišić 573<br />

Aleksandar Jurišić 574


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Diffie-Hellmanova uskladitev ključev<br />

Naj bo p praštevilo in α generator multiplikativne<br />

grupe Z ∗ p. Naj bosta oba javno <strong>po</strong>z<strong>na</strong><strong>na</strong><br />

(ali pa <strong>na</strong>j ju oseba U s<strong>po</strong>roči osebi V ).<br />

1. Oseba U izbere <strong>na</strong>ključen a U , 0 ≤ a U ≤ p−2,<br />

izraču<strong>na</strong> α a U mod p in ga <strong>po</strong>šlje osebi V .<br />

2. Oseba V izbere <strong>na</strong>ključen a V , 0 ≤ a V ≤ p−2,<br />

izraču<strong>na</strong> α a V mod p in ga <strong>po</strong>šlje osebi U.<br />

3. Osebi U in V izraču<strong>na</strong>ta za<strong>po</strong>redoma<br />

K = (α a V ) a U mod p in K = (α a U) a V mod p.<br />

zasebni<br />

zasebni<br />

α a<br />

✲<br />

a<br />

b<br />

✛<br />

(α b ) a α b<br />

(α a ) b<br />

Anita<br />

Bojan<br />

Anita in Bojan si delita skupni element grupe:<br />

(α a ) b = (α b ) a = α ab .<br />

Edi<strong>na</strong> razlika med tem protokolom in pa<br />

Diffie-Hellmanovim protokolom za distribucijo<br />

ključev je, da si izberemo nova eks<strong>po</strong>nenta<br />

a U in a V u<strong>po</strong>rabnikov U in V za<strong>po</strong>redoma<br />

vsakič, ko <strong>po</strong>ženemo ta protokol.<br />

Varnost Diffie-Hellmanovega protokola<br />

Protokol ni varen pred aktivnim <strong>na</strong>padalcem,<br />

ki prestreže s<strong>po</strong>ročila in jih <strong>na</strong>domesti s svojimi.<br />

Ta <strong>na</strong>pad bomo im<strong>eno</strong>vali <strong>na</strong>pad srednjega moža.<br />

α a U<br />

α a′ U<br />

U ←−−−−−−−−<br />

−−−−−−−−→ W −−−−−−−−→ V<br />

←−−−−−−−−<br />

α a′ V<br />

α a V<br />

Na koncu sta osebi U in V vz<strong>po</strong>stavili z <strong>na</strong>padalcem<br />

W za<strong>po</strong>redoma ključa α a Ua ′ V in α a′ U a V .<br />

Tako bo zašifrirano s<strong>po</strong>ročilo osebe U odšifriral<br />

<strong>na</strong>padalec W ne pa oseba V .<br />

Aleksandar Jurišić 575<br />

Aleksandar Jurišić 576<br />

Aleksandar Jurišić 577<br />

Aleksandar Jurišić 578<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

U<strong>po</strong>rabnika U in V bi bila rada prepriča<strong>na</strong>, da ni prišlo<br />

<strong>na</strong>mesto medsebojne izmenjave s<strong>po</strong>ročil do izmenjave<br />

z <strong>na</strong>padalcem W.<br />

Potrebujeta protokol za medsebojno avtentikacijo<br />

(predstavitev).<br />

Dobro bi bilo, če bi <strong>po</strong>tekala avtentikacija istočasno z<br />

uskladitvijo ključev, saj bi s tem onemogočili aktivnega<br />

<strong>na</strong>padalca.<br />

Overje<strong>na</strong> uskladitev ključev<br />

Diffie, Van Oorschot in Wiener so predlagali protokol<br />

u<strong>po</strong>rabnik-u<strong>po</strong>rabniku (station-to-station - STS),<br />

ki je protokol za overj<strong>eno</strong> uskladitev kjuča in je<br />

modifikacija Diffie-Hellmanove uskladitve ključev.<br />

Vsak u<strong>po</strong>rabnik ima certifikat (<strong>po</strong>trdilo)<br />

(<br />

( ) )<br />

C(U) = ID(U), ver U , sig TA ID(U), verU ,<br />

kjer je shranje<strong>na</strong> njegova identifikacija ID(U).<br />

Po<strong>eno</strong>stavljen protokol<br />

u<strong>po</strong>rabnik-u<strong>po</strong>rabniku<br />

1. Oseba U izbere <strong>na</strong>ključen a U ∈ {0, . ..,p−2},<br />

izraču<strong>na</strong> α a U mod p in <strong>po</strong>šlje osebi V .<br />

2. Oseba V izbere <strong>na</strong>ključen a V ∈ {0, ...,p−2},<br />

izraču<strong>na</strong> α a V mod p,<br />

K = (α a U<br />

) a V<br />

mod p in y V = sig V (α a V<br />

, α a U<br />

),<br />

ter <strong>po</strong>šlje <strong>po</strong>trdilo (C(V ), α a V , y V ) osebi U.<br />

3. Oseba U izraču<strong>na</strong> K = (α a V ) a U mod p ter<br />

preveri <strong>po</strong>dpis y V z u<strong>po</strong>rabo ver V in<br />

<strong>po</strong>trdilo C(V ) z ver TA .<br />

Nato izraču<strong>na</strong> y U = sig U (α a U,α a V )<br />

in <strong>po</strong>šlje <strong>po</strong>trdilo (C(U),y U ) osebi V .<br />

4. Oseba V preveri <strong>po</strong>dpis y U z u<strong>po</strong>rabo ver U in<br />

<strong>po</strong>trdilo C(U) z u<strong>po</strong>rabo ver TA .<br />

Aleksandar Jurišić 579<br />

Aleksandar Jurišić 580<br />

Aleksandar Jurišić 581<br />

Aleksandar Jurišić 582


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Varnost protokola STS<br />

U<strong>po</strong>rabnika U in V si izmenjata <strong>na</strong>slednje informacije<br />

(izpustimo <strong>po</strong>trdila):<br />

α a U<br />

−−−−−−−−−−−−−−−−−−→<br />

U<br />

α a V<br />

, sig V (α a V<br />

, α a U<br />

)<br />

←−−−−−−−−−−−−−−−−−− V<br />

sig U (α a U<br />

,α a V<br />

)<br />

−−−−−−−−−−−−−−−−−−→<br />

Kaj lahko <strong>na</strong>redi <strong>na</strong>padalec W (mož <strong>na</strong> sredini):<br />

α a U<br />

−−−−−−−−−−−→<br />

α a′ U<br />

−−−−−−−−−−−→<br />

U αa′ V , sig V (α a′ V ,α a U)=<br />

←−−−−−−−−−−− W αa V , sig V (α a V ,α a′ U)<br />

←−−−−−−−−−−−<br />

sig U (α a U,α a′ V )<br />

−−−−−−−−−−−→<br />

sig U (α a′ U,α a V )=<br />

−−−−−−−−−−−→<br />

Po<strong>eno</strong>stavljeni STS protokol je torej varen pred<br />

<strong>na</strong>padom srednjega moža.<br />

V<br />

Tako oblikovan protokol ne vsebuje <strong>po</strong>trditve ključa,<br />

kakor je slučaj v Kerberosovi shemi.<br />

Protokol, v katerem je vključe<strong>na</strong> <strong>po</strong>trditev ključa:<br />

y V = e K (sig V (α a V<br />

, α a U<br />

)), y U = e K (sig U (α a U<br />

,α a V<br />

))<br />

se imenuje STS protokol.<br />

MTI protokoli<br />

Matsumoto, Takashima, Imai so modificirali<br />

Diffie-Hellmanovo uskladitev ključev, tako da<br />

u<strong>po</strong>rabniki U in V ne <strong>po</strong>trebujejo <strong>po</strong>dpisov.<br />

Kadar moramo izmenjati dve <strong>po</strong>šiljki, pravimo,<br />

da gre za protokole z dvema izmenjavama.<br />

Predstavili bomo en njihov protokol.<br />

Aleksandar Jurišić 583<br />

Aleksandar Jurišić 584<br />

Aleksandar Jurišić 585<br />

Aleksandar Jurišić 586<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Osnovne pred<strong>po</strong>stavke so e<strong>na</strong>ke kot pri Diffie-<br />

Hellmanovi uskladitvi ključev: praštevilo p in<br />

generator α multiplikativne grupe Z ∗ p sta jav<strong>na</strong>.<br />

Vsak u<strong>po</strong>rabnik U ima svoj zasebni eks<strong>po</strong>nent a U<br />

(0 ≤ a U ≤ p−2) in javno vrednost b U = α a U mod p.<br />

Agencija TA ima shemo za digitalni <strong>po</strong>dpis, z javnim<br />

algoritmom ver TA in tajnim algoritmom sig TA.<br />

Vsak u<strong>po</strong>rabnik U ima svoj certifikat:<br />

C(U) = (ID(U),b U , sig TA (ID(U),b U )).<br />

1. Oseba U izbere <strong>na</strong>ključen r U ∈ {0,...,p − 2},<br />

izraču<strong>na</strong> s U = α r U mod p in<br />

<strong>po</strong>šlje osebi V (C(U),s U ).<br />

2. Oseba V izbere <strong>na</strong>ključen r V ∈ {0,...,p − 2},<br />

izraču<strong>na</strong> s V = α r V mod p in<br />

<strong>po</strong>šlje osebi U (C(V ),s V ).<br />

3. Osebi U in V izraču<strong>na</strong>ta za<strong>po</strong>redoma<br />

K = s a U<br />

V<br />

b r U<br />

V<br />

mod p in K = s a V<br />

U br V<br />

U<br />

mod p,<br />

kjer sta b V in b U za<strong>po</strong>redoma iz C(V ) in C(U).<br />

Varnost protokola MTI<br />

Ta MTI protokol je e<strong>na</strong>ko varen pred pasivnimi<br />

sovražniki kot Diffie-Hellmanov protokol.<br />

Varnost pred aktivnimi sovražniki je bolj vprašljiva.<br />

Brez u<strong>po</strong>rabe <strong>po</strong>dpisnega algoritma nismo varni pred<br />

<strong>na</strong>padom srednjega moža.<br />

C(U),α r U<br />

mod p<br />

U ←−−−−−−−−−−−−−−−−<br />

−−−−−−−−−−−−−−−−→ V<br />

C(V ), α a V<br />

mod p<br />

Ključ u<strong>po</strong>rabnikov, ki komunicirata, je težko<br />

izraču<strong>na</strong>ti, ker je v ozadju težko izračunljiv<br />

diskretni logaritem.<br />

Tej lastnosti pravimo implicit<strong>na</strong><br />

overitev ključev.<br />

Aleksandar Jurišić 587<br />

Aleksandar Jurišić 588<br />

Aleksandar Jurišić 589<br />

Aleksandar Jurišić 590


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Uskladitev ključev<br />

s ključi, ki se sami overijo<br />

Giraultova shema ne <strong>po</strong>trebuje certifikatov, saj<br />

u<strong>po</strong>rabnike razlikujejo že njihovi javni ključi in<br />

identifikacije.<br />

Vsebuje lastnosti RSA sheme in diskretnega logaritma.<br />

U<strong>po</strong>rabnik <strong>na</strong>j ima identifikacijo ID(U).<br />

Javni ključ za osebno overitev dobi od agencije TA.<br />

Naj bo n = p q, kjer je p = 2p 1 + 1, q = 2q 1 + 1, in<br />

so p, q, p 1 , q 1 velika praštevila. Potem je<br />

(Z ∗ n, ·) ∼ (Z ∗ p × Z ∗ q, ·).<br />

Največji red <strong>po</strong>ljubnega elementa v Z ∗ n je <strong>na</strong>jmanjši<br />

skupni večkratnik elementov p − 1 in q − 1 oziroma<br />

2p 1 q 1 .<br />

Naj bo α generator ciklične <strong>po</strong>dgrupe v Z ∗ p reda 2p 1q 1,<br />

problem diskretnega logaritma v tej <strong>po</strong>dgrupi pa <strong>na</strong>j<br />

bo računsko prezahteven za <strong>na</strong>padalca.<br />

Javni ključ za osebno overitev<br />

Naj bosta števili n, α javni,<br />

števila p, q, p 1 , q 1 pa <strong>na</strong>j <strong>po</strong>z<strong>na</strong> samo agencija TA.<br />

Število e je javni RSA šifrirni eks<strong>po</strong>nent in ga<br />

izbere agancija TA, d = e −1 mod ϕ(n) pa je tajni<br />

odšifrirni eks<strong>po</strong>nent.<br />

1. Oseba U izbere tajni eks<strong>po</strong>nent a U ,<br />

izraču<strong>na</strong> b U = α a U mod n in<br />

izroči a U ter b U agenciji TA.<br />

2. Agencija TA izraču<strong>na</strong><br />

p U = (b U−ID(U)) d mod n ter ga izroči osebi U.<br />

Giraultov protokol za uskladitev ključev<br />

1. Oseba U izbere <strong>na</strong>ključen zasebni r U , izraču<strong>na</strong><br />

s U = α r U<br />

mod n<br />

ter <strong>po</strong>šlje ID(U), p U in s U osebi V .<br />

2. Oseba V izbere <strong>na</strong>ključen zasebni r V , izraču<strong>na</strong><br />

s V = α r V<br />

mod n<br />

ter <strong>po</strong>šlje ID(V), p V in s V osebi U.<br />

3. Osebi U in V izraču<strong>na</strong>ta ključ K za<strong>po</strong>redoma z<br />

s a U<br />

V<br />

(p e V + ID(V )) r U<br />

mod n, s a V<br />

U (pe U + ID(U)) r V<br />

mod n.<br />

Aleksandar Jurišić 591<br />

Aleksandar Jurišić 592<br />

Aleksandar Jurišić 593<br />

Aleksandar Jurišić 594<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Varnost Giraultovega protokola<br />

Ključ za osebno overitev varuje pred sovražniki.<br />

Protokol implicitno overi ključe, zato <strong>na</strong>pad srednjega<br />

moža ni možen.<br />

Agencija TA je prepriča<strong>na</strong>, da u<strong>po</strong>rabnik <strong>po</strong>z<strong>na</strong><br />

vrednost števila a predno izraču<strong>na</strong> ključ za osebno<br />

overitev.<br />

A<br />

Internetne aplikacije<br />

• ftp: File Transfer Protocol<br />

• http: HyperText Transfer Protocol<br />

• smtp: Simple Mail Transfer Protocol<br />

B<br />

TCP/IP<br />

Protokolov sklad:<br />

TCP/IP paket:<br />

Application: http, ftp, smtp<br />

TCP<br />

IP<br />

physical<br />

TCP header Application header IP header Data<br />

IP header: source address desti<strong>na</strong>tion address ------<br />

Nekateri <strong>na</strong>padi<br />

• IP address s<strong>po</strong>ofing (slov. <strong>po</strong><strong>na</strong>rejanje <strong>na</strong>slovov)<br />

rešitev: overi glavo IP paketa<br />

• IP packet sniffing (slov. vohljanje za IP paketi)<br />

rešitev: zašifriraj IP payload (vse kar se pre<strong>na</strong>ša)<br />

• Traffic a<strong>na</strong>lysis (slov. A<strong>na</strong>liza prometa)<br />

rešitev: zašifriraj <strong>po</strong>šiljateljev in prejemnikov <strong>na</strong>slov<br />

TCP – Trans<strong>po</strong>rt Control Protocol<br />

IP – Internet Protocol<br />

Aleksandar Jurišić 595<br />

Aleksandar Jurišić 596<br />

Aleksandar Jurišić 597<br />

Aleksandar Jurišić 598


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

IPsec: Virtual Private Networks (VPNs)<br />

Varnost znotraj TCP/IP<br />

Varnostni protokoli so prisotni <strong>na</strong> različnih nivojih<br />

TCP/IP sklada.<br />

Internet Engineering Task Force (IETF)<br />

• Sprejema standarde za razvoj Internetne arhitekture<br />

in omogoča nemot<strong>eno</strong> delovanje Interneta.<br />

– IP Security Protocol (IPsec)<br />

– Trans<strong>po</strong>rt Layer Security (TLS)<br />

– S/MIME Mail Security<br />

Omogočajo šifriranje in overjanje (overjanje izvora<br />

<strong>po</strong>datkov, celovitost <strong>po</strong>datkov) <strong>na</strong> IP layer.<br />

1. IP nivo: IPsec.<br />

2. Trans<strong>po</strong>rtni nivo: SSL/TLS.<br />

3. Aplikacijski nivo: PGP, S/MIME, SET, itd.<br />

• Odprta za vse zainteresirane <strong>po</strong>sameznike:<br />

www.ietf.org<br />

• Delo, ki ga opravljajo delovne skupine <strong>po</strong>vezane z<br />

varnostjo (Security Area) <strong>po</strong>krivajo:<br />

– Odprto specifikacijo za PGP (OpenPGP)<br />

– Secure Shell (secsh)<br />

(Nova verzija ssh protokola, ki omogoča varno<br />

prijavo <strong>na</strong> oddaljene šifre in varen pr<strong>eno</strong>s datotek.)<br />

LAN<br />

firewall<br />

Internet<br />

LAN<br />

– X.509 Public-Key Infrastructure (PKIX)<br />

Local area networks<br />

for various branches<br />

of an organization<br />

LAN<br />

Aleksandar Jurišić 599<br />

Aleksandar Jurišić 600<br />

Aleksandar Jurišić 601<br />

Aleksandar Jurišić 602<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Gradniki IPsec<br />

IPec ESP glava<br />

• Security Association (SA):<br />

– upravlja algoritme in ključe med sogovorniki,<br />

– vsaka glava IPsec se <strong>na</strong><strong>na</strong>ša <strong>na</strong> Security<br />

Association preko Security Parameter Index (SPI).<br />

• Upravljanje s ključi:<br />

– dogovor o ključu z Diffie-Hellmanovo shemo<br />

(OAKLEY),<br />

– kreira ključe za Security Association,<br />

– upravljanje z javnimi ključi, ki ni <strong>po</strong>krito v IPsec.<br />

IPsec glava za overjanje (AH)<br />

– Podpira MACs: HMAC-MD5-96, HMAC-SHA-1-96.<br />

– Trans<strong>po</strong>rtni <strong>na</strong>čin:<br />

IP header TCP header Data<br />

VPN<br />

IP header AH TCP header Data<br />

• Encapsulating Security Payload.<br />

• Podprti šifrirni algoritmi: 3-DES, RC5, IDEA, ...<br />

• Trans<strong>po</strong>rtni <strong>na</strong>čin:<br />

IP header TCP header Data<br />

VPN<br />

IP header ESP header TCP header Data ESP auth.<br />

ESP v tunelskem <strong>na</strong>činu<br />

– Požarni zid vključi novo IP glavo<br />

(IP <strong>na</strong>slov <strong>po</strong>šiljateljevega <strong>po</strong>žarnega zidu in<br />

IP <strong>na</strong>slov prejemnikovega <strong>po</strong>žarnega zidu).<br />

– Mož<strong>na</strong> je samo zelo omeje<strong>na</strong> a<strong>na</strong>liza prometa.<br />

IP header TCP header Data<br />

VPN<br />

New IP header ESP header IP header TCP header Data ESP auth.<br />

• Trije <strong>na</strong>čini IPsec servisov:<br />

– AH: overjanje,<br />

– ESP: šifriranje + overjanje.<br />

Authenticated fields<br />

Encrypted<br />

Authenticated<br />

• O<strong>po</strong>mba: a<strong>na</strong>liza prometa je še vedno mož<strong>na</strong><br />

(ker IP glave niso šifrirane).<br />

Encrypted<br />

Authenticated<br />

Aleksandar Jurišić 603<br />

Aleksandar Jurišić 604<br />

Aleksandar Jurišić 605<br />

Aleksandar Jurišić 606


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Secure Sockets Layer (SSL)<br />

• SSL je <strong>na</strong>redil Netscape.<br />

• TLS (Trans<strong>po</strong>rt Layer Security)<br />

je IETF-ova verzija SSL-a.<br />

• SSL u<strong>po</strong>rabljamo v brskalnikih (npr. Netscape)<br />

za zaščito mrežnih transakcij.<br />

• Osnovne kom<strong>po</strong>nente SSL/TLS:<br />

handshake protocol: dopusti strežniku in klientu,<br />

da se overita in dogovorita za kriptografske ključe,<br />

record protocol: u<strong>po</strong>rabljan za šifriranje in<br />

overjanje pre<strong>na</strong>šanih <strong>po</strong>datkov.<br />

Upravljanje z javnimi ključi v SSL/TLS<br />

• Korenski CA ključ je v<strong>na</strong>prej inštaliran v brskalnik.<br />

– Klik <strong>na</strong> “Security” in <strong>na</strong>to <strong>na</strong> “Signers”, da <strong>na</strong>jdete<br />

sez<strong>na</strong>m ključev korenskih CA v Netscape-u.<br />

• Mrežnim strežnikom certificirajo javne ključe z enim<br />

izmed korenskih CA-jev (seveda brezplačno).<br />

– Verisign-ov certification business za mrežne<br />

strežnike<br />

www.verisign.com/server/index.html<br />

• Klienti (u<strong>po</strong>rabniki) lahko pridobijo svoje certifikate.<br />

Veči<strong>na</strong> u<strong>po</strong>rabnikov trenutno nima svojih lastnih<br />

certifikatov.<br />

– Če klienti nimajo svojih certifikatov,<br />

<strong>po</strong>tem je overjanje samo <strong>eno</strong><strong>stran</strong>sko<br />

(strežnik se avtenticira klientu).<br />

– Obiščite varno internetno <strong>stran</strong> kot npr.<br />

webbroker1.tdwaterhouse.ca in kliknite <strong>na</strong><br />

“padlock” v Netscapu, da si ogledate<br />

informacijo o strežnikovem certifikatu.<br />

SSL/TLS handshake protocol<br />

Na voljo so <strong>na</strong>slednji kriptografski algoritmi:<br />

• MAC: HMAC-SHA-1, HMAC-MD5.<br />

• šifriranje s simetričnimi ključi: IDEA, RC2-40,<br />

DES-40, DES, Triple-DES, RC4-40, RC4-128.<br />

• Osnovne sheme za dogovor o ključu so:<br />

Aleksandar Jurišić 607<br />

Aleksandar Jurišić 608<br />

Aleksandar Jurišić 609<br />

Aleksandar Jurišić 610<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

– RSA trans<strong>po</strong>rt ključev: delj<strong>eno</strong> skrivnost izbere klient<br />

in jo zašifrira<strong>na</strong> s strežnikovim javnim RSA ključem.<br />

– Fixed Diffie-Hellman: strežnikov Diffie-Hellman-ov<br />

javni ključ g x je v njegovem certifikatu.<br />

Klient ima lahko g y v svojem certifikatu, ali generira<br />

enkratno vrednost g y .<br />

– Ephemeral Diffie-Hellman: Strežnik izbere enkratni<br />

Diffie-Hellman-ov javni ključ g x in ga <strong>po</strong>dpiše s svojim<br />

RSA ali DSA ključem za <strong>po</strong>dpise. Klient izbere<br />

enkratni g y in ga <strong>po</strong>dpiše če in samo če ima certifikat.<br />

– MAC in šifrirni ključi so izpeljani iz skupne skrivnosti.<br />

SSL/TLS handshake protokol (2)<br />

1. faza: Določi varnostne zmožnosti.<br />

• Verzija protokola, <strong>na</strong>čin kompresije,<br />

kriptografski algoritmi,...<br />

2. faza: Strežnikovo overjanje in izmenjava ključev.<br />

• Strežnik <strong>po</strong>šlje svoj certifikate, in (morda še)<br />

parametre za izmenjavo ključev.<br />

3. faza: Klientovo overjanje in izmenjava ključeve.<br />

• Klient <strong>po</strong>šlje svoj certifikat (če ga ima) in<br />

parametre za izmenjavo ključev.<br />

4. faza: Zaključek.<br />

SSL/TLS record protocol<br />

Pred<strong>po</strong>stavimo, da klient in strežnik delita MAC<br />

tajnega ključa in sejni šifrirni ključ:<br />

Fragment Fragment Fragment<br />

16384 bytes<br />

header<br />

Application data<br />

Compress<br />

Data<br />

Encrypt<br />

MAC<br />

9. <strong>po</strong>glavje<br />

Identifikacijske sheme<br />

oziroma sheme za predstavljanje:<br />

• U<strong>po</strong>raba in cilji identifikacijskih shem<br />

• Protokol z izzivom in odgovorom<br />

• Schnorrova identifikacijska shema<br />

• Okomotova identifikacijska shema<br />

• Guillou-Quisquater identifikacijska shema<br />

• Pretvarjanje identifikacijske sheme<br />

v shemo za digitalni <strong>po</strong>dpis<br />

Aleksandar Jurišić 611<br />

Aleksandar Jurišić 612<br />

Aleksandar Jurišić 613<br />

Aleksandar Jurišić 614


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Pogosto hočemo dokazati svojo identiteto, npr.:<br />

• dvig de<strong>na</strong>rja<br />

(<strong>na</strong> bankomatu rabimo kartico in PIN)<br />

• <strong>na</strong>kup/plačilo<br />

(prek telefo<strong>na</strong>, <strong>po</strong>trebujemo kartico in rok veljave)<br />

• telefonska kartica (telefonska številka in PIN)<br />

• prijava <strong>na</strong> svojo šifro <strong>na</strong> raču<strong>na</strong>lniku<br />

(u<strong>po</strong>rabniško ime in geslo)<br />

Cilji identifikacijskih shem<br />

• priča Anitine predstavitve Bojanu se ne more kasneje<br />

lažno predstaviti za Anito,<br />

• tudi Bojan se ne more <strong>po</strong> Anitini predstavitvi lažno<br />

predstaviti za Anito,<br />

• <strong>eno</strong>stavnost (npr. za pametno/čip kartico)<br />

Anita s svojo predstavitvijo ne izda informacije, ki jo<br />

identificira/predstavlja.<br />

Kartica se predstavi sama, ne<strong>po</strong>oblašč<strong>eno</strong> u<strong>po</strong>rabo<br />

(kraja/izguba) pa preprečimo s PIN-om.<br />

Protokol z izzivom in odgovorom:<br />

Anita in Bojan delita tajni (skrivni) ključ K, ki<br />

ga u<strong>po</strong>rabljata za šifriranje.<br />

1. Bojan izbere 64-bitni izziv x in ga <strong>po</strong>šlje Aniti.<br />

2. Anita izraču<strong>na</strong> y = e K (x) in ga <strong>po</strong>šlje Bojanu,<br />

3. Bojan izraču<strong>na</strong> y ′ = e K (x) in preveri y = y ′ .<br />

Skoraj vse sheme u<strong>po</strong>rabljajo protokole z izzivom in<br />

odgovorom, vendar pa <strong>na</strong>jbolj koristne ne u<strong>po</strong>rabljajo<br />

skupnih ključev.<br />

Schnorrova identifikacijska shema<br />

Je e<strong>na</strong> od <strong>na</strong>jbolj praktičnih shem in<br />

<strong>po</strong>trebuje agencijo TA.<br />

1. praštevilo p, za katero je DLP nedosegljiv<br />

problem (npr. p ≥ 2 512 ),<br />

2. velik delitelj q števila p − 1 (npr. q ≥ 2 140 ),<br />

3. element α ∈ Z ∗ p reda q,<br />

4. varnostni parameter t, za katerega je q > 2 t<br />

(v praksi <strong>po</strong><strong>na</strong>vadi vzamemo t = 40),<br />

5. TA z algoritmoma za tajno <strong>po</strong>dpisovanje<br />

sig TA in javno preverjanje ver TA ,<br />

6. predpisa<strong>na</strong> var<strong>na</strong> zgoščeval<strong>na</strong> funkcija.<br />

Aleksandar Jurišić 615<br />

Aleksandar Jurišić 616<br />

Aleksandar Jurišić 617<br />

Aleksandar Jurišić 618<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Parametri p, q in α, algoritem za preverjanje ver TA in<br />

zgoščeval<strong>na</strong> funkcija so javni.<br />

Agencija TA izda Aniti certifikat:<br />

1. TA preveri Anitino identiteto <strong>po</strong> običajni <strong>po</strong>ti<br />

(<strong>po</strong>tni list, rojstni list, oseb<strong>na</strong> izkaznica itd.)<br />

in izda ID(Anita), ki vsebuje identifikacijske<br />

<strong>po</strong>datke,<br />

2. Anita si izbere zasebno <strong>na</strong>ključno število<br />

a ∈ [0, ...,q − 1], izraču<strong>na</strong> v = α −a mod p in<br />

ga izroči agenciji TA.<br />

3. Agencija TA izraču<strong>na</strong> s = sig TA (ID(Anita), v)<br />

ter izroči Aniti <strong>po</strong>trdilo<br />

C(Anita) = ( ID(Anita), v,s ) .<br />

Bojan preveri Anitino identiteto:<br />

1. Anita si izbere <strong>na</strong>ključno število k ∈ [0, ...,q−1]<br />

in izraču<strong>na</strong> γ = α k mod p, ki ga <strong>po</strong>šlje hkrati<br />

s svojim <strong>po</strong>trdilom C(Anita) Bojanu.<br />

2. Bojan preveri <strong>po</strong>dpis TA, izbere <strong>na</strong>ključno<br />

število r ∈ [1,...,2 t ] in ga <strong>po</strong>šlje Aniti.<br />

3. Anita izraču<strong>na</strong> y=k+ar mod q in ga da Bojanu.<br />

4. Bojan preveri, ali je γ ≡ α y v r (mod p).<br />

Podpis s <strong>po</strong>trdi Anitin certifikat<br />

(tako kot pri uskladitvi ključa).<br />

V drugem delu tajno število a deluje kot nekakšen PIN,<br />

saj prepriča Boja<strong>na</strong>, da je Anita res lastnica certifikata.<br />

Za razliko od PIN-a Anita (oziroma bolj <strong>na</strong>tančno<br />

pamet<strong>na</strong> kartica) ne izda števila a, kljub temu, da<br />

“dokaže” z odgovorom <strong>na</strong> izziv z raču<strong>na</strong>njem y-a v<br />

3. koraku, da ga <strong>po</strong>z<strong>na</strong>.<br />

Tej tehniki pravimo dokaz brez razkritja z<strong>na</strong>nja.<br />

Namen varnostnega parametra t je preprečiti, da bi<br />

<strong>na</strong>padalka, ki bi se hotela predstaviti za Anito, v<strong>na</strong>prej<br />

uganila Bojanov izziv r (verjetnost > 2 40 ).<br />

Če bi <strong>na</strong>padalka uganila r, bi si lahko za y izbrala<br />

<strong>po</strong>ljubno število, izraču<strong>na</strong>la<br />

γ = α y v r mod p<br />

in ga <strong>po</strong>slala v 1. koraku Bojanu.<br />

Ko bi prejela Bojanov izziv v drugen koraku, bi mu v 3.<br />

koraku dala že izbrani y in identiteta bi bila <strong>po</strong>trje<strong>na</strong><br />

v 4. koraku.<br />

Očitno Bojan ne sme u<strong>po</strong>rabiti isti izziv r dvakrat.<br />

Aleksandar Jurišić 619<br />

Aleksandar Jurišić 620<br />

Aleksandar Jurišić 621<br />

Aleksandar Jurišić 622


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Napadalka ne more <strong>po</strong><strong>na</strong>rediti Anitin certifikat:<br />

C ′ (Anita) = (ID(Anita), v ′ ,s ′ ), kjer je v ≠ v ′ ,<br />

saj bi v tem primeru z<strong>na</strong>la <strong>po</strong><strong>na</strong>rediti <strong>po</strong>dpis s ′ od<br />

(ID(Anita), v ′ ), ki ga v drugem koraku preveri Bojan.<br />

(Vrednosti v ′ si ne moremo prosto izbirati, saj bi v tem<br />

primeru morali izraču<strong>na</strong>ti DLP, da bi dobili ustrezen<br />

a ′ .)<br />

Napadalka ne more u<strong>po</strong>rabiti niti Anitinega pravega<br />

certifikata C(Anita) = (ID(Anita), v,s) (lahko bi ga<br />

s<strong>po</strong>z<strong>na</strong>la pri prejšnjem preverjanju identitete), ker ne<br />

<strong>po</strong>z<strong>na</strong> a, ki ga <strong>po</strong>trebuje v 3. koraku za raču<strong>na</strong>nje y-a.<br />

Izrek 1. Če <strong>na</strong>padalka <strong>po</strong>z<strong>na</strong> število γ, za<br />

katero se z<strong>na</strong> z verjetnostjo ε ≥ 1/2 t−1<br />

predstaviti kot Anita, <strong>po</strong>tem z<strong>na</strong> <strong>na</strong>padalka<br />

izraču<strong>na</strong>ti število a v <strong>po</strong>linomskem času.<br />

Dokaz: Pred<strong>po</strong>stavimo, da lahko <strong>na</strong>padalka za ε od<br />

2 t možnih izzivov r izraču<strong>na</strong> vrednost y, ki jo bo Bojan<br />

sprejel. Potem lahko zaradi 2 t ε ≥ 2 <strong>na</strong>padalka <strong>po</strong>išče<br />

taka para (y 1 ,r 1 ) in (y 2 ,r 2 ), da je<br />

y 1 ≢ y 2 (mod q) in γ ≡ α y1 v r1 ≡ α y2 v r2 (mod p).<br />

Potem je<br />

α y1−y2 ≡ v r2−r1 (mod p)<br />

in zaradi v = α −a velja<br />

y 1 − y 2 ≡ a(r 2 − r 1 ) (mod q).<br />

Končno je 0 < |r 2 − r 1 | < 2 t , število q > 2 t pa je<br />

praštevilo, torej D(r 2 −r 1 ,q) = 1 in lahko izraču<strong>na</strong>mo<br />

a = (y 1 − y 2 )(r 1 − r 2 ) −1 mod q.<br />

Ugotovili smo, da Anita z<strong>na</strong> <strong>po</strong>trditi svojo identiteto<br />

(<strong>po</strong>lnost), vsak drug, ki z<strong>na</strong> to storiti z nez<strong>na</strong>tno<br />

verjetnostjo (z u<strong>po</strong>rabo identifikacijskega protokola)<br />

pa bodisi <strong>po</strong>z<strong>na</strong> zasebni a bodisi ga z<strong>na</strong> izraču<strong>na</strong>ti v<br />

<strong>po</strong>linomskem času (uglaš<strong>eno</strong>st).<br />

To pa še ne <strong>po</strong>meni, da je Schnorrov protokol varen,<br />

saj ima protokol, <strong>po</strong> katerem bi se Anita identitificirala<br />

<strong>eno</strong>stavno tako, da bi odkrila svoj zasebni eks<strong>po</strong>nent<br />

a, obe zgornji lastnosti.<br />

Aleksandar Jurišić 623<br />

Aleksandar Jurišić 624<br />

Aleksandar Jurišić 625<br />

Aleksandar Jurišić 626<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Če <strong>na</strong>padalka ne izraču<strong>na</strong> nobene informacije o<br />

zasebnem eks<strong>po</strong>nentu a medtem, ko je priča<br />

<strong>po</strong>linomskemu številu <strong>po</strong>novitev Anitinega<br />

identifikacijskega protokola, <strong>po</strong>tem je ta<br />

protokol varen.<br />

Odprt problem: Ali je Schnorrova shema var<strong>na</strong><br />

Naj ima ID(Anita) 512 bitov. Tudi v ima 512 bitov.<br />

Podpis s bo imel 320 bitov, če u<strong>po</strong>rabimo DSS. Potem<br />

ima C(Anita) 1344 bitov. V prvem koraku mora Anita<br />

<strong>po</strong>tencirati <strong>po</strong> modulu p, vendar pa lahko te vrednosti<br />

izraču<strong>na</strong>mo v<strong>na</strong>prej, če je <strong>po</strong>trebno.<br />

C,γ<br />

−−−−−−−−−−−−−−−−−−→<br />

Anita<br />

r<br />

←−−−−−−−−−−−−−−−−−− Bojan<br />

y<br />

−−−−−−−−−−−−−−−−−−→<br />

Anita <strong>po</strong>šlje 1344+512=1856 bitov, <strong>na</strong>to Bojan <strong>po</strong>šlje<br />

40 bitov in končno Anita <strong>po</strong>šlje še 140 bitov.<br />

Okomotova identifikacijska shema<br />

Izberimo parametra p, q tako kot v Schnorrovi shemi.<br />

Naj imata elementa α 1 ,α 2 ∈ Z ∗ p red q,<br />

vrednost c = log α1<br />

α 2 pa <strong>na</strong>j ne <strong>po</strong>z<strong>na</strong> niti Anita.<br />

Kot pri Schnorrovi shemi si agencija TA izbere shemo<br />

za digitalni <strong>po</strong>dpis in zgoščevalno funkcijo.<br />

Agencija TA izda Aniti certifikat:<br />

1. Agencija TA preveri Anitino identiteto in ji<br />

izda ID(Anita),<br />

2. Anita si izbere zasebni <strong>na</strong>ključni števili<br />

a 1 ,a 2 ∈ [0,...,q − 1], izraču<strong>na</strong><br />

v = α −a1<br />

1 α −a2<br />

2 mod p in ga izroči agenciji TA.<br />

3. TA izraču<strong>na</strong> s = sig TA (ID(Anita),v)<br />

ter izroči Aniti <strong>po</strong>trdilo<br />

C(Anita) = ( ID(Anita),v,s ) .<br />

Aleksandar Jurišić 627<br />

Aleksandar Jurišić 628<br />

Aleksandar Jurišić 629<br />

Aleksandar Jurišić 630


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Bojan preveri Anitino identiteto:<br />

1. Anita si izbere <strong>na</strong>ključni števili k 1 ,k 2 ∈[0,...,q−1]<br />

in izraču<strong>na</strong> γ = α k1<br />

1 αk2 2 mod p, ki ga <strong>po</strong>šlje<br />

hkrati s svojim <strong>po</strong>trdilom C(Anita) Bojanu.<br />

2. Bojan preveri <strong>po</strong>dpis TA, izbere <strong>na</strong>ključno<br />

število r ∈ [1,...,2 t ] in ga da Aniti.<br />

3. Anita izraču<strong>na</strong> y i = k i + a ir mod q, za i = 1, 2<br />

in ju da Bojanu.<br />

4. Bojan preveri, ali je γ ≡ α y1<br />

1 αy2 2 vr (mod p).<br />

Okomotova shema je <strong>po</strong>l<strong>na</strong>, za razliko od Schnorrove<br />

shema pa zanjo z<strong>na</strong>mo <strong>po</strong>kazati, da je var<strong>na</strong>, kakor<br />

hitro je diskretni logaritem log α1 α 2 prezahteven.<br />

Preds<strong>po</strong>stavimo, da se je Anita identificirala tako, da<br />

je <strong>po</strong>novila dani protokol <strong>po</strong>linomsko število krat in<br />

da je <strong>na</strong>padalka uspela priti do informacije o tajnih<br />

eks<strong>po</strong>nentih a 1 in a 2 . Pokazali bomo, da v tem primeru<br />

z<strong>na</strong>mo izraču<strong>na</strong>ti c v <strong>po</strong>linomskem času, kar je seveda<br />

v protislovju s pred<strong>po</strong>stavko.<br />

Izrek 2. Če <strong>na</strong>padalka <strong>po</strong>z<strong>na</strong> število γ, za<br />

katero se z<strong>na</strong> z verjetnostjo ε ≥ 1/2 t−1<br />

predstaviti kot Anita, <strong>po</strong>tem z<strong>na</strong> <strong>na</strong>padalka<br />

v <strong>po</strong>linomskem času izraču<strong>na</strong>ti taki števili<br />

b 1 in b 2 , da je v ≡ α −b1<br />

1 α −b2<br />

2 (mod p).<br />

Dokaz: Pred<strong>po</strong>stavimo, da lahko <strong>na</strong>padalka za ε od<br />

2 t možnih izzivov r izraču<strong>na</strong> vrednost y, ki jo bo Bojan<br />

sprejel. Potem lahko zaradi 2 t ε ≥ 2 <strong>na</strong>padalka <strong>po</strong>išče<br />

taka para (y 1 ,y 2 , r) in (z 1 , z 2 ,s), da je r ≠ s in<br />

γ ≡ α y1<br />

1 αy2 2 vr ≡ α z1<br />

1 αz2 2 vs (mod p).<br />

Definirajmo b i ≡ (y i − z i )(r − s) −1 mod q za i = 1, 2<br />

in preverimo<br />

v ≡ α −b1<br />

1 α −b2<br />

2 v r (mod p).<br />

Izrek 3. Če <strong>na</strong>padalka <strong>po</strong>z<strong>na</strong> število γ, za<br />

katero se z<strong>na</strong> z verjetnostjo ε ≥ 1/2 t−1<br />

predstaviti kot Anita, <strong>po</strong>tem z<strong>na</strong>ta z<br />

verjetnostjo 1 − 1/q Anita in <strong>na</strong>padalka<br />

v <strong>po</strong>linomskem času izraču<strong>na</strong>ti log α1 α 2 .<br />

Aleksandar Jurišić 631<br />

Aleksandar Jurišić 632<br />

Aleksandar Jurišić 633<br />

Aleksandar Jurišić 634<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Dokaz: Iz prejšnjega izreka sledi, da z<strong>na</strong> <strong>na</strong>padalka<br />

priti do števil b 1 in b 2 , za kateri velja:<br />

v ≡ α −b1<br />

1 α −b2<br />

2 (mod p).<br />

Anita izda vrednosti a 1 in a 2 tako, da imamo<br />

in od tod<br />

v ≡ α −a1<br />

1 α −a2<br />

2 (mod p)<br />

α a1−b1<br />

1 ≡ α b2−a2<br />

2 (mod p).<br />

Če je (a 1 , a 2 ) ≠ (b 1 ,b 2 ), <strong>po</strong>tem obstaja<br />

(a 2 − b 2 ) −1 mod q in je<br />

c = log α1<br />

α 2 = (a 1 − b 1 )(a 2 − b 2 ) −1 mod q.<br />

Naj bo sedaj (a 1, a 2) = (b 1, b 2). Pokazali bomo, da<br />

se lahko to zgodi le z zelo majhno verjetnostjo 1/q,<br />

kar <strong>po</strong>meni, da Anita in <strong>na</strong>padalka lahko skoraj vedno<br />

izraču<strong>na</strong>ta c.<br />

Definirajmo množico vseh urejenih parov, ki bi bili<br />

lahko Anitini tajni eks<strong>po</strong>nenti:<br />

A={(a ′ 1, a ′ 2) ∈ Z q ×Z q | α −a′ 1<br />

1 α −a′ 2<br />

2 ≡ α −a1<br />

1 α −a2<br />

2 (mod p)}.<br />

Potem ima množica A <strong>na</strong>tanko q elementov, saj je<br />

A = {(a 1 − cθ,a 2 + θ) |θ ∈ Z q }.<br />

Po Okomotovemu protokolu si izbere Anita γ,<br />

<strong>na</strong>padalka si izbere r, Anita pa izraču<strong>na</strong><br />

iz<br />

kjer je<br />

γ ≡ α y1<br />

1 αy2 2 vr (mod p)<br />

y i = k i + a i r mod q, za i = 1, 2,<br />

γ ≡ α k1<br />

1 αk2 2<br />

in ne izda k 1 , k 2 (ne a 1 in a 2 ).<br />

(mod p)<br />

E<strong>na</strong> četverica (γ, r, y 1, y 2) je <strong>na</strong>videz odvis<strong>na</strong> od<br />

urejenega para (a 1 , a 2 ). Pokažimo, da bi lahko ta<br />

četverica bila generira<strong>na</strong> od <strong>po</strong>ljubnega drugega para<br />

(a ′ 1,a ′ 2) ∈ A, tj. a ′ 1 = a 1 − cθ in a ′ 2 = a 2 + θ,<br />

θ ∈ [0..q − 1]:<br />

y 1 = k 1 + a 1r = k 1 + (a ′ 1 + cθ)r = (k ′ 1 + rcθ) + a ′ 1r,<br />

in<br />

y 2 = k 2 + a 2 r = k 2 + (a ′ 2 − θ)r = (k ′ 2 − rθ) + a ′ 2r,<br />

Torej če bi začeli z (a ′ 1, a ′ 2) in bi si lahko izbrali<br />

k ′ 1 = k 1 + r cθ in k ′ 2 = k 2 − r θ, bi dobili isti γ.<br />

Aleksandar Jurišić 635<br />

Aleksandar Jurišić 636<br />

Aleksandar Jurišić 637<br />

Aleksandar Jurišić 638


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Guillou-Quisquaterjeva<br />

identifikacijska shema<br />

Ta shema je zasnova<strong>na</strong> <strong>na</strong> sistemu RSA.<br />

Agencija TA si izbere dve praštevili p in q ter izraču<strong>na</strong><br />

n = pq. Slednje število je javno, medtem ko sta<br />

vrednosti p in q zasebni in izbrani tako, da je problem<br />

faktorizacije prezahteven.<br />

TA si izbere še shemo za digitalni <strong>po</strong>dpis, zgoščevalno<br />

funkcijo ter 40-bitno praštevilo b, ki bo služilo kot<br />

varnostni parameter in šifrirni eks<strong>po</strong>nent.<br />

Izdaja certifikata <strong>po</strong>teka <strong>na</strong> <strong>na</strong>slednji <strong>na</strong>čin:<br />

1. Agencija TA preveri Anitino identiteto in izda<br />

ID(Anita).<br />

2. Anita si izbere zasebno <strong>na</strong>ključno število<br />

u ∈ [0,...,n − 1], izraču<strong>na</strong> v = u −b mod n in<br />

ga izroči agenciji TA.<br />

3. Agencija TA izraču<strong>na</strong> s = sig TA (ID(Anita), v)<br />

ter izroči Aniti <strong>po</strong>trdilo<br />

C(Anita) = ( ID(Anita), v,s ) .<br />

GQ-identifikacija (Bojan preveri Anitino identiteto):<br />

1. Anita si izbere <strong>na</strong>ključno število k ∈ [0,...,n−1]<br />

in izraču<strong>na</strong> γ = k b mod n, ki ga da hkrati<br />

s svojim certifikatom C(Anita) Bojanu.<br />

2. Bojan preveri <strong>po</strong>dpis agencije TA, izbere<br />

<strong>na</strong>ključno število r ∈ [1, ...,b−1] in ga da Aniti.<br />

3. Anita izraču<strong>na</strong> y = ku r mod n in ga da Bojanu.<br />

4. Bojan preveri, ali je γ ≡ y b v r (mod n).<br />

Prepričali se bomo, da je ta shema <strong>po</strong>l<strong>na</strong> in uglaše<strong>na</strong>,<br />

nihče pa ni uspel dokazati, da je tudi var<strong>na</strong><br />

(tudi če bi privzel, da je krpitosistem RSA varen).<br />

Polnost je očit<strong>na</strong><br />

v r y b ≡ (u −b ) r (ku r ) b ≡ k b ≡ γ (mod n),<br />

za uglaš<strong>eno</strong>st pa privzamemo, da ni mogoče izraču<strong>na</strong>ti<br />

števila u iz v (le-tega smo dobili iz u z RSA<br />

šifriranjem).<br />

Izrek. Če <strong>na</strong>padalka <strong>po</strong>z<strong>na</strong> število γ, za<br />

katerega se z<strong>na</strong> z verjetnostjo ε ≥ 1/b<br />

predstaviti kot Anita, <strong>po</strong>tem z<strong>na</strong> <strong>na</strong>padalka<br />

izraču<strong>na</strong>ti število u v <strong>po</strong>linomskem času.<br />

Aleksandar Jurišić 639<br />

Aleksandar Jurišić 640<br />

Aleksandar Jurišić 641<br />

Aleksandar Jurišić 642<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Dokaz: Za nek γ izraču<strong>na</strong> <strong>na</strong>padalka take vrednosti<br />

y 1 , y 2 , r 1 , r 2 , da je r 1 > r 2 in<br />

Potem velja<br />

γ ≡ v r1 y b 1 ≡ v r2 y b 2 (mod n).<br />

(y 2 /y 1 ) b ≡ v r1−r2 (mod n) in r 1 − r 2 < b,<br />

tako da lahko izraču<strong>na</strong>mo t = (r 1 − r 2 ) −1 mod b z<br />

razširjenim Evklidovim algoritmom. Od tod dobimo<br />

tak s, da je (r 1 − r 2 )t = sb + 1 in<br />

(y 2 /y 1 ) bt ≡ v (r1−r2)t ≡ v sb+1 (mod n) oziroma<br />

v ≡ (y 2 /y 1 ) bt v −sb (mod n).<br />

Obe <strong>stran</strong>i zgornje kongruence <strong>po</strong>tenciramo <strong>na</strong><br />

b −1 mod ϕ(n) ter ju <strong>na</strong>to invertiramo <strong>po</strong> modulu n<br />

u ≡ (y 1 /y 2 ) t v s (mod n)<br />

Popularne identifikacijske sheme so še Brickel in<br />

McCurleyjeva shema, Feige-Fiat-Shamirjeva shema in<br />

Shamirjeva shema s permutiranim jedrom. Zanjo je<br />

Shamir dokazal, da je var<strong>na</strong> s <strong>po</strong>močjo metod za<br />

dokazovanje brez razkrivanja z<strong>na</strong>nja.<br />

Pretvarjanje identifikacijske sheme<br />

v shemo za digitalni <strong>po</strong>dpis<br />

Pokazali bomo še standarden <strong>na</strong>čin za pretvarjanje<br />

identifikacijske sheme v shemo za digitalni <strong>po</strong>dpis.<br />

Boja<strong>na</strong>, ki preverja Anitino identiteto, je <strong>po</strong>trebno<br />

zamenjati z javno zgoščevalno funkcijo (s<strong>po</strong>ročilo<br />

torej ni zgošč<strong>eno</strong> pred <strong>po</strong>dpisom, ampak zgoščevanje<br />

<strong>po</strong>stane del <strong>po</strong>dpisovanja).<br />

Postopek si <strong>po</strong>glejmo kar <strong>na</strong> primeru Schnorrove<br />

sheme:<br />

Naj bo p tako 512-bitno praštevilo, da je DLP v Z ∗ p<br />

nedosegljiv problem, q 160-bitni delitelj števila p−1<br />

in α ∈ Z ∗ p element reda q. Naj bo h zgoščeval<strong>na</strong><br />

funkcija z zalogo vrednosti Z q , P = Z ∗ p, A = Z ∗ p ×Z q<br />

in<br />

K = {(p, q,α, a,v) | v ≡ α −a (mod p)}.<br />

Vrednosti p,q,α so javne, vrednost a pa zaseb<strong>na</strong>.<br />

V praksi si običajno za zgoščevalno funkcijo h izberemo<br />

SHS, s 160-bitno zalogo vrednosti in z rezultatom,<br />

zreduciranim <strong>po</strong> modulu q (odšteti je <strong>po</strong>trebno <strong>na</strong>jveč<br />

en q).<br />

Aleksandar Jurišić 643<br />

Aleksandar Jurišić 644<br />

Aleksandar Jurišić 645<br />

Aleksandar Jurišić 646


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

V prehodu iz identifikacijske sheme <strong>na</strong> shemo za<br />

<strong>po</strong>dpisovanje zamenjamo 40-bitni izziv z 160-bitno<br />

zgostitvijo s<strong>po</strong>ročila:<br />

Za K = (p,q,α, a,v) in za tajno <strong>na</strong>ključno število<br />

k ∈ Z ∗ q, definirajmo<br />

sig K (x, k) = (γ, y),<br />

kjer γ = α k mod p in y = k + ah(x,γ) mod q.<br />

Za x, γ ∈ Z ∗ p in y ∈ Z q definirajmo<br />

ver(x,γ, y) = true ⇐⇒ γ ≡ α y v h(x,γ) (mod p).<br />

10. <strong>po</strong>glavje<br />

Kode za overjanje<br />

(angl. authentication codes)<br />

• Uvod<br />

• Raču<strong>na</strong>nje verjetnosti prevare<br />

• Kombi<strong>na</strong>torične ocene<br />

– pravokotne škatle (angl. orthogo<strong>na</strong>l arrays, OA)<br />

– konstrukcije in ocene za OA<br />

• Karakterizaciji kod za overjanje<br />

• Ocene entropije<br />

• Incidenčne strukture<br />

Kode za overjanje <strong>na</strong>m nudijo metode za<br />

zagotavljanje integritete s<strong>po</strong>ročil,<br />

tj. da kljub aktivnemu <strong>na</strong>padalcu vemo, da<br />

• s<strong>po</strong>ročilo <strong>po</strong>šilja pričakova<strong>na</strong> oseba in da<br />

• s<strong>po</strong>ročilo ni spremenj<strong>eno</strong>.<br />

Shema za overjanje mora biti brez<strong>po</strong>gojno var<strong>na</strong>,<br />

medtem ko smo preučevali sheme za digitalne <strong>po</strong>dpise<br />

in MAC-e glede <strong>na</strong> računsko varnost.<br />

U<strong>po</strong>raba<br />

Veliki datoteki priredimo <strong>po</strong>trdilo<br />

(hranj<strong>eno</strong> <strong>po</strong>leg te datoteke),<br />

ki omogoči Bojanu, da preveri,<br />

ali je vsebi<strong>na</strong> še vedno nespremenje<strong>na</strong><br />

(s ključem, ki je hranjen <strong>na</strong> varnem).<br />

Avtentičnost lahko preveri le tisti,<br />

ki mu je s<strong>po</strong>ročilo <strong>na</strong>menj<strong>eno</strong><br />

(digitalni <strong>po</strong>dpis pa lahko preveri vsak).<br />

Za domačo <strong>na</strong>logo <strong>po</strong>skusite pretvoriti še kakšno izmed<br />

opisanih identifikacijskih shem v shemo za <strong>po</strong>dpis.<br />

Aleksandar Jurišić 647<br />

Aleksandar Jurišić 648<br />

Aleksandar Jurišić 649<br />

Aleksandar Jurišić 650<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Koda za overjanje je četverka (S, A, K, E), za<br />

katero velja:<br />

1. S je konč<strong>na</strong> množica vseh začetnih stanj.<br />

2. A je konč<strong>na</strong> množica vseh <strong>po</strong>trdil.<br />

3. K je konč<strong>na</strong> množica vseh ključev.<br />

4. Za vsak K ∈ K je dano pravilo za overjanje<br />

e K : S −→ A.<br />

Množica s<strong>po</strong>ročil pa je M = S × A.<br />

Za <strong>po</strong>šiljanje <strong>po</strong>dpisanega s<strong>po</strong>ročila preko<br />

nezavarovanega ka<strong>na</strong>la opravita Anita in Bojan<br />

<strong>na</strong>slednji protokol:<br />

1. Anita in Bojan skupaj izbereta <strong>na</strong>ključni ključ<br />

K ∈ K (to storita tajno, tako kot v primeru<br />

simetrične kriptografije).<br />

2. Anita za s<strong>po</strong>ročilo s ∈ S izraču<strong>na</strong> a = e K (s)<br />

in <strong>po</strong>šlje Bojanu par (s, a).<br />

3. Bojan dobi (s, a), izraču<strong>na</strong> a ′ = e K (s) in<br />

preveri, če je a = a ′ .<br />

Laž<strong>na</strong> prestavitev (angl. imperso<strong>na</strong>tion)<br />

Napadalec vstavi v ka<strong>na</strong>l s<strong>po</strong>ročilo (s, a) v upanju,<br />

da ga bo Bojan sprejel za overjenega.<br />

<strong>na</strong>padalec<br />

(s,a)<br />

−−−−−→<br />

Bojan<br />

Zamenjava<br />

Napadalec opazi <strong>na</strong> ka<strong>na</strong>lu s<strong>po</strong>ročilo (s, a)<br />

in ga zamenja s s<strong>po</strong>ročilom (s ′ , a ′ ) v upanju,<br />

da ga bo Bojan sprejel za overjenega.<br />

Anita<br />

(s,a)<br />

−−−−−→<br />

<strong>na</strong>padalec<br />

(s ′ ,a ′ )<br />

−−−−−→<br />

Bojan<br />

Vsakemu od zgornjih <strong>na</strong>padov priredimo ustrezno<br />

verjetnost prevare in ju oz<strong>na</strong>čimo s Pd 0 in Pd 1 .<br />

Raču<strong>na</strong>nje verjetnosti prevare<br />

Primer: S = A = Z 3 , K = Z 3 × Z 3 in<br />

e ij (s) = is + j mod 3 za vsak (i,j) ∈ K in s ∈ S.<br />

Sestavimo (|K|×|S|)-dim. matriko M za overjanje,<br />

tako da v K-ti vrstici <strong>na</strong> s-to mesto <strong>po</strong>stavimo element<br />

e K (s) ∈ A.<br />

Aleksandar Jurišić 651<br />

Aleksandar Jurišić 652<br />

Aleksandar Jurišić 653<br />

Aleksandar Jurišić 654


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Če je v zgornjem primeru p K (K)=1/9 za vsak K ∈ K,<br />

se ni težko prepričati, da je Pd 0 = Pd 1 = 1/3.<br />

0 1 2<br />

⎛ ⎞<br />

(0, 0) 0 0 0<br />

(0, 1) 1 1 1<br />

(0, 2) 2 2 2<br />

(1, 0) 0 1 2<br />

(1, 1) 1 2 0<br />

(1, 2) 2 0 1<br />

(2, 0) ⎜ 0 2 1<br />

⎟<br />

(2, 1) ⎝ 1 0 2 ⎠<br />

(2, 2) 2 1 0<br />

Sedaj pa izraču<strong>na</strong>jmo verjetnosti prevare v splošnem.<br />

Oz<strong>na</strong>čimo z I(s, a), s ∈ S, a ∈ A, verjetnost, da bo<br />

Bojan sprejel s<strong>po</strong>ročilo (s, a) za avtentično. Potem je<br />

∑<br />

I(s, a) = P(a=e K (s)) = p K (H).<br />

{H∈K |e H (s)=a}<br />

Torej izraču<strong>na</strong>mo I(s, a) tako, da v matriki za<br />

overjanje izberemo vrstice, ki imajo v stolpcu s<br />

vrednost a in <strong>na</strong>to seštejemo verjetnosti ustreznih<br />

ključev.<br />

Napadalec bo izbral tak (s, a), da bo I(s, a) <strong>na</strong>jvečji:<br />

Pd 0 = max{I(s,a) |s ∈ S, a ∈ A}.<br />

Medtem ko Pd 0 ni odvis<strong>na</strong> od <strong>po</strong>razdelitve p S , pa je<br />

Pd 1 lahko. Pred<strong>po</strong>stavimo, da je <strong>na</strong>padalka <strong>na</strong> ka<strong>na</strong>lu<br />

dobila (s,a) in ga hoče zamenjati s (s ′ , a ′ ), s ′ ≠ s.<br />

Za s, s ′ ∈ S in a,a ′ ∈ A je verjetnost, da Bojan ne bo<br />

opazil zamenjave, e<strong>na</strong>ka<br />

I(s ′ ,a ′ ;s, a) = P(a ′ = e K (s ′ )/a = e K (s))<br />

= P( (a ′ = e K (s ′ )) ∩ (a = e K (s)) )<br />

P ( a = e K(s) )<br />

=<br />

∑<br />

{H∈K |e H (s)=a, e H (s ′ )=a ′ }<br />

I(s, a)<br />

p K (H)<br />

.<br />

Napadalec maksimizira svoje možnosti, zato izraču<strong>na</strong><br />

p s,a = max{I(s ′ ,a ′ ; s, a) |s ′ ∈ S, s ≠ s ′ in a ′ ∈ A}.<br />

Torej je Pd 1 matematično upanje izrazov p s,a glede <strong>na</strong><br />

<strong>po</strong>razdelitev p M(s, a) in je e<strong>na</strong>ko<br />

Pd 1 = ∑<br />

p M (s, a)p s,a .<br />

(s,a)∈M<br />

Verjetnostno <strong>po</strong>razdelitev za p M preoblikujemo<br />

p M (s, a) = p S (s) p K (a/s)<br />

∑<br />

= p S (s)<br />

{K∈K,|e K (s)=a}<br />

= p S (s) I(s, a).<br />

p K (K)<br />

Aleksandar Jurišić 655<br />

Aleksandar Jurišić 656<br />

Aleksandar Jurišić 657<br />

Aleksandar Jurišić 658<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Za vse s ∈ S in a ∈ A oz<strong>na</strong>čimo s q s,a maksimalno<br />

vrednost vsote<br />

∑<br />

p K (H)<br />

{H∈K |e H (s)=a,e H (s ′ )=a ′ }<br />

glede <strong>na</strong> vse pare (s ′ , a ′ ), kjer je s ′ ∈ S\{s} ter a ′ ∈ A.<br />

Od tod dobimo nekoliko bolj priročno formulo za<br />

verjetnost prevare<br />

Pd 1 = ∑<br />

p S (s) q s,a .<br />

(s,a)∈M<br />

Kombi<strong>na</strong>torične ocene<br />

Pri kodah za overjanje si želimo <strong>na</strong>slednje lastnosti:<br />

• verjetnosti prevare Pd 0 in Pd 1<br />

morata biti dovolj majhni,<br />

• množica začetnih stanj S mora biti dovolj velika<br />

(saj želimo imeti dovolj veliko množico s<strong>po</strong>ročil),<br />

• množica ključev K <strong>na</strong>j bo kar se da majh<strong>na</strong><br />

(saj <strong>po</strong>šiljamo ključe <strong>po</strong> varnem ka<strong>na</strong>lu).<br />

Izrek 1. Za kodo za overjanje (S, A, K, E) velja<br />

Pd 0 ≥ 1/|A|. E<strong>na</strong>kost velja, če in samo, če je<br />

∑<br />

p K (K) = 1 za vsak s ∈ S, a ∈ A.<br />

|A|<br />

{K∈K |e K (s)=a}<br />

Dokaz: Za fiksen s ∈ S velja:<br />

∑<br />

a∈A<br />

I(s, a) = ∑ a∈A<br />

= ∑ H∈K<br />

∑<br />

{H∈K |e H (s)=a}<br />

p K (H) = 1.<br />

p K (H)<br />

Izrek 2. Za kodo za overjanje (S, A, K, E) velja<br />

Pd 1 ≥ 1/|A|. E<strong>na</strong>kost velja, če in samo, če je<br />

∑<br />

p K (H)<br />

{H∈K |e H (s)=a, e H (s ′ )=a ′ }<br />

∑<br />

= 1<br />

p K (H) |A|<br />

{H∈K |e H (s)=a}<br />

za vse s, s ′ ∈ S, s ′ ≠ s in a ∈ A.<br />

Dokaz: Za fiksne s, s ′ ∈ S, s ′ ≠ s in a ∈ A, <strong>po</strong>dobno<br />

kot v dokazu Izreka 1, izraču<strong>na</strong>mo<br />

∑<br />

∑<br />

a;s<br />

a ∈AI(s, ′ ,a ′ )= ∑ p K(H)<br />

{H∈K|e H (s)=a, e H (s ′ )=a ′ }<br />

∑<br />

=1.<br />

′ a ′ ∈A<br />

p K (H)<br />

{H∈K |e H (s)=a}<br />

Aleksandar Jurišić 659<br />

Aleksandar Jurišić 660<br />

Aleksandar Jurišić 661<br />

Aleksandar Jurišić 662


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Od tod pa sledi<br />

p s,a = maxI(s ′ ,a ′ ;s, a) ≥ 1/|A|.<br />

s≠s ′<br />

Verjetnost Pd 1 = ∑<br />

p M(s, a)p s,a<br />

(s,a)∈M<br />

je torej <strong>na</strong>vzdol omeje<strong>na</strong> z<br />

∑ p M (s, a)<br />

= 1<br />

|A| |A| .<br />

(s,a)∈M<br />

Omenimo še dve očitni <strong>po</strong>sledici izrekov 1 in 2.<br />

Posledica 3. Za kodo za overjanje (S, A, K, E)<br />

velja Pd 0 = Pd 1 = 1/|A|, če in samo, če je<br />

∑<br />

p K (H) = 1<br />

|A| 2<br />

{H∈K |e H (s)=a, e H (s ′ )=a ′ }<br />

za vse s, s ′ ∈ S, s ′ ≠ s in a,a ′ ∈ A.<br />

Posledica 4. Za kodo za overjanje (S, A, K, E),<br />

v kateri so vsi ključi e<strong>na</strong>ko verjetni, velja<br />

Pd 0 = Pd 1 = 1/|A|, če in samo, če je<br />

|{H ∈ K | e H (s) = a, e H (s ′ ) = a ′ }| = |K|<br />

|A| 2<br />

za vse s, s ′ ∈ S, s ′ ≠ s in a,a ′ ∈ A.<br />

Pravokotne škatle<br />

Pravokot<strong>na</strong> škatla (angl. orthogo<strong>na</strong>l array)<br />

OA(v,s, λ) je taka (λv 2 × s)-razsež<strong>na</strong> matrika z v<br />

simboli, da se v vsakih dveh stolpcih vsak izmed v 2<br />

možnih parov simbolov <strong>po</strong>javi v <strong>na</strong>tanko λ vrsticah.<br />

Te in njim ekvivalentne strukture (npr. transverzalni<br />

designi, paroma pravokotni latinski kvadrati, mreže...)<br />

so del teorije desig<strong>na</strong>.<br />

Če dva stolpca OA(v,s, 1) u<strong>po</strong>rabimo za koordi<strong>na</strong>te,<br />

lahko iz 3. stolpca sestavimo latinski kvadrat,<br />

tj. v × v-razsežno matriko, v kateri vsi simboli iz<br />

{1,...,v} <strong>na</strong>stopajo v vsaki vrstici in vsakem stolpcu.<br />

⎛ ⎞<br />

0 0 0<br />

1 1 1<br />

2 2 2<br />

⎛ ⎞<br />

0 1 2<br />

0 2 1<br />

Primer : OA(3, 3, 1)<br />

1 2 0<br />

⎝<br />

2 1 0 ⎠<br />

2 0 1<br />

1 0 2<br />

⎜ 0 2 1<br />

⎟<br />

⎝ 1 0 2 ⎠<br />

2 1 0<br />

Aleksandar Jurišić 663<br />

Aleksandar Jurišić 664<br />

Aleksandar Jurišić 665<br />

Aleksandar Jurišić 666<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

A K Q J<br />

Q<br />

J<br />

J<br />

Q<br />

A<br />

K<br />

K A J<br />

Trije paroma ortogo<strong>na</strong>lni latinski kvadrati reda 4,<br />

tj. vsak par z<strong>na</strong>k-črka ali črka-barva ali barva-z<strong>na</strong>k<br />

se <strong>po</strong>javi <strong>na</strong>tanko enkrat.<br />

K<br />

A<br />

Q<br />

Izrek 5. Naj bo OA(v,s, λ) pravokot<strong>na</strong> škatla.<br />

Potem obstaja koda za overjanje (S, A, K, E),<br />

kjer je |S| = s, |A| = v, |K| = λv 2 in<br />

Pd 0 = Pd 1 = 1 v .<br />

Dokaz: Vsako vrstico OA(v,s, λ) u<strong>po</strong>rabimo kot<br />

pravilo za overjanje z verjetnostjo 1/(λv 2 ):<br />

pravokot<strong>na</strong> škatla<br />

vrstica<br />

stolpec<br />

simbol<br />

koda za overjanje<br />

pravilo za overjanje<br />

začetno stanje<br />

<strong>po</strong>trdilo<br />

Konstrukcije in ocene za OA<br />

v je število <strong>po</strong>trdil, s določa število začetnih stanj,<br />

λ pa je <strong>po</strong>vezan s številom ključev (λv 2 ).<br />

Naj bo Pd 0 ≤ ε in Pd 1 ≤ ε.<br />

Potem <strong>na</strong>j za OA(v,s, λ) velja<br />

– v ≥ 1/ε,<br />

– s ≥ |S| (nekaj stolpcev OA lahko izpustimo),<br />

– λ <strong>na</strong>j bo čim manjši.<br />

Izrek 6. Če obstaja OA(v,s, λ), <strong>po</strong>tem za λ = 1<br />

velja s ≤ v + 1, v splošnem pa<br />

s(v − 1) + 1<br />

λ ≥ .<br />

v 2<br />

Transverzalni design TD λ (s, v) je incidenč<strong>na</strong><br />

struktura z bloki velikosti s, v katerem so točke<br />

razdeljene v s skupin velikosti v tako, da sta <strong>po</strong>ljubni<br />

točki v λ blokih, če sta v različnih skupi<strong>na</strong>h, sicer pa<br />

ne obstaja noben blok, ki bi ju vseboval.<br />

Aleksandar Jurišić 667<br />

Aleksandar Jurišić 668<br />

Aleksandar Jurišić 669<br />

Aleksandar Jurišić 670


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Dokaz Izreka 6: Število vseh premic, ki sekajo <strong>eno</strong><br />

premico transverzalnega desig<strong>na</strong> TD 1(s, v) je e<strong>na</strong>ko<br />

(v −1)s in je kvečjemu e<strong>na</strong>ko številu vseh premic brez<br />

začetne premice, tj. v 2 − 1.<br />

V transverzalnem designu TD λ (s, v), λ ≠ 1, pa<br />

štejemo <strong>na</strong> <strong>po</strong>doben <strong>na</strong>čin in <strong>na</strong>to u<strong>po</strong>rabimo še<br />

nee<strong>na</strong>kost med aritmetično in kvadratno sredino<br />

(ki jo lahko izpeljemo iz Jens<strong>eno</strong>ve nee<strong>na</strong>kosti).<br />

Izrek 7. Za praštevilo p obstaja OA(p,p, 1),<br />

za d ∈ N\{1} pa tudi OA(p, (p d −1)/(p−1), p d−2 ).<br />

Dokaz: Naj bo λ = 1. Za K = Z p × Z p in<br />

S = A = Z p definiramo e ij (s) = is + j mod p.<br />

Za λ ≠ 1 pa bomo ekzistenco izpeljali v zadnjem<br />

razdelku iz konstrukcije projektivnega prostora<br />

PG(n,d).<br />

Za DN se prepričaj, da se da vsak OA(n,n, 1) razširiti<br />

za en stolpec do OA(n,n + 1, 1).<br />

Karakterizaciji kod za overjanje<br />

Kode za overjanje z <strong>na</strong>jmanjšimi verjetnostmi prevare<br />

so prav tiste, ki jih dobimo iz ortogo<strong>na</strong>lnih škatel.<br />

Izrek 8. Če je (S, A, K, E) taka koda za overjanje,<br />

da je |A| = v in Pd 0 = Pd 1 = 1/v, <strong>po</strong>tem je<br />

|K| ≥ v 2 .<br />

E<strong>na</strong>čaj velja <strong>na</strong>tanko tedaj, ko obstaja OA(v,s, 1)<br />

in je |S| = s ter p P (K) = 1 v 2 ∀K ∈ K.<br />

Dokaz: Naj bosta s, s ′ ∈ S, s ≠ s ′ .<br />

Za vsak par (a,a ′ ) <strong>po</strong>trdil sledi iz Posledice 3<br />

∑<br />

p K (H) = 1<br />

|A| 2.<br />

Zato je<br />

{H∈K |e H (s)=a, e H (s ′ )=a ′ }<br />

K a,a ′ = {K ∈ K |e K (s) = a, e K (s ′ ) = a ′ } ≠ ∅.<br />

Ker je vseh takih množic v 2 in so disjunktne, velja<br />

|K| ≥ v 2 . V primeru e<strong>na</strong>kosti velja |K a,a ′| = 1 za<br />

vsak par <strong>po</strong>trdil (a,a ′ ), kar <strong>po</strong>meni, da v matriki za<br />

overjanje v stolpcih s in s ′ vsak par <strong>po</strong>trdil <strong>po</strong>javi<br />

<strong>na</strong>tanko enkrat in imamo OA(v,s, 1) za s = |S|.<br />

Aleksandar Jurišić 671<br />

Aleksandar Jurišić 672<br />

Aleksandar Jurišić 673<br />

Aleksandar Jurišić 674<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

V primeru e<strong>na</strong>kosti dobimo iz zgornje e<strong>na</strong>kosti tudi<br />

p K (K) = 1/v 2 za vsak K ∈ K.<br />

Naslednja karakterizacija je še močnejša in jo<br />

predstavljamo brez dokaza.<br />

Izrek 9. Če je (S, A, K, E) taka koda za overjanje,<br />

da je |S|=s, |A|=v in Pd 0 =Pd 1 =1/v, <strong>po</strong>tem je<br />

|K| ≥ s(v − 1) + 1.<br />

E<strong>na</strong>čaj velja <strong>na</strong>tanko tedaj, ko obstaja OA(v,s, λ) z<br />

λ = s(v−1) + 1<br />

1<br />

in p<br />

v 2 P (K) =<br />

∀K ∈ K.<br />

s(v−1) + 1<br />

Ocene entropije<br />

Z Jens<strong>eno</strong>vo nee<strong>na</strong>kostjo lahko izpeljete še <strong>na</strong>slednji<br />

s<strong>po</strong>dnji meji in se prepričate, da ju druga konstrukcija<br />

iz Izreka 7 doseže.<br />

Izrek 10. Če je (S, A, K, E) koda za overjanje,<br />

<strong>po</strong>tem velja<br />

in<br />

log Pd 0 ≥ H(K/M) − H(K)<br />

log Pd 1 ≥ H(K/M 2 ) − H(K/M).<br />

Incidenčne strukture<br />

t-(v, s, λ t) design je<br />

• zbirka s-elementnih <strong>po</strong>dmnožic (blokov)<br />

• množice z v elementi (točkami),<br />

• kjer je vsaka t-element<strong>na</strong> <strong>po</strong>dmnožica vsebova<strong>na</strong> v<br />

<strong>na</strong>tanko λ t blokih.<br />

Če je λ t = 1, imenujemo t-design Steinerjev sistem<br />

in ga oz<strong>na</strong>čimo s S(t,s, v).<br />

Naj bo za i ∈ N, 0 ≤ i ≤ t, in λ i število blokov,<br />

ki vsebujejo neko i-elementno <strong>po</strong>dmnožico točk S.<br />

Potem velja<br />

( ) ( )<br />

s − i v − i<br />

λ i = λ t<br />

t − i t − i<br />

in je število λ i neodvisno od izbire <strong>po</strong>dmnožice S.<br />

Za λ 0 = b in λ 1 = r, kadar je t ≥ 2, velja<br />

bs = rv in r(s − 1) = λ 2(v − 1).<br />

Aleksandar Jurišić 675<br />

Aleksandar Jurišić 676<br />

Aleksandar Jurišić 677<br />

Aleksandar Jurišić 678


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Projektivni prostor PG(d,q) (razsešnosti d <strong>na</strong>d<br />

q) dobimo iz vektorskega prostora [GF(q)] d+1 , tako<br />

da <strong>na</strong>redimo kvocient <strong>po</strong> 1-razsežnih <strong>po</strong>dprostorih.<br />

Projektiv<strong>na</strong> ravni<strong>na</strong> PG(2,q) je incidenč<strong>na</strong><br />

struktura z 1- in 2-dim. <strong>po</strong>dprostori prostora [GF(q)] 3<br />

kot točkami in premicami, kjer je “⊂” incidenč<strong>na</strong><br />

relacija. To je 2-(q 2 + q + 1, q + 1, 1)-design, tj.,<br />

• v = q 2 + q + 1 je število točk (in število premic b),<br />

• vsaka premica ima k = q + 1 točk<br />

(in skozi vsako točko gre r = q + 1 premic),<br />

• vsak par točk leži <strong>na</strong> λ = 1 primicah<br />

(in vsaki premici se sekata v <strong>na</strong>tanko <strong>eno</strong> točki).<br />

Primeri:<br />

1. Projektivno ravnino PG(2, 2) imenujemo<br />

Fano ravni<strong>na</strong> (7 točk in 7 premic).<br />

2. PG(2, 3) lahko skonstruiramo iz 3 × 3 mreže<br />

oziroma afine ravnine AG(2, 3).<br />

3. PG(2, 4) lahko konstruiramo iz Z 21 :<br />

točke = Z 21 in premice = {S + x | x ∈ Z 21 },<br />

kjer je S 5-element<strong>na</strong> <strong>po</strong>dmnožica {3, 6, 7, 12, 14}.<br />

{0, 3, 4, 9, 11} {1, 4, 5, 10, 12} {2, 5, 6, 11, 13}<br />

{3, 6, 7, 12, 14} {4, 7, 8, 13, 15} {5, 8, 9, 14, 16}<br />

{6, 9, 10, 15, 17} {7, 10, 11, 16, 18} {8, 11, 12, 17, 19}<br />

{9, 12, 13, 18, 20} {10, 13, 14, 19, 0} {11, 14, 15, 20, 1}<br />

{12, 15, 16, 0, 2} {13, 16, 17, 1, 3} {14, 17, 18, 2, 4}<br />

{15, 18, 19, 3, 5} {16, 19, 20, 4, 6} {17, 20, 0, 5, 7}<br />

{18, 0, 1, 6, 8} {19, 1, 2, 7, 9} {20, 2, 3, 8, 10}<br />

O<strong>po</strong>zorilo: Podobno lahko Fano ravnino konstruiramo<br />

iz {0, 1, 3} v Z 7 .<br />

Aleksandar Jurišić 679<br />

Aleksandar Jurišić 680<br />

Aleksandar Jurišić 681<br />

Aleksandar Jurišić 682<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Graf Γ = (V, E) je sestavljen iz množice vozlišč V in<br />

družine 2-elementnih <strong>po</strong>dmnožic E, katere elementom<br />

pravimo <strong>po</strong>vezave (tako definiran graf je brez zank<br />

in večkratnih <strong>po</strong>vezav).<br />

Naj bo V (Γ) = {1, ...,n}. Potem je A (n × n)-<br />

razsež<strong>na</strong> matrika sosednosti grafa Γ, če velja<br />

{<br />

1, če je {i,j} ∈ E,<br />

A i,j =<br />

0, sicer<br />

Število θ ∈ IR je last<strong>na</strong> vrednost grafa Γ, če za nek<br />

vektor x ∈ IR n \{0} velja<br />

Ax = θx oziroma (Ax) i = ∑<br />

x j = θx i .<br />

{j,i}∈E<br />

Graf je regularen, če ima vsako vozlišče e<strong>na</strong>ko število<br />

sosedov. Podobni <strong>po</strong>goji so:<br />

(a) sosednji vozlišči imata <strong>na</strong>tanko λ skupnih sosedov,<br />

(b) nesosednji vozlišči imata <strong>na</strong>tanko µ skupnih sosedov.<br />

Graf je krepko regularen, če je regularen ter ima<br />

lastnosti (a) in (b).<br />

Za 2 ≤ s ≤ v je graf blokov transverzalnega desig<strong>na</strong><br />

TD(s, v) (dva bloka sta sosednja, če se sekata) krepko<br />

regularen graf s parametri n = v 2 ,<br />

k = s(v−1), λ = (v−2)+(s−1)(s−2), µ = s(s−1).<br />

in lastnimi vrednostmi s(v−1) 1 , v−s s(v−1) , −s (v−1)(v−s+1) .<br />

Naj bo J (n × n)-razsež<strong>na</strong> matrika samih enic.<br />

Graf <strong>na</strong> n vozliščih je krepko-regularen, če in samo, če<br />

za njegovo matriko sosednjosti A velja<br />

A 2 = kI + λA + µ(J − I − A),<br />

in je AJ = kJ za neka <strong>na</strong>rav<strong>na</strong> števila k, λ in µ.<br />

(Z matematično indukcijo se lahko hitro prepričamo,<br />

da velja (A h ) ij = #sprehodov od i do j dolžine h.)<br />

Od tod sledi, da je e<strong>na</strong> last<strong>na</strong> vrednost k z<br />

večkratnostjo 1, preostali vrednosti, ki ju oz<strong>na</strong>čimo z<br />

σ in τ, pa kore<strong>na</strong> <strong>na</strong>slednje kvadratne e<strong>na</strong>čbe<br />

x 2 − (λ − µ)x + (µ − k) = 0<br />

in zato λ − µ = σ + τ, µ − k = στ.<br />

Število <strong>po</strong>vezav med sosedi in nesosedi nekega vozlišča<br />

krepko-regularnega grafa je e<strong>na</strong>ko<br />

µ(n − 1 − k) = k(k − λ − 1),<br />

torej je za <strong>po</strong>vezan graf, tj. µ ≠ 0<br />

n =<br />

(k − θ)(k − τ)<br />

,<br />

k + θτ<br />

večkratnosti lastnih vrednosti σ in τ pa sta<br />

m σ = (n−1)τ + k (τ + 1)k(k − τ)<br />

=<br />

τ − σ µ(τ − σ)<br />

in m τ = n − 1 − m σ.<br />

Aleksandar Jurišić 683<br />

Aleksandar Jurišić 684<br />

Aleksandar Jurišić 685<br />

Aleksandar Jurišić 686


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Asociativne sheme<br />

Za dani d-terici a in b elementov iz abecede z n ≥ 2<br />

simboli, imamo glede <strong>na</strong> ujemanje d+1 možnih relacij:<br />

lahko sta e<strong>na</strong>ki, lahko se ujemata <strong>na</strong> d−1 mestih, lahko<br />

se ujemata <strong>na</strong> d−2 mestih, . .., ali pa sta različni prav<br />

<strong>na</strong> vseh mestih.<br />

Za dani d-elementni <strong>po</strong>dmnožici A in B množice z n<br />

elementi, kjer je n ≥ 2d, imamo d + 1 možnih relacij:<br />

lahko sta e<strong>na</strong>ki, lahko se sekata v d−1 elementih, lahko<br />

se sekata v d − 2 elementih, . . . , ali pa sta disjunktni.<br />

Zgornja primera, skupaj s sez<strong>na</strong>mom relacij, sta<br />

primera asociativnih shem, ki jih bomo bolj<br />

<strong>na</strong>tančno še definirali.<br />

Prva sta konec tridesetih let prejšnjega stoletja vpeljala<br />

asociativne sheme Bose in Nair za <strong>po</strong>trebe statistike.<br />

Toda Delsarte je <strong>po</strong>kazal, da <strong>na</strong>m lahko služijo<br />

kot <strong>po</strong>vezava med številnimi <strong>po</strong>dročji matematike,<br />

<strong>na</strong>primer teorijo kodiranja in teorijo <strong>na</strong>črtov. Tu so<br />

še<br />

– teorija grup (primitivnost in neprimitivnost),<br />

– liner<strong>na</strong> algebra (spektral<strong>na</strong> teorija),<br />

– metrika,<br />

– študij dualnosti in <strong>po</strong>vezava s teorijo karakterjev,<br />

– reprezentacije in ortogo<strong>na</strong>lni <strong>po</strong>linomi.<br />

Ban<strong>na</strong>i in Ito:<br />

Algebraično kombi<strong>na</strong>toriko se da opisati kot<br />

“študij kombi<strong>na</strong>toričnih objektov<br />

s <strong>po</strong>močjo teorije karakterjev”<br />

ali pa kot<br />

“teorijo grup brez grup”.<br />

Še nekaj zanimivih <strong>po</strong>vezav z asociativnimi shemami:<br />

– teorija vozlov (spin moduli),<br />

– linearno programiranje,<br />

– končne geometrije.<br />

(Simetrič<strong>na</strong>) asociativ<strong>na</strong> shema<br />

z d razredi in n vozlišči<br />

je množica neničelnih, simetričnih, (n × n)-razsežnih<br />

01-matrik I = A 0 ,A 1 , ...,A d , za katere velja:<br />

(a) ∑ d<br />

i=0 A i = J, kjer je J matrika samih enic,<br />

(b) za vsaka i,j ∈ {0, 1, ...,d} je produkt A i A j<br />

linear<strong>na</strong> kombi<strong>na</strong>cija matrik A 0 ,...,A d .<br />

Asociativno shemo bomo oz<strong>na</strong>čevali z A in ji rekli <strong>na</strong><br />

kratko kar shema.<br />

Aleksandar Jurišić 687<br />

Aleksandar Jurišić 688<br />

Aleksandar Jurišić 689<br />

Aleksandar Jurišić 690<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Podprostor n × n razsežnih matrik <strong>na</strong>d IR, ki je<br />

generiran s matrikami A 0 , ...,A d , je zaradi lastnosti<br />

(b) komutativ<strong>na</strong> algebra.<br />

Poz<strong>na</strong>mo jo <strong>po</strong>d im<strong>eno</strong>m Bose-Mesnerjeva<br />

algebra asociativne sheme A in jo oz<strong>na</strong>čimo z M.<br />

Ker je A i simetrič<strong>na</strong> bi<strong>na</strong>r<strong>na</strong> matrika, je matrika<br />

sosednosti nekega (neusmerjenega) grafa Γ i <strong>na</strong> n<br />

vozliščih.<br />

Če sta vozlišči x in y <strong>po</strong>vezani v grafu Γ i , bomo to<br />

simbolično zapisali z x Γ i y in rekli, da sta v i-ti<br />

relaciji.<br />

Iz <strong>po</strong>goja (a) sledi, da za <strong>po</strong>ljubni vozlišči x in y<br />

obstaja <strong>na</strong>tanko en i, da je x Γ i y, ter da graf Γ i , i ≠ 0,<br />

nima zank.<br />

Iz <strong>po</strong>goja (b) pa sledi, da obstajajo take konstante<br />

p h ij , i,j,h ∈ {0, ...,d}, da velja<br />

A i A j =<br />

d∑<br />

p h ijA h . (2)<br />

h=0<br />

Pravimo jim preseč<strong>na</strong> števila asociativne sheme A.<br />

Ker so matrike A i simetrične, med seboj komutirajo.<br />

Zato za vsa preseč<strong>na</strong> števila velja p h ij = p h ji.<br />

Iz (2) pa razberemo kombi<strong>na</strong>torični <strong>po</strong>men presečnih<br />

števil p h ij , ki zagotovi, da so nenegativ<strong>na</strong> cela števila.<br />

Naj bosta x in y <strong>po</strong>ljubni vozlišči, za kateri je x Γ h y.<br />

p h ij = |{z ; z Γ i x in z Γ j y}|. (3)<br />

Torej je Γ i regularen graf stopnje k i := p 0 ii in je<br />

p 0 ij =δ ijk i .<br />

Če štejemo trojice vozlišč (x,y, z), kjer je<br />

x Γ h y, z Γ i x in z Γ j y,<br />

<strong>na</strong> dva različ<strong>na</strong> <strong>na</strong>či<strong>na</strong>, dobimo še zvezo k h p h ij = k j p j ih .<br />

Oglejmo si sedaj nekaj primerov asociativnih shem.<br />

Shema z enim razredom je sestavlje<strong>na</strong> iz identične<br />

matrike in matrike sosednosti grafa, v katerem sta<br />

sosednji vsaki vozlišči, tj. grafa premera 1 oziroma<br />

<strong>po</strong>lnega grafa K n .<br />

Rekli bomo, da gre za trivialno shemo.<br />

Aleksandar Jurišić 691<br />

Aleksandar Jurišić 692<br />

Aleksandar Jurišić 693<br />

Aleksandar Jurišić 694


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Hammingova shema H(d, n)<br />

Naj bosta d in n <strong>po</strong>ljubni <strong>na</strong>ravni števili in<br />

Σ = {0, 1,...,n − 1}.<br />

Vozlišča asociativne sheme H(d,n) so<br />

vse d-terice elementov iz Σ. Naj bo 0 ≤ i ≤ d.<br />

Vozlišči x in y sta v i-ti relaciji, <strong>na</strong>tanko takrat,<br />

ko se razlikujeta v i mestih.<br />

Dobimo asociativno shemo z d razredi in n d vozlišči.<br />

Shema bilinearnih form M d×m(q)<br />

(različica iz linearne algebre) Naj bosta d in m ≥ d<br />

<strong>na</strong>ravni števili ter q <strong>po</strong>tenca nekega praštevila.<br />

Vse (d×m)-razsežne matrike <strong>na</strong>d GF(q) predstavljajo<br />

vozlišča sheme,<br />

vozlišči pa sta v i-ti relaciji, 0 ≤ i ≤ d,<br />

če je rang njune razlike e<strong>na</strong>k i.<br />

Johnsonova shema J(n, d)<br />

Naj bosta n in d <strong>po</strong>ljubni <strong>na</strong>ravni števili, za kateri je<br />

d ≤ n in X <strong>po</strong>ljub<strong>na</strong> množica z n elementi.<br />

Vozlišča asociativne sheme J(n,d) so<br />

vse d-elementne <strong>po</strong>dmnožice množice X.<br />

Vozlišči x in y sta v i-ti relaciji, 0 ≤ i ≤ min{d,n−d},<br />

<strong>na</strong>tanko takrat, ko ima njun presek d − i elementov.<br />

Dobimo asociativno shemo z<br />

min{d,n − d} razredi in ( n<br />

d)<br />

vozlišči.<br />

q-a<strong>na</strong>logija Johnsonove sheme J q(n, d)<br />

(Grassmanova shema)<br />

Za vozlišča vzamemo vse d-razsežne <strong>po</strong>dprostore<br />

n-razsežnega vektorskega prostora V <strong>na</strong>d GF(q).<br />

Podprostora A in B razsežnosti d sta v i-ti relaciji,<br />

0 ≤ i ≤ d, če je dim(A ∩ B) = d − i.<br />

Aleksandar Jurišić 695<br />

Aleksandar Jurišić 696<br />

Aleksandar Jurišić 697<br />

Aleksandar Jurišić 698<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Ciklomatične sheme<br />

Naj bo q <strong>po</strong>tenca praštevila in d delitelj števila q − 1.<br />

Naj bo C 1 <strong>po</strong>dgrupa multiplikativne grupe obsega<br />

GF(q) indeksa d, in <strong>na</strong>j bodo C 1 ,...,C d odseki<br />

<strong>po</strong>dgrupe C 1.<br />

Vozlišča sheme so vsi elementi obsega GF(q).<br />

Vozlišči x in y sta v i-ti relaciji, ko je x − y ∈ C i<br />

(in v 0-ti relaciji, ko je x = y).<br />

Da bi dobili asociativno shemo, mora biti −1 ∈ C 1 ,<br />

tako da so relacije simetrične, tj. 2 | d, če je q lih.<br />

Kako preveriti ali določene matrike<br />

sestavljajo asociativno shemo<br />

Pogoj (b) ni <strong>po</strong>trebno preverjati ne<strong>po</strong>sredno.<br />

Dovolj je, da se prepričamo, da je vrednost izraza<br />

<strong>na</strong> desni <strong>stran</strong>i (3) neodvis<strong>na</strong> od vozlišč<br />

(ne da bi raču<strong>na</strong>li p h ij).<br />

Pomagamo si s simetrijo.<br />

Naj bo X množica vozlišč in Γ 1 , ...,Γ d množica<br />

grafov za katere velja V (Γ i ) = X in katerih matrike<br />

sosednosti, skupaj z identično matriko, ustrezajo<br />

<strong>po</strong>goju (a).<br />

Avtomorfizem te množice grafov je permutacija<br />

vozlišč, ki za vsak graf ohranja sosednost.<br />

Matrike sosednosti grafov Γ 1 ,...,Γ d , skupaj z<br />

identično matriko, tvorijo asociativno shemo, kakor<br />

hitro grupa avtomorfizmov deluje za vsak i tranzitivno<br />

<strong>na</strong> parih vozlišč, ki so sosedni v grafu Γ i<br />

(to je le zadosten <strong>po</strong>goj).<br />

Asociativ<strong>na</strong> shema je P-<strong>po</strong>linomska, če obstajajo<br />

taki <strong>po</strong>linomi p i stopnje i, da velja A i = p i(A 1)<br />

(za neko permutacijo indeksov matrik A i ).<br />

Ekvivalentno je asociativ<strong>na</strong> shema<br />

P-<strong>po</strong>linomska če obstaja taka<br />

permutacija indeksov matrik sosednjosti A i , da<br />

preseč<strong>na</strong> števila zadovoljujejo<br />

trikotniški <strong>po</strong>goj: ∀ h, i, j ∈ {0, ...,d},<br />

preseč<strong>na</strong> števila p h ij = 0 (za<strong>po</strong>redoma p h ij ≠ 0)<br />

kakor hitro je <strong>eno</strong> število izmed h, i, j ≥<br />

(za<strong>po</strong>redoma =) vsoti preostalih dveh.<br />

Zato P-<strong>po</strong>linomski asociativni shemi pravimo tudi<br />

metrič<strong>na</strong>.<br />

Aleksandar Jurišić 699<br />

Aleksandar Jurišić 700<br />

Aleksandar Jurišić 701<br />

Aleksandar Jurišić 702


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Dve bazi, dualnost<br />

Naj bo E 0 ,E 1 , . .., E d množica minimalnih<br />

primitivnih idem<strong>po</strong>tentov Bose-Mesnerjeve algebre<br />

M. Potem velja<br />

E i ◦ E j = 1 d∑<br />

d∑<br />

q h<br />

|X|<br />

ijE h , A i = p i (h)E h<br />

h=0<br />

h=0<br />

in E i = 1 d∑<br />

q i (h)A h (0 ≤ i,j ≤ d),<br />

|X|<br />

h=0<br />

kjer “◦” oz<strong>na</strong>čuje produkt <strong>po</strong> <strong>po</strong>sameznih koordi<strong>na</strong>tah,<br />

takoim<strong>eno</strong>van Schurov produkt.<br />

Za Kreinove parametre oziroma dualne velja<br />

q h ij ≥ 0.<br />

Asociativ<strong>na</strong> shema A je Q-<strong>po</strong>linomska oziroma<br />

kometrič<strong>na</strong><br />

(za <strong>na</strong> dano permutacijo indeksov idem<strong>po</strong>tentov E i ),<br />

če permutacija Kreinovih parameterov q h ij zadovoljuje<br />

trikotniško nee<strong>na</strong>kost.<br />

Ekvitabil<strong>na</strong> particija grafa Γ je taka razdelitev<br />

množice V (Γ) <strong>na</strong> celice C 1 , C 2 ,...,C s , da velja<br />

(a) vsaka celica C i inducira regularen graf,<br />

(b) <strong>po</strong>vezave med vsakim parom celic C i , C j inducirajo<br />

biregularen bipartiten graf.<br />

C 2<br />

C 3<br />

C i<br />

c ii<br />

C 1<br />

C s<br />

C j cij<br />

Primer: 1−skeleton dodekaedra<br />

Particije in lastne vrednosti<br />

0<br />

3 1<br />

2 1 3 4 5<br />

0 1<br />

2 1 1<br />

3 6 6<br />

0 1 2<br />

1 0<br />

1 2 1 1 3<br />

lastne vrednosti: 3 1 , √ 5 3 , 1 5 , 0 4 , −2 4 , − √ 5 3<br />

3<br />

Parametre qij h imenujemo Kreinovi parameteri,<br />

p i(0), ...,p i(d) so lastne vrednosti matrike A i, in<br />

q i (0),...,q i (d) so dualne lastne vrednosti od E i .<br />

Če je P karakteristič<strong>na</strong> matrika particije π, <strong>po</strong>tem je π<br />

ekvitabil<strong>na</strong> če in samo če AP = PB ter če in samo če je<br />

span(col(P)) matrike A(Γ)-invarianten.<br />

1<br />

0 2<br />

3 2 1<br />

3 6<br />

Aleksandar Jurišić 703<br />

Aleksandar Jurišić 704<br />

Aleksandar Jurišić 705<br />

Aleksandar Jurišić 706<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Karakteristič<strong>na</strong> matrika P = P(π) particije π =<br />

{C 1, ...,C s} množice z n elementi je n × s matrika<br />

s stolpci, ki jih predstavljajo karakteristični vektorji<br />

elementov particije π (tj., ij-ti element matrike P je 1<br />

ali 0 glede <strong>na</strong> to ali je i v celici C j ali ne).<br />

Izrek. Particija π množice vozlišč V (G) s<br />

karakteristično matriko P je ekvitabil<strong>na</strong> <strong>na</strong>tanko<br />

tedaj ko obstaja taka s × s matrika B, da velja<br />

A(G)P = PB. Če je π ekvitabil<strong>na</strong>, <strong>po</strong>tem je<br />

B = A(G/π).<br />

Razdalj<strong>na</strong>-regularnost:<br />

Γ graf, diameter d, ∀ x ∈ V (Γ)<br />

razdalj<strong>na</strong> particija {Γ 0 (x), Γ 1 (x),...,Γ d (x)}<br />

1<br />

b<br />

1<br />

c 2 b<br />

2<br />

c i bi<br />

a 1<br />

a2<br />

ai<br />

k<br />

y<br />

x<br />

C<br />

i<br />

(x,y) B (x,y)<br />

i<br />

A i(x,y)<br />

Γ(x)<br />

1<br />

Γ(x)<br />

2 Γ i-1<br />

(x) Γ(x) i<br />

Γ i+1(x)<br />

je ekvitabil<strong>na</strong>, za<strong>po</strong>redje<br />

{b 0 , b 1 , ...,b d−1 ; c 1 ,c 2 ,...,c d } pa je neodvisno od x.<br />

Primer majhnega razdaljno-regularnega grafa:<br />

(anti<strong>po</strong>dalen, tj., biti <strong>na</strong> razdalji diam., je tranzitiv<strong>na</strong> relacija)<br />

u<br />

4<br />

1<br />

2 1<br />

1 4<br />

1 2 0<br />

Zgornja preseč<strong>na</strong> števila so e<strong>na</strong>ka za vsako vozlišče u:<br />

{b 0 , b 1 , b 2 ; c 1 ,c 2 ,,c 3 } = {4, 2, 1; 1, 1, 4}.<br />

To je točkovni graf <strong>po</strong>splošenega četverokotnika<br />

GQ(2, 2) brez enega paralelnega razreda premic.<br />

b<br />

i<br />

a<br />

i<br />

c<br />

i<br />

11. <strong>po</strong>glavje<br />

Sheme za deljenje skrivnosti<br />

(angl. Secret sharing schemes)<br />

• Uvod<br />

• Stopenjske sheme za deljenje skrivnosti<br />

• Strukture dovoljenj<br />

• Vizualne sheme za deljenje skrivnosti<br />

• Formalne definicije<br />

• Informacijska stopnja<br />

• Ekvivalenca stopenjske sheme in OA<br />

Aleksandar Jurišić 707<br />

Aleksandar Jurišić 708<br />

Aleksandar Jurišić 709<br />

Aleksandar Jurišić 710


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Deljenje skrivnosti<br />

Kombi<strong>na</strong>torni problem:<br />

n z<strong>na</strong>nstvenikov dela <strong>na</strong> tajnem projektu,<br />

katerega materiali so spravljeni v trezorju<br />

z več ključavnicami.<br />

Dostop do materialov je dovoljen, le kadar je<br />

prisot<strong>na</strong> veči<strong>na</strong> z<strong>na</strong>nstvenikov (tj. več kot <strong>po</strong>lovica).<br />

Vsak z<strong>na</strong>nstvenik dobi e<strong>na</strong>ko število ključev.<br />

Najmanj koliko ključavnic <strong>po</strong>trebujemo in koliko<br />

ključev mora dobiti vsak z<strong>na</strong>nstvenik<br />

Rešitev: Naj bo k = ⌊(n + 2)/2⌋ in s = ( n<br />

k)<br />

.<br />

Potem imamo s različnih k-elementnih množic<br />

z<strong>na</strong>nstvenikov: G 1 ,G 2 , ...,G s .<br />

Osebe izven skupine G i nimajo vseh ključev. Naj bo<br />

K i množica, ključev, ki jim manjkajo. K i ≠∅, i∈[1..s].<br />

Skupaj s katerimkoli članom skupine G i pa imajo vse<br />

ključe, torej ima vsaka oseba iz G i vse ključe iz K i .<br />

Naj bo i ≠ j. V množici G i obstaja oseba, ki ni v G j .<br />

Ta oseba nima nobenega izmed ključev iz K j , torej je<br />

K i ∩ K j = ∅ in zato #ključev ≥ s.<br />

Pokažimo, da je s = ( n<br />

k)<br />

ključev, tj, k1 , . ..,k s , dovolj<br />

za rešitev tega problema.<br />

Ključe razdelimo tako, da dobijo ključ k i le osebe iz<br />

skupine G i . Torej dobi vsak z<strong>na</strong>nstvenik ( n−1<br />

k−1)<br />

ključev.<br />

Le večinska skupi<strong>na</strong> z<strong>na</strong>nstvenikov ima neprazen<br />

presek z vsemi skupi<strong>na</strong>mi G i , tako da lahko le taka<br />

skupi<strong>na</strong> odpre trezor.<br />

Problem: V banki morajo trije direktorji<br />

odpreti trezor vsak dan, vendar pa ne želijo<br />

zaupati kombi<strong>na</strong>cijo nobenemu <strong>po</strong>samezniku.<br />

Zato bi radi imeli sistem, <strong>po</strong> katerem lahko<br />

odpreta trezor <strong>po</strong>ljub<strong>na</strong> dva med njimi.<br />

Ta problem lahko rešimo z (2, 3)-stopenjsko shemo.<br />

Stopenjske sheme za deljenje skrivnosti sta leta 1979<br />

neodvisno odkrila Blakley in Shamir.<br />

Aleksandar Jurišić 711<br />

Aleksandar Jurišić 712<br />

Aleksandar Jurišić 713<br />

Aleksandar Jurišić 714<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

V splošnem je (t, n)-stopenjska shema za deljenje<br />

skrivnosti K med n oseb (množica P), 2 ≤ t ≤ n,<br />

metoda, za katero velja<br />

• <strong>po</strong>ljubnih t oseb lahko izraču<strong>na</strong> vrednost K,<br />

• nobe<strong>na</strong> skupi<strong>na</strong> s t − 1 osebami (ali manj) ne more<br />

izraču<strong>na</strong>ti prav nobene informacije o vrednosti K.<br />

Varnost te sheme mora biti brez<strong>po</strong>goj<strong>na</strong>, tj. neodvis<strong>na</strong><br />

od kakšnega računsko zahtevnega problema, kot je <strong>na</strong><br />

primer faktorizacija v primeru RSA.<br />

U<strong>po</strong>raba:<br />

• varno več<strong>stran</strong>karsko raču<strong>na</strong>nje<br />

(npr. kriptografske volilne sheme)<br />

• stopenjska kriptografija, večnivojske kontrole<br />

(npr. skupinski <strong>po</strong>dpisi)<br />

• upravljanje in delitev ključev<br />

(npr. key escrow and keyrecovery schemes)<br />

• fi<strong>na</strong>nce in bančništvo (npr. elektronski de<strong>na</strong>r)<br />

Revija Time (4. maj, 1992, str. 13)<br />

V Rusiji imajo (2, 3)-stopenjsko shemo<br />

za kontrolo nuklearnega orožja:<br />

• predsednik,<br />

• obrambni minister,<br />

• obrambno ministrstvo.<br />

(2,2)-stopenjska shema<br />

1. Naj bo K = k 1 k 2 ...k n , k i ∈ Z 2 (skrivnost).<br />

2. Delivec izbere <strong>na</strong>ključ<strong>na</strong> števila<br />

a i ∈ Z 2 , 1 ≤ i ≤ n<br />

in izraču<strong>na</strong> b i = a i + k i mod 2, 1 ≤ i ≤ n.<br />

3. Anita in Bojan dobita za<strong>po</strong>redoma dela<br />

A=a 1a 2 . ..a n in B =b 1b 2 . ..b n za skrivnost K.<br />

Ne Anita ne Bojan ne moreta vsak zase odkriti nobene<br />

informacije o skrivnosti, skupaj pa nju<strong>na</strong> dela A in B<br />

omogočata izračun ključa: K = A + B mod 2.<br />

Aleksandar Jurišić 715<br />

Aleksandar Jurišić 716<br />

Aleksandar Jurišić 717<br />

Aleksandar Jurišić 718


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

(t,t)-stopenjska shema<br />

1. Naj bo K ∈ Z p (skrivnost).<br />

2. Delivec D /∈ P izbere neodvisno <strong>na</strong>ključ<strong>na</strong><br />

števila y 1 , y 2 ,...,y t−1 ∈ Z m , m ≥ r + 1, in<br />

izraču<strong>na</strong><br />

∑t−1<br />

y t = K − y i mod m.<br />

i=1<br />

3. Oseba P i dobi del y i, 1 ≤ i ≤ t.<br />

Osebe P 1 ,...,P i−1 , P i+1 , ...,P t lahko izraču<strong>na</strong>jo<br />

samo K − y i , kar pa jim nič ne <strong>po</strong>maga, saj je bilo<br />

število y i <strong>na</strong>ključno izbrano.<br />

Shamir je skonstruiral tudi splošno (t, n)-stopenjsko<br />

shemo, za <strong>po</strong>ljub<strong>na</strong> <strong>na</strong>rav<strong>na</strong> števila t in n, 2 ≤ t ≤ n:<br />

y<br />

P<br />

P<br />

x<br />

1<br />

P<br />

x<br />

2<br />

1 2<br />

P<br />

3<br />

x<br />

3<br />

P<br />

n<br />

x<br />

n<br />

P<br />

t -1<br />

( x)<br />

x<br />

1. Delivec D /∈ P izbere n različnih elementov<br />

x 1 ,x 2 ,...,x n ∈ Z ∗ p, p ≥ n + 1,<br />

in da x i osebi P i ∈ P (vrednosti x i so javne).<br />

2. Za delitev ključa K delivec D izbere <strong>na</strong>ključno<br />

(neodvisno) t−1 elementov a 1 ,...,a t−1 ∈Z p ter<br />

izraču<strong>na</strong> y i = a(x i ) in ga da osebi P i , 1≤i≤n,<br />

∑t−1<br />

kjer je a(x) = K + a j x j mod p.<br />

j=1<br />

Osebe P 1 , P 2 , ...,P t določijo ključ K iz:<br />

y i = a(x i) = a 0 + a 1x i + · · · + a tx t i,<br />

za 1 ≤ i ≤ t<br />

oziroma če zapišemo sistem e<strong>na</strong>čb v matrični obliki<br />

⎛<br />

⎞ ⎛ ⎞ ⎛ ⎞<br />

1 x 1 x 2 1 . .. x1<br />

t−1 a 0 y 0<br />

⎜ 1 x 2 x 2 2 . .. x2<br />

t−1<br />

⎟ ⎜ a 1<br />

⎟<br />

⎝ . . . ... . ⎠ ⎝ . ⎠ = ⎜ y 1<br />

⎟<br />

⎝ . ⎠ .<br />

1 x t x 2 t . .. xt<br />

t−1 a t−1 y t−1<br />

Koeficienti tvorijo Vandermondovo matriko z<br />

determi<strong>na</strong>nto<br />

∏<br />

det A = (x i − x j ) mod p ≠ 0,<br />

1≤i


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Študirali bomo brez<strong>po</strong>gojno varnost shem za deljenje<br />

skrivnosti (ne<strong>po</strong>oblaščene množice imajo <strong>na</strong> voljo<br />

neomej<strong>eno</strong> računsko moč).<br />

Monotonost: supermnožica <strong>po</strong>oblaščene množica je<br />

tudi <strong>po</strong>oblašče<strong>na</strong>.<br />

Zanimale <strong>na</strong>s bodo samo monotone sheme za deljenje<br />

skrivnosti.<br />

B ∈ Γ je minimal<strong>na</strong> <strong>po</strong>oblašče<strong>na</strong> množica, če je<br />

A /∈ Γ za vsako <strong>po</strong>dmnožico A ⊂ B.<br />

Γ 0 je množica minimalnih <strong>po</strong>oblaščenih množic, baza<br />

za strukturo dovoljenj Γ. Množica<br />

Γ = {C ⊆ P |B ⊆ C, B ∈ Γ 0 }<br />

je <strong>po</strong>tem zaprtje množice Γ 0 in jo bomo oz<strong>na</strong>čili tudi<br />

z cl(Γ 0 ).<br />

Konstrukcija z monotonim vezjem<br />

Elegant<strong>na</strong> konstrukcija Be<strong>na</strong>loha in Leichera <strong>na</strong>s<br />

prepriča, da za vsako (monotono) strukturo dovoljenj<br />

obstaja <strong>po</strong><strong>po</strong>l<strong>na</strong> shema za deljenje skrivnosti.<br />

Najprej bomo zgradili vezje, ki “pre<strong>po</strong>z<strong>na</strong>” strukturo<br />

dovoljenj, <strong>po</strong>tem pa iz njegovega opisa še shemo za<br />

deljenje skivnosti.<br />

Naj bo C (booleansko) vezje z vhodi x 1,...,x n<br />

(ki ustrezajo osebam P 1 , ...,P n ) ter “OR” in “AND”<br />

vrati, tj. vrata “NOT” niso dovolje<strong>na</strong> (vsaka vrata<br />

imajo lahko <strong>po</strong>ljubno število vhodov in le en izhod).<br />

Takemu vezju C bomo rekli monotono vezje.<br />

Za B(x 1,...,x n) := {P i | x i = 1} je struktura<br />

dovoljenj<br />

Γ(C) = {B(x 1 ,...,x n ) | C(x 1 , ...,x n ) = 1}<br />

monoto<strong>na</strong> (to sledi iz monotonosti vezja C).<br />

Aleksandar Jurišić 727<br />

Aleksandar Jurišić 728<br />

Aleksandar Jurišić 729<br />

Aleksandar Jurišić 730<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Ni se težko prepričati, da obstaja bijektiv<strong>na</strong><br />

kores<strong>po</strong>ndenca med monotonimi vezji in boolenskimi<br />

formulami z operatojema ∧ (“AND”), ∨ (“OR”) in<br />

brez negacije.<br />

Naj bo Γ 0 baza za strukturo dovoljenj Γ(C) in<br />

∨ ( ∧ )<br />

P i<br />

B∈Γ0<br />

disjunkt<strong>na</strong> normal<strong>na</strong> forma.<br />

Pi∈B<br />

Primer: Za<br />

Γ 0 = {{P 1,P 2,P 4}, {P 1,P 3, P 4}, {P 2, P 3}} dobimo<br />

(P 1 ∧ P 2 ∧ P 4 ) ∨ (P 1 ∧ P 3 ∧ P 4 ) ∨ (P 2 ∧ P 3 ).<br />

Skupno število vrat v zgornjem vezju je |Γ 0 | + 1.<br />

Sedaj pa <strong>na</strong>j bo C <strong>po</strong>ljubno monotono vezje za<br />

strukturo dovoljenj Γ (ne nujno zgornje vezje) in<br />

K = Z m , m ∈ IN. U<strong>po</strong>rabimo (t, t)-stopenjsko shemo.<br />

a1 a2 K-a 1-a 2-...<br />

b1 b2 K-b 1-b 2-...<br />

c1 c K-c -c -... 1 2<br />

2<br />

AND<br />

AND<br />

K K K<br />

OR<br />

K<br />

AND<br />

Primer: x 1 x 2<br />

x 3 x 4<br />

a 1 a 2<br />

b 2<br />

K-c 1<br />

b<br />

K-a 1 -a 1 K-b -b c<br />

1 2<br />

1<br />

AND 2<br />

AND<br />

AND<br />

K<br />

K<br />

OR<br />

K<br />

K<br />

Drugačen pristop pa <strong>na</strong>m da konjunktiv<strong>na</strong> normal<strong>na</strong><br />

forma:<br />

(P 1 ∨ P 2 ) ∧ (P 1 ∨ P 3 ) ∧ (P 2 ∨ P 3 ) ∧ (P 2 ∨ P 4 ) ∧ (P 3 ∨ P 4 )<br />

• P 1 dobi a 1 in a 2 ,<br />

• P 2 dobi a 1, a 3 in a 4,<br />

• P 3 dobi a 2 , a 3 in K − a 1 − a 2 − a 3 − a 4 ,<br />

• P 4 dobi a 4 in K − a 1 − a 2 − a 3 − a 4 .<br />

Aleksandar Jurišić 731<br />

Aleksandar Jurišić 732<br />

Aleksandar Jurišić 733<br />

Aleksandar Jurišić 734


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Izrek 1. Če je C monotono vezje, <strong>po</strong>tem <strong>na</strong>m<br />

konstrukcija z monotonim vezjem da <strong>po</strong><strong>po</strong>lno<br />

shemo za deljenje skrivnosti, ki realizira<br />

strukturo dovoljenj Γ(C).<br />

Dokaz: Po<strong>po</strong>l<strong>na</strong> indukcija <strong>po</strong> številu vrat vezja C.<br />

Če imamo samo e<strong>na</strong> vrata, <strong>po</strong>tem je trditev očit<strong>na</strong>.<br />

Sedaj pa <strong>na</strong>j bo j > 1 število vrat.<br />

t⋃<br />

Zadnja vrata so “OR”: Γ(C) = Γ(C i ).<br />

Zadnja vrata so “AND”: Γ(C) =<br />

i=1<br />

t⋂<br />

Γ(C i).<br />

i=1<br />

Vizualne sheme za deljenje skrivnosti<br />

sta vpeljala Naor in Shamir leta 1994.<br />

Sliko razdelimo <strong>na</strong> dele (pravzaprav <strong>na</strong> <strong>prosojnic</strong>e)<br />

z belimi in črnimi pikami/kvadrati),<br />

rekonstruiramo pa jo tako, da nekaj <strong>prosojnic</strong><br />

prekrijemo, tj. <strong>na</strong>ložimo <strong>eno</strong> <strong>na</strong> drugo.<br />

Sledimo Stinsonovemu članeku:<br />

Visual Cryptography and Threshold Schemes,<br />

Dr. Dobb’s Jour<strong>na</strong>l, #284, April 1998, pp. 36-43.<br />

Oglejmo si (2, 2)-stopenjsko shemo ( → 0, → 1):<br />

• če prekrijemo “belo” in “belo”<br />

dobimo “belo” (0 + 0 = 0, odlično!),<br />

• če prekrijemo “belo” in “črno”<br />

dobimo “črno” (0 + 1 = 1, odlično!),<br />

• če prekrijemo “črno” in “črno”<br />

dobimo “črno” (1 + 1 = 1, ne gre!!!),<br />

Naš vizualni sistem <strong>na</strong>redi booleanski ali,<br />

mi pa bi <strong>po</strong>trebovali booleanski ekskluzivni ali.<br />

Naor in Shamir sta se domislila, da <strong>na</strong>domestimo<br />

vsak kvadrat <strong>na</strong> sliki z nekaj manjšimi pravokotniki,<br />

ki bodo predstavljali dele skrivnosti. Število manjših<br />

pravokotnikov oz<strong>na</strong>čimo z m.<br />

Če je “sivi<strong>na</strong>” črnih kvadratov (v t prekritih delih)<br />

temnejša kot sivi<strong>na</strong> belih kvadratov, <strong>po</strong>tem se sliko da<br />

pre<strong>po</strong>z<strong>na</strong>ti.<br />

Želimo, da t − 1 ali manj delov ne more ugotoviti<br />

nobene informacije o kvadratu.<br />

Aleksandar Jurišić 735<br />

Aleksandar Jurišić 736<br />

Aleksandar Jurišić 737<br />

Aleksandar Jurišić 738<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

delitev<br />

pixel verjetnost 1. del 2. del skupaj<br />

Dva dela:<br />

Za opis splošne sheme bomo u<strong>po</strong>rabili n × m-razsežni<br />

bi<strong>na</strong>rni matriki M 0 in M 1 .<br />

p=0.5<br />

bL aL<br />

Za vsak kvadrat P, <strong>na</strong>redimo <strong>na</strong>slednje korake.<br />

p=0.5<br />

p=0.5<br />

p=0.5<br />

Kvadrat (angl. piksel) P razdelimo <strong>na</strong> dva<br />

pravokotnika (dva dela), glej zgoraj.<br />

Varnost je zagotovlje<strong>na</strong>, kontrast,<br />

tj. razmerje med črnim in belim, pa je 50%<br />

Žal <strong>po</strong>skus, da bi dela sestavil skupaj ni uspel, tako da<br />

je <strong>po</strong>trebno res izpisati prejšnjo <strong>prosojnic</strong>o in <strong>na</strong>ložiti<br />

en del čez drugega (vendar pa se lahko zgodi, da<br />

vroči<strong>na</strong> pri izpisu deformira <strong>prosojnic</strong>e).<br />

1. Generiraj <strong>na</strong>ključno permutacijo π množice<br />

{1, ...,m}.<br />

2.<br />

Če je P črn kvadrat, <strong>po</strong>tem u<strong>po</strong>rabi permutacijo π<br />

<strong>na</strong>d stolpci matrike M 1 , sicer <strong>na</strong>d stolpci matrike<br />

M 0 . Doblj<strong>eno</strong> matriko oz<strong>na</strong>čimo s T P .<br />

3. Za 1 ≤ i ≤ n, <strong>na</strong>j se i-ta vrstica matrike T P sestoji<br />

iz m pravokotnikov kvadrata P v i-tem delu.<br />

Aleksandar Jurišić 739<br />

Aleksandar Jurišić 740<br />

Aleksandar Jurišić 741<br />

Aleksandar Jurišić 742


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Primeri baznih matrik:<br />

1. (2, 2)-VTS z m = 2 in γ = 1/2<br />

( ) ( )<br />

1 0<br />

1 0<br />

M 0 = , in M<br />

1 0<br />

1 = .<br />

0 1<br />

2. (2, 3)-VTS z m = 3 in γ = 1/3<br />

⎛ ⎞<br />

1 0 0<br />

M 0 = ⎝ 1 0 0 ⎠ , in<br />

⎛ ⎞<br />

1 0 0<br />

M 1 = ⎝ 0 1 0 ⎠.<br />

1 0 0<br />

0 0 1<br />

3. (2, 4)-VTS z m = 6 in γ = 1/3<br />

⎛ ⎞<br />

1 1 1 0 0 0<br />

M 0 = ⎜ 1 1 1 0 0 0<br />

⎟<br />

⎝ 1 1 1 0 0 0 ⎠<br />

1 1 1 0 0 0<br />

in<br />

⎛ ⎞<br />

1 1 1 0 0 0<br />

M 1 = ⎜ 1 0 0 1 1 0<br />

⎟<br />

⎝ 0 1 0 1 0 1 ⎠ .<br />

1 1 1 0 1 1<br />

4. (3, 3)-VTS z m = 4 in γ = 1/4<br />

⎛ ⎞<br />

0 1 1 0<br />

M 0 = ⎝ 0 1 0 1 ⎠<br />

0 0 1 1<br />

in<br />

⎛ ⎞<br />

0 0 1 1<br />

M 1 = ⎝ 0 1 0 1 ⎠.<br />

1 0 0 1<br />

Sedaj vas gotovo že zanima kakšne lastnosti morata<br />

imeti matriki M 0 in M 1 . Predno se <strong>po</strong>globimo v to, si<br />

oglejmo še enkripcijo v primeru (2, 3)-sheme.<br />

V splošnem imamo m! permutacij elementov množice<br />

{1,...,m}. V primeru m = 3 jih imamo torej 6:<br />

π 1 = (1, 2, 3), π 2 = (1, 3, 2), π 3 = (2, 1, 3),<br />

π 4 = (2, 3, 1), π 5 = (3, 1, 2), π 6 = (3, 2, 1).<br />

Naključno permutacijo lahko izberemo <strong>na</strong> primer z<br />

metanjem kocke.<br />

Aleksandar Jurišić 743<br />

Aleksandar Jurišić 744<br />

Aleksandar Jurišić 745<br />

Aleksandar Jurišić 746<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Če hočemo zašifrirati črn kvadrat P in pade 4, <strong>po</strong>tem<br />

konstruiramo N P tako, da vzamemo za<strong>po</strong>redoma<br />

drugi, tretji in prvi stoplec matrike M 1 :<br />

⎛ ⎞<br />

0 0 1<br />

N 1 = ⎝ 1 0 0 ⎠.<br />

0 1 0<br />

Dobimo:<br />

za del s 1 , za del s 2 , za del s 3 .<br />

Naj bo sta x in y dva bi<strong>na</strong>r<strong>na</strong> vektorja in wt(x)<br />

število enic v x, booleanski ali <strong>na</strong>d vektorjema x in y<br />

pa oz<strong>na</strong>čimo z x or y.<br />

Bi<strong>na</strong>rni n × m razsežni matriki M 0 in M 1 , m ≤ n<br />

sta bazni matriki za (t, n)-VTS<br />

(angl. visual threshold scheme) z<br />

• m-kratno ekspanzijo kvadrata in<br />

• relativnim kontrastom γ,<br />

kadar za vsako <strong>po</strong>dmnožico {i 1 , ...,i p } ⊆ {1, ...,n},<br />

kjer je p ≤ t, velja<br />

1. za p = t je razlika velikosti nosilcev booleanskega<br />

ali vrstic i 1 , ...,i p matrik M 1 in M 0 vsaj γm,<br />

2. za p ≤ t−1 sta matriki M 0 in M 1 omejeni <strong>na</strong> vrstice<br />

i 1 , ...,i p , e<strong>na</strong>ki do permutacije stolpcev.<br />

Izrek (Naor in Shamir): Za n ∈ IN\{1}<br />

obstaja (n,n)-VTS z m = 2 n−1 in γ = 2 1−m .<br />

Skica dokaz: Matriki M 0 in M 1 <strong>na</strong>j se za<strong>po</strong>redoma<br />

sestojita iz vseh bi<strong>na</strong>rnih n-teric, ki vsebujejo sodo<br />

število enic in liho število enic.<br />

Izrek (Blundo, De Santis in Stinson):<br />

V vsaki <strong>po</strong><strong>po</strong>lni (2, n)-VTS velja<br />

Ideja: Definirajmo<br />

Potem je<br />

γ ≤ γ ∗ (n) := ⌊n 2 ⌋⌊n 2 ⌋<br />

n(n − 1) .<br />

T = {(i, j,c) | M 1 (i,c) = 1, M 1 (j, c) = 1}.<br />

n(n − 1)γm ≤ |T | ≤ m⌊ n 2 ⌋⌊n 2 ⌋.<br />

Aleksandar Jurišić 747<br />

Aleksandar Jurišić 748<br />

Aleksandar Jurišić 749<br />

Aleksandar Jurišić 750


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Konstrukcija (2,n)-VTS iz 2-(n,k,λ) desig<strong>na</strong> D<br />

S<strong>po</strong>mnimo se, da je število blokov desig<strong>na</strong> D e<strong>na</strong>ko<br />

nr/k = λ(n 2 − n)/(k 2 − k).<br />

Naj bo M 1 incidenč<strong>na</strong> matrika desig<strong>na</strong> D in M 0 (n×b)-<br />

dim. matrika, katere vsako vrstico sestavlja r enic, ki<br />

jim sledi b − r ničel.<br />

Naj bo m = b.<br />

Poljub<strong>na</strong> vrstica matrik M 0 in M 1 vsebuje r enic,<br />

skalarni produkt <strong>po</strong>ljubnih dveh vrstic matrike M 1 je<br />

e<strong>na</strong>k λ. Zato ima nosilec booleanskega ali dveh vrstic<br />

matrike M 1 2r − λ elementov, kontrast pa je e<strong>na</strong>k<br />

γ = 2r − λ − r<br />

b<br />

= r − λ .<br />

b<br />

Izrek (Blundo, De Santis in Stinson):<br />

Če obstaja 2-(n,k,λ)-design, <strong>po</strong>tem obstaja<br />

(2,n)-VTS z ekspanzijo kvadrata m = b in<br />

relativnim kontrastom γ = (r − λ)/b.<br />

Posledica:<br />

Če obstaja 2-(4s − 1, 2s − 1, s − 1)-design,<br />

<strong>po</strong>tem obstaja (2, 4s − 1)-VTS z ekspanzijo<br />

kvadrata m = 4s − 1 in optimalnim relativnim<br />

kontrastom γ ∗ (4s − 1) = s/(4s − 1).<br />

Natančen opis <strong>po</strong>stopka za deljenje skrivnosti z<br />

vizualno kriptografijo, vse do konkretnega (večjega<br />

primera) in Hadamardjevih matrik, si oglejte <strong>na</strong><br />

http://www.cacr.math.uwaterloo.ca/<br />

~dstinson/visual.html<br />

Aleksandar Jurišić 751<br />

Aleksandar Jurišić 752<br />

Aleksandar Jurišić 753<br />

Aleksandar Jurišić 754<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

(n×n)-dim. matrika H z elementi ±1, za katero velja<br />

HH T = nI n<br />

imenujemo Hadamardjeva matrika reda n.<br />

Taka matrika obstaja le, če je n = 1, n = 2 ali pa 4 | n.<br />

Hadamardjeva matrika reda 4s je ekvivalent<strong>na</strong><br />

2-(4s − 1, 2s − 1,s − 1) designu.<br />

Slav<strong>na</strong> Hadamardjeva matrič<strong>na</strong> domneva iz<br />

leta 1893 pravi, da obstaja Hadamardjeva matrika reda<br />

4s za vsak s ∈ IN.<br />

Domneva je bila preverje<strong>na</strong> za vse s ≤ 107.<br />

⎛ ⎞<br />

( )<br />

1 1 1 1<br />

1 1<br />

n = 2 :<br />

n = 4 : ⎜ 1 1 −1 −1<br />

⎟<br />

1 −1 ⎝ 1 −1 1 −1 ⎠<br />

1 −1 −1 1<br />

⎛<br />

⎞<br />

1 1 1 1 1 1 1 1<br />

1 1 −1 −1 −1 1 −1 1<br />

1 1 1 −1 −1 −1 1 −1<br />

n = 8 :<br />

1 −1 1 1 −1 −1 −1 1<br />

1 1 −1 1 1 −1 −1 −1<br />

⎜ 1 −1 1 −1 1 1 −1 −1<br />

⎟<br />

⎝ 1 −1 −1 1 −1 1 1 −1 ⎠<br />

1 −1 −1 −1 1 −1 1 1<br />

Formalne definicije<br />

Distribucijsko (delilno) pravilo je funkcija<br />

f : P ∪ {D} −→ S ∪ K,<br />

ki predstavlja <strong>eno</strong> izmed možnih razdelitev delov iz<br />

množice S ključa K ∈ K osebam iz P<br />

(oseba P i dobi del f(P i )).<br />

Za vsak ključ K ∈ K (<strong>po</strong>razdelitev p K ) <strong>na</strong>j bo F K<br />

množica distribucijskih pravil, ki ustrezajo ključu K,<br />

tj. {f ∈ F |f(D) = K} (<strong>po</strong>razdelitev p FK ) in<br />

F = ⋃ K∈K<br />

F K .<br />

Medtem ko so F K javne, pa je delilec tisti, ki izbere za<br />

ključ K ∈ K distribucijsko pravilo f ∈ F K ter razdeli<br />

dele.<br />

Za B ⊆ P <strong>na</strong>j bo<br />

S(B) = {f| B : f ∈ F},<br />

kjer je f| B : B −→ S in<br />

f| B (P i ) = f(P i ) ∀P i ∈ B,<br />

tj. množica vseh možnih distribucij delov oseb iz B.<br />

Verjetnostno <strong>po</strong>razdelitev <strong>na</strong> S(B) oz<strong>na</strong>čimo s p S(B) .<br />

Aleksandar Jurišić 755<br />

Aleksandar Jurišić 756<br />

Aleksandar Jurišić 757<br />

Aleksandar Jurišić 758


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Naj bo f B ∈ S(B). Potem za vse f B ∈ S(B) in<br />

K ∈ K izraču<strong>na</strong>mo verjetnostno <strong>po</strong>razdelitev z<br />

p S(B) (f B ) = ∑ ∑<br />

p K (K) p FK (f)<br />

K∈K<br />

{f∈F K : f| B =f B }<br />

in<br />

∑<br />

p S(B) (f B /K) = p FK (f).<br />

{f∈F K : f| B =f B }<br />

Naj bo Γ struktura za deljenje skrivnosti in<br />

F = ⋃ K∈K<br />

F K množica distribucijskih pravil.<br />

Potem je F <strong>po</strong><strong>po</strong>l<strong>na</strong> shema za deljenje<br />

skrivnosti za strukturo dovoljenj, če velja<br />

1. za vsako <strong>po</strong>oblašč<strong>eno</strong> množico oseb B ⊆ P ter<br />

<strong>po</strong>ljub<strong>na</strong> distribucijska pravila f ∈ F K in<br />

f ′ ∈ F K ′, za katera je f| B = f ′ | B velja K = K ′<br />

2. za vsako ne<strong>po</strong>oblašč<strong>eno</strong> množico oseb B ⊆ P in<br />

za vsako distribucijo delov f B ∈ S B ,<br />

p K (K/f B ) = p K (K) za vsak K ∈ K.<br />

Prva lastnost pravi, da vsaka delitev delov članom<br />

<strong>po</strong>ljubne <strong>po</strong>oblaščene množice B <strong>na</strong>tanko določi<br />

vrednost ključa.<br />

Druga lastnost pravi, da je distribucija <strong>po</strong>gojne<br />

verjetnosti <strong>na</strong> K pri dani delitvi delov f B članom<br />

ne<strong>po</strong>oblaščene množice B e<strong>na</strong>ka distribuciji verjetnosti<br />

<strong>na</strong> K.<br />

Z drugimi besedami: člani ne<strong>po</strong>oblaščene množice B<br />

nimajo nobene informacije o ključu.<br />

Druga lastnost je zelo <strong>po</strong>dob<strong>na</strong> konceptu <strong>po</strong><strong>po</strong>lne<br />

verjetnosti (od tu ime).<br />

Verjetnost p K (K/f B ) lahko izraču<strong>na</strong>mo iz verjetnostne<br />

<strong>po</strong>razdelitve s <strong>po</strong>močjo Bayesovega izreka:<br />

p K (K/f B ) = p S(B)(f B /K)p K (K)<br />

p S(B) (f B )<br />

(glej primer 11.5, ki je <strong>po</strong>vezan s primerom konjuktivne<br />

normalne forme).<br />

Aleksandar Jurišić 759<br />

Aleksandar Jurišić 760<br />

Aleksandar Jurišić 761<br />

Aleksandar Jurišić 762<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Stopenjske sheme iz OA<br />

Pravokot<strong>na</strong> škatla<br />

OA λ (t,k,v) je taka (λv t × k)-razsež<strong>na</strong> matrika z<br />

v simboli, da se v vsakih t stolpcih vsaka k-terica<br />

simbolov <strong>po</strong>javi <strong>na</strong>tanko λ-krat<br />

(za t = 2 dobimo staro definicijo).<br />

Naj bo M pravokot<strong>na</strong> škatla OA 1 (t,w+1, v) (privzeli<br />

smo torej λ = 1) in A množica njenih simbolov.<br />

Skonstruirali bomo (t,w)-stopenjsko shemo, za katero<br />

je S = K = A.<br />

Stolpce matrike M oz<strong>na</strong>čimo s P ∪ {D}, njene vrstice<br />

pa z v t elementi množice F. Vsaka vrstica f matrike<br />

M ustreza distribucijskemu pravilu, tj.<br />

f(X) = M(f,X)<br />

Potem je za vsak K ∈ K:<br />

za vsak f ∈ F in X ∈ P ∪ {D}.<br />

F K = {f ∈ F | M(f,D) = K}<br />

in zato |K| = v t−1 za vsak K ∈ K. Torej lahko za<br />

K ∈ K in f ∈ F definiramo<br />

p FK (f) = 1<br />

v t−1.<br />

Da bi dokazali, da je F <strong>po</strong><strong>po</strong>l<strong>na</strong> shema za deljenje<br />

skrivnosti, moramo preveriti lastnosti (1) in (2). Prva<br />

lastnost sledi iz definicije pravokotne škatle in λ = 1.<br />

Vrednosti katerihkoli t delov določijo vrstico matrike<br />

M in s tem <strong>na</strong>tanko določen ključ.<br />

Za drugo lastnost moramo <strong>po</strong>kazati, da za vsak K ∈ K<br />

in f B ∈ S(B), kjer je |B| ≤ t − 1.<br />

p S(B) (f B /K)p K (K)<br />

= p K (K)<br />

p S(B) (f B )<br />

oziroma p S(B) (f B /K) = p S(B) (f B ).<br />

Naj bo |B| = i ≤ t − 1. Za vsak K ∈ K imamo<br />

<strong>na</strong>tanko v t−i−1 distribucijskih pravil f ∈ F K , za<br />

katera je f| B = f B (saj je i + 1 simbolov v določenih<br />

i + 1 stolpcih v <strong>na</strong>tanko v t−i−1 vrsticah matrike M).<br />

Ker je |F K | = v t−1 , velja<br />

p S(B) (f B /K) = 1 v i za vsak f B in vsak K.<br />

Sedaj ni več težko izraču<strong>na</strong>ti za vsak K ∈ K<br />

p S(B) (f B ) = ∑ K∈K<br />

p S(B) (f B /K)p K (K)<br />

= v −i ∑ K∈K<br />

p K (K) = v −i = p S(B) (f B /K).<br />

Aleksandar Jurišić 763<br />

Aleksandar Jurišić 764<br />

Aleksandar Jurišić 765<br />

Aleksandar Jurišić 766


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Shamirjeva shema je <strong>po</strong>seben primer te konstrukcije.<br />

Naj bodo x 0=0, x 1, ...,x w različni elementi<br />

končnega obsega GF(q).<br />

Če za <strong>po</strong>ljubno t-terico (a 0 , ...,a t−1 ) ∈ (GF(q)) t<br />

definiramo<br />

∑t−1<br />

M((a 0 , ...,a t−1 ), i) = a j (x i ) j ,<br />

dobimo ravno Shamirjevo shemo.<br />

j=0<br />

Ekvivalenca stopenjske sheme in OA<br />

Sedaj pa <strong>po</strong>kažimo še obrat (da lahko iz določene<br />

stopenjske sheme skonstruiramo pravokotno škatlo).<br />

Izrek 2. Naj bo M matrika, katere vrstice in stolpci<br />

so oz<strong>na</strong>čeni za<strong>po</strong>redoma z elementi iz F in elementi<br />

iz P ∪ {D} ter za katero je M(f, X) = f(X). Potem<br />

je M pravokot<strong>na</strong> škatla OA 1 (t,w + 1,v) z v = |S|.<br />

Dokaz tega izreka razbijemo <strong>na</strong> več korakov.<br />

Iz lastnost (2) sledi <strong>na</strong>slednji rezultat.<br />

Lema 3. Naj bo F množica distribucijskih pravil<br />

(t,w)-stopenjske sheme in B ⊆ P, |B| = t − 1. Za<br />

f ∈ F in za vsak ključ K ∈ K obstaja distribucijsko<br />

pravilo g B ∈ F K, za katerega je g K| B = f| B.<br />

Lema 4. Za (t,w)-stopenjsko shemo je |S| ≥ |K.<br />

Dokaz: Naj bo P ∈ P\{B}, kjer je B ⊆ P in<br />

|B| = t − 1. Iz lastnosti (1) sledi g K (P) = g K ′(P) za<br />

K ≠ K ′ , kjer smo g definirali v prejšnji lemi.<br />

Potem je funkcija<br />

θ : K −→ S, s pravilom θ(K) = g K (P)<br />

injektiv<strong>na</strong> in trditev sledi.<br />

Aleksandar Jurišić 767<br />

Aleksandar Jurišić 768<br />

Aleksandar Jurišić 769<br />

Aleksandar Jurišić 770<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Odslej privzemimo |S| = |K|, se pravi, da je funkcija<br />

θ bijekcija (in lahko privzamemo kar S = K) iz česar<br />

sledi:<br />

Lema 5. Naj bo F množica distribucijskih pravil<br />

(t,w)-stopenjske sheme z |S| = |K|.<br />

Naj bo B ⊆ P in |B| = t − 1. Če je f, g ∈ F K za<br />

nek ključ K in je f| B = g| B , <strong>po</strong>tem je f = g.<br />

Posledica 6. V <strong>po</strong>ljubnih t stolpcih matrike M<br />

se <strong>po</strong>javi vsaka t-terica v <strong>na</strong>jveč eni vrstici.<br />

Dokaz: Naj bo C ⊆ P ∪ {D}, |C| = t.<br />

Če je D ∈ C, <strong>po</strong>tem rezultat sledi iz Leme 5.<br />

Sedaj pa <strong>na</strong>j bo C ⊆ P in f| C = g| C.<br />

Ker je |C| = t iz lastnosti (1) sledi f(D) = g(D).<br />

Naj bo C ′ = C ∪ {D}\{X} za nek X ∈ C.<br />

Iz prvega primera sledi f = g.<br />

Lema 7. Če je 1 ≤ i ≤ t, <strong>po</strong>tem se v <strong>po</strong>ljubnih<br />

i-tih stolpcih matrike M vsaka i-terica elementov<br />

<strong>po</strong>javi vsaj v eni vrstici.<br />

Dokaz: Naj bo C ⊆ P, |C| = i. Dokazovali bomo<br />

z indukcijo <strong>na</strong> i. Če je i = 1, vzemimo C = {P }.<br />

Naj bo B ⊆ P, |B| = t − 1 in B ∩ C = ∅. Potem<br />

u<strong>po</strong>rabimo Lemo 4.<br />

Sedaj pa <strong>na</strong>j bo i ≤ 2. Ločimo dva primera glede <strong>na</strong><br />

to ali je D ∈ C. Če je C ⊆ P. Potem je P ∈ C in<br />

C ′ ⊆ P, kjer je |C ′ | = t − i in C ∩ C ′ = ∅.<br />

Po indukcijski pred<strong>po</strong>stavki je vsaka (i − 1)-terica v<br />

stolpcih iz C ′′ = C\{P }. U<strong>po</strong>rabimo Lemo 4 <strong>na</strong><br />

B = C ′ ∪ C ′′ .<br />

V drugem primeru, ko je D ∈ C <strong>po</strong>stopamo <strong>po</strong>dobno:<br />

<strong>na</strong>j bo C ′ ⊂ P, kjer je |C ′ | = t − i in C ∩ C ′ = ∅. Po<br />

indukcijski pred<strong>po</strong>stavki se vsaka (i − 1)-terica <strong>po</strong>javi<br />

v stolpcih iz C ′′ = C\{D}. Končno u<strong>po</strong>rabimo Lemo<br />

2 za B = C ′ ∪ C ′′ .<br />

Izrek 2 sedaj sledi iz Posledice 6 in Leme 7.<br />

Aleksandar Jurišić 771<br />

Aleksandar Jurišić 772<br />

Aleksandar Jurišić 773<br />

Aleksandar Jurišić 774


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

21. <strong>po</strong>glavje<br />

Informacijska mera<br />

Radi bi ocenili učinkovitost dobljenih shem.<br />

Informacijska mera za osebo P i je<br />

ρ i = log 2 |K|/ log 2 |S(P i )|,<br />

kjer so S(P i ) možni deli za osebo P i .<br />

Informacijska mera sheme pa je<br />

ρ = max<br />

1≤i≤n ρ i.<br />

Izrek 8. Naj bo C monotono vezje. Potem<br />

obstaja <strong>po</strong><strong>po</strong>l<strong>na</strong> shema za deljenje skivnosti, ki<br />

realizira strukturo dovoljenj Γ(C) z informacijsko<br />

mero<br />

ρ = max{1/r i | 1 ≤ i ≤ n},<br />

kjer r i oz<strong>na</strong>čuje število vhodnih žic vezja C z<br />

delom x i .<br />

Izrek 9. Za vsako <strong>po</strong><strong>po</strong>lno shemo za deljenje<br />

skrivnosti, ki realizira strukturo dovoljenj Γ, je<br />

ρ ≤ 1.<br />

Če velja e<strong>na</strong>čaj, pravimo, da je shema ideal<strong>na</strong>.<br />

Brickellova konstrukcija z vektorskim prostorom <strong>na</strong>m<br />

da idealno shemo (to in dokaze zgornjih izrekov<br />

izpustimo).<br />

Teorija kodiranja<br />

• Uvod<br />

• Enostavnejše kode za odpravljanje <strong>na</strong>pak<br />

• Glavni mejniki teorije kodiranja<br />

• Singletonova meja<br />

• Linearne kode<br />

• Odkodiranje linearnih kod<br />

Slovenski uvod:<br />

Sandi Klavžar, O teoriji kodiranja, linearnih kodah in<br />

slikah z Marsa, OMF 45 (1998), 97-106.<br />

in pa R. Jaminik, Elementi teorije informacije, ...<br />

Na začetku so bili raču<strong>na</strong>lniški programi dovolj<br />

<strong>eno</strong>stavni, tako da so tehnične <strong>na</strong>pake (<strong>po</strong><strong>na</strong>vadi je<br />

od<strong>po</strong>vedala elektronka) hitro <strong>po</strong>stale očitne.<br />

Z razvojem strojne opreme so <strong>po</strong>stajali programi vse<br />

obsežnejši in bolj zapleteni, s tem pa je <strong>po</strong>stalo upanje,<br />

da bi lahko hitro opazili majhne <strong>na</strong>pake, ki spremenijo<br />

delovanje <strong>na</strong>prave, zanemarljivo in zato tudi res<strong>na</strong><br />

skrb.<br />

Možnost, da se <strong>na</strong>m izmuzne kakš<strong>na</strong> <strong>na</strong>paka, je vse<br />

večja tudi zato, ker so elektronska vezja iz dneva v<br />

dan manjša, raču<strong>na</strong>lniki pa vse hitrejši.<br />

Aleksandar Jurišić 775<br />

Aleksandar Jurišić 776<br />

Aleksandar Jurišić 777<br />

Aleksandar Jurišić 778<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tudi če je možnost <strong>na</strong>pake e<strong>na</strong> sama milijardinka<br />

(npr. industrijski standard za trde diske je e<strong>na</strong> <strong>na</strong>paka<br />

<strong>na</strong> 10 milijard bitov), se bo 2GHz raču<strong>na</strong>lnik, zmotil<br />

približno 2×/s.<br />

Glede <strong>na</strong> količino <strong>po</strong>datkov, ki jih obdelujemo<br />

dandanes, je to pravšnji recept za vsakodnevne<br />

nevšečnosti.<br />

V času informacijske tehnologije<br />

(zgoščenke, GSM telefoni, bančne kartice, internet)<br />

se vsi dobro zavedamo <strong>po</strong>me<strong>na</strong> hitrega in <strong>na</strong>tančnega<br />

pr<strong>eno</strong>sa, obdelovanja in hranjenja informacij.<br />

Še tako <strong>po</strong><strong>po</strong>lne <strong>na</strong>prave delajo <strong>na</strong>pake, le-te<br />

pa lahko hitro spremenijo sicer izredno koristno<br />

programsko in strojno opremo v ničvredno ali celo<br />

nevarno orodje.<br />

Dolgo časa so se ljudje trudili izdelati raču<strong>na</strong>lnike in<br />

<strong>po</strong>mnilnike, ki bodo <strong>na</strong>redili oziroma vsebovali, kar se<br />

da malo <strong>na</strong>pak (cene izdelkov pa so se višale).<br />

Potem pa so se domislili, da bi raje raču<strong>na</strong>lnike same<br />

<strong>na</strong>učili iskati in odpravljati <strong>na</strong>pake. Raziskovalci so<br />

<strong>na</strong>šli odgovor v kodah za odpravljanje <strong>na</strong>pak.<br />

Koda je skupi<strong>na</strong> simbolov, ki predstavlja informacijo.<br />

Kode obstajajo že tisočletja. To so npr.<br />

• hieroglifi,<br />

• grška abeceda,<br />

• rimske številke ali pa<br />

• genetska koda za sestavljanje ribonukleinskih kislin.<br />

Nastale so za različne <strong>po</strong>trebe:<br />

za zapis govora ali glasbe, Morsejeva abeceda<br />

za pr<strong>eno</strong>s informacij, za shranjevanje <strong>po</strong>datkov itd.<br />

Kode za <strong>po</strong>pravljanje <strong>na</strong>pak<br />

(angl. error correcting codes)<br />

<strong>na</strong>m omogočajo, da <strong>po</strong>pravljamo <strong>na</strong>ključne <strong>na</strong>pake,<br />

ki se <strong>po</strong>javijo ob motnjah pri pr<strong>eno</strong>su oziroma<br />

hranjenju (bi<strong>na</strong>rnih) <strong>po</strong>datkov.<br />

1<br />

digitalni<br />

konv.<br />

2 kode za 3<br />

odpravo<br />

<strong>na</strong>pak<br />

modul.<br />

kodiranje<br />

praske<br />

motnje<br />

3<br />

modul.<br />

dekodir.<br />

2 kode za 1<br />

odpravo a<strong>na</strong>logni<br />

<strong>na</strong>pak konv.<br />

Claude Shannon je <strong>po</strong>stavil teoretične osnove<br />

teorije informacij in zanesljivega pr<strong>eno</strong>sa digitalnih<br />

<strong>po</strong>datkov kmalu <strong>po</strong> koncu druge svetovne vojne.<br />

Aleksandar Jurišić 779<br />

Aleksandar Jurišić 780<br />

Aleksandar Jurišić 781<br />

Aleksandar Jurišić 782


5<br />

2<br />

3<br />

1<br />

7<br />

4<br />

6<br />

5<br />

2<br />

3<br />

1<br />

7<br />

4<br />

6<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Za <strong>po</strong>večanje zanesljivosti pr<strong>eno</strong>sa in obdelave<br />

informacij smo dolgo časa u<strong>po</strong>rabljali kontrolne bite<br />

(angl. parity-check bits), kot npr. pri številki bančnega<br />

čeka, ki pa so služili le za odkrivanje <strong>na</strong>pak.<br />

Richard Hamming je leta 1948 izumil metodo za<br />

<strong>po</strong>pravljanje ene <strong>na</strong>pake in odkrivanja dveh <strong>na</strong>pak.<br />

Ko je v<strong>na</strong>šal v raču<strong>na</strong>lnik programe s <strong>po</strong>močjo luknjača<br />

kartic in mu je <strong>na</strong>to raču<strong>na</strong>lnik večkrat zavrnil paket<br />

kartic zaradi <strong>na</strong>pak, se je zamislil:<br />

“Če z<strong>na</strong> raču<strong>na</strong>lnik sam odkriti <strong>na</strong>pako,<br />

zakaj ne z<strong>na</strong> <strong>na</strong>jti tudi njenega mesta<br />

in jo odpraviti.”<br />

Enostavnejše kode za odpravljanje <strong>na</strong>pak<br />

Bistvo vseh metod za odpravljanja <strong>na</strong>pak je<br />

dodajanje kontrolnih bitov. Naj<strong>eno</strong>stavnejša koda za<br />

odpravljanje <strong>na</strong>pak je zasnova<strong>na</strong> <strong>na</strong> <strong>po</strong><strong>na</strong>vljanju.<br />

Na primer, če pričakujemo, da pri pr<strong>eno</strong>su ne bo<br />

prišlo do več kot ene same <strong>na</strong>pake, <strong>po</strong>tem je dovolj,<br />

da <strong>po</strong>novimo vsak bit 3× in pri sprejemu u<strong>po</strong>rabimo<br />

“večinsko pravilo”<br />

Primer: 1101 zakodiramo v 111 111 000 111, če<br />

prejmemo 111 011 000 111, <strong>po</strong>pravimo s<strong>po</strong>ročilo v 111<br />

111 000 111 in ga končno še odkodiramo v 1101.<br />

V splošnem lahko odpravimo<br />

n <strong>na</strong>pak z (2n + 1)-kratnim <strong>po</strong><strong>na</strong>vljanjem<br />

in u<strong>po</strong>rabo večinskega pravila.<br />

Toda ta metoda je preveč <strong>po</strong>trat<strong>na</strong>.<br />

V času, ko si želimo hitrega pr<strong>eno</strong>sa<br />

čim večje količine <strong>po</strong>datkov,<br />

je to <strong>po</strong><strong>po</strong>lnoma nesprejemljivo.<br />

Namesto tega si želimo dodati<br />

manjše število kontrolnih bitov,<br />

ki bodo ravno tako ali pa še bolj učinkoviti.<br />

Oglejmo si <strong>na</strong>jpreprostejši primer<br />

Hammingove kode za odpravljanje <strong>na</strong>pak:<br />

0<br />

1<br />

1<br />

1<br />

1<br />

0 0<br />

0<br />

1<br />

1<br />

1<br />

1<br />

1 0<br />

Zelo kratko “simfonijo” 1101 spravimo za<strong>po</strong>redoma <strong>na</strong><br />

rjavo (1), zel<strong>eno</strong> (2), oranžno (3) in vijoličasto (4) <strong>po</strong>lje,<br />

preostala <strong>po</strong>lja pa do<strong>po</strong>lnimo tako, da bo v vsakem<br />

krogu vsota števil soda.<br />

Dobimo 1101001, kjer zadnja tri mesta predstavljajo<br />

za<strong>po</strong>redoma rum<strong>eno</strong> (5), rdeče (6) in modro (7) <strong>po</strong>lje.<br />

Aleksandar Jurišić 783<br />

Aleksandar Jurišić 784<br />

Aleksandar Jurišić 785<br />

Aleksandar Jurišić 786<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Naštejmo vse kodne besede, ki jih dobimo <strong>na</strong> ta <strong>na</strong>čin:<br />

0000000, 0001011, 0010110, 0011101, 0100101, 0101110, 0110011, 0111000, 1000111, 1001100, 1010001,<br />

1011010, 1100010, 1101001, 1110100, 1111111.<br />

0<br />

1<br />

1<br />

1<br />

1<br />

0 0<br />

0<br />

1<br />

1<br />

1<br />

1<br />

1 0<br />

Recimo, da je prišlo do ene same <strong>na</strong>pake in da smo<br />

prejeli vektor 1111001.<br />

Potem bo prejemnik lahko ugotovil, da je <strong>na</strong>paka v<br />

rumenem in rdečem krogu, ne pa v modrem, kar<br />

<strong>po</strong>meni, da je <strong>po</strong>trebno <strong>po</strong>praviti oranžno (3) <strong>po</strong>lje.<br />

Ni se težko prepričati, da je možno <strong>na</strong> tak<br />

<strong>na</strong>čin odpraviti <strong>na</strong>pako <strong>na</strong> <strong>po</strong>ljubnem bitu (tudi<br />

kontrolnem), pri <strong>po</strong>goju, da je bila to edi<strong>na</strong> <strong>na</strong>paka.<br />

S Hammingovo kodo <strong>na</strong>m je uspelo zmanjšati število<br />

kontrolnih bitov z 8 <strong>na</strong> 3, tj. dobili smo kodo z<br />

informacijsko stopnjo 4/7 <strong>na</strong>mesto 4/12=1/3.<br />

Zgornjo Hammingovo kodo lahko seveda <strong>po</strong>splošimo.<br />

Običajno to storimo z nekaj linearne algebre (matrike)<br />

Hammingova koda odkrije, da je prišlo do <strong>na</strong>pake pri<br />

pr<strong>eno</strong>su tudi kadar je prišlo do dveh <strong>na</strong>pak, saj ne<br />

morejo vsi trije krogi vsebovati obeh <strong>po</strong>lj <strong>na</strong> katerih je<br />

prišlo do <strong>na</strong>pake (če pa <strong>na</strong> dveh mestih zaz<strong>na</strong>mo samo<br />

izbris, <strong>po</strong>tem seveda z<strong>na</strong>mo ti mesti tudi <strong>po</strong>praviti -<br />

DN).<br />

Če bi tekst samo <strong>po</strong>dvojili, bi dobili kodo z<br />

informacijsko stopnjo 1/2, ki pa lahko odkriva samo<br />

samostojne <strong>na</strong>pake, ne more pa jih odpravljati.<br />

V grobem lahko rečemo, da je cilj teorije kodiranja,<br />

<strong>na</strong>jti smiselen kompromis med metodo s<br />

kontrolnimi biti in metodo s <strong>po</strong><strong>na</strong>vljanji.<br />

Hammingova koda predstavlja prvi korak v to smer.<br />

Glavni mejniki teorije kodiranja<br />

1947-48: začetki teorije informacij: z<strong>na</strong>menita<br />

izreka o “Source Coding” in pa<br />

“Channel Capacity” (C. Shannon)<br />

1949-50: odkritje prvih kod za odpravljanje <strong>na</strong>pak<br />

(M. Golay, R. Hamming).<br />

1959-60: odkritje BCH-kod (R. Bose,<br />

D. Ray-Chaudhuri, A. Hochquenghem).<br />

1967: Viterby algoritm za odkodiranje<br />

konvolucijskih kod.<br />

1993: razvoj turbo kod<br />

(C. Berrou, A. Glavieux, P. Titimajshima).<br />

Aleksandar Jurišić 787<br />

Aleksandar Jurišić 788<br />

Aleksandar Jurišić 789<br />

Aleksandar Jurišić 790


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Teorija kodiranja predstavlja varnostno mrežo,<br />

svojevrstno matematično zavarovanje pred muhastim<br />

materialnim svetom, v katerem živimo.<br />

Tehnologija kod za <strong>po</strong>pravljanje <strong>na</strong>pak je danes tako<br />

razširje<strong>na</strong> kot zgoščenke (CD).<br />

E<strong>na</strong>ko tehnologijo u<strong>po</strong>rabljajo za komunikacijo tudi<br />

vesoljske ladje in sonde, ki raziskujejo <strong>na</strong>še osončje.<br />

Kode za odpravljanje <strong>na</strong>pak omogočajo, da pridejo<br />

<strong>na</strong> Zemljo, kljub elektromagnetnim motnjam,<br />

kristalno jasni <strong>po</strong>snetki oddaljenih planetov,<br />

pri tem pa za pr<strong>eno</strong>s <strong>po</strong>rabijo<br />

manj energije kot hladilnikova žarnica.<br />

Reed-Solomonove kode doživljajo vrhunec s svojo<br />

u<strong>po</strong>rabo <strong>na</strong> <strong>po</strong>dročju hranjenja <strong>po</strong>datkov (CD, DVD)<br />

ter pre<strong>na</strong>šanja <strong>po</strong>datkov v <strong>na</strong>šem osončju<br />

(te dni bo sonda Cassini vstopila v Saturnovo orbito<br />

in od tam <strong>po</strong>šiljala slike <strong>na</strong> Zemljo).<br />

Koda je <strong>po</strong>dmnožica nekega prostora z razdaljo, njeni<br />

elementi pa so kodne besede. Razdalja kode je<br />

<strong>na</strong>jmanjša razdalja med različnimi kodnimi besedami.<br />

Običajno razbijemo dano s<strong>po</strong>ročilo <strong>na</strong> bloke fiksne<br />

dolžine (n), ki jih <strong>na</strong>to <strong>po</strong>vežemo s kodnimi besedami<br />

z neko bijektivno kores<strong>po</strong>ndenco. V tem primeru<br />

rečemo, da gre za bločne kode dolžine n.<br />

Omogoča <strong>na</strong>m, da <strong>po</strong>slušamo priljubljeni<br />

Mozartov ali Madonnin CD<br />

brez kakršnih koli motenj,<br />

četudi <strong>na</strong>m ga mačka prav <strong>po</strong>št<strong>eno</strong> spraska.<br />

Gre torej za<br />

šepetanje,<br />

ki mora pre<strong>po</strong>tovati<br />

več milijard km.<br />

Naj<strong>po</strong>gosteje si za prostor izberemo množico vseh<br />

n-teric s simboli iz neke končne množice F,<br />

im<strong>eno</strong>vane tudi abeceda:<br />

F n = {(a 0 , a 1 , ...,a n−1 ) | a i ∈ F, i = 0, 1,...,n − 1}.<br />

Razdalja med dvema n-tericama je število mest, <strong>na</strong><br />

katerih se razlikujeta.<br />

Aleksandar Jurišić 791<br />

Aleksandar Jurišić 792<br />

Aleksandar Jurišić 793<br />

Aleksandar Jurišić 794<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Pri kodi <strong>na</strong>s <strong>na</strong>jbolj zanima, koliko <strong>na</strong>pak lahko<br />

odpravimo, glede <strong>na</strong> to koliko kontrolnih bitov smo<br />

dodali osnovni informaciji.<br />

(Singletonova meja)<br />

Naj bo C bloč<strong>na</strong> koda dolžine n <strong>na</strong>d abecedo s<br />

q elementi in d nje<strong>na</strong> razdalja. Potem velja<br />

|C| ≤ q n−d+1 .<br />

Proof. Naj bo C ′ koda, ki jo konstruiramo iz kode C<br />

tako, da izbrišemo skupino katerihkoli d − 1 koordi<strong>na</strong>t<br />

v vseh kodnih besedah.<br />

Ker je razdalja kode C e<strong>na</strong>ka d, velja |C| = |C ′ |.<br />

Dolži<strong>na</strong> kode C ′ pa je n − d + 1, zato ima <strong>na</strong>jveč<br />

q n−d+1 kodnih besed, kar smo želeli <strong>po</strong>kazati.<br />

Če so s<strong>po</strong>ročila vse možne k-terice <strong>na</strong>d abecedo<br />

s q elementi ter obstaja bijekcija med s<strong>po</strong>ročili ter<br />

kodnimi besedami, je |C| = q k in pravimo, da gre<br />

za (n, k)-kodo.<br />

V tem primeru se Singletonova meja prevede<br />

v zgornjo mejo za razdaljo kode:<br />

d ≤ n − k + 1. (4)<br />

Naj bo k-terica x informacija, ki jo Anita zakodira v<br />

n-terico y ter <strong>po</strong>šlje <strong>po</strong> nekem ka<strong>na</strong>lu.<br />

Bojan prejme n-terico r, ki ni nujno e<strong>na</strong>ka y, in jo<br />

odkodira <strong>po</strong> principu “<strong>na</strong>jbližjega soseda”, tj.<br />

<strong>na</strong>jprej <strong>po</strong>išče kodno besedo y ′ , ki je <strong>na</strong>jbližja n-terici<br />

r in <strong>na</strong>to izraču<strong>na</strong> k-terico x ′ , ki se zakodira v y ′ ,<br />

v upanju, da je y = y ′ in x = x ′ .<br />

V tem primeru ima koda, ki odpravi t <strong>na</strong>pak, razdaljo<br />

d ≥ 2t+1, saj morajo biti krogle s središčem v kodnih<br />

besedah in radijem t disjunktne.<br />

Če torej pride pri pr<strong>eno</strong>su do <strong>na</strong>jveč (d − 1)/2 <strong>na</strong>pak,<br />

tj. d ≥ 2t + 1, se <strong>na</strong>m <strong>po</strong> principu <strong>na</strong>jbližjega soseda<br />

v resnicu <strong>po</strong>sreči <strong>po</strong>praviti vse <strong>na</strong>pake.<br />

Zato iz nee<strong>na</strong>kosti (4) sledi, da ima taka koda<br />

vsaj 2t kontrolnih bitov, tj.<br />

⌊ n − k<br />

⌋<br />

t ≤ . (5)<br />

2<br />

Trditev: (n,k)-koda odpravi <strong>po</strong> principu<br />

<strong>na</strong>jbližjega soseda kvečjemu ⌊(n − k)/2⌋ <strong>na</strong>pak.<br />

Aleksandar Jurišić 795<br />

Aleksandar Jurišić 796<br />

Aleksandar Jurišić 797<br />

Aleksandar Jurišić 798


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Naj bosta n in k <strong>po</strong>zitivni števili, k ≤ n.<br />

linear<strong>na</strong> (n, k)-koda C<br />

je k-razsežni vektorski <strong>po</strong>dprostor v F n .<br />

Za k × n razsežno matriko pravimo, da generira<br />

linearno codo C, če so njene vrstice baza za C.<br />

Za vektorja x, y ∈ F n je Hammingova razdalja,<br />

število kordi<strong>na</strong>t, v katerih se x in y razlikujeta.<br />

Oz<strong>na</strong>čimo jo z d(x, y),<br />

Razdalja linearne (n,k)-kode C je<br />

d(C) = min{d(x, y) |x, y ∈ C, x ≠ y}.<br />

Oz<strong>na</strong>ka: (n, k, d)-koda.<br />

Odkodiranje v praksi<br />

Če bi Bojan primerjal dobljeni vektor r z vsako kodno<br />

besedo, bi morali opraviti eks<strong>po</strong>nentno število operacij<br />

(|C| = 2 k ) glede <strong>na</strong> k (to ni <strong>po</strong>linomski algoritem).<br />

Nadzor<strong>na</strong> matrika linearne (n,k,d)-kode C je<br />

(n−k) × n-dim. bi<strong>na</strong>r<strong>na</strong> matrika H, ki generira<br />

ortogo<strong>na</strong>lni komplementa <strong>po</strong>dprostora C.<br />

Le-tega oz<strong>na</strong>čimo s C ⊥ in<br />

ga imenujemo dual<strong>na</strong> koda kode C.<br />

Za dani vektor r ∈ F n <strong>na</strong>j bo (n − k)-terica Hr T<br />

njegov sindrom.<br />

Izrek: Naj bo C linear<strong>na</strong> (n,k)-koda, ki jo<br />

generira matrika G, nje<strong>na</strong> <strong>na</strong>dzor<strong>na</strong> matrika pa H.<br />

Potem za x ∈ F n velja<br />

x ∈ C, tj. x je kod<strong>na</strong> beseda ⇐⇒ Hx T = 0.<br />

Če je x ∈ C, e ∈ F n in r = x + e, <strong>po</strong>tem velja<br />

Hr T = He T (tj. sindrom je odvisen samo od<br />

<strong>na</strong>pak, ne pa tudi kodne besede).<br />

Teža vektorja x ∈ (F) n , oz<strong>na</strong>ka w(x), je število<br />

njegovih neničelnih koordi<strong>na</strong>t, teža (n,k)-kode C pa<br />

je<br />

w(C) = min{w(x) |x ∈ C\{0}}.<br />

Lema: Če je d razdalja (n,k)-kode C, <strong>po</strong>tem je<br />

d = w(C).<br />

Izrek: Naj bo C linear<strong>na</strong> (n,k)-koda<br />

ter H nje<strong>na</strong> <strong>na</strong>dzor<strong>na</strong> matrika.<br />

Potem ima koda C razdaljo vsaj s <strong>na</strong>tanko<br />

tedaj, ko je <strong>po</strong>ljubnih s − 1 stolpcev<br />

matrike H linearno neodvisnih.<br />

Aleksandar Jurišić 799<br />

Aleksandar Jurišić 800<br />

Aleksandar Jurišić 801<br />

Aleksandar Jurišić 802<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Sindromsko odkodiranje<br />

Izraču<strong>na</strong>j s = Hr T .<br />

Če je s ničelni vektor, odkodiraj r kot r.<br />

Sicer pa generiraj vse vektorje <strong>na</strong>pak s težo 1 in njihove<br />

sindrome.<br />

Če je za katerega od teh vektorjev He T = s,<br />

<strong>po</strong>tem odkodiraj r kot r − e.<br />

V <strong>na</strong>sprotnem primeru pa generiraj vse vektorje <strong>na</strong>pak<br />

s težo 2,...,⌊(d−1)/2⌋ in preverjaj, ali je He T = s,...<br />

Po tem <strong>po</strong>stopku odkodiramo dobljeni vektor v <strong>na</strong>jveč<br />

( ( )<br />

n n<br />

1 + + · · · +<br />

1)<br />

⌊(d − 1)/2⌋<br />

korakih ali pa ugotovimo, da je prišlo do več kot<br />

⌊(d − 1)/2⌋ <strong>na</strong>pak.<br />

Medtem ko ta metoda deluje za vsako linearno kodo,<br />

pa jo lahko za <strong>na</strong>katere kode bistv<strong>eno</strong> <strong>po</strong>spešimo.<br />

V splošnem pa je odločitve<strong>na</strong> verzija tega problema<br />

NP-<strong>po</strong>ln problem (kadar število <strong>na</strong>pak ni omej<strong>eno</strong> z<br />

⌊(d − 1)/2⌋).<br />

Poseben primer linearnih kod, za katere obstaja hiter<br />

algoritem za odkodiranje, so Goppa kode.<br />

So lahke za generiranje in imajo veliko število<br />

neekvivalentnih kod z istimi parametri.<br />

n = 2 m , d = 2t + 1 in k = n − mt .<br />

Za prakso je McEliece predlagal m = 10 in t = 50, ki<br />

<strong>na</strong>m da linearno (1024, 524, 101)-kodo.<br />

Čistopis je bi<strong>na</strong>r<strong>na</strong> 524-terica, tajnopis pa bi<strong>na</strong>r<strong>na</strong><br />

1024-terica. Javni ključ je (524 × 1024)-dim. bi<strong>na</strong>r<strong>na</strong><br />

matrika.<br />

Opis kriptosistema McEliece<br />

Naj bo G matrika, ki generira (n,k,d) Goppa kodo C.<br />

Naj bo S (k ×k)-dim. bi<strong>na</strong>r<strong>na</strong> matrika, ki je obrnljiva<br />

v Z 2 , P (n ×n)-dim. permutacijska matrika in <strong>na</strong>j bo<br />

G ′ = SGP, P = (Z 2 ) k , C = (Z 2 ) n ,<br />

K = {(G,S,P,G ′ )}.<br />

Matrika G ′ je jav<strong>na</strong>, matriki S in P pa tajni (privatni).<br />

Za K = (G, S,P,G ′ ) <strong>na</strong>j bo<br />

e K (x, e) = xG ′ + e,<br />

kjer je e ∈ (Z 2 ) n <strong>na</strong>ključni bi<strong>na</strong>rni vektor s težo t.<br />

Aleksandar Jurišić 803<br />

Aleksandar Jurišić 804<br />

Aleksandar Jurišić 805<br />

Aleksandar Jurišić 806


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Bojan odšifrira tajnopis y ∈ (Z 2 ) n <strong>na</strong> <strong>na</strong>slednji <strong>na</strong>čin:<br />

1. izraču<strong>na</strong> y 1<br />

= yP −1 ,<br />

2. odkodira y 1<br />

tako, da <strong>na</strong>jde e 1 = y 1<br />

− x 1 ,<br />

kjer je x 1 ∈ C,<br />

3. izraču<strong>na</strong> tak x 0 ∈ (Z 2 ) k , da je x 0 G = x 1 ,<br />

4. izraču<strong>na</strong> x = x 0 S −1 .<br />

Za abecedo si izberimo elemente končnega obsega s q<br />

elementi, kjer je q <strong>po</strong>tenca nekega praštevila, oz<strong>na</strong>ka<br />

F = GF(q). Če je q praštevilo, je to kar praobseg Z q .<br />

Potem je F n z običajnim seštevanjem in množenjem<br />

<strong>po</strong> kom<strong>po</strong>nentah vektorski prostor <strong>na</strong>d F.<br />

Čeprav ne bi bilo nujno, bomo obrav<strong>na</strong>vo <strong>po</strong><strong>eno</strong>stavili<br />

in v <strong>na</strong>daljevanju privzeli, da je dolži<strong>na</strong> kodnih besed<br />

e<strong>na</strong>ka kar n = q − 1.<br />

Multiplikativ<strong>na</strong> grupa končnega obsega je F ciklič<strong>na</strong>.<br />

To <strong>po</strong>meni, da obstaja v F primitiven element α, tj.<br />

tak element α ∈ F, da je α n = 1 in α i ≠ 1 za vsak<br />

i ∈ {1,...,n − 1}.<br />

Reed-Salomonove kode<br />

Po odkritju Hammingove kode je sledilo obdobje<br />

številnih <strong>po</strong>skusov s kodami za odpravljanje <strong>na</strong>pak.<br />

Ko je bila teorija kod stara 10 let sta Irving Reed<br />

in Gustave Salomon (takrat za<strong>po</strong>sle<strong>na</strong> v Lincolnovem<br />

laboratoriju <strong>na</strong> MIT) zadela v <strong>po</strong>lno.<br />

Namesto ničel in enic sta u<strong>po</strong>rabila skupine bitov,<br />

ki jim tudi v raču<strong>na</strong>lništvu pravimo kar besede.<br />

Ta lastnost je pri<strong>po</strong>mogla k odpravljanju grozdnih<br />

<strong>na</strong>pak, tj. <strong>na</strong>pak, pri katerih se <strong>po</strong>kvari več za<strong>po</strong>rednih<br />

bitov.<br />

Npr. šest za<strong>po</strong>rednih <strong>na</strong>pak lahko <strong>po</strong>kvari <strong>na</strong>jveč dva<br />

bajta. Reed-Salomonova koda (<strong>na</strong> kratko R-S koda)<br />

za odpravljanje dveh <strong>na</strong>pak torej predstavlja že precej<br />

dobro zaščito.<br />

Da<strong>na</strong>šnje implementacije R-S kod v CD tehnologiji<br />

lahko odpravijo grozdne <strong>na</strong>pake dolžine<br />

do celo 4000 bitov.<br />

Aleksandar Jurišić 807<br />

Aleksandar Jurišić 808<br />

Aleksandar Jurišić 809<br />

Aleksandar Jurišić 810<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Reed in Solomon sta vpeljala RS(n,k)-kode s <strong>po</strong>močjo<br />

<strong>po</strong>linomov. Za s<strong>po</strong>ročilo<br />

m = (m 0 , m 1 , ...,m k−1 ) ∈ F k<br />

s prirejenim <strong>po</strong>linomom<br />

m(x) = m 0 + m 1 x + · · · + m k−1 x k−1<br />

izraču<strong>na</strong>mo vrednosti<br />

c i = m(α i ), i ∈ {0, . ..,n − 1}<br />

in iz njih sestavimo kodno besedo:<br />

c = (c 0 , c 1 ,...,c n−1 ).<br />

Da bo odkodiranje možno, mora seveda veljati k < n.<br />

V tem primeru <strong>na</strong>s dobro z<strong>na</strong><strong>na</strong> formula za <strong>po</strong>linomsko<br />

inter<strong>po</strong>lacijo prepriča, da ni preveč pričakovati obstoj<br />

odkodirnega algoritema za RS-kode, ki bi opazil<br />

morebitne nepravilnosti in jih odpravil.<br />

Bistv<strong>eno</strong> vprašanje pa je, ali je tak algoritem učinkovit.<br />

Prvi <strong>po</strong>stopek za odkodiranje sta predlagala Reed<br />

in Solomon. Temelji <strong>na</strong> reševanju velikega števila<br />

sistemov e<strong>na</strong>čb.<br />

Ko sprejmemo kodno besedo<br />

c = (c 0 , c 1 ,...,c n−1 ),<br />

lahko s<strong>po</strong>ročilo m = (m 0 ,m 1 , ...,m k−1 ) izraču<strong>na</strong>mo<br />

iz <strong>na</strong>slednjega (predoločenega) sistema e<strong>na</strong>čb<br />

c 0 = m 0 +m 1 +m 2 + · · · +m k−1<br />

c 1 = m 0 +m 1 α +m 2 α 2 + · · · +m k−1 α k−1<br />

c 2 = m 0 +m 1 α 2<br />

.<br />

+m 2 α 4 + · · · +m k−1 α 2(k−1)<br />

c n−1 = m 0 +m 1 α n−1 +m 2 α (n−1)·2 + · · · +m k−1 α (n−1)(k−1) .<br />

(6)<br />

Poglejmo množico <strong>po</strong>ljubnih k e<strong>na</strong>čb, ki ustrezajo k-<br />

elementni <strong>po</strong>dmnožici<br />

{a 1 , a 2 , ...,a k } ⊆ {1, α,...,α n−1 }.<br />

Njihovi koeficienti tvorijo Vandermondovo matriko z<br />

determi<strong>na</strong>nto<br />

1 a 1 a 2 1 . .. a k−1<br />

1<br />

1 a 2 a 2 2 . .. a k−1<br />

2<br />

. .<br />

= ∏<br />

(a j − a i ).<br />

∣ 1 a k a 2 1≤i


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Če se pri pr<strong>eno</strong>su ne bi <strong>po</strong>javila <strong>na</strong>paka, bi lahko<br />

z izbiro <strong>po</strong>ljubne k-elementne <strong>po</strong>dmnožice obrnljivih<br />

elementov v F dobili sistem e<strong>na</strong>čb, iz katerega bi lahko<br />

določili celotno s<strong>po</strong>ročilo<br />

(m 0 , ...,m k−1 ).<br />

Tako k-elementno <strong>po</strong>dmnožico lahko izberemo <strong>na</strong> ( )<br />

n<br />

k<br />

<strong>na</strong>činov.<br />

Če pa pri pr<strong>eno</strong>su <strong>na</strong>stanejo <strong>na</strong>pake, <strong>na</strong>m lahko različni<br />

sistemi e<strong>na</strong>čb dajo različne rešitve.<br />

Naslednja lema <strong>na</strong>m zagotovlja, da se prava rešitev<br />

<strong>po</strong>javi <strong>na</strong>jvečkrat, če le število <strong>na</strong>pak ni preveliko.<br />

Lema 2. Če pride pri pr<strong>eno</strong>su ali branju<br />

kodne besede (c 0 , ...,c n−1 ) RS(n,k)-kode do s<br />

<strong>na</strong>pak, se pri reševanju <strong>po</strong>dsistema k-tih e<strong>na</strong>čb<br />

iz (6) <strong>po</strong>javi <strong>na</strong>pač<strong>na</strong> rešitev (k-terica) <strong>na</strong>jveč<br />

( ) s + k − 1<br />

-krat.<br />

k<br />

Dokaz: E<strong>na</strong>čbe sistema (6) ustrezajo k-razsežnim<br />

hiperravni<strong>na</strong>m. Zaradi linearne neodvisnosti<br />

<strong>po</strong>ljubnih k vektorjev, ki določajo te hiperravnine,<br />

se <strong>po</strong>ljubnih k hiperravnin seka v eni točki.<br />

V <strong>na</strong>pačni točki pa se lahko seka <strong>na</strong>jveč s + k − 1<br />

hiperravnin, saj je med njimi lahko <strong>na</strong>jveč k −1 takih,<br />

ki se pri pr<strong>eno</strong>su niso spremenile (k nespremenjenih<br />

e<strong>na</strong>čb <strong>na</strong>m <strong>na</strong>mreč že da pravo rešitev)<br />

in <strong>na</strong>jveč s takih, ki so se spremenile.<br />

Izrek 3. RS(n,k)-koda je linear<strong>na</strong> (n,k)-koda.<br />

Dokaz: Naj bosta c in c ′ <strong>po</strong>ljubni kodni besedi<br />

RS-kode ter m(x) in m ′ (x) <strong>po</strong>linoma s<strong>po</strong>ročila,<br />

katerima ustrezata ti dve kodni besedi.<br />

Potem za λ, λ ′ ∈ F in i ∈ {0, 1,...,n − 1} velja<br />

(λc + λ ′ c ′ ) i = λm(α i ) + λ ′ m ′ (α i ) = p(α i ),<br />

kjer je p(x) = λm(x) + λ ′ m ′ (x). Od tod sledi,<br />

da je λc + λ ′ c ′ kod<strong>na</strong> beseda, ki ustreza s<strong>po</strong>ročilu<br />

λm + λ ′ m ′ in je RS-koda linear<strong>na</strong>. Kodne besede<br />

a i := (1,α i ,α 2i , ...,α (n−1)i ) s prirejenimi <strong>po</strong>linomi<br />

x i , i ∈ {0, 1,...,k − 1} so linearno neodvisne,<br />

saj jih lahko zložimo v Vandermondovo matriko,<br />

katere determi<strong>na</strong>nta je različ<strong>na</strong> od nič, ker so števila<br />

1,α, α 2 , ...,α k−1 paroma različ<strong>na</strong>.<br />

Potrebno je le še preveriti, da je <strong>po</strong>ljub<strong>na</strong> kod<strong>na</strong><br />

beseda c, ki ustreza nekemu <strong>po</strong>linomu s<strong>po</strong>ročila<br />

m(x) = ∑ k−1<br />

i=0 m ix i , linear<strong>na</strong> kombi<strong>na</strong>cija le-teh:<br />

(k−1<br />

∑<br />

c =<br />

i=0<br />

∑<br />

k−1<br />

=<br />

i=0<br />

∑k−1<br />

m i (α 0 ) i ,<br />

i=0<br />

∑k−1<br />

m i (α 1 ) i ,...,<br />

i=0<br />

(<br />

m i (α 0 ) i , (α 1 ) i ,...,(α n−1 ) i) ∑k−1<br />

=<br />

Torej je RS-koda res k-razsež<strong>na</strong>.<br />

m i (α n−1 ) i )<br />

i=0<br />

m i a i .<br />

Sedaj pa se prepričajmo, da za RS(n,k)-kode v<br />

Singletonovi oceni velja e<strong>na</strong>kost, tj. za dani <strong>na</strong>ravni<br />

števili n in k RS(n,k)-kode odpravijo <strong>na</strong>jvečje možno<br />

število <strong>na</strong>pak.<br />

Aleksandar Jurišić 815<br />

Aleksandar Jurišić 816<br />

Aleksandar Jurišić 817<br />

Aleksandar Jurišić 818<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Izrek 4. RS(n,k)-koda odpravi<br />

⌊(n −k)/2⌋ <strong>na</strong>pak, nje<strong>na</strong> razdalja pa je n −k +1.<br />

Dokaz: Privzemimo, da je pri pr<strong>eno</strong>su RS-kodne<br />

besede prišlo do s <strong>na</strong>pak.<br />

Po Lemi 2 dobimo pri reševanju vseh možnih<br />

<strong>po</strong>dsistemov k-tih e<strong>na</strong>čb vsako <strong>na</strong>pačno rešitev<br />

( ) ( )<br />

s + k − 1<br />

n − s<br />

<strong>na</strong>jveč -krat, pravo pa -krat.<br />

k<br />

k<br />

Slednje število je večje <strong>na</strong>tanko tedaj, ko je<br />

n − s > s + k − 1 oziroma s < (n − k + 1)/2.<br />

Ker je s celo število, lahko RS-koda <strong>na</strong> ta <strong>na</strong>čin odpravi<br />

<strong>po</strong>ljubnih ⌊(n − k)/2⌋ <strong>na</strong>pak.<br />

Torej je nje<strong>na</strong> razdalja vsaj n − k + 1. ]<br />

Iz izreka 3 sledi, da ima RS-koda q k elementov.<br />

Zaradi Singletonove meje (4) oziroma (5) pa je razdalja<br />

e<strong>na</strong>ka n − k + 1.<br />

Seveda je ta <strong>na</strong>čin za odkodiranje pre<strong>po</strong>časen,<br />

saj zahteva reševanje ( n<br />

k)<br />

sistemov e<strong>na</strong>čb<br />

velikosti k × k,<br />

kar je eks<strong>po</strong>nent<strong>na</strong> časov<strong>na</strong> zahtevnost glede <strong>na</strong> k.<br />

Ciklične kode<br />

Gre za enega <strong>na</strong>jbolj <strong>po</strong>membnih razredov linearnih<br />

kod. V splošnem je te kode veliko lažje implementirati,<br />

zato imajo izjemen praktičen <strong>po</strong>men. Iz algebraičnega<br />

vidika pa so prav tako izredno zanimive.<br />

Podprostor S n-razsežnega vektorskega prostora je<br />

cikličen <strong>po</strong>dprostor, če iz<br />

(a 1 , a 2 ,...,a n−1 ,a n )∈S sledi (a n ,a 1 , a 2 , ...,a n )∈S.<br />

Linear<strong>na</strong> koda C je ciklič<strong>na</strong> koda, če je C cikličen<br />

<strong>po</strong>dprostor.<br />

Kodni besedi c, <strong>po</strong>dobno kot prej pri s<strong>po</strong>ročilu,<br />

priredimo <strong>po</strong>linom<br />

c(x) = c 0 + c 1x + · · · + c n−1x n−1 .<br />

Cikličnemu <strong>po</strong>miku <strong>po</strong>tem ustreza <strong>po</strong>linom c ′ (x), tj.,<br />

c n−1 +c 0 x+c 1 x 2 +· · ·+c n−2 x n−1 = x·c(x)−c n−1 (x n −1).<br />

V kolobarju <strong>po</strong>linomov R n = F n [x]/(x n − 1), kjer<br />

gledamo <strong>po</strong>linome <strong>po</strong> modulu <strong>po</strong>linoma x n −1, dobimo<br />

ciklični <strong>po</strong>mik kar z množenjem s <strong>po</strong>linomom x.<br />

Zato bomo <strong>po</strong>gosto e<strong>na</strong>čili kodne besede s <strong>po</strong>linomi <strong>po</strong><br />

modulu <strong>po</strong>linoma x n − 1, tj. delali v kolobarju R n .<br />

Aleksandar Jurišić 819<br />

Aleksandar Jurišić 820<br />

Aleksandar Jurišić 821<br />

Aleksandar Jurišić 822


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Kolobarji in ideali<br />

Bertrand Russell:<br />

“Matematiko lahko definiramo kot predmet, pri<br />

katerem nikoli ne vemo, o čem govorimo niti nikoli<br />

ne vemo, ali je tisto, kar pravimo, resnično.”<br />

Če v neki množici G z bi<strong>na</strong>rno operacijo ◦, velja:<br />

(G1) ∀a,b ∈ G je a ◦ b ∈ G,<br />

(G2) ∃e ∈ G, tako da za ∀g ∈ G velja e ◦g = g ◦e = g,<br />

(G3) ∀g ∈ G ∃f ∈ G, tako da velja g ◦ f = f ◦ g = e,<br />

(G4) ∀a,b,c ∈ G velja (a ◦ b) ◦ c = a ◦ (b ◦ c),<br />

<strong>po</strong>tem pravimo, da je par (G, ◦) grupa.<br />

Če za neko množico K z bi<strong>na</strong>rnima operacijama, ki ju<br />

bomo oz<strong>na</strong>čili s + in ∗, velja<br />

(K1) par (K, +) je grupa z <strong>eno</strong>to 0,<br />

(K2) ∀a,b, c ∈ K velja (a ∗ b) ∗ c = a ∗ (b ∗ c),<br />

(K3) ∀a,b ∈ K velja a ∗ b = b ∗ a,<br />

(K4) ∀a,b, c ∈ K velja a ∗ (b + c) = a ∗ b + b ∗ c.<br />

(K5) ∃1 ∈ K, tako da za ∀a ∈ K velja e ∗ g = g,<br />

<strong>po</strong>tem imenujemo trojico (K, +, ∗) komutativen<br />

kolobar z <strong>eno</strong>to.<br />

Ker bomo imeli opravka samo s komutativnimi<br />

kolobarji z <strong>eno</strong>to, jim bomo rekli kar kolobarji.<br />

Primeri:<br />

Množica vseh celih števil z običajnim seštevanjem in<br />

množenjem (Z, +, ∗), <strong>po</strong><strong>na</strong>vadi oz<strong>na</strong>če<strong>na</strong> kar z Z.<br />

Množica celih števil <strong>po</strong> modulu n ∈ IN, <strong>po</strong><strong>na</strong>vadi<br />

oz<strong>na</strong>če<strong>na</strong> kar z Z n .<br />

Množica vseh <strong>po</strong>linomov (spremenljivke x) s koeficienti<br />

iz obsega F, in običajnim seštevanjem in množenjem<br />

<strong>po</strong>linomov, običaj<strong>na</strong> oz<strong>na</strong>ka F[x].<br />

Za neničelen <strong>po</strong>linom f(x) ∈ F[x] lahko definiramo še<br />

kolobar <strong>po</strong>linomov <strong>na</strong>d F <strong>po</strong> modulu f(x),<br />

oz<strong>na</strong>ka F[x]/(f(x)).<br />

Nepraz<strong>na</strong> <strong>po</strong>dmnožica I kolobarja (K, +, ∗) se<br />

imenuje ideal kolobarja, če velja<br />

(I1) par (I, +) je grupa,<br />

(I2) i ∗ k ∈ I za ∀i ∈ I in za ∀k ∈ K.<br />

Opišimo preprosto konstrukcijo ideala. Za neničelen<br />

element g ∈ K vzamemo <strong>na</strong>slednjo množico<br />

I = {g ∗ k |k ∈ K}.<br />

Ni se težko prepričati, da gre za ideal. Pravimo mu<br />

ideal generiran z g. Vsakega ideala ne moremo dobiti<br />

<strong>na</strong> ta <strong>na</strong>čin, če pa je možno, mu pravimo glavni ideal.<br />

Kolobar v katerem je vsak ideal glavni ideal<br />

(tj. je generiran z enim samim elementom)<br />

imenujemo glavni kolobar.<br />

Aleksandar Jurišić 823<br />

Aleksandar Jurišić 824<br />

Aleksandar Jurišić 825<br />

Aleksandar Jurišić 826<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Izrek: F[x] in F[x]/(f(x)) sta glav<strong>na</strong> kolobarja.<br />

Izrek: Nepraz<strong>na</strong> množica S n-razsežnega<br />

vektorskega prostora V je cikličen <strong>po</strong>dprostor<br />

če in samo če je množica <strong>po</strong>linomov I,<br />

ki ustreza množici S, ideal v kolobarju,<br />

ki ustreza prostoru V .<br />

Izrek: Naj bo I ≠ ∅ ideal v V = F n in<br />

g(x) moničen <strong>po</strong>linom <strong>na</strong>jmanjše stopnje,<br />

ki predstavlja nek razred iz I.<br />

Potem [g(x)] (ali kar g(x)) generira ideal I<br />

in g(x) deli x n − 1.<br />

Izrek: Obstaja <strong>na</strong>tanko določen moničen <strong>po</strong>linom<br />

<strong>na</strong>jmanjše stopnje, ki generira ideal I ≠ ∅<br />

n-razsežnega vektorskega prostora V .<br />

Izrek: Naj bo h(x) moničen delitelj <strong>po</strong>linoma<br />

x n − 1. Potem je h(x) generator ideala<br />

I = {a(x)h(x) | a(x) ∈ K}<br />

kolobarja K = F[x]/(x n − 1).<br />

Izrek: Obstaja bijektiv<strong>na</strong> kores<strong>po</strong>ndenca med<br />

cikličnimi <strong>po</strong>dprostori vektorskega prostora F n<br />

in<br />

moničnimi <strong>po</strong>linomi g(x) ∈ F[x],<br />

ki delijo binom x n − 1.<br />

Izrek 5: Naj bosta n,k ∈ IN, n > k,<br />

g(x) moničen <strong>po</strong>linom stopnje n − k,<br />

ki deli <strong>po</strong>linom x n − 1. Potem je<br />

S = {a(x)g(x) | deg(a) < k}<br />

cikličen <strong>po</strong>dprostor vektorskega prostora R n<br />

in B = {g(x),xg(x),...,x k−1 g(x)}<br />

baza <strong>po</strong>dprostora S.<br />

Dokaz: Očitno je S <strong>po</strong>dprostor v R n . Pokažimo, da<br />

je S cikličen, tj. za <strong>po</strong>linom p(x) := a(x)g(x) ∈ S je<br />

p 1(x) := x p(x) mod (x n − 1) v <strong>po</strong>dprostoru S.<br />

To je očitno, saj je razlika p 1(x) − xp(x) deljiva z<br />

x n − 1, ki je deljiv z g(x), <strong>po</strong>linom p(x) pa je tudi<br />

deljiv z g(x). Zato je z g(x) deljiv tudi <strong>po</strong>linom p 1 (x).<br />

Aleksandar Jurišić 827<br />

Aleksandar Jurišić 828<br />

Aleksandar Jurišić 829<br />

Aleksandar Jurišić 830


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Prepričajmo se, da je množica B baza <strong>po</strong>dprostora S.<br />

Pred<strong>po</strong>stavimo, da je <strong>po</strong>ljub<strong>na</strong> linear<strong>na</strong> kombi<strong>na</strong>cija<br />

∑k−1<br />

λ ix i g(x) = 0.<br />

i=0<br />

Če obstaja <strong>na</strong>jvečji indeks j, za katerega je λ j ≠ 0,<br />

<strong>po</strong>tem je koeficient ob x n−k+j e<strong>na</strong>k λ j , kar <strong>po</strong>meni, da<br />

mora biti λ j = 0. Torej je B linearno neodvis<strong>na</strong>.<br />

Vektorji iz B <strong>na</strong>penjajo cel <strong>po</strong>dprostor S, saj za<br />

<strong>po</strong>ljuben p(x) ∈ S, velja p(x) = a(x)g(x) za nek<br />

a(x) = a 0 + a 1 x + · · · + a k−1 x k−1 , tj.<br />

p(x) = a 0 g(x) + a 1 xg(x) + · · · + a k−1 x k−1 g(x)<br />

je res linear<strong>na</strong> kombi<strong>na</strong>cija <strong>po</strong>linomov iz B.<br />

Izrek 6: Naj bo F končen obseg s q elementi<br />

in n := q − 1. Naj bo k tako število, da velja<br />

1 ≤ k < n in d := n − k + 1 ter α primitiven<br />

element v F.<br />

Koda C 1 <strong>na</strong>j bo linear<strong>na</strong> ciklič<strong>na</strong> koda z<br />

generatorskim <strong>po</strong>linomom<br />

g(x) = (x − α)(x − α 2 ) ...(x − α d−1 ),<br />

koda C 2 pa <strong>na</strong>j bo RS-koda, pri kateri s<strong>po</strong>ročilu<br />

m ∈ F k s prirejenim <strong>po</strong>linomom<br />

m(x) = m 0 + m 1 x + · · · + m k−1 x k−1<br />

priredimo kodno besedo<br />

(m(α), m(α 2 ), . ..,m(α n )).<br />

Potem kodi C 1 in C 2 sestavljajo iste kodne besede.<br />

O<strong>po</strong>zorimo, da zgornji izrek ne trdi, da istemu<br />

s<strong>po</strong>ročilu v obeh primerih priredimo isto kodno besedo<br />

in da izrek velja tudi, če <strong>po</strong>goj n = q − 1 zamenjamo<br />

s q − 1 |n.<br />

Dokaz: Ker sta kodi C 1 in C 2 linearni in k-razsežni,<br />

je dovolj preveriti, da je beseda c = (c 0 , c 1 ,...,c n−1 ),<br />

katere prirejeni <strong>po</strong>linom<br />

c(x) = c 0 + c 1 x + · · · + c k−1 x k−1<br />

je oblike c(x) = m(x)g(x)<br />

(tj. beseda iz kode C 1 , ki pripada s<strong>po</strong>ročilu m),<br />

tudi v kodi C 2 , tj. C 1 ⊆ C 2 .<br />

Torej je treba <strong>po</strong>iskati tak <strong>po</strong>linom f(x) stopnje k −1,<br />

da bo c i = f(α i ) za i ∈ {0, ...,n − 1}.<br />

Naj bo f(x) = f 0 +f 1 x+· · ·+f n−1 x n−1 , tako da velja<br />

f j = c(α−j )<br />

, j = 0,...,n − 1. (7)<br />

n<br />

Polinom c(x) je deljiv s <strong>po</strong>linomom g(x),<br />

zato so α, α 2 , ...,α d−1 tudi njegove ničle.<br />

Ker je d − 1 = n − k, to <strong>po</strong>meni, da za<br />

j ∈ {n − 1,n − 2,...,k} velja c(α −j ) = c(α n−j ) = 0<br />

in zato tudi f j = 0.<br />

Torej ima <strong>po</strong>linom f(x) stopnjo <strong>na</strong>jveč k − 1.<br />

Izraču<strong>na</strong>jmo še vrednosti f(α i ), i ∈ {0, ...,n − 1}.<br />

Aleksandar Jurišić 831<br />

Aleksandar Jurišić 832<br />

Aleksandar Jurišić 833<br />

Aleksandar Jurišić 834<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Iz (7) sledi<br />

∑n−1<br />

f(α i ) =<br />

= 1 n<br />

j=0<br />

n−1<br />

∑<br />

h=0<br />

c(α −j )<br />

n<br />

· (α i ) j = 1 ∑n−1<br />

(n−1<br />

∑ )<br />

c h α −jh α ij<br />

n<br />

(n−1<br />

∑<br />

c h ·<br />

j=0<br />

j=0<br />

α (i−h)j )<br />

= c i .<br />

h=0<br />

Pri zadnjem e<strong>na</strong>čaju smo u<strong>po</strong>števali, da je izraz v<br />

zadnjem oklepaju e<strong>na</strong>k n za h = i, sicer pa 0.<br />

To vidimo takole: α je primitiven element, zato je<br />

α n = 1 in α ≠ 1, se pravi, da je α ničla <strong>po</strong>linoma<br />

(x n − 1)/(x − 1) = 1 + x + x 2 + · · · + x n−1 ;<br />

e<strong>na</strong>ko velja tudi za vse <strong>po</strong>tence α, ki so različne od 1.<br />

Pravkar opisa<strong>na</strong> transformacija, ki preslika c(x)<br />

v f(x), je z<strong>na</strong><strong>na</strong> kot (inverz<strong>na</strong>) Fourierova<br />

transformacija v končnih obsegih in je diskreten<br />

a<strong>na</strong>log Fourierove transformacije v a<strong>na</strong>lizi.<br />

Naj bo F končen obseg s q elementi in n := q − 1.<br />

Naj bo k tako število, da velja 1 ≤ k < n in<br />

d := n − k + 1.<br />

Naj bo α primitiven element v F in<br />

g(x) = (x − α)(x − α 2 )...(x − α d−1 ).<br />

Obrav<strong>na</strong>vamo odkodiranje pri RS(n, k)-kodi,<br />

generirani s <strong>po</strong>linomom g(x).<br />

Naj bo c(x) = a(x)g(x) <strong>po</strong>sla<strong>na</strong> kod<strong>na</strong> beseda, r(x)<br />

pa prejeta beseda. Lahko jo zapišemo v obliki<br />

kjer je e(x) <strong>po</strong>linom <strong>na</strong>pake.<br />

r(x) = c(x) + e(x), (8)<br />

Če pri pr<strong>eno</strong>su ni prišlo do <strong>na</strong>pake, je e(x) e<strong>na</strong>k nič in<br />

je <strong>po</strong>linom r(x) deljiv z g(x).<br />

Polinom s<strong>po</strong>ročila a(x) dobimo iz r(x) kar z deljenjem<br />

s <strong>po</strong>linomom g(x).<br />

V primeru, da je prišlo do <strong>na</strong>pake, pa bo odkodiranje<br />

težje. Najprej bomo odkodiranje prevedli <strong>na</strong> reševanje<br />

sistema linearnih e<strong>na</strong>čb.<br />

Vemo, da obstajata taka <strong>po</strong>linoma h(x) in s(x), da je<br />

r(x) = h(x) · g(x) + s(x),<br />

in deg(s(x)) < deg(g(x)).<br />

s(x) imenujemo sindrom prejete besede r(x).<br />

Ker so α, α 2 , ...,α d−1 ničle <strong>po</strong>linoma g(x) in zato<br />

tudi <strong>po</strong>linoma c(x), velja zaradi (8) in zgornje e<strong>na</strong>čbe<br />

<strong>na</strong>slednja zveza:<br />

r(α i ) = e(α i ) = s(α i ) za i = 1, ...,d − 1. (9)<br />

Pred<strong>po</strong>stavimo, da pri pr<strong>eno</strong>su ni prišlo do več kot<br />

l ≤ ⌊(d − 1)/2⌋ <strong>na</strong>pak, kolikor jih koda <strong>na</strong>jveč lahko<br />

odpravi.<br />

Aleksandar Jurišić 835<br />

Aleksandar Jurišić 836<br />

Aleksandar Jurišić 837<br />

Aleksandar Jurišić 838


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Naj bodo a 0 , a 1 ,...,a l−1 ∈ {0,...,n − 1} mesta v<br />

kodni besedi, <strong>na</strong> katerih je prišlo do <strong>na</strong>pake.<br />

Potem lahko <strong>po</strong>linom e(x) zapišemo v obliki<br />

∑l−1<br />

e(x) = λ j x a j<br />

.<br />

j=0<br />

S i := s(α i ). Eks<strong>po</strong>nenti a j v <strong>po</strong>tenci α aj <strong>na</strong>m <strong>po</strong>vedo<br />

<strong>po</strong>ložaje <strong>na</strong>pak, zato števila α aj imenujemo lokatorji<br />

<strong>na</strong>pak. Vrednosti λ j pa so velikosti <strong>na</strong>pak.<br />

Iz (9) dobimo za i = {1,...,d − 1} sistem e<strong>na</strong>čb<br />

∑l−1<br />

∑l−1<br />

S i = λ j(α i ) a j<br />

= λ j(α a j<br />

) i , (10)<br />

j=0<br />

j=0<br />

z nez<strong>na</strong>nkami λ j in α aj , j = 0, ...,l − 1.<br />

Z uvedbo oz<strong>na</strong>k X j = α aj , j = 0,...,l − 1, sistem<br />

zapišemo v <strong>na</strong>slednji obliki<br />

S 1 = λ 0X 0 + λ 1X 1 + · · · + λ l−1X l−1,<br />

S 2 = λ 0 X0 2 + λ 1 X1 2 + · · · + λ l−1 Xl−1 2 ,<br />

.<br />

S d−1 = λ 0 X0 d−1 + λ 1 X1 d−1 + · · · + λ l−1 X d−1<br />

l−1 .<br />

(11)<br />

Ta sistem d−1 e<strong>na</strong>čb z 2l nez<strong>na</strong>nkami (λ j in X j ) se je<br />

v preteklosti <strong>po</strong>javil pri reševanju različnih problemov.<br />

L. 1975 baron de Prony rešuje inter<strong>po</strong>lacijski problem.<br />

Najprej <strong>po</strong>iščemo vrednosti X j , <strong>na</strong>to pa lahko iz<br />

sistema <strong>po</strong>iščemo še velikosti <strong>na</strong>pak, saj je sistem e<strong>na</strong>čb<br />

za λ i , i = 0, ...,l − 1, linearen.<br />

Naj bo<br />

σ(x) = 1 + σ 1 x + σ 2 x 2 + · · · + σ l x l<br />

<strong>po</strong>linom lokatorjev <strong>na</strong>pake oziroma bolj precizno<br />

<strong>po</strong>linom, ki ima za ničle ravno inverzne vrednosti<br />

lokatorjev <strong>na</strong>pak, tj. ∏ l−1<br />

i=0 (1 − X jx). Zato velja:<br />

λ j Xj<br />

l+u σ(Xj −1 ) = 0 za j = 0, ...,l − 1, (12)<br />

kjer je u <strong>na</strong>ravno število manjše ali e<strong>na</strong>ko l. Seštejmo<br />

e<strong>na</strong>čbe (12), u<strong>po</strong>števajmo še sistem in dobimo<br />

= S u+l +<br />

∑l−1<br />

(<br />

0 = λ j Xj<br />

l+u 1 +<br />

l∑<br />

i=1<br />

j=0<br />

∑<br />

σ i<br />

l−1<br />

j=0<br />

l∑<br />

i=1<br />

)<br />

σ i Xj<br />

−i<br />

λ j X l+u−i<br />

j = S u+l +<br />

l∑<br />

σ i S l+u−i ,<br />

i=1<br />

To je rekurziv<strong>na</strong> e<strong>na</strong>čba za za<strong>po</strong>redje {S i}:<br />

σ 1 S u+l−1 + σ 2 S u+l−2 + · · · + σ l S u = −S u+l . (13)<br />

Ko u teče od 1,...,l, dobimo sistem linearnih e<strong>na</strong>čb<br />

za σ i, i = 1, ...l, ki ga lahko zapišemo v matrični<br />

obliki<br />

⎡<br />

⎤ ⎡ ⎤ ⎡ ⎤<br />

S 1 S 2 . .. S l σ l S l+1<br />

⎢ S 2 S 3 . .. S l+1<br />

⎥ ⎢ σ l−1<br />

⎥<br />

⎣ . . . ⎦ ⎣ . ⎦ = − ⎢ S l+2<br />

⎥<br />

⎣ . ⎦ . (14)<br />

S l S l+1 . .. S 2l−1 σ 1 S 2l<br />

V<strong>na</strong>prej ne <strong>po</strong>z<strong>na</strong>mo l, zato <strong>na</strong>mesto z l raču<strong>na</strong>mo z<br />

⌊(d − 1)/2⌋.<br />

Rang matrike sistema je v tem primeru e<strong>na</strong>k številu<br />

<strong>na</strong>pak. Ko <strong>po</strong>z<strong>na</strong>mo število <strong>na</strong>pak, lahko iz sistema<br />

izraču<strong>na</strong>mo koeficiente <strong>po</strong>linoma σ(x).<br />

Aleksandar Jurišić 839<br />

Aleksandar Jurišić 840<br />

Aleksandar Jurišić 841<br />

Aleksandar Jurišić 842<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Da dobimo lokatorje <strong>na</strong>pak, moramo <strong>po</strong>iskati ničle<br />

σ(x) in njihove inverze. Ker smo v končnem obsegu,<br />

ničle lahko <strong>po</strong>iščemo tudi tako, da kar <strong>po</strong> vrsti<br />

preizkušamo elemente obsega (v praksi <strong>na</strong>mreč obseg<br />

nima več kot 32 elementov).<br />

Algoritem za odkodiranje Reed-Solomonovih kod, ki<br />

smo ga predstavili zgoraj, je bistv<strong>eno</strong> hitrejši od tistega<br />

iz drugega razdelka, saj je <strong>po</strong>linomski.<br />

Rešimo le dva sistema e<strong>na</strong>čb (14) in (11) velikosti<br />

O(d × d), iščemo inverze l elementov, ki so lahko<br />

shranjeni tudi v tabeli, ter vrednosti <strong>po</strong>linoma σ(x)<br />

v <strong>na</strong>jveč n točkah. Skup<strong>na</strong> zahtevnost algoritma je v<br />

<strong>na</strong>jslabšem primeru e<strong>na</strong>ka O(n 3 ).<br />

Primer: RS(15, 9)-koda <strong>na</strong>d obsegom GF(2 4 ).<br />

Za primitivni element obsega izberemo ničlo α<br />

<strong>po</strong>linoma f(x) = x 4 + x + 1.<br />

Razdalja kode je e<strong>na</strong>ka d = 15 − 9 + 1 = 7<br />

(koda <strong>po</strong>pravi do tri <strong>na</strong>pake).<br />

Stopnja generatorskega <strong>po</strong>linoma g(x) je n − k =<br />

15 − 9 = 6. Z u<strong>po</strong>rabo ZechLog tabele izraču<strong>na</strong>mo<br />

g(x) = (x −α)(x −α 2 )(x −α 3 )(x −α 4 )(x −α 5 )(x −α 6 )<br />

= α 6 + α 9 x + α 6 x 2 + α 4 x 3 + α 14 x 4 + α 10 x 5 + x 6 .<br />

Kodiranje je množenje s <strong>po</strong>linomom g(x). Besedo<br />

m = (0, 0, 1, 0, α 10 , 0,α 2 , 0, 0) zakodiramo torej kot<br />

c(x) = m(x) · g(x) = α 6 x 2 + α 9 x 3 + α 11 x 4 + α 11 x 6<br />

+α 11 x 8 + α 9 x 9 + α 8 x 10 + α 12 x 11 + α 2 x 12<br />

oziroma<br />

c = (0, 0, α 6 ,α 9 , α 11 , 0,α 11 , 0, α 11 , α 9 ,α 8 , α 12 ,α 2 , 0, 0).<br />

Poglejmo sedaj še, kako <strong>po</strong>teka odkodiranje.<br />

Če je prirejeni <strong>po</strong>linom c(x) kodne besede c deljiv s<br />

<strong>po</strong>linomom g(x), <strong>po</strong>tem je <strong>po</strong>linom s<strong>po</strong>ročila m(x)<br />

e<strong>na</strong>k c(x)/g(x).<br />

Poskusimo odkodirati še prejeto besedo r s prirejenim<br />

<strong>po</strong>linomom r(x) = α 6 x 2 +α 9 x 3 +x 4 +x 5 +x 6 +α 10 x 7 +<br />

α 3 x 8 + α 3 x 9 + α 2 x 12 . Polinom r(x) ni deljiv z g(x),<br />

saj je ostanek e<strong>na</strong>k<br />

s(x) = α 5 + α 10 x + αx 2 + α 10 x 3 + α 3 x 4 + α 9 x 5 .<br />

Izraču<strong>na</strong>mo S i = s(α i ) za i = 1,...,6 in dobimo<br />

<strong>na</strong>slednje vrednosti<br />

S 1 S 2 S 3 S 4 S 5 S 6<br />

α 12 0 α 3 α 2 α 3 1<br />

Sestavimo matriko iz sistema (14).<br />

⎡ ⎤<br />

α 12 0 α 3<br />

⎣ 0 α 3 α 2 ⎦ (15)<br />

α 3 α 2 α 3<br />

Aleksandar Jurišić 843<br />

Aleksandar Jurišić 844<br />

Aleksandar Jurišić 845<br />

Aleksandar Jurišić 846


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Matriko (15) <strong>eno</strong>stavno prevedemo <strong>na</strong> zgornje-trikotno<br />

obliko. Od tretje vrstice odštejemo prvo, <strong>po</strong>množ<strong>eno</strong> z<br />

α 6 , in <strong>na</strong>to še drugo, <strong>po</strong>množ<strong>eno</strong> z α 14 (ker ima obseg<br />

karakteristiko 2, je odštevanje kar e<strong>na</strong>ko seštevanju).<br />

Dobimo matriko ranga 2, kar <strong>po</strong>meni, da je pri pr<strong>eno</strong>su<br />

kodne besede <strong>na</strong>jverjetneje prišlo do dveh <strong>na</strong>pak. Zato<br />

je treba rešiti sistem dveh e<strong>na</strong>čb z dvema nez<strong>na</strong>nkama<br />

[ ][ ]<br />

α<br />

12<br />

0 σ2<br />

0 α 3 = −<br />

σ 1<br />

ki <strong>na</strong>m da rešitev σ 1 = α 14 in σ 2 = α 6 .<br />

[<br />

α<br />

3<br />

α 2 ]<br />

, (16)<br />

Sedaj <strong>po</strong>z<strong>na</strong>mo <strong>po</strong>linom σ(x) = 1 + α 14 x + α 6 x 2 .<br />

Z raču<strong>na</strong>njem njegovih vrednosti v vseh elementih<br />

obsega GF(2 4 ) preverimo, da sta njegovi ničli α 4 in<br />

α 5 .<br />

Nju<strong>na</strong> inverza α 11 in α 10 <strong>na</strong>m <strong>po</strong>vesta, da sta <strong>na</strong>paki<br />

pri prejeti besedi <strong>na</strong> 10. in 11. mestu.<br />

Preostane <strong>na</strong>m le še, da izraču<strong>na</strong>mo velikosti teh<br />

<strong>na</strong>pak. V <strong>na</strong>šem primeru bo to <strong>na</strong>j<strong>eno</strong>stavneje kar<br />

z reševanjem sistema (11).<br />

Le-ta je predoločen; če nima rešitve, je bila<br />

pred<strong>po</strong>stavka, da je prišlo do <strong>na</strong>jveč treh <strong>na</strong>pak,<br />

<strong>na</strong>pač<strong>na</strong>.<br />

Velikosti <strong>na</strong>pak izraču<strong>na</strong>mo iz prvih dveh e<strong>na</strong>čb<br />

α 12 = λ 0α 11 + λ 1α 10<br />

0 = λ 0 (α 11 ) 2 + λ 1 (α 10 ) 2 (17)<br />

in z deljenjem s <strong>po</strong>linomom g(x) preverimo, da smo<br />

res dobili kodno besedo.<br />

Velikosti <strong>na</strong>pak sta λ 0 = α 12 in λ 1 = α 14 .<br />

Polinom <strong>po</strong>slane kodne besede je <strong>po</strong>tem<br />

c 1 (x) = α 6 x 2 + α 9 x 3 + x 4 + x 5 + x 6 + α 10 x 7<br />

+α 3 x 8 + α 3 x 9 + α 14 x 10 + α 12 x 11 + α 2 x 12 .<br />

Ker velja c 1 (x) = g(x)·(x 2 +α 7 x 4 +α 2 x 6 ), je <strong>po</strong>linom<br />

s<strong>po</strong>ročila e<strong>na</strong>k x 2 + α 7 x 4 + α 2 x 6 , samo s<strong>po</strong>ročilo pa je<br />

e<strong>na</strong>ko (0, 0, 1, 0, α 7 , 0, α 2 , 0, 0).<br />

12. <strong>po</strong>glavje<br />

Generator psevdo<strong>na</strong>ključnih števil<br />

• Kaj je <strong>na</strong>ključno število<br />

• Algoritmično <strong>na</strong>ključno število<br />

• U<strong>po</strong>raba in primeri<br />

• Generator 1/P<br />

• Algoritem za prevdo<strong>na</strong>ključne bite<br />

• Blum-Blum-Shub generator<br />

Aleksandar Jurišić 847<br />

Aleksandar Jurišić 848<br />

Aleksandar Jurišić 849<br />

Aleksandar Jurišić 850<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

M. Kac (Amer. Scientist 71 (1981), 405-406)<br />

Kaj je <strong>na</strong>ključno število<br />

Na to vprašanje ni absolutnega odgovora (teorija<br />

informacij, teorija števil, teorija kompleksnosti, fizika).<br />

Za začetek moramo ločiti med <strong>na</strong>ključnim za<strong>po</strong>redjem<br />

števil in generiranjem <strong>na</strong>ključnega za<strong>po</strong>redja.<br />

Najbolj <strong>po</strong>gost primer <strong>na</strong>ključnega procesa je<br />

metanje kovanca (idealno). Če ga vržemo n-<br />

krat za<strong>po</strong>redoma, <strong>po</strong>tem je očitno, da lahko dobimo<br />

vsakega izmed 2 n za<strong>po</strong>redij grbov ali cifr, tj. da ima<br />

vsako od 2 n za<strong>po</strong>redij grbov ali cifr e<strong>na</strong>ko verjetnost.<br />

Mi se bomo ukvarjali s psevdo<strong>na</strong>ključnim za<strong>po</strong>redjem<br />

števil, tj. za<strong>po</strong>redjem, ki je “videti <strong>na</strong>ključno” oziroma<br />

demonstrira neurej<strong>eno</strong>st/kaos.<br />

Knuth (The Art of Computer Programming, 2nd<br />

ed., Addison-Wesley, Reading (1981), 689 pp.) je<br />

predstavil številne statistične teste, ki merijo<br />

neurej<strong>eno</strong>st.<br />

V za<strong>po</strong>redju se <strong>po</strong>javi z e<strong>na</strong>ko frekvenco vsako<br />

<strong>po</strong>dza<strong>po</strong>redje dolžine 1, 2, ... Potem pa so tu še<br />

serijski testi, <strong>po</strong>ker test, avtokorelacijski testi itd.<br />

Chaitin in Kolmogorov pa pravita, da (dolgo) končno<br />

za<strong>po</strong>redje bitov, ki se ga dobiti iz programa, ki je precej<br />

krajši kot dano za<strong>po</strong>redje, ni <strong>na</strong>ključno.<br />

1. Set i equal to 1.<br />

2. Print “1”.<br />

3. If i = n, then stop.<br />

4. Add 1 to i.<br />

5. Go back to Step 2.<br />

Ne glede <strong>na</strong> to, ali je število n veliko, ima ta<br />

program le fiksno število več bitov, kot jih je v bi<strong>na</strong>rni<br />

reprezentaciji števil i in n, ki ne presega 2 log 2 n (<strong>na</strong><br />

bi<strong>na</strong>rnem raču<strong>na</strong>lniku).<br />

Če pa je za<strong>po</strong>redje dovolj neurej<strong>eno</strong>, <strong>po</strong>tem tudi<br />

program, ki ga izpiše, ne bo dosti krajši.<br />

Aleksandar Jurišić 851<br />

Aleksandar Jurišić 852<br />

Aleksandar Jurišić 853<br />

Aleksandar Jurišić 854


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Običajno preštevanje pa <strong>na</strong>m zagotavlja, da bo veliko<br />

manj programov, katerih dolži<strong>na</strong> bo občutno manjša<br />

od števila n.<br />

Chaitin pa u<strong>po</strong>rabi problem zaustavljanja ter<br />

<strong>po</strong>kaže, da, če je dano za<strong>po</strong>redje tako dolgo, da je<br />

njegova kompleksnost večja kot kompleksnost sistema<br />

aritmetike, <strong>po</strong>tem je v splošnem nemogoče dokazati,<br />

da gre za <strong>na</strong>ključno za<strong>po</strong>redje.<br />

Algoritmično <strong>na</strong>ključno število<br />

V kriptografiji <strong>po</strong>trebujemo <strong>na</strong>ključ<strong>na</strong> števila <strong>na</strong><br />

številnih mestih, npr. za generiranje ključev in za<br />

digitalni <strong>po</strong>dpisi.<br />

Generiranje <strong>na</strong>ključnih števil z metanjem kovanca ali<br />

drugih fizičnih procesov je zamudno in drago, zato v<br />

praksi u<strong>po</strong>rabimo<br />

generatorje psevdo<strong>na</strong>ključnih bitov<br />

(angl. pseudorandom bit generator ali PRBG).<br />

Ti začnejo s kratkim za<strong>po</strong>redjem bitov in ga <strong>po</strong>daljšajo<br />

v bistv<strong>eno</strong> daljše za<strong>po</strong>redje bitov, ki je videti<br />

<strong>na</strong>ključno.<br />

Za k,l ∈ IN, l ≥ k + 1<br />

(kjer je l neka določe<strong>na</strong> <strong>po</strong>linomska funkcija od k)<br />

je (k, l)-PRBG funkcija<br />

f : (Z 2 ) k −→ (Z 2 ) l ,<br />

ki jo lahko izraču<strong>na</strong>mo v <strong>po</strong>linomskem času<br />

(kot funkcijo števila k),<br />

tj., generator bitov, ki razširi <strong>na</strong>ključno izbrano<br />

za<strong>po</strong>redje dolžine k do <strong>po</strong>linomsko dolgega<br />

psevdo<strong>na</strong>ključnega za<strong>po</strong>redja v <strong>po</strong>linomskem času.<br />

Vhod s 0 ∈ Z k 2 bomo im<strong>eno</strong>vali seme, izhod f(s 0 ) ∈<br />

(Z 2 ) l pa psevdo<strong>na</strong>ključno za<strong>po</strong>redje bitov.<br />

Funkcija f je deterministič<strong>na</strong> (odvis<strong>na</strong> samo od<br />

seme<strong>na</strong>).<br />

Namesto nereda, statistike, je za kriptografijo bolje<br />

študirati (ne)<strong>na</strong><strong>po</strong>vedovanje <strong>na</strong>slednjega čle<strong>na</strong>.<br />

Kdo skuša <strong>na</strong><strong>po</strong>vedovati<br />

Aleksandar Jurišić 855<br />

Aleksandar Jurišić 856<br />

Aleksandar Jurišić 857<br />

Aleksandar Jurišić 858<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Ali lahko kdorkoli (z izjemo generatorja) v<br />

<strong>po</strong>linomskem času <strong>po</strong>išče <strong>po</strong>linomski algoritem<br />

za <strong>na</strong><strong>po</strong>ved <strong>na</strong>slednjega bita<br />

(Dodatno dovolimo še <strong>po</strong>z<strong>na</strong>vanje <strong>po</strong>dza<strong>po</strong>redja<br />

bitov.)<br />

Krepko psevdo<strong>na</strong>ključno za<strong>po</strong>redje bitov {b i }<br />

ima lastnost, da ne obstaja <strong>po</strong>linomski algoritem, ki<br />

bi iz za<strong>po</strong>redja b j b j+1 ...b j+m−1 <strong>na</strong><strong>po</strong>vedal bit b j−1 .<br />

Od tod pa sledi, da noben <strong>po</strong>linomski algoritem ne loči<br />

krepko psevdo<strong>na</strong>ključnega za<strong>po</strong>redja bitov od resnično<br />

<strong>na</strong>ključnih bitov.<br />

U<strong>po</strong>raba<br />

Eden izmed konceptov <strong>po</strong><strong>po</strong>lne varnosti, ki smo ga<br />

študirali v <strong>po</strong>glavju o entropiji, je enkratni ščit<br />

(Čistopis in ključ sta dve za<strong>po</strong>redji bitov, ki ju<br />

zašifriramo tako, da ju seštejemo z XORjem.)<br />

Njegov praktični problem je generiranje, izmenjava in<br />

dolži<strong>na</strong> ključa, tj. <strong>na</strong>ključnega za<strong>po</strong>redja bitov.<br />

PRBG zmanjša <strong>po</strong>trebno količino <strong>na</strong>ključnih bitov.<br />

Primeri PRNG<br />

• LFSR (Linear Feedback Shift Register) stopnje k za<br />

dano k-bitno seme generira dodatnih 2 k −k −1 bitov,<br />

preden se začne <strong>po</strong><strong>na</strong>vljati,<br />

• za<strong>po</strong>red<strong>na</strong> u<strong>po</strong>raba<br />

– <strong>po</strong>tenciranja (DLP),<br />

– simetričnega sistema,<br />

– zgoščevalne funkcije itd.,<br />

• majhne, <strong>eno</strong>stavne in <strong>po</strong>ceni elektronske <strong>na</strong>prave<br />

Intel <strong>na</strong>črtuje vgraditev v Pentium III mikroprocesor<br />

hardwarski RNG, glej <strong>na</strong>šo domačo <strong>stran</strong>).<br />

Intel starts preaching about security<br />

EE Times Print, By Craig Matsumoto<br />

(01/21/99, 3:27 p.m. EDT)<br />

Intel: We won’t track ID chips PC chip giant says<br />

it’s walking on glass over the privacy considerations<br />

of new processor ID scheme<br />

ZDNN, By Robert Lemos<br />

(January 21, 1999 5:49 PM PT)<br />

Aleksandar Jurišić 859<br />

Aleksandar Jurišić 860<br />

Aleksandar Jurišić 861<br />

Aleksandar Jurišić 862


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

... For starters, Intel will burn a unique, secret<br />

identification number into every Pentium III that<br />

will ship.<br />

...<br />

Because the ID number also could be a privacy<br />

threat, Intel plans to allow end users to block<br />

transmission of the number, re<strong>po</strong>rtedly through a<br />

software patch. ...<br />

For companies that sell into cor<strong>po</strong>rate networking<br />

environments, the ID number is a long-awaited<br />

relief. “We had dreamed of having a ’serial<br />

number’ on the motherboard,” ...<br />

... Intel plans to provide a hardware-based randomnumber<br />

generator in every PC. The flaw in<br />

computer-generated pseudorandom numbers is that<br />

they fall in deterministic sequence; each “random”<br />

number is calculated based on its predecessor,<br />

making cycles and subtle patterns inevitable. Truly<br />

random numbers can only be gathered through<br />

physical ph<strong>eno</strong>me<strong>na</strong>, such as radioactive decay or,<br />

in Intel’s case, thermal noise.<br />

... Chances are, the hardware random-number<br />

generator will be used to select a “seed”, or<br />

starting <strong>po</strong>int, for an application’s pseudorandom<br />

generator. ...<br />

V primeru LFSR <strong>po</strong>trebujemo 2k za<strong>po</strong>rednih bitov za<br />

izračun seme<strong>na</strong>. Torej PRBG iz LFSR ni varen.<br />

Zalo hiter <strong>na</strong>čin za konstrukcijo PRBG s sem<strong>eno</strong>m<br />

dolžine k 1 +k 2 iz dveh LFSR (stopnjik 1 ,k 2 ) so predlagali<br />

Coppersmith, Krawczyk in Mansour<br />

(angl. Shrinking Generator):<br />

Če <strong>na</strong>m da prvi LFSR a 1 ,a 2 ,..., drugi LFSR<br />

pa b 1, b 2, ..., definiramo za<strong>po</strong>redje prevdo-<strong>na</strong>ključnih<br />

bitov z 1 ,z 2 , ... s pravilom<br />

z i = a ik ,<br />

kjer je i k mesto k-te enice v za<strong>po</strong>redju b 1, b 2,....<br />

Čeprav je zgornja metoda za genereranje <strong>na</strong>ključnih<br />

bitov izredno učinkovita in od<strong>po</strong>r<strong>na</strong> proti mnogim<br />

<strong>na</strong>padom, pa se ni nikomur <strong>po</strong>srečilo, da bi dokazal<br />

nj<strong>eno</strong> varnost.<br />

Naj bosta p in q dve (k/2)-bitni praštevili (privatni)<br />

in n = pq (javen). Izberimo si tak b (javen), da je<br />

D(b,φ(n)) = 1.<br />

Naj ima seme s 0 ∈ Z ∗ n k-bitov. Za i ≥ 1 definiramo<br />

s i+1 = s b i mod n in f(s 0 ) = (z 1 , ...,z l ),<br />

kjer je z i = s i mod 2, 1 ≤ i ≤ l.<br />

Potem je (k, l)-RSA generator.<br />

Aleksandar Jurišić 863<br />

Aleksandar Jurišić 864<br />

Aleksandar Jurišić 865<br />

Aleksandar Jurišić 866<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Generator 1 P<br />

P je dano praštevilo, b pa baza številskega sistema,<br />

1 < b < P, ki je primitiven koren <strong>po</strong> modulu P.<br />

To za<strong>po</strong>redje je generirano s števkami števila 1/P v<br />

številskem sistemu z osnovo b.<br />

Čeprav za<strong>po</strong>redje “izgleda <strong>na</strong>ključno” zaradi periode<br />

P − 1 (če je P recimo 50-mestno) in ima dobre<br />

statistične lastnosti, se izkaže, da se ta generator da<br />

<strong>na</strong><strong>po</strong>vedati.<br />

Izrek. Iz ⌈log b 2P 2 ⌉-bitnega <strong>po</strong>dza<strong>po</strong>redja lahko<br />

opazovalec v <strong>po</strong>linomskem času od log b P določi<br />

<strong>na</strong>slednji člen za<strong>po</strong>redja.<br />

Primer: Naj bo b = 10, dodatno pa pred<strong>po</strong>stavimo,<br />

da ne <strong>po</strong>z<strong>na</strong>mo P.<br />

Generator vprašamo za 3 števke in dobimo: 407.<br />

Število 0.407 = 407/1000 zapišemo v obliki verižnega<br />

ulomka:<br />

407<br />

1000 = 0 + 1<br />

1<br />

2 +<br />

2+ 1<br />

5+ 1<br />

3+ 1<br />

5+ 1 2<br />

= [0, 2, 2, 5, 3, 5, 2],<br />

Za<strong>po</strong>redje: 0, .5, .4, .4074, .406, .4070, .407=407/1000.<br />

Prvi člen zgornjega za<strong>po</strong>redja, ki ujame .407, je 11/27<br />

in <strong>na</strong><strong>po</strong>ve, da bo <strong>na</strong>slednja števka 4.<br />

Generator pa <strong>na</strong>m da 3.<br />

Ponovimo proces za 4073/10000 in dobimo 145/356 =<br />

.40730..., ki ujame .4073 in <strong>na</strong><strong>po</strong>ve 0.<br />

Aleksandar Jurišić 867<br />

Aleksandar Jurišić 868<br />

Aleksandar Jurišić 869<br />

Aleksandar Jurišić 870


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Generator pa <strong>na</strong>m da 3.<br />

Ponovimo proces za 40733/100000 in dobimo<br />

200/491 = .40733197556008146639511201629327902...<br />

Ker se <strong>na</strong>slednjih 30 števk generatorja ujema z <strong>na</strong>šimi,<br />

sprejmemo za P = 491 (SASA!!! preveri referenco).<br />

Algoritem za psevdo<strong>na</strong>ključne bite<br />

Naj bo n = pq, kjer sta p in q praštevili, in <strong>na</strong>j bo c 0<br />

tako <strong>na</strong>ravno število, da je (c 0 /p) = (c 0 /q) = 1, kjer<br />

je (−/−) Legendrov simbol.<br />

1. Izberi x 0 ∈ Z ∗ n tako, da je D(x 0 + c 0,n) = 1<br />

2. Za začetni vrednosti x 0 in c 0 obnovi x i in c i (i ≥ 0) z<br />

x i+1 ≡ x i −c i x −1<br />

i (mod n) in c i+1 ≡ 4c i (mod n).<br />

3. Za i ≥ 0 izraču<strong>na</strong>j in izpiši za<strong>po</strong>redje {b i }:<br />

{<br />

1, če je xi > −c<br />

b i =<br />

ix −1<br />

i ;<br />

0, sicer.<br />

Blum-Blum-Shub generator<br />

Za različni praštevili p in q <strong>na</strong>j bo n = pq. Potem<br />

velja za Jacobijev simbol <strong>na</strong>slednje:<br />

⎧<br />

0, če D(x,n) > 1<br />

( x<br />

⎪⎨<br />

= 1, če<br />

n) ( (<br />

x<br />

p)<br />

=<br />

x<br />

(<br />

q)<br />

= 1 ali<br />

x<br />

(<br />

p)<br />

=<br />

x<br />

q)<br />

= −1<br />

⎪⎩ −1, če je ( x x<br />

p)(<br />

q)<br />

= −1.<br />

Naj bo<br />

QR(n) = {x 2 mod n |x ∈ Z ∗ n}.<br />

S<strong>po</strong>mnimo se, da je x ∈ QR(n) če in samo, če je<br />

( ( x x<br />

= = 1.<br />

p)<br />

q)<br />

Potem definiramo množico psevdokvadratov <strong>po</strong><br />

modulu n z<br />

(<br />

QR(n) ˜<br />

x<br />

= {x ∈ Z ∗ n\QR(n) | = 1}<br />

n)<br />

oziroma<br />

( (<br />

QR(n) ˜<br />

x x<br />

= {x ∈ Z ∗ n | = = −1}.<br />

p)<br />

q)<br />

Aleksandar Jurišić 871<br />

Aleksandar Jurišić 872<br />

Aleksandar Jurišić 873<br />

Aleksandar Jurišić 874<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

13. <strong>po</strong>glavje<br />

Reference<br />

Dokazi brez razkritja z<strong>na</strong>nja<br />

Vohunova dilema<br />

Naj bo seme s 0 <strong>po</strong>ljuben element iz QR(n). Za i ≥ 0<br />

definiramo<br />

s i+1 = s 2 i mod n in f(s 0) = (z 1,...,z l),<br />

kjer je z i = s i mod 2, 1 ≤ i ≤ l.<br />

Potem je (k,l)-PRBG, im<strong>eno</strong>van BBS-generator.<br />

[GW] I. Goldberg and D. Wagner, Randomness and the Netscape Browser, Dr. Dobb’s Jour<strong>na</strong>l,<br />

January 1996, 66-70.<br />

[Ba] S. Bassein, A Sampler of Randomness, American Mathematical Monthly 103 (1996), 483-490.<br />

[KSWH] J. Kelsey, B. Schneier, D. Wagner and C. Hall, Cryptoa<strong>na</strong>lytic Attacks on Pseudorandom<br />

Number Generators, probably from the Internet, 21 pages.<br />

[P] C. Plumb, Truly Random Numbers, Dr. Dobb’s Jour<strong>na</strong>l, November 1994, 113-114, 137-139.<br />

[NGGLG] J. No, S. W. Solomon, G. Gong, H. Lee and P. Gaal, Bi<strong>na</strong>ry Pseudorandom Sequences<br />

of Period 2 n −1 with Ideal Autocorrelation, IEEE Transactions of Information Th. 44, March<br />

1998, 814-817<br />

[NGGLG] A. Chang, P. Gaal, S. W. Golomb, G. Gong and P. V. Kumar, Some Results Relating<br />

to a Sequence Conjectured to have Ideal Autocorrelation, submitted to IEEE Transactions<br />

of Information Th. in July 1998.<br />

[Ch] G. J. Chaitin, Randomness in Arithmetic, Scientific American, July 1988, 52-57.<br />

• sistemi za interaktivno dokazovanje<br />

• <strong>po</strong><strong>po</strong>lni dokazi brez razkritja z<strong>na</strong>nja<br />

• zapriseženi biti (angl. bit commitments)<br />

• računski dokazi brez razkritja z<strong>na</strong>nja<br />

• argumenti brez razkritja skrivnosti<br />

(angl. zero-knowledge arguments)<br />

Dokaz brez razkritja z<strong>na</strong>nja omogoča eni osebi,<br />

da prepriča drugo osebo o nekem dejstvu, ne da bi pri<br />

tem izdala katerokoli informacijo o dokazu.<br />

Bilo je temno kot v rogu, ko se je vohun vračal v<br />

grad <strong>po</strong> opravljeni diverziji v sovražnem taboru.<br />

Ko se je približal vratom, je zaslišal šepetajoč<br />

glas:<br />

Geslo ali streljam!<br />

Ali šepeta prijatelj ali sovražnik<br />

Kako lahko vohun prepriča “stražarja”, da <strong>po</strong>z<strong>na</strong><br />

geslo, ne da bi ga pri tem izdal morebitnemu<br />

vsiljivcu/prisluškovalcu<br />

Aleksandar Jurišić 875<br />

Aleksandar Jurišić 876<br />

Aleksandar Jurišić 877<br />

Aleksandar Jurišić 878


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Sistemi za interaktivno dokazovanje<br />

(angl. Interactive Proof System)<br />

Primož (“prover”) ima neko skrivnost in bi rad dokazal<br />

Veri (“verifier”), da jo res ima.<br />

Privzemimo, da sta Primož in Vera probabilistič<strong>na</strong><br />

algoritma, ki komunicirata preko javnega ka<strong>na</strong>la. Vsak<br />

od njiju bo privatno raču<strong>na</strong>l in imel privatni generator<br />

<strong>na</strong>ključnih števil.<br />

Na začetku imata Primož in Vera skupen <strong>po</strong>datek<br />

x. Cilj interaktivnega dokaza je, da ima ta x neko<br />

določ<strong>eno</strong> lastnost. Bolj <strong>na</strong>tančno, x je DA-primer<br />

konkretnega odločitvenega problema Π.<br />

Protokol je sestavljen iz več krogov, ki se sestojijo iz<br />

Verinega izziva in Primoževega odgovora. Na koncu<br />

<strong>po</strong>stopka Vera bodisi sprejme ali zavrne dokaz,<br />

glede <strong>na</strong> to ali, Primož uspešno prestal izzive ali ne.<br />

Protokol je interaktivni dokaz za odločitveni<br />

problem Π, če sta iz<strong>po</strong>lnjeni <strong>na</strong>slednji lastnosti,<br />

kadar Vera sledi protokolu:<br />

<strong>po</strong>lnost: če je odgovor odločitvenega problema Π<br />

<strong>po</strong>zitiven, Vera vedno sprejme Primožev dokaz,<br />

uglaš<strong>eno</strong>st: če je odgovor odločitvenega problema<br />

Π negativen, je verjetnost, da Vera sprejme<br />

Primožev dokaz, zelo majh<strong>na</strong>.<br />

Omejili se bomo <strong>na</strong> sisteme interaktivnih dokazov, v<br />

katerih so Verini računi opravljeni v <strong>po</strong>linomskem času.<br />

Po drugi stani pa ne <strong>po</strong>stavljamo nobene omejitve za<br />

računsko moč, ki jo ima <strong>na</strong> voljo Primož.<br />

Problem (izomorfizem grafov):<br />

dva grafa z n vozlišči G i = (V 1 ,E i ), i = 1, 2.<br />

Vprašanje:<br />

Ali obstaja izomorfizem grafov π : V 1 −→ V 2 <br />

Za ta problem ne <strong>po</strong>z<strong>na</strong>mo <strong>po</strong>linomskega algoritma,<br />

kljub temu pa ni z<strong>na</strong>no, ali je ta problem NP-<strong>po</strong>ln.<br />

Sistem za interaktivno dokazovanje, ki Primožu<br />

omogoči, da dokaže, da določe<strong>na</strong> grafa nista izomorf<strong>na</strong>:<br />

Podatki: grafa G 1 in G 2 z vozlišči {1, 2, ...,n}.<br />

Protokol: n-krat <strong>po</strong>novi <strong>na</strong>slednje korake:<br />

1. Vera izbere <strong>na</strong>ključno permutacijo vozlišč π<br />

in število i ∈ {1, 2} ter <strong>po</strong>šlje Primožu<br />

graf H, ki ga dobi iz G i s permutacijo π.<br />

2. Primož ugotovi, za kateri j je G j izomorfen<br />

grafu H, in <strong>po</strong>šlje j Veri, ki preveri, ali je i = j.<br />

Vera sprejme Primožev dokaz, če je vedno i = j.<br />

Aleksandar Jurišić 879<br />

Aleksandar Jurišić 880<br />

Aleksandar Jurišić 881<br />

Aleksandar Jurišić 882<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Polnost: če grafa G 1 in G 2 nista izomorf<strong>na</strong><br />

(in mora biti odgovor <strong>po</strong>zitiven), bo j = i v vsakem<br />

krogu in bo Vera gotovo sprejela Primožev dokaz.<br />

Uglaš<strong>eno</strong>st: če sta G 1 in G 2 izomorf<strong>na</strong> grafa<br />

(in <strong>na</strong>j bi bil odgovor negativen),<br />

Primož nima možnosti, da bi ugotovil, če je Vera<br />

skonstruirala H iz G 1 ali G 2 in lahko v <strong>na</strong>jboljšem<br />

primeru <strong>po</strong>skusi v svojem odgovoru uganiti, ali je<br />

j = 1 ali pa j = 2. Torej je verjetnost, da Vera<br />

sprejme vseh n pravilnih odgovorov 2 −n .<br />

Verini algoritmi so <strong>po</strong>linomski, medtem ko je<br />

Primož imel <strong>na</strong> voljo neomej<strong>eno</strong> računsko moč<br />

(kar je dovolj<strong>eno</strong>/<strong>po</strong>trebno).<br />

Po<strong>po</strong>lni dokazi brez razkritja z<strong>na</strong>nja<br />

Sedaj pa si <strong>po</strong>glejmo <strong>po</strong>seben primer sistemov za<br />

interaktivno dokazovanje, ki jih imenujemo dokazi brez<br />

razkritja z<strong>na</strong>nja.<br />

Primož prepriča Vero, da ima x neko določ<strong>eno</strong> lastnost,<br />

pri tem pa Vera še vedno ne ve, kako bi sama dokazala,<br />

da ima x to lastnost.<br />

Formal<strong>na</strong> definicija je precej zaplete<strong>na</strong>, zato si <strong>na</strong>jprej<br />

oglejmo primer:<br />

sistem za <strong>po</strong><strong>po</strong>lni dokaz brez razkritja<br />

z<strong>na</strong>nja za izomorfizem grafov.<br />

Podatki: grafa G 1 in G 2 z vozlišči {1, 2, ...,n}.<br />

Protokol: n-krat <strong>po</strong>novi <strong>na</strong>slednje korake:<br />

1. Primož izbere <strong>na</strong>ključno permutacijo vozlišč π<br />

ter <strong>po</strong>šlje Veri graf H, ki ga dobi iz G 1 s<br />

permutacijo π.<br />

2. Vera izbere <strong>na</strong>ključno število i ∈ {1, 2} in ga<br />

<strong>po</strong>šlje Primožu.<br />

3. Primož izraču<strong>na</strong> permutacijo vozlišč ρ, s<br />

katero dobimo graph H iz G i , ter jo <strong>po</strong>šlje<br />

Veri, ki preveri, ali z njo res dobi H iz G i .<br />

Vera sprejme Primožev dokaz, če v vsakem krogu<br />

res dobimo H iz G i s Primoževo permutacijo ρ.<br />

Permutacija ρ, ki jo Primož izraču<strong>na</strong> v 3. koraku, je za<br />

i = 1 e<strong>na</strong>ka π, za i = 2 pa kom<strong>po</strong>zitumu permutacij σ<br />

in π, kjer je σ permutacija, s katero dobimo G 1 iz G 2.<br />

Polnost je očit<strong>na</strong>, kakor tudi uglaš<strong>eno</strong>st, saj je edini<br />

<strong>na</strong>čin, da Primož prevara Vero, da si vsakokrat<br />

pravilno izbira i, ki ga bo dobil od Vere, Veri pa <strong>po</strong>šlje<br />

H = π(G i ).<br />

Vse Verine operacije imajo <strong>po</strong>linomsko zahtevnost,<br />

e<strong>na</strong>ko pa velja tudi za Primoževe operacije, vendar le<br />

s <strong>po</strong>gojem, če <strong>po</strong>z<strong>na</strong> izomorfizem med G 1 in G 2 .<br />

Aleksandar Jurišić 883<br />

Aleksandar Jurišić 884<br />

Aleksandar Jurišić 885<br />

Aleksandar Jurišić 886


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Vse, kar je dobila Vera, je nekaj <strong>na</strong>ključnih permutacij<br />

grafov G 1 in G 2 (ki bi jih lahko skonstruirala tudi<br />

sama).<br />

Informacije, ki jih je dobila Vera, imenujmo zapis in<br />

se sestojijo iz:<br />

1. grafa G 1 in G 2 z vozlišči {1, 2,...,n},<br />

2. vseh s<strong>po</strong>ročil, ki sta jih <strong>po</strong>slala Primož in Vera.<br />

V primeru problema izomorfnosti grafov ima zapis<br />

<strong>na</strong>slednjo obliko:<br />

T IG = ((G 1,G 2); (H 1, i 1,ρ 1); ...;(H n,i n,ρ n)).<br />

Poudarjamo, da lahko vsakdo <strong>po</strong><strong>na</strong>redi zapis (ne da bi<br />

<strong>po</strong>z<strong>na</strong>l pravi zapis), če sta vhod<strong>na</strong> grafa G 1 in G 2 res<br />

izomorf<strong>na</strong>. Tak algoritem se imenuje simulator.<br />

Definicija 1: Pred<strong>po</strong>stavimo, da imamo<br />

1. sistem za interaktivni dokaz odločitvenega<br />

problema Π s <strong>po</strong>linomsko časovno zahtevnostjo,<br />

2. simulator S s <strong>po</strong>linomsko časovno zahtevnostjo.<br />

Naj bo T (x) množica vseh možnih zapisov,<br />

ki ju lahko ustvarita Primož in Vera med<br />

interaktivnim dokazom za DA-primer x.<br />

Naj bo F(x) množica vseh možnih <strong>po</strong><strong>na</strong>rejenih<br />

zapisov za simulator S.<br />

Za <strong>po</strong>ljuben zapis T ∈ T (x) <strong>na</strong>j bo p T (T)<br />

verjetnost, da je T zapis interaktivnega dokaza.<br />

Za <strong>po</strong>ljuben zapis T ∈ F(x) <strong>na</strong>j bo p F (T)<br />

verjetnost, da je T <strong>po</strong><strong>na</strong>rejen zapis simulatorja S.<br />

Če je T (x) = F(x) in za vsak T ∈ T (x) velja<br />

p T (T) = p F (T), <strong>po</strong>tem je sistem za interaktivni<br />

dokaz <strong>po</strong><strong>po</strong>ln dokaz za razkritje z<strong>na</strong>nja<br />

(za Vero).<br />

Z drugimi besedami: Vera lahko stori <strong>po</strong>tem, ko je<br />

izvedla protokol, samo toliko kot simulator, <strong>po</strong>tem ko<br />

je zgeneriral <strong>po</strong><strong>na</strong>rejeni zapis.<br />

Izrek 1: Sistem z interaktivnim dokazom za<br />

problem izomorfizema grafov je <strong>po</strong><strong>po</strong>ln dokaz<br />

brez razkritja z<strong>na</strong>nja za Vero.<br />

Dokaz: Naj bosta G 1 in G 2 grafa z vozlišči<br />

{1, 2, ...,n}. Prepis (pravi ali <strong>po</strong><strong>na</strong>rejeni) se sestoji iz<br />

trojic (H,i,ρ), kjer je i ∈ {1, 2}, ρ permutacija vozlišč<br />

in H graf, ki ga dobimo iz G i s permutacijo ρ.<br />

Taki trojici bomo rekli, da je veljav<strong>na</strong>, množico vseh<br />

veljavnih trojic pa bomo oz<strong>na</strong>čili z R. Potem je<br />

|R| = 2n!, verjetnosti <strong>po</strong>sameznih trojic pa so med<br />

seboj e<strong>na</strong>ke in je<br />

p T (T) = p F (T) = 1 za vsak zapis T.<br />

(2n!) n<br />

Aleksandar Jurišić 887<br />

Aleksandar Jurišić 888<br />

Aleksandar Jurišić 889<br />

Aleksandar Jurišić 890<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

V dokazu smo privzeli, da Vera sodeluje pri protokolu.<br />

Kaj pa če temu ni tako Recimo, da Vera v vsakem<br />

krogu <strong>na</strong>m<strong>eno</strong>ma izbere i = 1.<br />

Potem bo za razliko od Vere simulator sestavil tak<br />

zapis le z verjetnostjo 2 −n .<br />

Iz tega razloga bomo morali <strong>po</strong>kazati, da je <strong>po</strong>linomski<br />

simulator, ki bo sestavil <strong>po</strong><strong>na</strong>rejen zapis, ki je videti<br />

kot Primožev zapis, <strong>na</strong>stal v sodelovanju z goljufivo<br />

Vero.<br />

Definicija 2: Pred<strong>po</strong>stavimo, da imamo<br />

1. sistem za interaktivni dokaz odločitvenega<br />

problema Π s <strong>po</strong>linomsko časovno zahtevnostjo,<br />

2. za probabilistični algoritem V ∗ (<strong>po</strong> možnosti<br />

goljufiv) s <strong>po</strong>linomsko časovno zahtevnostjo<br />

<strong>na</strong>j bo S ∗ = S ∗ (V ∗ ) simulator s <strong>po</strong>linomsko<br />

časovno zahtevnostjo.<br />

Naj bo T (V ∗ ,x) množica vseh možnih zapisov,<br />

ki ju lahko ustvarita Primož in V ∗ med<br />

interaktivnim dokazom za DA-primer x.<br />

Naj bo F(V ∗ , x) množica vseh možnih <strong>po</strong><strong>na</strong>rejenih<br />

zapisov za simulator S ∗ .<br />

Za <strong>po</strong>ljuben zapis T ∈ T (V ∗ ,x) <strong>na</strong>j bo p T (T)<br />

verjetnost, da je T zapis interaktivnega dokaza z V ∗ .<br />

Za <strong>po</strong>ljuben zapis T ∈ F(V ∗ , x) <strong>na</strong>j bo p F (T)<br />

verjetnost, da je T <strong>po</strong><strong>na</strong>rejen zapis simulatorja S.<br />

Če je T (V ∗ , x) = F(V ∗ , x) in za vsak T ∈ T (x) velja<br />

p T ,V ∗(T) = p F,V ∗(T), <strong>po</strong>tem je sistem za interaktivni<br />

dokaz <strong>po</strong><strong>po</strong>ln dokaz brez razkritja z<strong>na</strong>nja<br />

(brez o<strong>po</strong>rekanja).<br />

Če vzamemo za V ∗ <strong>po</strong>št<strong>eno</strong> Vero, dobimo staro<br />

definicijo <strong>po</strong><strong>po</strong>lnega dokaza brez razkritja z<strong>na</strong>nja za<br />

Vero.<br />

Da bi <strong>po</strong>kazali, da je sistem za dokazovanje<br />

<strong>po</strong><strong>po</strong>ln dokaz brez razkritja z<strong>na</strong>nja, <strong>po</strong>trebujemo<br />

generično transformacijo, ki skonstruira simulator S<br />

iz <strong>po</strong>ljubnega V ∗ .<br />

Storimo to <strong>na</strong> primeru problema izomorfizma grafov.<br />

Simulator S ∗ <strong>po</strong>skuša uganiti izziv i j , ki ga <strong>po</strong>šlje V ∗<br />

v vsakem krogu j, tj. S ∗ generira trojico (H j , i j ,ρ j )<br />

in <strong>po</strong>kliče V ∗ , da dobi izziv i ′ j:<br />

• če je i j = i ′ j , <strong>po</strong>tem priključimo trojico k zapisu,<br />

• če je i j ≠ i ′ j , <strong>po</strong>tem S∗ izbere nov izziv i j<br />

ter <strong>po</strong>novno <strong>po</strong>žene V ∗ s starim stanjem.<br />

Aleksandar Jurišić 891<br />

Aleksandar Jurišić 892<br />

Aleksandar Jurišić 893<br />

Aleksandar Jurišić 894


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Čeprav je možno, da se simulator s<strong>po</strong>h ne bi ustavil,<br />

lahko <strong>po</strong>kažemo, da je <strong>po</strong>vprečen čas simulatorja<br />

<strong>po</strong>linomski in da sta verjetnostni <strong>po</strong>razdelitvi p T ,V ∗(T)<br />

in p F,V ∗(T) identični.<br />

Izrek 2: Sistem z interaktivnim dokazom za<br />

problem izomorfizem grafov je <strong>po</strong><strong>po</strong>ln dokaz<br />

brez razkritja z<strong>na</strong>nja.<br />

Dokaz: Ne glede <strong>na</strong> to, kako V ∗ generira izziv i j,<br />

je verjetnost, da ga bo simulator S ∗ zadel z i ′ j e<strong>na</strong>ka<br />

1/2. Torej <strong>po</strong>trebuje S ∗ v <strong>po</strong>vprečju dve trojici za en<br />

dodatek <strong>po</strong><strong>na</strong>rejenemu zapisu in je njegov <strong>po</strong>vprečni<br />

čas <strong>po</strong>linomsko odvisen od n.<br />

Drugi del (p T ,V ∗(T) = p F,V ∗(T) za vsak T) je težji,<br />

saj je izbira izziva lahko odvis<strong>na</strong> od prejšnjih izzivov<br />

in Primoževih odzivov <strong>na</strong>nje. U<strong>po</strong>rabimo indukcijo <strong>na</strong><br />

število krogov.<br />

Za 0 ≤ j ≤ n <strong>na</strong>j bosta p T ,V ∗ ,j(T) in p F,V ∗ ,j(T)<br />

verjetnostni distribuciji <strong>na</strong> množici delnih zapisov T j ,<br />

ki jih lahko dobimo <strong>na</strong> koncu j-tega kroga.<br />

Očitno je p T ,V ∗ ,0(T) = p F,V ∗ ,0(T) za vsak T ∈ T 0.<br />

Sedaj pa pred<strong>po</strong>stavimo, da sta verjetnostni<br />

distribuciji p T ,V ∗ ,j in p F,V ∗ ,j identični <strong>na</strong> T j−1 za j ≥ 1.<br />

Naj bo verjetnost, da je v j-tem krogu iterativnega<br />

dokaza izziv i ′ j = 1 neko število p 1 ∈ IR, ki je odvisno<br />

od stanja algoritma V ∗ .<br />

Potem je verjetnost, da je (H,i,ρ) trojica <strong>na</strong> zapisu<br />

e<strong>na</strong>ka p 1 /n!, če je i − 1 in (1 − p 1 )/n! sicer.<br />

Simulator pa bo zapisal v zapis trojico (H,i,ρ) z<br />

verjetnostjo<br />

p 1<br />

(1 + 1 2n! 2 + 1 ·)<br />

4 + · · = p1<br />

n! ,<br />

če je i = 1 in verjetnostjo (1 − p 1)/n! sicer.<br />

Po indukciji je dokaz končan.<br />

Problem (kvadratni ostanki)<br />

Podatki: število n z nez<strong>na</strong>no faktorizacijo n = pq,<br />

kjer sta p in q praštevili in x ∈ QR(n).<br />

Protokol: log 2 n-krat <strong>po</strong>novi <strong>na</strong>slednje korake:<br />

1. Primož izbere <strong>na</strong>ključno število v ∈ Z ∗ n,<br />

izraču<strong>na</strong> y = v 2 mod n in ga <strong>po</strong>šlje Veri.<br />

2. Vera izbere i ∈ {1, 2} in ga <strong>po</strong>šlje Primožu.<br />

3. Primož izraču<strong>na</strong> z = u i v mod n, kjer je u<br />

kvadratni koren iz x, in ga <strong>po</strong>šlje Veri.<br />

4. Vera preveri, ali je z 2 ≡ x i y (mod n).<br />

Vera sprejme Primožev dokaz, če je bilo v vsakem<br />

krogu res z 2 ≡ x i y (mod n).<br />

Aleksandar Jurišić 895<br />

Aleksandar Jurišić 896<br />

Aleksandar Jurišić 897<br />

Aleksandar Jurišić 898<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Poglejmo si še en problem. Le-ta je <strong>po</strong>vezan s<br />

problemom diskretnega logaritma.<br />

Problem (članstvo v <strong>po</strong>dgrupi):<br />

števila n,l ∈ IN in različ<strong>na</strong> elementa α, β ∈ Z ∗ n,<br />

pri čemer je l red elementa α v grupi Z ∗ n.<br />

Vprašanje:<br />

ali je β = α k za neko število k, 0 ≤ k ≤ l − 1,<br />

tj. ali je β element <strong>po</strong>dgrupe, generirane z α<br />

Za D.N. preverite, da je <strong>na</strong>slednji interaktivni dokaz<br />

zares <strong>po</strong><strong>po</strong>ln dokaz brez razkritja z<strong>na</strong>nja.<br />

Podatki: število n ∈ IN in<br />

različ<strong>na</strong> elementa α, β ∈ Z ∗ n,<br />

pri čemer je l (javen) red elementa α v grupi Z ∗ n.<br />

Protokol: log 2 n-krat <strong>po</strong>novi <strong>na</strong>slednje korake:<br />

1. Primož izbere <strong>na</strong>ključno število j ∈ Z l ,<br />

izraču<strong>na</strong> γ = α j mod n, in ga <strong>po</strong>šlje Veri.<br />

2. Vera izbere i ∈ {1, 2} in ga <strong>po</strong>šlje Primožu.<br />

3. Primož izraču<strong>na</strong> h = j + ik mod l,<br />

kjer je k = log α β in ga <strong>po</strong>šlje Veri.<br />

4. Vera preveri, ali je α h ≡ β i γ (mod n).<br />

Vera sprejme Primožev dokaz, če je bilo v vsakem<br />

krogu res α h ≡ β i γ (mod n).<br />

(angl. Bit Commitments)<br />

Zapriseženi biti<br />

Izomorfizem grafov je gotovo zanimiv problem, a<br />

bi bilo še lepše, če bi <strong>po</strong>z<strong>na</strong>li kakšen sistem z dokazom<br />

brez razkritja z<strong>na</strong>nja za NP-<strong>po</strong>ln problem.<br />

Teoretični rezultati kažejo, da ne obstajajo <strong>po</strong><strong>po</strong>lni<br />

dokazi brez razkritja z<strong>na</strong>nja za NP-<strong>po</strong>lne probleme.<br />

Opisali pa bomo sisteme za dokazovanje, ki imajo<br />

za odtenek šibkejšo stopnjo “nerazkritja”, tako<br />

im<strong>eno</strong>vano računsko nerazkritje. Te sisteme bomo<br />

opisali v <strong>na</strong>slednjem razdelku, tu pa opišimo metode,<br />

ki jih u<strong>po</strong>rabljamo v sistemih dokazovanja.<br />

Oglejmo si <strong>na</strong>slednji sce<strong>na</strong>rij:<br />

Primož <strong>na</strong>piše <strong>na</strong> list papirja neko s<strong>po</strong>ročilo, ga zaklene<br />

v sef s samo njemu <strong>po</strong>z<strong>na</strong>no kombi<strong>na</strong>cijo in sef izroči<br />

Veri.<br />

Čeprav Vera ne <strong>po</strong>z<strong>na</strong> s<strong>po</strong>ročila, dokler je sef zaklenjen,<br />

je Primož “zaobvezan”, tj. ne more več spremeniti<br />

s<strong>po</strong>ročila.<br />

Če Vera ne <strong>po</strong>z<strong>na</strong> kombi<strong>na</strong>cije, ne more priti do<br />

s<strong>po</strong>ročila, dokler ji Primož ne izda kombi<strong>na</strong>cije<br />

(oziroma odpre sef).<br />

Aleksandar Jurišić 899<br />

Aleksandar Jurišić 900<br />

Aleksandar Jurišić 901<br />

Aleksandar Jurišić 902


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Naj bo s<strong>po</strong>ročilo en sam bit b ∈ {0, 1}, ki ga<br />

Primož zašifrira. To šifriranje bomo im<strong>eno</strong>vali shema<br />

zaobvezanih bitov. V splošnem je to funkcija<br />

f : {0, 1}×X −→ Y , kjer sta X in Y končni množici.<br />

Za shemo zaobvezanih bitov si želimo <strong>na</strong>slednjih<br />

lastnosti:<br />

1. prikrivanje (angl. concealing): Vera ne more<br />

določiti vrednost bita b iz funkcijske vrednosti<br />

f(b, x),<br />

2. vezava (angl. binding): Primož lahko odpre<br />

f(b, x) z odkritjem vrednosti x in s tem prepriča<br />

Vero, da je bil zašifriran b. Pri tem pa ne more<br />

odpreti f(b, x) v oba bita 0 in 1.<br />

Če želimo zapriseči za<strong>po</strong>redje bitov, lahko to storimo<br />

bit za bitom. V <strong>po</strong>glavju o generatoru <strong>na</strong>ključnih števil<br />

je omenje<strong>na</strong> taka metoda: Goldwasser-Micali<br />

probabilističen kriptosistem.<br />

Poleg sistemov za dokazovanje lahko te sheme za<br />

zaprisego bitov u<strong>po</strong>rabimo tudi za metanje kovanca<br />

<strong>po</strong> telefonu:<br />

Anita in Bojan se želita skupaj odločiti <strong>na</strong> osnovi meta<br />

kovanca, vendar pa se ne <strong>na</strong>hajata <strong>na</strong> istem mestu.<br />

Torej je nemogoče, da eden izmed njiju vrže kovanec,<br />

drugi pa preveri izid.<br />

Metoda z zapriseženimi biti <strong>na</strong>m <strong>po</strong>maga iz zagate:<br />

1. Anita izbere bit b ter <strong>po</strong>šlje f(b,x) Bojanu,<br />

2. Bojan <strong>po</strong>skuši uganiti b,<br />

3. Anita odklene b.<br />

Prikrivanje onemogoča Bojanu, da bi iz f(b, x)<br />

izraču<strong>na</strong>l b, vezava pa preprečuje Aniti, da bi se<br />

premislila za Bojanovim ugibanjem.<br />

Za p ≡ 3 (mod 4) smo se v 5.1.2 prepričali, da <strong>na</strong>m<br />

neizračunljivost DLP v Z ∗ p zagotavlja varnost drugega<br />

(<strong>na</strong>jmanjšega) bita (SLB) diskretnega logaritma.<br />

Naj bo X = {1, ...,p − 1} in Y = Z ∗ p in<br />

{ 0, če x ≡ 0, 1 (mod 4)<br />

SLB(x) =<br />

1, če x ≡ 2, 3 (mod 4),<br />

shemo za zaprisežene bite pa definirajmo z<br />

{ α<br />

f(b,x) =<br />

x mod p, če je SLB(x) = b<br />

α p−x mod p, če je SLB(x) ≠ b.<br />

Aleksandar Jurišić 903<br />

Aleksandar Jurišić 904<br />

Aleksandar Jurišić 905<br />

Aleksandar Jurišić 906<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Računski dokazi brez razkritja z<strong>na</strong>nja<br />

(angl. computatio<strong>na</strong>l Zero-knowledge Proofs)<br />

Definirajmo NP-<strong>po</strong>ln problem:<br />

Problem (pravilno 3-barvanje grafa):<br />

graf G = (V, E) z n vozlišči.<br />

Vprašanje:<br />

ali obstaja pravilno 3-barvanje grafa G,<br />

tj. ali obstaja taka funkcija φ : V (G) −→ {1, 2, 3},<br />

da iz {u, v} ∈ E sledi φ(u) ≠ φ(v)<br />

Naj bo V = V (G) = {1,...,n} in m = |E|.<br />

Shema za zaprisežene bite f : {0, 1} × X −→ Y <strong>na</strong>j<br />

bo jav<strong>na</strong>.<br />

Zakodiranje barv: 1 → 01, 2 → 10, 3 → 11.<br />

Interaktivni dokaz z m 2 krogi:<br />

1. Primož zapriseže (se obveže za) barvanje, ki je<br />

permutacija nekega fiksnega barvanja φ.<br />

2. Vera zahteva od Primoža, da odkrije barvi dveh<br />

<strong>na</strong>ključno izbranih sosedov.<br />

3. Primož to stori, Vera pa preveri, če sta barvi zares<br />

različni.<br />

Polnost je očit<strong>na</strong>. Uglaš<strong>eno</strong>st pa sledi iz <strong>na</strong>slednjega<br />

razmisleka. Izraču<strong>na</strong>jmo verjetnost, da je Vera sprejela<br />

nepravilno 3-barvanje grafa G. Obstajati mora vsaj en<br />

par sosednjih vozlišč iste barve.<br />

Verjetnost, da Vera izbere to <strong>po</strong>vezavo, je 1/m, torej<br />

<strong>po</strong> m 2 krogih je verjetnost prevare kvečjemu<br />

(<br />

1 − 1 ) m 2<br />

.<br />

m<br />

Ker je lim m→∞ (1 − 1/m) m = e −1 , obstaja število m 0 ,<br />

za katero je (1 − 1/m) m2 ≤ (2/e) m za vse m ≥ m 0 .<br />

Sedaj pa preverimo še, kako je s <strong>po</strong><strong>po</strong>lnim dokazom<br />

brez razkritja z<strong>na</strong>nja. Vse, kar Vera vidi <strong>po</strong> vsakem<br />

krogu, je zašifrirano 3-barvanje <strong>na</strong> dveh sosednjih<br />

vozliščih (ki ga je prej zaprisegel Primož).<br />

Ker Primož <strong>po</strong> vsakem krogu spremeni permutacijo,<br />

Vera ne more kombinirati informacij iz različnih krogov<br />

in rekonstruirati 3-barvanje.<br />

Ta sistem ni <strong>po</strong><strong>po</strong>ln dokaz brez razkritja z<strong>na</strong>nja,<br />

je pa zato računski dokazi brez razkritja z<strong>na</strong>nja.<br />

Le-tega definiramo <strong>na</strong> e<strong>na</strong>k <strong>na</strong>čin kot prvega, le<br />

da zahtevamo za ustrez<strong>na</strong> zapisa, da sta kvečjemu<br />

<strong>po</strong>linomsko neločljiva.<br />

Aleksandar Jurišić 907<br />

Aleksandar Jurišić 908<br />

Aleksandar Jurišić 909<br />

Aleksandar Jurišić 910


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Argumenti brez razkritja skrivnosti<br />

(angl. Zero-knowledge Arguments)<br />

Če u<strong>po</strong>rabimo f(b,x), kjer je prikrivanje<br />

brez<strong>po</strong>gojno, Primož pa ima <strong>na</strong> voljo le <strong>po</strong>linomski čas,<br />

dobimo argument brez razkritja skivnosti.<br />

Poglejmo si še enkrat shemo za zaprisežene bite z<br />

DLP. Naj bo p praštevilo, za katerega je DLP v Z ∗ p<br />

neizračunljiv. Naj bo α primitiven element iz Z ∗ p in<br />

β ∈ Z ∗ p.<br />

Naj bo X = {0, ...,p − 1}, Y = Z ∗ p in funkcija f<br />

definira<strong>na</strong> z<br />

f(b,x) = β b α<br />

Dodatek A<br />

Dokaz izreka o gostoti praštevil<br />

• <strong>po</strong>možni izreki z dokazi<br />

• dve <strong>po</strong>sledici a<strong>na</strong>litičnega izreka<br />

• izrek o gostoti praštevil izpeljemo kot direktno<br />

<strong>po</strong>sledico druge <strong>po</strong>sledice a<strong>na</strong>litičnega izreka<br />

Dokaz: Sledimo D. Zagieru<br />

(Newman’s Short Proof of the PNT,<br />

American Mathematical Monthly, October 1997,<br />

<strong>stran</strong>i 705-709).<br />

Riemannova funkcija zeta<br />

∞∑ 1<br />

ζ(s) :=<br />

n s,<br />

kjer je s = σ + iτ, σ, τ ∈ IR.<br />

n=1<br />

Izrek I: V območju σ > 1<br />

(a) je vrsta ζ(s) absolutno konvergent<strong>na</strong>,<br />

(b) ζ(s) = ∏ 1<br />

1 − 1 [Euler, 1737],<br />

p p s<br />

(c) funkcija ζ(s) nima ničel.<br />

Aleksandar Jurišić 911<br />

Aleksandar Jurišić 912<br />

Aleksandar Jurišić 913<br />

Aleksandar Jurišić 914<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Dokaz izreka I: (a) Velja<br />

|n s | = |n σ ||n iτ | = |n σ |.<br />

∞∑<br />

∣ Majoranta<br />

1 ∣∣∣<br />

∣ je konvergent<strong>na</strong> <strong>po</strong> Raabejevem<br />

n s n=1<br />

kriteriju (ali pa integralskem kriteriju) za σ > 1.<br />

(b) ∑ n −s = ∑ ( )<br />

2<br />

r2 −s,<br />

3 r3 · · ·p rm<br />

m<br />

n n<br />

<strong>po</strong> drugi <strong>stran</strong>i pa imamo za različni praštevili p in q.<br />

(<br />

1 + 1 p + 1 + · · ·)(<br />

1 + 1 s p2s q + 1 )<br />

s q + · · · =<br />

2s<br />

( 1<br />

= 1 +<br />

p + 1 ) ( 1<br />

+<br />

s q s p + 1 1<br />

2s p s q + 1 )<br />

+ · · · =<br />

s q 2s<br />

= (1 − p −s ) −1 (1 − q −s ) −1<br />

Ker je |p −s |, |q −s | < 1 za σ > 1, lahko zaradi absolutne<br />

konvergence (člene lahko seštevano v <strong>po</strong>ljubnem<br />

vrstnem redu) sklepamo, da velja<br />

∑ ( ∑ ( ) 1 − p<br />

−s −1<br />

.<br />

n<br />

n −s = ∏ p<br />

(c) Z u<strong>po</strong>rabo trikotniške nee<strong>na</strong>kosti<br />

∣<br />

∣|a| − |b| ∣ ∣ ≤ |a ± b| ≤ |a| + |b|<br />

za <strong>po</strong>ljubni kompleksni števili a in b,<br />

za a = 1 in b = p −s , zapišemo<br />

∣<br />

∣1 − |p −s | ∣ ∣ ≤ |1 − p −s | ≤ 1 + |p −s | .<br />

Ker je |p s | = |p σ | velja<br />

∣ 1 ∣∣∣ 1<br />

∣ ><br />

1 − p −s 1 + p . −σ<br />

Torej je<br />

Toda<br />

za σ > 1.<br />

|ζ(s)| > ∏ p<br />

(1 + p −σ ) −1 .<br />

∏<br />

(1 + p −σ ) −1 = e − ∑ p log(1+p−σ )<br />

p<br />

= e − ∑ p ( 1<br />

p σ+ 1<br />

2p 2σ − 1<br />

> e − ∑ p<br />

3p 3σ+...) ><br />

1<br />

p σ > 0<br />

r∈IN0<br />

p −rs) = ∏ p<br />

Aleksandar Jurišić 915<br />

Aleksandar Jurišić 916<br />

Aleksandar Jurišić 917<br />

Aleksandar Jurišić 918


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Izrek II: Kompleksno funkcijo<br />

ζ(s) − 1<br />

s − 1<br />

je mogoče razširiti holomorfno v območje R(s) > 0.<br />

Posledica: Riemannova funkcija zeta ζ(s) ima v<br />

območju R(s)>0 en sam <strong>po</strong>l s=1 z residuumom 1.<br />

Dokaz izreka II: Za σ > 1 lahko zapišemo<br />

ζ(s) − 1<br />

s − 1 = ∞<br />

∑<br />

∞∑<br />

=<br />

i=1<br />

∫ n+1<br />

n<br />

n=1<br />

Ocenimo<br />

∫ n+1<br />

( 1<br />

∣ n − 1 )<br />

∣ ∣∣∣<br />

dx<br />

s x s ∣ = s<br />

n<br />

∫<br />

1 ∞<br />

n − s<br />

1<br />

( 1<br />

n s − 1 x s )<br />

dx.<br />

∫ n+1<br />

n<br />

n<br />

dx<br />

x s<br />

( ∫ x<br />

)<br />

du<br />

dx<br />

u s+1 ∣<br />

oziroma za n < ξ < n + 1<br />

∫ n+1<br />

( ∫ x<br />

)<br />

∣∫ ∣ s du<br />

∣∣∣ ξ<br />

∣<br />

dx<br />

u s+1 ∣ = |s| du ∣∣∣<br />

≤<br />

u s+1<br />

n<br />

≤ |s|<br />

∞∑<br />

Majoranta<br />

n<br />

∫ ξ<br />

n=1<br />

za vsak δ > 0.<br />

n<br />

du<br />

|u s+1 |<br />

≤<br />

n<br />

|s|<br />

|n s+1 | = |s|<br />

n . 1+R(s)<br />

1<br />

absolutno konvergira<br />

n1+δ Vpeljimo<br />

ϑ(x) := ∑ log p<br />

p≤x<br />

za x ∈ IR.<br />

Ponovimo: če za realni funkciji f(x) in g(x) ≥ 0<br />

obstaja konstanta M, tako da je<br />

|f(x)| ≤ Mg(x)<br />

za vsak x ∈ IR,<br />

pišemo f(x) = O(g(x)) ali <strong>na</strong> kratko f = O(g).<br />

Izrek III: ϑ(x) = O(x)<br />

Aleksandar Jurišić 919<br />

Aleksandar Jurišić 920<br />

Aleksandar Jurišić 921<br />

Aleksandar Jurišić 922<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Dokaz izreka III: Za <strong>na</strong>ravno število n velja<br />

2n∑<br />

( ) ( ) 2n 2n<br />

(1+1) 2n =<br />

≥ ≥<br />

∏<br />

p = e ϑ(2n)−ϑ(n)<br />

j n<br />

j=0<br />

n log 2<br />

ϑ(x) − ϑ(x/2) ≤ Cx,<br />

∀x ≥ x 0 = x 0 (C).<br />

Seštejmo zgornjo nee<strong>na</strong>kost za x, x 2 , x 4 , ..., x 2r, kjer je<br />

2 r ≥ x, in dobimo<br />

ϑ(x) ≤ 2Cx + O(1), ∀x .<br />

Trditev: Vrsta ∑ log p<br />

, s = σ + iτ, σ > 1 je<br />

ps p<br />

absolutno konvergent<strong>na</strong>.<br />

Dokaz: Če vstavimo v vrsto dodatne ničle, je nje<strong>na</strong><br />

majoranta ∑ log n<br />

n . s n∈IN<br />

Ker je σ > 1, ∃ ∆ > 0, tako da je σ = 1 + ∆<br />

in ∃δ > 0, da je δ < ∆, <strong>po</strong>tem velja<br />

log n<br />

= log n . 1<br />

n σ n ∆−δ n 1+δ<br />

kjer gre prvi faktor <strong>na</strong> desni <strong>stran</strong>i → 0 za x → ∞<br />

(<strong>po</strong> L’Hospitalu).<br />

Sedaj lahko vpeljemo kompleksno funkcijo<br />

Φ(s) := ∑ p<br />

log p<br />

p s<br />

za s ∈ IC,<br />

ki je holomorf<strong>na</strong> v območju R(s) > 1.<br />

Izrek IV: Kompleks<strong>na</strong> funkcija<br />

Φ(s) − 1<br />

s − 1<br />

je holomorf<strong>na</strong> v območju R(s) ≥ 1.<br />

Dokaz trditve IV: Obrav<strong>na</strong>vati je <strong>po</strong>trebno samo<br />

še e<strong>na</strong>čaj, tj. σ = 1. Za σ > 1 iz izreka I sledi z<br />

logaritmičnim odvajanjem<br />

− ζ′ (s)<br />

= ∑ p −s (<br />

log p<br />

= ∑ )<br />

log p<br />

.<br />

ζ(s) 1 − p −s p s − 1<br />

p<br />

p<br />

oziroma<br />

− ζ′ (s)<br />

ζ(s)<br />

= Φ(s) + ∑ p<br />

log p<br />

p s (p s − 1)<br />

Aleksandar Jurišić 923<br />

Aleksandar Jurišić 924<br />

Aleksandar Jurišić 925<br />

Aleksandar Jurišić 926


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Ker je funkcija − ζ′ (s)<br />

ζ(s) − 1 holomorf<strong>na</strong> pri<br />

s − 1<br />

σ > 1 <strong>po</strong> izreku I, sklepamo za σ > 1<br />

(σ)<br />

lim<br />

σ→1 −ζ′ ζ(σ) / 1<br />

σ − 1 = 1.<br />

Od tod <strong>po</strong> izreku II iz identitete<br />

Φ(s)− 1<br />

s−1 = −ζ′ (s)<br />

ζ(s) − 1<br />

s−1 − ∑ p<br />

log p<br />

p s (p s −1)<br />

sledi izrek IV, kakor hitro <strong>po</strong>kažemo, da ζ(1 + iτ) ≠ 0<br />

za vsak τ ∈ IR.<br />

Naj bosta za funkcijo ζ(s) števili a in b za<strong>po</strong>redoma<br />

stopnji domnevnih ničel<br />

w = 1 + iα in z = 1 + i2α, kjer je α ≠ 0,<br />

torej dopuščamo, da a = 0 ali b = 0.<br />

Pokazali bomo, da je a = 0.<br />

Najprej se prepričajmo, da velja<br />

lim ε Φ(1 + ε + iα) = −a.<br />

εց0<br />

Zapišimo ζ(s) = (s −w) a P(s −w), kjer je P(w) ≠ 0,<br />

σ > 1 in od tod tudi<br />

ζ ′ (s) a<br />

=<br />

ζ(s) s − w + P ′<br />

P .<br />

V identiteto<br />

− ζ′ (s)<br />

ζ(s)<br />

= Φ(s) + ∑ p<br />

log p<br />

p s (p s − 1) ,<br />

ki velja za σ > 1, vstavimo s = 1 + ε + iα, ε > 0<br />

in jo <strong>po</strong>množimo z ε (tj. s − w) ter dobimo<br />

lim ε Φ(1 + ε + iα) = −a<br />

εց0<br />

Podobno se prepričamo, da velja tudi<br />

lim ε Φ(1 + ε − iα) = −a<br />

εց0<br />

lim ε Φ(1 + ε ± i2α) = −b<br />

εց0<br />

in z u<strong>po</strong>rabo <strong>na</strong>slednje limite<br />

še<br />

(σ)<br />

lim<br />

σ→1 −ζ′ ζ(σ) / 1<br />

σ − 1 = 1<br />

lim ε Φ(1 + ε) = 1.<br />

εց0<br />

Aleksandar Jurišić 927<br />

Aleksandar Jurišić 928<br />

Aleksandar Jurišić 929<br />

Aleksandar Jurišić 930<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Naj bo σ = 1+ε. Izraču<strong>na</strong>ne limite bomo <strong>po</strong>vezali <strong>na</strong><br />

<strong>po</strong>dlagi <strong>na</strong>slednjih identitet in nee<strong>na</strong>kosti<br />

2∑<br />

( ) 4<br />

Φ(σ + ikα) = φ(σ − i2α)+<br />

2 + k<br />

k=−2<br />

+4φ(σ − iα) + 6φ(σ) + 4φ(σ + iα) + φ(σ + i2α) =<br />

= ∑ p<br />

log p<br />

p σ (p i2α + p −i2α + 4(p iα + p −iα ) + 6)<br />

in od tod<br />

∑<br />

Sledi<br />

p<br />

log p<br />

p σ (p iα/2 + p −iα/2 ) 4 ≥ 0.<br />

2∑<br />

( ) 4<br />

lim ε Φ(1 + ε + ikα) ≥ 0.<br />

εց0 2 + k<br />

k=−2<br />

Torej je −2b − 8a + 6 ≥ 0 in mora biti a = 0.<br />

A<strong>na</strong>litični izrek<br />

(a) Naj bo f(t) za t ≥ 0 omeje<strong>na</strong> in<br />

lokalno integrabil<strong>na</strong> funkcija.<br />

(b) Naj v območju R(z) > 0 obstaja funkcija<br />

g(z) :=<br />

∫ ∞<br />

0<br />

f(t)e −zt dt ,<br />

ki jo lahko holomorfno razširimo v R(z) ≥ 0.<br />

Potem obstaja integral<br />

∫ ∞<br />

0<br />

f(t) dt in je e<strong>na</strong>k g(0).<br />

Posledica: ∫ ∞<br />

ϑ(x) − x<br />

dt < ∞ .<br />

x 2<br />

1<br />

Dokaz: Posplošeni Stieltjesov integral funkcije x −s ,<br />

σ := R(s) > 1, obstaja glede <strong>na</strong> stopničasto funkcijo<br />

ϑ(x) in velja e<strong>na</strong>kost<br />

Φ(s) =<br />

∫ ∞<br />

1<br />

dϑ(x)<br />

x s ,<br />

kar sledi iz dejstva, da za <strong>po</strong>ljuben ε > 0 obstaja<br />

a ∈ [1, ∞), tako da za vsak b > a velja<br />

∫ b<br />

∣ ∫ 1 ∣∣∣ b<br />

1<br />

∣ dϑ =<br />

x s x dϑ = ∑ log p<br />

< ε.<br />

σ p σ<br />

a<br />

a<br />

a≤p≤b<br />

Aleksandar Jurišić 931<br />

Aleksandar Jurišić 932<br />

Aleksandar Jurišić 933<br />

Aleksandar Jurišić 934


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Z integracijo <strong>po</strong> delih (u = x −s , dv = dϑ(x)) in<br />

uvedbo nove spremenljivke (x = e t ) hitro <strong>po</strong>kažemo,<br />

da je<br />

Φ(s) = s<br />

∫ ∞<br />

1<br />

∫<br />

ϑ(x)<br />

∞<br />

x dx = s s+1<br />

0<br />

e −st ϑ(e t )dt.<br />

Funkcija<br />

f(t) := ϑ(e t )e t − 1, t ≥ 0<br />

je omeje<strong>na</strong> in lokalno integrabil<strong>na</strong> <strong>po</strong> izreku III.<br />

Funkcija<br />

g(z) =:<br />

∫ ∞<br />

0<br />

f(t)e −zt dt =<br />

∫ ∞<br />

0<br />

(e −(z+1)t ϑ(e t )−e −zt ) dt =<br />

Φ(z + 1)<br />

= − 1 z + 1 z = Φ(s) − 1<br />

s s − 1 ,<br />

kjer je s = z + 1, obstaja in jo lahko <strong>po</strong> izreku IV<br />

holomorfno razširimo v območje R(s) ≥1, tj. R(z) ≥<br />

0, se pravi, da ustreza <strong>po</strong>gojem a<strong>na</strong>litičnega izreka.<br />

∫ ∞<br />

0<br />

f(t) dt obstaja in z uvedbo<br />

Zato integral<br />

spremenljivke x = e t (ta funkcija je monoto<strong>na</strong> <strong>na</strong><br />

[0, ∞)) preide v želeni integral.<br />

Posledica:<br />

ϑ(x)<br />

lim<br />

x→∞ x = 1.<br />

Dokaz (z redukcijo protislovja): Če pri nekem λ > 1<br />

in pri <strong>po</strong>ljubno velikih x velja ϑ(x) ≥ λx, je<br />

∫ λx<br />

x<br />

(ϑ(t)−t)t −2 dt ≥<br />

∫ λx<br />

x<br />

λt−t<br />

t 2 dt =<br />

∫ λ<br />

1<br />

λ−u<br />

u 2 du > 0,<br />

kar je v <strong>na</strong>sprotju s prejšnjo <strong>po</strong>sledico. Na <strong>po</strong>doben<br />

<strong>na</strong>čin pridemo do protislovja pri domnevi λ < 1.<br />

Dokaz izreka o gostoti praštevil:<br />

Očitno je<br />

ϑ(x) = ∑ log p ≤ ∑ 1 . log x =<br />

p≤x p≤x<br />

= (log x) ∑ 1 = π(x) log x.<br />

p≤x<br />

Torej je<br />

ϑ(x) ≤ π(x) log x .<br />

Aleksandar Jurišić 935<br />

Aleksandar Jurišić 936<br />

Aleksandar Jurišić 937<br />

Aleksandar Jurišić 938<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Zaradi π(x) ≤ x za <strong>po</strong>ljuben ε > 0 velja<br />

ϑ(x) ≥<br />

∑<br />

∑<br />

log p ≥ (log x 1−ε ) 1 ≥<br />

x 1−ε


Tečaj iz kriptografije in teorije kodiranja, 2003/2004<br />

Ker gre log x → ∞, velja<br />

lim<br />

x→∞<br />

{ }<br />

log π(x) log log x<br />

+<br />

log x log x − 1 = 0<br />

oziroma ker gre log log x/ log x → 0, tudi<br />

log π(x)<br />

lim = 1.<br />

x→∞ log x<br />

Pomnožimo še z (*) in dobimo<br />

π(x) log π(x)<br />

lim<br />

= 1,<br />

x→∞ x<br />

kar pa je že žele<strong>na</strong> limita, če vzamemo x = p n oziroma<br />

π(x) = n.<br />

Aleksandar Jurišić 943

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!