Zapisi in dokumenti iz področja prava, človekovih pravic in tehnologije.

Šifriranje med končnimi točkami ali centralizacija šifriranja?

Šifriranje celotne komunikacijske poti, znano tudi kot šifriranje med končnimi točkami oz. z angleškim izrazom end-to-end encryption, je koncept, ki je sicer znan že dolgo časa, a popularnost je pričel pridobivati šele v zadnjih letih. Vendar pa na področju šifriranja komunikacij obstajata dva koncepta.

Centralizirana šifrirana infrastruktura

Prvi koncept predvideva centralizirano šifrirno infrastrukturo. Komunikacija med uporabniki oziroma končnimi napravami (terminali) tam poteka preko centralnega strežnika (lahko jih je tudi več, bistveno je, da so med seboj ustrezno usklajeni). Šifrirna seja se vzpostavi med napravo in centralnim strežnikom, strežnik nato poskrbi za povezavo z drugimi končnimi napravami in z vsakim parom (končna naprava – strežnik), se vzpostavi ločena šifrirana seja.

Tak način šifriranja uporabljajo med drugim tudi ponudniki spletne elektronske pošte in nekateri ponudniki internetne telefonije. Poglejmo si tipičen primer. Ko uporabnik A želi z odjemalcem internetne telefonije (VoIP) poklicati uporabnika B, ki je prijavljen na isto telefonsko centralo, komunikacija poteka takole:

  • med VoIP odjemalcem uporabnika A in VoIP strežnikom se vzpostavi TLS šifrirana komunikacijska seja;
  • po tej šifrirani povezavi uporabnik na strežnik pošlje zahtevo za klic uporabnika B;
  • sporočilo se na strežniku dešifrira in strežnik začne klicati uporabnika B;
  • ko uporabnik B odgovori na klic, se med njegovim VoIP odjemalcem in VoIP strežnikom vzpostavi druga šifrirana komunikacijska seja;
  • podatki (govorna komunikacija) sedaj v šifrirani obliki tečejo od uporabnika A do VoIP strežnika ter nato od tam dalje do uporabnika B – in obratno (ker je komunikacija seveda dvosmerna).

Komunikacija torej poteka preko centralnega strežnika, šifriranje pa poteka od prve naprave do centralnega strežnika, na strežniku se komunikacija dešifrira in nato ponovno šifrira za drugo napravo, kamor se komunikacijski paketki na koncu tudi pošljejo.

Ta sistem zato predvideva, da uporabniki zaupajo centralnemu strežniku oziroma, da ima upravljavec ta strežnik pod lastnim nadzorom. Centralni strežnik namreč v tem primeru predstavlja “točko zloma” (angl. single point of failure), saj je na strežniku mogoče prisluškovanje komunikacijam. Poleg tega strežnik lahko beleži prometne podatke – kdo komunicira s kom, kdaj in koliko časa.

To pa pravzaprav lahko ugotovi tudi napadalec, ki nima dostopa do strežnika. Če namreč napadalec uspe prisluškovati komunikacijam centralnega strežnika, bo lahko ugotovil kdaj je npr. nek odjemalec internetne telefonije s telefonskim strežnikom vzpostavil šifrirano povezavo, v naslednjem trenutku pa je VoIP strežnik poiskal drugo napravo ter z njo vzpostavil drugo šifrirano sejo. S pomočjo korelacijske analize bo nato opazoval količino podatkov, ki se pretaka med uporabnikom A in strežnikom ter jo primerjal s količino podatkov, ki se pretaka med uporabnikom B in VoIP strežnikom. Čeprav so podatki šifrirani, bo napadalec lahko z veliko gotovostjo ugotovil kdo komunicira s kom in tudi v kakšnem obsegu. To je še posebej enostavno, če je komunikacijskih sej na strežniku razmeroma malo in če je komunikacijska infrastruktura močno centralizirana (torej da se uporablja samo en centralni strežnik in ne na primer oblak več, med seboj povezanih strežnikov).

Šifriranje med končnimi točkami

Precej drugačen pa je koncept šifriranja pri šifriranju celotne komunikacijske poti oziroma šifriranju med končnimi točkami. Tam se šifrirana seja vzpostavi med posameznima končnima točkama (terminaloma), kar pomeni, da so komunikacije šifrirane na celotni komunikacijski poti od uporabnika A do uporabnika B. Zato jim ne more prisluškovati ne ponudnik omrežne infrastrukture, niti ponudnik komunikacijske storitve (operater).

Komunikacija v tem primeru lahko poteka čez centralni strežnik ali pa tudi ne. Tovrstni sistemi za vzpostavitev povezave med končnimi napravami sicer večinoma uporabljajo centralno infrastrukturo, a centralna infrastruktura lahko služi zgolj za iskanje naprav in njihovo povezavo (deluje kot nekakšen telefonski imenik). Mimogrede, komunikacija med odjemalcem in strežnikom, kjer klicoči odjemalec strežnik prosi za povezavo z odjemalcem, ki ga kliče, ravno tako poteka šifrirano. Vsa nadaljnja komunikacija, tako izmenjava šifrirnih ključev, kot tudi izmenjava šifriranih sporočil nato lahko poteka neposredno med posameznimi napravami (tim. peer-to-peer, P2P). Korelacijsko analizo je zato precej težje izvesti, še zlasti, če je na strežniku veliko prometa.

Nekateri sistemi pa sploh ne predvidevajo centralne infrastrukture, pač pa iskanje tim. omrežnih vrstnikov (angl. peer) poteka popolnoma decentralizirano (navadno s pomočjo sistema DHT – Distributed Hash Table). Taki sistemi omogočajo tudi neovirano komunikacijo med napravami, ki se nahajajo v povsem izoliranem omrežju.

Pri takih sistemih prisluškovanje komunikacijam na vmesni infrastrukturi (torej kjerkoli med končnimi napravami) ni mogoče, oteženo pa je tudi beleženje prometnih podatkov. Centralni strežnik sicer lahko vidi kateri dve posamezni napravi sta se povezali in kdaj, a če nadaljnja komunikacija med njima poteka neposredno, centralni strežnik ne more ugotoviti časa trajanja komunikacije in količine prenesenih podatkov. Pri popolnoma P2P komunikaciji pa niti to ni mogoče oziroma je v najslabšem primeru bistveno oteženo.

Če tak sistem omogoča uporabo anonimnih identitet in če uporabniki do sistema dostopajo preko posredniških strežnikov ali anonimizacijskega omrežja, je celotna komunikacija med uporabniki ne samo šifrirana, pač pa tudi (skoraj) povsem anonimna (popolno anonimnost je sicer težko doseči).

V tem primeru ponudnik dostopa do interneta ve zgolj to, da se je uporabnik povezal v anonimizacijsko omrežje (ali na posredniški strežnik oziroma v VPN omrežje), ne ve pa kam se je nato povezal naprej. Na drugi strani pa ponudnik komunikacijske storitve pa ne ve pravega IP naslova iz katerega prihaja uporabnik niti njegove resnične identitete (če uporabnik uporablja anonimno identiteto). Komunikacija med uporabniki je tako ali tako šifrirana, ponudnik komunikacijske storitve sicer lahko beleži prometne podatke a ne ve komu pripadajo, ponudnik dostopa do interneta pa ne ve katere storitve uporabnik sploh uporablja. Na tem mestu je seveda potrebno dodati, da ima tako visoka stopnja anonimnosti tudi svojo ceno. Le-ta se v tem primeru kaže v obliki visoke latence (zakasnitve pri prenosu komunikacijskih paketov preko omrežja), kar onemogoča govorno komunikacijo v realnem času. Je pa na ta način mogoče brez večjih težav pošiljati tekstovna in multimedijska sporočila, oziroma posneta zvočna sporočila.

V primeru šifriranja med končnimi točkami je torej centralizirano upravljanje s šifrirnimi ključi nepotrebno, saj se za vsak komunikacijski par uporabljajo drugi šifrirni ključi. Res pa je, da morajo varnost posamezne seje v tem primeru preveriti uporabniki sami. Zato tovrstne rešitve zahtevajo preverjanje digitalnega podpisa sejnega šifrirnega ključa oziroma identitete komunikacijskega partnerja, saj lahko le s tem zagotovimo, da med dvema uporabnikoma ne poteka napad s posrednikom (tim. MITM napad). Za to preverjanje se uporabljajo različne tehnike. Odjemalci varne VoIP telefonije (ki poteka preko protokola ZRTP) uporabljajo tim. SAS – short authentication string. Gre za to, da se obema komunikacijskima partnerjema na zaslonu izpišeta dve kratki besedi, ki predstavljata digitalni podpis njunega skupnega šifrirnega ključa – če se besedi ujemata, to pomeni, da je povezava med uporabnikoma varna in ne poteka MITM napad. Aplikacija Signal uporablja podoben mehanizem in sicer tim. varnostna števila. Ideja tam je podobna – uporabnika preverita ali se varnostna števila pri obeh sogovornikih ujemajo in če se, je komunikacija varna.

Je pa seveda mogoče vzpostaviti sistem, ki omogoča, da se vanj vključijo samo overjeni uporabniki. V tem primeru upravljavec sistema potrebuje centralni strežnik zgolj za digitalno overjanje uporabnikov, podobno kot delujejo overitelji spletnih digitalnih potrdil. To seveda pomeni, da ima upravljavec sistema nad svojimi uporabniki nekaj dodatnega nadzora, med drugim lahko njihovo overitev prekliče ter jim s tem onemogoči dostop do sistema oziroma uporabo šifrirane komunikacije. Ta sistem seveda ne izključuje uporabe šifriranja med končnimi komunikacijskimi točkami.

Ali je centralizacija res rešitev?

Čeprav se ideja, da ima upravljavec sistema celotno šifrirno infrastrukturo ali vsaj njen strežniški del po svojim izključnim nadzorom zdi precej privlačna, pa po globljem premisleku lahko ugotovimo, da centralizacija le nima takšnih prednosti, kot se morda kaže na prvi pogled.

Da bi bil sistem res v popolnem nadzoru upravljavca, bi le-ta moral imeti pod nadzorom tudi vse komunikacijske poti preko katerih njegovi uporabniki dostopajo do centralnih strežnikov. To pa je danes praktično nemogoče. Ne gre samo za to, da se uporabniki lahko nahajajo v tujini, gre tudi za to, da za komunikacijo, ki poteka med dvema točkama znotraj posamezne države ni nujno, da bo tekla zgolj po ozemlju te države. Podatkovni paketi na internetu se namreč ne ozirajo na nacionalne meje, pač pa povezave potekajo po v danem trenutku najbolj optimalnih povezavah. Poleg tega je z določenimi napadi povezave med točkami v omrežju mogoče tudi preusmeriti na poljubno komunikacijsko pot.

Centralizacija šifrirne infrastrukture ima pravzaprav le eno pomembno prednost. Upravljavcu sistema omogoča prisluškovanje komunikacijam njegovih uporabnikov – in to ekskluzivno (to je morda pomembno v kakšnih zaprtih organizacijah, kjer znotraj takšnega omrežja poteka zgolj službena komunikacija). A hkrati prinaša tudi veliko tveganje. Kot rečeno centralni strežnik predstavlja “točko zloma”, zato v primeru njegovega kompromitiranja (pa naj bo to zaradi ranljivosti v programski ali strojni opremi ali zaradi podkupljenih ali premalo skrbnih sistemskih administratorjev sistema), z enim zamahom pade varnost celotnega sistema.

Če torej želi napadalec kompromitirati sistem, bo v primeru centralizacije to najlažje dosegel z napadom na centralno infrastrukturo ali njene upravitelje, v primeru decentralizirane infrastrukture pa bo moral napasti vsako končno točko posebej. To pa je zamudno in drago.

Iz tega razloga sodobni šifrirni sistemi čedalje bolj uporabljajo šifriranje med končnimi točkami. Hkrati gre trend v smer komuniciranja preko P2P, torej neposredno med napravami, kar poleg večje anonimizacije tudi razbremenjuje centralno infrastrukturo.

Sodobni šifrirni sistemi uporabljajo tudi tehnologije poudarjene zaupnosti (tim. perfect forward secrecy). V tem primeru komunikacija med posameznima napravama ni šifrirana vedno z istim šifrirnim ključem, pač pa se šifrirni ključi z vsako novo sejo oziroma na določeno časovno obdobje samodejno spreminjajo. Če napadalcu uspe razbiti enega izmed teh šifrirnih ključev, bo lahko dešifriral le promet, ki je bil šifriran v tej seji in med danima dvema napravama. Za razbitje katerikoli druge šifrirne seje bo moral kriptoanalizo izvesti zopet od začetka. Poudarjena zaupnost sicer ščiti šifrirane komunikacije tudi če napadalcu kdaj kasneje uspe pridobiti glavno digitalno potrdilo.

V primeru uporabe poudarjene zaupnosti in šifriranja med končnimi točkami napadalcu torej ne preostane drugega kot (dolgotrajen in mukotrpen) napad na posamezne končne točke v sistemu. Povedano drugače – z vdorom na strežnik napadalec ne doseže praktično nič, vdreti mora na vse mobilne naprave, ki ta strežnik uporabljajo. To je sicer izvedljivo, a zahteva bistveno večja sredstva in traja bistveno več časa.

Iz navedenih razlogov se je potrebno otresti mitov o tem, da z nadzorom komunikacijske infrastrukture lahko zagotovimo varnost celotnega sistema. Tak sistem je bolj ranljiv, saj centralni strežnik oziroma osebje ki zanj skrbi, predstavlja najbolj ranljivo točko v sistemu.

Poleg tega je ideja, da mora biti strežnik pod nadzorom in v upravljanju upravljavca sistema nekoliko pomanjkljiva. V primeru centralizacije šifrirne infrastrukture je strežnik sicer lahko pod nadzorom upravljavca, a problem je, da upravljavec ne nadzoruje tudi omrežja preko katerega odjemalci komunicirajo s strežnikom oziroma komunikacijskih poti med njimi.

Zato je šifriranje med končnimi točkami inovacija, ki varnost centralnega strežnika ter omrežne infrastrukture naredi nepomembno. Zaradi te inovacije tudi lastništvo omrežne in komunikacijske infrastrukture postane nepomembno, saj varnost ne temelji več na lastništvu in nadzoru, pač pa se zagotavlja na povsem drugačen način. Seveda ima tudi centralizacija določene prednosti, a pri odločitvi kateri sistem bomo uporabili je potrebno o varnosti razmišljati celovito in uporabiti prave argumente.

In kot smo videli, argument, da lastništvo centralnega strežnika zagotavlja njegovo varnost, ni med njimi.