Turvallinen sähköposti

Veikko Siivola 74230U
vjs@cc.hut.fi
12. marraskuuta 1997

Tietoliikennearkkitehtuurit, 7. kotitehtävä

  1. Johdanto
  2. Postinvälitysprotokollat
  3. Turvallisuuteen kohdistuvat uhat
  4. Salakirjoitus
  5. Avainten hallinta
    1. Avainten varmennus
    2. Keskitetty avainten hallinta
    3. Hajautettu avainten varmennus
  6. Ohjelmistoja ja standardeja
    1. PGP
    2. PGP-apuohjelmia
    3. PEM
    4. MIME ja turvallisuus
  7. Johtopäätöksiä

Johdanto

Sähköposti ei ole kovin turvallinen. Se ei takaa viestien luottamuksellisuutta, eheyttä eikä varmuutta viestin oikeasta lähettäjästä. Postin välitysprotokolliin ei alunperin ole suunniteltu mitään turvaominaisuuksia. Näihin ongelmiin on kehitetty useita ratkaisuja. Sähköpostiviestien digitaaliseen allekirjoitukseen ja salaukseen on olemassa useita erilaisia menetelmiä. Sähköpostin turvaamiseen voidaan käyttää tehokkaita salakirjoitusmenetelmiä. Kerron tässä joistakin tällaisista ratkaisuista.


Postinvälitysprotokollat

Internetissä sähköpostia välitetään SMTP-protokollalla. Protokolla on yksinkertainen ja se määrittelee, miten sähköpostiviestejä lähetetään. Protokolla ei sisällä minkäänlaista autentikointia eikä lähettäjän varmennusta. Postia lähetetään ottamalla yhteys vastaanottajan SMTP-porttiin. Yhteys aloitetaan HELO-komennolla, jonka argumenttina on koneen nimi. Vastaanottaja vastaa siihen tervehdyksellä kertoen oman identiteettinsä. Postin lähetys aloitetaan komennolla MAIL FROM, jonka argumenttina on lähettäjän osoite [1]. Tätä lähettäjän osoitetta ei tarkisteta, joten postin lähetys väärällä nimellä on helppoa.

POP-protokolla (Post Office Protocol) on suunniteltu postin vastaanottoon [2]. Siinä ei ole tällaisia turvallisuusongelmia. Koska protokollassa lähetetään käyttäjätunnus ja salasana salaamattomina verkon läpi postipalvelimelle, joku voi verkkoa salakuuntelemalla saada salasanan selville ja sitä käyttäen päästä myöhemmin lukemaan käyttäjän postia. Myös lähetettävien ja vastaanotettavien viestien sisältöä on mahdollista kuunnella, kun niitä siirretään verkossa.

Vanhoina hyvinä aikoina sähköpostin lähetysosoitteen väärennys vaati hiukan hakkerin taitoja. Piti tuntea hiukan SMTP-protokollaa ja osata ottaa telnet-yhteys postikoneen SMTP-porttiin. Nyt sitäkään ei tarvitse osata. Netscape ja Microsoft ovat tehneet sen myöhemmin niin helpoksi, että se onnistuu melkein jokaiselta, joka osaa käyttää WWW-selainta.


Turvallisuuteen kohdistuvat uhat

Sähköpostiviestien turvallisuuteen kohdistuu erilaisia uhkia. Sanoman luottamuksellisuus ei aina ole kovin hyvin varmistettu. Kun viesti on matkalla, sen sisältöä voi lukea salakuuntelemalla verkkoa. Postia välittävissä koneissa viesti on riittävillä oikeuksilla varustetun käyttäjän luettavissa.

Viestin lähettäjästä ei voida olla varmoja. Onko viestin lähettänyt todella se henkilö, joka väittää lähettäneensä sen. Kuten edellä mainittiin, postinvälitysprotokollat eivät tarjoa lähettäjän luotettavaa varmennusta.

Viestin sisällön eheys olisi myös voitava varmistaa. Voidaanko olla varmoja siitä, ettei kukaan ole muuttanut sähköpostiviestin sisältöä matkalla. Ratkaisu tähän ongelmaan on digitaalisen allekirjoituksen käyttö. Sillä voidaan myös varmentaa viestin lähettäjä.

Nämä ongelmat eivät ole ainoastaan sähköpostille ominaisia. Niiden kanssa joudutaan tekemisiin muissakin sovelluksissa. Näihin ongelmiin on kehitetty monia erilaisia ratkaisuja, joita voidaan käyttää myös sähköpostin turvaamiseen.

Sähköpostijärjestelmät eivät takaa 100-prosenttista viestien perillemenoa. Viestit menevät yleensä perille, mutta niitä voi joskus kadota, kun tulee jotakin häiriötilanteita. Tietoliikenneyhteydet voivat olla poikki tai postia vastaanottavan koneen levy voi täyttyä. Jos viestiä ei voida toimittaa perille, siitä lähetetään viestin lähettäjälle yleensä virheilmoitus, mutta sekin voi joskus epäonnistua.


Salakirjoitus

Sähköpostin lähettäminen salaamattomana voidaan rinnastaa turvallisuuden kannalta postikortin lähettämiseen. Postikortissa olevan viestin voi lukea postinkantaja tai kuka tahansa korttia käsittelevä työntekijä. Samoin salaamaton sähköpostiviesti on mahdollista lukea. Sen pystyy lukemaan postijärjestelmän ylläpitäjä tai tietoliikenneverkon ja postinvälityskoneiden liikennettä valvova henkilö. Jos sähköpposti salakirjoitetaan, viestin turvallisuus voidaan rinnastaa kirjekuoreen suljetun kirjeen turvallisuuteen. Kirjeessä olevaa viestiä eivät postin työntekijät näe. Samoin salakirjoitetun sähköpostin sisältöä eivät ulkopuoliset voi lukea. Vahvoilla salausslgoritmeilla viestin lukeminen voidaan tehdä sivullisille käytännössä mahdottomaksi.

Sähköposti voitaisiin salata jollakin tehokkaalla salausmenetelmällä, kuten DES tai IDEA-algoritmilla. Nämä ovat salaisen avaimen alogitmeja. Viestin lähettäjän ja vastaanottajan pitää tietää yhteinen avain, jolla viestit salataan ja puretaan. Avainten hallinnasta ja jakelusta tulee helposti ongelma. Salausavaimet on voitava jotenkin turvalisesti jakaa käyttäjille.

Julkisen avaimen salakirjoitusmenetelmissä viestin salaukseen ja purkuun käytetään eri avaimia. Käytössä on salainen ja julkinen avain. Jos Alice haluaa lähettää viestin Bobille, hän salaa viestin Bobin julkisella avaimella. Kun Bob haluaa lukea viestin, hän purkaa salauksen omalla salaisella avaimellaan ja voi sitten lukea sen. Vain Bob voi lukea sen, koska vain hänellä on salainen avain tiedossa. Bobin ja Alicen julkset avaimet ovat kaikkien tiedossa. RSA (Rivest-Shamir-Adleman) on yksi tunnetuimpia julkisen avaimen salausalgoritmeja. Se on saanut nimen kehittäjiensä mukaan.

Jos Alice salaa viestin omalla salaisella avaimellaan ja lähettää sen Bobille, Bob voi purkaa sen Alicen julkisella avaimella. Jos purku onnistuu, Bob voi olla varma siitä, ett viestin on lähettänyt Alice eikä kukaan muu. Vain Alice on voinut salata tämän viestin omalla salaisella avaimellaan. Näin voidaan toteuttaa digitaalinen allekirjoitus. Jos joku on muuttanut tätä viestiä matkalla, sekin paljastuu, eikä viestin purku enää onnistu oikein.


Avainten hallinta

Käytettäessä julkisen avaimen salausmenetelmiä avainten turvallinen jakelu ja hallinta ei ole niin vaikea ongelma kuin salaisen avaimen menetelmissä. Alice ja Bob voisivat vaihtaa julkiset avaimensa tapaamalla henkilökohtaisesti. Se on turvallinen tapa, mutta on epäkäytännöllinen, jos on vaihdettavana suuri määrä avaimia.

Julkisen avaimen voisi julkaista WWW-sivulla. Sekään ei ole kovin turvallinen menetelmä. Hakkerit voivat onnistua murtautumaan WWW-palvelimeen ja muuttelemaan sivuja. Paljon parempi ratkaisu on julkisten avainpalvelinten käyttö. Tällaisia avainpalvelimia on perustettu PGP:n julkisten avainten jakelua varten.

Avainten varmennus

Jotta avainpalvelimella tai julkisessa hakemistossa olelvan avaimen aitous voitaisiin varmistaa, avaimiin tarvitaan jonkin luotettavan tahon digitaalinen allekirjoitus. Muuten kuka tahansa voisi lähettää avainpalvelimelle avaimen jonkun toisen nimissä ja myöhemmin lukea tälle toiselle ihmiselle tarkoitettuja viestejä. Avainten varmennus voi olla joko keskitetty tai hajautettu.

Keskitetty avainten hallinta

Keskitetyssä avainten hallinnassa tarvitaan joku luotettava taho, joka allekirjoittaa digitaalisesti kaikki palvelimelle sijoitettavat julkset avaimet. Esimerkiksi PEM (Privacy Enhanced Mail) on tällainen Internet-postin turvaamiseen liittyvä suositus. Sen määrittelemiä palveluita ovat avainten varmennus, peruutettujen avainten lista ja listan jakelu. Avainten varmennusten jakelu ja peruutus ovat palveluita, joiden toteutuksen varmennuksesta vastaavat viranomaiset voivat määritellä [3].

Valtiolla on suunnitelmissa antaa kansalaisille sähköinen henkilökortti. Kortilla olisi digitaalista allekirjoitusta ja salausta varten julkinen ja salainen avain. Näiden avainten varmennus olisi hierarkista. Valtiolla on viranomaisia, joille on annettu valtuudet myöntää kortteja. Nämä viranomaiset varmentavat kortille luotavat julkiset avaimet, jotka sijoitetaan myös viranomaisten ylläpitämiin hakemistoihin. Salainen avain jäisi vain kortille. Näitä avaimia voitaisiin käyttää sähköpostin salaamiseen ja allekirjoittaamiseen. Se sopisi hyvin viranomaisten kanssa asiointiin, esimerkiksi veroviraston tai terveyskeskuksen lääkärin kanssa.

Hierarkisessa byrokraattisessa avainten varmennuspolitiikassa on joitakin ongelmia. Jos avainten varmentajan tietoturva vaarantuu ja allekirjoituksessa käytettävät salaiset avaimet joutuvat väriin käsiin, koko järjestelmän luotettavuus on menetetty. Jos joku viranomainen on jostakin syystä epäluotettava, koko järjestelmän luotettavuus on silloinkin menetetty. Ihmiset eivät voi varmentaa toistensa avaimia vaan sen voi tehdä vain viranomainen, jolla on siihen valtuudet.

Hajautettu avainten varmennus

Hajautetussa avainten varmennusmenettelyssä ei ole yhtä ainoata viranomaista, joka voi varmentaa avaimia. Ihmiset voivat varmentaa toistensa avaimia omalla digitaalisella allekirjoituksellaan. PGP on tästä hyvä esimerkki. Kun Bob haluaa lähettää viestin Alicelle, hän tarvitsee Alicen julkisen avaimen. Hän hakee sen joltakin avainpalvelimelta. Bob tuntee Davidin ja hän on saanut Davidilta henkilökohtaisesti julkisen avaimen. Alice ja David ovat joskua tavanneet ja vaihtaneet julkisia PGP-avaimia. Jos nyt Bob huomaa, että David on allekirjoittanut omalla avaimellaan Alicen julkisen avaimen, hän voi varmistua siitä, että avain kuuluu Alicelle. [4]

Ihmiset voivat itse päättää, kehen luottavat avainten esittelijöinä ja allekirjoittajina. Jos Bill on allekirjoittanut avaimia ja hän osoittautuu myöhemmin epäluotettavaksi, hänen allekirjoituksiinsa ei enää luoteta. Se ei kuitenkaan vaaranna kaikkien avainten luotettavuutta.


Ohjelmistoja ja standardeja

PGP

PGP (Pretty Good Privacy) on Phil Zimmermanin kehittämä julkisen avaimen salakirjoitusohjelma. Se on suosituin ohjelma turvallisen sähköpostin toteuttamiseen. PGP tarjoaa mahdollisuuden viestin salakirjoitukseen ja digitaaliseen allekirjoitukseen. PGP käyttää yhdessä salaisen avaimen ja julkisen avaimen salausta. Kun tiedosto salataan ja allekirjoitetaan PGP:lla, se tapahtuu useassa vaiheessa. Nyt on viesti saatu valmiiksi lähetystä varten. PGP voisi periaattteessa käyttää yksinään RSA-salausta. Se on kuitenkin paljon IDEA-algoritmia ja muita salaisen avaimen salausalgoritmeja hitaampi. Sen takia käytetään hybridisalausta, joka on näiden yhdistelmä. Vain IDEA-algoritmin käyttämä salausavain salataan RSA:lla. Näin voidaan yhdistää julkisen avaimen salauksen helppo avainten hallinta ja IDEA-algoritmin nopeus. PGP on saatavilla yleisimmille käyttöjärjestelmille.

PGP:n avaimessa on avaimen omistajan tunnus, avaimen luontipäivä ja varsinainen avaimen data. Julkiset avaimet kootaan yhteen tiedostoon avainrenkaaksi jonnekin käyttäjän omaan hakemistoon. Salaiset avaimet ovat toisessa avainrenkaassa. PGP:n käyttöä aloitettaessa on ensiksi luotava julkinen ja salainen avain. Julkisen avaimen voi julkaista vaikkapa WWW-sivulla ja lähettää jonnekin PGP-avainpalvelimelle.

PGP:n lisäämisestä MIME-tyypiksi on tehty joitakin suunnitelmia. PGP:lla voidaan salata ja suojata MIME-viestin osia. PGP:lla salattuja objekteja voidaan liittää MIME-viestin osiksi. Tarvitaan uusi MIME-tyyppi application/pgp.[5]

PGP-apuohjelmia

PGP:n käyttö sähköpostin kanssa ei ole ihan helppoa. Viesti pitää ensin salata pgp:lla ja sitten lähettää. Kun viesti on vastaanotettu, se pitää tallettaa postiohjelmasta tiedostoon ja erikseen purkaa pgp:lla. Tämä on hiukan kankeata. PGP:n käyttöä helpottamaan on tehty monia apuohjelmia. Helppokäyttöisten apuohjelmien puute in hidastanut PGP:n leviämistä laajaan käyttöön.

Nyt alkaa jo olla saatavilla helppokäyttöisiä apuohjelmia, joilla PGP:n toiminnot voidaan liittää saumattomaksi osaksi sähköpostiohjelmia. Niitä on saataville Unixiin, Windowsiin ja Macille.

Mailcrypt on elisp-kielellä kirjoitettu pgp-liittymä Gnu Emacsiin. Sen tarjoamia palveluita ovat viestin salaus, salauksen purku, allekirjoitus, allekirjoituksen tarkistus ja avainten hallinta. Ohjelma lisää Emacsin uutis- ja postiohjelmiin pgp-liittymän. Myös avainpalvelinten käyttö on sujuvaa ohjelmassa oleva HTTP-protokollaa käyttävän liittymän avulla.

Mapil on Pythonilla kirjoitettu ohjelma, jolla voi salata ja allerkirjoittaa MIME-viestejä. Kun sanom halutaan salata, Mapil salaa PGP:lla viestin ja liittää sen sitten osaksi MIME-viestiä. Ohjelma toimii PGP:n versioiden 2.6 ja 5.0 kanssa.

PgpEudora on laajennus Eudora-sähköpostiohjelmaan. Se lisää Eudoran työkalupalkkiin toiminnon, jolla voidaan käyttää PGP:ta viestien salaukseen, allekirjoitukseen ja purkuun. Ohjelma on liittymä WIndows-Eudoran ja PGP:n dos-version välillä. Käyttäjän ei enää tarvitse erikseen tallettaa tiedostoa ja ajaa dos-ikkunassa pgp:ta sen salausta varten.

PEM

Toinen menetelmä parantaa Internet-sähköpostin turvallisuutta on PEM (Privacy Enhanced Mail). Sen palveluita ovat salaus, autentikointi ja avainten varmennus. Viestin vastaanottajan autentikointia ei ole määritelty palveluun. Se on kevyempi kuin X400 ja sitä voidaan käyttää useimmissa sähköpostijärjestelmissä. Käytetyt salausalgoritmit sisältyvät myös määritykseen. Salauksessa ja autentikoinnissa käytetään DEA-1 -algoritmia, joka on ekvivalentti DES-algoritmin kanssa. Muitakin salausalgoritmeja voidaan käyttää, kunhan ne täyttävät seuraavat ehdot. Algoritmi on lohkosalausalgoritmi, joka salaa ja purkaa 64 bitin lohkoja. Sitä voidaan käyttää CBC- ja ECB-moodeissa. Sitä voidaan käyttää RFC:n 989 määrityksen mukaisilla avaimilla. Salausavaimen pituus on rajattu 128 bittiin. DEA-algoritmissa salausavaimen pituus on 56 bittiä kuten DES-algoritmissakin.[6]

Järjestelmä on yhteensopiva sellaisten postijärjestelmien kanssa, joissa ei ole tätä palvelua tarjolla. Viestien salausta ei toteuteta postinvälitysohjelmistossa vaan käyttäjien postiohjelmissa. Salaus toimii päästä-päähän periaatteella. Palvelu toimii sovellustasolla eikä siihen vaikuta alemman tason protokollissa käytettävät turvallsuutta parantavat menetelmät.[6]

MIME ja turvallisuus

MIME-määrityksissä on varauduttu sähköpostin turvallisuutta parantaviin ratkaisuihin. On määritelty uusia MIME-tyyppejä tällaisia palveluita varten. Se ei määrittele, miten sähköpostin turvallisuutta parannetaan. Se vain määrittelee otsikkotiedoissa käytettäviä MIME-tyyppejä erilaisille toteutuksille.

Kun vastaanottaja lukee postia, postiohjelma katsoo viestin otsikoista, mitä menetelmää viestin salaukseen on käytetty. Jos ohjelma tunnistaa menetelmän, se dekoodaa viestin sillä menetelmällä ja näyttää sen lukijalle. Jos menetelmä on tuntematon, viestiä ei voida näyttää. [7]

PGP:lle on jo määritelty MIME-tyypit. Niitä on määritelty muillekin salausmenetelmille ja voidaan tarpeen mukaan määritellä lisää.


Johtopäätöksiä

PGP:ssa avainten hallinta on hajautettua ja perustuu luottamusverkkoon, mutta PEM perustuu hierarkiseen avainten hallintaan. PEM on standardi eikä ohjelma. PGP sitä vastoin on ohjelma, mutta siitäkin ollaan tekemässä standardia.

Vaikka olisi käytössä hyvät vahvat salausmenetelmät sähköpostin ja tiedostojen salaamiseen, se ei vielä yksinään riitä takaamaan niiden turvallisuutta. Salausavaimet pitää valita hyvin ja niitä on myös säilytettävä siten, etteivät ulkopuoliset pääse niihin käsiksi.

PGP:n ja muiden ohjelmien salaisiin avaimiin on valittava hyvä vaikeasti arvattava tunnuslause, jota tarvitaan avaimen käyttöön. Jos avainrengas joutuu vääriin käsiin, hyvä tunnuslause suojaa sen väärinkäyttöä vastaan. Järjestelmän turvallisuus kokonaisuudessaan on yhtä heikko kuin heikoimman lenkin turvallisuus.

Valtion ja viranomaisten tarpeisiin soveltuu hyvin hierarkinen avainten jako ja varmennusmenetelmä. Sitä voidaan käyttää myös yksityisiin tarpeisiin, mutta PGP:n hajautettu epähierarkinen menetelmä on siihen hyvä ja usein parmepikin vaihtoehto. Silloin avaimet voi luoda itse ja varmistua siitä, ettei niitä ole kenelläkään muulla hallussa.


Viitteet

[1]
RFC 821, SMTP-protokolla ***
<URL:ftp://ftp.funet.fi/pub/standards/RFC/rfc821.txt>

[2]
RFC 1082, POP-protokolla **
<URL:ftp://ftp.funet.fi/pub/standards/RFC/rfc1082.txt>

[3]
RFC 1422 **
<URL:ftp://ftp.funet.fi/pub/standards/RFC/rfc1422.txt>

[4]
PGP-ohje ****
<URL:http://www.tcm.hut.fi/Opinnot/Tik-110.350/Tehtavat/pgp/PGPtext-v1.html#protect>

[5]
An Integration of PGP and MIME **
<URL:http://jupiter.aist-nara.ac.jp/~kazu/pgpmime.html>

[6]
RFC 989, Privacy Enhancement for Internet Electronic Mail **
<URL:ftp://ftp.funet.fi/pub/standards/RFC/rfc989.txt>

[7]
Security Multiparts for MIME: Multipart/Signed and Multipart/Encrypted **
<URL:ftp://ftp.funet.fi/pub/standards/RFC/rfc1847.txt>


Lisätietoja

FUNET PGP Public Key Server ****
<URL:http://www.cert.funet.fi/pgp/pks-toplev.html>

The Rivest-Shamir-Adleman (RSA) Encryption Algorithm ****
<URL:http://www.ee.mtu.edu/courses/ee465/groupa/index.html>

Henkilön sähköinen identiteetti ja Henkilökortti ***
<URL:http://www.tietotie.fi/vahti/sidrap1.html>

PGP ****
<URL:ftp://ftp.funet.fi/pub/crypt/cryptography/pgp/>

Internet-tietoturva ***
<URL:http://www.telmo.fi/sty/tturva/inetsec.htm>

Mailcrypt: An Emacs/PGP Interface ***
<URL:http://cag-www.lcs.mit.edu/mailcrypt/>

Mapil **
<URL:http://www-leland.stanford.edu/~bescoto/mapil>

PgpEudora manual **
<URL:http://www.xs4all.nl/~comerwel/pgpeudra/manual/manual0.html>

RSA ***
<URL:http://www.rsa.com/>

International Cryptographic Software Pages for Encryption, Decryption, nalysis, Steganography, and Related Methods ****
<URL:http://www.cs.hut.fi/crypto/>

Tätä sivua ylläpitää Veikko Siivola E-mail: Veikko.Siivola@hut.fi.
Sivua on viimeksi päivitetty 12.11.1997.
URL: http://www.hut.fi/~vjs/email-security.html