21.01.2015 Views

Luentomateriaali

Luentomateriaali

Luentomateriaali

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.

TLTP-3120<br />

Tietoturva-algoritmit<br />

3 op<br />

Luennot Pekka Loula<br />

Harjoitukset M. Monnonen ja H. Brandt<br />

2010-2011 v.0.95<br />

1


Kurssin suoritus<br />

Vaatimukset<br />

1) Harjoitustehtävät:<br />

- RC4-salausalgoritmien toiminta<br />

- PGP/VPN-, SSH-tunnelointityöt<br />

- TrueCrypt-ohjelmiston käyttö tiedostojen, hakemistojen salauksessa<br />

- Omatoiminen, vapaasti valittava tehtävä, joka esitetään<br />

tunneilla esim.<br />

a) teoreettinen esittely algoritmista ja sen toiminnasta,<br />

b) algoritmin toteutukseen liittyvä ohjelmistokirjasto ja sen käyttö,<br />

c) matlab-demonstraatio<br />

Omatoiminen tehtävä tehdään 1-2-henkilön ryhmissä. Tehtävästä<br />

palautetaan esitelmän yhteydessä kirjallinen dokumentti<br />

luennoitsijalle<br />

1) Tentti. Arvosanan korotus parhaille ryhmille (max 25% osallistujista)<br />

2010-2011 v.0.95<br />

2


Kurssikirjallisuus<br />

Luentokalvot:<br />

Kirjallisuus:<br />

Wade Trappe, Lawrence Washington. Introduction to Cryptography<br />

with Coding Theory, 2nd edition, Pearson, 2006<br />

esim. Matlab-esimerkit http://www- users.math.umd.edu/~lcw/book.html<br />

William Stallings: Network Security essentials; applications and<br />

standards. Third edition, Prentice Hall, 2007<br />

sekä tukimateriaalina<br />

Charles P. Pfleeger, Shari L. Pfleeger: Security in Computing. Third<br />

edition, Prentice Hall, 2003<br />

2010-2011 v.0.95<br />

3


Kurssin sisältö<br />

TT-algoritmit<br />

Ceasar, Playfair,<br />

Hill, Vernam,<br />

Enigma<br />

Historialliset<br />

menetelmät<br />

Digitaalinen<br />

allekirjoitus<br />

Asymmetrinen<br />

salaus<br />

Symmetrinen<br />

salaus<br />

Avainten vaihto<br />

Sanomien<br />

autentikaatio<br />

DH,<br />

ISAKMP<br />

X.509<br />

Feistelsalausrakenne<br />

SHA1<br />

DSS, RSA<br />

RSA<br />

DES, AES<br />

PGP<br />

2010-2011 v.0.95<br />

4


1 Johdanto<br />

2010-2011 v.0.95<br />

5


Tietoturvapalvelut<br />

@ Luottamuksellisuus<br />

(confidentiality)<br />

@ Tunnistaminen*<br />

(authentication)<br />

@ Kiistämättömyys<br />

(nonrepudiation)<br />

@ Käytettävyys*<br />

(availability)<br />

@ Pääsyn valvonta*<br />

(access control)<br />

@ Eheys<br />

(integrity)<br />

2010-2011 v.0.95<br />

6


Cryptografia:<br />

Encryption (algorithm):<br />

Decryption:<br />

Cryptanalysis<br />

Kryptografia<br />

Kryptografia, salakirjoitustiede<br />

Salakirjoitus, kryptaus, salaus<br />

Salakirjoituksen purku eli tulkita<br />

Salakirjoituksen murtaminen<br />

Kaikki salausalgoritmit perustuvat kahteen periaatteeseen:<br />

1) Korvaukseen, jossa jokainen alkuperäisen viestin, selväkielinen<br />

sanoma/perustekstin (Plaintext) elementti (bitti, kirjain, ryhmä bittejä tai<br />

kirjaimia ) kuvataan muiksi elementeiksi<br />

2) Uudelleen sijoitteluun, jossa perustekstin elementit järjestellään<br />

uudelleen.<br />

Salausalgoritmi tuottaa salatun viestin/salakirjoituksen<br />

(Ciphertex)<br />

Salaus ei ole sama kuin tiedon kätkeminen, jossa perusteksti kätketään<br />

salaamatta esim. toisen viestin sisään esim. näkymättömät musteet,<br />

kirjaimien merkitseminen, vähiten merkitsevän bitin käyttö,<br />

2010-2011 v.0.95<br />

mikroskooppisen pieni teksti.<br />

7


Kryptografia<br />

Salakirjoitusavain (encryption key), parametri, joka määrää miten<br />

salaus suoritetaan<br />

Algoritmin tulee siten olla niin vahva, että sanoman salaisuus toteutuu<br />

pelkästään avaimen salassapidon avulla<br />

Salakirjoituksen tulkinta-avain (decryption key) määrää miten purku<br />

tapahtuu<br />

Tyypillisesti vihollinen tuntee kryptografisen järjestelmän algoritmin,<br />

mutta sen tiedossa ei ole käytettyä salaista avainta<br />

Kryptografian käytöllä saavutettu tietoturva voidaan murtaa -<br />

salaisten avainten varastamisella<br />

- algoritmin murtamisella tai<br />

- löytämällä algoritmista virhe<br />

2010-2011 v.0.95<br />

8


Kryptografia<br />

Hyökkääjien yleisiä lähestymistapoja:<br />

1.Salakirjoitetun viestin murtaminen voimalla (Brute-force-attack):<br />

Hyökkääjä käy läpi kaikki mahdolliset avaimet kokeilemalla niitä<br />

2. Tunnetun selkokielisen tekstin hyödyntämiseen:<br />

Hyökkääjä pyrkii käyttämään arvaamiaan selkokielisiä viestin osia ja<br />

niiden salakirjoitettuja vastineita avaimen pysyessä samana. Hän voi esim.<br />

tietää että salakirjoitettu viesti alkaa aina jollakin tunnetulla tavalla: Dear<br />

Pekka, %!PS-Adobe-3.0,


Kryptografia<br />

Cryptanalysis –hyökkääjien yleisiä lähestymistapoja:<br />

3. Valitun selkokielisen salauksen kokeileminen:<br />

Hyökkääjä kokeilee selkokielisiä viestejä ja niiden vastineita.<br />

Hyökkääjä pääsee käsiksi salauslaitteeseen/-algoritmiin muttei saa<br />

tietoonsa salausavainta. Tavoitteena on pienentää mahdollisten avaimien<br />

määrää<br />

4. Valitun salatun viestin purkamisen kokeileminen:<br />

Esim. Lentokone lähettää satunnaisviestin havaitsemilleen<br />

tuntemattomille lentokoneille. Jos kone vastaa asianmukaisesti salatulla<br />

viestillä, jonka se laskee satunnaisviestistä salaisella avaimellaan, niin se on<br />

oma lentokone, muuten se on vihollinen<br />

Vihollinen voi kerätä suuren määrän vastauksia lähettämällä<br />

satunnaisviestejä vastapuolen lentokoneille ja arvioimalla saatujen<br />

vastausten perusteella mikä on mahdollinen avain<br />

2010-2011 v.0.95<br />

10


Kryptografia<br />

Salaus voi olla symmetristä (symmetric), jolloin salaus ja purku<br />

tapahtuvat samalla algoritmilla ja samalla avaimella (Secret key)<br />

… TAI salaus voi olla asymmetristä (asymmetric), jolloin<br />

käytetään yleisesti tunnettua avainta (public key) ja salaista<br />

avainta (private key).<br />

Istuntoavain (session key) on voimassa vain yhden istunnon ajan.<br />

Isäntäavaimella (master key) on pitkäkestoinen avain, jonka avulla<br />

luodaan istuntoavaimia.<br />

Allekirjoitusavaimen (digital signature key) avulla käyttäjä voi<br />

lisätä tekstiin oman koodin eli tiivisteen. Tiiviste takaa samalla<br />

tiedon eheyden.<br />

2010-2011 v.0.95<br />

11


Kryptografia<br />

Vaatimukset salausalgoritmilta:<br />

• Salakirjoituksen purkukustannus ylittää kryptatun informaation<br />

arvon<br />

• Se aika, joka salauksen purkamiseen menee ylittää sen ajan,<br />

jonka kuluessa salattu informaatio oli hyödyllinen<br />

Salausalgoritmin sanotaan olevan laskennallisesti turvallinen jos edellä<br />

mainitut kaksi kriteeriä täyttyvät. Hankaluus on siinä, että on erittäin<br />

vaikea määritellä miten paljon työtä vaaditaan onnistuneeseen<br />

koodinpurkuun<br />

One-time-pad -menetelmää lukuun ottamatta ei tunneta mitään<br />

ehdottomasti luotettavaa salausmenetelmää. One-time-padmenetelmässä<br />

avain on vähintään yhtä pitkä kuin salattava teksti sekä<br />

avain vaihdetaan erikseen jokaisen salauksen yhteydessä<br />

2010-2011 v.0.95<br />

12


Kryptografia<br />

Hajauttaminen (Diffusion). Jokainen selväkielisen tekstin<br />

bitti/merkki tulisi vaikuttaa mahdollisimman moneen salattavan<br />

tekstin bittiin/merkkiin (ja visa-versa). Tällöin hyökkääjä ei voi<br />

hyödyntää tilastollisia hyökkäystapoja<br />

Epäjärjestys (Confusion). Jokainen salakirjoitetun viestin<br />

bitti/merkki pitää olla riippuvainen selväkielisestä tekstistä sekä<br />

avaimesta mahdollisimman mutkikkaasti. Salakirjoituksessa käytetty<br />

avain ei saa myöskään olla yksinkertaisella menetelmällä<br />

johdettavissa selväkielisestä tekstistä.<br />

Algoritmit voidaan toteuttaa ns. Feistel – rakenteen mukaisesti,<br />

jolloin salaukseen ja salauksen purkuun voidaan käyttää samaa<br />

rakennetta<br />

2010-2011 v.0.95<br />

13


Kryptografia<br />

Salaus voi tapahtua joko<br />

1) Blokkilähtöisesti (Lohkokryptaus) Blokki lähdetekstiä tuottaa<br />

blokin salakirjoitusta.<br />

Edut:<br />

Diffusion high. Ei ole riippuvainen syötevirran symboleista<br />

Haitat:<br />

Hidas. Salaus tapahtuu vasta kun on saatu koko blokki syötedataa.<br />

Mahdollinen virhe salauksessa tai syöte-input:ssa tuhoaa koko<br />

blokillisen dataa<br />

2) Jatkuvana prosessina (Vuokryptaus) Syöte-elementtejä<br />

prosessoidaan jatkuvasti, tuottaen tuloselementtejä<br />

jatkuvasti.<br />

Edut:<br />

Nopeus. Ei niin herkkä virheelliselle datalle kuin blokkimenetelmä.<br />

Haitat:<br />

Diffusion low. Tulos on suoraan riippuvainen syöteinput:n<br />

2010-2011 v.0.95<br />

symbolista<br />

14


2 Historialliset salakirjoitusmenetelmät<br />

2010-2011 v.0.95<br />

15


Klassisia salaustekniikoita<br />

Salausta on käytetty aina<br />

Korvaustekniikat<br />

mm. spartalaisten käyttämä Scytalea käytettiin sotapäälliköiden väliseen<br />

kommunikointiin<br />

Siinä käytettiin kahta samankokoista esim. puusylinteriä, joista toinen oli<br />

viestin lähettäjällä ja toinen vastaanottajalla. Viesti kirjoitettiin<br />

nahkasuikaleelle, joka kiedottiin sylinterin ympärille<br />

en.wikipedia.org<br />

2010-2011 v.0.95<br />

16


Klassisia salaustekniikoita<br />

Korvaustekniikat<br />

Caesarin salakirjoituksessa<br />

kirjainmerkki korvattiin kirjaimella joka oli aakkosissa kolme<br />

merkkiä myöhemmin kuin vastaava perustekstin merkki.<br />

…a->d, b->e, …, x->a,y->b,z->c<br />

perusteksti : MEET ME AFTER THE TOGA PARTY<br />

salakirjoitus: PHHW PH DIWHU WKH WRJD SDUWB<br />

C=E(p) = (p+k)mod(26), missä p on perustekstin kirjain, k on<br />

siirros (caesar:lla k=3).<br />

Salauksen purku on kohtalaisen helppoa. Testattavia avaimia on vain 25 kpl.<br />

2010-2011 v.0.95<br />

17


Klassisia salaustekniikoita<br />

Moniaakkosellinen salaus<br />

Mitä jos Caesar-menetelmä kehitettäisiin niin, että mikä tahansa<br />

permutaatio 26 kirjaimesta olisi mahdollinen, silloin esim. 9-merkin<br />

pituisella avaimella testattavia kombinaatiovaihtoehtoja on<br />

3 814 697 265 625 kpl<br />

Esim. Vigenere-salauksessa (1600-luvulta) siirroksen suuruus määritellään<br />

avaimella (a=0, b=1, c=2, d=3, e=4, jne)<br />

perusteksti<br />

w e a r e d i s c o v e r e d<br />

Avain:<br />

d e c e p t i v e d e c e p t<br />

salakirjoitus<br />

z i c v t w q n g r z g v t w<br />

2010-2011 v.0.95<br />

18


Klassisia salaustekniikoita<br />

Moniaakkosellinen salaus ei kuitenkaan ratkaise ongelmaa sillä<br />

perustekstin luonne tiedetään. Moniaakkosellinen salaus voidaan<br />

ratkaista tutkimalla salatun tekstin tilastollisia ominaisuuksia<br />

2010-2011 v.0.95<br />

19


Klassisia salaustekniikoita<br />

Vigenere-menetelmän murtaminen:<br />

1. Avaimen pituuden määritys<br />

Lasketaan salakirjoitetun testin ja yhdellä/kahdella/jne siirretyn<br />

salakirjoitetun tekstin samojen kirjainten lukumäärä. Avaimen pituus on<br />

luultavammin se siirros, joka tuottaa suurimman arvon<br />

2. Avaimen selvittäminen<br />

Hyödynnetään englanninkielen kirjainten esiintymistodennäköisyyttä<br />

A j =[.0725, .0125, .035, …, .025] sekä salatun tekstin kirjainten<br />

esiintymistiheyttä W= [ %-osuus(A) ,…, %-osuus (Z)] avainpituudella<br />

jaotellussa tekstijonossa Kirjain{n, n+avainpituus, n+2*avainpituus, …}.<br />

Avain K n n={1,.., avainpituus} saadaan laskemalla Aj:n ja W:n pistetulo j:n<br />

arvoilla 0:sta 25:teen. Avain on se j:n arvo (a=0, b=1, jne) joka tuottaa<br />

suurimman arvon.<br />

Menetelmää toistetaan seuraavalle avainkirjaimelle<br />

2010-2011 v.0.95<br />

20


Klassisia salaustekniikoita<br />

Playfair by Sir Charles Wheatstone v.1854 (Engl. 1 maailmansota):<br />

2-kirjaimen salaus (avainsanalle MONARCHY)<br />

M O N A R<br />

C H Y B D<br />

E F G I / J K<br />

L P Q S T<br />

U V W X Z<br />

SÄÄNNÖT: rivisiirto: → esim ar-> rm<br />

sarakesiirto: ↓ esim lu->um<br />

kulmapisteet: esim hs->bp<br />

esim. BALLOON jaksotetaan seuraavasti: BA , LX, LO, ON<br />

-> IB SU PM NA<br />

2010-2011 v.0.95<br />

21


Klassisia salaustekniikoita<br />

Playfairin murtaminen:<br />

Jos tunnetaan pätkä perustekstiä, niin murtaminen helppoa<br />

Jos avainsana on liian lyhyt niin on helppo arvata avainmatriisin<br />

viimeiset kirjaimet. Varsinkin kun v-, w-, x- ja z–kirjainten<br />

esiintymistodennäköisyys on englanninkielessä suhteellisen pieni<br />

Playfair-salaus perustuu kahden kirjaimen blokkisalaukseen.<br />

Englanninkielessä yleisesti esiintyviä kahden kirjaimen<br />

kirjainkombinaatiota ovat esim th, he, an, in, er ja es.<br />

Er:n lisäksi re on varsin yleinen joten mahdollinen 1. kokeiltava<br />

kulmapistekirjainkombinaatio voisi olla juuri er/re<br />

2010-2011 v.0.95<br />

22


Klassisia salaustekniikoita<br />

Hill (v.1929): Kolme lineaarista yhtälöä<br />

C 1 = (k 11 p 1 + k 12 p 2 + k 13 p 3 ) mod 26<br />

C 2 = (k 21 p 1 + k 22 p 2 + k 23 p 3 ) mod 26<br />

C 3 = (k 31 p 1 + k 32 p 2 + k 33 p 3 ) mod 26, missä<br />

p on perustekstin kirjain (a=0, b=1, jne) ja k on avainmatriisin arvo<br />

Esim. "pay" (p 1 =15,p 2 =0,p 3 = 24) ja K = 17 17 5<br />

21 18 21<br />

2 2 19<br />

17x15+17x0+5x24=375 -> C 1 = 375 mod 26= 11 (L)<br />

C 2 =819 mod 26 =13 (N), C 3 =486 mod26 = 18 (S)<br />

Vastaus on siis LNS<br />

Dekryptaus tapahtuu hyödyntäen avainmatriisin (K) käänteismatriisia (K -1 ).<br />

2010-2011 v.0.95<br />

23


Klassisia salaustekniikoita<br />

Weisnerin ja Hillin "Message Protector" patentti, US patent 1,845,947 v.1932<br />

2010-2011 v.0.95<br />

24


Klassisia salaustekniikoita<br />

Hillin menetelmän murtaminen on helppoa esim. jos tunnetaan<br />

selkokielinen teksti ja sitä vastaava salattu teksti sekä lineaaristen<br />

yhtälöiden määrä esim 2 kpl<br />

howareyoutoday<br />

7 14 22 0 17 4 24 14 20 19 14 3 0 24<br />

ZWSENIUSPLJVEU<br />

25 22 18 4 13 8 20 18 15 11 9 21 4 20<br />

AM=B<br />

M=A -1 B<br />

7 14 a b 25 22<br />

20 19 c d 15 11<br />

5 10 25 22 15 12<br />

18 21 15 11 11 3<br />

(mod 26),josta ratkaisemalla<br />

(mod 26)<br />

Jos ei tunneta selkokielistä tekstiä, niin hyökkääjä voi kokeilla erilaisia<br />

kombinaatioita kunnes löytää oikean. Tilastolliset menetelmät eivät toimi Hillin<br />

menetelmän kanssa<br />

2010-2011 v.0.95<br />

25


Klassisia salaustekniikoita<br />

Vernamin (v. 1918) menetelmä.<br />

C i<br />

= p i<br />

XOR k i,<br />

missä<br />

p i<br />

= i:s bitti perustekstiä<br />

k i<br />

= i: s avainbitti<br />

C i<br />

=i:s salakirjoituksen bitti esim.<br />

0 0 1 1<br />

0 1 0 1<br />

XOR----------<br />

0 1 1 0<br />

Koodin purku toiseen suuntaa sujuu myös tällä "XORauksella"<br />

One time pad-menetelmä perustuu Vernamin-menetelmään<br />

mutta käytettään satunnaista avainta, joka on koodin pituinen ja<br />

jossa ei ole mitään toistoja<br />

2010-2011 v.0.95<br />

26


Klassisia salaustekniikoita<br />

Enigma<br />

Keksitty v. 1918<br />

By Arthur Scherbius<br />

Käyttö vv. 1939-1945<br />

2010-2011 v.0.95<br />

27


Klassisia salaustekniikoita<br />

Enigma<br />

Perusidea:<br />

Kolme pyörivää<br />

sylinteriä<br />

2010-2011 v.0.95<br />

28


Klassisia salaustekniikoita<br />

Enigma<br />

Käänteiskytkentäsylinteri ja pyörivät sylinterit<br />

lamput<br />

näppäimistö<br />

Kytkentätaulu,<br />

jonka avulla voidaan valita<br />

10 merkkiparia, jotka kuvautuvat toisikseen.<br />

Tavallisesti kytkettiin ristiin kuusi kirjainparia<br />

2010-2011 v.0.95<br />

29


Enigma<br />

Enigman murtaminen:<br />

Tiedettiin että<br />

- kytkentätaulun asetuksia muutetaan päivittäin. Operaattoreille oli jaettu<br />

koodikirja seuraavan kuukauden asetuksista<br />

- useammasta sylinteristä (viidestä) valitaan kolme, jonka aloituskohtaa<br />

muutetaan päivittäin (alustava sylintereiden asetus)<br />

-salakirjoitettu kirjain ei koskaan sama kuin alkuperäinen koodattava kirjain<br />

Havaittiin että saksalaiset lähettivät jokaisen viestin alussa kolmikirjaimisen<br />

sekvenssin, joka määrää sylenterien aloituskohdat varsinaiselle viestille.<br />

Asetusviesti toistettiin kahdesti (johtuen radiosignaalien häiriöistä) eli<br />

merkit 1. ja 4., 2. ja 5 sekä 3. ja 6. olivat samat<br />

Toiston avulla murtajat pystyivät hyödyntämään frekvenssianalyysiä saman<br />

kirjaimen ’koodauspolkujen’ (x-> A ja x-> D sekä A -> D) analyysissä.<br />

Saatujen vaihtoehtojen kokeiluun rakennettiin mm. oma elektroninen<br />

purkulaite, nimeltään Bombe, joka pyrki tekemään selväkielisiä arvauksia<br />

koodaukselle esim. säätiedotuksille (toistuivat aina samanlaisina)<br />

2010-2011 v.0.95<br />

30


3 Symmetrinen salakirjoitus<br />

2010-2011 v.0.95<br />

31


Symmetrinen salakirjoitus<br />

Symmetrinen salakirjoitus = Perinteinen salakirjoitus<br />

(tai yhden avaimen salakirjoitus) oli ainoa käytössä oleva<br />

salakirjoituksen muoto ennen asymmetrisen järjestelmän<br />

yleistymistä<br />

Salausprosessi koostuu algoritmista ja salaisesta avaimesta<br />

* Avain on perustekstistä riippumaton<br />

* Salakirjoitus voidaan purkaa takaisin alkuperäiseksi<br />

tekstiksi käyttäen samaa avainta, jolla teksti salattiinkin<br />

2010-2011 v.0.95<br />

32


Symmetrinen salaus<br />

Tunnettuja symmetrisiä salausmenetelmiä ovat mm.:<br />

• 3DES, Triple- Data Encryption Standard/algorithm<br />

• IDEA , International Data Encryption Standard by Ascom,<br />

(www.mediacrypt.com)<br />

• Twofish, Blowfish, by Bruce Schneier<br />

(www.schneier.com)<br />

• RC2, RC4, RC5, RC6 by Ronald L. Rivest/RSA Security<br />

(www.rsasecurity.com)<br />

• CAST- 128, 256 by Carliesle Adams, Staffort Tavares/Entrust<br />

(www.entrust.com)<br />

• AES- 128, 192, 256 , NIST/Advanced Encryption Standard<br />

(csrc.nist.gov)<br />

2010-2011 v.0.95<br />

33


Symmetrinen salaus<br />

• Kun salausalgoritmin on riittävän vahva, niin salausta on<br />

epäkäytännöllistä purkaa vain pelkän salakirjoituksen perusteella.<br />

Symmetrinen (>= 128 bittiä) ja asymmetrinen (>= 1024 bittiä), tiiviste (>=160<br />

bittiä)<br />

•Salauksen turva riippuu avaimen salaisuudesta, ei algoritmin<br />

salaisuudesta.<br />

-> Ei tarvitse pitää salausalgoritmia salaisena, vaan ainoastaan<br />

salausavain pitää olla kätketty.<br />

-> Tämä piirre perinteisessä salauksessa tekee siitä<br />

laajakäyttöisen.<br />

-> Voidaan valmistaa ja on valmistettu halpoja mikropiirejä,<br />

jotka tekevät salauksen<br />

2010-2011 v.0.95<br />

34


Symmetrinen salaus kaavoin<br />

Perusteksti, X=[ X 1<br />

,X 2<br />

,....X M<br />

] esim. aakkoset tai [0, 1]<br />

Avain K = [ K 1<br />

, K 2<br />

, .... K J<br />

]<br />

Salakirjoitus Y=[ Y 1<br />

,Y 2<br />

,....Y N<br />

]<br />

Hyökkääjä<br />

^<br />

X, ^K<br />

Salattava<br />

viesti<br />

X<br />

Salausalgoritmi<br />

Y<br />

Salauksen<br />

purku<br />

X<br />

salausavaimet<br />

K<br />

Suojattu kanava<br />

2010-2011 v.0.95<br />

35


Symmetrinen salaus kaavoin<br />

Salaus on siten Y=E K<br />

(X)<br />

… eli Y muodostetaan käyttäen salausalgoritmia E ja salausavainta K<br />

perustekstin X funktiona.<br />

Salauksen purku tapahtuu purkualgoritmilla D seuraavasti X=D K<br />

(Y).<br />

Tyypillisesti avaimia käytetään salauksen purussa käänteisessä<br />

järjestyksessä kuin salauksessa<br />

Avain toimitetaan vastaanottajalle käyttäen turvallista kanavaa tai<br />

luotettava kolmas taho toimittaa avaimen asianomaisille<br />

Salakuuntelija, joka tuntee käytetyn algoritmin voi pyrkiä laatimaan<br />

avainestimaatin K^ ja X^ perustekstiestimaatin<br />

2010-2011 v.0.95<br />

36


Symmetrinen salaus: purkuaika<br />

Symmetrisen salauksen avaimien selvittäminen raa´alla voimalla<br />

Avaimen Vaihtoehtoisten keskim.aika/ purku *<br />

pituus<br />

avaimien määrä<br />

(bittiä)<br />

32 4.3*10 9 35,8 minuuttia<br />

56 7.2*10 16 1142 vuotta<br />

128 3.4*10 38 5.4*10 24 vuotta<br />

168 3.7*10 50 5.9*10 36 vuotta<br />

*<br />

CPU-suorituskyky = yksi avain / mikrosekunnissa<br />

Vrt. 2*10 17 sekuntia aurinkokuntamme luonnista<br />

2010-2011 v.0.95<br />

37


Feistel-cipher<br />

Lohkosalaus suunnitellaan yleensä Feistel-XOR-rakenteen mukaisesti.<br />

Salaamaton teksti<br />

Toistetaan<br />

n-kierrosta<br />

F K i<br />

L i R i<br />

XOR<br />

Salattu teksti<br />

L n<br />

R n<br />

R n<br />

L n<br />

2010-2011 v.0.95<br />

38


Feistel-cipher<br />

Salaus:<br />

Esim. Salataan<br />

yksinkertaisella<br />

salausratkaisulla<br />

teksti 1010 1100, kun<br />

n=2,<br />

F=OR,<br />

K 1 =1010,<br />

K 2 =0101<br />

Selkokielinen<br />

teksti<br />

1<br />

Salaus<br />

1010 1100<br />

OR<br />

XOR<br />

1100 0100<br />

OR<br />

1010 (K 1 )<br />

0101 (K 2 )<br />

2<br />

XOR<br />

0100 1001<br />

Salattu teksti<br />

1001 0100<br />

2010-2011 v.0.95<br />

39


Feistel-cipher<br />

Salauksen purku:<br />

Salauksen purku<br />

1001 0100<br />

Huom. rakenne on sama<br />

muuten kuin avainten<br />

käyttöjärjestys on<br />

käänteinen<br />

1<br />

OR<br />

XOR<br />

0101 (K 2 )<br />

0100 1100<br />

OR<br />

1010 (K 1 )<br />

2<br />

XOR<br />

Selkokielinen<br />

teksti<br />

1100 1010<br />

1010 1100<br />

2010-2011 v.0.95<br />

40


Data Encryption Standard (DES)<br />

NIST (National Institute of Standards and Technology)<br />

FIPS (Federal Information Processing Standard) nro 46 (v. 1977),<br />

joka määrittelee 64 bitin lohkot ja 56 bitin avaimen<br />

Perustuu symmetriseen lohkokoodaukseen<br />

- Salaus ja purku voidaan tehdä samalla lohkolla<br />

- Yhden piirin DES-ratkaisuja<br />

Käytetään edelleen monessa järjestelmässä ns. perusmenetelmänä<br />

2010-2011 v.0.95<br />

41


DES avaimet<br />

56-bitin avain<br />

28-bittiä<br />

28-bittiä<br />

Uudelleenjärjestely 1<br />

Kierroskohtaiset aliavaimet<br />

Kierros 1<br />

K 1<br />

Uudelleenjärjestely 2<br />

Siirto vasemmalle<br />

Kierros 2<br />

K 2<br />

Uudelleenjärjestely 2<br />

Siirto vasemmalle<br />

Kierros 16<br />

K 1<br />

6<br />

Uudelleenjärjestely 2<br />

Siirto vasemmalle<br />

Uudelleenjärjestely (permutaatio) tehdään taulukkojen avulla, jotka<br />

määräävät bittien uudelleen sijoittelun.<br />

• Käsitellään kahtena 28-bitin lohkona<br />

• Muodostetaan 16 erillistä 48-bitin aliavainta ; K i :ta<br />

Aliavaimet saadaan lohkoittain tapahtuva siirto vasemmalle (1-2 bitin) +<br />

uudelleenjärjestely. Aliavainten muodostamisessa permutaatio on aina sama<br />

jokaisella kierroksella.<br />

2010-2011 v.0.95<br />

42


Salattava teksti<br />

64-bitin lohko<br />

32-bittiä<br />

32-bittiä<br />

DES salaus<br />

Alustava bittien<br />

Uudelleenjärjestely<br />

Kierros 1<br />

Kierros 2<br />

Kierroskohtaiset aliavaimet<br />

K 1<br />

K 2<br />

Kierros 16<br />

Vaihto<br />

Käänteinen bittien<br />

Uudelleenjärjestely<br />

Salattu teksti<br />

64-bitin lohko<br />

K 1<br />

6<br />

Käänteinen uudelleenjärjestely palauttaa bitit<br />

omille paikoilleen.<br />

Data käsitellään kahtena 32-bitin lohkona<br />

Vaiheet:<br />

- uudelleenjärjestelty bittijono.<br />

- 16 x uudelleenjärjestely+korvaus<br />

- Vasemman ja oikean puolen (32-bitin) vaihto<br />

- Käänteinen uudelleenjärjestely<br />

2010-2011 v.0.95<br />

43


DES-kierros<br />

2010-2011 v.0.95<br />

44


DES kierros<br />

KIERROS<br />

Lohko jaetaan kahdeksi 32-bitin lohkoksi, joista oikea lohko<br />

siirtyy suoraan ennen käsittelyä seuraavan kierroksen<br />

vasemmaksi lohkoksi.<br />

Vasen lohko XOR:taan käsitellyn oikean lohkon kanssa<br />

Oikean lohkon käsittelyvaiheet<br />

- Bittien uudelleenjärjestely taulukon avulla -> laajennetaan<br />

48 bittiin (monistetaan tietyt bitit)<br />

-Suoritetaan bitti-XOR permutaation tulokselle ja aliavaimelle<br />

-S-box-toiminto,<br />

-S-box-toiminnon jälkeen tehdään vielä taulukkoperusteinen<br />

permutaatio<br />

2010-2011 v.0.95<br />

45


DES:n S-lohkot<br />

2010-2011 v.0.95<br />

46


DES:n S-lohkot<br />

S-box-toiminto jonka avulla 48-bitistä tulee 32-bittiä. S-<br />

lohkoja on 8 kpl, joista jokainen hyväksyy 6-bittiä tuottaen<br />

ulostuloon 4-bittiä.<br />

Jokaisessa S-lohkossa (4x16 matriisi) on 4 riviä ja 16<br />

saraketta. Matriisin alkiot ovat välillä 0-15 (vrt ulostulon 4-<br />

bittiä). Alkio valitaan seuraavasti esim 011001; kaksi<br />

ensimmäistä alkiota kertoo rivin 01 ja loput bitit määräävät<br />

sarakkeen 1001, josta 4-bitin tulos luetaan<br />

01<br />

1001<br />

DES:n epälineaarisuus saavutetaan S-box:in avulla.<br />

2010-2011 v.0.95<br />

47


DES esimerkki bitein: Avaimet<br />

Teksti 8-bittiä:<br />

10100 00010<br />

10000 01100<br />

Avain 10-bittiä:<br />

Järjestely: P1


DES esimerkki bitein: Salaus<br />

1111 0011<br />

Teksti 8-bittiä:<br />

Järjestely: P


DES:in murtaminen<br />

Paul Kocher ja Cryptography research<br />

rakensivat vuonna 1998 DES-algoritmin<br />

murtamiseen suunnitellun ympäristön,<br />

joka testasi 92 miljardia avainta /s.<br />

Murtamiseen kuluu keskimäärin 4.5<br />

päivää. 10 000$:n kilpailussa aikaa kului<br />

56h.<br />

Perustuu sieve-and-check-hakuun.<br />

29 x 64 DES Cracker piiriä<br />

Jokainen piiri sisälsi 24 hakuyksikköä, jotka itsenäisesti kävivät läpi avainavaruutta<br />

verraten kahta eri salakirjoituslohkoa.<br />

Jos molemmista salakirjoituslohkoista löytyi ymmärrettäviä ascii-merkkejä,<br />

tai bittikuviota, niin ko. avain analysoitiin tarkemmin ohjaus-PC:n toimesta<br />

http://www.cryptography.com/resources/whitepapers/DES.html<br />

2010-2011 v.0.95<br />

50


DES:in murtaminen<br />

John Loughran, Tom Dowling. A Java implemented key collision attack on the data<br />

encryption standard (DES) Proceedings of the 2nd international conference on<br />

Principles and practice of programming in Java , Ireland, 2003,pp.155-157<br />

1) Salatun tekstin alussa on jokin tunnettu sekvenssi esim. %!PS-Adobe-2.0.<br />

2) Jos kohta 1 on tosi, niin avainjoukossa 2 28 löytyy avain, jolla salattu teksti<br />

on suurella todennäköisyydellä sama kuin alkuperäinen salausavain ELI<br />

vaihtoehtojenmäärä laskee 72,057,594,037,927,936 avainvaihtoehdosta<br />

268,435,456 avainvaihtoehtoon.<br />

Key collision attack by Biham, 2002<br />

How to decrypt or even substitute DES-Encrypted messages in 2 28 steps. Information<br />

Processing Letters Volume 84 , Issue 3 (November 2002) pp: 117 - 124<br />

“We suggest key-collision attacks, which show that the theoretic strength<br />

of a block cipher cannot exceed the square root of the size of the key<br />

space. … Taking DES as our example, we show that one key of DES can be<br />

recovered with complexity 2 28 , and one 168-bit key of (three-key) triple-<br />

DES can be recovered with complexity 2 84 .”<br />

2010-2011 v.0.95<br />

51


Triple DES / 3DES<br />

FIPS PUB 46-3<br />

kolmella (tai kahdella K 3 =K 1 )avaimella<br />

K 3<br />

K 3<br />

E= Enkoodaus/D=Dekoodaus<br />

E/D/E - D/E/D-vuorottelu takaa yhteensopivuuden DES:in kanssa.<br />

Käytetään edelleen monissa menetelmissä perusmenetelmänä lukuisissa<br />

salausjärjestelmissä<br />

2010-2011 v.0.95<br />

52


3DES:in murtaminen<br />

Merkle, Hellman. On the security of multiple encryption. Communications of the<br />

ACM, 1981, Volume 24, Issue, Pages: 465<br />

Merkle ja Hellman osoittivat että 2DES on altis meet-in-themiddle-attack-hyökkäykselle,<br />

jossa hyödynnetään valittuja<br />

selkokielisiä viestejä<br />

Avaimen pituuden kasvattamiselle 56:sta bitistä 112-bittiin tai<br />

168-bittiin ei paranneta algoritmin vahvuutta merkittävästi.<br />

2DES:in vahvuus on vain 2 57 ja 3DES:in vahvuus on maksimissaan<br />

2 112<br />

2010-2011 v.0.95<br />

53


Idea (International Data<br />

Encryption Standard)<br />

Alkuperäinen idea by X.Lai ja J.Massey<br />

Ideassa on kahdeksan kierrosta.<br />

Jokainen kierros käyttää kuutta 16-<br />

bittistä aliavainta (Z), jotka valitaan<br />

128-bittisestä avaimesta<br />

Idea käsittelee dataa 64-bitin lohkoina,<br />

joka jaetaan neljään 16-bittiseen<br />

alilohkoon<br />

Idealla on hyvät hajotus- ja<br />

epäjärjestysominaisuudet<br />

2010-2011 v.0.95<br />

54


Idea<br />

Kuvaus kierroksen operaatioista<br />

1) bitti kerrallaan XOR<br />

esim. X 00 01 10 11<br />

Y 11 11 11 11<br />

Tulos 11 10 01 00<br />

2) summaus modulo 2 16<br />

esim. X 00 01 10 11<br />

Y 11 11 11 11<br />

Tulos 11 00 01 10<br />

3) kertolasku modulo (2 16 +1)<br />

sekä on määritelty että arvo 0=2 16<br />

esim. X 00 01 10 11<br />

Y 11 11 11 11<br />

Tulos 10 11 01 00<br />

00=2 2 (eli 4)<br />

12mod5, 3mod5 6mod5 9mod 5<br />

2010-2011 v.0.95<br />

55


Blowfish<br />

- Datan käsittely 64-bittisissä lohkoissa, 16-kierrosta<br />

Jokaisella kierroksella käsitellään koko dataa (ei vain puolta lohkoa).<br />

- Helppo ja nopea toteuttaa. Toimii jopa 5K muistilla<br />

- Salausaste riippuu avaimen bittimäärästä joka voidaan valita väliltä<br />

32…448 bittiä<br />

- S-lohkot riippuvat avaimista (päivittyvät)<br />

- Sekä aliavaimet että S-lohkot saadaan itse algoritmia käyttämällä<br />

- Blowfish:n on hyvä avalance–ominaisuus (pieni muutos selväkielisessä<br />

tekstissä/avaimessa johtaa suureen muutokseen salatussa tekstissä)<br />

- Ei sovellu sovelluksiin, jotka vaihtavat usein avaimia<br />

2010-2011 v.0.95<br />

56


RC5 (RFC 2040)<br />

Määritellään kolmena muuttujana<br />

• Sanan pituus bitteinä (16, 32, 64; käsittely:kaksi sanaa kerrallaan)<br />

• Kierrosten lukumäärä (0…255)<br />

• Avaimen pituus tavuina (0…255)<br />

Käyttää prosessorien nopeita perusoperaatioita<br />

Koodauksessa käytetään seuraavia operaatioita:<br />

summa modulo 2 w<br />

bitti kerrallaan XOR<br />

rotaatio vasemmalle<br />

Molempia lohkon puolia muunnellaan jokaisella kierroksella<br />

Käytetään data-riippuvaisia rotaatioita. Tämä on RC5 algoritmin ainoa<br />

epälineaarinen operaatio. mm. RSA Data security, Inc:n tuotteissa<br />

RC6 on lohkosalausmenetelmä, jossa avaimenpituus voi olla 2040-bittiä<br />

RC4 on jatkuvan bittivirran salaukseen suunniteltu nopea ja suosittu<br />

(esim SSL, WLAN) salausmenetelmä. Tutustutaan labraharjoituksissa<br />

2010-2011 v.0.95<br />

57


Cast-128 (RFC 2144)<br />

Avaimen pituus voi olla 40,48,56,.…,128 bittiä<br />

Kierroksia on 16.<br />

Jokaisella kierroksella käytetään yhtä 32-bittistä aliavainta ja<br />

yhtä 5-bittistä aliavainta.<br />

Algoritmi käyttää seuraavia operaatioita:<br />

summa ja vähennys<br />

bitti kerrallaan XOR<br />

rotaatio vasemmalle<br />

Kiinteät S-lohkot.Monimutkaisuus takaa hyvän salaustason.<br />

CAST-128 algoritmin erikoispiirteenä on funktion F riippuvuus<br />

kierroksesta.<br />

2010-2011 v.0.95<br />

58


AES<br />

FIPS-197<br />

1997 Julistettiin kansainvälinen kilpailu<br />

1998 Valittiin 15 kandidaattia<br />

1999 Jatkoon pääsi viisi parasta ehdokasta (Rijndael, RC6, Twofish,<br />

Serpent, MARS)<br />

Parhaaksi menetelmäksi valittiin<br />

Rijndael by Vincent Rijmen and Joan Daemen.<br />

Algoritmi nimettiin AES:ksi (Advanced Encryption Standard)<br />

Nopea ja helposti implementoiva algoritmi, joka ei tarvitse paljon<br />

muistia (James Nechvatal et al. Report on the Development of the<br />

AES, NIST, October 2, 2000)<br />

2001 U.S. government hyväksyi AES:n käytön<br />

Avaimenpituus: Kierrosten lkm:<br />

AES-128 10<br />

AES-192 12<br />

AES-256 14<br />

2010-2011 v.0.95<br />

59


AES<br />

AES ei toteuta Feistel-rakennetta, vaan salauksen purku toteutetaan<br />

käänteisratkaisulla<br />

Hyödyntää äärellisen Galois’n kuntateorian (Galois Fields) erikoistapausta;<br />

Binääristä Galois’n kuntaa (GF(2 8 )) esim. S-Box:ien arvojen määrittely<br />

AES hyödyntää polynomien yhteen- ja kertolaskua<br />

- Esim bittikuvio {01100011} voidaan esittää polynomina; x 6 + x 5 + x +1<br />

- Perinteinen polynomien yhteenlasku<br />

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

- AES:ssa polynomien yhteenlasku tapahtuu XOR-operaatiolla<br />

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

Sama yhteenlasku voidaan esittää myös binäärisenä, eli<br />

{01010111} XOR {10000011} = {11010100}<br />

2010-2011 v.0.95<br />

60


AES<br />

- Perinteinen polynomien kertolasku<br />

(x 6 + x 4 + x 2 + x +1) (x 7 + x 5 +x+1) =<br />

x 13 + 2x 11 + 2x 9 + x 8 + 3x 7 + 2x 6 + 2x 5 + x 4 + x 3 +2x 2 + 2x +1<br />

- AES:ssa polynomien kertolasku tapahtuu XOR-operaatiolla<br />

(x 6 + x 4 + x 2 + x +1) (x 7 + x 5 +x+1) =<br />

x 13 + x 8 + x 7 + x 4 + x 3 +1<br />

- AES:ssa kertolaskun skaalaus (8-bittiseksi) tapahtuu jakamalla tulos<br />

jaottomalla polynomilla, eli modulo (x 8 + x 4 + x 3 + x +1), esim. perinteinen<br />

jakolasku<br />

*)<br />

2010-2011 v.0.95<br />

*) jaettava – (jakaja kertaa jaettavan ja jakajan<br />

suurimpien exponentien erotus (x 13 -x 8 =x 5 ))<br />

61


AES<br />

Kun jakolasku tehdään XOR-operaationa, niin tulos on vastaavasti<br />

x 7 + x 6 + x 3 +x 2 + x +1.<br />

Lasku voidaan toteuttaa esim. yksinkertaisesti XOR-operaatioilla sekä<br />

bittisiirroilla esim matlab-koodina (buchholz.hs-bremen.de/aes/AES.pdf)<br />

x 13 +x 8 +x 7 +x 4 +x 3 +1 =<br />

= x 8 +x 4 +x 3 +x+1<br />

2010-2011 v.0.95<br />

62


AES<br />

AES-algoritmissa sarakkeiden sekoitus tapahtuu polynomin kertolaskulla.<br />

Kertolaskussa suoritetaan käsiteltävän datan b(x) ja vakiopolynomin a(x) tulona<br />

(tai salauksen dekoodauksessa käytetään a(x):n käänteisfunktiota a -1 (x)).<br />

Tulos skaalataan jakamalla tulos polynomilla x 4 + 1<br />

(a 3 x 3 + a 2 x 2 + a 1 x + a 0 ) (b 3 x 3 + b 2 x 2 + b 1 x + b 0 ) = d 3 x 3 + d 2 x 2 + d 1 x + d 0 ; jossa<br />

a(x) = 3x 3 + x 2 + x + 2 (tai a -1 (x) = bx 3 + dx 2 + 9x + e) on vakio polynomi ja<br />

b(x) on käsiteltävä data ( 4 kpl 8-asteen polynomia)<br />

d(x) on skaalattu tulos<br />

2010-2011 v.0.95<br />

63


S-box ja sen käänteismatriisi<br />

Esim.<br />

{1,1} arvo 82 ja<br />

{8,2} arvo 11<br />

2010-2011 v.0.95<br />

64


AES - SALAUS<br />

8-bitin S 0,0 -lohkojen muodostaminen<br />

sekä ”0-kierros”-avaimen käyttö<br />

Kierrokset<br />

10, 12 tai 14<br />

S-Box-korvaus<br />

S-lohkojen siirto<br />

Polynominen kertolasku<br />

Nb=4<br />

Viimeisellä kierroksella ei toteuteta<br />

Polynomista kertolaskua<br />

Kierrosavaimet<br />

2010-2011 v.0.95<br />

Kierrosavaimet lisätään<br />

yksinkertaisesti XOR -operaatiolla<br />

65


AES – SALAUKSEN PURKU<br />

8-bitin S 0,0 -lohkojen muodostaminen<br />

sekä viimeisen kierrosavaimen käyttö<br />

Kierrokset<br />

10, 12 tai 14<br />

S-lohkojen siirto<br />

Polynominen kertolasku<br />

Käänteinen S-Box-korvaus<br />

Kierrosavaimet<br />

Nb=4<br />

Viimeisellä kierroksella ei toteuteta<br />

Polynomista kertolaskua<br />

2010-2011 v.0.95<br />

66


AES<br />

128-bittiä; 16 kpl 8-asteen polynomia, eli 8-bitin lohkoa<br />

Korvaus (S-box)<br />

Johdettu GF:n perusteella)<br />

Lohkoittain tapahtuva<br />

left circular shift-siirto<br />

0, 1, 2,3 riviä vasemmalle<br />

a 0 ,a 1 ,a 2 ,a 3<br />

b<br />

b<br />

2<br />

b<br />

0<br />

1<br />

b<br />

3<br />

Polynominen kertolasku<br />

d<br />

0<br />

d<br />

1<br />

d<br />

2 d<br />

3<br />

2010-2011 v.0.95<br />

Kierrosavaimet<br />

(XOR-operaatio)<br />

67


Kvanttisalaus<br />

Kvanttimekaniikkaan perustuva salaus hyödyntää Heisenbergin<br />

epätarkkuusperiaateelle, jonka mukaan kohdemittausta ei voi tehdä<br />

ilman häiritsemättä kohdetta esim. jos mitataan hiukkasen paikkaa<br />

ja liikemäärää, niin teoria määrittelee epätarkkuuden<br />

x p h/(2x 2 ; missä<br />

x on hiukkasen paikan epätarkkuus, p on hiukkasen<br />

liikemäärän epätarkkuus (massan ja nopeuden tulo) ja h on Planckin<br />

vakio (~6,6 x 10 -34 Js)<br />

Eli epätarkkuusperiaate määrittelee fysikaaliset rajat, joilla<br />

sähkömagnetismia voidaan hyödyntää.<br />

Vastaava yhtälö on osoitettavissa hiukkasen energialle ja ajalle<br />

2010-2011 v.0.95<br />

68


Kvanttisalaus<br />

Testiverkko:<br />

Wienin yliopiston tutkijat osoittivat testiverkossa, että valokuidussa<br />

kulkeva suojattu tieto häiriytyi, jos tietoa yritettiin salakuunnella.<br />

Tällöin voidaan varmistaa, ettei ulkopuolinen kopioi itselleen esim.<br />

salausavaimia (SECOQC-hanke: 41 organisaatiota/12 maasta,<br />

http://www.secoqc.net/)<br />

Testiverkko muodosti kuudesta solmusta ja sen pituus oli 85km<br />

Varsinainen datan salaus toteutetaan perinteisillä salausmenetelmillä<br />

2010-2011 v.0.95<br />

69


Kvanttisalaus<br />

BB84 (C. Bennettin ja G. Brassardin)<br />

Menetelmässä yksittäisten fotonien polarisaatio<br />

muutetaan vastaamaan nollia ja ykkösiä.<br />

Koodaamisessa voidaan käyttää joko<br />

vaaka-/pysty- tai ympyräpolarisaatiota<br />

(oikealle tai vasemmalle).<br />

1) Lähettäjä valikoi satunnaisesti käyttämänsä polarisaatiotavan, eli kannan (<br />

+, x) jokaiselle lähetettävälle bitille erikseen<br />

2) Vastaanottaja valikoi myös satunnaisesti kannan (50% tod.näk. valikoida<br />

oikein)<br />

3) Tämän jälkeen vastaanottaja kertoo lähettäjälle mitä kantoja hän käytti<br />

(käyttäen perinteistä tietoliikenneyhteyttä) ja lähettäjä vahvistaa mitkä<br />

olivat oikein. Avain muodostetaan niistä fotoniarvoista, joissa kanta oli<br />

sama.<br />

Jos hyökkääjä oli kuunnellut viestiä, niin lähetetty tila-arvo, eli kubitti, on<br />

muuttunut ja vastaanottajalla on 50% tod.näk tulkita ko. kubitti väärin.<br />

4) Vastaanottaja tarkistaa joidenkin satunnaisten kubittien arvon vielä<br />

lähettäjältä, ettei kanavaa ole salakuunneltu<br />

2010-2011 v.0.95<br />

(http://physicsworld.com/cws/article/print/27161)<br />

70


Kvanttisalaus<br />

Muita algoritmeja<br />

Ekert91, BBM92<br />

Hyödyntää fotonipareja. Voidaan estää joitakin hyökkäystapoja mm photon<br />

plitting-hyökkäys<br />

SARG04<br />

Voidaan toteuttaa hyödyntäen laser-pulsseja yksittäisten fotonien sijaan.<br />

Yhden fotonin toteutus on sama kuin BB84<br />

Linkkejä<br />

Kvanttiuutiset: http://www.quantiki.org<br />

Yritykset mm:<br />

http:// www.idquantique.com<br />

http://www.magiqtech.com<br />

http://www.smartquantum.com<br />

http://www.toshiba-europe.com/research/crl/qig/index.html<br />

2010-2011 v.0.95<br />

71


4 Julkisen avaimen eli<br />

asymmetrinen salaus<br />

Perustuu julkiseen ja salaiseen avaimeen<br />

2010-2011 v.0.95<br />

72


Salaus julkisella avaimella<br />

KU a (Key pUblic), KR a (Key pRivate)<br />

2010-2011 v.0.95<br />

73


Autentikointi salaisella<br />

avaimella<br />

2010-2011 v.0.95<br />

74


Julkisen avaimen sovellukset<br />

- Salaus ja salauksen purku<br />

Tunnetuin ja käytetyin menetelmä on R. Rivestin, A. Shamirin ja<br />

L. Adlemanin kehittämä RSA-menetelmä (MIT, 1997).<br />

- Digitaalinen allekirjoitus<br />

Digital signature standard (DSS) ja RSA<br />

- Avainten vaihto esim. kaksi osapuolta vaihtaa avaimia esim.<br />

istuntoavaimia (tai muita salaisia avaimia). Avainten vaihtoon<br />

tunnetuin menetelmä RSA:n lisäksi on Diffie-Hellman<br />

2010-2011 v.0.95<br />

75


Vaatimukset julkisen avaimen<br />

salaukselle<br />

1. Jokainen päätelaite voi generoida itse salaisen ja julkisen<br />

avainparinsa<br />

2. Avainpari pitää olla laskennallisesti helppo toteuttaa<br />

3. Salaus ja salauksen purku pitää tapahtua helposti<br />

C = E KUb<br />

(M) ,missä M on perusteksti ja C on salakirjoitus<br />

M = D KRb<br />

(C ) = D KRb<br />

[E KUb<br />

(M)]<br />

4. On laskennallisesti mahdotonta päätellä purkausavainta jos<br />

tiedetään vain algoritmi ja salausavain<br />

5. Julkiset avaimet voidaan levittää vapaasti (julkiset rekisterit)<br />

2010-2011 v.0.95<br />

76


RSA<br />

RSA perustuu Eulerin teoreemaan (Fermaatin pienen lauseen yleistys)<br />

-Hyödyntää eksponenttien käyttämistä<br />

Salaus:<br />

C = M e mod n<br />

Salauksen purku: M = C d mod n = (M e ) d mod n , missä<br />

M on selväkielinen sanoma binääriarvona<br />

C on salattu sanoma<br />

KU = {e,n} on julkinen avain<br />

KR ={d,n} on salainen avain<br />

Lauseke C = M e mod n helppo laskea kun on annettuna M,e ja n.<br />

D:n määrittäminen (yhtälössä M = C d mod n), kun tiedetään C, M<br />

ja n on hyvin hankalaa. Vaatii diskreetin logaritmin laskemista<br />

Salaus tapahtuu lohkoittain. Lohkon koko on yleensä kahden potenssi,<br />

2 k+1 bittiä. N valitaan väliltä 2 k


RSA<br />

Avaimien muodostus:<br />

1) Valitaan kaksi alkulukua p:ksi ja q:ksi.<br />

2) Lasketaan n=pq<br />

3) Lasketaan (n) = (p-1)(q-1)<br />

4) Valitaan suhteellinen alkuluku e= suurin_yhteinen_tekijä<br />

syt( (n),e)=1 ; 1


RSA<br />

Esimerkki avaimien laskennasta ja käytöstä:<br />

1) p=7 ja q=17<br />

2) n=7*17=119<br />

3) (n) =(7-1)(17-1)=96<br />

4) SYT(96,e)=1 -> e = {5, 7, 11, 13, 17, 19, … }; Valitaan e=5<br />

5) (5d-1) mod 96= 0 -> d={77, 173,…}; d=77<br />

KU= {e,n} = {5,119} ja KR= ={d,n}={77,119}<br />

Selväkielinen sanoma 19<br />

M e mod n<br />

19 5 mod 119 = 2476009 mod 119<br />

= 66<br />

Salattu<br />

teksti<br />

66<br />

C d mod n<br />

66 77 mod 119 =<br />

1,2731601500271272502499682382745 140 mod<br />

119 = 19<br />

2010-2011 v.0.95<br />

Selväkielinen sanoma 19<br />

79


RSA<br />

Pohdintaa:<br />

Jos lukualue suuri niin on löydettävissä suuri määrä alkulukuja esim.<br />

lukualue on 100 merkkiä, niin on löydettävissä 3.9x10 97 alkulukua<br />

Alkuluvut<br />

Suurin tunnettu alkuluku on 2 25 964 951 –1 (18.2.2005)<br />

Ko. luku on Mersennan alkuluku eli muotoa 2 n -1<br />

Alkulukujen löytämiseksi on algoritmeja esim.<br />

a) Laske tutkittavasta luvusta neliöjuuri esim. √131=11.44<br />

b) Hae neliöjuurta pienemmät alkuluvut esim. 2,3,5,7,11<br />

c) Tutki onko luku jaettavissa ko. alkuluvuilla esim. ei ole -> 131 on<br />

alkuluku<br />

2010-2011 v.0.95<br />

80


Pohdintaa:<br />

RSA<br />

On olemassa keinoja modulolaskennan jakojäännösten tehokkaaseen<br />

laskentaan suurilla eksponenttiarvoilla<br />

Esim. Määritä 2 1234 (mod 789) jakojäännös Voidaan laskea jakojäännökset:<br />

2 4 (mod 789) = 16<br />

2 8 (mod 789) = 256<br />

2 16 (mod 789) = 49<br />

2 32 (mod 789) = 34<br />

2 64 (mod 789) = 367<br />

2 128 (mod 789) = 559<br />

2 256 (mod 789) = 37<br />

2 512 (mod 789) = 580<br />

2 1024 (mod 789) = 286<br />

Jakojäännös voidaan laskea osatermiensä (1234=1024+128+64+16+2)<br />

jakojäännöksien tulojen avulla eli, 2 1234 (mod 789) voidaan laskea<br />

286x559x356x49x4 (mod 789) = 481<br />

2010-2011 v.0.95<br />

81


Pohdintaa:<br />

RSA<br />

Syt voidaan ratkaista ns. Euklideen algoritmilla :<br />

Jaetaan joka askeleella jäljellä oleva luku jakojäännöksellä. Kun lopputulos on<br />

0, niin jakojäännös on syt<br />

esim. luvut 300 ja 18; 300= 16x18+12<br />

class SytCalc {<br />

18=1x12+6<br />

12=2x6+0 -> syt =6<br />

static long syt(long number1, long number2) {<br />

}<br />

long r = number1 % number2;<br />

if (r==0) return number2;<br />

else return syt(number2,r);<br />

C-kielessä %-operaatio<br />

on jakojäännös<br />

Laajennetun Euklideen algoritmin avulla voidaan ratkaista d<br />

yhtälöstä (ed) mod (n) = 1<br />

2010-2011 v.0.95<br />

82


RSA:n murtaminen<br />

Oikein toteutettuna RSA on murtovarma, mutta RSA-algoritmin<br />

toteutuksessa on huomioitava mm.<br />

• Ettei pidä käyttää salauksessa liian pientä eksponenttiarvoa. Yhtälö n=pq on<br />

purettavissa jos e=3, tai jos hyökkääjä tuntee m/4 bittiä p:stä<br />

(ensimmäiset tai viimeiset bitit), M on n:n bittien lukumäärä<br />

• Jos hyökkääjä tuntee d:stä vähintään m/4 bittiä, niin d voidaan ratkaista<br />

ajassa joka lineaarisesti verrannollinen e:n arvoon elog 2 e<br />

• Jos salattava sanoma on lyhyt (RSA pitää toteuttaa ns. plaintextaware<br />

encryption –metodilla, joka satunnaistaa lohkon bittien arvot<br />

• Hyökkääjä voi tarkkailla RSA-algoritmin salaukseen kuluttumaa aikaa, jonka<br />

perusteella hän voi määritellä salauksen purussa käytetyn d:n arvon<br />

2010-2011 v.0.95<br />

83


Elliptic-curve cryptography (ECC)<br />

IEEE P1363 ja FIPS 186-2/3<br />

• Kehitetty 1980-luvulla Millerin, Koblitzin ja Lenstran toimesta<br />

• Luottamuksellisuudeltaan RSA:han verrattavissa oleva menetelmä<br />

vähäisemmällä bitti-määrällä: 4096-bittiä supistuu 313-bittiin<br />

• Perustuu elliptisiin käyriin:<br />

y 2 = x 3 + ax 2 + bx +c ; missä a, b ja c ovat vakioita<br />

• ECC:ssä hyödynnetään yhtälöä:<br />

y 2 x 3 + ax +b (mod p) ; missä p on alkuluku<br />

Ratkaistaan Pk=Q; missä P ja Q ovat pisteitä<br />

elliptisellä käyrällä ja k on pistepeilausten lukumäärä,<br />

joka tarvitaan ennen kuin päästään P-pisteestä<br />

pisteeseen Q R-R-pistepeilausmenetelmän avulla.<br />

Q= julkinen avain, P on peruspiste ja<br />

k on salainen avain<br />

2010-2011 v.0.95<br />

http://www.certicom.com/index.php/10-introduction<br />

84


Digitaalinen allekirjoitus: RSA<br />

Digitaalinen allekirjoitus toteutetaan hyödyntämällä julkisen<br />

avaimen menetelmää. Jos lähettäjä on salannut viestin omalla<br />

salaisella avaimella, niin vastaanottaja tietää ettei kukaan muu<br />

ole kirjoittanut viestiä.<br />

Allekirjoitus julkisen avaimen menetelmällä:<br />

2010-2011 v.0.95<br />

85


Digitaalinen allekirjoitus: RSA<br />

Ongelma: Julkisen avaimen menetelmä on hidas<br />

Ratkaisu: Allekirjoitetaan vain viestistä laskettu tiiviste<br />

Autentikaatio ja allekirjoitus<br />

2010-2011 v.0.95<br />

86


Digitaalinen allekirjoitus: RSA<br />

Ongelma: Viestin luottamuksellisuus<br />

Ratkaisu: Salataan viesti symmetrisellä salauksella<br />

Luottamuksellisuus, autentikaatio ja allekirjoitus<br />

2010-2011 v.0.95<br />

87


5 Sanomien autentikaatio<br />

Perustuu tiivistearvon laskemiseen ja<br />

lisäämiseen sanomaan<br />

2010-2011 v.0.95<br />

88


Sanomien autentikaatio<br />

Vaatimukset:<br />

1) Viesti on peräisin väitetystä lähteestä / lähettäjältä<br />

2) Viestin sisältö ei ole muuttunut<br />

3) Viestiä ei ole viivästetty tai nauhoitettu<br />

Menetelmä:<br />

Kullekin sanomalle lasketaan tiiviste (Message<br />

Authentication Code (MAC)), joka lisätään alkuperäisen<br />

sanoman perään.<br />

Tarjoaa suojan aktiivisia hyökkäyksiä vastaan<br />

Voidaan toteuttaa ilman salausta tai salauksen yhteydessä<br />

2010-2011 v.0.95<br />

89


Sanomien autentikaatio<br />

Sanoma<br />

Sanoma+MAC<br />

Siirto<br />

MAC<br />

algoritmi<br />

K<br />

MAC<br />

MAC<br />

MAC<br />

VERTAA<br />

MAC<br />

algoritmi<br />

K<br />

2010-2011 v.0.95<br />

90


Sanomien autentikaatio<br />

2010-2011 v.0.95<br />

91


Sanomien autentikaatio<br />

Koska salaus-algoritmien käyttö on hidasta, niin sanomien<br />

autentikaatioratkaisut ilman salausta ovat kiinnostavia<br />

Yhteinen salainen arvo<br />

2010-2011 v.0.95<br />

92


Sanomien autenkaatio<br />

Tiivisteen, MAC:in, laskemiseen käytetään ns. Hash-funktiota<br />

Hash-funktiolta H(x) vaaditut ominaisuudet:<br />

- H(x) voidaan laskea kaiken pituisille datalohkoille<br />

- H(x) tuottaa vakiopituisen tiivisteen<br />

- H(x) on helppo laskea<br />

- H(x):ää ei voi ratkaista tuloskoodin perusteella<br />

- X:ää on mahdoton ratkaista tunnetun sanoman y<br />

ja sen H-funktion H(y) avulla, kun H(y)=H(x)<br />

- On mahdoton löytää paria x, y ettei x=y, jos H(x)=H(y)<br />

2010-2011 v.0.95<br />

93


Sanomien autenkaatio<br />

Tiivisteen, MAC:in, laskemiseen käytetään ns. Hash-funktiota<br />

Hash-funktiolta H(x) vaaditut ominaisuudet:<br />

- H(x) voidaan laskea kaiken pituisille datalohkoille<br />

- H(x) tuottaa vakiopituisen tiivisteen<br />

- H(x) on helppo laskea<br />

- H(x):ää ei voi ratkaista tuloskoodin perusteella<br />

- X:ää on mahdoton ratkaista tunnetun sanoman y<br />

ja sen H-funktion H(y) avulla, kun H(y)=H(x)<br />

- On mahdoton löytää paria x, y ettei x=y, jos H(x)=H(y)<br />

2010-2011 v.0.95<br />

94


Yksinkertainen Hash-funktio<br />

2010-2011 v.0.95<br />

95


Secure Hash Algorithm (SHA-1)<br />

FIPS pub 180-1 v.1995<br />

32-bitin välirekisterit<br />

A=67452301, B=EFCDAB89,<br />

C=98BADCFE, D=10325476, E=C3D2E1F0<br />

2010-2011 v.0.95<br />

96


Vaiheet:<br />

SHA-1<br />

- Lisää täyte: 1000...0. 64-bittiä vähemmän kuin tasa 512 monikerta<br />

- Lisää sanoman pituus täytteen jälkeen: 64-bittiä (unsigned int)<br />

- Jaa sanoma 512 bitin kokoisiin lohkoihin (Y). Max sanoman koko 2 64<br />

esim. 40-bittinen sanoma<br />

Täyte: 1000…<br />

1a7fd53b 4c800000 00000000 00000000<br />

00000000 00000000 00000000 00000000<br />

00000000 00000000 00000000 00000000<br />

00000000 00000000 00000000 00000028<br />

2010-2011 v.0.95<br />

Sanoman pituus: esim 28H = 40 bittiä<br />

97


SHA-1<br />

CV-laskenta:<br />

Kussakin CV:ssä 4 kierrosta ja<br />

jokaisessa kierroksessa on 20<br />

askelta<br />

Jokainen askel päivittää ABCDErekistereitä<br />

W on 32-bitin sana, joka on johdettu<br />

viestistä eli Y:stä<br />

K on summautuva vakio<br />

f on looginen funktio, joka käyttää B,C,Drekistereitä<br />

+ = Summaus Mod 2 32<br />

2010-2011 v.0.95<br />

98


A = S 5 (A)+f t<br />

(B,C,D)+E+ W t<br />

+ K t<br />

B = A<br />

C = S 30 (B)<br />

D = C<br />

E = D<br />

S i =i-bitin siirto vasemmalle<br />

SHA-1 askel<br />

+ = Summaus Mod 2 32 Askeleet t=[0:19]<br />

f t = (B AND C) OR ((NOT B) AND D)<br />

K t<br />

= 5A827999<br />

t=[20:39]<br />

f t = B XOR C XOR D<br />

K t<br />

= 6ED9EBA1<br />

t=[40:59]<br />

f t = (B AND C) OR (B AND D) OR (C AND D)<br />

K t<br />

= 8F1BBCDC<br />

t=[60:79]<br />

f t = B XOR C XOR D<br />

K t<br />

= CA62C1D6<br />

t=[0:15]<br />

Wt = Yq [32*t:32*(t+1)]<br />

t=[16:79]<br />

Wt = S1(Wt-3 XOR Wt-8 XOR Wt- 14 XOR Wt-16)<br />

2010-2011 v.0.95<br />

99


SHA-1<br />

Esimerkkejä tiivisteistä:<br />

"The quick brown fox jumps over the lazy dog" =<br />

2fd4e1c67a2d28fced849ee1bb76e7391b93eb12<br />

"The quick brown fox jumps over the lazy cog" =<br />

de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3<br />

"" =<br />

da39a3ee5e6b4b0d3255bfef95601890afd80709<br />

"abc" =<br />

a9993e364706816aba3e25717850c26c9cd0d89d<br />

"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" =<br />

84983e441c3bd26ebaae4aa1f95129e5e54670f1<br />

2010-2011 v.0.95<br />

100


SHA-1<br />

"abc"= 0110 0001 0110 0010 0110 0011 = 616263<br />

W[0] = 61626380 W[1] = 00000000 W[2] = 00000000 W[3] = 00000000<br />

W[4] = 00000000 W[5] = 00000000 W[6] = 00000000 W[7] = 00000000<br />

W[8] = 00000000 W[9] = 00000000 W[10] = 00000000 W[11] = 00000000<br />

W[12] = 00000000 W[13] = 00000000 W[14] = 00000000 W[15] = 00000018<br />

A B C D E<br />

t = 0: 0116FC33 67452301 7BF36AE2 98BADCFE 10325476<br />

t = 1: 8990536D 0116FC33 59D148C0 7BF36AE2 98BADCFE<br />

t = 2: A1390F08 8990536D C045BF0C 59D148C0 7BF36AE2<br />

t = 3: CDD8E11B A1390F08 626414DB C045BF0C 59D148C0<br />

t = 4: CFD499DE CDD8E11B 284E43C2 626414DB C045BF0C<br />

. . .<br />

t = 78: 5738D5E1 860D21CC 681E6DF6 D8FDF6AD D7B9DA25<br />

t = 79: 42541B35 5738D5E1 21834873 681E6DF6 D8FDF6AD<br />

A = 67452301 + 42541B35 = A9993E36<br />

B = EFCDAB89 + 5738D5E1 = 4706816A<br />

C = 98BADCFE + 21834873 = BA3E2571<br />

D = 10325476 + 681E6DF6 = 7850C26C<br />

E = C3D2E1F0 + D8FDF6AD = 9CD0D89D<br />

2010-2011 v.0.95<br />

Tiiviste<br />

101


SHA-1, MD-5, RIPEMD-160<br />

SHA-1<br />

MD5<br />

RIPEMD-160<br />

Tiivisteen pituus<br />

160 bits<br />

128 bits<br />

160 bits<br />

Käsiteltävän lohkon<br />

pituus<br />

512 bits<br />

512 bits<br />

512 bits<br />

Askelten lkm<br />

80 (4 kier. x 20)<br />

64 (4 x 16)<br />

160 (2x 5 x16)<br />

Maximum sanoman koko<br />

2 64 -1 bits<br />

Vakioiden k-määrä 4 64 9<br />

Nopeus (Pentium 266) 14.4 Mb/s 32.4 Mb/s 13.6 Mb/s<br />

MD5 on R. Rivestin kehittämä menetelmä (RFC 1321), jonka tiivisteen pituutta<br />

pidetään liian lyhyenä<br />

RIPEMD-160 on EU/RIPE-projektin esittämä rakenne MD4/5-menetelmien<br />

kehittämiseksi (muistuttaa SHA-1:stä)<br />

SHA-2 määrittelee seuraavat tiivisteen pituudet: SHA-256, SHA-384, SHA-512<br />

2010-2011 v.0.95<br />

102


SHA-3<br />

Elokuussa 22-23.2010 pidettiin kansainvälinen kilpailu Crypto2010-<br />

konferenssin yhteydessä, jossa valitaan kandidaatti uudeksi SHA3-<br />

algoritmi (v. 2012)<br />

Mukana on 14 ehdokasta:<br />

BLAKE, Blue Midnight Wish, CubeHash, ECHO, Fugue,<br />

Grøstl, Hamsi, JH, Keccak, Luffa, Shabal, SHAvite-3,<br />

SIMD ja Skein<br />

Ehdotus uudeksi SHA3-algoritmiksi on:<br />

<br />

2010-2011 v.0.95<br />

103


HMAC RFC 2104<br />

Menetelmä yhteisesti sovitun salaisen arvon käytöstä<br />

- Hash-funktiot ovat nopeampi suorittaa kuin esim. symmetrinen lohkosalaus<br />

- Kirjastofunktioita on laajalti saatavilla<br />

Suunnittelun periaatteita:<br />

- Mahdollistaa olemassa-olevien hash-funktioiden käytön<br />

- Hash-funktio on tarvittaessa korvattavissa<br />

- Hash-funktion suorituskyky on tallella<br />

- Yksinkertainen avaintenhallinta<br />

- Hyvä know-how salauksen vahvuuksista<br />

Pakollinen mm. IP security:ssä (IPSec), Transport Layer Security:ssä<br />

(TLS) ja Secure Electronic Transactions:ssa (SET)<br />

2010-2011 v.0.95<br />

104


HMAC<br />

-rakenne<br />

Täytetään nollilla lohkon pituuteen b asti<br />

00110110 –bittien toistoa b/8<br />

XOR<br />

Hyökkääjä ei voi tuottaa uutta<br />

tiivistelukua tuntematta avainta<br />

K.<br />

Suositeltava että avaimen<br />

K:n pituus ≥ tiivisteen pituus n<br />

Alustusvektorit<br />

01011100….<br />

Kaksi pseudosatunnaisesti<br />

generoitua avainta K:sta (ipad ja<br />

opad)<br />

Hash-funktio , esim SHA-1, on<br />

vaihdettavissa oleva ’ musta<br />

laatikko’<br />

2010-2011 v.0.95<br />

105


Digitaalinen allekirjoitus: DSS<br />

Digital signature standard (DSS) NIST/FIPS Pub 186<br />

- Suunniteltu vain allekirjoitukseen (ei salaukseen)<br />

- Ei sisällä mekanismia salaukselle tai avainten vaihdolle<br />

- Käyttää SHA-1:stä hash-funktiona<br />

- Allekirjoitus tapahtuu Digital Signature Algorithm:lla (DSA),<br />

jonka toimintaperiaatteet perustuvat ElGamal:iin<br />

- Fips pub 186-1 (v.1998), 186-2 (v.2001), 186-3 (v.2009)*<br />

FIPS Pub 186-3 (2009) määrittelee mm. DSA- , RSA- ja<br />

Elliptic Curve DSA - allekirjoitustavat<br />

2010-2011 v.0.95<br />

106


DSA<br />

M<br />

KU G KR a<br />

s<br />

r<br />

M<br />

H<br />

KU G KU a<br />

Ver<br />

Vertaa<br />

H<br />

Sig<br />

SHA-1<br />

K<br />

Autentikaatio ja allekirjoitus<br />

KU G = Globaali julkinen avain<br />

p on alkuluku 2 L-1


DSA<br />

Lopputuloksena tasot r ja s, jotka liitetään sanoman perään<br />

-Huom. r ei riipu itse sanomasta M. Voidaan laskea etukäteen<br />

k -1 ja (s -1 ) käänteislukujen laskenta tapahtuu ratkaisemalla yhtälö<br />

2010-2011 v.0.95<br />

1= (k -1 k) mod q; 0< k -1 < q<br />

108


Sähköisen allekirjoituksen murtaminen<br />

Birthday-attack.<br />

Esim. Todennäköisyys sille että 23:lla satunnaisella henkilöllä on eri<br />

syntymäpäivä voidaan laskea<br />

(1- 1/365) (1-2/365) … (1-22/365) = 0.493<br />

eli tod.näk. samalle syntymäpäivälle on 0.507<br />

Esim. tiiviste on 50-bittiä (2 50 vaihtoehtoa; 10 15 ).<br />

Allekirjoituksen murtaminen:<br />

1) hyökkääjä tekee 2 30 kpl variaatiota alkuperäisestä sopimuksesta (pienin<br />

muutoksin; 30 muutettua kohtaa esim. välilyöntiä)<br />

2) hyökkääjä laskee tiivisteet ja tallentaa ne talteen<br />

3) hyökkääjä tekee 2 30 kpl väärennettyjä sopimuksia (€ tmv), Laskee<br />

tiivisteet ja tallentaa ne<br />

4) hyökkääjä hakee josko löytyy kaksi samaa tiivistettä. Luultavasti löytyy<br />

koska todennäköisyys on 1-e -1024 , eli lähes 1<br />

5) hyökkääjä pyytää hyökkäyksen kohdetta allekirjoittamaan sen variaation<br />

sopimuksesta, josta hänellä on olemassa väärennös (eli tiivisteet samat)<br />

6) hyökkääjä korvaa sopimuksen väärennöksellä ja lisää asianmukaisen<br />

allekirjoituksen<br />

2010-2011 v.0.95<br />

109


Case-esimerkki:<br />

PGP sanoman salaus ja<br />

allekirjoitus<br />

web of trust<br />

2010-2011 v.0.95<br />

110


PGP<br />

Allekirjoitus: Tiivistefunktio lasketaan SHA-1:llä.<br />

Tiivistefunktion salaus joko RSA:lla tai DSS:llä.<br />

Sanoman salaus AES:lla CAST:lla, IDEA:lla tai 3DES:llä<br />

käyttäen istuntoavainta. Istuntoavain välitetään RSA:lla tai<br />

Diffie-Hellman:illa (tai oikeastaan ElGamalla).<br />

Kompressio. Zip<br />

E-mail yhteensopivuus taataan konvertoimalla salattu sanoma<br />

ascii-merkeiksi radix-64-menetelmällä<br />

Jos sanoman koko suurempi kuin 50.000 oktettia, niin se<br />

pilkotaan<br />

2010-2011 v.0.95<br />

111


PGP<br />

Pelkkä sanoman allekirjoitus<br />

EP=Encryption Public<br />

-Toteutetaan digitaalisella allekirjoituksella = muodostetaan<br />

funktiolla lähetettävästä sanomasta 160-bitin tiivistelmä, joka<br />

salakirjoitetaan lähettäjän salaisella avaimella<br />

- Allekirjoitus voidaan lähettää sanomasta erillään, jolloin<br />

esimerkiksi useampi osapuoli voi allekirjoittaa saman sanoman<br />

2010-2011 v.0.95<br />

112


PGP<br />

Pelkkä sanoman salakirjoitus<br />

128-bit rnd number<br />

EC=Encryption Conventional<br />

- Lähetettävä sanoma salakirjoitetaan sanomakohtaisella 128-bittisellä<br />

avaimella käyttäen perinteistä (symmetristä) salakirjoitusta<br />

- Istuntokohtainen avain salataan julkisella salakirjoituksella ja<br />

lähetetään vastaanottajalla sanoman mukana<br />

- Näin koska julkinen salakirjoitus hidasta<br />

2010-2011 v.0.95<br />

113


2010-2011 v.0.95<br />

114


PGP<br />

Sekä allekirjoitus että salakirjoitus<br />

- Lähetyspäässä ensin digitaalinen allekirjoitus ja sitten sanoman<br />

salaus<br />

- Lähettäjä: allekirjoittaa sanoman ensin omalla yksityisellä<br />

avaimella, sen jälkeen salakirjoittaa sanoman sanomakohtaisella<br />

symmetrisellä avaimella, lopuksi symmetrinen avain salataan<br />

vastaanottaja julkisella avaimella<br />

2010-2011 v.0.95<br />

115


PGP<br />

Radix-64 esim 001000 (8) -> 01001001 (I)<br />

110101 (53) -> 00110001 (1)<br />

Kirjan taulukko 5.9<br />

2010-2011 v.0.95<br />

116


PGP<br />

2010-2011 v.0.95<br />

117


PGP<br />

väh.merkitsevät 64-bittiä avaimesta (tilansäästö!)<br />

Sanoman muoto<br />

2 oktetettia tuloksesta, jotta<br />

vastaanottaja voi tarkistaa onko<br />

hän käyttänyt oikeaa avainta<br />

2010-2011 v.0.95<br />

118


PGP avaimista<br />

Julkisen avaimen salakirjoitukseen liittyvien avainten hallintaan<br />

päätelaitteella käytössä kaksi tietokantaa, joihin avaintiedot on<br />

tallennettu siten, että yksityinen (private) avain on tallennettu<br />

tietokantaan salakirjoitettuna ja salasanalla suojattuna<br />

Sanomakohtaisen avaimen salaisuus varmistetaan käyttäjältä<br />

saatavalla satunnaisluvulla, jonka muodostumiseen vaikuttavat<br />

sekä merkit että näppäilyvälit<br />

Tietyllä hetkellä käytössä saattaa olla useita private-publicavainpareja<br />

-->avainparien tunnistamiseen käytetään KeyID:tä,<br />

joka muodostuu julkisen avaimen 64:stä vähiten merkitsevästä<br />

bitistä<br />

2010-2011 v.0.95<br />

119


PGP-yrityksiä ja yhteisöjä<br />

PGP Corporation<br />

(www.pgp.com): Kaupallisia ohjelmia<br />

www.pgpi.org; PGP Corporation:in ilmaisia ohjelmia mm.<br />

PGP Freeware. Viestin salaus. Ohjelmasta on poistettu mm.<br />

MS outlook plug-in ja kovalevyn partition salaus (+50$).<br />

Windows- ja Macintosh-käyttöjärjestelmät<br />

GNU Privacy Guard . Ohjelma, joka mahdollistaa datan<br />

salakirjoituksen. Komentorivipohjainen ilmainen avoimen<br />

lähdekoodin ohjelma Unix-,Windows- ja Macintosh<br />

käyttöjärjestelmät.<br />

PGPfone. Salaa puhelinyhteyden PGPfone-päätteiden välillä.<br />

Veridis (www.veridis.com)<br />

FileCrypt. Kaupallinen viestien salaukseen ja datan<br />

salaukseen suunniteltu komentorivipohjainen ohjelma. Unix-<br />

,Windows- ja Macintosh-käyttöjärjestelmät.<br />

2010-2011 v.0.95<br />

120


PGP sertifikaatit<br />

PGP:n kanssa ei tarvitse käyttää sertifikaatteja, vaan voidaan<br />

käyttää julkista lyhyttä tiivistettä (fingerprint), jolla varmennetaan<br />

julkisen avaimen oikeellisuus. Esim E2 71 A3 jne<br />

Jos käytetään sertifikaatteja, niin ne voidaan tallentaa<br />

sertifikaattipalvelimelle. Sertifikaatin luoja voi purkaa/perua sertifikaatin<br />

PGP sertifikaatit eroavat X.509-sertifikaateista. PGP-sertifikaatissa<br />

voi olla useita tunnistetietoja, jotka ovat varmennettu allekirjoituksella<br />

Versio, aika, voimassaolo, avaintyyppi (esim RSA), AVAIN<br />

UserID, E KRa/ca [todiste siitä että userID:lle kuuluu ko. avain,<br />

versio,tiivistealgoritmi, tiiviste, allekirjID ]<br />

…<br />

Käyttäjät itse määrittelevät sertifikaattien luottamus- (complete,<br />

marginal, untrusted ) ja kelpoisuustason (valid, marginally, invalid)<br />

2010-2011 v.0.95<br />

121


PGP keyring<br />

2010-2011 v.0.95<br />

* marginaalisesti kelpaamaton<br />

avain tai käyttäjä<br />

122


PGP keyring<br />

DH julkinen ja salainen avainpari<br />

RSA julkinen ja salainen avainpari<br />

DH julkinen avain<br />

RSA julkinen avain<br />

Käytöstä poistettu avain<br />

Mitätöity avain<br />

Vanhentunut avain<br />

Avaimen lisätietona<br />

Kuka on taannut avaimen aitouden<br />

-”- sekä tieto tilasta : Mitätöity (red), huono (himmeä), siirrettävä (blue)<br />

X.509 sertifikaatti<br />

Vanhentunut X.509 sertifikaatti<br />

Mitätöity X.509 sertifikaatti<br />

PhotoID<br />

Kelpaamaton tai * avain<br />

Validi ei-oma avain<br />

Validi oma avain<br />

2010-2011 v.0.95<br />

123


-----BEGIN PGP PUBLIC KEY BLOCK-----<br />

Version: PGPfreeware 7.0.3 for non-commercial use <br />

mQGiBDwHy/QRBADRL005I0Q2wqM0OFxj0Rw592UWVoWY7FlceeLt0qGZcFNHoPQSYnDS48G<br />

u3Se5dJj35Kl1OEQ1DlcOzoGaYxLUxFRCyJYXwwUBRYeLtiIxuUX8Jp2ybMHMV894CTIN5z<br />

2MbdNAPq7VRtbkwUv6CM/laETL3oH3yvsSBNbUCIAQ9QCg/wAphlNfaCULs9Tq35LIdg7vt<br />

J0D/01QXudl95H+aoHVsbcPmjPXGTO2QBRA2aVqzT4y<br />

thcym2AUVf4uI8wETVPZWD409oLohqNl4woaGE8ELqJ0IEuYNQe+44R/2Mhoq6Y7HJWbq1G<br />

g3aPVFORb5yeALQA9IRCAu6vVPQPD2nYKNe/1x+rLhmx0qFdC+gVbC5XsXLtsBAC8fihWJu<br />

z+gqkBGAZl6H4f2sLEGwB7oLOHha9kFM9j7Wxz6bGuupHI+6YviNQ5O5kdfYEyMfnsp+cbQ<br />

/wN1AVkgsA0MAdcLtVEfLoX33hPmxC0Jom/n8osfPdQerioDCchL+g4ifQleSUVaw4fVHag<br />

yL/1+ktlBpnQ9pFfKWrE7QfTG91bGEgUGVra2EgPGxvdWxhQHBvcmkudHV0LmZpPokAWAQQ<br />

EQIAGAUCPAfL9AgLAwkIBwIBCgIZAQUbAwAAAAAKCRBYgtUbNEJ6kVVjAKCKR9do87pXMJV<br />

koX3yFLs50koYEACfVx+QMMdRRadTJYvrye5XYqSQhv+5Ag0EPAfL9RAIAPZCV7cIfwgXcq<br />

K61qlC8wXo+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ+AyDvWXpF9Sh0<br />

1D49Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm/xX5u/2RXscBqtNbno2g<br />

pXI61Brwv0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1FHQ98iLMcfFstjvbzySPAQ/ClWxi<br />

NjrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzhsSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp<br />

+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZJrqrol7DVekyCzsAAgIH/23iJJHkRfbKXTzGJOmjY<br />

LJW7uz5xwfqQHhyaExRrUVL/2/iuzb2rVJZhld3sSMfbgc/JV2qkgWQRgi1mcERr6SAhg6J<br />

7pY//00O0Fyya7ZeEATVatDrFtpy3DfRyVXZHgWVbWuo4TGRXEw4W16YFpzXNqqBfennWFE<br />

atcG7bbBGwbGxR7+/MGSrxFzBhfaTSYTgeiEd7a089q+wgue0UgMCr6X78S//IYye+pINVQ<br />

5KDv1RNlU/BK80PmwZEUbYU+aSl4TiIQHvI0tBSYUzsoVWiyVRfl/ADVo1v7XuRVaXnERH9<br />

x9Y12M4K4bwIyPM9uNZWggiIpaVT8KIPeMHXs2JAEwEGBECAAwFAjwHy/UFGwwAAAAACgkQ<br />

WILVGzRCepFZQgCfXJ89eqemV4+jSBEtuafZ4Mh2s2EAn3WLADmpXeTrkQ2MmF2vTTROGwa<br />

V=y3wB<br />

2010-2011 v.0.95<br />

-----END PGP PUBLIC KEY BLOCK-----<br />

124


Sanoma allekirj. ja salattuna<br />

-----BEGIN PGP MESSAGE-----<br />

Version: PGPfreeware 7.0.3 for non-commercial use<br />

<br />

qANQR1DBwU4DoSub/MAO6FkQB/0Yq11eTEcIeL+TfkdxZBPMjEVE3pbs5gt7beyf<br />

koNdAgO1/mHz4SiBL5unKtUp7UIv/L+EuSI6yTtRuA3Lwq2Gf2V4ywbJzYiKR0qK<br />

j7KOXXhuqJbLb0fR+W6dyrJuQ5x8do5kxDwtc/+leJ4E9Ga18q4EcA80H6pM7e8A<br />

klcyThbgoStYjtpv5+T02ZcbWAqbE2GTExdBQFFJoMIHnmVdAxw2DwH3nDFVMmlG<br />

8bFKxS0W9grLqskF6LbLsT5bvAQo3U2bk6CPs0b3k6uukmcT7K3uhZHXuFGKIMwf<br />

m5vH+5Er4WFL1T1d3963pqr7l8eAzVoD+3j530yMSSD5p157B/9oKAl1liifqU8S<br />

gaMTLj3ZB4kQ0Mu4dSaV7BZkebDbrdRF3ROgrrW4FFOcCuvQLZSKBjhnpxPmpbRu<br />

QdYzhxloOBMfeX5/+zCi7yT4QURw7LJ8XMYWkIqG0XFGY/EV5QeYk4klc9pwJ+Bu<br />

5HISlpozm5itP7r1FYhzoqV/NrHOicUvFmm55mlR4Xm9U3+Vca/8HFLpyWQyfbde<br />

f6fLqOPpr5b9mZwGmzc9pttwA6wI5bW12lUfHQZfIPcuo2yGgbhEvFnferMX2Gdg<br />

5EVmXNSMoqyjK6tEcCS5UI/yOgjdQp+8lYmMDOiIYslYZc+zH1MzsliEaHcjcKT1<br />

JtW+qYL8yZJraoU3r35tqP9slFx//fE78YyyexYcCNWkWdNW1xwlyIz3fHBvL+gc<br />

mirWUaIzquVevcGro7Ui6PhvYfrSRwjWCHCNg9lJ3Nzn413BrWfllbsUXX5uBGp4<br />

AQxhY0i0DZmacPLCgANasAsFFKTmnBYAJ9bPkpMX6w5HVJCMMxWsvgPPsU7oCdVj<br />

1QuqWGZiS4MhsA==<br />

=9klh<br />

2010-2011 v.0.95<br />

-----END PGP MESSAGE-----<br />

125


Sanoma selkokielellä<br />

*** PGP Signature Status: good<br />

*** Signer: Loula Pekka <br />

*** Signed: 3.12.2001 10:42:28<br />

*** Verified: 3.12.2001 11:35:37<br />

*** BEGIN PGP DECRYPTED/VERIFIED MESSAGE ***<br />

TÄMÄ ON KOEYHTEYS PGP:llä salatulle viestille !!<br />

*** END PGP DECRYPTED/VERIFIED MESSAGE ***<br />

-<br />

2010-2011 v.0.95<br />

126


6 Avainten vaihto<br />

2010-2011 v.0.95<br />

127


Symmetrisen avaimen vaihto<br />

1) Avaimen jaetaan suojaamattomasti 1. kerralla, tai toimitetaan ei<br />

sähköisesti<br />

2) Jos A ja B ovat aiemmin välittäneet avaimen, niin uusi avain<br />

voidaan välittää kryptattuna hyödyntäen edellistä istuntoavainta<br />

([E KSOld [K SNew ] ] ) tai osapuolten julkisia avaimia (kuva)<br />

1) E KUb [ N 1 || ID A ]<br />

2) E KUa [ N 1 || N 2 || ID B ]<br />

KU a (Key pUblic)<br />

KR a (Key pRivate)<br />

A<br />

3) E KUb [N 2 ]<br />

B<br />

N 1 (Nonce)<br />

Aikaleimat<br />

4) E KUb [E KRa [K S ] ]<br />

2010-2011 v.0.95<br />

128


Symmetrisen avaimen vaihto<br />

3) Kolmas luotettu osapuoli (KDC) välittää avaimet A:lle ja B:lle<br />

Avaimien jako kryptattuna (kuva)<br />

1) E KU KDC [E KRa [ N 1 || ID A || ID B ]]<br />

Key distr. center<br />

(KDC)<br />

4)<br />

A<br />

2) E KUa [ N 1 || ID KDC || E KRKDC [K S ] ]<br />

5)<br />

3) ID A , E K S [ID A || N 2 || DATA]<br />

B<br />

Front End Processor<br />

2010-2011 v.0.95<br />

129


Asymmetrisen avaimen vaihto<br />

- Julkiset avaimet ovat todella julkisia ja kuka tahansa voi<br />

julistautua CA:ksi, eli avainten välittäjäksi<br />

- Kuka tahansa voi väittää olevansa A ja tarjota A:n julkista avainta<br />

välittäjille<br />

- Käyttäjien ja palvelimien tunnistus oleellisen tärkeää. Käytä esim<br />

RSA-perusteista haaste-vaste-menetelmää tmv.<br />

2010-2011 v.0.95<br />

130


Symmetrisen avaimen vaihto<br />

4) Molemmat osapuolet laskevat itsenäisesti avaimen K S ilman,että<br />

sitä välitetään verkossa esim. Diffie-Hellman-menetelmä<br />

By Whitfield Diffie ja Martin Hellman (1976)<br />

Y A<br />

Y B<br />

A<br />

Valitse oma salainen arvo<br />

ja laske julkinen avain Y A<br />

B<br />

Valitse oma salainen arvo<br />

ja laske julkinen avain Y B<br />

Laske K S oman salaisen arvon<br />

ja B:n julkisen avaimen<br />

perusteella<br />

Laske K S oman salaisen arvon<br />

ja A:n julkisen avaimen<br />

perusteella<br />

2010-2011 v.0.95<br />

131


Diffie-Hellman<br />

Valitaan alkuluku esim q=97. Lasketaan q:n<br />

kantajuuri a (b=a i mod q) -> a=5<br />

(a on q:n kantajuuri jos b saa kaikki arvot 1 ja q-<br />

1:n välillä kun i saa arvot 1…q-1)<br />

Valitaan salainen arvo x A = 36 ja x B = 58<br />

Lasketaan julkinen avain:<br />

Y A = 5 36 mod 97= 50<br />

Y B = 5 58 mod 97= 44<br />

Lasketaan salainen avain K, A:n toimesta<br />

K = (Y B ) X A mod 97 = 44 36 mod 97= 75<br />

B:n toimesta<br />

K = (Y A ) X B mod 97 = 50 58 mod 97= 75<br />

Parista {50,44} hyökkääjän on vaikea laskea<br />

tulosta 75.<br />

2010-2011 v.0.95<br />

132


Diffie-Hellman<br />

Perustelu miksi avain on sama kummasakin tapauksessa !<br />

Salainen avain K = (Y B ) X A mod q<br />

= (a X B mod q) X A mod q<br />

= (a X B) X A mod q<br />

= a X A X B mod q<br />

= (a X A) X B mod q<br />

= (a X A mod q) X B mod q<br />

= (Y A ) X B mod q<br />

2010-2011 v.0.95<br />

133


Avainten vaihto Diffie-Hellmanissa<br />

q (ja a) pitää välittää etukäteen, hakea yhteisestä luetetusta<br />

tietokannasta tai välittää Y A :n yhteydessä<br />

2010-2011 v.0.95<br />

134


D-H Man-in-the-middle-hyökkäys<br />

A kuvittelee keskustelevansa B:n kanssa (ja B A:n kanssa), mutta<br />

todellisuudessa hyökkääjä C on napannut A:n Y A -sanoman ja<br />

tarjoaa A:lle ja B:lle omaa julkista avainta,Y B :tä. A-Bkommunikaatiossa<br />

C-välittää kaikki viestit, mutta pystyy<br />

purkamaan ne. IP-osoitteet pitää luonnollisesti väärentää sekä<br />

a/q-arvot pitää kaapata.<br />

Y A = a X A mod q<br />

A<br />

Y A<br />

C<br />

Y C = a X C mod q<br />

K 1 =(Y A ) X C mod q<br />

Y B = a X C2 mod q<br />

K 2 =(Y D ) X C2 mod q<br />

B<br />

K 1 =(Y C ) X A mod q<br />

Y C<br />

E K 1[Data]<br />

Y B<br />

Y D<br />

E K 2[Data]<br />

Y D = a X B mod q<br />

K 2 =(Y B ) X B mod q<br />

2010-2011 v.0.95<br />

135


D-H<br />

Diffie-Hellman:in heikkoudet:<br />

-Ei tarjoa osallistujien identifikaatiota<br />

-Man-in-the-middle hyökkäys.<br />

-Työasemaa voidaan kuormittaa turhalla laskennalla pyytämällä<br />

toistuvilla Y C -sanomilla laskemaan turhia sessioavaimia<br />

2010-2011 v.0.95<br />

136


Oakley RFC 2412<br />

(DH:n kehittyneempi versio)<br />

Turhien istuntoavaimien laskemisen esto<br />

A lähettää (Y A -sanoman yhteydessä) evästeen. Ennen kuin käynnistetään<br />

istuntoavaimen laskeminen, niin B kuittaa evästeen lähdeosoitteeseen.<br />

Jos evästeelle ei tule kuittausta, niin osoite oli huijaus. Evästeen<br />

luomisessa otetaan huomioon IP-ja porttiosoitteet. Sama evästekäytäntö<br />

vaaditaan myös viestille Y B<br />

Viestien nauhoituksen väärinkäytön esto<br />

- Nonce arvon lisääminen sanomaan<br />

- Autentikaatio<br />

Identifikaatit<br />

Molemmat osapuolet lisäävät viestiin allekirjoituksen<br />

Muita välitettäviä tietoja mm.<br />

Sanoma sisältää julkisen avaimen sekä tiedot käytetystä avainten muodostamistavasta<br />

(DH, elliptinen) ja tiiviste-ja autentikaatiomenetelmistä<br />

2010-2011 v.0.95<br />

137


Asymmetrisen avaimen vaihto<br />

1) Keskitetty avaintenjakomenettely:<br />

Ongelmat: Julkinen avain pitää hakea aina Auth:lta<br />

Request+Time 1 OK- se on todella Auth<br />

N 1 OK- se on todella B<br />

2010-2011 v.0.95<br />

N 2 OK- se on todella A<br />

138


Asymmetrisen avaimen vaihto<br />

2) Julkisen avaimen sertifikaattimenettely:<br />

Sertifikaatti (Varmenne) = ID A || K U A || E KRCA [H(ID A || K U A )]<br />

CA (certificate authority) = luotettu kolmas osapuoli esim.<br />

väestörekisterikeskus<br />

K UA = A:n julkinen avain<br />

ID A = A:n liittyvää tunnistetietoa<br />

Käyttäjä esittää oman julkisen avaimensa CA:n allekirjoituksella<br />

vahvistettuna. Tunnetuin varmennemuoto on X.509 (käytetään mm.<br />

IPSec, SSL, SET, S/MIME)<br />

CA<br />

A<br />

ID A<br />

K U A<br />

B<br />

• Tarkista onko viesti eheä käyttäen<br />

CA:n julkista avainta K U CA<br />

• Käytä varmenteessa olevaa julkista<br />

avainta<br />

2010-2011 v.0.95<br />

139


Asymmetrisen avaimen vaihto<br />

OK - C A -tehty CA:n toimesta<br />

ja se on A:n sertifikaatti<br />

2010-2011 v.0.95<br />

140


Sertifikaatit<br />

Tärkein sertifikaattimuoto on<br />

ITU-T X.509 v. 3.x vuodelta 1995<br />

2010-2011 v.0.95<br />

141


X.509<br />

Määrittelee hakemistopalvelun, jotka ylläpitävät<br />

käyttäjätietokantaa (sertifikaatit)<br />

- Suojaamattomasta tietokannasta löytyy myös kaikista käyttäjistä<br />

CA:n varmentamat sertifikaatit (mm. käyttäjien julkiset avaimet)<br />

-Perustuu julkisen avaimen autentikaatiomenetelmiin.<br />

Algoritmeista suositellaan RSA:ta. Allekirjoitus esim DSAalgoritmilla.<br />

Ei määritä mitään erityistä Hash-funktiota (esim SHA-<br />

1)<br />

-Käytetään mm S/MIME:ssä, IPSec:ssä, SSL/TLS:ssä ja SET:ssä<br />

2010-2011 v.0.95<br />

142


X.509<br />

-Kaikki, joilla on CA:n julkinen avain voivat lukea<br />

käyttäjien sertifioidut julkiset avaimet esim<br />

- hankitaan omalta CA:lta CA B :n julkinen avain<br />

– hankitaan CA B :ltä B:n julkinen avain - kumppani tekee<br />

vastaavasti<br />

- Kukaan muu kuin CA ei voi muuttaa sertifikaattia<br />

- CA:n julkinen avain pitää saada luotettavasti<br />

KR CA<br />

KU CA<br />

2010-2011 v.0.95<br />

143


X.509 sertifikaatit<br />

2010-2011 v.0.95<br />

144


X.509<br />

•Sertifikaatin elementit ovat:<br />

1. Versio nro<br />

2. Yksiselitteinen sertifikaatin sarjanumero (int)<br />

3. Allekirjoituksen identifiointi (käytetty algoritmi)<br />

4. Sertifikaatin luoneen CA:n nimi (Issuer name)<br />

5. Käyttäjänimi (subject name)<br />

6. Voimassaoloaika (alku ja loppu pvä)<br />

7. Käyttäjän julkisen avaimen tiedot (algoritmi+avain)<br />

8. CA:n yksilöllinen tunniste. Voidaan käyttää samoja nimiä<br />

9. Käyttäjän yksilöllinen tunniste -”-<br />

10. Laajennus<br />

11. Allekirjoitus E KRca (H(M))<br />

2010-2011 v.0.95<br />

145


X.509 Sertifikaatti esim<br />

Version:<br />

Serial number:<br />

V3<br />

65F2<br />

Signature algorithm:sha1RSA<br />

Issuer:<br />

CN = FINSIGN CA for Citizen, O = VRK-FINSIGN Gov. CA,<br />

C = FI<br />

Valid from: 24. elokuuta 2001 1:59:59<br />

Valid to: 23. elokuuta 2004 1:59:59<br />

Subject:<br />

Serial Number = 100101568, CN = BRANDT HARRI<br />

100101568, G = HARRI, SN = BRANDT, C = FI<br />

Public key:<br />

3081 8902 8181 …<br />

.... 0301 0001<br />

Authority Key Identifier: KeyID=4649 4E43 414B 3031<br />

Subject Key Identifier: 30<br />

CRL Distribution Points: [1] CRL Distribution Point, Distribution Point Name:<br />

Full Name:URL=ldap://193.229.0.210:389/…<br />

Certificate Policies: [1] Certificate Policy: PolicyIdentifier=1.2.246.517.1.1<br />

Key Usage<br />

Digital Signature , Key Encipherment , Data<br />

Encipherment(B0)<br />

Thumbprint algorithm: Sha1<br />

Thumbprint:<br />

1E13 437A 2010-2011 1AD8 v.0.95 7F48 43A1 4285 01CC<br />

146<br />

6E27 BCB3 026A


X.509<br />

Kunkin CA:n on pidettävä kirjaa kumotuista<br />

sertifikaateista (Certificate Revocation List; CRL)<br />

– Allekirjoitusalgoritmin identifikaatio<br />

– Listan tekijä<br />

– Listan päivityshetki<br />

– Seuraavan päivityksen aika<br />

– Kumottujen sertifikaattien tiedot (sarjanumero ja pvm)<br />

– Allekirjoitus<br />

Sertifikaattien peruminen tilanteissa, kun<br />

- Käyttäjän salainen avaimen turvallisuus ei ole taattu<br />

- Käyttäjä ei ole enää CA:n takaama<br />

- CA:n sertifikaattimenettely ei ole taattu<br />

2010-2011 v.0.95<br />

147


Esim. X.509-sertifikaatin käyttö SSL-yhteydessä<br />

Certificate-viestissä:<br />

Palvelin lähettää clientille vaaditut X.509-sertifikaatit (ainoastaan DH<br />

ilman autentikaatiota ei vaadi näitä)<br />

Client tarkistaa:<br />

1. Onko sertifikaatti<br />

ajallisesti validi<br />

2. Löytyykö sertifikaatin<br />

tarjoaja luotettujen CA:den<br />

listalta. Jos ei niin informoi<br />

käyttäjää<br />

3. Onko sertifikaatti allekirjoitettu serverin<br />

salaisella avaimella. Client käyttää kohdassa 2<br />

todennettua palvelimen julkista avainta<br />

4. Onko palvelin samassa osoitteessa kuin sen<br />

on väitetty sertifikaatissa olevan 2010-2011 v.0.95<br />

148


X.500 hakemistorakenne suunniteltiin X.509-<br />

varmenteiden säilytykseen<br />

ITU-t X.500/ISO 9594-1:1998, The directory: overview of concepts,<br />

models, services<br />

Pääsyprotokollana määriteltiin Directory Access Protocol, DAP, joka<br />

myöhemmin korvautui kevyemmällä TCP/IP-protokollaa hyödyntävällä<br />

Lightweight Directory Access Protokollalla, LDAPilla, RFC 1777.<br />

Eli LDAP määrittelee pääsyprotokollan X.500-tyyppisiin<br />

hakemistoihin.<br />

LDAP on toimittajariippumaton standardi, joka tarjoaa<br />

sovelluskehittäjille mm. avoimen API-ohjelmointirajapinnan (LDAPv3;<br />

RFC 4510-4519).<br />

Eri toimittajat hyödyntävät API-rajapintaa esim.<br />

• Microsoftin Active directory sercices interface (kokoelma korkeatason COMohjelmointirajapintoja)<br />

mahdostaa mm. perusmetodit GetInfo ja SetInfo<br />

2010-2011 v.0.95<br />

• Sun Microsystemsin Java Naming and directory services<br />

149


X.500 hakemistorakenne<br />

Hierarkkisen LDAP-hakemiston-objekti koostuu attribuutista ja sen<br />

arvosta esim. käyttäjäobjekti<br />

dn: uid=Pekka, ou=people, o=tut.fi, sn: Pekka, cn: Pekka Loula,<br />

objectClass: top, objectClass: person, objectClass:<br />

organizationalPerson, objectClass: inetOrgPerson<br />

top<br />

person<br />

Org.person<br />

InetOrgPerson<br />

InetOrgPerson on yleiskäyttöinen objektiluokka, joka sisältää<br />

käyttäjään liittyviä attribuutteja mm.<br />

userCertificate, userMIMECertificate, userPKCS12,<br />

userPassword, name, x121Address, X500UniqueIdentifier, uid,<br />

title, displayName, employeeNumber, postalAddress, mail,<br />

telephoneNumber, jpegPhoto, preferredLanguage, labelledURI<br />

2010-2011 v.0.95<br />

150


X.500 -hakemistorakenne<br />

Jos halutaan julkaista sertifikaatteja ldap-hakemiston avulla, niin<br />

esim. OpenLDAP2.0-server –konfiguroinnin yhteydessä otetaan<br />

käyttöön objektiluokat:<br />

inetOrgPerson ja certificationAuthority, joka määrittelee<br />

mm. listan kumotuista sertifikaateista ja CA-sertifikaatit<br />

Microsoftin Actice directory (AD) –hakemisto on LDAP-standardiin<br />

perustuva skaalautuva hakemistopalveluratkaisu, joka<br />

mahdollistaa mm. keskitetyn käyttäjähallinnon, palvelimien<br />

välisen synkronisoinnin, datana keskitetyn hallinnan, single-signon-käyttäjätunnistuksen,<br />

kerberos-lippujen käytön valtuutuksina<br />

sekä DNS- nimipalvelun hyödyntämisen.<br />

2010-2011 v.0.95<br />

151


X.500 ristiinvarmennus<br />

Entäpä luottamuksen laajentaminen X.500-hakemistopalvelussa<br />

A:n tuntema varmennetaho W ei tiedä KU b :ta<br />

Jos CA:t (esim W ja V) ovat sertifioineet toisensa, niin<br />

1) A hakee oman CA:nsa, W:n, allekirjoittaman<br />

sertifikaatin V:n julkisesta avaimesta (KU v ).<br />

Hänellä on W:n julkinen avain (KU w ) ja todentaa<br />

sillä, että V:n julkinen avain KU v on aito<br />

2) A hakee V:n palveluhakemistosta B:n julkisen<br />

avaimen (KUb:n) ja todentaa sen aitouden V:n<br />

allekirjoituksen avulla<br />

3) A lähettää salattua tietoa B:lle<br />

2010-2011 v.0.95<br />

E CAw [KU v ] E CAv [KU b ]<br />

W V<br />

1) 2)<br />

A<br />

3)<br />

B<br />

152


X.500 ristiinvarmennus<br />

Palvelinrakenne voidaan<br />

järjestetään hierarkkisesti.<br />

CA X tietää, että B:n sertifikaatti<br />

löytyy CA Z :ltä / CA Y :ltä (esim<br />

tunnistepolun perusteella vrt.<br />

nimipalvelinrakenne)<br />

A voi kertoa viestissään polun B:lle<br />

miten hänen julkinen<br />

avaimensa haetaan<br />

E CAv [KU x ]<br />

E CAx [KU z ]<br />

V<br />

X<br />

U<br />

Z<br />

E CAz [KU Y ]<br />

E CAw [KU v ]<br />

W<br />

Y<br />

E CAY [KU b ]<br />

A<br />

2010-2011 v.0.95<br />

B<br />

153


Kiitokset<br />

Lisätietoja: pekka.loula@tut.fi<br />

2010-2011 v.0.95<br />

154

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!