Luentomateriaali
Luentomateriaali
Luentomateriaali
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