subota, 20 aprila, 2024
Internet, mreže i komunikacije

Enkriptovana elektronska pošta (3. deo)

Autor: Petar Simović

Ova tema postaje sve popularnija, pa se tako sada ujedinjuju Lavabit i Silent Circle i formiraju zajedničku alijansu pod imenom Darkmail (https://www.darkmail.info/ ). Pojavljuju se i hardveri koji će celu enkripciju raditi automatski za vas ( https://kinko.me/ ). Tu je i budući webmail klijent Mailpile ( https://www.mailpile.is/ ) koji je još u alfa fazi testiranja, ali ga je moguće skinuti kod sa github-a i isprobati. Korisnicima koji su navikli da poštu proveravaju iz internet pretraživača, najverovatnije bi najviše odgovarao neki program u vidu dodatka pretraživaču koji je u isto vreme i menadžer njihovih ključeva. Dva takva su sigurno WebPG ( https://webpg.org/ ) i Mailvelope ( https://www.mailvelope.com/ ), veoma su intuitivni i pogodni za početnike (pored Thunderbird-a i Clawsmail-a). Nažalost, autor ovog teksta ih ne preporučuje jer umanjuju nivo sigurnosti i bezbednosti iz prostog razloga što u tom slučaju morate da se pouzdate da ni sam dodatak pretraživača (ekstenzija/plugin) ni pretraživač neće da vas iznevere i odaju trećoj strani vašu tajnu, tj. da nemaju neki propust ili neku ranjivost koja bi napadaču odala vaš tajni ključ.

Naravno, ceo proces oko ključeva, šifrovanja i sertifikata moguće je bilo odraditi preko komandi iz terminala, a programi poput Thunderbird-a i Clawsmail-a su samo interfejs za korisnike koji još nisu napredovali do čina hakera. Tako je, na primer, sledećih šest komandi sve što vam je potrebno da biste već opisani proces iz prethodnog dela odradili iz terminala za vežbu, ako imate još neki imejl nalog viška:

  • Generisanje ključeva:
gpg --gen-key
  • Izvoz javnog ključa:
gpg --armor --export your@email.address

na ekran ili u datoteku ako na ovu komandu dodate još

>>mypubkey.txt
  • Izvoz privatnog ključa:
gpg --armor --export-secret-key your@email.address

na ekran ili u datoteku ako na ovu komandu dodate još

>>myprivkey.txt
  • Generisanje sertifikata za opoziv ključeva („Revocation certificate”) ukoliko je tajnost privatnog ključa ugrožena ili ste jednostavno izgubili uređaj na kome ste ga čuvali:
gpg --output revoke.asc --gen-revoke  your@email.address
  • Slanje javnog ključa na server ključeva:
gpg --send-keys ID

gde je ID ustvari ID broj vašeg javnog ključa i treba da izgleda slično ovom ID-u: 6382285E.

  • Pretraga javnog ključa osobe kojoj želite slati šifrovanu poštu na serveru javnih ključeva:
gpg --search-keys your@email.address

Loše strane PGP-a

Pre nego što pomenemo još neke zanimljive programe i projekte, objasnićemo čemu služi takozvani „sertifikat za opoziv” ključeva koji smo malopre spomenuli, a u prošlom broju smo savetovali da ga napravite i sačuvate. Naime, ako vas zadesi nesrećan slučaj da izgubite laptop na kome se nalazio vaš privatni ključ, a prethodno ste kopiju istog sačuvali i na nekoj drugoj spoljnoj memoriji zajedno sa ovim sertifikatom i tajnom frazom, onda možete druge upozoriti na moguću ugroženost vašeg tajnog ključa koristeći ovaj sertifikat. Ako napadač (ili lopov haker) dođe do vašeg tajnog ključa, onda može dešifrovati sve vaše prethodne poruke. Upotrebom sertifikata dajete do znanja ostalima koji žele da sa vama razmenjuju privatnu poštu (slanjem opozvanih ključeva na server javnih ključeva), da su ključevi neupotrebljivi i da nije sigurno da ih koriste. U tom slučaju, morate generisati nove i poslati ih na server (više na http://goo.gl/IWoS4v). Komande su sledeće:

  • Generisanje serifikata ukoliko to niste ranije uradili:
gpg --gen-revoke KEY_ID
  • Uvoz sertifikata za opoziv ključeva:
gpg --import revoke.asc
  • Slanje opozvanih ključeva na server – „update” ključeva:
gpg --send-keys KEY_ID

Ovo je samo jedan od, uslovno govoreći, nedostataka sadašnjeg načina funkcionisanja PGP-a, tj. jedan tajni ključ otključava sve predhodne tajne šifrovane poruke. Naravno, rešenje postoji upotrebom PFS (Perfect Forward Secrecy) protokola koji sprečava da se ovakav scenario odigra, jer se svaka nova komunikacija obavlja novim parom ključeva nakon koje se ključevi za tu transakciju odbacuju i više nikada ne koriste. Tako da ma kog ključa sa napadač domogao, ne može dešifrovati njime sve pređašnje komunikacije zato što ključevi među sobom nemaju nikakve veze. Naravno, ovo je mnogo lakše reći nego uraditi zato što postoji velika razlika u arhitekturi tj. kada je PGP nastao 1991.godine prošlog veka, nije još postojao PFS protokol, a sada se koristi u „instant messaging” programima. Ko koristi ovakav protokol, a ko ne možete videti ovde: http://goo.gl/GaiE1V.

Drugi ovakav nedostatak je poznati problem sa distribucijom javnih ključeva i njihova verifikacija. Objasnićemo ovo na primeru. Recimo da na Twitter-u nađete osobu (novinara) kojoj bi poslali šifrovan mejl sa poverljivim dokazima protiv nekog. Na Twitter-u je ta osoba ostavila svoj PGP otisak (Fingerprint) ili ID ključa, pa je logično da poseduje i par ključeva, a javni ključ se najverovatnije nalazi na nekom od servera javnih ključeva i možete ga dobiti komandom iz terminala:

gpg --recv-key 6382285E

Osim što u nekim verzijama PGP-a nema provere na vašem računaru da li se otisak (fingerprint) preuzetog javnog ključa poklapa sa onim koji je tražen, ovde morate da „verujete” serveru ključeva da vam prosleđuje pravi ključ. Zvuči pomalo paranoično, zar ne? Razmislite još jednom, osim što svako može startovati svoj server ključeva i uključiti ga u postojeću mrežu, već postojeći serveri nisu i ne moraju biti naročito bezbedni jer ne čuvaju nikakve tajne, te postoji realna mogućnost da ih neko hakuje jer sa većom popularnošću tehnologije dolaze i veća opasnost i veći rizik. Još se nije ovako nešto desilo i ne znamo šta bi sve napadač mogao postići i kakvu štetu naneti, ali je sigurno da ne treba imati potuno poverenje u informacije sa ovih servera i valja ih proveravati. Na stranu sve to, mana je u samoj arhitekturi sistema jer je delom centralizovana, a nije distribuirana na same korisnike, pa korisnici moraju da veruju serveru koji ne mogu da provere. Naime, serveri javnih ključeva međusobno sinhronizuju svoje baze podataka ključeva i tu su da nam olakšaju pretragu ključeva, ali nikako nisu neizbežni. Tako da se ovaj problem može rešiti tako što se organizuju javna sastajanja (poznatije kao Key-signing party) i onda se fizički razmenjuju i potpisuju ključevi sa osobama koje lično znate i na taj način stvarate svoju „mrežu poverenja” (Web of TrustWOT). Iako je ovo malo nepraktično, ima i svojih dobrih strana – upoznavanje novih ljudi i razmena veština.

Da ne bi bilo nikakve zabune, PGP pruža privatnost i bezbednost šifrujući poruke tj. njihov sadržaj, autentičnost upotrebom heš (hash) funkcija i digitalnog potpisivanja poruka i uopšteno svake vrste datoteka. Ali nikako anonimnost, jer se hederi (headers) poruke tj. adresa pošiljaoca i primaoca ne šifruju i za stranog posmatrača su dostupni. Tehnički rečeno, PGP ne sakriva metapodatke. Tako da ako koristite Gmail, Google zna da ste juče poslali poruku „tom i tom” korisniku, tačno vreme slanja, IP adresu sa koje ste slali, ali ukoliko ste šifrovali poruku ne znaju sam njen sadržaj. Zanimljivo je pomenuti da su Yahoo i Google uvideli potencijalnu korist od „enkripcije” svoje pošte, pa su najavili da će dogodine implementirati istu u svoje servise, a Google je već postavio i kod svog budućeg softvera slobodnog za preuzimanje sa Git-a (više na: http://goo.gl/P33PN7http://goo.gl/quc0cs, http://goo.gl/xIw23o, http://goo.gl/v3Zvoo ). Ovo nije nikakva revolucionarna novina koju je „svemoćni” Google upravo izmislio, već ga primenjuju neko vreme menje poznate kompanije poput Openmailbox-a koji ima i zanimljiv jednokratni mejl da ne biste morali sumnjivim sajtovima da dajete pravu adresu. Stvar je u tome što su ovi giganti uvideli priliku da se ubace i na ovo tržište jer postaje sve popularnije, ono bi im obezbedilo poziciju centralih pouzdanih autoriteta. Ako se toga domognu, ne verujemo da će bezbednost biti ništa bolja pre svega zato što bi pod određenim okolnostima mogli da izvode takozvane MITM (Man-in-the-middle) napade i zaobiđu dešifrovanje poruka. Više na http://goo.gl/AdlCXa i http://goo.gl/dh1C7e.

Svetla budućnost

Na našu sreću, nije sve baš tako crno i nove, bolje ideje se rađaju skoro svakodnevno, pogotovo kada smo na to prinuđeni i inspirisani Snowden-ovim objavljivanjem. Iz tih ideja se ponekad i „skuva” neka nova i bolja aplikacija ili program, pa pogledajmo neke. Pre svega, jedna od najnovijih je svakako Keybase ( https://keybase.io/ ), to je onlajn program ali takođe se može njime upravljati iz komandne linije odnosno terminala. Keybase je na neki način server javnih ključeva, ali umnogome olakšava baratanje ključevima i sertifikatima, njihovu verifikaciju, kao i traženje osobe sa kojom želite da se dopisujete. Ono što ga izdvaja od običnog servera ključeva je povezivanje vaših ključeva sa vašim nalozima na Reddit-u, Twitter-u, Hacker news sajtom, GitHub-om i vašom bitcoin adresom ili vašim sajtom kako bi drugi bili što sigurniji da ste to vi, i da upotrebom vaših ključeva zapravo pišu vama. Otrkivanje i povezivanje vaših identiteta bi inače bilo problem, ali pošto PGP ionako ne pruža anonimnost onda to nema štetnih efekata. Program je još uvek u alfa stepenu razvoja i mali broj je pozvan na testiranje. Mada možete da se pridružite projektu i rezervišete ime na sajtu i bićete tek neki 1600-ti, ali ako ste ozbiljno zainteresovani za ovaj projekat administratori su nekim testerima podarili pozivnice za buduće korisnike koji su ozbiljni i zaista žele da doprinesu programu. Autor ovog testa ima pet pozivnica, tako da će pet najbržih koji pošalju mejl sa naslovom Keybase na „keybase@openmailbox.org” dobiti mejl sa linkom za registraciju. Mejl mi je neophodan, jer moram uneti mejl osobe koju želim da pozovem.

Tu su i napredniji projekti poput Pond-a ( http://goo.gl/axqNwx ), koji nije ni klasični mail protokol ni IM (instant messaging) aplikacija, već jednostavno asinhroni P2P program koji je u dopisivanje uspeo da ubaci i PFS, a poruke se automatski brišu nakon nedelju dana. Ovo je i dalje u razvoju i nemojte ovaj program još koristiti ni za šta ozbiljno. Veoma sličan projekat je i Flowingmail ( https://goo.gl/ ) koji iako nije ostvario željenu sumu kao start-up na Indiegogo sajtu ( http://goo.gl/psWb6m ) pre skoro godinu dana, to ga nije obeshrabrilo i nisu odustali od svoje zamisli P2P decentalizovanog, sigurnog mejl protokola, gde se adrese računara na koji šaljete računaju po javnom ključu tako da ne mogu biti falsifikovane.

Ono što predhodna dva projekta i Darksmail pokušavaju da urade, jeste da nam pored navedenih dobrih osobina PGP-a, pruže i onu jednu koja nedostaje – anonimnost. Darkmail to postiže end-to-end enkripcijom, čime sakriva sve metapodatke i postiže anonimnost iz perspektive stranog posmatrača.

U sledećem delu ćemo se upoznati sa anonimnim email sistemima koji su nastali još davnih devedesetih, i posle nekoliko faza razvoja i unapređenja u upotrebi su i danas.

Naredni deo ovog serijala možete pročitati ovde.

Prethodni deo ovog serijala možete pročitati ovde.