V minulom článku sme sa pozreli na zúbok Signalu a Telegramu, dvom gigantom v obore šifrovanej komunikácie a porovnali sme si niektoré ich features, ako aj úroveň ich bezpečnosti a súkromia. Mimo iné, tak trochu sme si aj načrtli dva ďalšie messengery, ktoré majú našliapnuté v tom stať sa jedničkou v oblasti bezpečnej a súkromnej komunikácie – a nie je nimi nič iné než Session a SimpleX.
Poďme si tieto dva nové rozbiehajúce sa projekty porovnať. Ešte predtým chcem ale zmieniť, že ako SimpleX, tak aj Session, sú stále sa ešte rozbiehajúce messengery, ktoré neustále postrádajú množstvo kľúčových vlastností, ktoré sú minimálne z môjho pohľadu nevyhnutné pre ich každodenné používanie. Neberte teda tento článok ako nejaký ultimátny súd nad oboma aplikáciami – skôr ho radšej vnímajte ako nestrannú rekapituláciu toho, v akom stave sa momentálne obe aplikácie nachádzajú a v čom je každá z nich unikátna.
Poďme teda na to!
Session
Session je akýmsi decentralizovaným forkom Signalu od spoločnosti Loki Foundation. Na rozdiel od Signalu však Session disponuje veľkou feature z oblasti súkromia, ktorou je jednoducho to, že nie je previazaný s telefónnym číslom.
Namiesto telefónneho čísla vám aplikácia Session vygeneruje vaše vlastné user ID, podobne ako to robí napr. messenger Threema.
Vaše ID je náhodné (jedinečné) a bude vyzerať nejako takto: 05652245af9a8bfee4f5a8138fd5c……..
Jediné, čo pre komunikáciu na Session potrebujete, je teda zazdieľať svoje ID s kontaktom, ktorý si chcete pridať. Alebo sa tak isto môžete rozhodnúť aj pre získanie QR kódu po vytvorení účtu, ktorý môžete zdieľať so svojimi priateľmi, aby si vás do svojich kontaktov pridali oni. Jednoduché.
Tento spôsob hrania sa s ID v mnohých ohľadoch pripomína Threemu, no na rozdiel od Threemy nie je v Session možné priradiť k vášmu účtu telefónne číslo, dôsledkom čoho si vaše Session ID musíte vymeniť cez nejaký iný komunikačný kanál (napr. cez spomínanú Threemu). Nikomu v Session totiž nenapíšete bez toho, aby ste poznali jeho ID.
Zaujímavou feature Sessionu je ďalej aj používanie blockchainu. Ak vás zaujímajú samotné detaily toho, ako appka blockchain využíva, môžete si prečítať ich blog post, ktorý to relatívne podrobne vysvetľuje.
O tejto feature si niečo podrobnejšie povieme konkrétne v časti “Trochu techniky (a blockchainu)”. Ďalším zaujímavým prepojením Sessionu so svetom kryptomien je mimo blockchainu aj záloha účtu pomocou 12 slov, ktoré veľmi nápadne pripomínajú klasický kryptomenový seed. Identifikátory užívateľov sú v tomto prípade náhodne vyzerajúce reťazce znakov, ktoré reprezentujú verejný kľúč. Vďaka tomu v Session neexistuje “overovanie” užívateľov – ak niekomu viete napísať a máte správnu adresu, môžete si byť istí, že vám nikto nepodhodil nesprávne kľúče.
Čo ďalej so súkromím?
Mimo iné je ďalšou výhodou messengeru Session aj to, že na rozdiel od Signalu a iných vylomenín je Session decentralizovaným projektom, ktorý je na miesto jednej konkrétnej entity ovládaný komunitou ľudí. Session navyše využíva Signal protokol a v porovnaní so samotným Signalom sú jeho správy onion routed by default.
Aj keď sa však môže zdať Session ako lepší projekt než je Signal, Session napr. nepodporuje group calls, či dokonca ani voice a video calls. V mojej bubline navyše Session nemá veľmi dobrý network effect a zatiaľ osbone nevidím zmysel v tom, používať ho priamo ako substitúciu Signalu. Ak chce Session dobehnúť Signal, čaká ho ešte veľa práce, ale projekt ako taký sa pomerne rýchlo rozvíja, dolaďuje bugy a krátko pred písaním tohto článku navyše vyšiel aj s desktopovou aplikáciou, ktorá doteraz chýbala.
Napriek onionovaniu Session správ však tento projekt navyše postihlo aj množstvo zlyhaní, práve v súvislosti so súkromím. Zo svojho forknutého Signal protokolu sessionisti napr. odstránili perfect forward secrecy – odstránenie perfect forward secrecy tak vystavuje všetky vaše predchádzajúce správy riziku dešifrovania po kompromitácii vášho šifrovacieho kľúča.
Pre vaše vlastné bezpečie preto zatiaľ používajte Signal a iné protokoly, ktoré poskytujú PFS. Session je však stále vo vývoji, dolaďuje mnoho vecí a osobne mu veľmi fandím.
Trochu techniky (a blockchainu)
Session sa ako decentralizovaná komunikačná platforma spolieha na svoju sieť Service Nodes – decentralizovanú sieť uzlov prevádzkovanú komunitou. Táto decentralizácia je pritom základným kameňom architektúry Session. Ako to však súvisí s technológiou blockchain?
Pokiaľ už viete čo je to blockchain, tento odstavec môžete pokojne preskočiť. Vo svojej podstate blockchain funguje ako účtovná kniha transakcií. Pozostáva z blokov, z ktorých každý obsahuje súbor transakcií, kryptografický hash predchádzajúceho bloku a zároveň self-reference hash. Okrem toho bloky obsahujú aj samotné riešenie komplexného matematického problému. Nové bloky transakcií overujú „full nodes“ alebo „masternodes“ – používateľom ovládané počítače v blockchainovej sieti. Tieto uzly spolupracujú pri určovaní platnosti transakcií a ich poradia v blockchainovej účtovnej knihe. V skutočne decentralizovanom blockchaine je účasť bez povolenia, čo znamená, že neexistuje žiadna centrálna autorita, ktorá by riadila činnosť uzlov.
A teraz k plot twistu. Blockchain Oxen, ktorý Session využíva, zaviedol celkom jedinečný prvok – Service Nodes. Podobne ako full nodes alebo masternodes vykonávajú Oxen Service Nodes štandardné úlohy, ako je overovanie nových blokov a ukladanie blockchainu. Idú však o krok ďalej tým, že ponúkajú sieťové služby vrátane bezpečného routovania Session správ. Technológia routovania Session onion pritom zabezpečuje, že žiadny jednotlivý Service Node nemá kompletné informácie o správach. Service Nodes poznajú len IP adresy predchádzajúcich a nasledujúcich uzlov v reťazci routovania.
Sieť Service Nodes slúži ako základ systému bezpečného zasielania správ v Session. Vzniká tu však potenciálny problém. Ak môže ktokoľvek vytvoriť Service Node, čo zabráni škodlivému subjektu vytvoriť množstvo škodlivých Service Nodes a potenciálne narušiť integritu siete? V scenári, v ktorom jediný útočník ovláda každý uzol v reťazci routovania správ, by mohla byť ohrozená anonymita celej Session siete.
Táto zraniteľnosť je známa ako Sybilin útok a predstavuje reálnu hrozbu pre väčšinu decentralizovaných sietí (vrátane kryptomien), pretože škodlivé subjekty môžu ľahko zaplaviť sieť kvôli absencii vstupných bariér.
Našťastie spoločnosť Session implementovala nástroj na riešenie tohto problému.
V mnohých decentralizovaných sieťach je založenie nového uzla pomerne jednoduché, čo ho robí zraniteľným voči Sybilinym útokom. Naproti tomu Oxen network implementuje tzv. „staking requirement“, ktorý si vyžaduje dočasné uzamknutie kryptomeny Oxen na spustenie Service Node (servisného uzla). Na oplátku dostávajú prevádzkovatelia Service Node odmeny z bloku Oxen, čím sa zabezpečuje zdravie a rast siete.
Zúčastniť sa môžu len uzly spĺňajúce požiadavku stakingu 15 000 USD Oxen, čo zabraňuje nekvalifikovaným uzlom prispievať k budovaniu blockchainu alebo routovaniu správ Session.
Session sa tak v otázke zabezpečenia siete vydal akousi cestou “proof-of-stake messagingu”, ktorému síce fandiť nemusíme, ale určite stojí minimálne za našu pozornosť.
Niektoré ďalšie problémy Sessionu
Session je nepochybne zaujímavým projektom, no má ešte veľa nedostatkov a bugov, ktoré bude musieť opraviť. Tu je ešte krátke zhrnutie niektorých problémov, s ktorými som sa pri používaní aplikácie stretol:
- Oneskorenie pri prijímaní žiadosti o priateľstvo
- Spôsob prepojenia zariadení nie je intuitívny
- Niekedy, keď odpoviete z dvoch rôznych zariadení (s použitím rovnakého ID), príjemca dostane dve rôzne konverzácie.
SimpleX Chat
SimpleX Chat je veľmi mladou aplikáciou. Tento messenger zašiel so súkromím na takú úroveň, na ktorú zatiaľ nemá ani Session či Signal. Simplex totiž nedisponuje ani registráciou na telefónne číslo, no ani random user ID. Používa totiž protokol Simplex Chat, ktorý bol navrhnutý tak, aby routoval správy bez potreby identifikácie používateľov, čo simplexáckym serverom znemožňuje zbieranie akýchkoľvek metadát.
Po vytvorení nového „profilu“ stačí vygenerovať QR kód, ktorý ukážete komukoľvek, kto má taktiež SimpleX, ten si ho prečíta a vy len potvrdíte, že s danou osobou chcete naozaj začať novú konverzáciu. Potom SimpleX funguje rovnako ako Signal. Na pozadí sa však deje veľa „kúziel“, ktoré stručne vysvetlíme v nasledujúcich častiach článku.
Na vysvetlenie – v SimpleX môžete chatovať pomocou textových správ, posielať hlasové správy, iniciovať hlasové hovory alebo videohovory. Môžete posielať emoji, nálepky, GIFy, preposielať obrázky, videá a súbory. K dispozícii je aj pripojenie cez Tor. Zaujímavou funkciou je živé písanie, čo je funkcia, ktorá streamuje správu druhej strane. A to je len zhrnutie tých najzákladnejších funkcií – SimpleX toho ponúka oveľa viac – a samozrejme, všetky uvedené koncové funkcie sú šifrované.
V incognito móde nie je možné spojiť jedného užívateľa (ani podľa profilového mena) napríklad v rámci členstva vo viacerých skupinách. SimpleX nepoužíva na komunikáciu centralizované servery a každý smer komunikácie môže ísť cez iné relays.
Ak SimpleX nemá žiadne identifikátory používateľov, ako môže vedieť, kam má správy doručiť?
Na doručovanie správ používa SimpleX namiesto ID používateľa, ktoré používajú všetky ostatné platformy, dočasné anonymné párové identifikátory front správ, osobitne pre každé z vašich pripojení – neexistujú v ňom žiadne dlhodobé identifikátory. Definujete, ktoré servery sa majú používať na prijímanie správ, a servery, ktoré sa používajú na odosielanie správ. Každá konverzácia bude pravdepodobne používať dva rôzne servery.
Tento návrh zabraňuje úniku metadát používateľa na úrovni aplikácie. Ak chcete ešte viac zlepšiť súkromie a chrániť svoju IP adresu, môžete sa k serverom na zasielanie správ pripojiť cez Tor. Používateľské profily, kontakty a skupiny sa ukladajú len v klientských zariadeniach; správy sa odosielajú s dvojvrstvovým end-to-end šifrovaním.
Dokonca aj v tých najsúkromnejších aplikáciách, ktoré využívajú služby Tor v3, sa môže stať, že ak budete komunikovať s dvoma rôznymi kontaktmi prostredníctvom rovnakého profilu, bude možné preukázať, že sú pripojené k tej istej osobe. SimpleX sa pred týmito útokmi prosto a jednoducho chráni tým, že vo svojej konštrukcii nemá žiadne ID používateľa. A ak použijete režim Inkognito, budete mať pre každý kontakt iné zobrazovacie meno, čím sa zabráni zdieľaniu údajov medzi nimi. A to je veľmi kúl.
Trochu techniky (a SMP)
SMP je relay server ktorý v SimpleX sieti routuje správy. Aplikácia SimpleX pritom má prednastavené konkrétne servery, no používatelia si pritom môžu hostovať aj svoj vlastný server.
Samotný model SMP zahŕňa troch kľúčových účastníkov – príjemcu, server SMP (sprostredkovateľa správ) a odosielateľa.
Server SMP účinne spravuje „simplex queues“, ktoré slúžia ako dátové záznamy definujúce komunikačné kanály medzi odosielateľmi a príjemcami. Dôležité je, že server si nie je vedomý rolí strán, pretože odosielateľ v jednom queue môže byť zároveň príjemcom v inom, čím sa zachováva súkromie.
Každý záznam queue obsahuje dve jedinečné náhodné ID (jedno pre príjemcu, jedno pre odosielateľa) spolu s identifikačnými kľúčmi, ktoré obom stranám dodáva klient. Používatelia musia používať odlišné kľúče pre každý queue, aby sa zmiernila potenciálna agregácia a analýza v prípade kompromitácie SMP servera.
Vytváranie a používanie queues si vyžaduje odosielanie commandov na SMP server, ktorými sa podrobne zaoberať nebudeme (môžete sa na ne prelinkovať nižšie v časti „Problémy“).
Rozhodujúcu úlohu tu pritom zohrávajú out-of-band messages. Zdieľajú informácie o queues prostredníctvom trusted alternative channel (dôveryhodného alternatívneho kanála), poskytujú URI queue, vytvárajú spojenia, šifrovacie schémy a verejné kľúče na end-to-end šifrovanie.
Samotný simplex queue pritom predstavuje základný prvok protokolu SMP:
- Odosielateľ používa queue na odosielanie správ na server, pričom sa podpisuje identifikátorom queue a kľúčom odosielateľa.
- Príjemca používa queue na získanie správ zo servera, pričom sa podpisuje svojím kľúčom príjemcu a dešifruje správy pomocou vyjednaného kľúča z vytvorenia queue.
- Zapojenie servera je obmedzené na správu low-level simplex queues, čím sa zachováva vysoký stupeň súkromia a bezpečnosti.
Tento model je založený na jednosmerných sieťach, prispôsobený pre aplikácie vyžadujúce robustné informačné zabezpečenie.
Každý queue je prístupný prostredníctvom jedinečných párov asymetrických kľúčov, oddelených pre odosielateľa a príjemcu. Súkromné kľúče má odosielateľ a príjemca, zatiaľčo server vlastní súvisiace verejné kľúče na overovanie príkazov prostredníctvom kryptografických podpisov.
V skratke:
Správy prenášané v rámci queue sú end-to-end šifrované, zabezpečené DH secretom vytvoreným prostredníctvom out-of-band správ a SMP confirmation.
Queue je definovaná identifikátorom príjemcu (RID) a identifikátorom odosielateľa (SID), ktorý je pre server jedinečný. Kľúč odosielateľa (SK) používa server na overenie príkazov odosielateľa (identifikovaných pomocou SID) na odosielanie správ. Kľúč príjemcu (RK) používa server na overenie príkazov príjemcu (identifikovaných pomocou RID) na získanie správ.
Protokol používa rôzne ID pre odosielateľa a príjemcu s cieľom zabezpečiť dodatočné súkromie tým, že zabraňuje korelácii príkazov odosielateľov a príjemcov odoslaných cez sieť – v prípade kompromitácie šifrovaného prenosu by bolo stále ťažké korelovať odosielateľov a príjemcov bez prístupu k záznamom o queue na serveri.
Pokiaľ si chcete zageekovať ešte viac za hranice tohto článku, detailnejšie fungovanie SMP modelu a simplex queues pritom môžete nájsť na samotnom SimpleX GitHube.
Problémy
Hoci sa SimpleX javí ako dokonalý šifrovaný messenger, má niekoľko drobných nedostatkov. Paradoxne, ak chcete začať konverzáciu s niekým, s kým sa nemôžete stretnúť osobne, musíte použiť iný komunikačný nástroj na preposlanie/prijatie pozvánky QR na otvorenie nového chatu. A to je rovnaký nedostatok, ktorý má aj Session.
Na rozdiel od Signalu v SimpleX rovnako chýba aj feature disappearing messages.
Hlavným dôvodom, prečo sa mi služba Signal veľmi páči, je jej kompatibilita na všetkých zariadeniach. Ten istý profil môžem používať na mobile, počítači aj notebooku bez väčšieho rizika straty údajov. Všetko je automaticky end-to-end šifrované a navzájom synchronizované. SimpleX zatiaľ nemá ani verziu pre Windows alebo Apple Mac – a je teda nepoužiteľný na počítačoch alebo notebookoch. Možno som boomer, ale osobne mi písanie na mobiloch až tak nevyhovuje a rád si počkám na desktopovú aplikáciu.
Pri používaní SimpleXu som sa navyše stretol s veľa bugmi súvisiacimi so synchronizáciou a connectovaním užívateľov. Na to, aby ste si mohli písať s novým kontaktom, musí byť druhá strana online a zatiaľ je v tom veľa chaosu; connectovanie (umožnenie prepojenia medzi vami a novým kontaktom) môže dlho trvať a ako veľký bug vidím aj to, že z nejakého dôvodu sa v skupinách každému hneď nezobrazia vaše správy (a ani tým, s kým ste connectnutý).
A aby som pridal na záver k SimpleX niečo pozitívne, tak je to jeho veľmi zaujímavá geekovčina – webová “linux-terminal-CLI appka”.
Aby som to zhrnul – SimpleX je zatiaľ v mnohých ohľadoch rozbitá a chaotická vec, ale je veľmi kúl.
Záver
Session a aj SimpleX sú v skratke veľmi zaujímavé projekty a prístup k súkromiu oboch z nich je veľmi jedinečný a stojí minimálne za zmienku. Obe aplikácie používajú na ochranu správ používateľov end-to-end šifrovanie a na registráciu nevyžadujú žiadne osobné údaje.
SimpleX Messenger však posúva súkromie na vyššiu úroveň tým, že nepoužíva žiadne identifikátory používateľa, dokonca ani náhodné, čím sa stáva prvým messengerom bez identifikátorov s ktorým som sa stretol (a možno aj prvým svojho druhu na svete). Hoci je služba Session na trhu dlhšie a má oveľa väčší user base, SimpleX Messenger si získava popularitu vďaka svojmu jedinečnému prístupu k ochrane súkromia. Obe aplikácie majú svoje silné a slabé stránky a každý z nás by si mal vybrať tú, ktorá najlepšie vyhovuje jeho individuálnym potrebám. Či už na hranie, experimentovanie, alebo plnohodnotnú komunikáciu.