Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
UNIVERZA V LJUBLJANI
PEDAGOSKA FAKULTETA
TEJA SAVS
RSA KRIPTIRANJE
DIPLOMSKO DELO
LJUBLJANA, 2013
UNIVERZA V LJUBLJANI
PEDAGOSKA FAKULTETAStudijski program: DVOPREDMETNI UCITELJ
Smer: MATEMATIKA IN RACUNALNISTVO
TEJA SAVS
Mentor: doc. dr. PRIMOZ SPARL
RSA KRIPTIRANJE
DIPLOMSKO DELO
LJUBLJANA, 2013
Povzetek
RSA kriptiranje je algoritem, ki se danes uporablja za zagotavljanje zasebnosti in verodostoj-
nosti digitalnih podatkov. Uporablja se ga za razne namene, najveckrat je uporabljen pri elek-
tronskih placilnih sistemih, torej tam, kjer je varnost podatkov se posebej pomembna. Varnost
tega algoritma temelji na domnevni tezavnosti problema faktorizacije velikih stevil. RSA krip-
tiranje spada med asimetricne kriptosisteme, za katere je znacilno, da se kljuca za desifriranje
sifriranega sporocila ne da zlahka dolociti na podlagi kljuca za sifriranje. Pri tej vrsti sifriranja
ima vsak udelezenec komunikacije dva kljuca, javnega in zasebnega. Zasebni kljuc zadrzi zase
in ga uporabi za desifriranje sporocil, medtem ko je javni kljuc dostopen vsem. Z javno ob-
javo javnega kljuca poskrbimo, da nam lahko kdorkoli poslje sporocilo, saj ga z nasim javnim
kljucem sifrira, desifriramo pa ga lahko le mi, saj smo edini, ki poznamo nas zasebni kljuc.
Zato je taksno sifriranje in posiljanje sporocil varno.
Kljucne besede:
• kriptografija,
• RSA kriptiranje,
• asimetricni kriptosistemi.
MSC (2010) klasifikacija: 94A60, 14G50, 68P25.
Abstract
RSA encryption is an algorithm used to provide privacy and authenticity of digital data. It is
used for various purposes, mainly for electronic payment systems where data security is par-
ticularly important. The algorithm safety is based on the alleged difficulty of the problem of
factoring large numbers. RSA encryption is an asymmetric cryptosystem, meaning that the
decryption key cannot be easily determined from the encryption key. In this type of crypto-
systems, each participant has two keys, a public and a private one. The private key is kept
secret and is used to decrypt the message, while the public key is accessible to all. This enables
anyone to be able to send messages to us that only we can decrypt. Namely, we are the only
ones that have the private decryption key. This makes this cryptosystem safe and reliable.
Key words:
• cryptography,
• RSA encryption,
• asymmetric cryptosystems.
MSC (2010) classification: 94A60, 14G50, 68P25.
Kazalo
Povzetek
Abstract
1 UVOD 1
2 OSNOVE TEORIJE STEVIL 3
2.1 DELJIVOST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 PRASTEVILA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 EULERJEVA FUNKCIJA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 KONGRUENCA STEVIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.5 FERMATOV IN EULERJEV IZREK . . . . . . . . . . . . . . . . . . . . . . . . 8
3 KRIPTOGRAFIJA 9
3.1 OSNOVNI POJMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 ZGODOVINA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3 SIMETRICNI IN ASIMETRICNI KRIPTOSISTEMI . . . . . . . . . . . . . . . 15
4 RSA KRIPTIRANJE 17
4.1 UVOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 RSA ALGORITEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5 SKLEP 27
Poglavje 1
UVOD
Komunikacija in izmenjava podatkov ne poteka le med ljudmi, danes celo vecinoma poteka med
racunalniki. Obicajno se niti ne zavedamo, kako hitro izdamo svoje osebne podatke in niti po-
mislimo ne, da bi lahko kdo nase podatke prestregel. V resnici pa je v danasnjem casu sifriranje
podatkov se posebej potrebno, saj jih posiljamo prek razlicnih medijev komunikacije, kjer lahko
sporocilo prestreze kdorkoli. Pomislimo le na elektronsko bancnistvo in spletne transakcije, kjer
imajo lahko zlorabe hude posledice. Sistemi, preko katerih lahko dve osebi komunicirata tako,
da si posiljata sporocila, obicajno temeljijo na nekem kriptosistemu, ki sporocilo sifrirajo in
ga varno pripeljejo do prejemnika. To, da sporocilo varno prispe do prejemnika, pomeni, da
sporocilo lahko desifrira le prejemnik, ne pa ze morebitni prisluskovalec na poti posiljanja od na-
slovnika do prejemnika. Ze v preteklosti so se posluzevali razlicnih metod sifriranja sporocil, od
zamenjav crk, do mehanskih in nazadnje tudi strojnih pripomockov. Ze od nekdaj je sifriranje
sporocil predstavljajo problem tako za tiste, ki razvijajo razlicne algoritme sifriranja, kot tudi
za tiste, ki napadajo sifrirana sporocila in jih skusajo razvozlati.
Danes se za sifriranje podatkov med drugim uporablja tudi RSA kriptiranje, ki je trenutno se
zanesljivo, saj temelji na matematicno zahtevnem problemu, ki ga zaenkrat ni mogoce resiti v
razumnem casu niti s pomocja racunalnika. Obicajno se RSA algoritem uporablja za izmenjavo
kljucev za druge algoritme, ki so mnogo hitrejsi.
V diplomskem delu je na kratko predstavljena zgodovina sifriranja, nato pa se posvetimo RSA
kriptiranju in njegovemu matematicnemu ozadju. Predstavljen je nacin delovanja RSA algo-
ritma, uporaba, varnost in morebitne sibke tocke implementacije omenjenega algoritma.
1
2 POGLAVJE 1. UVOD
Poglavje 2
OSNOVE TEORIJE STEVIL
Pri nekaterih sodobnih kriptografskih sistemih veliko vlogo igra teorija stevil. Tako je tudi
pri RSA kriptiranju. V tem poglavju so opisani najnujnejsi pojmi in rezultati, ki omogocajo
boljse razumevanje nadaljevanja, v katerem je opisano RSA kriptiranje. Dokaze vecine izrekov
in trditev izpuscamo. Studentje prvostopenjskega studijskega programa Dvopredmetni ucitelj
na vezavi z matematiko jih spoznajo pri predmetu Abstraktna algebra, sicer pa jih lahko bralec
najde v knjigah [3], [9] in [13] po katerih je povzeta vsebina tega poglavja.
2.1 DELJIVOST
Celo stevilo a je deljivo s celim stevilom b, ce se da a enolicno zapisati kot produkt stevila b
in celega stevila k:
a = k · b. (2.1)
V tem primeru se stevilo b imenuje delitelj stevila a, medtem ko stevilu a recemo veckratnik
stevila b. Prav tako je tudi k delitelj stevila a, a pa veckratnik stevila k. Namesto a je deljivo
z b, pravimo tudi, da b deli a, kar zapisemo kot b | a. Ce enacbe (2.1) ni mogoce izpolniti s
celim stevilom k, potem a ni deljiv z b in pisemo b - a.
Spodnji izrek imenujemo lema o deljenju. Poglejmo kaj nam pove.
Izrek 1. Ce je b od nic razlicno celo stevilo, se da vsako celo stevilo a enolicno izraziti kot
vsota veckratnika stevila b in nenegativnega celega stevila r, ki je manjse od |b|. Torej:
a = kb + r, 0 ≤ r < |b|.
Stevilo a je deljenec, b delitelj, k je kvocient ali kolicnik, r pa ostanek.
3
4 POGLAVJE 2. OSNOVE TEORIJE STEVIL
Dokaz. Dokaz bralec najde na strani 13 v [3]. �
Pri poljubnem pozitivnem stevilu b je za ostanek mogocih b vrednosti, in sicer 0, 1, 2, ..., b− 1.
Naj bosta a, b ∈ Z in naj bo d pozitivno celo stevilo. Ce d | a in d | b, potem pravimo, da
je d skupni delitelj stevil a in b. Ce je vsaj eno od stevil a in b razlicno od nic, je skupnih
deliteljev koncno mnogo. Zato je med njimi eden najvecji. Tega imenujemo najvecji skupni
delitelj stevil a in b in ga oznacimo z D(a, b). Ce velja D(a, b) = 1, potem pravimo, da sta si
stevili a in b tuji.
Spodnji izrek nam pove, da je najvecji skupni delitelj dveh stevil linearna kombinacija istih
dveh stevil.
Izrek 2. Ce je d najvecji skupni delitelj stevil a in b, potem obstajata x, y ∈ Z, tako da je
d = ax + by.
Dokaz. Dokaz bralec najde na strani 21 in 22 v [3]. �
Postopek, kako izracunamo najvecji skupni delitelj dveh naravnih stevil, je opisan spodaj.
Imenujemo ga Evklidov algoritem.
Izrek 3. Naj bosta a in b naravni stevili in naj velja a ≥ b. Potem s ponavljanjem postopka
deljenja iscemo taka cela stevila q1, q2, ... in r1, r2, ..., da velja:
a = bq1 + r1, za 0 ≤ r1 < b
b = r1q2 + r2, za 0 ≤ r2 < r1
r1 = r2q3 + r3, za 0 ≤ r3 < r2
...
rn−2 = rn−1qn + rn, za 0 ≤ rn < rn−1
rn−1 = rnqn+1 + 0.
Stevilo rn, torej zadnji od nic razlicen ostanek, ki ga dobimo po zgornjem postopku, je tedaj
enako najvecjemu skupnemu delitelju stevil a in b, to je, D(a, b) = rn.
Dokaz. Dokaz bralec najde na strani 99 v [9]. �
Poglejmo si sedaj zgled.
2.2. PRASTEVILA 5
Zgled: S pomocjo Evklidovega algoritma poiscimo najvecji skupni delitelj stevil 819 in 165.
Postopek je naslednji:
819 = 165 · 4 + 159
165 = 159 · 1 + 6
159 = 6 · 26 + 3
6 = 3 · 2 + 0.
Sledi: D(819, 165) = 3.
Po zgornjem izreku (2) lahko najvecji skupni delitelj izrazimo se kot linearno kombinacijo stevil
819 in 165, in sicer tako, da nenicelne ostanke od spodaj navzgor izrazimo na sledeci nacin:
3 = 159− 6 · 26
= 159− (165− 159 · 1) · 26 = 159 · 27− 165 · 26
= (819− 165 · 4) · 27− 165 · 26 = 819 · 27− 165 · 134
= 819 · 27 + 165 · (−134).
4
2.2 PRASTEVILA
Naravna stevila, vecja od 1, delimo na prastevila in sestavljena stevila. Spomnimo se,
da so prastevila tista od 1 razlicna pozitivna cela stevila, ki imajo natanko dva delitelja, 1 in
samega sebe. Sestavljena stevila pa lahko zapisemo kot produkt prastevil oziroma prafaktorjev.
Osnovni izrek aritmetike pove naslednje.
Izrek 4. Vsako celo stevilo a, ki je po absolutni vrednosti vecje od 1, je moc razcepiti v produkt
samih prastevil in morebiti stevila (−1). Ce se na vrstni red faktorjev ne oziramo, je tak razcep
en sam.
Dokaz. Dokaz bralec najde na straneh 28 in 29 v [3]. �
Sklenimo se naslednji dogovor.
Naj bodo p1, p2, ..., pj vsa razlicna prastevila iz razcepa stevila a, urejena po velikosti, in naj
6 POGLAVJE 2. OSNOVE TEORIJE STEVIL
bodo n1, n2, ..., nj naravna stevila, ki povedo, kolikokrat se posamezna prastevila p1, p2, ..., pj
kot faktorji pojavijo v razcepu. Razcep stevila a na prafaktorje tedaj zapisemo kot:
a = ±pn11 · pn2
2 · · · pnj
j , p1 < p2 < ... < pj.
Pri iskanju prastevil nam je v pomoc tudi naslednji izrek.
Izrek 5. Prastevil je neskoncno mnogo.
Dokaz. Izrek je dokazal ze Evklid v svoji knjigi Elementi (IX), priblizno 2300 let nazaj.
Izrek bomo dokazali s protislovjem. Denimo tedaj, da je prastevil koncno mnogo. Naj bodo 2,
3, 5, ..., p zaporedna prastevila, pri cemer je p najvecje prastevilo, in naj bo n = (2·3·5 · · · p)+1.
Stevilo n je celo in vecje od p. Potemtakem n ni prastevilo. Ker je torej stevilo n sestavljeno
stevilo, je deljivo s kaksnim od prastevil 2, 3, ..., p. Toda pri deljenju n s katerimkoli izmed
prastevil 2, 3, ..., p, ostaja ostanek 1. To protislovje torej pove, da najvecjega prastevila ni. �
2.3 EULERJEVA FUNKCIJA
Ce je n poljubno pozitivno celo stevilo, je vsako izmed stevil 0, 1, 2, ..., n − 1 ali tuje stevilu n
ali pa ima z n kaksen skupni delitelj.
Eulerjeva funkcija ϕ vsakemu naravnemu stevilu n priredi naravno stevilo ϕ(n), ki je enako
stevilu naravnih stevil med 1 in n, ki so tuja n. Poglejmo si preprost zgled.
Zgled: Zanima nas Eulerjeva funkcija za n = 10. Izmed stevil 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 so tuja
stevilu 10 le stevila 1, 3, 7 in 9. Torej je ϕ(10) = 4. 4
V splosnem za velika stevila n dolocitev Eulerjeve funkcije ϕ(n) ni preprosta. Ce pa poznamo
faktorizacijo stevila n na produkt samih prastevil, vrednost ϕ(n) zlahka izracunamo.
Izrek 6. Naj bo n ∈ N in naj bodo p1, p2, ..., pm vsa razlicna prastevila, ki delijo n. Tedaj je
ϕ(n) = n · (1− 1/p1) · · · (1− 1/pm).
Dokaz. Izrek je moc dokazati s pomocjo nacela vkljucitev in izkljucitev. Bralec ga lahko najde
v [6]. �
2.4. KONGRUENCA STEVIL 7
V posebnem primeru velja za prastevilo p, da je ϕ(p) = p − 1. Vsako stevilo, ki je manjse od
p je tuje k p. V se enem posebnem primeru velja tudi ϕ(ab) = ϕ(a)ϕ(b), pri cemer a, b ∈ N in
D(a, b) = 1. Dokaz te lastnosti bralec najde na strani 242 v [9].
2.4 KONGRUENCA STEVIL
Pri RSA algoritmu je pomembna naslednja ekvivalencna relacija ≡, ki jo imenujemo kongru-
enca. To lastnost bomo dokazali kasneje. Najprej definirajmo relacijo.
Naj bosta a, b ∈ Z in m ∈ N. Ce je razlika a− b deljiva z m, to je, m | (a− b), pravimo, da je
stevilo a kongruentno stevilu b po modulu m, kar zapisemo z
a ≡ b (mod m).
Dejstvo, da stevilo a ni kongruentno b po modulu m, zapisemo z a 6≡ b (mod m).
Oglejmo si sedaj nekaj preprostih lastnosti relacije kongruence.
Trditev 1. Naj bo m poljubno naravno stevilo. Relacija kongruence po modulu m je ekviva-
lencna relacija.
Dokaz. Dokazati moramo refleksivnost, simetricnost in tranzitivnost te relacije. Naj bosta
a, b ∈ Z in m ∈ N.
• Refleksivnost: za vsak a ∈ Z velja a ≡ a (mod m), saj a− a = 0 in m | 0.
• Simetricnost: dokazati moramo, da iz a ≡ b (mod m) sledi b ≡ a (mod m). Izhajamo
iz a ≡ b (mod m). Naj bo k ∈ Z tak, da velja a − b = km. Ce enacbo preoblikujemo,
dobimo b− a = (−k)m. To pa pomeni, da velja b ≡ a (mod m).
• Tranzitivnost: dokazati moramo, da iz a ≡ b (mod m) in b ≡ c (mod m) sledi a ≡
c (mod m). Obstajata torej s, t ∈ Z tako, da velja a−b = sm in b−c = tm. Ce sestejemo
obe enacbi dobimo: a− c = tm + sm = (t + s)m, kar pa pomeni, da je a ≡ c (mod m).
�
Trditev 2. Naj bodo k,m ∈ N in a, b, c, d ∈ Z. Tedaj velja naslednje:
8 POGLAVJE 2. OSNOVE TEORIJE STEVIL
1. Ce je a ≡ b (mod m) in c ≡ d (mod m), potem velja: a + c ≡ b + d (mod m) in
ac ≡ bd (mod m).
2. Ce je a ≡ b (mod m), potem velja ac ≡ bc (mod m), a + c ≡ b + c (mod m) in ak ≡
bk (mod m).
3. Ce je ac ≡ bc (mod m), potem je a ≡ b (mod m/d), pri cemer je d = D(c,m).
Dokaz. Dokaze teh lastnosti bralec najde v [9]. �
Trditev 3. Naj bosta p in q razlicni prastevili in naj bosta a, b ∈ Z taki stevili, da velja
a ≡ b (mod p) in a ≡ b (mod q). Tedaj je a ≡ b (mod pq).
Dokaz. Zaradi a ≡ b (mod p) in a ≡ b (mod q) obstajata celi stevili k in l, da je a−b = k·p = l·q.
Ker sta p in q razlicni prastevili po izreku 4 sledi, da q | k, to je k = q · k1, za neko celo stevilo
k1. Sledi a− b = p · q · k1 in tako a ≡ b (mod pq), kot smo trdili. �
2.5 FERMATOV IN EULERJEV IZREK
Oglejmo si se dva pomembna izreka, ki jih uporabljamo pri RSA algoritmu.
Izrek 7 (Eulerjev izrek). Naj bo m ∈ N in naj bo a ∈ Z tako stevilo, da je D(a,m) = 1.
Potem velja
aϕ(m) ≡ 1 (mod m),
pri cemer je ϕ(m) vrednost Eulerjeve funkcije stevila m.
Dokaz. Dokaz bralec najde v [9]. �
Izrek 8 ((Mali) Fermatov izrek). Naj bo a ∈ Z in naj bo p poljubno prastevilo. Tedaj velja
ap ≡ a (mod p).
Ce dodatno velja se D(a, p) = 1, velja
ap−1 ≡ 1 (mod p).
Dokaz. Dokaz bralec najde v [9], gre pa seveda le za poseben primer Eulerjevega izreka. �
Omenimo, da se oba izreka zlahka dokaze z nekaj znanja teorije grup in kolobarjev.
Poglavje 3
KRIPTOGRAFIJA
V tem poglavju se nahaja opis nekaterih osnovnih pojmov, ki se uporabljajo v nadaljevanju
diplomskega dela, na kratko pa je predstavljena tudi zgodovina kriptografije, ki nudi dober
odgovor na vprasanje, zakaj kriptirati podatke, prikaze pa tudi kako je potekal njen razvoj.
Snov tega poglavja je povzeta po [9] in [10].
3.1 OSNOVNI POJMI
Kriptografija je veda o posiljanju in prejemanju tajnih, sifriranih sporocil. Je tudi veda, ki se
ukvarja z odkrivanjem in preucevanjem racunalniskih algoritmov in protokolov za ucinkovito
zascito informacij. Beseda kriptografija izhaja iz grskih besed kryptos, ki pomeni skrito, in
graphein, ki pomeni pisati. Osnovno sporocilo, ki ga zelimo zakriti in nato poslati, se imenuje
cistopis, zakrito sporocilo pa tajnopis ali tudi sifropis.
Sporocilo po nekem postopku, metodi oziroma algoritmu spremenimo v kriptirano sporocilo, pri
tem pa uporabimo dolocene vrednosti za parametre, ki jim pravimo kljuc. Da si sogovornika
lahko posiljata sporocila in jih potem tudi prebereta, se morata dogovoriti za ustrezen algoritem
in pripadajoci kljuc. Spreminjanje cistopisa v tajnopis imenujemo enkripcija ali sifriranje,
obraten postopek pa dekripcija ali tudi desifriranje.
Kriptoanaliza je veda o desifriranju sporocil brez poznavanja kljuca. Kriptoanalitik torej
isce slabosti dolocenega algoritma sifriranja, tako da poskusa zlomiti sifro, to je, ugotovi kljuc
za desifriranje sporocila. Veda, ki se ukvarja tako s kriptografijo kot tudi z vprasanji, kako
“zlomiti”nek kriptografski sistem, se imenuje kriptologija.
9
10 POGLAVJE 3. KRIPTOGRAFIJA
3.2 ZGODOVINA
Z vprasanjem, kako vsebino sporocila zakriti tako, da ga razumeta le posiljatelj in prejemnik,
so se ukvarjali ze v Antiki in celo prej. Ze Egipcani so 2500 let pred nasim stetjem komunicirali
v jeziku sestavljenem iz slicic, ki jim pravimo tudi hieroglifi. Le-te so v religioznem smislu
razumeli le redki, najbolj izobrazeni, saj je slo za bozje besede, ki so morale ostati vredne in
misticne.
Spartanci so za posiljanje skrivnih sporocil uporabljali mehanski pripomocek imenovan skital.
Skital je bil valj, okrog katerega so navili trak in pravokotno na smer traku zapisali sporocilo.
Naslovniku so poslali odvit trak, sporocilo pa je lahko prebral le, ce je imel valj enakega pre-
mera. Recimo, da na trak, ki je navit na valju, zapisemo naslednje sporocilo “SKRIVNOSTNO
SPOROCILO”. Zapisemo ga v 3 vrstice po 7 znakov in upostevamo presledek. Sporocilo na
traku navitem na valju bi izgledalo tako, kot je prikazano v spodnji tabeli.
S K R I V N O
S T N O S P
O R O C I L O
Ko trak s sporocilom odvijemo, dobimo sporocilo “SSOKTRRNOIOCV INSLOPO”. Prejemnik
sporocila mora imeti valj z enakim polmerom kot posiljatelj oziroma mora ugotoviti po koliko
posameznih crk je zapisanih v enem stolpcu. Pri tej vrsti sifriranja ostanejo crke originalnega
sporocila nespremenjene, njihova mesta pa se po odvitju traku pomesajo.
Julij Cezar je svojim vojskovodjem posiljal sporocila, kjer je vsako crko cistopisa zamenjal s
crko, ki je bila v abecedi nekaj mest za njo. Stevilo, ki predstavlja stevilo mest, za kolikor
je potrebno zamenjati posamezno crko sporocila, je kljuc. Ce sifriramo besedila v slovenscini,
imamo na voljo 25 moznosti za kljuc, ki pove za koliko mest naprej po abecedi se je treba pri
sifriranju premakniti. Julij Cezar naj bi obicajno uporabljal premik naprej za 3 mesta. Seveda
lahko pri taki vrsti sifriranja hitro uganemo kljuc, saj je moznih kljucev malo in lahko preprosto
preizkusimo vsako moznost posebej. Za Julija Cezarja pa to ni predstavljalo velikega problema,
saj je v tistem casu le malokdo znal brati. Opisimo to sifriranje se matematicno.
Naj bo torej x vrednost, prirejena posamezni crki v cistopisu, kjer crki A pripada vrednost 0,
crki B vrednost 1 in tako naprej. Naj bo y vrednost, prirejena tej crki v ustreznem tajnopisu,
ter k vrednost kljuca. Potem velja
y ≡ x + k (mod n), (3.1)
3.2. ZGODOVINA 11
kjer je n stevilo crk v abecedi.
Poglejmo si primer, kako s pomocjo Cezarjeve sifre sifriramo sporocilo.
Zgled: Sifrirati zelimo sporocilo “TO SPOROCILO JE SKRIVNOST”, pri cemer bomo upo-
rabili premik za 5 mest naprej. V pomoc nam bo spodnja tabela. V prvi vrstici tabele so crke
slovenske abecede in njim prirejene vrednosti med 0 in 24. V zadnji vrstici pa so crke, ki smo
jih premaknili za 5 mest.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
A B C C D E F G H I J K L M N O P R S S T U V Z Z
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 0 1 2 3 4
E F G H I J K L M N O P R S S T U V Z Z A B C C D
Sporocilo najprej razdelimo na bloke po 5 crk, da se izognemu prehitremu desifriranju krajsih
besed. V nasem primeru dobimo bloke “TOSPO”, “ROCIL”, “OJESK”, “RIVNO”, “ST”. Nato
vsaki crki v posameznem bloku priredimo stevilo, kot je prikazano v prvi vrstici zgornje tabele.
Dobimo “20 15 18 16 15”, “17 15 3 9 12”, “15 10 5 18 11”, “17 9 22 14 15” in “18 20”. Po
uporabi Cezarjeve sifre s transformacijo y ≡ x + 5 (mod 25), se bloki stevil spremenijo v “0 20
23 21 20”, “23 20 8 14 17”, “20 15 10 23 16”, “23 14 2 19 20” in “23 0” oziroma, ce pretvorimo v
crke, “EACBA”, “CAMSV”, “ATOCU”, “CSGZA”in “CE”. To je torej nase sifrirano sporocilo
oziroma tajnopis. Prejemnik sporocilo desifrira tako, da crkam abecede priredi po vrsti stevila
od 0 do 24 in nato uporabi zvezo x ≡ y − 5 (mod 25), s katero spremeni tajnopis v prirejene
numericne vrednosti cistopisa. Nato le se pretvori stevila v ustrezne crke abecede in sporocilo
je desifrirano. 4
V splosnem se sifriranje sporocil deli v dve skupini, transpozicijsko in substitucijsko sifriranje.
Transpozicijsko sifriranje ne spreminja crk, ampak le njihov vrstni red. Taksen primer
sifriranja je sifriranje s skitalom, ki smo ga ze opisali. Substitucijsko sifriranje pa zamenja
znake oziroma stevke med seboj ali pa z drugimi znaki. Primer substitucijskega sifriranja je
Cezarjeva sifra, ki jo imenujemo tudi monoalfabetska substitucija, saj je kljuc za vsako posa-
mezno crko isti. Poznamo pa tudi polialfabetsko substitucijo, kot je Vigenerjeva sifra, kjer se
kljuc za posamezno crko spreminja. To sifriranje bomo opisali v nadaljevanju. Se prej pa si
poglejmo, kako desifrirati sporocilo, sifrirano s substitucijo.
Zdi se, da je monoalfabetska substitucija besedilnih sporocil dokaj varna, saj je moznih kar
12 POGLAVJE 3. KRIPTOGRAFIJA
n! kljucev, kjer je n stevilo crk v abecedi. Pri desifriranju bi s poskusanjem vseh moznih
kljucev porabili prevec casa (tudi z racunalnikom). Vendar pa taksno sifriranje zlahka zlomimo
s frekvencno analizo besedila. Z uporabo frekvencne analize pri dovolj dolgem besedilu s
precejsnjo zanesljivostjo domnevamo, da najpogostejse crke v tajnopisu predstavljajo najpogo-
stejse crke v abecedi, vendar ne nujno v pravem zaporedju. Pri omenjenem desifriranju moramo
seveda vedeti, v katerem jeziku je bilo sporocilo zapisano.
V 15. in 16. stoletju so Evropo zaznamovale spletke in boj za politicno in financno moc, se
zlasti v Italiji. To je bil povod za razvoj sifriranja na visji ravni. Okrog leta 1460 je Leone
Battista Alberti izumil napravo za sifriranje sporocil, tako imenovani dvojni krog z vrtljivim
srednjim delom. To je tudi zacetek polialfabetskega sifriranja. Blaise de Vigenere, francoski
diplomat in prevajalec, je izpopolnil metodo sifriranja Giovana Battista Bellasa, objavljeno v
knjigi La cifra del. Sig. Giovan Battista Bellaso, ki jo danes imenujemo Vigenerjeva sifra.
Namesto sifriranja vsake crke z ves cas isto substitucijo (kot je znacilno za Cezarjevo sifro),
uporabimo tukaj razlicne substitucije za sifriranje posameznih crk v besedi. Opisimo Cezarjevo
sifro se matematicno.
Kljuc Vigenerjeve sifre predstavlja beseda b1b2b3...bn, pri cemer vsaki crki kljuca, torej crkam
b1, b2, b3, ..., bn, priredimo ustrezne stevilske vrednosti po slovenski abecedi med 0 in 24, kar
oznacimo s k1, k2, k3, ..., kn. Potem sporocilo, ki ga zelimo sifrirati, razdelimo na bloke dolzine
n, torej na bloke v dolzini kljuca. Blok vsebuje prirejene stevilske vrednosti p1, p2, p3, ..., pn
pripadajocih crk in se sifrira v blok s prirejenimi stevilskimi vrednostmi, ki jih oznacimo s
c1, c2, c3, ..., cn, in sicer tako, da velja
ci ≡ pi + ki (mod 25), i = 1, 2, ..., n. (3.2)
Na koncu stevilske vrednosti c1, c2, c3, ..., cn le se spremenimo v ustrezne crke abecede.
Pogljemo si konkreten zgled.
Zgled: Sifrirati zelimo besedo “MATEMATIKA” s kljucem “KLJUC”. Crkam besedne zveze
in kljuca priredimo ustrezne stevilske vrednosti
b1b2b3b4b5b6b7b8b9b10 = 13 0 20 5 13 0 20 9 11 0 in k1k2k3k4k5 = 11 12 10 21 3.
Vigenerovo sifriranje besede s prej izbranim kljucem nam da naslednje stevilske vrednosti crk
tajnopisa:
c1 = b1 + k1 = 13 + 11 ≡ 24 (mod 25)
c2 = b2 + k2 = 0 + 12 ≡ 12 (mod 25)
3.2. ZGODOVINA 13
Postopek nadaljujemo po podobnem principu dokler ne sifriramo vseh crk besede. Dobimo
naslednje stevilske vrednosti:
c1 c2 c3 c4 c5 c1 c2 c3 c4 c5
24 12 5 1 16 11 7 19 7 3
Prirejene vrednosti crk le se spremenimo v ustrezne znake in dobimo sifrirano sporocilo
“ZLEBPKGSGC”. 4
Seveda je tudi desifriranje sporocila sifriranega po Vigenerjevi metodi preprosto, ce poznamo
kljuc. Podrobnosti prepuscamo bralcu.
Prednost Vigenerove sifre je v tem, da je ni mogoce tako preprosto desifrirati s pomocjo fre-
kvencne analize, ce ne poznamo kljuca. Zato je ta sifra dolgo veljala za nezlomljivo. A kot
bomo omenili nekoliko kasneje, danes tudi tovrstno sifriranje ni vec varno.
Razvoj sifriranja se je nadaljeval s telegrafijo in vzponom telekomunikacij, ko so ponudili nov
nacin posiljanja sporocil na velike razdalje. Ena izmed prvih idej je bil predlog, da se posiljatelj
in prejemnik povezeta s kabli, pri cemer bi en kabel zadostoval za eno crko. Posiljatelj bi
sporocilo crkoval, tako da bi elektricne signale posiljal po ustreznih kablih, prejemnik pa bi si
zapisoval po katerem kablu je prisel elektricni signal in na koncu prebral sporocilo. Medtem
je v Ameriki Samuel Morse nadgradil taksno obliko posiljanja sporocil z elektromagnetom, ki
je okrepil signal in tako tudi povecal razdaljo med posiljateljem in prejemnikom. S tem se je
razvila tudi Morsejeva abeceda, ki je v uporabi se danes in za katero je znacilno, da crke, stevke
in nekatere znake kodiramo s kombinacijo kratkih in dolgih znakov. Morsejeva abeceda sicer
ne sodi med podrocje kriptografije, saj njen namen ni prikrivati sporocilo, pac pa s pomocjo
Morsejeve abecede crke pripravimo za tehnicni medij. Gre le za drugacno obliko abecede.
V 19. stoletju je Charles Babbage desifriral Vigenerovo sifro, kar se steje za najvecji preboj
kriptoanalize po arabskih ucenjakih, ki so v 9. stoletju desifrirali monoalfabetske sifre s pomocjo
frekvencne analize. Babbagejev prispevek je ostal neodkrit vse do 20. stoletja, ko so med pre-
gledovanjem njegovih zapiskov naleteli na postopek desifriranja polialfabetskih sifer oziroma
Vigenerove sifre. Prav tako je postopek desifriranja Vigenerove sifre opisal Friedrich Wilhelm
Kasiski.
Na nadaljni razvoj kriptografije je vplival nastanek radijskega komuniciranja, pri cemer sta bila
lahko posiljatelj in prejemnik skoraj poljubno dalec narazen. Radijski valovi se sirijo v vse
smeri in dosezejo prejemnike skoraj povsod. Slabost pa je ta, da sporocilo poslano po radijskih
14 POGLAVJE 3. KRIPTOGRAFIJA
valovih lahko prestreze kdorkoli. Razvoj radijskega komuniciranja in izbruh 1. svetovne vojne
sta povzrocila potrebo po zanesljivem sifriranju sporocil. Med 1. svetovno vojno so Nemci
razvili sifrirni sistem imenovan ADFGVX, ki pa so ga Francozi kmalu strli. Po koncu 1. sve-
tovne vojne se je nemski izumitelj Arthur Scherbius zavzel za to, da bi pri sifriranju uporabili
tehnicne moznosti 20. stoletja. Razvil je kriptografski stroj imenovan enigma, ki ga sestavljajo
trije glavni elementi med seboj povezani z zico. To so tipkovnica, preko katere vnasamo crke
cistopisa, sifrirna enota, ki vsako crko cistopisa spremeni v crko tajnopisa in enota z luckami,
ki sifrirane crke prikaze. Osnovni napredek je bilo strojno, namesto rocnega sifriranja. Med 2.
svetovno vojno so bili britanski dekripterji v ocitni prednosti pred nemskimi kriptografi, saj so
iz dela poljskega matematika Rejewskega ustvarili tehnicno podlago za avtomaticno desifriranje
enigme. Pri tem je bil najbolj udelezen matematik Alan Turing.
Z iznajdbo racunalnika se je sifriranje in tudi desifriranje sporocil mocno spremenilo. Kriptografi
so razvijali vse kompleksnejse sifrirne sisteme, kriptoanalitiki pa so izkoristili hitrost in fleksi-
bilnost racunalnika, ko so preverjali vse mogoce kljuce, dokler niso nasli pravega. Obstajajo tri
znacilne razlike med racunalniskim in mehanicnim nacinom sifriranja, ki se je uporabljal pri eni-
gmi. Prva je ta, da je mehanicni sifrirni stroj omejen s tehnicno - konstrukcijskimi moznostmi,
druga razlika je v hitrosti, kjer je racunalnik absolutno hitrejsi, tretja pa je ta, da racunalnik
operira z binarnimi stevili, kar pomeni, da je potrebno vsako sporocilo pred sifriranjem spreme-
niti v binarna stevila. Ko so racunalnik zacela uporabljati podjetja in ne le drzavna oblast ter
vojska, je bilo potrebno standardizirati sifrirni sistem. Leta 1976 so za standard uradno sprejeli
DES (Data Encrypted Standard), kasneje pa se AES (Advanced Encryption Standard). Kljub
standardizaciji in moci DES pa je ostal neresen problem razdeljevanja kljucev. Kako naj torej
banka svoji stranki sporoci zaupne podatke, ce vemo, da obstaja moznost, da pogovoru nekdo
prisluskuje. Edini varni nacin je osebna izrocitev kljuca, vendar pa je le-ta pocasna in zahteva
posrednika, ki mu obe strani zaupata.
Leta 1976 sta Diffie in Hellman predstavila nov nacin izmenjave kljucev (zdaj znana pod imenom
Diffie, Hellman, Merklova izmenjava kljucev), sam pojem asimetricnega sifriranja in sistemov
javnih kljucev pa je razvil Diffie. Kmalu zatem se je razvil algoritem RSA, ki je opisan v po-
glavju RSA kriptiranje. Asimetricni algoritmi so racunsko precej zahtevni in zato se obicajno
uporabljajo le za varno komunikacijo pri dogovoru o kljucu za mnogo hitrejse simetricne krip-
tosisteme kot sta na primer DES in AES.
3.3. SIMETRICNI IN ASIMETRICNI KRIPTOSISTEMI 15
3.3 SIMETRICNI IN ASIMETRICNI KRIPTOSISTEMI
Poznamo dve vrsti kriptosistemov, in sicer simetricne ter asimetricne. Poglejmo v cem se
razlikujejo.
3.3.1 Simetricni kriptosistemi
Gre za najstarejso obliko kriptografije in edino poznano vse do leta 1976. Za simetricne
kriptosisteme ali kriptosisteme tajnega kljuca velja, da je moc kljuc za desifriranje dobiti
iz kljuca za sifriranje na racunsko nezahteven in hiter nacin (morda ob pomoci racunalnika).
Kljuca za sifriranje in desifriranje sta lahko tudi enaka, ni pa nujno. Obicajno so simetiricni
algoritmi hitri, tezko pa je varno izmenjati kljuc, saj kljuca prejemniku ne moremo posredovati
skupaj s sifriranimi podatki.
Najbolj znani simetricni algoritmi so DES, IDEA (International Data Encryption Algorithm)
ter AES, ki je naslednik DES.
Primer komunikacije pri simetricnih kriptosistemih:
Predpostavimo, da zeli Andreja poslati Bojanu sporocilo tako, da ga bo sposoben prebrati le
on. Da Andreja zagotovi varen prenos sporocila do Bojana, ustvari sifrirni kljuc. S sifrirnim
kljucem sifrira svoj cistopis in ga kot tajnopis poslje Bojanu, ki pa ga lahko prebere le, ce
pozna sifrirni kljuc. Tega mu lahko Andreja dostavi na katerikoli varen nacin, ki ji je na voljo
(recimo po posti). Ko Bojan prejme sifrirni kljuc, lahko desifrira sprejete tajnopise oziroma
poslje Andreji tajnopis svojih cistopisov.
3.3.2 Asimetricni kriptosistemi
Pri simetricnih kriptosistemih je obicajno najvecji problem varna izmenjava kljucev. Da lahko
z neko osebo izmenjamo zaupne informacije, si moramo prej preko varnega kanala izmenjati
kljuc. Asimetricna kriptografija ali tudi kriptografija javnega kljuca, ki so jo prvi opisali
Diffie, Hellman in Merkle, temelji na ideji, da imamo dva razlicna kljuca, enega za sifriranje in
enega za desifriranje. Pri tem pa kljuca za desifriranje ne moremo konstruirati le na podlagi
kljuca za sifriranje, saj je ta postopek racunsko prezahteven. V asimetricnih sifririnih sistemih
ima vsak udelezenec komunikacije tako javni kot zasebni kljuc. Zasebni kljuc, ki ga uporablja
za desifriranje, zadrzi zase, javnega pa objavi. Tako lahko vsakdo, ki ima na voljo uporabnikov
javni kljuc, s tem kljucem zasifrira sporocilo, ki mu ga zeli poslati. Ker je prejemnik edini, ki
16 POGLAVJE 3. KRIPTOGRAFIJA
lahko sporocilo desifrira z uporabo zasebnega kljuca, je tak nacin posiljanja sporocil varen.
Asimetricni kriptosistemi obicajno temeljijo na predpostavki neresljivosti (v razumnem casu)
dolocenih matematicnih problemov. Potrebno je najti tako transformacijo, za katero je tezko ali
nemogoce izvesti inverzno transformacijo, ce nimamo ustrezne dodatne informacije (privatnega
kljuca). Za take transformacije se uporablja izraz One-Way Function, ki pomeni, da je inverzna
operacija lahka, ce imamo neko dodatno informacijo, sicer pa skoraj nemogoca.Tako je v ozadju
Diffie, Hellman, Merklove izmenjave kljucev problem diskretnega logaritma, pri RSA algoritmu
problem faktorizacije velikih prastevil, pri ECC (Elliptic Curve Cryptosystems) algoritmu pa
se pojavi problem elipticnih krivulj. Problem diskretnega logaritma je matematicno-racunski
problem, pri katerem operiramo v koncni multiplikativni grupi, in sicer je potrebno za dana
g, h ∈ G najti x ∈ G, za katerga velja gx = h. Za ta problem se ni odkritega hitrega algoritma,
zato je racunsko zahteven in posledicno uporaben v kriptografiji [12].
Primer komunikacije pri asimetricnih kriptosistemih:
Predpostavimo, da zeli Andreja Bojanu poslati zaupno sporocilo. Andreja mora najprej pri-
dobiti Bojanov javni kljuc in z njim sifrirati sporocilo. Nato tajnopis poslje Bojanu, ki pa ga
desifrira tako, da uporabi svoj zasebni kljuc. Ce tajnopis prestreze nekdo drug, ga ne more
desifrirati, ker ne pozna Bojanovega zasebnega kljuca. Taksen primer komunikacije v osnovi ne
zagotavlja pristnosti posiljatelja, zagotavlja pa pristnost sporocila, ki ga lahko prebere le tisti,
komur je namenjeno.
Poglavje 4
RSA KRIPTIRANJE
V tem poglavju sledi podroben opis RSA algoritma. Ogledali si bomo njegovo delovanje, pred-
stavili kako kreiramo kljuce in opisali sam postopek sifriranja in desifriranja sporocil. Dokazali
bomo, da metoda RSA deluje pravilno in se na kratko dotaknili vprasana njegove varnosti,
moznih napadih nanj in sami uporabi tega algoritma. Poglavje je povzeto po [4], [7], [8] in
[9].
4.1 UVOD
Algoritem so leta 1977 opisali Ron Rivest, Adi Shamir in Len Adleman na MIT (Massachusetts
Institute of Technology), patentirali pa so ga leta 1983. Ime RSA predstavljajo zacetnice
njihovih priimkov. Algoritem RSA sodi na podrocje asimetricne kriptografije, ki je opisana v
prejsnjem poglavju. Gre torej za kriptografijo javnih kljucev. Varnost tega algoritma temelji na
domnevi, da je sicer razmeroma lahko najti zelo velika prastevila, zelo tezko pa je faktorizirati
velika stevila. Uporablja se za izmenjavo skupnih kljucev za simetricne kriptosisteme in za
digitalno podpisovanje, za masovno sifriranje podatkov pa ne, saj so asimetricni kriptosistemi
precej pocasnejsi od nekaterih simetricnih algoritmov.
4.2 RSA ALGORITEM
Za ucinkovito komunikacijo je najprej potrebno kreirati javni in zasebni kljuc. Nato javni kljuc
objavimo, saj nam lahko posiljatelj le tako poslje sporocilo. Posiljatelj sifrira sporocilo z javnim
kljucem prejemnika, prejemnik pa to sporocilo desifrira tako, da uporabi svoj zasebni kljuc.
17
18 POGLAVJE 4. RSA KRIPTIRANJE
4.2.1 Kreiranje kljucev
Postopek kreiranja zasebnega in javnega kljuca je naslednji:
1. korak: Izberemo si dve prastevili p in q in ju pomnozimo. Zmnozek oznacimo z n = p · q.
2. korak: Izracunamo Eulerjevo funkcijo stevila n po formuli ϕ(n) = (p− 1) · (q − 1).
3. korak: Izberemo si stevilo e, med 1 in ϕ(n), pri cemer mora veljati D(e, ϕ(n)) = 1, to je,
stevili e in ϕ(n) sta si tuji.
4. korak: Izracunamo stevilo d, 1 ≤ d ≤ ϕ(n), za katero velja e · d ≡ 1 (mod ϕ(n)). To
pomeni, da je d multiplikativni inverz elementa e v kolobarju Zϕ(n).
Par (e, n) je javni kljuc, ki ga lahko objavimo, par (d, n) pa je zasebni kljuc, ki ga ne smemo
izdati. Prav tako ne smemo izdati prastevil p in q.
Pri izbiri prastevil v 1. koraku je potrebno izbrati dovolj veliki prastevili, kar danes v praksi
pomeni, da je potrebno izbrati vec kot tristo mestni stevili (najmanj 1024 bitni). Izbira velikosti
prastevil je odvisna tudi od namena sifriranja. V primeru, da imamo opravka s podatki, ki mo-
rajo zagotovo ostati zaupni se vsaj deset let, moramo uporabiti najmanj 2048 bitna prastevila
oziroma vsaj 600 mestna. Se pa ta stevilka z leti veca, saj so na voljo vedno boljsi procesorji,
ki so v krajsem casu sposobni predelati vec operacij v krajsem casu.
Da bo zasebni kljuc cim bolj varen, moramo pri izbiri prastevil v 1. koraku paziti na to, da so
izbrana kar se da nakljucno. Vsaka predvidljivost bi napadalcem zelo olajsala delo. Stevili p in
q tudi ne smeta biti blizu, kar pomeni, da mora biti razlika |p− q| velika.
Ze v 1. poglavju smo omenili, da je prastevil neskoncno mnogo. Torej velika prastevila ob-
stajajo. Se vec, obstajajo razlicni testi prastevilskosti, ki v razumnem casu najdejo prastevila
oziroma z veliko verjetnostjo napovedo ali je dano stevilo prastevilo. Leta 2002 so Agrawal,
Kayal in Saxena razvili tako imenovan AKS test, ki je deterministicen in dokazljivo tece v
polinomskem casu [1]. Omenimo se nekatere druge najpomembnejse teste: Miller-Rabinov,
Wilsonov, Fermatov, Lucasov in Prothov test.
Oglejmo si sedaj zgled kreiranja kljucev.
Zgled: 1. korak: Naj bo p = 37 in q = 101. V praksi si kot receno izberemo vec tristo mestni
stevili, a smo si zaradi samega racunanja v tem zgledu izbrali majhni prastevili. Izracunamo
se produkt n = p · q = 37 · 101 = 3737.
2. korak: Izracunamo Eulerjevo funkcijo za stevilo n, to je, ϕ(n) = (p− 1) · (q− 1) = 36 · 100 =
3600.
3. korak: Izberemo si stevilo e, ki je tuje k 3600, na primer e = 251.
4.2. RSA ALGORITEM 19
4. korak: Iz enacbe 251 · d ≡ 1 (mod 3600) izracunamo stevilo d. To lahko storimo s pomocjo
Evklidovega algoritma.
3600 = 251 · 14 + 86 ⇒ 86 = 3600− 251 · 14
251 = 86 · 2 + 79 ⇒ 79 = 251− 86 · 2
86 = 79 · 1 + 7 ⇒ 7 = 86− 79 · 1
79 = 7 · 11 + 2 ⇒ 2 = 79− 7 · 11
7 = 1 · 2 + 7 ⇒ 1 = 7− 2 · 3
Zapisemo:
1 = 7− 2 · 3 =
= 7− (79− 7 · 11) · 3 = 7 · 34− 79 · 3 =
= (86− 79 · 1) · 34− 79 · 3 = 86 · 34− 79 · 37 =
= 86 · 34− (251− 86 · 2) · 37 = 86 · 108− 251 · 37 =
= (3600− 251 · 14) · 108− 251 · 37 = 86 · 109− 251 · 37 =
= 3600 · 108− 251 · 1549
Dobimo: 1 = 3600 · 108− 251 · 1549 ⇒ −251 · 1549 ≡ 1 (mod 3600).
Torej smo izracunali d = −1549 ≡ 2051 (mod 3600). Par (e, n) = (251, 3737) je javni kljuc,
par (d, n) = (2051, 3737) pa zasebni kljuc. Javni kljuc uporabi posiljatelj, ki nam zeli poslati
sporocilo. Zasebni kljuc uporabi prejemnik, v nasem primeru mi, ko zelimo desifrirati prejeto
sporocilo. Postopek kreiranja kljucev je tako koncan. 4
4.2.2 Postopek sifriranja
Pri sifriranju sporocil v kriptosistemu RSA imamo opravka s stevili, zato moramo besedno
sporocilo najprej pretvoriti v numericno obliko. V ta namen lahko uporabimo razlicne kode, na
primer ASCII kodiranje znakov, kjer je za vsak znak dolocena ustrezna desetiska vrednost. Za
nas precej poenostavljen primer bomo predvideli, da posiljamo besedilno sporocilo napisano z
velikimi tiskanimi crkami, ki jih v numericno obliko spremenimo s pomocjo ASCII kode. Delna
ASCII kodna tabela se nahaja spodaj.
20 POGLAVJE 4. RSA KRIPTIRANJE
crka A B C D E F G H I J K L M
vrednost 65 66 67 68 69 70 71 72 73 74 75 76 77
crka N O P Q R S T U V W X Y Z
vrednost 78 79 80 81 82 83 84 85 86 87 88 89 90
Postopek sifriranja sporocila z RSA algoritmom:
1. korak: Crke besednega sporocila m pretvorimo v stevilske vrednosti s1, s2, ... s pomocjo
ASCII tabele.
2. korak: Pretvorjeno sporocilo razdelimo v bloke ustrezne dolzine, ki predstavljajo enote
sporocila mi. Dolzina blokov je navadno vnaprej dogovorjena in izbrana tako, da je mi < n,
kjer je n produkt izbranih prastevil pri kreiranju kljucev.
3. korak: Posamezne enote sporocila mi potenciramo z eksponentom e po modulu n, kjer je
par (e, n) javni kljuc prejemnika. Tako dobimo enote tajnopisa
ci ≡ mei (mod n).
Sifrirano sporocilo je sedaj C = c1c2c3... in to posljemo prejemniku sporocila. Pri tem je po-
trebno paziti na to, da so tudi enote ci v naprej dogovorjene dolzine in tako po potrebi dodamo
nekaj vodilnih nicel.
Poglejmo si postopek sifriranja besednega sporocila, kjer se navezujemo na prejsnji zgled.
Zgled: Imamo torej zasebni kljuc (d, n) = (2051, 3737) in javni kljuc (e, n) = (251, 3737).
Zelimo poslati sporocilo “KNJIGA”.
1. korak: Crke sporocila spremenimo v stevilske vrednosti in tako dobimo 75 78 74 73 71 65.
2. korak: Sporocilo s stevilskimi vrednostmi razdelimo na bloke poljubnih dolzin, pri cemer
moramo upostevati, da je vrednost posameznega bloka manjsa od produkta izbranih prastevil
pri kreiranju kljucev. Ker je n = 3737, bo sporocilo razdeljeno na bloke dolzine 3, kot je prika-
zano v spodnji tabeli.
m1 m2 m3 m4
757 874 737 165
3. korak: Sedaj pa vsak blok posebej sifriramo po formuli ci ≡ m251i (mod 3737). Za prvi
blok dobimo naslednjo enacbo c1 ≡ 757251 (mod 3737), ki jo resimo tako, da si pomagamo z
4.2. RSA ALGORITEM 21
vmesnimi izracuni ter s trditvijo 2 v podpoglavju Kongruenca stevil. Vmesne potence dobimo
po naslednji formuli:
xt =
x(x2)t−12 , ce t liho
(x2)t2 , ce t sodo
Torej je x251 = x(x2)125, x125 = x(x2)62, ..., x7 = x(x2)3 in x3 = x(x2).
V nasem primeru torej dobimo:
7572 ≡ 1288 (mod 3737)
7573 = 757 · (7572) ≡ 757 · 1288 (mod 3737)⇒ 7573 ≡ 3396 (mod 3737)
7577 = 757 · (7573)2 ≡ 757 · (3396)2 (mod 3737)⇒ 7577 ≡ 3419 (mod 3737)
...
757251 = 757 · (757125)2 ≡ 757 · (3343)2 (mod 3737)⇒ 757251 ≡ 3687 (mod 3737)
Rezultat sifriranja sporocila m1 = 757 je c1 = 3687. Na analogen nacin to storimo se za preo-
stale bloke sporocila. Rezultat sifriranja je prikazan v spodnji tabeli.
mi 757 874 737 165
ci 3687 0843 2454 0468
4
4.2.3 Postopek desifriranja
Sporocilo, ki smo ga prejeli od posiljatelja, moramo odkodirati z uporabo tajnega kljuca, ki ga
poznamo le mi - prejemniki sporocila. Za uspesno desifriranje besednega sporocila, moramo
tako vedeti le se, katero kodo je uporabil posiljatelj pri kodiranju znakov v stevila.
Postopek desifriranja prejetega sporocila je naslednji:
1. korak: Prejeto sporocilo C razdelimo na bloke tajnopisa ci, tako da za vsak i velja ci < n.
Dolzina blokov je vnaprej dogovorjena.
2. korak: Vsak blok tajnopisa ci pretvorimo v bloke originalnega sporocila mi, tako da
uporabimo naslednjo zvezo
mi ≡ cdi (mod n).
22 POGLAVJE 4. RSA KRIPTIRANJE
Pri tem je d tajni kljuc, ki smo ga kreirali pred zacetkom komunikacije.
Prvotno sporocilo, ki ga je posiljatelj poslal, je torej sporocilo M = m1m2m3..., pri cemer
moramo upostevati kodiranje znakov besedila.
Pogljemo si sedaj zgled desifriranja prejetega sporocila. Uporabili bomo javni in zasebni kljuc,
ki smo ju ze kreirali v enem od prejsnjih zgledov.
Zgled: Recimo, da smo prejeli naslednje sporocilo:
c1 c2 c3 c4 c5
1699 2707 3615 3361 3715
1. korak: Prejeto sporocilo razdelimo v bloke, po vnaprej dogovorjeni dolzini. To smo ze storili
v zgornji tabeli.
2. korak: Vsak posamezen blok prejetega sporocila posebej dekriptiramo po formuli mi ≡
c2051i (mod 3737). Za prvi blok 1699 dobimo naslednjo enacbo m1 ≡ 16992051 (mod 3737), ki jo
resimo tako, da si pomagamo z vmesnimi izracuni:
16992 ≡ 1637 (mod 3737)
16993 = 1699 · (16992) ≡ 1699 · 1637 (mod 3737)⇒ 16993 ≡ 935 (mod 3737)
...
16992051 = 1699 · (16991025)2 ≡ 1699 · (2232)2 (mod 3737)⇒ 16992051 ≡ 826 (mod 3737)
Rezultat desifriranja sporocila c1 = 1699 je m1 = 826. Na analogen nacin to storimo se za
preostale bloke prejetega sporocila. Rezultat desifriranja je prikazan v spodnji tabeli.
ci 1699 2707 3615 3361 3715
mi 826 586 787 376 79
Sporocilo moramo le se spremeniti iz stevilskih vrednosti v znake s pomocjo ASCII tabele in
na ta nacin dobimo besedo “RAVNILO”. 4
4.2.4 Pravilnost delovanja algoritma RSA
Dokazati zelimo, da je postopek delovanja RSA algoritma pravilen, to je, da ce sporocilo
sifriramo s tajnim kljucem in ga nato z zasebnim kljucem desifriramo, dobimo nazaj prvo-
tno sporocilo.
4.2. RSA ALGORITEM 23
Izrek 9. Metoda sifriranja in desifriranja z RSA algoritmom deluje pravilno.
Dokaz. Dokazati moramo, da za vsako stevilo m, pri cemer 1 ≤ m < n, velja, da po sifriranju
in desifriranju zopet dobimo stevilo m. Stevilo n je produkt izbranih prastevil pri kreiranju
kljucev, to je n = pq.
Posiljatelj sporocilo m sifrira z javnim kljucem prejemnika e in poslje prejemniku sporocilo
oziroma stevilo c ≡ me (mod n). Prejemnik sporocila izracuna t ≡ cd (mod n). Po pravilu
potenciranja potenc je t ≡ (me)d (mod n), to je, t ≡ med (mod n) , kjer je d prejemnikov
zasebni kljuc. Pokazimo sedaj, da je med ≡ m (mod n), to je, da je t ≡ m (mod n).
Po trditvi 3 iz poglavja 2.4 je dovolj dokazati med ≡ m (mod p) in med ≡ m (mod q). Oglejmo
si dokaz za p. Dokaz za q je povsem analogen.
Ce p | m, je m ≡ 0 (mod p) in posledicno med ≡ 0 (mod p), torej res velja med ≡ m (mod p).
Denimo nazadnje, da p - m. Po izreku 8 velja mp−1 ≡ 1 (mod p). Ker je e · d ≡ 1 (mod ϕ(n))
in je ϕ(n) = (p− 1)(q − 1), obstaja k ∈ Z, da je ed = (p− 1)(q − 1) + 1.
Tedaj je
med = m ·mk·(p−1)·(q−1) = m · (mp−1)k·(q−1) ≡ m · 1 (mod p),
kot smo trdili.
Res torej velja t ≡ m (mod n) in zato zaradi 1 ≤ t,m < n sledi t = m. �
4.2.5 Digitalno podpisovanje
RSA algoritem lahko uporabimo tudi za digitalni podpis posiljatelja, s katerim poskrbimo za
potrjevanje pristnosti poslanega sporocila. Za digitalni podpis mora veljati, da je avtenticen,
da se ga ne da ponarediti, kopirati, da se podpisanega dokumenta ne da spremeniti ter da
se podpisa ne da zanikati. Predpostavimo, da Andreja prejme sporocilo od Bojana sifrirano
po metodi RSA. Kako Andreja ve, da ji je sporocilo zares poslal Bojan? Bojan lahko stori
naslednje. Najprej sifrira sporocilo z njegovim zasebnim kljucem, potem doda sporocilu podpis
“Bojan”in celotno sporocilo zopet sifrira z Andrejinim javnim kljucem. Ko Andreja prejme
sifropis, ga desifrira z njenim zasebnim kljucem. Desifrirano sporocilo bo sestavljeno iz podpisa
“Bojan”in sifrirane vsebine sporocila. Ce zeli prebrati vsebino sporocilo, poisce Bojanov javni
kljuci in s tem lahko desifrira se vsebino sporocila.
24 POGLAVJE 4. RSA KRIPTIRANJE
Nihce ne more ponarediti tega sporocila in podpisa, saj bi moral uporabiti Bojanov zasebni
kljuc, ki pa ni javen. Ce bi napadalec uporabil katerikoli drug kljuc, bi Andreja po desifriranju
vsebine z Bojanovim javnim kljucem dobila brezpredmetno sporocilo in bi takoj vedela, da
sporocila ni poslal Bojan.
4.2.6 Uporaba
RSA algoritem za sifriranje podatkov se uporablja v SSL (Secure Socket Layer) protokolu, ki
omogoca varno komunikacijo na medmrezju, zelo razsirjen pa je tudi pri spletnih trgovinah,
kjer se pojavljajo prenosi zaupne narave (osebni podatki, stevilka kreditne kartice). Vsakic, ko
obiscemo zasciteno stran na internetu, nas racunalnik zgenerira zasebni in javni kljuc, ki potem
omogocata varno uporabo oziroma zascito osebnih podatkov. To lahko obcutimo tako, da je
internetna povezava malce pocasnejsa.
4.2.7 Varnost
Varnost RSA sistema je v veliki meri odvisna od izbire prastevil pri generiranju kljucev, kar je
opisano v poglavju Kreiranje kljucev. Zaenkrat noben napad na RSA algoritem ni bil uspesen,
vendar pa tudi niso se dokazali, da je algoritem varen. Velja pa, da ce kdo lahko uspesno napade
RSA algoritem, potem lahko faktorizira veliko stevilo, ki je produkt dveh prastevil.
S faktorizacijo stevil so se ukvarjali ze mnogi, vendar se niso odkrili metode, ki bi poljubno
stevilo faktorizirala v razumnem, polinomskem casu, ni bilo pa se dokazano, da nobena taka
metoda ne obstaja. Do leta 2013 je bilo najvecje stevilo, ki je bilo faktorizirano, dolgo 768 bitov
oziroma 212 stevk. Stevila dolzine 256 bitov ali manj je moc razstaviti na osebnem racunalniku
v nekaj urah. RSA kljuci so dandanes tipicno dolgi najmanj 1024 bitov, priporoca pa se upo-
raba 2048 bitov. Nekateri strokovnjaki so mnenja, da bodo 1024 bitni kljuci kmalu postali
zlomljivi, nekaj pa jih je celo mnenja, da bodo celo kljuci z dolzino 4096 v bliznji prihodnosti
postali premajhni. Zaradi tega v glavnem domnevajo da je kriptosistem RSA varen, ce je le n
zadostno velik.
4.2. RSA ALGORITEM 25
4.2.8 Napadi
Napadi na RSA kriptosistem opozarjajo, kako pomembno je upostevati spodaj opisane predloge
pri implementaciji, da se izognemo ranljivosti sistema.
Izkaze se, da je mogoce v primeru, da je sifriranih veliko kopij cistopisa z razlicnimi kljuci, iz
sifropisa ugotoviti cistopis.
Wiener [11] je opisal se eno od moznih ranljivosti RSA, in sicer je pokazal, da ce za prastevili
p in q velja q < p < 2q in ce za zasebni kljuc d velja d < 4√n/3, pri cemer je n = p · q, potem
lahko iz javnega para kljuca (e, n) dolocimo zasebni kljuc d za desifriranje sporocila. Iz tega
sledi, da stevili p in q ne smeta biti preblizu skupaj ter da mora biti eksponent d velik.
Naj bo n = p · q in naj ima produkt m stevk. Izkaze se [2], da je moc ob razkritju delne
informacije zadnjih ali prvih m/4 stevk stevila p, zlahka faktorizirati stevilo n. To pa pomeni,
da napadalec lahko izracuna nas zasebni kljuc. Podobno se izkaze, da lahko v primeru, da
je javni kljuc e majhen, hitro lahko ugotovimo zasebni kljuc d, ce poznamo zadnjo cetrtino
njegovih stevk.
Leta 1995 je Paul Kocher [5] demonstriral, da je mogoce zasebni kljuc d ugotoviti na pod-
lagi casa, ki ga sistem porabi za desifriranje razlicnih sporocil. Temu se lahko izognemo tako,
da zagotovimo konstanten cas izvajanja desifriranja tajnopisov, vendar pa tak pristop znatno
zmanjsa ucinkovitost.
Zaenkrat resnih grozenj varnosti RSA kriptositema ni, ga pa ravno ta znacilnost dela pri-
vlacnega za siroko uporabo, obenem pa za nove in nove poskuse napadov.
26 POGLAVJE 4. RSA KRIPTIRANJE
Poglavje 5
SKLEP
V diplomskem delu smo se posvetili RSA kriptiranju, ki je danes pogosto uporabljeno, saj je ob
dovolj velikih izbranih prastevilih pri kreiranju javnega in zasebnega kljuca varno. Temelji na
matematicno zahtevnem problemu faktorizacije velikih prastevil, za katerega se ni bila odkrita
hitra metoda, ceprav je prav tako res, da se ni bilo dokazano, da taka metoda ne obstaja. Za
faktoriziranje velikih stevil je vse od leta 1991 do 2007 potekalo tekmovanje z veliko denarno
nagrado ob uspesnem faktoriziranju velikega stevila. Trenutno je se varno izbrati najmanj 1024
bitna prastevila, se pa ze bolj priporoca uporaba 2048 bitnih prastevil. Seveda se bo v priho-
dnosti ta stevilka vedno bolj visala, saj bodo na voljo hitrejsi procesorji in s tem zmogljivejsi
racunalniki.
Na temo RSA kriptiranja obstaja veliko literature v angleskem jeziku, medtem ko v slovenscini
ne prav veliko. Se pa literatura razlikuje predvsem po tem, katero temo je avtor zelel izpostaviti.
Veliko je napisanega o razlicnih postopkih iskanja velikih prastevil, preverjanju prastevilskosti
in drugih kriptositemih, ki so se razvili na podlagi RSA.
V diplomskem delu smo predstavili zgodovino sifriranja od starih Egipcanov pa vse do razvoja
kriptografije javnega kljuca, ki je eden od najvecjih napredkov pri izmenjavi kljucev za sifriranje
in desifriranje. Dokazali smo, da metoda RSA deluje pravilno in se malo dotaknili tudi teme o
uporabi, varnosti in napadih na RSA.
27
28 POGLAVJE 5. SKLEP
Literatura
[1] Agrawal M., Kayal N., Saxena N., PRIMES is in P. Annals of Mathematics. Volume 160,
2004, stran 781 - 793.
[2] Coppersmith D., Small solutions to polynomial equations, and low exponent RSA vulnera-
bilities. Journals of Cryptology. Volume 10, 1997, stran 233 - 260.
[3] Grasselli J., Elementarna teorija stevil. DMFA- zaloznistvo, Ljubljana, 2009.
[4] Hoffstein J., Pipher J., Silverman J., An introduction to mathematical cryptography. Sprin-
ger cop., New York, USA, 2008.
[5] Kocher P., Timing attacks on implementations of Diffie-Hellman, RSA, DSS, and other
systems. Springer-Verlag, New York, 1996, stran 104 - 113.
[6] Medved, I. Nacelo vkljucitev in izkljucitev ter njegova uporaba. Diplomsko delo. Pedagoska
fakulteta, Ljubljana, 2013.
[7] Mollin R., An introduction to cryptography. Second Edition. Taylor & Francis Group, Boca
Raton, USA, 2007.
[8] Pavesic N., Informacija in kodi. Zalozba FE in FRI, Ljubljana, 2009.
[9] Rosen K., Elementary number theory and its applications. Fifth edition. Pearson/Addison
Wesley, cop., Boston, USA, 2005.
[10] Singh S., Knjiga sifer: umetnost sifriranja od starega Egipta do kvantne kriptografije. Ucila
International, Trzic, 2006.
[11] Wiener M. J., Cryptanalysis of short RSA secret exponents. IEEE Transactions on Infor-
mation Theory. Volume 36 (1990), stran 553 - 558.
[12] Cesnik U., Asimetricni sifrirni postopki.
Dostopno na: http://www.lkn.fe.uni-lj.si/Seminarji/u_cesnik.pdf (3. 8. 2013).
29
30 LITERATURA
[13] Tattersall J., Elementary Number Theory in Nine Chapters. Cambridge University Press,
New York, 1999.
Dostopno na: http://www.fmf.uni-lj.si/~lavric/Tattersall\%20-\%20Elementary
\%20number\%20theory\%20in\%20nine\%20chapters.pdf (19. 8. 2013).