PKI käytöstä ja taustoista - GPG ja SSL Riku Itäpuro <riku.itapuro@iki.fi>
2
Sisältö 1 Johdanto 5 1.1 Perusteet......................................... 5 1.2 Rajoitus.......................................... 5 1.3 Disclaimer......................................... 5 1.4 Uusin versio........................................ 5 2 PKI-järjestelmien taustaa 7 2.1 Historiaa......................................... 7 2.2 Teoria........................................... 7 3 PGP 9 3.1 PGP............................................ 9 3.2 Luottosuhteet....................................... 9 3.2.1 Hierarkia, (SSL)................................. 9 3.2.2 Web-of-Trust, (PGP)............................... 9 3.3 Avainpalvelimet GPG.................................. 10 3.4 Avaimen varmistus.................................... 10 3.5 Avaimen allekirjoitus................................... 10 3.6 Peruskäyttö GnuPG................................... 10 3.6.1 Avainparin luonti................................. 10 3.6.2 PGP avaimen julkaisu.............................. 10 3.6.3 PGP avaimen haku................................ 10 3.6.3.1 Oman avainnipun päivitys...................... 11 3.6.3.2 Avainpalvelimen tiedon päivitys................... 11 3.6.4 PGP-avaimen allekirjoitus interaktiivisesti................... 11 3.6.5 Signing in nutshell................................ 12 3.6.6 Easier signing................................... 12 3.7 Tiedoston salaus ja allekirjoitus, gpg.......................... 13 3.8 Kuoletus (revokointi)................................... 13 3.9 advanced......................................... 13 3.9.1 trust signing................................... 13 3.9.2 aikanotaaripalvelut................................ 14 4 SSL 15 4.1 SSL............................................ 15 4.2 Juurivarmentajat SSL.................................. 15 4.3 Kuoletuslista CRL.................................... 15 4.4 OCSP........................................... 15 4.5 EVSSL........................................... 15 4.6 SSL käyttö........................................ 16 4.6.1 salaisen avaimen luonti.............................. 16 4.6.2 allekirjoituspyyntö................................ 16 3
4 SISÄLTÖ 4.6.3 allekirjoitus.................................... 16 4.6.4 codesigning.................................... 16 5 Sähköposti ja PKI 17 5.1 mutt............................................ 17 5.2 Webmailit, joissa PKI.................................. 17 5.2.1 Horde....................................... 17 5.2.2 Freenigma..................................... 17 5.2.3 hushmail..................................... 18 5.3 Mozilla-perheen enigmail-laajennus........................... 18 5.4 muut............................................ 18 6 Miksi nähdä vaivaa? 19 6.1 Lisätietoa......................................... 19
Luku 1 Johdanto 1.1 Perusteet Dokumentti käy lyhyesti läpi julkisen avaimen teoriaa ja käyttöä. Julkisen avaimen menetelmää voidaan käyttää silloin, kun halutaan varmistaa sähköisen viestin eheys (allekirjoituksessa viestin tarkiste) kiistämättömyys (allekirjoituksessa lähettäjä) suojaus muiden, kuin viestin tarkoitettujen vastaanottajien silmiltä (salaus). Tässä verrataan kahta PKI järjestelmää käyttävää kohdetta, PGP (GNUPG) ja x509-järjestelmää. Termiä PGP käytetään tarkoittamaan yhtä hyvin GNU Privacy Guard ohjelmaa (GnuPG), OpenPGP protokolla ja komentorivi ohjelmaa gpg. 1.2 Rajoitus Tässä ei käsitellä S/MIMEä, vaan pyritään antamaan perustietämys PKI:sta GnuPG käyttäjän silmin. Vasta tänään 4.6.2008 minulle selvisi, että on olemassa myös gpg2 ohjelma, enkä sen eroavaisuuksia ole selvittänyt. 1.3 Disclaimer Dokumentti sisältää asiavirheen tai kaksi. Se on tehty alustukseksi 4.6.2008 Tampereen Linkkutapaamiseen ja täydentynee illan keskustelujen myötä. Lähteisiin viittaus on myös puutteellista, tämän asian korjaan, kun opin BibTexin käytön. 1.4 Uusin versio Uusin versio dokumentista on saatavilla osoitteesta http://www.khdrive.fi/linkku/index.php?title=pki 5
6 LUKU 1. JOHDANTO
Luku 2 PKI-järjestelmien taustaa 2.1 Historiaa Salakirjoitus tai -lukeminen on vaikeaa ja niin pitäisikin olla, eihän se muuten olisi salakirjoitusta. Salakirjoituksen tekemiseen ja purkamiseen täytyy käyttää menetelmää, koodekkia, avainta, jonka lähettäjä ja vastaanottaja tietävät. Perinteisesti tämä koodekki on ollut molempien päiden tiedossa. Koodekki on voinut olla koodisanakirja, algoritmi tai tieto siitä, että viesti on tatuoitu orjan päänahkaan ja annettu tukan kasvaa. Yhtäläistä on, että viestiä ei voi salata tai purkaa ennen tätä. Jos oletetaan hetkeksi, ettei viestiä voisi purkaa ilman koodekkia, on salakirjoitus perimmältään avainhallintaa: Kuinka kertoa toiselle osapuolelle, millä tavalla viestejä luetaan. Miten välitetään salaisest avaimet toiselle ja miten voidaan varmistua siitä, että viestit tulevat oikealta henkilöltä. Avaimet itsessäänkin ovat viestejä, joten nekin voidaan salata. Perinteisesti koodekit ovat olleet symmetrisiä, eli viestin salaukseen ja purkuun on käytetty samaa koodekkia. Julkisen avaimen järjestelmä pyrkii puolittamaan avainten välityksen ongelman kahteen osaan sillä, että avaimia on kaksi: julkinen ja salainen. Tämä helpottaa osittain avainten välitystä. Ensimmäinen julkisen avaimen järjestelmä oli Diffie-Hellman (1976) samannimisten keksijöiden mukaan. 1 patentti siihen oli voimassa vuoteen 1997 asti. Tätä seurasi RSA:n patentointi 1983, joka taasen oli patentoitu vuoteen 2000 asti, mutta sen henkilökohtainen, ei-kaupallinen käyttö oli sallittua ennen. Ellei näin olisi ollut, PGP:n olisi ollut vaikeaa saavuttaa nykyistä suosiotaan. 2.2 Teoria PKI, Public Key Infrastructure on suurin piirtein julkisen avaimen käyttö sisältäen avainten jakelun, jolla tarkoitetaan sähköisen avainparin käyttöä epäsymmetrisessä salauksessa. Avainpari tarkoittaa sitä, että avaimia on kaksi kappaletta, salainen ja julkinen. Salainen avain nimensä mukaan on se, jota ei saa hukata eikä näyttää muille. Julkinen avain generoidaan salaisesta avaimesta tarkoitukseen sopivalla salausalgoritmilla ja se on näkyvä osa maailmalle 2 Epäsymmetrisyys tarkoittaa sitä, että algoritmi, joka operoi viestillä on yhdensuuntainen. Käänteiseen operaation käytetään avaimen toista puoliskoa. Viestin salauksessa käytetään myös symmetristä salausta, koska se on nopeampi, mutta tähän käytetty satunnainen salausavain salataan asymmetrisesti. Viesti myös pakataan ennen salauksen aloitusta. Suuri ongelma viestien salausjärjestelmissä on käytettyjen salausavainten turvallinen vaihto ja luottamuksen varmistaminen. Yksinkertaisimmillaan epäsymmetrinen funktio toimii näin: f(x) = xmod3 1 http://cse.stanford.edu/class/cs201/projects-99-00/software-patents/rsa.html 2 PGP ja openssl voivat generoida avaimen yhteydessä myös julkisen osan ja allekirjoittaa sen 7
8 LUKU 2. PKI-JÄRJESTELMIEN TAUSTAA x = 41 f(x) = 41mod3 = 2 lukua x ei saada pääteltyä, vaikka funktio f ja arvo f(x) ovat tunnettuja. Modulo- eli jakojäännösfunktion sijaan oikeasti käytetään vahvempia ja monimutkaisempia funktioita kuten RSA tai Elgamal, jotka perustuvat suurten lukujen tekijöihin jaon vaikeuteen. Mikäli salainen avain hukkuu, täytyy julkinen avain kuolettaa. Avainparia luotaessa luodaan tulevaisuutta varten myös mitätöintiavain hukkumista tai salaisen avaimen paljastumista varten. Mitätöintiavain(Revocation key) voidaan tulostaa paperille ja tallentaa varmaan paikkaan offline.
Luku 3 PGP 3.1 PGP PGP (PrettyGoodPrivacy) ohjelman kirjoitti alunperin Phil Zimmerman (1991). Nykyään ohjelmaa markkinoi PGP Corporation. 1 OpenPGP on standardi, joka syntyi tarpeesta saada PGP vapaaksi silloisista Diffie-Hellman ja RSA-lisensseistä. Nyttemmin näiden algoritmien patentti on rauennut (D-H 1997, RSA 2000). Näiden lisäksi on huomattavaa, että IDEA-algoritmin patentti vanheni 2007, joten on odotettavissa, että sitä käyttäviä vapaita sovelluksia alkaa ilmestyä. GnuPG seuraa OpenPGP standardia (RFC4880). 3.2 Luottosuhteet 3.2.1 Hierarkia, (SSL) Hierarkinen järjestelmä, jossa ylempi taho allekirjoittaa alemman portaan avaimia. Käytössä x509- varmenteissa (https, SSL, S/MIME). Tunnetut kaupalliset ylemmän tahon juurivarmentajat tulevat yleensä valmiina mukana käyttöjärjestelmän, selaimen tai javaympäristön asennuksessa. Muut ylemmän tason juuret joudutaan tuomaan systeemin sisälle erikseen samalla varmentaen niitten oikeellisuus. Luottamus perustuu siihen, että ollaan varmistettu tai ollaan valmiita luottamaan hierarkian ylimpään myöntäjään ja mahdollisiin väliportaan myöntäjiin. Avainten hallinta tapahtuu keskitetysti hierarkiassa. KUVA hierarkia 3.2.2 Web-of-Trust, (PGP) Tahot voivat varmentaa toistensa avaimia, ilman ylempää organisointia. Web-of-Trust (WoT) on käytössä oletuksena OpenPGP järjestelmässä, vaikka käyttäjä voi käyttää hierarkista tai suoraakin luottamusmallia 2. Kukin käyttäjä rakentaa oman luottamusverkostonsa ja huolehtii itse avaimistaan. Luottamus toiseen käyttäjään voidaan perustaa siihen, onko kahden avaimen välillä ketju luotettuja muita avaimia ja/tai onko ketjuja monta kappaletta käyttäjien välillä. Webistä löytyy palveluita, jotka kertovat kuinka monen askeleen päässä kaksi käyttäjää ovat toisistaan. Ne perustuvat siihen, kuinka hyvin osapuolet liittyvät ns. vahvaan renkaaseen, joka koostuu niistä käyttäjistä, joilla on monta linkkiä. 3 KUVA weboftrust 1 Zimmermann on edelleen täällä konsulttina 2 http://www.imc.org/ietf-smime/archive1/msg02295.html 3 http://pgp.cs.uu.nl/mk path.cgi 9
10 LUKU 3. PGP 3.3 Avainpalvelimet GPG Internetistä löytyy avainpalvelimia, joihin voi tallentaa julkisen avaimensa. Nämä palvelimet ovat verkottuneet keskenään, joten muutos yhteen leviää muihin palvelimiin. Palvelimia ei ole pakko käyttää, mutta voi käydä niin, että jossain välissä joku pahaa tarkoittamaton henkilö allekirjoittaa sinun avaimesi ja lähettää allekirjoitetun avaimesi itse näille palvelimille. Avainpalvelin webistä http://pgp.mit.edu. 3.4 Avaimen varmistus Sähköisesti noudettu julkinen avain täytyy tarkistaa jollain tavalla. PKI-työkaluissa on sisäänrakennettu tapa näyttää tiivistesumma avaimesta, joka täytyy tarkistaa. Tarvitset siis 3 tietoa: varmistus, että haluttu avain vastaa haluttua tietoa, henkilöä tai palvelinta, yleisesti CN (common name) tai Username (sähköposti) avaimen tiivistesumma (fingerprint tai hash-arvo) muualta hankittuna itse julkinen avain Tiivistesummia on kokonsa puolesta helppo printata mukaan tai julkaista vaikka sanomalehdessä. Palstamillimetriä ei mene paljon hukkaan, jos iso organisaatio ilmoittaa etukäteen julkaisevansa käyttämänsä PKI-järjestelmän juuritiivisteet tietyn päivän paikallislehden henkilökohtaista sivulla. Näin on tehnyt esim. Internet-käyttäjät ikuisesti IKI ry julkaistessaan juurivarmenteen Helsingin sanomissa. 3.5 Avaimen allekirjoitus Koska PGP:n Web-of-trust lähtee liikkeelle nollasta, täytyy sinun saada jostain luottamusta avainparillesi. Luottamusta kerätään autentikoimalla toisia käyttäjiä ja liittämällä tämä tarkistus sähköisesti heidän julkiseen avaimeensa. Operaatiota kutsutaan avaimen allekirjoitukseksi. Luottamusta kasvatetaan myös toiseen suuntaan. Kun tunnistutat itsesi muilla, voit saada heiltä tunnustuksen (allekirjoituksen) siitä, että he ovat tarkistaneet sinut kertaalleen asianmukaisesti. Avaimen allekirjoitukseen tähtäävä tapahtuma on oltava kiireetön. Avaimia ei suositella allekirjoitettavaksi saman tein, vaikka tapahtumia kutsutaankin nimellä key-signing party, vaan myöhemmin rauhassa. Julkinen avain allekirjoitetaan sinun omalla salaisella avaimella, siksi salaisen avaimen aukaisu ja käyttö kiireessä ja salasanan syöttö julkisesti eivät ole suotavaa. 3.6 Peruskäyttö GnuPG 3.6.1 Avainparin luonti ks http://www.khdrive.fi/linkku/index.php/keycreation gpg --gen-key Tämä luo hakemiston.gnupg ja sen sisälle avainrenkaat secring.gpg ja pubring.gpg 3.6.2 PGP avaimen julkaisu 3.6.3 PGP avaimen haku Julkisia PGP avaimia voi hakea suoraan avainpalvelimelta, 236d9400 on avaimen ID gpg {--keyserver subkeys.pgp.net} --recv-key 236d9400
3.6. PERUSKÄYTTÖ GNUPG 11 ascii filestä (kaverin-julkinen-avain.asc) gpg --import kaverin-julkinen-avain.asc 3.6.3.1 Oman avainnipun päivitys Haetaan päivittyneet avaimet (niiden allekirjoitukset) gpg --refresh-keys 3.6.3.2 Avainpalvelimen tiedon päivitys HUOM. käytä tätä ajatuksen kanssa ja mieluiten vain oman avaimesi kanssa. gpg --send-keysx 124DF2211 3.6.4 PGP-avaimen allekirjoitus interaktiivisesti Nouda ensin tavalla tai toisella allekirjoitettavat avaimet avainrenkaaseesi, joko julkisilta palvelimilta tai Biglumberista. josta löytyy 5 kappaletta kahdeksasta avaimesta, tai muulla tavoin saamallasi metodilla (usb-tikku, sähköposti tms). Sano vaikka wget "http://biglumber.com/x/web?keyring=5687;download=1" -O linkku.gpg gpg --import linkku.gpg Vertaa saatua tietoa fyysisesti saamaasi sormenjälkeen keysigning tapahtumasta. Vertaa käyttäjän nimitiedot ja sormenjälkimerkkijono. gpg --fingerprint 236d9400 Kun olet varmistanut allekirjoituksen, anna komento gpg --edit-key 236d9400 gpg (GnuPG) 1.4.6; Copyright (C) 2006 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. pub 1024D/236D9400 created: 2006-08-23 expires: never trust: unknown validity: unknown sub 2048g/CC42C7D0 created: 2006-08-23 expires: never [ unknown] (1). Riku Itapuro (Work) <riku.itapuro@tamk.fi> [ unknown] (2) Riku Itapuro (Privat) <riku.itapuro@iki.fi> usage: SC usage: E Command> fpr pub 1024D/236D9400 2006-08-23 Riku Itapuro (Work) <riku.itapuro@tamk.fi> Primary key fingerprint: A4B2 936C E01E 9FEC 10FE 441F 7F09 442C 236D 9400 Command> sign Really sign all user IDs? (y/n) y pub 1024D/236D9400 created: 2006-08-23 expires: never usage: CS trust: unknown validity: unknown Primary key fingerprint: A4B2 936C E01E 9FEC 10FE 441F 7F09 442C 236D 9400 Riku Itapuro (Work) <riku.itapuro@tamk.fi> Riku Itapuro (Privat) <riku.itapuro@iki.fi> Are you sure that you want to sign this key with your
12 LUKU 3. PGP key "rootuser <root@temporal>" (1144DACC) Tässä tarjotaan vielä mahdollisuus tarkistaa fingerprint. You need a passphrase to unlock the secret key for user: "rootuser <root@temporal>" 1024-bit DSA key, ID 1144DACC, created 2008-05-04 Enter passphrase: 412421aADSF-:.fesFa- sefj Command> save Vasta save tallentaa allekirjoituksesi public renkaaseen. temporal:~# gpg --list-sig 236d9400 gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 1 trust: 0-, 0q, 0n, 0m, 0f, 1u gpg: depth: 1 valid: 1 signed: 0 trust: 1-, 0q, 0n, 0m, 0f, 0u pub 1024D/236D9400 2006-08-23 uid Riku Itapuro (Work) <riku.itapuro@tamk.fi> sig [..] sig 1144DACC 2008-05-04 rootuser <root@temporal> 3.6.5 Signing in nutshell 1. Tarkista paperilistastasi, että kyseisen henkilön kohdalta olet varmasti tarkistanut henkilöllisyyden 2. Anna komento: gpg ask-cert-level sign-key (avaimen ID) 3. gpg kysyy haluatko allekirjoittaa kaikki avaimen identiteetit (sähköpostiosoitteet). 4. Vastauksesi jälkeen gpg näyttää avaimen fingerprintin, joka viimeistään tässä vaiheessa tulee tarkistaa, ellei sitä ole jo tehnyt aiemmin. 5. GPG kysyy nyt, kuinka tarkan tarkistuksen olet tehnyt, tämä on subjektiivinen käsitys, 0-3. 6. gpg varmistaa haluatko varmasti allekirjoittaa avaimen, jos olet varma niin vastaa kyllä 7. Syötä oma passphrase salaiselle avaimellesi 8. kommennon save jälkeen avain on signattu salaisella avaimellasi 3.6.6 Easier signing Kannattaa tutustua Debian/Ubuntu ohjelmaan caff, joka tulee ainakin Debianissa paketissa signingparty. Ohjelma automatisoi avainten allekirjoitusta. Parametreiksi sille annetaan nippu avainid nimiä. Ohjelma hakee julkiselta avainpalvelimelta julkiset avaimet, näyttää niiden fingerprintit, kysyy luottamuksen käyttäjältä, allekirjoittaa avaimet ja lähettää ne salattuna vastaanottajalle. Mikäli vastaanottaja saa ne auki, on testattu Sähköpostiosoitteen ja avaimen yhteensopivuus. Tämän voi nähdä myöhemmin päivittämällä avainnippuaan.
3.7. TIEDOSTON SALAUS JA ALLEKIRJOITUS, GPG 13 On huomattava, että caff käyttää omaa avainrengassettiään, joten ohjelmalle on luotava oma gpg-roothakemisto, esim..caff hakemiston alle ja määritellä caffrc tiedostoon sen sijainti. Salaisen avainrenkaan sijainti täytyy kertoa, samoin ne allekirjoitettavat julkiset avaimet, joita ei löydy julkisilta avainpalvelimilta tulee importata caffin käyttämään avainrenkaaseen. 3.7 Tiedoston salaus ja allekirjoitus, gpg Tiedoston salaus on pohjana myös sähköpostin salaukselle, siksi sen toiminta voidaan käydä tässä läpi. Salaan tärkeän pdf-tiedoston Phil Zimmermanin luettavaksi ja allekirjoitan sen. Allekirjoituksessa kysytään minun salaisen avaimen salalauseketta. Ohjelma varoittaa, ettei ole varmaa, että vastaanottajan julkinen avain kuuluu varmasti nimetylle käyttäjälle ks. Avainvarmistus. Tässä ei tehdä mitään sähköpostikäsittelyä vaan ainoastaan salataan ja allekirjoitetaan. Sähköpostiohjelmissakin PGP on tuotu mukaan erillisenä laajennuksena ja taustalla käytetään ohjelmaa gpg. ritait@muru64: > gpg -es -r prz@pgp.com salaus.pdf You need a passphrase to unlock the secret key for user: "Riku Itapuro (Work) <riku.itapuro@tamk. DSA key, ID 236D9400, created 2006-08-23 gpg: 42F0A0A0: There is no assurance this key belongs to the named user pub 2048g/42F0A0A0 1997-04-07 Philip R. Zimmermann <prz@pgp.com> Primary key fingerprint: 17AF BAAF 2106 4E51 3F03 7E6E 63CB 691D FAEB D5FC Subkey fingerprint: F001 2A56 F81A AD23 C0B0 CD64 92BF E127 42F0 A0A0 It is NOT certain that the key belongs to the person named in the user ID. If you *really* know what you are doing, you may answer the next question with yes. Use this key anyway? (y/n) y ritait@muru64: > ls -l salaus.pdf* -rw-r--r-- 1 ritait ritait 275547 2008-06-03 21:36 salaus.pdf -rw-r--r-- 1 ritait ritait 179560 2008-06-04 00:54 salaus.pdf.gpg Salaus (-encryption) ja allekirjoitus(-sign) on annettava molemmat, mikäli halutaan salata 4. -r kertoo vastaanottajan. Parametri voi olla joko vastaanottajan avaimen ID tai identifioiva sähköposti. Tuloksena saadaan kryptattu,.gpg päätteinen tiedosto, joka voi olla pienempi kuin alkuperäinen kuten tässä, sillä salauksessa käytetään pakkausta. Salattua viestiä ei saa auki kuin vastaanottajan avainparin toisella puoliskolla. Tässä minulla oli käytössä Phil Zimmermanin julkinen avain, mutta ei salaista. Mikäli haluan säilyttää itselläni kopion lähtevästä viestistä, minun tulisi tallentaa viesti ensin itselleni ennen salausta, tai salata se myös minun omalla julkisella avaimella. 3.8 Kuoletus (revokointi) Tulevaisuutta varten kannattaa generoida etukäteen valmiiksi lyhyt kuoletusavain: gpg --gen-revoke 1123DDFA Jos käy köpösti, avain hukkuu tai sen turva häviää, tuon lähettämällä avainpalvelimelle antaa omalle avaimellensa kuolon niitin. Tämän operaation voi myös antaa toiselle henkilölle tehtäväksi jollakin tavalla, tästä oli puhetta Linkku tapaamisessa, lisätietoja vaikka Janne I:ltä. Esim. jos henkilö kuolee itse, ei hänellä välttämättä ole mahdollisuuksia lähettää tuota itse. 3.9 advanced 3.9.1 trust signing Vaihtoehtoisesti, mikäli haluat merkitä allekirjoitukseen tiedon, kuinka tarkasti olet tarkistanut avaimen, GPG tarjoaa komennon tsign 4 Tämä on suositus mahdollisesti jonkun pgp:n turvaongelman takia
14 LUKU 3. PGP How carefully have you verified the key you are about to sign actually belongs to the person named above? If you don t know what to answer, enter "0". (0) I will not answer. (default) (1) I have not checked at all. (2) I have done casual checking. (3) I have done very careful checking. Tämä tieto näkyy tulevaisuudessa vastapuolen allekirjoituksissa, mikäli se on jotain muuta kuin 0. Versiossa 1.4.1 versiossa tätä ei vielä ollut mukana, mutta versiossa 1.4.2 on. 3.9.2 aikanotaaripalvelut Palvelu, joka allekirjoittaa sille lähetetyt tiivisteet omalla aikaleimallaan. Kätevä, mutta ei kovin tunnettu.
Luku 4 SSL 4.1 SSL SSL (SecureSocketLayer) on kuljetuskerroksella toimiva suojausprotokolla, jonka kehitti Netscape. Nyt versiossa 3.0 puhutaan TransportLayerSecurity eli TLS protokollasta, joka kuvaa OSI-kerrosta, jolla protokolla toimii. Tavallisimmin SSL:ää käytetään http-protokollan suojaamiseen, mutta sillä voi salata ja tunnistaa muitakin palveluita tai käyttäjiä. Varmenteet ovat nimeltään x.509. Nimi viittaa hakmemistopalveluun X500, joka on jo jäänyt pois käytöstä. Sieltä on myös peruja esim. LDAP-hakemistopalvelun ou=organisaatio yksikkö, o=organisaatio, cn=common Name polut. 4.2 Juurivarmentajat SSL 4.3 Kuoletuslista CRL Lista sertifikaateista, jotka on kuoletettu. Listan ylläpito kuuluu CA:lle, joka sertifikaatit alunperin myöntää. Sertifikaattien käyttäjien vastuulla on käydä tarkistamassa täältä onko sertifikaatti voimassa (vrt. kaupassa kortilla maksaminen ja maksupäätteen soitto luottokuntaan.) Ongelmana jälleen se, että CRL-listojen sijainteja on yhtä monta kuin varmentajiakin. 4.4 OCSP Palvelu, joka tarjoaa kevyemmin tiedon siitä, onko sertifikaatti ajantasalla. Vastauksena käyttäjä saa vain arvon Good, revoked, unkown tai virhekoodin. 1 4.5 EVSSL SSL-varmenteita voi myöntää kuka tahansa, mille nimelle tahansa ja selain näyttää niissä lukon kuvaa symbolina turvallisuudesta. Toki yhteys on tällöin salattu ja käyttäjän tiedot kulkevat turvallisesti, mutta minne? Extended Validation SSL pyrkii tiukentamaan varmenteiden myöntöprosessia vaatimalla normaalia enemmän tietoa varmenteen hakijan laillisesta olemassaolosta. Käyttäjälle näytettäisiin URL vihreällä värillä ja sertifikaatin myöntäjä ja Organisaatio näkyisivät vuorotellen osoitepalkissa. EV-sertifikaatit maksavat enemmän kuin normaalit, noin 200 dollariset sertifikaatit. Mielestänä menetelmä ei tuo mitään uutta, ellei käyttäjää haluta pelotella sillä, että vain vihreä osoiterivi on turvallinen. Kieltämättä ratkaisu voi tuoda lisää uskottavuutta; kunnes keksitään, että violetti väripä se kertoo, että tämä palvelin on ultra-turvallinen.. 1 http://en.wikipedia.org/wiki/online Certificate Status Protocol 15
16 LUKU 4. SSL Yhden vuoden SSL webpalvelinsertifikaattien hinta Myöntäjä normaali EV Thawte 249USD 899USD Sonera 100e N/A Verisign 399USD 1499USD CACert 0 N/A Taulu ei ole kaikin puolin vertailukelpoinen eri toimijoiden kesken, mutta ero normaalin ja EV sertifikaatin välillä on selvä. 4.6 SSL käyttö openssl komennolla on alikomentoja kaikkeen operointiin. Tuoteperheen tuotteilla pitäisi pärjätä aika pitkälle. 4.6.1 salaisen avaimen luonti openssl genrsa -out salainen.pem 1024 4.6.2 allekirjoituspyyntö openssl req -new -key salainen.pem -out pyynto.pem Tai jos avainta ei ollut ennestään olemassa, luodaan seuraavassa 1024-bittinen RSA-avain. openssl req -newkey rsa:1024 -keyout salainen -out pyynto.pem 4.6.3 allekirjoitus CA:n tehtävä on allekirjoittaa request juurivarmenteella. Tästä syntyy varsinainen sertifikaatti. openssl ca -in pyynto.pem -out varmenne.pem PEM on ei-binäärimuotoinen varmenneformaatti. DER olisi binäärimuotoinen ja sitä ei voi helposti kopioida kuvaruudulta. CA:n käyttö edellyttää, että CA-infra on rakennettu jo valmiiksi, eli olemassa on avain-, sertifikaatti-, sarjanumero- ja indeksitiedostot. CA julkaisema kuoletuslista tehdään komennolla openssl ca -gencrl -out crl.pem 4.6.4 codesigning Kukapa ei olisi ylpeä omasta koodistaan. Koodin allekirjoitusta vaaditaan useammassa ympäristössä; ajureissa, symbian ohjelmissa yms.
Luku 5 Sähköposti ja PKI 5.1 mutt tekstipohjainen sähköposticlient. PGP-laajennukset noudetaan.muttrc tiedostoon 1 set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f" set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f" set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f" set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmo set pgp_import_command="gpg --no-verbose --import -v %f" set pgp_export_command="gpg --no-verbose --export --armor %r" set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r" set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r" set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r" set pgp_sign_as=0x236d9400 set pgp_replyencrypt=yes set pgp_timeout=1800 set pgp_good_sign="^gpg: Good signature from" 5.2 Webmailit, joissa PKI 5.2.1 Horde Webmail-käytössä PGP on tuettu ainakin Hordessa, sinne käyttäjä voi tuoda oman avainparinsa käytettäväksi. 5.2.2 Freenigma Toisin on Freenigma 2 palvelussa, jossa Freenigma luo käyttäjälle uuden avaimen, (mozilla) selaimeen tulee laajennus ja työasemalla suoritetaan salaus ja purku ohjelmallisesti, vaikka avainhallinta on ulkoistettu Freenigman omalle palvelimelle. Käyttäjä ei saa itselleen salaista avainta suoraan vaan hän käyttää web-tunnistusta(salasanapari) Freenigma laajennuksen käyttöön. Tämänkaltainen palvelu on varmaan syntynyt tarpeesta saada yksinkertaisesti käytettävä palvelu ja se ei varmaankaan ihan kaikkeen sovi. 1 http://mjb.gmxhome.de/stuff/muttrc 2 http://freenigma.com 17
18 LUKU 5. SÄHKÖPOSTI JA PKI 5.2.3 hushmail hushmail 3 toimii samankaltaisestai; salainen avain on tallennettu etäpalvelimella, mutta suojattu salasanalla. Tämän kaltaista web-pohjaista palvelua taisi joku kotimainenkin yritys tarjota. Tähän tulee nimi jos muistan tuon. 5.3 Mozilla-perheen enigmail-laajennus Mozillaan sähköpostisuiteen ja Thunderbirdiin(IceDove) saa laajennuksen nimeltään Enigmail, joka käyttää GnuPG:tä taustalla. Todennäköisesti myös SeaMonkey (IceApe) toimii. Mahdollista on käyttää myös omia henkilökohtaisia varmenteita S/MIME puolella. Sekä softapohjaiset, että Smartcard varmenteet toimivat. 5.4 muut Evolution(ok), Kmail(ok), testattu 3 http://www.hushmail.com
Luku 6 Miksi nähdä vaivaa? Onko tähän kaikkeen sitten syytä laittaa paukkuja? Eikö koko hoito vaikuta turhan monimutkaiselta tavalliselle käyttäjälle, jolla ei ole mitään salattavaa? Nehän ovat rikollisia, jotka haluavat salata toimiansa? (Sähköisen) Yksityisyyden turvaamiseen on panostettava enemmän ja erilaisiin toimintatapoihin on tutustuttava senkin takia, että ala on uusi, eikä loppuun asti hiottuja helppoja malleja vielä ole kehitetty. Me olemme, ellemme 1. polven, niin ainakin toisen polven käyttäjiä alalla, jota ei vielä ollut 50 vuotta sitten. Tosin tuntuu, että silloin kaikki oli paremmin. Tuolloin osattiin luontevasti piilottaa postiviestit kirjekuoriin. Jokainen tiesi että puhelinkeskuksen sentraalisantra tiesi koko kylän asiat, eikä kaikkea kerrottu puhelimella, allekirjoituksia vaadittiin kaksin kappalein ja tärkeät paperit vahvistettiin notaarilla. Tänä päivänä sähköpostitse kulkee tärkeitä viestejä ilman, että monikaan tietää, että postipalvelimien ylläpitäjät, joita voi olla ketjussa monta eri organisaatioista voivat helposti lukea viestin sisällön. Sillä ettei se ole sallittua ei ole tekemistä sen kanssa, että se on teknisesti mahdollista. Lisäksi yksityisyyden merkitystä voi miettiä kun kaupan kassalla kehotetaan näyttämään osuuskuntatai jäsenkortti, ennen kuin asiakas saa maksaa ostoksensa. Ostostiedot luultavimmin jäävät vielä hyödyntämättä, mutta joku päivä voi avautua nettipalvelu, josta näet mitä naapurisi osti viime perjantaina T-kaupasta. Tiedot voivat tosin vuotaa vahingossa julkisiksi jonkun tukun tietomurron yhteydessä. Webissä rekisteröidytään viikottain uuteen palveluun omilla tunnuksilla ja syötetään sinne se sama salasanakala, joka tuli keksittyä viime viikolla toiseen palveluun rekisteröityessä. Sähköisen identiteetin kehittämiseen menee paljon energiaa. Se ei ole kuitenkaan hukkaan heitettyä, vaikka lehdistö tuntuu syyttävän kovasti tänä päivänä esim. valtionhallinnon päällekkäisiä tunnistuspalveluiden ratkaisuja, joihin on kulunut 40 miljoonaa euroa 1. Tuo on minun mielestäni pikkurahaa, sillä ongelmat sähköisessä tunnistuksessa ovat laajoja, eikä monelta puolelta tutkiminen haittaakaan. Ehkä tässä uutisoinnissa ilmeisesti on haettu sitä, että eri toimijat olisivat kenties yhteistyöllä voineet säästää ja saada parempaa lopputulosta nopeammin. VRK-korttihankekin on haukuttu lyttyyn monta kertaa, vaikka sen hyödyntäminen voi olla kiinni vain melko yksinkertaisesta laajenuksesta vaikka web-palveluun ja niin yksinkertaisesta asiasta kuin lukijalaitteesta. 6.1 Lisätietoa http://www.tol.oulu.fi/~avesanen/langaton TT/luennot/johdanto/PKI.html http://khdrive.fi/linkku/index.php?title=keycreation http://khdrive.fi/linkku/index.php?title=keysigning http://cacert.org/ 1 lähde: Tietoviikko, Tuomas Hämäläinen http://www.tietoviikko.fi/doc.do?f id=1358859 19
20 LUKU 6. MIKSI NÄHDÄ VAIVAA? http://www.philzimmermann.com/