Meilide signeerimine ja krüpteerimine PGP abil
Sissejuhatus
Praktikumi eesmärgiks on tutvustada meilide krüpteerimist ja signeerimist võimaldavat tarkvara. Praktikumiülesannete lahendamiseks tuleb teil kasutada online.ee
lõpuga e-meili kontot, mille lõime Praktikum 4s. E-maili aadressilt peab olema võimalik Mozilla Thunderbirdi abil kirju alla laadida ning kirju saata - kui see toimib, siis tuleb veel loota, et teenusepakkuja ei blokeeri krüpteeritud sisuga kirju (online.ee on selleks sobivaim).
Praktikumiülesandeid saab teha nii enda arvutis kui ka virtuaalmasinas (Linux, Windows, iOS peaksid kõik sobima).
Tavalise meilivahetusega seotud turvaprobleemid
E-kirjade edastamise protokollid ei ole algselt disainitud turvalisust ja privaatsust silmas pidades nagu demonstreerisime praktikumis 4. Seega on vaikimisi e-kirjad turvamata, mis tähendab seda, et e-kirju edastatakse tavatekstina (neid ei krüpteerita), samuti pole saatja tihti verifitseeritav. Mõningad SMTP serverid toetavad STARTTLS, mis võimaldab minna turvamata ühenduselt automaatselt üle krüpteeritud ühendusele, mis kasutab protokolli 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
Väga hea ülevaate meilivahetusega seotud probleemidest annab Google, Michigani ülikooli ja Illinoi ülikooli poolt kirjutatud artikkel Neither Snow Nor Rain Nor MITM ... An Empirical Analysis of Email Delivery Security (2015).
Lahendused - PGP / SMIME / otspunktkrüpteerimist võimaldavad sõnumirakendused
Ideaalset lahendust eelnevalt kirjeldatud probleemidele ei ole praegu olemas. Parimad olemasolevad lahendused kasutavad avaliku võtme krüptograafial põhinevat otspunktkrüpteerimist (end-to-end encryption). Otspunktkrüpteerimise korral krüpteeritakse sõnum saatja arvutis ja dekrüpteeritakse alles vastuvõtja arvutis, mistõttu sõnumi edastajad ei saa sõnumit dekrüpteerida.
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. 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). E-kirjade otspunktkrüpteerimiseks saabki kasutada OpenPGP standardit järgivat tarkvara GPG. Seda tarkvara käsitlemegi antud praktikumi jooksul.
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 . Signal'i kasutamist saate praktiseerida koduse ülesande lahendamisel.
Juhend enda arvuti ettevalmistamiseks
- Paigaldage enda arvutisse Mozilla Thunderbird
- Linux:
sudo apt install thunderbird enigmail
- Windows: https://www.thunderbird.net/en-US/thunderbird/all/
- Linux:
- Paigaldage GPG
- Linux:
sudo apt install gnupg
- Windows: http://www.gpg4win.org/
- Linux:
- Paigaldage Thunderbird-i laiendus Enigmail
Thunderbird
->Add ons
->Get Add-ons
->Enigmail
. Enigmail võib pakkuda automaatse seadistuse loomist, aga sellest tuleks keelduda ja valida manuaalne seadistamine.
- Seadistage Enigmail tundma ära GPG-d
Thunderbird -> Enigmail -> Preferences -> kontrollige kas gpg on leitud.
- Käivitage Thunderbird ning lisage emaili konto. Kui palutakse Enigmail seadistada, siis valige, et te ei soovi seda praegu teha.
- Selle praktikumi jaoks võite teha täiesti uue online.ee kontoGoogle accounts või kasutada kontot mille lõime Praktikumis 4.
Võtmepaari genereerimine
Genereerige endale PGP võtmepaar.
Enigmail -> Key management, Generate -> New Key Pair.
Valitud peaks olema see konto, mille te seadistasite praktikumi alguses. Valige parool, mis kaitseb teie salajast võtit. See parool tuleb kindlasti meelde jätta. Muudest seadetest valige, et teie võtme kehtivusaeg oleks 1 kuu.
Võtme genereerimiseks läheb vaja juhuslikkust, aga arvuti ei oska hästi juhuslikkust genereerida. Tegelikult ei ole päris juhuslikke numbreid võimalik eeskirja alusel genereerida, sest päris juhuslike numbrite genereerimiseks tuleks kasutada füüsikalisi protsesse nagu näiteks radioaktiivne lagunemine. Rohkem infot juhuslike numbrite genereerimise ja pseudojuhuslike numbrite genereerimise kohta leiate veebilehelt https://www.random.org/randomness/.
Linux võimaldab vaadata süsteemi entroopiataset:
cat /proc/sys/kernel/random/entropy_avail
Võtme genereerimise käigus süsteemi entroopiatase väheneb (kontrollige eelneva käsu abil) ja süsteem vajab lisaallikat juhuslike bittide loomiseks. Juhuslikkuse genereerimist saab kiirendada näiteks sellega, et samal ajal konsoolis käivitada root õigustes järgnev käsk (see kasutab ketast, mis omakorda toodab juhuslikkust):
$ sudo find / -name '*k'
Pärast võtme genereerimist küsitakse, kas te tahate salvestada revocation
sertfikaati.
Revocation sertifikaati pole vaja võtmele genereerida juhul kui te plaanite antud võtit kasutada ainult selle praktikumi raames. Revocation sertifikaat võimaldab teil hiljem enda avalikku võtit tühistatuks kuulutada (võtmeserverisse laetud võtit ei saa kustutada, aga seda saab tühistatuks määrata). Kui te tahate päriselt hakata PGP-d kasutama, siis genereerige revocation sertifikaat (see on mõistlik ainult siis kui te teete praktikumiülesannet enda arvutis).
Enigmail Key management
dialoogis tuleb peale panna Display All Keys by Default
, et näha oleks kõik võtmed. Hetkel peaks seal olema ainult teie genereeritud võti. Uurige, missugust infot te näete enda võtme kohta.
Võtmeserver
Võtmeservereid kasutatakse avalike võtmete levitamiseks. Võtmeserverist on võimalik otsida teiste avalikke võtmeid nende nime / meiliaadressi / võti ID abil. Oluline on tähele panna, et võtmeserverisse laetud avalikku võtit ei saa sealt enam eemaldada. Juhul kui vastav salajane võti on kaduma läinud või kui vastavat meiliaadressi enam ei kasutata, siis tuleks kasutada revocation sertifikaati, et märkida vastav avalik võti tühistatuks. Kuna võtmeserverisse võtit laadides ei toimu autentimist, siis ei ole kindlust, kellele võtmeserveris olev võti kuulub. Seetõttu tuleks enne võtme allalaadimist kontrollida, et võtme ID vastab teie tuttava / kontaktisiku võtme ID-le.
- Määrake ära praktikumis testimiseks kasutatav võtmeserver:
Enigmail -> Preferences -> Display Expert Settings and Menus -> Keyserver
. Seal kustutage kõik olemasolevad võtmeserverid ja kirjutage võtmeserveri väljale:infsec.cs.ut.ee
. Pärast seda vajutageOK
. - Publitseerige oma vastgenereeritud võtmepaarist avalik võti võtmeserverisse, et see oleks kõigile kättesaadav. Selleks avage uuesti
Key management
ning seal tehke parem klõps enda võtme peal ning valigeUpload Public Keys to Keyserver
. Nüüd saavad rühmakaaslased seda võtit võtmeserverist alla laadida ning selle abil saata teile krüpteeritud kirju.
Krüpteeritud ja signeeritud kirjade saatmine
Järgmistes punktides on vaja teile määrata parem ja vasak naaber. On oluline, et kõigil tudengitel oleks kaks naabrit, kellele nad saaksid kirju saata.
Saatke oma paremale naabrile signeeritud kiri. Selleks koostage uus kiri
ja vajutage pliiatsit kujutaval ikoonil (signing)
. Tehke kindlaks, et kiri oleks ainult tekstina (mitte HTML): Options -> Delivery Format -> Plain Text Only
. Seda saab ka jäädavalt sisse lülitada: Edit -> Account Settings -> Composition & Addressing -> Compose messages in HTML format eest linnuke ära
.
Märkus. E-meili saatmine suure tõenäosusega ebaõnnestub, sest Thunderbird e-mail üritatakse saata SMTP protokolli kasutades mail.hot.ee aadressile mida blokeerib TÜ võrgu seadistus. Ajalooliselt on seega e-maili kliendis vaja seadistada TÜ väljuv MTA server mis on nõus omakorda kirja edastama online.ee
serverile (mail.hot.ee).
Väljuv e-maili server on vanemate e-maili serverite puhul võrgu põhine (interneti teenuse pakkuja, ISP, internet Service provider). Ehk olenevalt millist võrku te kasutate sellest sõltub teie outgoing serveri seadistus Thunderbird kliendis. Rohkem infot https://www.online.ee/faq.php#faq/c_kkk/answer_c_kkk_9
Saatke e-mail uuesti
Peate saama oma vasakult naabrilt signeeritud kirja, juhul kui ei saa, siis öelge naabrile, et ta saadaks teile kirja. Signeeritud kirja avamisel peaks Thunderbird teile kuvama teate Good signature
.
Saatke vasakule naabrile krüpteeritud vastus. Selleks valige kirja saatmise aknas tabaluku kujutisega ikoonile, mille järel peaks olema näha sõnum "This message will be encrypted". Kirja saatmisel avaneb aken, kus saate valida, kelle jaoks te selle kirja krüpteerite. Seal peaks teie adressaat juba valitud olema. Saatke kiri ära. Vajadusel tõmmake võtmeserverist puuduolev avalik võti.
Naabrilt tulnud krüpteeritud kirja valides küsitakse teie salajase võtme parooli. Enne kui selle sisestate, pange tähele, et kirja sisu on -----BEGIN PGP MESSAGE-----
ja sellele järgneb hunnik arusaamatut krüpteeritud teksti. Kui sisestate oma võtme parooli, siis dekrüpteeritakse see tekst.
Usaldusseoste loomine
PGP kasutab usalduse tekitamiseks 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 see toimub ka avaliku võtme infrastruktuuri korral). 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.
Et sertifikaatidevahelisi usaldusseoseid saaks jälgida ning juurde tekitada, on kasutusel avalikud võtmeserverid, kuhu igaüks oma sertifikaadi koos usaldusseostega üles laadida saab.
Looge võtmete vahele usaldusseosed. Andke oma vasaku naabri võtmele oma signatuur, selleks valige tema saadetud kirja juures Details -> Sign Sender's Key
. Avanenud dialoogiaknas võib jätta vaikeväärtused. Naabri võtme signeerimine tahab loomulikult teie võtme parooli.
Publitseerige oma vasaku naabri võtmele antud signatuur. Selleks avage Enigmail Key Management, valige oma vasaku naabri võti, hiirega parem klõps ja valige Upload Public Keys to Keyserver
. Selleks, et võtme signatuure uuendada tuleb "Key Management" aknas märgistada vastav võti ning siis valida menüüst: "KeyServer -> Refresh Selected Public Keys".
Kui te nüüd vaatate oma vasaku naabri poolt enne saadetud kirja, siis nüüd ütleb Thunderbird
selle kohta Good signature
, sest te usaldate saatjat.
Saatke oma vasakule naabrile üks signeeritud kiri. Pange sellega kaasa ka oma avalik võti: kirja saatmise dialoogis Enigmail menüü -> Attach My Public Key
.
Kui te saate oma paremalt naabrilt signeeritud kirja koos tema avaliku võtmega, siis kõigepealt ütleb Thunderbird , et signatuur pole usaldatav, kuna teil pole vastavat avalikku võtit. Tehke parem klõps kirjaga kaasas oleva avaliku võtme peal (.asc fail) ja valige Import OpenPGP Key
. Juhul kui ei ole võimalik valida Import OpenPGP Key
, siis valige Decrypt and Open
, pärast mida tuvastatakse, et tegu on avaliku võtmega ja pakutakse võimalust võtme importimiseks. Nüüd peaks Thunderbird kirja päises ütlema UNTRUSTED Good signature
.
Signeerige just saadud parema naabri avalik võti ja saatke signeeritud võti võtmeserverisse, et ka teised näeksid loodud usaldusseost.
Selleks, et kellelegi krüpteeritud kirja saata, peab teadma tema avalikku võtit. Oma paremalt teisele naabrile kirja saatmiseks tõmmake võtmeserverist tema avalik võti: Enigmail -> Key management -> Keyserver -> Search for Keys ja sisestage sinna oma paremalt teise naabri meiliaadress ja tõmmake tema avalik võti
.
Proovige saata krüpteeritud kirja oma paremalt teisele naabrile (võite saada hoiatuse, et võtme omaniku kohta pole midagi teada).
Märkige, et usaldate oma paremat naabrit teiste võtmeid signeerima: avage Enigmail Key Management, leidke oma parema naabri võti, parem klõps selle peal ning "Set Owner Trust"
. Usaldustasemeks valige vähemalt "marginally" või "fully".
Saatke paremalt teisele naabrile krüpteeritud kiri - nüüd peaks see sujuvalt õnnestuma. Kui ei õnnestu, parandage vead, kuni õnnestub.
Lugege oma vasakult teiselt naabrilt tulnud krüpteeritud kirja (laadige selleks vajadusel tema avalik võti võtmeserverist).
Tõmmake serverist enda võtmerõngasse enda võtme uued signatuurid, mida teised on serverisse saatnud, ja naabrite lisasignatuurid: Enigmail Key Management aknas parem klahv võtme peal ja Refresh Public Keys From Keyserver
.
Vaadake oma võtmele antud signatuure: parem klõps oma võtme peal ja "Key Properties" -> "Certifications"
. Veenduge, et Teie enda võtmele oleksid allkirja andnud peale Teie enda veel ka parem ja vasak naaber. Kui ei ole, "torkige neid", kuni nad oma allkirjad võtmeserverisse saadavad, ja tehke võtmetele serverist refreshi, kuni korras on.
Võtme infot on võimalik näha ka serverist aadressilt http://infsec.cs.ut.ee:11371
Õppejõu võtme leidmine ja laadimine (Aegajalt võib võtmeserver näidata nimeks undefined, kuid kui võti alla laadida näidatakse juba õiget nime.
Praktikumi ülesanded (arvestuse saamiseks)
Praktikumi ülesannete lahendamine annab kaks punkti. Praktikumi ülesanne võiks valmis saada praktikumi lõpuks, aga juhul kui see ei õnnestu, siis on võimalik lahendust esitada nädala jooksul pärast praktikumi toimumist.
- Arvestus 1: Tehke ekraanitõmmis, kus on näha teie naabri poolt saadetud signeeritud kiri. Ekraanitõmmisel peaks olema näha from väli, teie meiliaadress (võib olla ka
Me
) ja teadeDecrypted message
,Good signature
ja infokast võiks olla roheline , mis tähendab et usaldate täielikult kirja saatjat. (0.25p) - Arvestus 2: Tehke ekraanitõmmis, kus on näha, et teie võtmele on allkirja andnud kaks naaber tudengit (nimekirjas peab näitama 2x teie signatuuri ja 2 erineva naabri usaldust, kokku 4 rida). Aegajalt on vaja valida (allkirjastajal, signeerijal) mitu korda parem klahv võtme peal ja
Upload Public Keys to Keyserver
ja võtme loojalRefresh Public Keys From Keyserver
.(0.25p) - Arvestus 3: Tõmmake võtmeserverist
praktikumijuhendaja avalik võti
(otsingusõnaoppejoud2019@online.ee
e-mail:oppejoud2019@online.ee
Key IDB48290B
) ja saatke talle kiri, mis on korraga niisigneeritud
kui kakrüpteeritud
.Pange kindlasti kirjaga kaasa ka oma avalik võti.
Kirja pealkirjaks peaks olema:Andmeturve - PGP praktikum
. Ära unusta kirjale sisu lisamast ja enda nime, sest vastasel juhul ei saa kontrollida, kas kiri on ikka krüpteeritud, signeeritud ja sinu poolt saadetud.Kirja sisusse peaksite kirjutama vähemalt enda nime
. (1.0p) - Arvestus 4:Vastake küsimustele: a) Selgitage lühidalt oma sõnadega ja eesti keeles, mis asi on "Perfect Forward Secrecy" (PFS). b) Miks on vaja, et tänapäevased kommunikatsioonivahendid kasutaksid PFS-i? (lühidalt, aga konkreetselt) c) Nimetage kaks protokolli või rakendust, mis kasutavad PFS-i. (0.5)p
Lahendusi võtame vastu järgmistes failiformaatides: .zip, .pdf.
7. Praktikum 7 - Meilide signeerimineTagasiside
Praktikumi lõpus palume anda tagasisidet, sest see võimaldab meil antud praktikumi ja ka järgmisi praktikume paremaks muuta. Tagasiside on anonüümne ja tagasiside vormi leiate järgneva lingi abil: tagasiside ankeet.
Kodune ülesanne
Koduse ülesande lahendamine annab ühe punkti. Lahenduse esitamiseks on aega üks nädal. Küsimustele vastuste leidmiseks võib vaja minna lisamaterjalide, mille leiate antud praktikumi lehelt. Koduse ülesande lahendus tuleb esitada aine kodulehelt (juhul kui ülesandes pole nõutud teisiti). Lahendusi võtame vastu järgmistes failiformaatides: .txt, .pdf.
- Sõnumivahetusrakenduse "Signal" kasutamine. Signal on avatud lähtekoodiga, krüptograafide poolt arendatud rakendus, mis pakub otspunktkrüpteeritud ühendusi. See toimib Android (alates 4.0) ja iOS (alates 9.0) seadmetel. Juhul kui rakendus on telefonis aktiveeritud, siis saab kasutada ka desktopi klienti (toetatud on Windows, MacOS, Debian baasil Linux distributsioonid). Teie ülesandeks on:
- paigaldada Signal
- lisa kontaktide hulka andmeturbe praktikumi jaoks kasutatav number: viis kolm kuus kuus null üheksa null kuus PS! Signali kontaktid võetakse enamasti telefoniraamatust juhul kui mõni telefoniraamatus olev kontakt kasutab signalit, kuid praktikumi arvestuseks võib keelata ligipääsu kontaktidele ja sisestada numbri kästisi.
- avada selle kontaktiga (mob 5366 0906) suhtluskanal, ning kirjutada sinna enda eesnimi ja perenimi (saada sõnum)
- kirjuta numbrile
5366 0906
sõnum, mis automaatselt kustub30 sekundi pärast
kui adressaat on sõnumit näinud. (0.7p)- Vasta küsimusele: Too välja vähemalt kolm (3) selget erinevust
turvalisuse
seisuskohastSignal sõnumite
jaklassikaliste SMS
-ide vahel. (0.3p)
- Vasta küsimusele: Too välja vähemalt kolm (3) selget erinevust
Tulemus peaks sarnanema parempoolsel pildil kujutatule. Kindlasti kirjutage enda täisnimi ning kasutage teise sõnumi korral automaatse kustumise funktsionaalsust.
PS! Eeldame kõik IT tudengid omavad kaasaegseid IT seadmeid ja on võimelised Signal
ülesannet lahendama. Kui te ei taha kasutada isiklikku telefoni numbrit siis soovitame osta kõnekaardi numbri käesoleva ülesande lahendamiseks. Kui siiski teil tekib probleeme Signali kasutamisel isiklikus nutiseadmes või nutiseade üldse puudub võtke ühendust oma praktikumi juhendajaga, kes pakub teile alternatiivse ülesande.
Lisamaterjalid
- Neither Snow Nor Rain Nor MITM ... An Empirical Analysis of Email Delivery Security (2015).
- Andrese lisamaterjalid (2018).
- Perfect Forward Secrecy