S tem seveda mislim instant messengerje, t. j. aplikacije kot so WhatsApp, Facebook Messenger, Signal ipd. V osnovi je po moje katerikoli program, ki omogoča ena-na-ena komunikacijo med dvema napravama (osebama) prek omrežja klepetalnik, vendar smo ponavadi bolj zahtevni: pošiljanje slik, videov, reakcije z emojiji, skupinski pogovori, sinhronizacija pogovorov med več napravami, (video)klici in še mnogo več sestavlja orodjarno sodobnega klepetalnika. Čeprav smo konec koncev primorani v uporabo aplikacij, ki so jih — ponavadi tudi pod pritiskom drugih — začeli uporabljati naši prijatelji, se lahko potrudimo izbiro bolje premisliti. Ker bomo skoraj gotovo preživeli veliko časa v tem programu, se razmislek prav gotovo splača. V članku bom predstavil svoje iskanje ter vas popeljal po svetu odprtokodnih klepetalnikov, kjer sem poskušal imeti v mislih tudi uporabnika, ki ni nujno tehnično podkovan.

Sprva, vprašanje: čemu lahko nismo zadovoljni z najpopularnejšimi opcijami? Najpogostejši razlog je po moje težava zaupanja. Aplikacija za WhatsApp je recimo zaprtokodna — njena izvorna koda ni dostopna javnosti. Strežnike, prek katerih se sporočila pošiljajo, v celoti gostuje in nadzoruje zasebno podjetje. Takšna situacija načeloma ne bi bila problematična, če bi bil WhatsApp recimo bančna aplikacija. Vendar ni — je klepetalnik. Čeprav ni vsak pogovor, ki ga imamo prek njega, poln intime in občutljivih informacij, vseeno hočemo komunicirati s sledečo predpostavko: pogovoru prisostvujejo le izrecno izbrani prejemniki. WhatsApp nam tega žal ne more zagotoviti.

Vendar pa je zasebna digitalna komunikacija prek interneta vsekakor izvedljiva. Dandanes se v ta namen ponavadi uporablja t. i. šifriranja od konca do konca (ang. end-to-end encryption, E2EE). Koncept zajema matematične in (posledično) računalniške algoritme, ki omogočajo pošiljanje sporočil, ki jih lahko berejo le prejemniki ter nihče vmes. Čeprav WhatsApp menda šifrira sporočila E2EE, nam tega preprosto ne more zagotoviti, saj nam je izvorna koda aplikacije in strežniške opreme neznana. Četudi so sporočila res šifrirana in jih Meta (poprej Facebook, krovno podjetje WhatsAppa) ni zmožen brati, lahko aplikacija pobira še mnogo drugih podatkov, kot so ure pošiljanja, seznam kontaktov itd.

Odtod se odločimo za zahtevo: uporabniška aplikacija klepetalnika, ki ga iščemo, mora biti odprtokodna in šifrirati sporočila od konca do konca. Aplikacijo se mora dati prevesti (ang. compile) iz kode in ta mora biti funkcionalno ekvivalentna tisti, ki jo najdemo na Google Playu, F-droidu itd.

Ta zahteva se mi zdi ključna za katerikoli vsaj napol pomemben komunikacijski program. Če jo upošteva, lahko mirne vesti trdimo, da dosega zahtevo zasebnosti. Zasebnost pred reklamnimi agencijami, organi pregona iz naše in drugih držav, kupci osebnih podatkov, prisluškovalci in zlonamernimi hekerji. Zasebnost za naše sogovorce, ki ne živijo nujno v demokratični državi, kjer je svoboda govora zagotovljena. Zasebnost pred tretjimi osebami, ki se jih naše besede in misli preprosto ne tičejo.

V glavnem je pomembno le, da je aplikacija odprtokodna. E2EE namreč deluje tako, da se sporočila šifrirajo v aplikaciji ter našo napravo zapustijo v šifrirani obliki, ki je brez poznavanja ključa neberljiva. Lepo bi bilo, da je tudi infrastruktura — tj. strežnik, prek katerega sporočila prehajajo — odprtokodna, a to za zasebnost ni nujno, saj robustno šifriranih sporočil tako ali tako ne bo zmožen prebrati.

Iskan klepetalnik naj bo na voljo na čim več operacijskih sistemih. Za moje namene sta to Linux in Android, vedno pa je lepo tudi, če obstaja spletna aplikacija, ki jo lahko odpremo v kateremkoli brskalniku. Aplikacija mora biti razmeroma estetska, vsaj za Android, saj jo bom gledal kar dosti časa. Mora imeti pogoste posodobitve oz. biti v aktivnem razvoju/vzdrževanju ali pa vsaj imeti veliko uporabnikov — popoln program, ki ga nihče ne uporablja, verjetno ni popoln. V nadaljevanju se bodo pojavili še kakšni moji bolj pikolovski kriteriji. Klepetalnike bom navedel v približnem kronološkem vrstnem redu, kot sem jih sam odkrival in uporabljal.

Skoraj vsi so že bili podrobno primerjani v tej tabeli, ki gre čez ogromno funkcij (in disfunkcij), s katerimi se sam nisem ukvarjal. Moj namen namreč ni primerjati klepetalnikov izčrpno, temveč le predstaviti svoj tok misli, ki me je vodil do vsakega izmed njih. Vsi spodaj opisani protokoli in programi so kvalitetni in jih lahko prav vse — glede na moj omejen čas z njimi — priporočam, vendar imajo svoje prednosti in pomanjkljivosti, ki jih je vredno raziskati. Na koncu bom povzel svoje ugotovitve in predlagal klepetalnike glede na osebnostni profil uporabnika, tako da bralcu, ki si želi slišati le moj nasvet, predlagam, da skoči na zaključek.

Signal

Najbolj slaven izmed sodobnih odprtokodnih klepetalnikov je verjetno Signal. Z začetkom v 2014 je ta šele v zadnjih letih postal zares popularen, po moje predvsem zaradi objave spoštovanega Edwarda Snowdena (in manj spoštovanega Elona Muska). Koda tako aplikacije (obstajajo tudi programi za Windows in Linux) kot strežnika je prosto dostopna, tako da lahko preverimo, da so sporočila res E2EE. Kot zanimivost: kriptografsko ozadje WhatsAppa in Signala je podobno, saj obadva implementirata t. i. Signal protokol. Strežnik bi v praksi lahko gostovali sami, na lastnem računalniku (ang. self-host), vendar to v praksi ni uporabno, saj je aplikacija nastavljena na uradnega, ki ga gostuje Signal (podjetje), in te izbire ni mogoče zlahka spremeniti.

Tri posnetki zaslona Signal aplikacije na Androidu.

Signal na Androidu. Vir: Google Play.

Signal je centraliziran. Vsako sporočilo gre prek enega in edinega strežnika, ki ga gostuje isto (neprofitno) podjetje kot razvija programje. To jim da veliko moči, tako da lahko recimo zahtevajo, da aplikacijo redno posodabljamo, ali pa vanjo vključijo trgovanje s kriptovalutami — medtem ko posodabljajo strežniško kodo v temí. Zadnje, kot rečeno, ni tako huda “kršitev,” saj odprtokodnost strežnika ni potrebna za zagotovljeno zasebnosti sporočil, vendar pa je skrb, ki ga vzbuja takšno ravnanje, legitimna. Hujše zlorabe moči kolikor vem še ni bilo, a je — prav zaradi centralizacije — vsekakor mogoča. Soustanovitelj Signala Moxie Marlinspike, ki je bil do 2022 njegov direktor, se je 2019 nekoliko razgovoril o centralizaciji in njenih prednosti. V njegov govor se ne bom spuščal, tako da predlagam branje kritike, ki po moje dobro pokaže na disfunkcionalnost Moxiejevega mišljenja. Čeprav verjamem, da je centralizirati svoj tehnološki izdelek vsekakor dobra ideja s poslovnega in upravnega stališča, predstavlja za uporabnike veliko pretečih nevarnosti in nevšečnosti.

Za protiprimer decentralizirane komunikacijske tehnologije si poglejmo skupek protokolov in programov, ki jim pogovorno rečemo e-pošta (pravimo tudi, da je federirana). E-pošto lahko pošljemo komurkoli in beremo od kogarkoli, pa če je ta registriran pri gmail.com, siol.net ali celo cock.li. Vsak ponudnik za svoje uporabnike deluje kot “centralni” strežnik, ki pošilja sporočila prek drugih ponudnikov. Ponudnik pa lahko svoje uporabnike razočara: nenadna sprememba pogojev poslovanja, malo prostora v poštnem predalu, slabi filtri proti neželeni pošti, deljenje osebnih podatkov s tretjimi osebami itd. Če se ga uporabnik iz kateregakoli razloga naveliča, ga lahko preprosto zamenja — izvozi vsa stara sporočila in kontakte, odpre račun pri novem ponudniku in jih uvozi tam. Resnica je žal takšna, da je gmail.com zdaleč najpopularnejši ter svoj vodilni položaj lahko (in ga) zlorablja. Na našo srečo pa je ostalih še vedno ogromno in smo zato uporabniki e-poštnih tehnologij v veliki meri svobodni in tako varni pred zlorabo.

Ponudnik pa vidi povsem drugo sliko: mora ostati konkurenčen in ustreči svojim uporabnikom čim več, da ti ne pobegnejo drugam. Vidimo, da je svoboda izbire dobra za uporabnika ter slaba za ponudnika, svobodo izbire pa imamo resnično le, če je protokol decentraliziran. Za Signala sicer lahko uporabljamo “neuradne” aplikacije, kot je npr. Molly, vendar smo zopet priklenjeni na uraden strežnik. Lahko gostujemo svoj strežnik, vendar ta ne bo mogel komunicirati z uradnim in uporabniki bodo ločeni. Signal (podjetje) tako na dolgi rok nima dovolj močnega razloga, da se “obnaša lepo,” mi pa nimamo lahke poti izhoda, če do tega pride.

Vendar je to bolj ideološko ozadje aplikacije in protokola, bolj smiselno pa se je vprašati, kaj nam klepetalnik ponuja tu in zdaj, tak kot pač je. Ima deljenje datotek, reakcije na sporočila, video- in zvočne klice, iskalnik po pogovorih. Pogovore lahko izvozimo v datoteko. Moja izkušnja z njim je bila zelo gladka. Čeprav so sporočila E2EE, za zasebnost ni popolnoma zagotovljeno, saj je ob registraciji potrebno vnesti telefonsko številko (kot pri WhatsAppu). V Sloveniji to ni velik problem, saj lahko preprosto kupimo predplačniški paket, drugod po svetu pa je pogosto za pridobitev telefonske številke potreben osebni dokument, kar ustvari močno povezavo med Signal računom in resnično identiteto. Čeprav ne bo ta povezava verjetno nikoli razkrita, razen če se uporabnik res izpostavi ali pa živi v neugodnih političnih okoliščinah, je to vseeno lahko pomemben osebni podatek, ki ga raje ne bi delili. Signal (podjetje) se gotovo tudi zaveda, da je potrjevanje telefonskih številk zelo finančno potratno — v 2023 jih je le to stalo 6 milijard dolarjev. Telefonsko številko, povezano z računom, je mogoče spremeniti.

Signal je solidna izbira klepetalnika. Aplikacija je zelo funkcionalna in estetsko sodobna. Osebno me moti edino to, da so emojiji v aplikaciji grdi, ter da lahko na sporočila reagiramo le z enim naenkrat. Večini ljudi bi ga toplo priporočal. Če pa vas je ob omembi centralizacije zvilo v želodcu in ste pri registraciji s telefonsko številko skoraj bruhali, predlagam, da berete naprej.

Matrix in Element

Matrix protokol in specifikacija

V prejšnjem razdelku smo si ogledali Signal (aplikacijo), ki uporablja Signal (protokol) in ga razvija Signal (podjetje). Istoimenskost je smiselna, saj je omenjeno troje del praktično iste entitete. V podobni situaciji so aplikacija Element, ki deluje na Matrix protokolu, ki ga razvija Matrix fundacija (zopet neprofitna), z dvema velikima razlikama: protokol deluje decentralizirano oz. federirano (razlika je le v podrobnostih) in se razvija kot odprt standard. Prvo smo že srečali pri opisu e-pošte zgoraj, Matrix protokol pa deluje podobno: registriramo se pri izbranemu ponudniku, ki s svojim strežnikom prepošilja sporočila po omrežju.

Protokol določa “pravila igre,” (API, ang. application programming interface) ki jih morajo aplikacije znotraj omrežja upoštevati. Eden izmed večjih čudes Matrixa je, da so ta pravila zelo preprosta za uporabo. Kot primer si lahko pogledamo popreproščen primer tega, kar klepetalnik naredi, ko ga že nekaj časa nismo odprli, namreč da prenese nova sporočila na našo napravo. Pobrskamo po specifikaciji ter pod 7.6. Syncing najdemo ukaz GET /_matrix/client/v3/sync. Vidimo, da ta potrebuje uporabniško avtentifikacijo, torej se moramo nekako prijaviti. Pod 4.9.2. Login najdemo ukaz POST /_matrix/client/v3/login, ki nam bo dal potreben access_token. Ukaz s potrebnimi parametri poženemo v ukazni vrstici

curl "https://matrix.hekatija.com/_matrix/client/v3/login" -d '{"identifier":{"type":"m.id.user","user":"@test:hekatija.com"},"password":"moje1zelo2dobro3geslo","type":"m.login.password"}'

kar vrne odziv v JSON formatu

{
    "user_id": "@test:hekatija.com",
    "access_token": "gp_p2kcsXHVrdkLDj2_V",
    "home_server": "hekatija.com",
    "device_id": "MAZUPGBHSN",
    "well_known": {
        "m.homeserver": {
            "base_url": "https://matrix.hekatija.com/"
        }
    }
}

Sedaj lahko poženemo

curl "https://matrix.hekatija.com/_matrix/client/v3/sync" -H "Authorization: Bearer gp_p2kcsXHVrdkLDj2_V"

in nad nas se vsuje malo morje podatkov, ki jih tudi določa specifikacija: nova sporočila, spremembe stanj sob v katerih smo, povabila v sobe, interna sporočila protokola itd. Nekatera sporočila so šifrirana ter zato neposredno neberljiva, recimo

{
    "type": "m.room.encrypted",
    "sender": "@testov_prijatelj:hekatija.com",
    "content": {
        "session_id": "zso1TpdpqtZGxbmRxSSKBKtauNmDneToVwfLsdNszcI",
        "ciphertext": "AwgAEvADb3DZJdP7psaRS3/HIH4YsGm8af2ElKQGYB6GZEwU2fiuNL5TfDHFaWNaO2TYLUtx7rEH1aa+OVIGBbOnkhE2bRAmvElbHO9/xkb58lZjNOOYbT6ysMD/4dY+7OqqjXX3pi5dUohvVpbD1EQ5tO9/k1joiA6eVNoOL2W8EmGKExtTN+XAcaM+9ro98/svgW2FXT177+1ejbPbM+zhrbysUvkESEtZ6v7TpEJpca1+NMvTItJnkWWqf77R66UL4AfzfrPWQBhmJ9ooqFS72CvQw3M/iS2U9OROQI8GTVcHGzdY/hdX3vb6Hsfrq3eTWTnftSouZPkuRkBG3dKtpHWfUCmWeWECWqazVzO8K1yN5iQ89WIM8gag9KcUC2E1e+jWfPx5c1+30drn4kFHSO/wYczzQ2EIasyCuuNiM3ifliNsrbamsPx3aJqtVi2ohV6hYQCSpkqKy6WWnUZtffLjCnF2um/MkZzYxSpDIzSV50WNDgfPapAhzJvZuvEHaDRJStZkjtvcoCMVhkZVsLshxpFAgwV60cX6M2mIdHz4cr5JkBwXSbtdZi/XpoZb34t/fjr/mnh6XlHalmgVEkHlt1SF4uR7Kg0/L4v88kryY4LEUQDSePsb9FVAlLuJ+86FE+EGNW7KbwaMizhWIjZJ3ictTImglxwjxOM9XrxmgP4zY4/WFWDkdqNlfYpfPwd63e4BwzsAK0Iw2qkeqoECfp83SV5mOae3mAgO14Mlw7EuWXQXglvUAA",
        "device_id": "SXEDBGZZIU",
        "algorithm": "m.megolm.v1.aes-sha2",
        "sender_key": "rIh/iq28f33fjhcGksKX23+WqTZ211A1ZR2g8G5HgSa"
    },
    "origin_server_ts": 1754546992382,
    "unsigned": {
        "membership": "join",
        "age": 8766878274
    },
    "event_id": "$dwRjMGsKmvIt_1Fsoaq1qfjdS_Mk2WZKqVU8ujQ_hjA"
}

kjer pride v igro E2EE (Megolm), saj lahko to sporočilo prebere le prejemnik s pravilnim ključem. Proces dešifriranja se zgodi na napravi in je zato strežnik blaženo neveden glede vsebine sporočila.

S postopkom zgoraj sem želel pokazati, kako malo “tehnologije” je pravzaprav potrebno, da komuniciramo prek Matrix protokola. Ta je ekstenziven in pokriva praktično vse potrebe sodobnega klepetalnika, tako za ena-na-ena pogovore kot tudi za velike skupine z več sto člani, kar prinese svoje posebnosti. Prav zato je v preteklih letih postal glavni podporni in komunikacijski kanal za kar nekaj računalniških projektov, poleg (žal) najpogostejšega Discorda. Javne sobe sicer ponavadi niso šifrirane, saj to v praksi nima smisla, še vedno pa koristijo druge zmožnosti protokola. Nastaja tudi nekaj zanimivih projektov, ki protokola sploh ne uporabljajo za klepetanje — to sta recimo Third Room in Futo Circles.

Še ena velika prednost Matrixa je njegova prikladnost za ustvarjanje t. i. “mostov” (ang. bridge) med njim in ostalimi komunikacijskimi protokoli. Tako imamo lahko recimo sobo, ki je bila ustvarjena v Matrixu, v njej pa komunicirajo ljudje z Discorda, Signala, Instagrama, WhatsAppa itd. Pravzaprav sploh ni nujno, da kdorkoli v sobi neposredno uporablja Matrix — ta lahko deluje le kot nekakšen povezovalni protokol. V teh mostovih se po moje izrazi največja moč Matrixa, saj je očitno dovolj fleksibilen, da združi več platform na eno mesto. Seveda ti mostovi ne podpirajo čisto vseh funkcij — recimo klicev. Treba je tudi poudariti, da so mostovi ločeni programi, ki jih moramo gostovati in konfigurirati sami, prav tako pa jih razvijajo različni ljudje in tako delujejo na različne načine — z izjemo recimo mautrix mostov, ki nastajajo pod isto taktirko.

Breme gostovanja lahko odložimo na druge: obstaja recimo Beeper, ki poleg posebne aplikacije gostuje Matrix strežnik z vsemi mostovi. Če se bralcu zdi takšna integrirana izkušnja mamljiva, mu vsaj to konkretno storitev nežno odsvetujem, saj deluje pod vodstvom Ma.tta Mullenwega — soustanovitelja WordPressa —, ki se je v preteklem letu izkazal za nezanesljivega in škodljivega za odprtokodno skupnost. Menda je mogoče tudi sam gostovati Beeper, vendar tega nisem preveril.

Sem pa in še vedno gostujem Matrix strežnik (s programom Synapse) na hekatija.com — z nekaj mostovi — predvsem za osebno uporabo. Moja izkušnja z gostovanjem ostaja precej dobra, pa tudi namestitev in konfiguracija ni bila preveč zahtevna. Ostajam dosegljiv prijateljem, ki so na raznoraznih platformah, brez bremena za njih, meni pa večino časa sploh ni treba razmišljati, kje je kdo.

Največja šibkost s protokolom z mojega vidika so nešifrirani metapodatki. Reakcije — ki po moje sploh niso metapodatki, ampak potencialno pomemben del komunikacije — na sporočila so recimo poslana nešifrirano. Obljublja se peer-to-peer oblika protokola, ki bi omogočala neposredno komunikacijo med uporabniki, tj. brez vmesnega strežnika, vendar zadeva že leta stoji na mestu. Shramba metapodatkov je lahko še posebej nevarna zaradi strežniške zasnove Matrixa. Najpopularnejši strežnik je referenčni strežnik matrix.org, ki je ob registraciji na večini aplikacij ponujen kot privzeta izbira. Tudi če se odločimo registrirati na drugem strežniku, bomo slej ko prej v klepetu z nekom, ki je registriran na matrix.org. Ker protokol deluje tako, da zgodovino sporočil sinhronizira med prisotnimi strežniki, bo imel vsak prisoten strežnik kopijo vseh sporočil, torej bo imel matrix.org metapodatke o veliki večini klepetov, ki se zgodijo na omrežju. Komunikacijo strežnika z ostalimi (“federacijo”) se sicer da onemogočiti, če želimo omejiti promet na le njegove člane.

Element in ostale aplikacije

Uporabniška izkušnja pa večino časa nima toliko veze s protokolom kot z aplikacijo, prek katere ga uporabljamo. Za Matrix je na voljo več deset aplikacij — sam sem največ časa preživel na Elementu, ki obstaja v obliki mobilne, namizne in tudi spletne aplikacije. Izmed vseh je ta še najbolj popolna in podpira vse zmožnosti protokola, saj ga razvijajo skoraj isti ljudje in je zato tako rekoč referenčna implementacija “Matrix klepetalnika.” Preizkusil sem tudi druge neodvisne aplikacije, vendar nobena ne pride niti blizu zmožnostim Elementa in pogosto uporabljajo opuščeno kriptografsko knjižnico libolm, ki ima težave z varnostjo.

Tri posnetki zaslona Element aplikacije na Androidu.

Element na Androidu. Vir: Google Play.

Moja izkušnja, ki je obsegala spletno različico Elementa in Android aplikacijo SchildiChat — neuradno modificirano različico Elementa za Android — je bila v glavnem dobra. Še posebej bi izpostavil

Težko se spomnim česarkoli, kar bi v primerjavi z Velikimi klepetalniki Elementu popolnoma manjkalo. LaTeX podpora recimo obstaja, vendar je še “eksperimentalna,” tako da to recimo kdaj pogrešam — je pa res, da drugi klepetalniki na to ponavadi niti pomislijo ne. Manjkalo pa mi je, da bi lahko po zgodovini sporočil iskal — nekaj, kar je po večini klepetalnikov standard. Iskanje je možno na namizni različici aplikacije, vendar na spletni in Android različici ni.

Verjetno največja nevšečnost, ki se je v mojem času z Elementom pojavljala spet in spet, so bile težave z dešifriranjem sporočil. Včasih sem prejel ali poslal E2EE sporočilo, ki ga aplikacija ni znala dešifrirati in ga zato jaz oz. moj sogovornik ni mogel prebrati. To je dokaj znan problem, ki ga razvijalci rešujejo že več let. Včasih se mi je to zgodilo na začetku pogovora, včasih kar vmes. Kakšen dan kasneje je ponavadi zopet delalo normalno. Lahko sicer pripomnim, da je skozi leta teh napak manj in manj, vendar lahko res iztirijo pogovor. Čeprav moja statistika konec koncev ni tako slaba, sem bil v korespondenci z ljudmi, ki jih je to resno motilo.

Matrix uporablja kar nekaj resnih evropskih organizacij. To bi morala biti dobra stvar, vendar se je s časom izkazalo, da pozornost teh “velikih strank” pomeni več razvoja v smeri njihovih specifičnih interesov, kot so SSO in napredna administracija sob. Še en slab znak je to, da so se odločili prenehati z razvojem trenutnega mobilnega Elementa in začeli razvijati t. i. Element X. Ta se od prejšnjega razlikuje v glavnem v tem, da izgleda še bolj prisiljeno sodobno in implementira sliding sync, ki naj bi pohitril sinhronizacijo naprave s strežnikom. Novejšemu prav tako manjka kar nekaj zmožnosti prejšnjega, vendar se ta seznam počasi prazni.

Zelo si želim, da bi Matrix uspel. V grobem se ekosistem po moje lepo razvija, čeprav so tu in tam težave s stabilnostjo. Vendar — če bi bil Matrix popoln, ta članek ne bi obstajal. Ima tudi dosti drugih pomanjkljivosti, ki sta jih po moje dobro opisala マリウス in Johannes Findeisen — ta izpostavlja neučinkovitost protokola in referenčnega programja. Iščimo torej nadaljnje alternative, pri čemer bodimo pozorni na mesta, kjer te delujejo bolje kot Matrix.

XMPP

V času ko je Matrix pridobival na popularnosti, so vsi v en glav vzkliknili: kaj pa XMPP? XMPP oz. Jabber je namreč protokol, ki je že v letu 1999 skušal ustvariti federirano omrežje za klepetanje. Prav tako je odprt in sposoben E2EE (OMEMO, OTR ali OpenPGP), tako da se res da veliko primerjati. Je pa veliko internih kot tudi praktičnih razlik (link in link), za nas bodo zanimive predvsem praktične.

Vseeno pa je po moje glavna prednost protokola prav njegova ustaljenost. S sedaj več kot 25 leti na sceni je XMPP predvsem zelo zrel. V njegovem ekosistemu je veliko kvalitetnega programja — od aplikacij (npr. Conversations, Gajim in Converse.js) do strežnikov (predvsem ejabberd in Prosody). Za razliko od Matrixa noben izmed teh ni neposredno povezan s fundacijo, ki ureja protokol, kar je krasno za decentralizacijo. Lepo je tudi, da je programja dovolj, da nismo tako močno privezani na “objektivno najboljšo” izbiro — pri Matrixu sta to bila Synapse in Element —, če nam ta ni všeč.

Tri posnetki zaslona Conversations aplikacije na Androidu.

Conversations na Androidu. Vir: Google Play.

Zrelost se izraža tudi tako, da so ga tekom let začele uporabljati mnoge velike organizacije in firme. Ena izmed morda najbolj vplivnih na njegovo zgodovino je bil Google, ki je svoj klepetalnik Google Talk od 2006 do 2013 osnoval na protokolu. Odtlej naprej se je klepetalnik preimenoval v Google Hangouts in izstopil iz federacije z ostalimi XMPP strežniki, kar je pomenilo, da je omrežje izgubilo veliko uporabnikov. Vseeno se XMPP lahko zadnji smeji, saj je preživel vse Googlove klepetalnike.

No, pústimo zgodovino. Ko sem se torej odločil preizkusiti XMPP, sem si na telefon namestil Conversations, na računalnik pa Gajim, ki sta oba popularni izbiri. Registracija je zelo preprosta: izberemo strežnik ter vpišemo želeno uporabniško ime in geslo. Ker žal nimam prijateljev, ki bi imeli za moje poskuse neomejeno časa, sem si ustvaril še en račun, da sem si lahko z njim pošiljal sporočila. Dokler sem ostal na isti napravi, so sporočila tekla brez težav, ko pa sem se prijavil na kaki drugi, so se pojavile težave.

Protokol namreč očitno ni najboljši za sinhronizacijo zgodovine sporočil, saj je njegov glavni namen le transport. Ko sem se torej prijavil na drugi napravi, je bila zgodovina klepetov pred trenutkom prijave prazna. Tudi s sporočili, ki so bila poslana po prijavi, so bile težave. Čeprav sem pričakoval, da bo pri XMPPju zaradi njegove zrelosti manj problemov z dešifriranjem kot pri Matrixu, so se pojavili celo večkrat, s sporočilom “message was not encrypted for this device.” Očitno je nastal problem pri prenosu ključev med staro in novo napravo. Vzel sem si zelo veliko časa reševanje tega problema, brez uspeha.

Protokol očitno preprosto ni soliden za E2EE uporabo z več kot eno napravo, sploh če se ta naprava priklopi kasneje kot druge. Moram dodati, da sem preizkusil le OMEMO, na voljo pa so še drugi E2EE algoritmi, recimo OpenPGP. Čeprav slednji morda deluje bolje, bi moral zanj sam ustvariti ključ in ga uvoziti, česar sicer sem sposoben, vendar se mi zdi nepotrebno naporna praksa za sodobnega (netehničnega) uporabnika, v skupino katerih spada večino mojih kontaktov. Kljub vsem zmožnostim, ki jih ponuja protokol in funkcionalnostim XMPP programja, me je ta težava žal popolnoma odvrnila od protokola ter sem nadaljeval z iskanjem.

Session, SimpleX Chat

Session in SimpleX Chat si sicer nista dovolj podobna, da bi o njiju govoril v isti sapi, vendar se mi zdita primerljiva v praksi. Obadva sta namreč dokaj mlada — stara približno 5 let — s “sodobnim” izgledom, implementirata svoja lastna protokola in obljubljata maksimalno zasebnost, z npr. šifriranjem večine metapodatkov. Za podrobnejšo primerjavo zopet pozivam bralca k pregledu tabele primerjav.

Tri posnetki zaslona Session aplikacije na Androidu.

Session na Androidu. Vir: Session.

Dva posnetka zaslona SimpleX Chat aplikacije na Androidu.

SimpleX Chat na Androidu. Vir: Google Play.

Sprva se lotimo širših pomislekov. Programje, tj. strežniki in aplikacije, je pri obeh popolnoma centralizirano, saj jih razvija isto podjetje kot protokol. SimpleX Chat Ltd. ni neprofitno podjetje in ga napaja tudi investicijski kapital, tako da uporabniki niso nujno njihova prva prioriteta, Session Technology Foundation pa je fundacija, kar je po švicarskem pravu neprofitna organizacija oz. mora svoj kapital koristiti le za prvoten namen. Ker sta podjetji še mladi, so takšni premisleki smiselni, saj nočemo, da bi zadeva v nekaj letih propadla ali pa se prodala.

Session strežniki delujejo kot vozlišča za prepošiljanje sporočil in jih lahko v principu gostuje kdorkoli. Pravim v principu, ker je za gostovanje potrebno zastaviti neko količino njihove kriptovalute, v kateri so operaterji tudi plačani. “Session Token” je na srečo osnovan na Ethereumu, ki za svoj blockchain uporablja overjanje tipa proof-of-stake, ki je drastično manj potraten kot pogostejši proof-of-work — primerjaj energetsko porabo Ethereuma s porabo Bitcoina. Operaterji vozlišč so torej finančno odgovorni za svoje delo, tako da je uporaba blockchaina tu po moje opravičena. Kljub temu pa se ob uporabi kriptovalute postavi vprašanje, če ne bo ta na dolgi rok uporabljena le za špekulacijo ali pa tako drastično nihala v vrednosti, da bi to potencialne operaterje vozlišč odvrnilo — to, kar se recimo dogaja s Sio. Session token naj bi bil v prihodnje uporabljen za nakup premium naročnine za Session, vendar je to očitno še zelo v povojih.

Oba klepetalnika delujeta fundamentalo drugače kot recimo Matrix: podatki se namreč ne hranijo na strežnikih, temveč ti poskrbijo le za transport podatkov med napravami. SimpleX Chat ne uporablja niti uporabniških imen, le identifikatorje posameznih klepetov. Za hrambo sporočil tako poskrbi naša naprava, tako da ta izginejo, če si aplikacijo izbrišemo in prej ne naredimo kopije.

Za praktičen preizkus sem zopet namestil oba na telefonu ter sinhroniziral z računalnikom. Pri Sessionu je to šlo brez težav in mi je njihov program za namizje dokaj všeč. SimpleX se po drugi strani sploh ne da sinhronizirati z računalnikom, če nista na istem omrežju ali je port na računalniku zaprt (zaradi požarnega zidu ipd.). Port sicer lahko izberemo sami oz. se ukvarjamo s požarnim zidom, vendar je to po moje preprosto preveč dela za nekaj tako osnovnega.

SimpleX Android aplikacija je tudi sicer disfunkcionalna. Najbolj me moti, da so dali vrstico z menuji na spodnji del zaslona, točno tam, kjer bi sicer bilo vnosno polje za sporočila. Dodatno me čudi vključitev gumba za t. i. live messages — sporočila, ki se pošiljajo že medtem, ko tipkamo. Resno se sprašujem, kdo bi to sploh kadarkoli rabil. Žal ni namizna verzija SimpleXa nič boljša, saj zgleda popolnoma isto kot Android, le da je okno za pogovor večje. Morda je to nevmesno, saj ne velja le za SimpleX in Session: so menuji, ki se pojavijo, če podrsamo z levega oz. desnega roba zaslona, izgubljena umetnost? Še posebej mi je všeč, kako to počne Discord — z leve strani potegnemo “seznam klepetov,” z desne pa podatke o trenutnem klepetu.

Konec koncev se nisem odločil za katerega izmed njiju, saj dvomim da bosta na dolgi rok preživela — morda ju zopet preverim čez kakih deset let. Njuno delovanje je preprosto preveč odvisno od enega podjetja. Leta bodo pokazala, vmes pa jima vsekakor želim veliko sreče.

Briar, Jami

Za resnično paranoične je vedno obstajal Briar — aplikacija in protokol. Ta namreč omogoča neposredno E2EE komunikacijo med napravami, brez kakršnihkoli vmesnih strežnikov, tj. peer-to-peer. Pravzaprav za komunikacijo sploh ne potrebujemo interneta — WiFi ali celo Bluetooth sta dovolj. Ker bi s popolnoma neposredno komunikacijo lahko vsaj člani klepeta (ali pa prisluškovalci) poznali IP naslove drug drugega in odtod grobo lokacijo, se sporočila pošiljajo prek Tor omrežja, tako da so vsi prenosi resnično anonimni.

Dva posnetka zaslona Briar aplikacije na Androidu.

Briar na Androidu. Vir: Briar.

Čeprav je takšen pristop krasen s teoretičnega vidika, izgubimo eno veliko prednost vseprisotnega strežnika: sporočila nas ne bodo dosegla, če nismo povezani na omrežje. Sicer bi naše sporočilo prejel nek ves-čas-prižgan računalnik in nam ga posredoval, ko smo dosegljivi, tu pa tega računalnika ni. Je pa Briar razvil očitno rešitev z imenom Briar Mailbox, ki je pravzaprav zelo minimalna različica Android aplikacije, namenjena le transportu sporočil. To lahko namestimo na nek telefon ali napravo doma, ki je ves čas na omrežju, in jo sinhroniziramo s svojim dejanskim telefonom. Ta bo prejemal sporočila kadarkoli ter jih sinhroniziral po vseh naših napravah.

Briarju manjka kar nekaj funkcij, ki smo jih navajeni z drugih klepetalnikov, saj postavi varnost in zasebnost na prvo mesto. Obstaja pa nekoliko manj paranoična aplikacija (in protokol), ki deluje podobno kot Briar: Jami. Ta je dejansko dosti starejši od Briarja, saj je nastal že davnega leta 2004, Briar pa 2018. Jami je dosti bolj nabit s funkcijami, saj recimo omogoča videoklice, česar Briar ne. Izvoz klepeta ni v nobenem zares praktičen, vendar je v Jamiju vsaj izvedljiv. Žal se v Jamiju sporočila ne pošiljajo prek Tor omrežja ali česa podobnega, tako da so si člani klepeta po IP naslovih popolnoma transparentni. Jami reši zgoraj omenjeni problem povezljivosti podobno kot Briar, tako da torej namestimo aplikacijo na še eni napravi, ki je ves čas omrežno dostopna.

Tri posnetki zaslona Jami aplikacije na Androidu.

Jami na Androidu. Vir: Google Play.

Vse odkar sem se naveličal Matrixa in začel iskati, se mi je šele pri Jamiju prvič zares zazdelo, da sem prispel na cilj. Vendar pa je ta žal katastrofalno padel na sedaj že standardnem testu sinhronizacije med napravami. Povezati račun, ustvarjen na Android aplikaciji, s programom na računalniku je bilo praktično nemogoče. Tudi ko je ta povezava delovala kot stabilna, se v nastavitvah na seznamu povezanih naprav nista pokazali obe. Jami se hvali z zmožnostjo pošiljanja sporočil sam sebi, vendar ta sporočila kar sama od sebe zginevajo. Grozna izkušnja skratka, mi je kar škoda — upam, da imajo ljudje v podsaharski Afriki boljšo.

Delta Chat

Stari znanec, spet sem tu. Delta Chat sem si namreč že kar nekaj časa ogledoval, vendar sem se šele zdaj zares poglobil vanj. Je klepetalnik, ki deluje prek e-pošte — vsako sporočilo (reakcija, sprememba imena, stanje “prebrano” itd.) se pošlje kot mail, šifriran z OpenPGP. Delta Chat je tako pravzaprav aplikacija za e-pošto, preoblečena v klepetalnik. Uporabnik se lahko dejansko prijavi s svojim obstoječim elektronskim naslovom, ali pa naredi novega pri enem izmed mnogih Chatmail ponudnikovChatmail je protokol in skupek programov, ki omogoča delovanje Delta Chata, v katerem je vključen tudi optimiziran IMAP strežnik. Ponudnik deluje le kot transport, saj so sporočila shranjena na naši napravi. Chatmail strežniki imajo ponavadi še dodatno omejitev hranjenja sporočil, tipično 20 dni, tako da je zgodovina sporočil resnično le pri nas.

Dva zaslonska posnetka Delta Chat aplikacije na Androidu.

Delta Chat na Androidu. Vir: Delta Chat.

Zaslonski posnetek Delta Chat namizne aplikacije.

Delta Chat na namizju. Vir: Delta Chat.

Izbira e-poštnih protokolov ima mnoge prednosti. Sporočila so recimo vedno na dosegu roke. V svoj “Chatmail račun” se namreč lahko prijavimo s katerimkoli programom, ki podpira IMAP, tj. recimo Thunderbird. Tako vidimo, da je vsako sporočilo šifriran mail, ki ga lahko dešifriramo z OpenPGP ključem, izvoženim iz Delta Chat aplikacije. Tako lahko tudi pošljemo novega in v aplikaciji se bo prikazal kot navadno sporočilo. To naredi Chatmail in Delta Chat zelo dolgoživ, saj naša komunikacija ni vezana na eno podjetje ali eno aplikacijo, ampak na gromozanski ekosistem elektronske pošte, ki je že praktično nesmrten.

V prihodnje bo menda mogoče celo nastaviti več ponudnikov, tako da niti na ponudnika ne bomo vezani — smiselno, saj ta že tako služi le za transport oz. začasno hrambo. Tudi sicer čutim, da se ekosistem okoli Delta Chata razvija v dobro smer. Poudarek je namreč vedno bolj na zanesljivosti in robustnosti komunikacije kot na novih funkcijah, kar se v praksi zares pozna.

Tudi izvoz in uvoz sporočil je zelo transparenten. Tako namreč tudi sinhroniziramo račun z drugimi napravami: izvozimo profil z obstoječe in na novi napravi uvozimo. Napravi je mogoče sinhronizirati tudi s skeniranjem QR kode, nakar se ta prenos sproži v ozadju, vendar mi to ni uspelo vsakič. Ker smo s tem prenosom svoj račun praktično klonirali, sta napravi popolnoma samostojni. V smislu varnosti je to po moje dokaj velika šibkost, saj ne moremo recimo v primeru kraje odjaviti naprave na daljavo, kot je to mogoče pri Matrixu, poleg tega pa ima še celotno zgodovino naših sporočil. V praksi ni mogoče spremeniti svojega šifrirnega ključa, tako da bo kradljivec lahko celo še naprej bral naša sporočila in je edina rešitev, da ustvarimo popolnoma nov račun ter zapustimo starega.

Pri vsem tem pa je seveda ključno vprašanje, česa točno nas je pravzaprav strah. Android načeloma šifrira datoteke, kot tudi naš (prenosni) računalnik, če pravilno nastavimo disk, kar varuje naše podatke pred tatovi. Če so sporočila torej shranjena na naših napravah, je po moje še edin pomemben faktor transport, ki pa je v primeru Delta Chata preverjeno varen.

V praksi sta Android in namizna aplikacija lahka in prijetna za uporabo. Čeprav nista ravno nabita s funkcijami, kot je recimo Telegram — ali pa znotraj tega članka, Element —, sta vseeno zadovoljivo sposobna in predvsem zelo robustna. Edin problemček, na katerega sem naletel, je bil s poprej omenjeno sinhronizacijo. Prenos sporočil ni instanten in je včasih treba počakati nekaj sekund, da se sporočilo pošlje ter na drugi strani prejme.

Zaključek

Do nadaljnjega bom uporabljal Delta Chat, zaradi omenjenih prednosti ter tudi zaradi čisto osebne želje, da z Elementa in Matrixa preidem na nekaj preprostejšega in stabilnejšega. Čeprav je v smislu funkcij očitno slabši od konkurence, je za moje namene popoln.

Bralcu lahko priporočam kateregakoli izmed opisanih klepetalnikov, saj so vsi po svoje kvalitetni, predvsem pa jih združuje odprtokodnost in šifriranje od konca do konca, ki je ključno za varno in zasebno komunikacijo. Kljub temu pa lahko svoje nasvete nekoliko usmerim.

Nazadnje: Delta Chat priporočam sorodnim dušam washed-up tehnoloških navdušencev, kot sem jaz.

Komentarji

Po novem sprejemam komentarje. Vnos razume Markdown sintakso. Pred objavo poslano pregledam, tako da se komentar pojavi z zamikom.