Sissejuhatus: tavaline meilivahetus
E-kirjade saatmiseks ja meiliserverite vaheliseks edastamiseks kasutatakse SMTP protokolli. E-kirjade vastuvõtmiseks kasutavad meilikliendid (näiteks MS Outlook, Thunderbird, Apple Mail, jne.) enamasti protokolle IMAP või POP3.
Juhul kui SMTP server kasutab STARTTLS, siis ei ole vaja meilikliendil kirjade turvaliseks saatmiseks porti vahetada, sest TLS/SSL kasutamine lepitakse kokku meilikliendi ja SMTP serveri vahel. Juhul kui SMTP serveri ei toeta STARTTLS, siis tuleks e-kirjade turvaliseks edastamiseks kasutada porti 465, see port on reserveeritud turvalise SMTP jaoks ehk SMPTS jaoks. SMTPS kasutab ühenduse turvamiseks kas SSL või TLS protokolli.
POP3 server kuulab porti 110. Juhul kui POP3 server toetab STARTTLS, siis on võimalik pordile 110 saadetav info krüpteerida kasutades protokolli TLS või SSL. Juhul kui POP3 server ei toeta STARTTLS, siis tuleks kasutada porti 995, mis on reserveeritud turvalise POP3 ühenduse jaoks.
IMAP lubab mitmel erineval meilikliendil korraga ühenduda ja tuvastada teiste meiliklientide poolt tehtud muudatusi. IMAP server kuulab porti 143. Juhul kui IMAP server toetab STARTTLS, siis on võimalik pordile 143 saadetav info krüpteerida kasutades protokolli TLS või SSL. Juhul kui IMAP server ei kasuta STARTTLS, siis tuleks turvalise ühenduse jaoks kasutada porti 993, mis on reserveeritud IMAPS jaoks.
Tavalise meilivahetusega seotud turvaprobleemid
E-kirjade edastamise protokollid ei ole algselt disainitud turvalisust ja privaatsust silmas pidades. Seega on vaikimisi e-kirjad turvamata, mis tähendab seda, et e-kirju edastatakse tavatekstina (neid ei krüpteerita). Mõningad SMTP serverid toetavad STARTTLS, mis võimaldab minna turvamata ühenduselt automaatselt üle krüpteeritud ühendusele, mis kasutab TLS protokolli. Siiski ei ole STARTTLS veel väga laialt levinud ja kui sellisel juhul meiliklienti ei sunnita kasutama turvaliseks meilivahetuseks mõeldud porti, siis edastatakse e-kirjad SMTP serverisse tavatekstina. Isegi kui nii meiliserver kui ka meiliklient toetavad TLS kasutamist, siis saab aktiivne ründaja takistada TLS kokkuleppimist. Niisugust rünnet on kirjeldatud artiklis: Neither Snow Nor Rain Nor MITM ... An Empirical Analysis of Email Delivery Security (2015).
Meilide edastamiseks ühest serverist teise kasutatakse meilide edastamise agenti ehk MTA-d. See agent tegeleb nii kirjade vastuvõtmise kui edastamisega ehk kasutab mõlemat SMTP funktsionaalsust. Oluline on see, et erinevad meilide edastamise agendid ei pea omavahel suhtlema TLS/SSL abil vaid võivad kasutada turvamata ühendust. Võib tekkida olukord kus on vaja edastada e-kiri meiliserverile, mis ei toeta TLS/SSL. Seega kui meiliklient saadab turvatud kujul esimesele meiliedastamise serverile e-kirja, siis ei ole garantiid, et seda kirja ei saadeta edasi tavatekstina. Isegi kui e-kiri edastatakse terve teekonna vältel TLS/SSL abil, siis ei saa vältida seda olukorda, et e-kirja edastav server ei loe kirja sisu. Seega on vaja e-kirjade saatmisel usaldada meiliedastamise agente.
Oluline on see, et e-kirjade päises olevat infot ei krüpteerita. Seetõttu on e-kirja metaandmed nagu näiteks saatja meiliaadress, saaja meiliaadress, saatja ip, vastuvõtja ip, kuupäev, kell, pealkiri avalikud. Need andmed on avalikud ja neid on kasutusel olevate protokollide tõttu raske varjata.
Tavalise meilivahetusega seotud riskid:
- kirjavahetuse salvestamine
- kirja sisu muutmine
- kirja levitamine
- identiteedivargus
Väga hea ülevaate meilivahetusega seotud probleemidest annab Google, Michigani ülikooli ja Illinoi ülikooli töötajate poolt kirjutatud artikkel Neither Snow Nor Rain Nor MITM ... An Empirical Analysis of Email Delivery Security (2015).
Kuidas lahendada tavalise meilivahetusega seotud probleeme?
Ideaalset lahendust eelnevalt kirjeldatud probleemidele ei ole praegu olemas. Parimad olemasolevad lahendused kasutavad otspunktkrüpteerimist (end-to-end encryption). Otspunktkrüpteerimise korral krüpteeritakse sõnum saatja arvutis ja dekrüpteeritakse alles vastuvõtja arvutis, sõnumi vahendajad ei saa sõnumit dekrüpteerida. E-kirjade otspunktkrüpteerimiseks kasutatakse sageli PGP/GPG protokolli.
Alternatiiviks lahenduseks on loobuda e-kirjade kasutamisest ja kasutada tundliku info edastamiseks teisi otspunktkrüpteerimist võimaldavaid vahendeid. Üheks niisuguseks alternatiivseks võimaluseks on Off-the-Record Messaging (OTR), aga viimasel ajal on populaarsemaks muutunud sõnumivahetusprogramm Signal, mis peaks pakkuma kõrgemat turvataset kui OTR . Signali katsetamiseks on praktikumis eraldi ülesanne.
S/MIME
S/MIME (Secure/Multipurpose Internet Mail Extensions) on avaliku võtme infrastruktuuril (PKI) põhinev turvalise meilivahetuse standard. Sarnaselt HTTPS-ile on S/MIME puhul igal lõppkasutajal võtmepaar, ning sertifikaat, mis on seotud konkreetse kasutaja e-posti aadressiga. Sertifikaadi on allkirjastanud mõni tunnustatud sertifitseerimiskeskus (CA).
Kirjade krüpteerimine, signeerimine ja verifitseerimine toimub sarnaselt HTTPS-protokollile. Et saata kellelegi krüpteeritud kirja, peab teadma vastavat avalikku võtit. Seda sisaldava sertifikaadi saab tavaliselt nii, et kirja saaja saadab ise esimesena mõne signeeritud kirja, kus vajalik sertifikaat kaasas on.
S/MIME on toetatud mitmete meiliprogrammide poolt, aga seda kasutatakse siiski vähe. Erandiks on Eesti, sest meie ID-kaartide omanikud omavad sertifikaati, mis on allkirjastatud SK ID Solutions AS (endise nimega AS Sertifitseerimiskeskus) poolt. Seetõttu on ID-kaardi omanikel võimalik saata krüpteeritud ja signeeritud emaile. Selleks tuleb kõigepealt adressaadi sertifikaat leida ja siis kasutada sertifikaadis olevat emaili aadressi. Sertifikaatides olevad emaili aadressid on järgmisel kujul: Eesnimi.Perenimi[.X]@eesti.ee, kus X tähistab arvu.
Eesti ID-kaardi krüpteerimise funktsionaalsus on ehitatud S/MIME peale. Vastava krüpteerimistarkvara kasutamisjuhendi leiate järgnevalt aadressilt: https://www.id.ee/index.php?id=38804. ID-kaardi krüpteerimise funktsionaalsust saate soovi korral proovida iseseisvalt pärast praktikumi lõppu. Vastav oskus ja kogemus võib osutuda kasulikuks, sest programmi DigiDoc4 abil saab muuta ID-kaarti omavate isikute ning asutuste vahelist andmevahetust konfidentsiaalsemaks.
Samas ei võimalda vastav ID-kaardi tarkvara krüpteerida emaile isikutele, kes pole kuidagi Eestiga seotud. Seetõttu vaatleme järgnevalt tarkvara GPG, mille abil saab vastavat probleemi lahendada.
Ülevaade PGP-st
Pretty Good Privacy (PGP) on 1991. aastal loodud arvutiprogramm, mis võimaldab digitaalsete andmetega teha mitmeid krüptograafilisi operatsioone, näiteks dokumente ja e-kirju krüpteerida ning signeerida. PGP põhineb avaliku võtme krüptograafial, kus igal kasutajal on oma võtmepaar ning on seetõttu sarnane S/MIME süsteemiga.
S/MIME-st erineb PGP sellepoolest, et avaliku võtme infrastruktuuri (PKI) asemel, kus usaldusseosed on sertifitseerimiskeskuste (CA) vahel hierarhiliselt kuni tipmise CA-ni välja, kasutab PGP nn. "usaldusvõrku" (web of trust). Usaldusvõrgu puhul saab iga inimene ise valida keda ja kui palju ta usaldab ning selle kinnitamiseks allkirjastab vastava inimese avalikku võtit sisaldava sertifikaadi oma privaatvõtmega (nagu PKI puhulgi). Selliselt väljendatud usaldusseosest tekib omamoodi sotsiaalne võrgustik, kus "usaldus" on transitiivne seos, vt. joonist.
Et sertifikaatidevahelisi usaldusseoseid saaks jälgida ning juurde tekitada, on kasutusel avalikud võtmeserverid, kuhu saab oma sertifikaadi koos usaldusseostega üles laadida. Kuigi teoorias paistab idee olevat hea, siis praktikas see ei toimi, kuna PGP-l on liiga vähe kasutajaid. Usaldusseosed võivad toimida väikeste gruppide jaoks, aga kindlasti mitte üle kogu maailma.
PGP oli kommertstoode ning polnud seega vabalt kättesaadav. Küll aga on selle järgi loodud OpenPGP standard, mida järgiv tarkvara on omavahel ühilduv. Kõige tuntum vabavaraline OpenPGP standardile vastav programm on GNU Privacy Guard (GnuPG ehk GPG).
GNU Privacy Guard ehk GPG
The GNU Privacy Guard ehk GPG võimaldab turvaliselt e-kirju ja faile vahetada. Selleks kasutatakse vastavate andmete krüpteerimist ja signeerimist.
Andmete signeerimine tagab selle, et andmeid ei saa märkamatult muuta ja võimaldab kindlaks teha andmete saatjat/loojat. Andmete krüpteerimine tagab selle, et kõrvalised isikud ja pealtkuulajad ei saaks andmeid lugeda. GPG-d peetakse üsna turvaliseks krüpteerimise võimaluseks. GPG aktiivset kasutamist e-kirjade krüpteerimisel takistab reaalsuses see, et väljaspool väikest seltskonda ei tea inimesed, mis on GPG ja seetõttu on võimalik krüpteeritud kirju saata ainult vähestele inimestele. Kui tekib vajadus võtta vastu tundlikku infot, siis tuleks luua endale või oma firmale OpenPGP võtmepaar ja avalikustada vastav avalik võti.
Järgnevates materjalides kirjeldatakse kuidas saab Mozilla Thunderbirdi abil emaile krüpteerida ja signeerida. Pärast materjalide läbilugemist on teil olemas ülevaades sellest kuidas saab emaile krüpteerida.
Thunderbirdi kasutamine krüpteeritud ja signeeritud kirja saatmiseks -- lisamaterjal huvilistele (seda osa ei pea läbi lugema)
Kui soovite katsetada PGP-d, siis on vaja paigaldada Thunderbird (sobivad versioonid alates 78-st), mille saate alla laadida Thunderbirdi kodulehelt. Paigaldamine on lihtne ning selleks tuleb teha ainult paar klõpsu. Juhul kui te juba kasutate emailide haldustarkvara (nt. Outlook), siis valige paigaldamisel, et Thunderbirdi ei määrataks vaikimisi kasutatavaks emailide haldustarkvaraks.
PGP kasutamiseks tuleb siduda enda meilikontoga võtmepaar, mis võimaldab teil enda poolt saadetavaid kirju signeerida (enda salajase võtme abil) ning krüpteeritud kirju vastu võtta (dekrüpteerida enda salajase võtme abil ning jagada enda avalikku võtit kontaktidele, kes saavad selle abil teie meiliaadressile saata krüpteeritud kirju). Seega esimeseks ülesandeks ongi Thunderbirdiga ühendatud meilikontole uue võtmepaari loomine.
Juhendi leiate siit: https://support.mozilla.org/en-US/kb/openpgp-thunderbird-howto-and-faq. Praktikumimaterjalides olev juhend ei pruugi vastata uue Thunderbirdi versiooni menüüdele.
Kui meilikonto on olemas ning soovite selle jaoks luua võtmepaari, siis kõigepealt otsige üles ekraani ülemisest parempoolsest nurgast nupp, millel kujutatakse kolme joont ning otsige sealt üles "Tools -> OpenPGP Key Management". Sama menüü leiab ka menüüst "Tools -> OpenPGP Key Management".
Seejärle kuvatakse teile uus aken, mille ülemises ääres on menüü nimega "Generate". Vajutage sinna peale ning valige "New Key Pair".
Seejärel avaneb võtme genereerimise aken. Määrake seal ära, et genereeritakse elliptkõveral põhinev võti, kuna selle genereerimine toimub kiiresti ning samuti märkige, et võtme kehtivusajaks oleks kaks kuud.
Varasemas Thunderbirdi versioonis oli võimalik siin määrata ka parool võtme kaitsmiseks, aga uues versioonis on terve OpenPGP funktsionaalsus uuesti nullist teostatud ja võtme parooliga kaitsmist pole veel jõutud lisada. Nüüd tuleb vajutada võtme genereerimise nupule ja teile kuvatakse järgnev teavitusaken kus valige "Confirm".
Nüüd peaksite nägema enda võtmehalduri aknas ühte uut rida, mis on seotud teie emaili aadressiga.
Kui tavapäraselt toimub nüüd uue avaliku võtme üleslaadimine võtmeserverisse, siis antud ülesande juures me seda võimalust ei kasuta, kuna me ei taha avalikke võtmeservereid risustada (võtmeserverisse laetud avalikku võtmeid kustutada ei saa, aga neid saab märkida tühistatuks).
Enne kui saame edasi liikuda krüpteerimise ja signeerimise juurde tuleb uus võtmepaar siduda enda meilikontoga. Selleks võtke ette Thunderbirdi avaleht ning vajutage enda konto peal paremklõps ning leidke valik nimega "Settings".
Enda konto seadete alt otsige üles valik "End-To-End-Encryption". Seal peate valima võtmeks just äsja genereeritud võtme (vt. allpool olevat näidist).
Nüüd märkige samas aknas valik, mis võimaldab kirju automaatselt krüpteerida. Selleks kerige leht allapoole ja otsige üles alampealkiri "Default settings for sending messages". Sealt tehke valik, mis ütleb "Require encryption by default".
Järgmiseks sammuks ongi krüpteeritud kirja saatmine, aga selleks on teil vaja adressaadi avalikku võtit. Kuna iseseisva katsetamise korral pole teisi suhtluspartnereid, siis saatke endale krüpteeritud ja signeeritud kiri. Selleks avage Thunderbirdi aken ning vajutage nupule "Write".
Kui adressaadi avalik võti on juba võtmehoidlas olemas, siis peaks automaatselt olema sisse lülitatud kirja krüpteerimine. Seda saate näha kui vaatate kas tabalukku kujutavat ikooni kuvatakse kirja kirjutamise akna alumises osas. Kui adressaadi avalik võti on puudu, siis tuleb see kas võtmeserverist alla laadida või siis mõnel teisel viisil hankida. Oluline on tagada see, et tegemist oleks autentse võtmega, mis tõesti kuulub adressaadile.
Signeerimise aktiveerimiseks saate aktiveerida nupu "Security" abil valides sealt "Digitally Sign This Message". Nüüd saate saata endale krüpteeritud ja signeeritud kirja ning kontrollida kas see jõudis edukalt kohale.
Thunderbird dekrüpteerib automaatselt kirja juhul kui sobiv salajane võti on Thunderbirdis teie meilikontoga seotud. See tähendab ka seda, et krüpteeritud kirja saate lugeda vaid sellest seadmest kus on olemas vastav salajane võti. Krüpteerimise ja signeerimise kohta näete täpsemat infot kui vajutate vastuvõetud kirjas olevale "OpenPGP" nupule.
Järgnevalt näitame kuidas saab allalaetud avalikku võtit manuaalselt importida. Näidiseks oleva avaliku võtme sisu saate näha kui klikite järgneva lingi peale. Tehke allpool oleval lingil paremklõps ning salvestage lingitud fail valides Save As / Salvesta nimega. Vaikimisi on faili nimeks krips.txt, aga salvestamise ajal võiksite selle ümber nimetada failiks krips.asc, kuna siis tunneb Thunderbird automaatselt importimise aknas võtme ära.
Järgmiseks impordime allalaetud avaliku võtme Thunderbirdi võtmehoidlasse, kuna siis tunneb kirja kirjutamisel Thunderbird automaatselt ära krüpteerimise võimaluse. Tuletame meelde, et avaliku võtme krüptograafias saab kellegile infot krüpteerida juhul kui on olevas vastava adressaadi avalik võti. Seega avage jälle Thunderbirdis võtmehaldus ehk OpenPGP Key Management aken (illustratsioonid on ülevalpool asuvas juhendis) ning valige selle menüüst: "File -> Import Public Key(s) From File".
Seejärel otsige üles eelnevalt allalaetud avalikku võtit sisaldav fail ja avage see. Juhul kui te nimetasite selle faili ümber nii, et faili nimeks on krips.asc, siis saate vajutada "Open", aga kui te faili ümber ei nimetanud ja nimeks on endiselt krips.txt, siis tuleb kõigepealt muuta ära avatava faili tüüp valides "All files".
Seejärel küsitakse teilt, et kas te usaldate vastavat võtit ning antud olukorras valige "Accepted" ning vajutage OK.
Kui võti sai edukalt imporditud, siis kuvatakse teile järgnevat akent.
Nüüd kui addressaadi võti on võtmehoidlas olemas saab sellele adressadile saata krüpteeritud emaile. Eelnevates ekraanitõmmistes kasutusel olev emaili aadress ei toimi, tegemist on näidisega.
Lisainfo
Kui teil on plaanis teha endale PGP võtmepaar ja hakata seda tulevikus kasutama, siis on teil vaja:
- säilitada turvaliselt privaatvõtit (kui tõsisemalt ette võtta, siis sobib selleks näiteks YubiKey)
- kaitsta privaatvõtit turvalise parooliga (uus Thunderbird seda ei võimalda)
- võtme kehtivusaeg peaks olema pikem, aga see ei tohiks olla tähtajatu
- lisada enda avalik võti tuntud võtmeserveritesse
- teha revocation sertifikaat, mille abil on võimalik avalikku võtit tühistatuks märkida (uus Thunderbird võimaldab otse võtit tühistatuks määrata)
- (Vabatahtlik:) lisaks saate siduda enda avaliku võtme oma identiteediga veebis, näiteks Twitteri kontoga või kodulehega. See on vajalik juhul kui tahate reaalselt PGP-d kasutada ning tekitada usaldust võtme ja identiteedi vahel.
Mac OS X kasutajate jaoks on programm: GPGTools
GPG Mac versiooni nimi on GPGTools. Eraldi on võimalik paigaldada kas ainult meilikliendi laiendust (GPGMail) või siis tervet GPG funktsionaalsust (GPGSuite). Paigaldame terve funktsionaalsuse, selleks minge veebilehele https://gpgtools.org/ ja valige "Download GPG Suite". Järgmisena paigaldage GPG Suite.
Pärast paigaldamist avage programm GPG Keychain Access ja looge või importige endale võtmepaar. Selleks, et avalikustatud võtit saaks tühistada looge ka revocation sertifikaat, seda saab teha valides menüüst "Key" -> "Generate Revoke Certificate". Sama menüü abil saab enda avalikku võtit avalikustada ja otsida teiste inimeste avalikke võtmeid.
Nüüd saab programmi Mail abil saata krüpteeritud kirju kui vastava konto jaoks on võtmepaar loodud või imporditud. Krüpteeritud kirja saatmiseks tuleb alustada kirja kirjutamist ja siis vajutada vastavalt krüpteerimise nupule, sama kehtib signeerimise kohta. Krüpteeritud kirju saab saata ainult nendele aadressidele, mille jaoks on programmis GPG Keychain Access olemas PGP avalik võti.
OpenPGP ja GPG probleemid
PGP probleemidest on teinud ülevaate Matthew Green: What's the matter with PGP?. Kuna see kirjutis pärineb 2014 aastast, siis on praeguseks mitmed postituses kirjeldatud probleemid saanud lahenduse. Siiski on paljud krüptograafid PGP suhtes negatiivselt meelestatud, kuna see ei kasuta tänapäevaseid turvalahendusi nagu näiteks tulevikukindlust. Samas ei ole emailide krüpteerimiseks ka head alternatiivi. Seetõttu võib võtta pragmaatilise seisukoha ning kasutada PGP edastatava info konfidentsiaalsuse kaitsmiseks juhul kui tegemist pole väga kõrge konfidentsiaalsustasemega (sellisel juhul tuleks pigem leida alternatiivne turvalisem meetod info vahetamiseks).