Transcript PPT

Rinktiniai informacijos saugos skyriai
7. Kriptografija ir kriptografijos protokolai:
Viešojo rakto kriptografija
Paskaitos tikslai
Šioje temoje nagrinėjami klausimai:




Viešojo rakto kriptografijos pagrindinės sąvokos.
Viešojo rakto kriptosistemų veikimo principai.
Viešojo rakto kriptosistemos pavyzdys: RSA.
Diffie–Hellman bendro rakto sudarymo protokolas.
2
Terminai (priminimas)






M: pradinis (atviras, nešifruotas) tekstas (plaintext) –
pradinis pranešimas (duomenys, informacija).
C: šifruotas tekstas (šifras, ciphertext) – užšifruotas
pranešimas (duomenys, informacija).
E: šifravimas (cipher) – algoritmas šifruotam tekstui iš
pradinio teksto gauti.
D: dešifravimas – algoritmas pradiniam tekstui iš šifruoto
teksto atstatyti.
K: raktas (key) – šifravimui (atitinkamai dešifravimui)
naudojama papildoma informacija, žinoma tik siuntėjui
(atitinkamai gavėjui).
Kriptosistema (kriptografinė sistema, šifras, cryptosystem) –
šifravimo ir dešifravimo sistema.
3
Kriptografijos uždaviniai ir priemonės
(priminimas)

Slaptumas (konfidencialumas, confidentiality)


Vientisumas (integralumas, integrity)



Kriptografinės maišos funkcijos
Skaitmeninis parašas
Autentiškumas (tapatumo nustatymas, authenticity)



Šifravimas
MAC
Skaitmeninis parašas
Neišsižadėjimas (nonrepudiation)

Skaitmeninis parašas
4
Simetrinės kriptografijos trūkumai

Simetrinė kriptografija užtikrina:



Slaptumą (šifravimas),
Vientisumą, autentiškumą (kriptografinės maišos funkcijos).
Trūkumas:

Kad ji tai užtikrintų, siuntėjas ir gavėjas turi turėti tą patį raktą:


Reikia saugaus kanalo raktui perduoti.
Be to, simetrinė kriptografija neužtikrina:

Neišsižadėjimo.
5
Viešojo rakto kriptografija

1976 m. Diffie ir Hellman straipsnyje “Naujos kryptys
kriptografijoje” (“New Directions in Cryptography”)
pasiūlė viešojo rakto kriptografiją:


Viešojo rakto kriptografinės sistemos (užtikrina slaptumą),
Raktų platinimo schemos (užtikrina raktų perdavimą
naudojimui simetrinėse kriptosistemose):


Diffie-Hellman susitarimo dėl raktų protokolas (Diffie-Hellman key
agreement protocol),
Skaitmeninis parašas (užtikrina vientisumą, autentiškumą,
neišsižadėjimą).
6
Pagrindiniai viešo rakto kriptosistemų
principai





Kiekvienas naudotojas turi raktų porą (KV, KP):

KV yra viešasis raktas, skirtas šifravimui,

KP yra privatusis raktas, skirtas dešifravimui,

KV ≠ KP,

Juos sieja lygybė: D(E(M,KV),KP)=M kiekvienam pranešimui M.
Žinant viešąjį raktą ir kriptosistemą, praktiškai neįmanoma
(skaičiavimų prasme, computationally infeasible) rasti privatųjį raktą.
Viešasis raktas gali būti skalbiamas viešai.
Bet kas gali užšifruoti (pasinaudodamas viešai skelbiamu viešuoju
raktu), tik vienas gali dešifruoti (tas, kas žino privatųjį raktą).
Dar vadinama asimetrine kriptografija (asimetrinės
kriptosistemos), nes tas, kas gali užšifruoti, negali dešifruoti.
7
Viešojo rakto kriptosistemos schema
M
Pranešimų
šaltinis
C
M
Dešifratorius
Šifratorius
Pranešimų
gavėjas
KPB
KVB
Viešųjų raktų
saugykla
Privatus raktas
M- pranešimo atviras tekstas,
C- šifruotas pranešimas,
KVB – viešas naudotojo B raktas,
KPB – privatus naudotojo B raktas.
8
Viešojo rakto kriptosistemos naudojimas:
raktų generavimas

Pirmiausia kiekvienas naudotojas sukuria savo raktų poras:





KVA – viešas naudotojo A raktas
KPA – privatus naudotojo A raktas
KVB – viešas naudotojo B raktas
KPB – privatus naudotojo B raktas
Viešieji raktai KVA ir KVB talpinami į viešą saugyklą.
9
Viešojo rakto kriptosistemos naudojimas:
šifravimas

Jei Algis (A) nori perduoti slaptą pranešimą M Birutei (B), jis
randa jos viešąjį raktą saugykloje ir pritaiko jį šifruoti
pranešimui M. Mes galim užrašyti


C = E(M, KVB).
C – gautas užšifruotas pranešimas M. Jis siunčiamas Birutei.
10
Viešojo rakto kriptosistemos naudojimas:
dešifravimas

Dešifravimui (pradinio pranešimo M gavimui) Birutė naudoja
savo privatų raktą KPB:


M = D(C, KPB).
Birutė, norėdama perduoti slaptą pranešimą M Algiui, daro
analogiškai, tik šifravimui naudoja Algio viešąjį raktą - KVA.
11
Viešojo rakto kriptosistemos: pastabos

Viešojo rakto kriptografiniai algoritmai taip pat gali būti
naudojami ir pranešimų autentiškumo užtikrinimui.


Bendraujant dažniausiai reikia ir slaptumo, ir autentiškumo
užtikrinimo.


Šiuo atveju perduodamas pranešimas užšifruojamas siuntėjo privačiuoju
raktu (pasirašymas), o dešifruojamas siuntėjo viešuoju raktu (parašo
patikrinimas).
Todėl kiekvienas komunikacijų dalyvis naudoja dvi raktų poras: vieną šifravimui, o kitą - pasirašymui. Pranešimas pradžioje yra pasirašomas, o
po to - užšifruojamas. Tokiu būdu bendrauti gali tik šiuos raktus turintys
asmenys.
Pagrindinis viešojo rakto kriptosistemų trūkumas, lyginant jas
su slaptojo rakto sistemomis, yra žymiai mažesnis šifravimo ir
dešifravimo greitis.

Todėl jos ne pakeičia simetrines kriptosistemas, o jas papildo.
12
Asimetrinio šifravimo algoritmai

Diffie-Hellman,






Griežtai šnekant, tai nėra šifravimo algoritmas. Tai bendro
rakto sudarymo protokolas.
Priskiriamas viešojo rakto kriptografiniams algoritmams.
RSA,
ElGamal,
Elipsinės kreivės,
...
13
Vienakryptės funkcijos su landomis

Viešojo rakto kriptosistemos sudaromos, naudojant
vienakryptes funkcijas (one-way functions) su landomis
(trapdoor):


Vienakryptės funkcijos f reikšmę C=f(M) apskaičiuoti
nesunku (tai šifravimas).
Atvirkštinės funkcijos f -1 reikšmę M=f -1(C) apskaičiuoti yra
praktiškai neįmanoma (skaičiavimų prasme) (tai
dešifravimas).


Nebent žinoma kažkokia papildoma informacija (landa) apie tą
atvirkštinę funkciją.
Ta papildoma informacija ir yra privatusis raktas.
14
RSA sistema




RSA – populiariausias viešojo rakto algoritmas.
Ron Rivest, Adi Shamir ir Leonard Adleman paskelbė
1978 metais.
Naudojama vienakryptė funkcija – kėlimas laipsniu
didelio skaičiaus moduliu: f(x) = xe mod n, kur e ir n yra
sveikieji skaičiai.
Naudojami dideli skaičiai:


Šiuo metu rekomenduojama naudoti 2048 bitų (617
dešimtainių skaitmenų) ilgio n.
Šio metodo patikimumas pagrįstas didelių skaičių
faktorizacijos sudėtingumu (žr. toliau apie saugumą).
15
RSA sistema

RSA šifravimo raktai veikia abejomis kryptimis.


Galima užšifruoti žinutę viešuoju gavėjo raktu, o dešifruoti
gavėjo privačiuoju raktu. Tai naudojama šifravimui.
Galima užšifruoti žinutę privačiuoju siuntėjo raktu, o
dešifruoti viešuoju siuntėjo raktu. Tai naudojama
skaitmeniniam parašui, kadangi parašo autorius yra
vienintelis asmeninio rakto savininkas. Tai garantuoja
dokumento autoriaus ar siuntėjo autorystę ir duomenų
vientisumą (detaliau žr. temą apie skaitmeninį parašą).
16
RSA algoritmas: raktų parinkimas


Parenkami du pirminiai skaičiai p ir q.
Apskaičiuojamos sandaugos:




n = p * q,
t = (p - 1) * (q - 1).
Parenkamas skaičius e, 1<e<t, neturintis bendro daliklio
su t. Pora (e, n) yra viešasis raktas.
Randamas skaičius d, 1<d<t, toks, kad d * e ≡ 1 mod t.
Pora (d, n) yra privatusis raktas.
17
RSA algoritmas: šifravimas ir
dešifravimas



Išeities tekstas suskaidomas blokais M taip, kad 0 < M <
n. Tai galima padaryti grupuojant tekstą blokais po k bitų,
kur k — didžiausias sveikas skaičius, kuriam 2k<n.
Šifravimas. Apskaičiuoti C = Me mod n.
Dešifravimas. Apskaičiuoti M = Cd mod n.
18
RSA pavyzdys: raktų parinkimas
Realiose realizacijose naudojami labai dideli skaičiai. Pavyzdyje
paprastumo dėlei paimsime mažus skaičius.

Tegul p = 3, q = 11. Dalybos moduliu operaciją žymėsime %
ženklu. Raktų porą gaunama taip. Apskaičiuojame:
n
= 3 *11 = 33;
t = (3 – 1) * (11 – 1) = 20.



Parenkame skaičių e, neturintį bendro daliklio su 20. Tegu tai būna
e = 3.
Apskaičiuojame skaičių d tokį, kad (d * 3) % 20 = 1. Tai bus d = 7.
Taigi raktų pora: (3, 33) – viešasis raktas, (7, 33) – privatusis raktas.
19
RSA pavyzdys: šifravimas
Tarkime, mums reikia užšifruoti keturioliktą abėcėlės
raidę, kurios kodas 14.
1.
2.
Pakeliame laipsniu 3 skaičių 14: 143 = 2744;
Daliname rezultatą moduliu 33: 2744 % 33 = 5;
Taip mūsų keturioliktoji abėcėlės raidė tampa penktąja.
20
RSA pavyzdys: dešifravimas
2.
Raidei atstovaujantį skaičių 5 pakeliame laipsniu 7: 57 =
78125;
Daliname rezultatą moduliu 33: 78125 % 33 = 14;

Taip penktoji abėcėlės raidė tampa keturioliktąja.
1.
21
RSA algoritmas: saugumas



Kriptoanalitikas (Zigmas) žino:

Kokia kriptosistema naudojama,

Viešąjį raktą (e,n),

Šifruotą pranešimą C.
Jis nori rasti:

Pranešimą M.
Jis turi išspręsti lygtį C = Me mod n.

Tai praktiškai neįmanoma (skaičiavimų prasme).

Manoma, kad lengviau yra rasti privatųjį raktą (d,n) ir juo
naudojantis dešifruoti.

Privatųjį raktą rasti galima tokiu būdu: išskaidyti n pirminiais
dauginamaisiais p ir q, apskaičiuoti t = (p - 1) * (q - 1), tada
nesunkiai rasti d iš lygybės d * e ≡ 1 mod t, ir M = Cd mod n.

Bet išskaidyti n irgi praktiškai neįmanoma (skaičiavimų prasme).22
RSA algoritmas: raktų ilgis






Taigi, RSA saugumas remiasi tuo, kad didelių skaičių faktorizavimas
(skaidymas dauginamaisiais) yra sunkus uždavinys.
Kuo didesnis skaičius n, tuo saugesnė sistema.
Skaičiaus n dydis dažnai išreiškiamas jį sudarančių bitų skaičiumi
(t. y. jo dvejetainio pavidalo ilgiu) arba dešimtainių skaitmenų
skaičiumi.
Dabartinis didelių skaičių faktorizavimo rekordas: 2009-12-12
išskaidytas skaičius n, kurio ilgis – 768 bitai (232 dešimtainiai
skaitmenys).
Dabar RSA raktuose dažniausiai naudojami 1024 – 2048 bitų (309 –
617 dešimtainių skaitmenų) ilgio n.
Šiuo metu rekomenduojama naudoti 2048 bitų (617 dešimtainių 23
skaitmenų) ilgio n.
Didelių skaičių faktorizavimo pavyzdys:
RSA-768


RSA-768 =
1230186684530117755130494958384962720772853569595334792
1973224521517264005726365751874520219978646938995647494
2774063845925192557326303453731548268507917026122142913
4616704292143116022212404792747377940806653514195974598
5 6902143413
RSA-768 =
3347807169895689878604416984821269081770479498371376856
8912431388982883793878002287614711652531743087737814467
999489 ×
3674604366679959042824463379962795263227915816434308764
2676032283815739666511279233373417143396810270092798736
308917
24
Kvantiniai kompiuteriai ir RSA


Kvantiniame kompiuteryje faktorizavimas nėra sunkus uždavinys.

1994 m. P. Shor pasiūlė labai greitą faktorizavimo algoritmą
kvantiniams kompiuteriams.

Išskaidyti n į p ir q (t. y. įveikti RSA kriptosistemą) kvantiniu
kompiuteriu užtruks panašiai tiek laiko, kiek trunka viena RSA
šifravimo operacija paprastu kompiuteriu.

Atsiradus kvantiniams kompiuteriams, RSA pasidarys nebesaugus,
kad ir koks būtų n ilgis.

Nebesaugios pasidarys ir kitos dažniausiai šiuo metu naudojamos
viešojo rakto kriptosistemos: Diffie-Hellman, ElGamal, elipsinių
kreivių...
2009 m. jau buvo pademonstruotas kvantinis kompiuteris, sugebantis
vykdyti Shor algoritmą: jis išskaidė 15 į 3 ir 5.

Kas toliau?

Poreikis kurti viešojo rakto kriptosistemas, kurios remtųsi
uždaviniais, kurie būtų sunkūs ir kvantiniuose kompiuteriuose. 25
Diffie–Hellman bendro rakto sudarymo
protokolas




Diffie–Hellman bendro rakto sudarymo protokolas
(Diffie–Hellman key exchange) yra kriptografinis
protokolas, leidžiantis dviem šalims, kurios iki tol
nebendravo, sudaryti bendrą slaptąjį raktą, naudojantis
nesaugiu ryšio kanalu.
Gautas bendras slaptasis raktas gali būti naudojamas
simetrinėje kriptosistemoje tolimesniam ryšiui šifruoti.
Naudojamas TLS, SSH ir kt. protokoluose.
Sukūrė Whitfield Diffie ir Martin Hellman 1976 m.
26
Diffie–Hellman protokolas: veikimas
(iš http://en.wikipedia.org/wiki/Diffie-Hellman)
Čia p yra pirminis skaičius, o g yra skaičių moduliu p multiplikatyviosios
grupės generatorius.
27
Diffie–Hellman protokolas: veikimo
pavyzdys
1.
2.
3.
4.
5.
Algis ir Birutė susitaria naudoti pirminį skaičių p=23 ir generatorių
g=5.
Algis pasirenka slaptą sveikąjį skaičių a=6, tada apskaičiuoja ir
nusiunčia Birutei A = ga mod p:

A = 56 mod 23 = 8.
Birutė pasirenka slaptą sveikąjį skaičių b=15, tada apskaičiuoja ir
nusiunčia Algiui B = gb mod p:

B = 515 mod 23 = 19.
Algis apskaičiuoja s = Ba mod p:

s = 196 mod 23 = 2.
Birutė apskaičiuoja s = Ab mod p:

s = 815 mod 23 = 2.
28
Diffie–Hellman protokolas: pastabos







Ir Algis, ir Birutė gavo tą patį skaičių s, nes s = gab = gba mod p.
Slaptai laikomos reikšmės: a, b ir s = gab = gba mod p.
Visos kitos reikšmės – p, g, ga mod p, ir gb mod p – siunčiamos
viešai.
Gautas bendras slaptasis raktas s gali būti naudojamas simetrinėje
kriptosistemoje tolimesniam ryšiui šifruoti.
Kad ryšys būtų saugus, p turėtų būti sudarytas iš ne mažiau kaip 300
dešimtainių skaitmenų, o a ir b turėtų kiekvienas būti bent 100
dešimtainių skaitmenų ilgio.
Zigmas gali perimti viešai siunčiamus p, g, ga mod p, ir gb mod p, bet
jei p, a ir b bus pakankamai dideli, jis negalės rasti a, b ir s.
g gali būti ir nedidelis, praktikoje jis paprastai lygus 2 ar 5.
29
Diffie–Hellman protokolo naudojimas
SSH protokole




SSH protokole naudojamas Diffie–Hellman bendro rakto sudarymo
protokolas su šiomis reikšmėmis:
p yra 1024 bitų pirminis skaičius, kurio šešioliktainė išraiška yra tokia:
FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B
80DC1CD1 29024E08 8A67CC74 020BBEA6 3B139B22
514A0879 8E3404DD EF9519B3 CD3A431B 302B0A6D
F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6
F44C42E9 A637ED6B 0BFF5CB6 F406B7ED EE386BFB
5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381
FFFFFFFF FFFFFFFF,
g = 2.
30
Literatūra




[Gol05] D. Gollmann, Computer Security, 2nd
edition, John Wiley & Sons, 2005.
[PP07] Charles Pfleeger, Shari Lawrence Pfleeger.
Security in Computing, Fourth Edition. Prentice
Hall, 2007.
[Ske07] G. Skersys. Diskrečioji matematika.
Mokymo priemonė, Vilnius, 2007,
http://www.mif.vu.lt/~skersys/09r/dm/konsp.htm (V
dalies 5 skyrius „Kriptografija“).
[Sta07] V. Stakėnas. Kodai ir šifrai. TEV, Vilnius,
2007.
31