Když jsem před pár dny napsal můj názor na vybrané služby instant messagingu, několik lidí se rozohnilo, jak můžu dávat přednost Telegramu, který by default nepoužívá end-to-end šifrování, před WhatsAppem, který end-to-end šifrování používá vždy. Pokusím se to dnes vysvětlit.
Asi se všichni shodneme na tom, že ultimátním cílem IM služeb v oblasti bezpečnosti a soukromí, je, aby si zprávu přečetli jen ti, pro které je určená, typicky lidé na druhé straně konverzace. End-to-end šifrování je důležitým, ale zdaleka ne jediným opatřením, jak toho dosáhnout.
Abyste měli 100% jistotu, že se vaše zprávy k nikomu nedostanou, měli byste mít plnou kontrolu nad zařízením, na kterém klient běží, a být schopní si ověřit, co a jak na něm skutečně běží. To znamená mít zcela otevřený operační systém, který je někde transparentně sestavený. Na to dnes narazíte ve velmi ojedinělých případech (i takový CyanogenMod v drtivé většině případů obsahuje binární ovladače) a pokud máte to stěstí, tak pořád ještě nejste v suchu, pokud nemáte to samé zajištěné na úrovni firmwaru. Najít zařízení, na kterém běží jen otevřený software, je dnes opravdu těžký úkol.
Nicméně pro porovnávání IM služeb je toto víceméně irelevantní, protože ty populární nejsou společně se zařízeními součástí jednoho řešení (odmyslím teď iMessage a BBM, které stejně nesplňují tu základní podmínku otevřeného softwaru). Předpokládejme tedy, že zařízení, na kterém IM klient běží, je bezpečné.
Další vrstvou je samotný klient a ten už hraje při porovnávání jednotlivých služeb velkou roli. Platí u něj to samé, co u softwaru pod ním. Chceme-li si být 100% jistí, že je bezpečný a máme nad ním kontrolu, měl by mít otevřené zdrojové kódy a ideálně by měl být sestavený transparentně nějakou třetí stranou nebo přímo vámi. U klienta, který nemá otevřené zdrojové kódy, nemůžeme studovat veškerou jeho funkcionalitu a ověřit si, že dělá to, co deklaruje. Je naivní předpokládat, že každý uživatel bude zdrojové kódy studovat, ale najdou se takoví mezi námi a šance, že se odhalí něco nekalého v otevřeném klientovi, je výrazně vyšší než u klienta uzavřeného. Neméně důležité je zajistit, aby binárka, kterou používáte, opravdu odpovídala zdrojovým kódům, které dávají autoři k dispozici. Proto je důležité to transparentní sestavování.
Tady je zcela diametrální rozdíl mezi Telegramem a WhatsAppem. Klienti WhatsAppu jsou zcela uzavření. WhatsApp může deklarovat nějaké chování, ale uživatel si to může ověřit jen velmi, velmi omezeně. Nezbývá mu nic jiného, než poskytovateli věřit, že je všechno tak, jak říká. A to není strategie, která vám v honbě za soukromím bez kompromisů zajistí klid v duši. Naopak klienti Telegramu jsou otevření. Ti oficiální pro Android a desktop splňují i podmínku transparentního sestavování třetími stranami (linuxové distribuce, F-droid). Navíc existují implementace třetích stran, s kterými nemají provozovatelé Telegramu nic společného.
A co otevřenost na straně serveru, možná si říkáte. Obě služby jsou na tom podobně. Serverová část je uzavřená. Nicméně zveřejnění zdrojových kódů by důvěru nezvýšilo. Abyste ověřili, že na serveru běží opravdu to, co se nachází v poskytnutých zdrojových kódech, museli byste k nim mít přístup, což umožnit uživatelům z pochopitelných důvodů nejde. Navíc pokud je správně implementované end-to-end šifrování, stává se serverová část z pohledu bezpečnosti zpráv irelevantní. Zdrojové kódy by měly smysl v případě, kdy služba podporuje federalizaci a můžete i serverovou část provozovat nezávisle na autorovi. To ale není případ ani Telegramu ani WhatsAppu.
A nyní ke zmiňovanému end-to-end šifrování. Jeho cílem je, aby se k obsahu dostaly pouze oba konce konverzace (případně více konců, jedná-li se o skupinu). End-to-end šifrování se v poslední době stalo takovou populární nálepkou asi jako „bio“. Biomléko musí být přece lepší než mléko, ne? Stejně tak služba, která primárně využívá end-to-end šifrování musí být bezpečnější než ta, která ne, že? Ono to ale není tak jednoduché.
Problém end-to-end šifrování je, že není pohodlné. Aby bylo opravdu účinné, musíte splnit hned řadu podmínek: nesmíte privátní klíč vygenerovaný klientem s nikým sdílet, musíte si ověřit, že klíč protistrany, kterým se konverzace šifruje, pochází skutečně od osoby, s kterou komunikujete (kolik z vás si skutečně otisky klíčů u každého chatu navzájem kontroluje?), obsah konverzací by neměl opustit klienta v podobě, která je čitelná pro kohokoliv jiného atd.
Ověřování protistrany je zdlouhavé, synchronizace mezi klienty obtížná, doručování zpráv, když není jedna ze stran dostupná, je taky problém atd. Chtějí-li zůstat autoři IM služeb, které používají end-to-end šifrování, atraktivní pro uživatele, musí dělat ústupky. A to je i případ WhatsAppu.
Problém se synchronizací vyřešil ukládáním historie chatů (v nezašifrované podobě!) v iCloudu nebo Google Drive. Sice používáte end-to-end šifrování, aby se k obsahu konverzace nikdo nedostal, ale potom se celý obsah uloží na server třetí strany v podobě, která je pro ni čitelná, což primární úlohu end-to-end šifrování zcela sabotuje. Tato volba sice není ve výchozím nastavení zapnutá, ale WhatsApp notifikacemi uživatele dost tlačí do toho, aby ji zapnul. Výsledkem tak je, že už se údajně počet uživatelů, kteří ji mají zapnutou, pohybuje v desítkách procent a roste. Že ji nemáte zapnutou vy, nepomůže, protože ji pořád může mít zapnutou protistrana.
Problém s přenosem klíčů vyřešil tak, že prostě nařídí klientovi vygenerovat nové. Přitom ve výchozím nastavení o tom uživateli vůbec neřekne. Dát uživateli vědět, že se vyměnily klíče, je vedle ověření, že klíč protistrany skutečně pochází od člověka, s kterým komunikujeme, základním předpokladem pro to, aby se člověk vyhnul „man-in-the-middle“ útoku a na end-to-end šifrování se dalo spolehnout. Problém také je, že upozornění na nové klíče lze sice zapnout, ale WhatsApp pořád automaticky odešle dosud nedoručené zprávy zašifrované novými klíči. Pokud tedy dojde k MITM útoku, dostanete upozornění, ale úniku alespoň části zpráv nezabráníte.
WhatsApp může všechny konverzace end-to-end šifrovat a používat na to skvělé krypto, ale to, jak momentálně celá služba funguje, zcela sabotuje dosažení primárního cíle – aby se k obsahu vašich chatů nedostala třetí osoba. Může se k němu dostat jak třetí osoba (Apple, Google), tak samotný WhatsApp.
A proč považuji Telegram v tomto za lepší, i když end-to-end šifrování pro standardní chaty nepoužívá? Transparentnost.
Uživatel má docela jasnou představu, jakou míru soukromí může od jednotlivých forem chatů očekávat. Standardní chaty jsou pohodlné. Synchronizují se mezi zařízeními, jsou zálohované. Telegram si na nic nehraje: obsah těchto chatů je uložený na našich serverech a v podobě, která je pro nás čitelná. Záleží na uživatelích, jestli tuto formu využijí a pro jaké účely.
Vedle toho mají možnost tzv. secret chats, které nabízejí end-to-end šifrování, ale bez ústupků pohodlnosti. Aplikace je nikam nezálohují. Do existující konverzace se dostanete pouze z klienta, v kterém jste ji započali. Pokud přejdete třeba na nový mobil, tak o ni prostě přijdete.
Telegram nabízí dvě možnosti: jednu pohodlnou s omezeným soukromím, druhou zaměřenou na soukromí a bez ústupů pohodlnosti. WhatsApp udělal řešení „one size fits all“, které nezajišťuje ani soukromí ani pohodlnost (synchronizace chatů přes zálohu v Google Drive/iCloud nefunguje mezi všemi klienty). Možnost udělat z WhatsAppu řešení, kde bude mít end-to-end šifrování opravdu nějaký efekt, prakticky není. Nemáte možnost ovlivnit a vidět, jestli mají vaše kontakty zálohování zapnuté. A i kdybyste si s nimi ověřili, že nemají, nikdy nezajistíte, že si ho někdy v budoucnu nezapnou a vaše zprávy zpětně nedají k dispozici třetí osobě. Stejně tak
Slyšel jsem argument, že v Telegramu nechtějí uživatelé secret chats používat a protistrana výzvu na jejich navázání vždy odmítne a vy nemáte možnosti s nimi opravdu bezpečně komunikovat. V takovém případě se jedná o lidi, kteří si asi necení soukromí svých zpráv natolik, aby nepohodlnost s tím spojenou podstoupili. Takoví uživatelé s největší pravděpodobností nemají problém se zálohování svých (a tím pádem i vašich) chatů v nezašifrované podobě u třetích osob. Při komunikaci s nimi v Telegramu aspoň člověk ví, na čem je, a v případě normálních chatů nepodléhá falešné iluzi, že se to nemůžou dostat k někomu jinému.
Tento článek je pouze srovnáním Telegramu a WhatsAppu. Tím, že Telegram považuji v oblasti soukromí za lepší než WhatsApp, ještě neříkám, že je to také řešení nejlepší. Existují lepší. Třeba Wire.
Napsat komentář