Epäsymmetrinen salaus

Download Report

Transcript Epäsymmetrinen salaus

Epäsymmetrinen salaus
• Tässä salaukseen käytettävä avain voi olla julkinen,
kunhan purkuavain pidetään salassa.
• Koska avaimet ovat erilaisia, tekniikkaa kutsutaan
epäsymmetriseksi salaukseksi.
• Englanninkielisten termien ”private key” ja ”public
key” käännöksinä käytetään sanoja ”yksityinen avain”
ja ”julkinen avain”.
• Epäsymmetrinen salaustekniikka pohjautuu
tiivistefunktioiden tavoin yksisuuntaisiin funktioihin.
Modulaatio ja koodaus
Timo Mynttinen
1
• Yksisuuntainen funktio riitti tiivisteen laskemiseen,
mutta salaustekniikaksi siitä ei ole.
• Tarvitaan jokin tapa, jolla funktio saadaan toimimaan
myös toiseen suuntaan.
• Tätä keinoa kutsutaan salaluukuksi (trapdoor).
• Henkilö, joka tietää salaluukun, pystyy sittenkin
ajamaan funktion toiseen suuntaan, vaikka se muiden
silmissä näyttää yksisuuntaiselta.
• Salaluukun on oltava niin piilossa, ettei sitä pysty
löytämään pelkästään kokeilemalla.
Modulaatio ja koodaus
Timo Mynttinen
2
• Julkisen avaimen järjestelmässä käytetään kahta
avainta: toisella salataan ja toisella puretaan.
• Avaimet liittyvät toisiinsa matemaattisella tavalla, jota
ulkopuolisen on käytännössä mahdotonta keksiä.
• Koska julkisella avaimella voidaan vain salata, sen
paljastumista ei tarvitse pelätä.
• Päinvastoin, avaimen löytäminen tehdään
mahdollisimman helpoksi ilmoittamalla se esim.
henkilökohtaisella www-sivulla.
• Julkiseen avaimeen liittyvä yksityinen avain pidetään
sitä vastoin visusti omana tietona.
Modulaatio ja koodaus
Timo Mynttinen
3
• Se, mitä julkisella avaimella on salattu, voidaan
purkaa vain vastaavalla yksityisellä avaimella.
• Lähetettäessä salaista tietoa se enkoodataan
vastaanottajan julkisella avaimella.
• Tämän jälkeen edes lähettäjä itse ei pysty enää
purkamaan tekemäänsä salausta.
• Salatun version voi avata vain henkilö, jolla on
hallussaan julkista avainta vastaava yksityinen avain.
• Julkisen avaimen järjestelmä on kuin lukittu laatikko,
jonka lukossa on paikka kahdelle avaimelle.
• Toisella avaimella lukko suljetaan ja toisella avataan.
Modulaatio ja koodaus
Timo Mynttinen
4
• Henkilön, jonka talon edessä tällainen laatikko on,
kannattaa tehdä lukitusavaimesta mahdollisimman
monta kopiota ja jakaa niitä kaikille halukkaille.
• Sen jälkeen tällaisen avaimen haltija voi jättää
viestejä laatikkoon ja lukita laatikon perässään.
• Oleellista on, että vain yksityisen avaimen haltija
pystyy avaamaan laatikon ja saamaan haltuunsa sen,
mitä muut ovat laatikkoon laittaneet.
• Koska yhteistä salaisuutta ei ole, julkisen avaimen
sopiminen on pelkkä ilmoitusasia.
Modulaatio ja koodaus
Timo Mynttinen
5
• Aina kun Henri haluaa vaihtaa käyttämäänsä avainta,
hän luo uuden avainparin (toisiinsa liittyvät julkisen ja
yksityisen avaimen).
• Henri tallentaa yksityisen avaimensa turvalliseen
paikkaan, mutta lähettää julkisen avaimen Elsille
täysin avoimella sähköpostilla.
• Koska avaimet toimivat itsenäisesti, molempien
osapuolien ei tarvitse vaihtaa avainpariaan yhtä
aikaa.
Modulaatio ja koodaus
Timo Mynttinen
6
• Julkisen avaimen käyttö ratkaisee toisenkin
ongelman: kun se voidaan panna näytille esim.
omalle www-sivulle, niin kenenkään ei tarvitse
muistella mikä oli kulloinkin Henrin kanssa voimassa
oleva salausavain.
• Pelkässä julkisen avaimen tekniikassa on kuitenkin
omat varjopuolensa:
Modulaatio ja koodaus
Timo Mynttinen
7
1.
2.
Epäsymmetrisen avaimen tekniikka tarvitsee
huomattavasti pidemmät avaimet kuin symmetrisen
avaimen tekniikka, koska järjestelmällisen kokeilun
sijaan niiden murto perustuu salaimen
matemaattisiin ominaisuuksiin. Jopa useisiin
tuhansiin bitteihin venyvä avain on tallennettava
levylle (jolloin sen tiedosto suojataan yleensä
symmetrisellä salauksella ja lyhyemmällä, ulkoa
muistettavalla salasanalla).
Epäsymmetriset menetelmät pohjautuvat
matematiikkaan, niistä RSA lukujen jakamiseen
tekijöihinsä. Riittävän nopeaa tekijöihin jakoa ei
tällä hetkellä tunneta, mutta ei voida myöskään
todistaa, etteikö sellaista olisi…
Modulaatio ja koodaus
Timo Mynttinen
8
3.
4.
5.
Epäsymmetriset salaukset ovat hitaita, koska niissä
lasketaan suurilla luvuilla. Ohjelmallisena
toteutuksena RSA-menetelmä on noin 100 kertaa
hitaampi kuin vastaavan datamäärän salaaminen
DES:llä… laitteistotasolla ero nousee 1000…10000
–kertaiseksi.
Niin sanottu Forward search –hyökkäys voi
paljastaa salauksen.
Julkisen avaimen järjestelmä ei synnytä
luottamusta. Se ei takaa sitä, että Henri on Henri.
Modulaatio ja koodaus
Timo Mynttinen
9
• Elsin on varmistuttava Henrin henkilöllisyydestä esim.
tapaamalla Henri henkilökohtaisesti ja vaihtamalla
julkisia avaimia ensimmäisen kerran.
• Sen jälkeen Henri voi digitaalisella allekirjoituksellaan
siirtää Elsin hankkimaa luottamusta ajassa eteenpäin.
• Kun uudet avaimet tulevat Henrin yksityisellä
avaimella allekirjoitettuna, Elsi voi olla varma niiden
aitoudesta.
• Sen sijaan, että Elsi itse tarkistaisi Henrin
henkilöllisyyden, hän voi uskoa tehtävän vaikkapa
viranomaisen tehtäväksi.
Modulaatio ja koodaus
Timo Mynttinen
10
• Digitaalinen allekirjoitus, viestien salaaminen ja
kiistämättömyysperiaate toteutuvat vain, jos niissä
käytettävä yksityinen avain on ainoastaan oikean
henkilön tiedossa.
• Jos yksityinen avain paljastuu, epäsymmetrisestä
tekniikasta ei ole yhtään sen enemmän hyötyä kuin
symmetrisestäkään.
Modulaatio ja koodaus
Timo Mynttinen
11
• Yhdistämällä symmetrisen salauksen nopeus ja
epäsymmetrisen salauksen edut luodaan seuraava
menetelmä:
1. Henri arpoo satunnaisen 128-bittisen avaimen K.
2. Tiedostoliite salataan jollakin symmetrisellä
menetelmällä käyttäen avainta K.
3. Itse avain K salataan Elsin julkisella avaimella ja
lähetetään sähköpostilla Elsille.
4. Salattu tiedostoliite lähetetään Elsille.
Modulaatio ja koodaus
Timo Mynttinen
12
• Elsi purkaa saamansa viestin yksityisellä avaimellaan
ja saa avaimen K. Sen jälkeen hän purkaa varsinaisen
liitteen tällä avaimella ja tuhoaa lopuksi avaimen K.
• Sähköpostin tapauksessa avain K on kertakäyttöinen,
ja sitä kutsutaan istuntoavaimeksi (session key).
Modulaatio ja koodaus
Timo Mynttinen
13
RSA:n idea (Ronald Rivest, Adi Shamir, Leonard
Adleman)
• Alkulukuja (primes) ovat luvut, jotka voidaan jakaa
tasan vain ykkösellä ja itsellään.
• Lukujen sanotaan olevan jaottomia, eikä niillä ole
tekijöitä.
• Alkulukuja on rajaton määrä, mutta mitä suurempiin
lukuihin mennään, sitä harvemmaksi alkuluvut
käyvät, sillä mitä suurempi luku on, sitä useampia
jakajia sillä voi olla.
Modulaatio ja koodaus
Timo Mynttinen
14
• Ei kuitenkaan ole mitään kaavaa, jolla voitaisiin
helposti laskea mikä on järjestyksessä n:s alkuluku.
• Isoilla luvuilla toimittaessa jo pelkkä jaottomuuden
selvittäminen on hankalaa.
• Pienten alkulukujen jaottomuuden tutkiminen on
helppoa.
• Otetaan luku n ja testataan nousevassa
suuruusjärjestyksessä, jakaako jokin pienempi luku
sen tasan.
• Neliöjuuri n on suurin mahdollinen jakaja: jos jakajaa
ei ole siihen mennessä löytynyt, sitä ei löydy
tämänkään jälkeen.
Modulaatio ja koodaus
Timo Mynttinen
15
N
N:ää pienempien
alkulukujen lkm
102
25
104
1229
106
78498
108
5761455
1010
455052511
1012
37607912018
1014
3204941750802
1016
279238341033925
1018
24739954287740860
Modulaatio ja koodaus
Timo Mynttinen
16
• Lisäksi mahdollisina jakajina kannattaa kokeilla vain
alkulukuja, koska muut luvut voidaan edelleen jakaa
tekijöihin ja silloin ne jakavat myös luvun n.
• Lukujen ominaisuuksia (alkulukuja, jaollisuutta, ym)
tutkivaa matematiikan haaraa kutsutaan lukuteoriaksi
(number theory).
• Tunnetun matemaatikon Karl Friedrich Gaussin
(1777-1855) mielestä matematiikka on tieteiden
kuningatar ja lukuteoria on matematiikan kuningatar.
Modulaatio ja koodaus
Timo Mynttinen
17
• RSA-menetelmään tarvitaan kaksi isoa alkulukua,
joita perinteisesti merkitään kirjaimilla p ja q.
• Jotta salaus säilyisi turvallisena, lukujen on oltava
suunnilleen yhtä pitkiä ja niillä on oltava eräitä
lisäominaisuuksia.
• Lasketaan tulo n=p*q.
• Kertolaskun jälkeen n:n pituus on kaksinkertainen
p:hen ja q:hun nähden, jos p ja q ovat 512-bittisiä,
niin n on 1024-bittinen.
• Lisäksi tarvitaan kaksi lukua, joiden osoittamiin
potensseihin sala- ja selväteksti korotetaan.
Modulaatio ja koodaus
Timo Mynttinen
18
• Näitä lukuja merkitään kirjaimilla e (encryption,
salaus) ja d (decryption, purku).
• Nämä luvut e ja d on valittava siten, että ne täyttävät
ehdon e*d=1 mod t, missä t=(p-1)*(q-1), eli toisin
sanoen löytyy jokin k:n arvo, jolle on voimassa
e*d=k*t+1.
• Matemaattisessa esityksessä luvun t paikalla
käytetään pientä kreikkalaista kirjainta Phi, φ, jolloin
kyseessä on Eulerin kertymäfunktio (totient function).
• Kertymäfunktio ilmoittaa, kuinka monta on lukua n
pienempiä lukuja (positiivisia lukuja, 1 mukaan
lukien), joilla ei ole yhteisiä tekijöitä (relatively prime)
n:n kanssa.
Modulaatio ja koodaus
Timo Mynttinen
19
• Silloin kun n on alkuluku, kertymäfunktion arvo on
aina n-1, eli silloin φ(n)=(p-1)*(q-1).
• Koska luku t saadaan kertomalla keskenään kaksi
alkulukua, joista molemmista on vähennetty yksi,
tulos ei itse ole alkuluku.
• Valittavan luvun e tulee olla pienempi kuin t, eikä sillä
saa olla yhteisiä tekijöitä t:n kanssa (muita kuin
ykkönen). Tämä ilmaistaan kirjoittamalla s.y.t(t, e)=1
(suurin yhteinen tekijä) eli englanniksi gcd(t, e) =1
(greatest common factor).
• Lopuksi tarvitaan vielä luku d, jonka täytyy olla e:n
käänteisluku modulo t.
Modulaatio ja koodaus
Timo Mynttinen
20
• Modulaariaritmetiikassa käänteisluku määritellään
toisin kuin perinteisessä aritmetiikassa.
• Modulaariaritmetiikassa kaksi lukua ovat toistensa
käänteislukuja, jos niiden tulo annetun moduluksen
suhteen on yksi.
• Esimerkiksi 3 ja 7 ovat toistensa käänteislukuja
modulo 10, sillä 7*3 mod 10=21 mod 10=1.
• Luku e ja modulus n muodostavat yhdessä julkisen
avaimen, joka voidaan kertoa kaikille.
• Luku d ja modulus n muodostavat yksityisen
avaimen, joka pidetään vain omana tietona.
• Myös luvut p, q ja t ovat luottamuksellisia.
Modulaatio ja koodaus
Timo Mynttinen
21
• Luvut p, q ja t tuhotaan, kun avainpari on luotu.
• Olkoot salattava selväteksti P ja salateksti C.
• Salaus tehdään korottamalla selväteksti P potenssiin
e ja ottamalla siitä modulo n:n suhteen:
C  P e mod n .
• Salateksti puretaan tekemällä korotus toisella
eksponentilla d ja ottamalla taas modulo:
P  C d mod n .
Modulaatio ja koodaus
Timo Mynttinen
22
• Kokeillaan äskeistä luvuilla:
1. Valitaan aluksi kaksi suunnilleen yhtä pitkää
alkulukua, luvut p=7 ja q=17.
2. Lasketaan n=p*q=7*17=119.
3. Lasketaan t=(p-1)(q-1)=6*16=96.
4. Valitaan luku e, joka on pienempi kuin 96 ja jolla ei
ole yhteisiä tekijöitä 96:n kanssa. Valitaan arvoksi
e=5.
5. Etsitään d:n arvo, joka täyttää ehdon d*e=1 mod
96 ja on pienempi kuin t. Pitäisi siis löytää luku, joka
kerrottuna 5:llä (e) ja jaettuna 96:lla antaa
jakojäännökseksi ykkösen.
Modulaatio ja koodaus
Timo Mynttinen
23
• Koska 96+1=97, kokeillaan arvoja seuraavasti:
((1*96)+1)/5=97/5=19,4
((2*96)+1)/5=193/5=38,8
((3*96)+1)/5=289/5=58,2
((4*96)+1)/5=385/5=77
((5*96)+1)/5=485/5=96,2
• Luku 4 kerrottuna 96:lla ja lisättynä yhdellä on 385,
johon viisi menee tasan.
• Valitaan siis d=77.
• Tarkastetaan vielä, että d*e=77*5=385 ja 385 mod
96=1, joten d täyttää vaaditun ehdon.
Modulaatio ja koodaus
Timo Mynttinen
24
• Arvo d voidaan etsiä myös ns. laajennetulla Euklideen
algoritmilla.
• Julkinen avain on siis lukupari e ja n eli luvut 5 ja 119
sekä yksityinen avain lukupari d ja n eli luvut 77 ja
119.
• ASCII-järjestelmässä isot aakkoset alkavat vasta
numeron 65 kohdalta, mutta sovitaan nyt, että
aloitetaan ykkösestä: A=1, B=2, jne.
• Olkoot salattavana tekstinä yksi kirjain, R=18.
• Silloin salaus tapahtuu korottamalla 18 potenssiin e
(5) ja otetaan moduuli 119 suhteen:
C  185 mod119=1889568 mod 119=86.
Modulaatio ja koodaus
Timo Mynttinen
25
Modulaatio ja koodaus
Timo Mynttinen
26
• Vastaanottajalle lähetettävä salateksti on siis 86.
• Vastaanottaja purkaa viestin käyttämällä omaa
yksityistä avaintaan eli paria 77 ja 119:
P  8677 mod119  9,044410148 mod119  18
• Laskutoimitus ei ilman aputyökaluja onnistune…
Modulaatio ja koodaus
Timo Mynttinen
27
Modulaatio ja koodaus
Timo Mynttinen
28
Modulaatio ja koodaus
Timo Mynttinen
29
• Yleisillä RSA:n avainpituuksilla n on 1024 tai 2048
bittiä, eli kyse on pisimmillään 299 tai 617 numeroa
pitkistä kymmenkantaluvuista.
• Nopeimmatkin tunnetut algoritmit ja tietokoneet ovat
liian hitaita jakamaan näin pitkiä lukuja tekijöihin (eli
löytämään luvut p ja q järkevässä ajassa).
Modulaatio ja koodaus
Timo Mynttinen
30
Modulaatio ja koodaus
Timo Mynttinen
31
Modulaatio ja koodaus
Timo Mynttinen
32
Modulaatio ja koodaus
Timo Mynttinen
33
Modulaatio ja koodaus
Timo Mynttinen
34
• RSA-menetelmässä julkinen ja yksityinen avain ovat
symmetrisiä eli ne toimivat molempiin suuntiin.
• Lähettäjän yksityisellä avaimellaan enkoodaama viesti
on kenen tahansa purettavissa, jolla on hallussaan
(joka vaivautuu etsimään) lähettäjän julkisen
avaimen.
• Jos viesti purkautuu ymmärrettävään muotoon,
voidaan olla varmoja siitä, että se tulee ilmoitetulta
lähettäjältä (koska vain hän tuntee yksityisen
avaimen, jolla viesti on täytynyt enkoodata).
Modulaatio ja koodaus
Timo Mynttinen
35
• Esimerkiksi sopimusteksti voidaan allekirjoittaa
digitaalisesti siten, että molemmat osapuolet
enkoodaavat siitä lasketun tiivisteen, jotka sitten
lisätään asiakirjan liitteeksi. Jos joku haluaa tarkistaa
allekirjoitukset, hän etsii vastaavat julkiset avaimet,
ja katsoo, purkaako koodaus oikein.
• Käytännössä allekirjoitus tehdään salaamalla
ainoastaan asiakirjasta laskettu tiiviste yksityisellä
avaimella.
• Koska ulkopuolisen on mahdotonta laatia toista
tekstiä, joka tuottaisi saman tiivistearvon, tiivistettä ja
tekstiä voidaan pitää samanarvoisina.
Modulaatio ja koodaus
Timo Mynttinen
36
• Digitaalisessa allekirjoituksessa tekstin peukalointi
jälkikäteen on mahdotonta.
• Sähköinen allekirjoitus turvaa sekä aitouden että
eheyden.
• Viestin, joka on allekirjoitettu digitaalisesti, on pakko
tulla ilmoitetulta henkilöltä, koska kukaan toinen ei
pysty laatimaan samanlaista allekirjoitusta.
• Digitaalinen allekirjoitus siis toteuttaa
kiistämättömyyden periaatteen.
• Käytetyin puhdas allekirjoitusalgoritmi on DSA, Digital
Signature Algorithm.
Modulaatio ja koodaus
Timo Mynttinen
37