Turvaline meilivahetus
Tavaline meilivahetus
E-kirjade saatmiseks ja meiliserverite vaheliseks edastamiseks kasutatakse protokolli SMTP. E-kirjade vastuvõtmiseks kasutavad meilikliendid 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 protokolli SSL või TLS. Siiski ei ole STARTTLS praegu laialt levinud ja seega kui meiliklienti ei sunnita kasutama turvaliseks meilivahetuseks mõeldud porti ehk TLS/SSL, siis edastatakse e-kirjad SMTP serverisse tavatekstina.
Meilide edastamiseks ühest serverist teise kasutatakse meilide edastamise agenti ehk MTA-d. Niisugune 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
Lahendus
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 edastajad ei saa sõnumit dekrüpteerida. E-kirjade otspunktkrüpteerimiseks kasutatakse protokolli PGP/GPG. Alternatiiviks 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 ehk OTR.
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 AS Sertifitseerimiskeskuse 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: Surname.Lastname[.X]@eesti.ee, kus X tähistab arvu.
PGP ja GPG
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 igaüks oma sertifikaadi koos usaldusseostega üles laadida saab.
PGP on kommertstoode ning pole 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
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 üheks turvalisemaks võimaluseks andmete krüpteerimiseks. GPG aktiivset kasutamist e-kirjade krüpteerimisel takistab reaalsuses see, et väljaspool kindlat 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.
Windows: Gpg4win ja Thunderbirdi laiendus Enigmail
GPG Windowsi versiooni nimi on Gpg4win ja see sisaldab järgnevat:
- GnuPG - krüpteerimise tööriist
- Kleopatra - sertifikaatide haldaja
- GPA - alternatiivne sertifikaatide haldaja
- GpgOL - e-kirjade krüpteerimise plugin Microsoft Outlooki jaoks
- GpgEX - failide krüpteerimise plugin Microsoft Exploreri jaoks
- Claws Mail - krüpto toega meiliklient
- Gpg4win Compendium - dokumentatsioon nii inglise keeles kui ka saksa keeles
Gpg4win paigaldamine:
- Minge lehele http://www.gpg4win.org/
- Vajutage nupule "Download Gpg4win" ja valige kõige uuem versioon
- Salvestage installeerimise fail ja siis käivitage see
- Vajutage "Yes", "Next", "Next"
- Valige paigaldamiseks kõik komponendid ja vajutage "Next"
- Vajutage "Next", "Next" ja "Install"
- Vajutage "No", kui pakutakse Claws Maili teie vaikimisi meilikliendiks
GPG toe lisamine programmile Mozilla Thunderbird Mozilla Thunderbird on populaarne e-kirjade haldamise programm. Thunderbirdi paigaldamiseks minge järgenvale veebilehele: Download Thunderbird in your language. Selleks, et Thunderbirdiga saata krüpteeritud ja signeeritud kirju tuleb kõigepealt paigalda laiendus Enigmail, mis lisab Thunderbirdile GPG funktsionaalsuse.
1. Paigaldage Thunderbird:
- Virtuaalmasinas peaks vastav tarkvara juba olemas olema. Juhul kui te ei kasuta virtuaalmasinat, siis leiate Thunderbirdi järgmiselt lehelt: Download Thunderbird in your language
2. Paigaldage Enigmail:
- Avage Thunderbird
- Minge "Tools" -> "Add-ons" -> "Search: Available Add-ons"
- Otsige laiendust Enigmail
- Vajutage "Install" ja siis "Restart now", et käivitada uus funktsionaalsus
- Ärge lubage Enigmail seadistust looma hakata
3. Ühendage ome emaili aadress Thunderbirdiga
- Praktikumi jaoks võiksite luua uue konto või siis kasutada vähemolulist emaili kontot nagu (näiteks @ut.ee konto). Oluline on see, et ühendataval meilikontol ei oleks kahefaktorilist autentimist ja et sellel ei oleks edasisuunamist.Uue tasuta meilikonto saate teha aadressilt: https://service.mail.com/registration.html?
- Meilikonto ühendamiseks minge
- "File -> New -> Existing Mail Account..."
- Täitke nõutud väljad (sisestage meiliaadress ja parool) ning vajutage "Continue""
- Loodetavast tunti meiliserver ära ja te saate oma konto ühendada
4. Meilikontole vastava võtmepaari loomine
- Võtmepaari seadistamiseks minge: "Enigmail" -> "Key management"
- OpenPGP Key management aknas valige "Display All Keys by Default"
- Looge uus võtmepaar: "Generate" -> "New key pair"
- Valige Thunderbirdiga ühendatud meilikonto
- Sisestage parool, mis hakkab teie salajast võtit kaitsma
- Praktikumis seadke võtme kehtivusajaks 1 kuu
- Vajutage "Generate""
- Liigutage hiirt või vajutage klaviatuuril olevaid nuppe, et võtme genereerimist kiirendada. Võtme genereerimiseks läheb vaja juhuslikkust ja vastav tegevus aitab seda genereerida.
- Kui võti on genereeritud, siis vajutage "Generate Certificate", mis loob revocation sertifikaadi
- Salvesta vastav sertifikaat (seda saab hiljem kasutada, et avalikku võtit tühistatuks märkida). Antud sertifikaati saab ka hiljem genereerida kui vajutada "Enigmail" -> "Key management" -> "Generate" -> "Revocation certificate".
5. Muutke ära Enigmail võtmeserveri aadress Praktikumis kasutame spetsiaalset testimise jaoks loodud võtmeserverit. Seetõttu tuleks Enigmail seadetest eemaldada avalikud võtmeserverid ja lisada nende asemele tahvlile kirjutatud meiliserveri aadress. Selleks tuleb minna: Enigmail -> Preferences -> The Display / Hide Expert Settings and Menus -> Keyserver.
6. Laadige enda avalik võti võtmeserverisse Võtmepaarist pole suurt kasu kui keegi ei oska avalikku võtit üles leida, sest ilma avaliku võtmeta ei ole võimalik saata krüpteeritud kirju. Seega on järgmiseks sammuks avaliku võtme avaldamine ehk võtmeserverisse laadimine (kasutatava võtmeserveri aadressi leiate tahvlilt). Kui te tahaksite teha võtmepaari oma päris meilikonto jaoks, siis tuleks vastav võti laadida tuntud võtmeserverisse, näiteks mõnda, mida pakutakse vaikimisi Enigmail poolt.
- Minge "Enigmail" -> "Key management" -> "Upload Public Keys" ja sisestage tahvlile kirjutatud võtmeserveri nimi.
- Vajutage OK
7. Leidke enda vasaku ja parema naabri avalikud võtmed
- Krüpteeritud kirjade saatmiseks on vaja teada adressaatide avalikke võtmeid. Lisaks sellele läheb avalikke võtmeid vaja selleks, et nende poolt signeeritud kirju verifitseerida. Avalikke võtmeid saab otsida võtmeserveritest:
- Minge "Enigmail" -> "Key management" -> "Keyserver" -> "Search for keys".
- Sisestage kas nimi, emaili aadress või avaliku võtme ID
- Sisestage võtmeserveri aadress
- Leidke ja hankige enda vasaku ja parema naabri avalikud võtmed
8. Saatke enda vasakule ja paremale naabrile signeeritud kirjad
- Signeeritud kirja saatmiseks tuleb Enigmail menüüst vastav valik sisse lülitada. Alternatiivse võimalusena pakutakse kasutajaliideses krüpteerimist ja signeerimist haldavat sõnumit, millele on võimalik vajutada, et seadistust muuta. See sõnum võib olla järgneval kujul: "This message will be unsigned and unencrypted"
9. Verifitseeriga enda vasakult ja paremalt naabrilt saadud signeeritud kirjad
10. Saatke enda vasakule ja paremale naabrile krüpteeritud kirjad
- Signeeritud kirja saatmiseks tuleb Enigmail menüüst vastav valik sisse lülitada. Alternatiivse võimalusena pakutakse kasutajaliideses krüpteerimist ja signeerimist haldavat sõnumit, millele on võimalik vajutada, et seadistust muuta.
11. Leidke juhendaja avalik võti (ta kirjutab võtme ID tahvlile) ja saatke talle signeeritud ja krüpteeritud kiri. Kindlasti laadige enda avalik võti kodutööga seotud võtmeserverisse. See ülesanne on osa kodusest tööst, kui te saate selle valmis, siis on teil juba osa kodutööst tehtud.
12. Kui te kasutasite arvutiklassis olevat virtuaalmasinat, siis eemaldage Thunderbirdist enda meilikonto
Kui teil on plaanis teha endale PGP võtmepaar ja hakata seda tulevikus kasutama, siis on teil vaja
- säilitada turvaliselt privaatne võti
- kaitsta privaatset võtit turvalise parooliga
- võtme kehtivusaeg peaks olema pikem, aga see ei tohiks olla tähtajatu
- teha revocation sertifikaat, mille abil on võimalik avalikku võtit tühistatuks märkida
- lisada enda avalik võti tuntud võtmeserveritesse
- (Vabatahtlik:) lisaks võite siduda enda avaliku võtme oma identiteediga veebis, näiteks Twitteri kontoga või kodulehega. Selleks on olemas hea tasuta teenus: https://keybase.io/
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 hea ülevaate Matthew Green: What's the matter with PGP?.
- vähe kasutajaid ja kasutamine ei ole triviaalne
- raske on tekitada usaldussidemeid
- e-kirja metaandmed on krüpteerimata
- avalik võti on pikk ja seda on seetõttu raske jagada ja verifitseerida
- võtmeserverisse tehtavad päringud on krüpteerimata
- ei ole perfektset tulevikusalastust (perfect forward secrecy)
- meiliklientide laiendused on halvasti disainitud
- lihtne on saata krüpteerimata kirja
- pidevalt nõutakse salajase võtme kasutamiseks parooli (näiteks signeerimiseks)
- salajast võtit hoitakse mälus ka siis kui seda ei ole vaja
Off-the-Record Messaging ehk OTR
OTR on protokoll, mis võimaldab privaatset suhtlust üle sõnumirakenduste. OTR kasutab otspunktkrüpteerimist ja seda saab kasutada näiteks Pidgin laiendusena. Pidgin toetab järgmisi võrgustikke:
- AIM
- Bonjour
- Gadu-Gadu
- Google Talk
- Groupwise
- ICQ
- IRC
- MSN
- MXit
- SILC
- SIMPLE
- Sametime
- XMPP
- Yahoo!
- Zephyr
- (Skype saab kasutada laienduse abil)
OTR pakub:
- konfidentsiaalsust (andmed krüpteeritakse)
- autentimist (osapooled teavad kellega nad suhtlevad)
- perfektset tulevikukindlust (perfect forward secrecy)
- eitamist (sõnumid ei ole signeeritud ja seega ei saa kolmas osapool kindlaks teha kes on sõnumi autor, sest sõnumeid on võimalik võltsida pärast vestluse lõppu).
OTR probleemid:
- vähe kasutajaid
- lihtne on kasutada ilma krüpteerimiseta ühendust
- mõlemad osapooled peavad olema valmis OTR kasutama
- paigaldama tarkvara
- looma võtmed
Turvaline meilivahetus brauseris
Eelpool kirjeldatud S/MIME ja PGP on kasutatavad eraldiseisvates meilirakendustes (Outlook, Thunderbird, Mail.app, jne), kuid viimastel aastatel on populaarsed veebipõhised meilivahetuskeskkonnad (Gmail, Outlook.com, Yahoo! mail, jne). Viimaste puhul on S/MIME ja PGP kasutamine raske, sest veebilehitseja ei saa (ilma laienduste abita) arvuti kettal olevale salajasele võtmele ligi ja teenusepakkuja serveris salajast võtit ju hoida ei saa. Lisaks tähendaks see krüptograafiliste operatsioonide realiseerimist JavaScriptis, mis tähendaks jällegi, et teenusepakkujat peaks usaldama.
2014 aastal teatasid nii Google kui ka Yahoo!, et arendavad brauseri laiendust, mis lubaks nende veebipõhistes meiliklientides kirju krüpteerida ja signeerida. Google arendatav Chrome brauseri laiendus kannab nimetust End-to-End ning põhineb PGP-l. Yahoo! arendatav laiendus kasutab sama koodibaasi.
Kasulikud lingid
- Neither Snow Nor Rain Nor MITM ... An Empirical Analysis of Email Delivery Security
- Encrypted e-mail: How much annoyance will you tolerate to keep the NSA away?http://arstechnica.com/security/2013/06/encrypted-e-mail-how-much-annoyance-will-you-tolerate-to-keep-the-nsa-away/
- Guide for operational security while using PGP
- Matthew Green: What's the matter with PGP?
- S/MIME
- PGP
- Why I Wrote PGP http://www.philzimmermann.com/EN/essays/WhyIWrotePGP.html
- Pretty Good Privacy: http://en.wikipedia.org/wiki/Pretty_Good_Privacy
- Sending encrypted email using Thunderbird and PGP https://www.wefightcensorship.org/article/sending-encrypted-emails-using-thunderbird-and-pgphtml.html
- GPG
- The GNU Privacy Guard: http://www.gnupg.org/
- GnuPG frontends: http://www.gnupg.org/related_software/frontends.html
- Windows version of GnuPG: http://www.gpg4win.org/
- Mac OS X version of GnuPG: https://gpgtools.org/
- Thunderbird plugin Enigmail: https://www.enigmail.net/
- Mozilla Thunderbird ja Enigmail
- https://www.mozilla.org/en-US/thunderbird/
- https://addons.mozilla.org/en-US/thunderbird/addon/enigmail/
- Sending encrypted email using Thunderbird and PGP https://www.wefightcensorship.org/article/sending-encrypted-emails-using-thunderbird-and-pgphtml.html
- PGP brauseris