Praktikum 2 - Otspunktkrüpteeritud suhtluskanalid
Lahenduste esitamise tähtajaks on 17. aprill.
Sissejuhatus
Paljud tänapäeval kasutatavad kommunikatsioonisüsteemid põhinevad protokollidel, mis ei taga sideühenduse täielikku konfidentsiaalsust. See on enamasti põhjustatud arhitektuuri poolt, kus ühenduse vahendajaks on eraldi osapool. Sellisel juhul võib tekkida küsimus, et juhul kui sideühendust krüpteeritakse, siis kuidas see täpsemalt toimub. Kõige lihtsama ja levinuma lahenduse kohaselt krüpteeritakse ühendus kliendi seadmest kuni keskse osapooleni, kes siis omakorda tekitab adressaadini uue krüpteeritud kanali. Alternatiivina saab keskne osapool genereerida krüpteerimisvõtme ning jagada seda suhtlusosapooltega. Eelnevalt kirjeldatud arhitektuure kasutavad palju suhtlusrakendused, aga sarnaselt toimib ka igapäevaselt kasutusel olev emailide ning telefonikõnede edastamine.
Selle praktikumi eesmärgiks on tutvustada mõningaid otspunktkrüpteerimist võimaldavaid tööriistu ja suhtlusrakendusi. Otspunktkrüpteerimise korral on mõlemal suhtlusosapoolel võtmed, mille abil saab omavahel krüpteeritult suhelda ilma, et keskne osapool saaks sõnumite sisu dekrüpteerida.
Suhtlusrakendustest vaatleme Signalit, kuna vastava rakenduse tootja ei oma ärilisi eesmärke. Signali protokolli kasutavad ka mitmed populaarsemad suhtlusrakendused nagu näiteks WhatsApp, Facebook messenger ja Skype. Kuigi vastavad rakendused reklaamivad ennast Signali prokotolli abil ei ole kõigil vastav protokoll vaikimisi aktiveeritud ning suur osa kasutajatest ei ole vastavast võimalusest isegi teadlikud. Mõelge näiteks selle peale, et kas te oskate Skype abil alustada privaatset vestlust. Lisaks suhtlusprotokolli turvalisusele on oluline ka rakenduste enda funktsionaalsustes -- kas te saate olla veendunud, et teie sõnumite peal ei tehta andmeanalüüsi enne kui need Signali protokolli abil teele saadetakse? Kui rakendus pole avatud lähtekoodiga, siis on raske kontrollida, mida täpsemalt teie andmetega tehakse. Nendel põhjustel valisime katsetamiseks just Signali rakenduse, kuna see on avatud lähtekoodiga ja arendatud krüptograafide poolt.
Praktikumi jooksul katsetame DigiDoc4 poolt pakutavat krüpteerimise funktsionaalsust ja tutvume rakendusega Syncthing, mis võimaldab turvaliseslt faile jagada. Kui praktikumi lõpus on piisavalt aega, siis vaatame kuidas on võimalik TLS ühendusi monitoorida. Iseseisvaks lugemiseks jääb emailide turvalisusega seonduv.
Sarnaselt eelmise praktikumiga, saate ülesandeid lahendada kas meie poolt pakutud virtuaalmasinas või vajaliku tarkvara ise paigaldada. Arvutiklassis kasutame virtuaalmasinaid, kuid iseseisvalt ülesandeid sooritades on vajaliku tarkvara paigaldamine oluliselt lihtsam variant.
Juhend virtuaalmasina importimiseks ja käivitamiseks
- Käivitage tarkvara "Oracle VirtualBox".
- Avage VirtualBoxi menüüst "File -> Preferences -> General -> Default Machine Folder". Seejärel vajutage paremalpool olevale noolekesele ning määrake "Other ..." nuppu kasutades see kaust, kuhu teie virtuaalmasin lahti pakitakse. Arvutiklassi arvutites peaksite selle jaoks looma uue alamkausta asukohaga "D:\infsec2022\" (arvutiklassis 2030 on D asemel C). Seejärel vajutage märkige ära see kaust ning valige "Select Folder" ja siis "OK".
- Virtuaalmasina importimiseks valige menüüst: "File -> Import Appliance ... -> vajutage kollase kausta nupu peale ning otsige üles kaustast D:\infsec2022\ fail infsec-win10_2022.ova ((arvutiklassis 2030 on D asemel C)). Vajutage "Open"ja "Next". Juhul kui vajutasite .ova faili peal topeltklõpsu, siis jätsite selle punkti vahele ja jõudsite otse neljanda punkti juurde.
- Kui olete .ova faili avanud, siis järgnevalt näete seadistuse akent. Seadistuse aknas peaksite muutma imporditava masina nime (lisage näiteks enda perekonnanimi olevasoleva nime lõppu), et vältida nimekonflikti. Nime muutmiseks tuleks teha "Name" välja kõrval oleval real topeltklõps ning seejärel nime täiendada. Jätkamiseks vajutage "Import".
- Nüüd kulub paar minutit, et virtuaalmasina importimine jõuaks lõpuni.
- Kui importimine on lõppenud, siis tekib "Oracle VirtualBox" akna vasakpoolsesse paneeli uus kirje, mille nimeks on infsec-win10-teienimi. Käivitage enda virtuaalmasin vajutades rohelist värvi nupule Start või tehes kirjel "infsec-win10-teienimi" topeltklõpsu.
- Nüüd avaneb must aken, mis nõuab parooli sisestamist. Kasutage selleks ainult klaviatuuri (juhend on järgmise punkti juures), hiirt ei lähe vaja enne kui töökeskkond (Windows) pole tööle läinud. Kui te kogemata vajutate virtuaalmasina aknas hiire nupu peale, siis hüppab ette allpool oleval pildil kuvatud aken, mis küsib kas tahate hiirt kinni püüda. Seda ärge kindlasti tehke, kuna mitmetel tudengitel on seejärel probleem hiire uuesti töölesaamisega. Seega kui näete vastavat akent, siis pange see lihtsalt kinni või vajutage Cancel.
- Virtuaalmasina süsteemiketas on VeraCrypti abil krüpteeritud, selle dekrüpteerimiseks sisestage parool, mille leiate Moodle foorumist. Seejärel vajutage kaks korda enterit, PIM väljale ei kirjuta me midagi.
- Virtuaalmasina sees on vajalik tarkvara juba olemas. Nüüd avage juba virtuaalmasinas brauser ning otsige üles infoturbe koduleht ja sealt praktikumimaterjalid.
- Probleemide ja segaduse vältimiseks paneme virtuaalmasina täisekraani režiimile. Selleks valime akna ülemises vasakus nurgas olevast menüüst "View -> Full-screen Mode". Pärast seda saate liikuda esimeste ülesannete juurde.
1. TLS ühenduse info uurimine
Järgnevalt vaatame kuidas saab leida infot TLS ühenduse kohta. Näitena kasutame veebilehte courses.cs.ut.ee ning uurime kuidas toimub TLS ühenduse kokkuleppimine brauseri ja vastava veebiserveri vahel, vaatame kas veebiserver on õigesti seadistatud ning otsime sertfifikaadist infot.
Tööriistad:
TLS ülesanne (2p)
Teie ülesandeks on uurida courses.cs.ut.ee sertifikaati ja TLS seadistust ning selle põhjal leida vastused allpool olevatele küsimustele. Vastused tuleb kirja panna järgnevalt lingitud faili mustand_vorm.txt. Kõigepealt salvestage vastuste fail. Selleks tehke eelneva lingi peal parem klõps ning valige tekkinud menüüst "Save As / save link as".
Oluline on rangelt järgida failiformaati. Kandiliste sulgugde vahele tuleb sisestada vastused täpselt selles formaadis, mis on küsimuses ette nähtud. Muid muudatusi failis teha ei tohi, kuna hindamine toimub automatiseeritult!
Näiteks kui küsimuse järel on kirjas [Arv], siis on vaja vastuste failis selle küsimuse juures olevate kandiliste sulgude sisse kirjutada arvulisel kujul olev vastus, kusjuures vastus ei tohi sisaldada muud teksti. Kui formaadiks on YYYY:MM:DD, siis YYYY viitab aastaarvule, MM viitab kuule ja DD viitab päevale, näiteks 2022:04:20 (formaat nõuab kooloni kasutamist). Täht tähistab ühte sümbolit (SSL testi vastusena loeme tähti A,B,C,D,E,F). Kui SSL test annab tulemuseks näiteks A+, siis on vastuseks ikka A. Olge nõutud formaadi osas tähelepanelikud!
Ülesandeks on leida vastused järgnevatele küsimustele:
- Leidke courses.cs.ut.ee domeenile sertifikaadi väljastanud sertifitseerimiskeskuse nimi. Sertifitseerimiskeskuse sertifikaadis on see tähistatud kui "common name". [Sertifitseerimiskeskuse nimi]
- Millal aegub courses.cs.ut.ee sertifikaat? [YYYY:MM:DD]
- Milline TLS versioon on kasutusel kui suhtlete courses.cs.ut.ee lehega? Jätke nurksulgude vahele vaid õige vastus. [TLS1.1 / TLS1.2 / TLS1.3]
- Kas courses.cs.ut.ee veebiserveriga kokkulepitud TLS ühendus on tulevikukindel? [Jah / Ei]
- Missugust sümmeetrilist krüpteerimisalgoritmi kasutatakse TLS ühenduse krüpteerimiseks? [Algoritmi nimi]
- Missugust avaliku võtme krüptoalgoritmi kasutatakse sessioonivõtme kokkuleppimiseks? [Algoritmi nimi]
- Kui suur on courses.cs.ut.ee avalik võti bittides? [Arv]
- Mis hinde annab https://www.ssllabs.com/ssltest/ courses.cs.ut.ee serveri TLS seadistusele? [Täht]
Esitage lahenduseks õigete vastustega täidetud mustandfail. Vastused peavad olema nurksulgude vahel ja nõutud formaadis. Muud infot ei tohi vastusesse lisada. Kui teil on kommentaare, siis lisage need kommentaaride vormi.
8. 2. praktikum -TLS info2. Signal
Signal on avatud lähtekoodiga, krüptograafide poolt arendatud suhtlusrakendus, 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 aktiveerida ka desktopi klientrakenduse (toetatud on Windows, MacOS, Debian baasil Linux distributsioonid).
Desktopi rakendust ilma telefonirakenduseta kasutada ei saa, kuna Signali protokollis on kasutaja identifikaatoriks tema telefoninumber. See on olnud ka üks põhilisi kriitikanooli Signali osas. Samas tegelevad Signali arendajad vastava protokolli täiendamisega ning seeläbi on protokolli lisatud tehnoloogiline lahendus, mis võimaldab Signali rakendusel tuvastada kontaktide hulgast teisi Signali kasutajaid ilma, et kontaktide info Signali kesksüsteemile teadlikuks saaks. Selle kohta saate täpsemalt lugeda siit: Technology preview: Private contact discovery for Signal.
Signali kasutamise kohta on EFF koostanud põhjalikud juhendid:
Kui teil on nõuetele vastav nutiseade ja tahate Signalit katsetada, siis tuleks läbi teha järgnevad sammud (täpsema kirjelduse leiate eespool lingitud EFF-i juhendist):
- paigaldage Signal (Google Play / App Store)
- Signal kasutab kontaktide leidmiseks telefoni aadressiraamatut ning selle abil on kohe võimalik näha kas mõni kontaktidest kasutab Signalit. Võimalik on uut kontakti lisada ka otse ainult telefoninumbri abil ning sellisel juhul pole vaja infot aadressiraamatusse lisada. Kontaktide otsimise katsetamiseks kasutame kõnekaardil põhinevat infoturbe kursuse jaoks loodud Signali kontot. Lisage kontaktide hulka testimise konto: viis kaheksa kaks seitse kolm null neli kuus. Vaadake kas Signali kontaktide nimekirja tekkis uus rida. Selle testnumbriga on seotud ka Signali ülesanne, mille täpsem kirjeldus on järgmises alampeatükis.
- Nüüd saate lisatud kontoga suhelda. Juhul kui teie tuttavad kasutavad Signalit, siis saate ka nendega turvaliselt ühendust võtta.
- Kui te tahate hakata Signalit kasutama, siis soovitame paigaldada endale ka desktop klient, mis lubab Signalit kasutada ka näiteks Windowsi op. süsteemis. Desktopi klientrakenduse kasutamine on võimalik alles pärast seda kui nutiseadmes on konto loodud. Selleks, et klientrakendust enda kontoga ühendada tuleb nutitelefoni kaameraga kinni püüda Signali desktopi klientrakenduses kuvatav QR-kood.
- On oluline kohe alguses aru saada, et Signali rakendus ei paku nii paljusid funktsionaalsusi nagu teised populaarsed suhtlusrakendused. Lisaks sellele on ka mõningaid probleeme vestluste sünkroniseerimisel eri seadmete vahel. Tuleb mõista, et kõrgem turvatase nõuab mõningaid ohverdusi kasutusmugavuses. Signalit ei saagi preagu veel suurema osa kontaktidega kasutada, kuna nad ei ole vastavast rakendusest teadlikud. Samas on hea kui Signali kasutajate hulk kasvab, kuna siis on suurem võimalus privaatseks suhtluseks.
Signali ülesanne (max 1p)
- Valige ja lahendage üks kahest järgnevast ülesandest:
- Saatke Signali abil sõnum infoturbe testkontole. Ostsime infoturbe testkonto jaoks kõnekaardi, mis on kasutusel ainult selle ülesande lahenduste vastuvõtmiseks. Sõnumi saatmiseks tuleks ajutiselt lisada enda kontaktide hulka järgmine number: viis kaheksa kaks seitse kolm null neli kuus. Sõnumi sees peaks olema teie pseudonüüm, et oleks võimalik ülesande eest punkt kirja panna. Sõnumi sisu kasutatakse ainult selleks, et punktide tabelisse punkt lisada, telefoninumbreid ei salvestata. Sõnumile vastust ei tule, aga näete Signali aknast kui sõnum on loetud ning tulemus ilmub tulemuste tabelisse. (1p)
- Signali protokolli peetakse krüptograafiliselt turvaliseks, aga siiski leidub teatud võimalusi sõnumiprivaatsuse ründamiseks. Lugege järgnevalt viidatud kirjutist ning selgitage artikli põhjal lühidalt, et kuidas oleks võimalik rünnata Signalit kasutava isiku sõnumiprivaatsust. Kirjeldage mitut erinevat meetodit sõnumiprivaatuse ründamiseks. (1p)
Juhul kui otsustasite teeoriaülesande kasuks, siis tuleks see esitada läbi järgneva vormi. Lahendus esitage PDF kujul.
10. 2. praktikum - Signali teooriaülesande lahendus3. DigiDoc4 abil transpordiks krüpteerimine
ID-kaardi loengus mainisime, et ID-kaarti saab kasutada transpordikrüpto jaoks. Oluline oli meelde jätta, et ID-kaardi krüpteerimise funktsionaalsus oli mõeldud transpordi jaoks, et oleks võimalik liigutada faile üle ebaturvalise suhtluskanali, milleks on näiteks email. Arhiveerimise jaoks ID-kaardi krüpteerimist kasutada ei tohiks, sest ID-kaardi kiibi töökõlbmatuks muutmise korral, kaardi kaotsimineku korral või võtmete uuendamise korral ei saa enam vastavale kaardile krüpteeritud andmeid dekrüpteerida.
ID-kaardi krüpteerimisfunktsionaalsust saab kasutada DigiDoc4 tarkvara abil. Kui DigiDoc4 tarkvara esimest korda käivitada, siis kuvatakse järgnev kolmest sammust koosnev lühiõpetus selle kohta mida oleks vaja krüpteerimiseks teha.
Täpsem õpetus asub siin: Kuidas saan krüpteerida dokumente nende turvaliseks edastamiseks?.
DigiDoc4 abil krüpteerimise ja dekrüpteerimise juhendid leiate id.ee lehelt.
DigiDoc4 krüpteerimisfunktsionaalsust kasutatakse sageli konfidentsiaalse info edastamiseks emaili teel. Reaalselt näeb see välja nii, et kõigepealt luuakse konfidentsiaalset sisu sisaldav CDOC konteiner ning see omakord lisatakse saadetavale kirjale manusena. Krüpteerimata kujul ei tohi konfidentsiaalsest infot emaili teel edastada, kuna esiteks saavad emailide sisu lugeda meiliserverid ja teiseks ei saa saatja olla kindel kas kogu teekonna vältel kasutatakse vastava emaili edastamiseks TLS-ga krüpteeritud kanaleid. Meilivahetusega seotud turvaprobleeme kirjeldatakse alamjaotises E-kirjade turvaprobleemid ning PGP abil krüpteerimine.
DigiDoc4 krüpteerimisülesanne (2p)
Teie ülesandeks on katsetada DigiDoc ja ID-kaardi poolt pakutavat krüpteerimisfunktsionaalsust, et te oskaksite seda tulevikus vajaduse korral kasutada. Ülesande lahendamiseks läheb vaja tarkvara DigiDoc4 ning enda ID-kaarti / Digi-ID-d.
Ülesanne: Looge uus tekstifail ning pange selle nimeks see pseudonüüm, mis on teile courses.cs.ut.ee lehe poolt infoturbe aine jaoks määratud. Tekitage DigiDoc4 abil krüpteeritud konteiner (.cdoc fail), mille sees olgu eelnevalt loodud tekstifail. Konteineri adressaadiks määrake enda isikukood ehk te ise. Sulgege DigiDoc4, ühendage enda ID-kaart kaardilugejaga ning käivitage uuesti DigiDoc4. Nüüd saate eelnevalt loodud .cdoc konteineri sisu ID-kaardi abil dekrüpteerida (selleks läheb vaja PIN1). Lahenduseks esitage ekraanitõmmis DigiDoc4 aknast, mille vasakpoolses küljes on näha konteineris oleva dekrüpteeritud faili nime (nimeks on teie pseudonüüm) ning parempoolses küljes on näha adressaat. Näidislahendust näete allpool. Ebaoluline info peaks olema ekraanitõmmiselt välja lõigatud, esitage ainult vaade DigiDoc4 aknast. Samuti võite ekraanitõmmisel hägustada ära isikukoodi ning failipuud kirjeldava rea nii nagu see on tehtud allpool olevas näidislahenduses. Lahendus tuleb esitada läbi allpool oleva lahendusvormi ning see peab olema kas png või jpg formaadis. (2p)
Kui te ei saa mingil põhjusel faili dekrüpteerida, siis esitage ekraanitõmmis DigiDoc4 aknast kus on näha, et te olete faili edukalt enda nimele krüpteerinud.
Lahenduse esitamiseks kasutage järgnevat vormi. Lahendus peab olema kas png või jpg formaadis.
9. 2. praktikum - DigiDoc4 ekraanitõmmis4. Failide turvaline jagamine Syncthingi abil
Syncthing on avatud lähtekoodiga tarkvara, mis võimaldab erinevate seadmete vahel turvaliselt faile jagada ilma pilveteenuseid kasutamata. Failide jagamiseks kasutatakse TLS abil loodud otspunktkrüpteeritud ühendust.
Vajadusel paigaldage enda arvutisse Syncthing. Kui kasutate infoturbe virtuaalmasinat, siis on Syncthing juba paigaldatud. Virtuaalmasina korral tuleb esimese sammuna puhastada varasem Syncthingi seadistus. Selleks kustutage kaust C:\Users\Hacker\AppData\Local\Syncthing. Seda kausta kuvatakse allpool oleval ekraanitõmmisel. Juhul kui te ei kasuta virtuaalmasinat, siis jätke see samm vahele.
Otsige üles Syncthingi ikoon ning käivitage Syncthing. Pärast programmi käivitamist kuvatakse teile tekstiga täidetud terminaliakent. Tekstist leiate värskelt genereeritud uud Syncthingi ID (My ID).
Proovime aru saada, mis täpsemalt juhtus ning missugune seadistus loodi. Avage kataloog
C:\Users\Hacker\AppData\Local\Syncthing. Sealt leiate värskelt genereeritud võtmed ja sertifikaadid. Neid kasutatakse turvatud ühenduse loomiseks. Sertifikaadifailid kasutavad .pem faililaiendit, kui Windows ei oska seda formaati avada. Selleks, et Windowsiga vastavaid sertifikaadifaile avada tuleb faililaiendust muuta ja .pem asendada .cer-ga. Teha failist cert.pem
koopia ning nimetage see ümber, et faili nimeks oleks cert.crt
. Nüüd saate faili avada ja uurida sertifikaadi kohta käivat infot.
Jätke terminaliaken avatuks ning avage brauser. Syncthingi kasutajaliidesele avamiseks kirjutage brauseri aadressiribale 127.0.0.1:8384 ja vajutage enter. Juhul kui teilt küsitakse anonüümse kasutusinfo raporteerimist, siis valige "No".
Syncthing ülesanne (2p)
Teie ülesandeks on ühenduda õppejõudude poolt üles seatud Syncthingi serveriga ja pärast seda tekitada jagatud kaust. Jagatud kausta sisse looge Notepadi abil tekstifail, mille nimeks on teie pseudonüüm.txt ja ainsaks sisuks teie pseudonüüm.
Syncthingi serveriga ühendumiseks on vaja teada serveri ID-d. Vastava ID postitame ja praktikumi ajaks ka siia lehele: RN3WUKJ-XNG3GR4-CPGE3CR-UDNLARA-KNH42AY-ZJWSKMP-O47WJL2-UI2GVA5
Kopeerige see ID ja kasutage seda ühenduse loomiseks. Selleks tuleb Syncthing brauseriaknas vajutada nupule "+Add Remote Device".
Nüüd täitke järgnevad väljad: Device ID ja Device Name. Device ID on see sama ID, mille te kopeerisite ennist kas Moodle foorumist või siit samast lehelt. Seadme nime (device name) võite ise valida, see kajastub ainult teie enda vaates.
Ühenduse loomiseks peab õppejõud ühenduskutse vastu võtma.
Kui ühendus on loodud, siis peaksite nägema sarnast vaadet nagu allpool oleval ekraanitõmmisel.
Järgmiseks ülesandeks on luua uus kaust, mida saab infoturbe Syncthing-ga jagada. Iga tudeng peab looma kausta, mille nimeks on teie pseudonüüm.
Kausta jagamiseks tuleb vajutada nupule "+Add Folder" ning seejärel sisestada jagatud kausta nimi (teie pseudonüüm).
Jagage värskelt loodud kaust infoturbe Syncthingi kontoga. Selleks vajutage infoturbe Syncthingi seadme nime peal (remote devices) ja vajutage "edit" nuppu. Seejärel otsige üles "Sharing" -> "Unshared folders". Märkige ära enda pseudonüümi nimega kaust. Nüüd on kaust jagatud infoturbe Syncthingi kontoga.
Avage jagatud kaust ning looge selle sisse Notepadi abil uus tekstifail, mille nimeks on teie pseudonüüm.txt ning mille sisuks on teie pseudonüüm. Kui te ei tea kus jagatud kaust asub, siis vajutage Syncthingi aknas vastava kasuta peale. Virtuaalmasinates asuvad jagatud kaustad siin: C:\Users\Hacker\name_of_shared_folder.
Kasutage file explorerit ja avage vastav kaust ja looge Notepadiga eelnevalt kirjeldatud tekstifail (.txt fail, mitte .docx). Paigutage see tekstifail jagatud kausta. Avage Syncthingi brauseriaken ning tehke ekraanitõmmis, millelt on näha jagatud kausta nimi ja infoturbe Syncthingi ID.
Ülesande sooritamiseks on vaja, et üks õppejõududest võtaks vastu ühenduskutse. Juhul kui te teete seda ülesannet iseseisvalt, siis tuleb teil oodata kuniks õppejõud on ühenduskutse vastu võtnud. Õppejõud kontrollivad syncthingi ühenduskutseid korra päevas (tööpäevadel). Alternatiivina võite luua Syncthingi ühenduse kahe erineva seadme vahel ning teha tulemusest (loodud ühendusest ja jagatud failist ekraanitõmmised). Kui teil on mitu ekraanitõmmist, siis pakkige need kokku .zip failiks.
Lahenduseks esitage ekraanitõmmis, millel on näha jagatud kaust.
16. 2. praktikum - Syncthing ekraanitõmmisMeilivahetuse turvalisus ning PGP abil krüpteerimine
Selle peatüki eesmärgiks on tutvustada seda kuidas emailide saatmine toimib ning näidata kuidas on võimalik Thunderbirdi abil emaile krüpteerida. See funktsionaalsus on siiski küllaltki piiratud kasutusalaga, kuna krüpteerimise jaoks on vaja, et ka adressaat kasutaks sama tarkvara ning oleks vastava funktsionaalsuse aktiveerinud.
Järgmised paar alampeatükki on informatiivsed ning me ei eelda, et te jätaksite lühendid SMTP, POP3, IMAP, STARTTLS, MTA, OTR endale meelde ning saaksite kõigest aru. Samuti ei eelda me, et te peaksite teadma, mis on pordid, kuna sellest räägime me loengus, mis käsitleb tulemüüre. Samas peaksite te need informatiivsed materjalid läbi lugema, et teada saada, mis on emailidega seonduvad põhilised turvaprobleemid. Seda taustainfot on vaja ka selleks, et aru saada PGP ülesandest.
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)
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.
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.
Praktikumi lõpetamine
Kui kasutasite virtuaalmasinat ja saite ülesande tehtud, siis võite virutaalmasina eemaldada. Kui kasutasite arvutiklassi arvutit, siis tuleb masinast välja logida.
- Kõigepealt sulgege virtuaalmasin. Te peaksite Start menüüst nägema, et virtuaalmasina kasutajakonto nimeks on Hacker. Virtuaalmasina sulgemiseks valige Start menüüst "Power" -> "Shut down".
- Eemaldage VirtualBoxi tarkvara abil praktikumi alguses imporditud virtuaalmasin. Selleks tehke selle virtuaalmasina nimel parem klõps ning valige tekkinud menüüst "Remove..." ja seejärel dialoogiaknast "Delete all files".
- Kui te kasutatate virutaalmasinat arvutiklassi arvutis, siis tuleb teil kindlasti ennast arvutiklassi arvutist välja logida. Selle jaoks on teil desktopil eraldi "Logoff" nupp. Juhul kui jääte sisselogituks, siis takistab see teistel tudengitel selle arvuti kasutamist ning selle eest võime anda miinuspunkte.
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).
Kasulikud lingid
- Relevantsed artiklid
- PGP
- GPG, Thunderbird