Hlavní navigace

Čeněk Rauscher (OKsystem): Využíváme bitcoin pro ukládání šifrovacích klíčů

 Autor: OKsystem
Bez šifrování se dnes neobejdete, většina uživatelů ale už nekontroluje, zda má správné šifrovací klíče. Proto jsme se rozhodli využít pro automatickou kontrolu klíčů bitcoinovovu síť, říká Čeněk Rauscher ze společnosti OKsystem.
8. 2. 2021
MarketVoice Co je to?

Sdílet

Slova jako šifrování nebo bezpečná komunikace se objevují v souvislosti s použitím internetu prakticky neustále. Člověk tak může získat pocit, že je při psaní zpráv a volání v bezpečí. Je tomu tak?

Bez šifrování se dnes na internetu prakticky neobejdete. Šifruje se všechno a všude, firmy se tím rády chlubí a spoustu uživatelů tak uchlácholí. Dokonce i webové stránky používají zabezpečenou komunikaci, váš browser šifruje, pokud data odesílá. To ale neznamená, že pokud pošlete ze svého browseru někomu e-mail, že si ho nemůže nikdo jiný než cílený příjemce přečíst. V tomto případě je šifrovaná pouze cesta od vás k serveru a následně k adresátovi e-mailu. Na serveru je vaše zpráva rozšifrovaná, uložena a přístupná. Pak už jen záleží na úrovni zabezpečení serveru proti hackerům, nastavení vnitrofiremní politiky proti vynášení zpráv, pravidlech státu, v jakém se server nachází, a dalších faktorech.

Jiná věc je tzv. end-to-end šifrování. To znamená, že klientská aplikace data zašifruje na koncovém zařízení (například telefonu) a odešle je příjemci. A pouze tento příjemce je schopen zprávu rozšifrovat a přečíst. Servery jsou zde využity pouze pro přenos zprávy a nikdo, kdo se k ní po cestě dostane, si ji přečíst nemůže.

Většina dnešních komunikátorů se chlubí tím, že podporuje end-to-end šifrování. Stačí si tedy některý z nich vybrat a více se o bezpečí zpráv a hovorů nestarat?

Čeněk Rauscher

Vedoucí vývojového týmu aplikací pro mobilní platformy ve společnosti OKsystem. Vede projekt vývoje BabelApp – platformu pro bezpečnou komunikaci. Aplikace pro Android, iOS a Windows desktop vedle pokročilého end-to-end šifrování využívá řadu vyspělých technologií pro absolutně bezpečnou komunikaci, včetně blockchainu. Vystudoval katedru informatiky na Univerzitě Karlově, v OKsystemu působí od roku 2010.

Je pravda, že většina komunikátorů end-to-end šifrování deklaruje a nejspíš není důvod jim to nevěřit. Problematika bohužel není tak jednoduchá. Pokud chcete s někým šifrovaně komunikovat, je potřeba si vyměnit klíče pro šifrování. Server vám sice nějaké klíče dá, ale jak víte, že nepatří někomu jinému? Že vám „zlý“ administrátor nebo hacker nedal třeba jiný klíč?

Je to podobné jako s telefonními čísly. Představte si, že poprosíte „dobrého kamaráda“ o telefonní číslo na jeho kamarádku a on vám dá své vlastní a to samé provede i kamarádce. Vy i kamarádka si píšete v dobré víře, že soukromé SMS nikdo nečte, ale všechny zprávy chodí ve skutečnosti někomu jinému, kdo zprávy nejen čte a přeposílá, ale klidně je může i měnit. Rozpoznat takto napadenou komunikaci je velice obtížné, ačkoli ověřit, zda je komunikace bezpečná, už tak složité většinou není.

Jak se tedy můžeme ujistit, že naše komunikace není napadená?

Není to těžké, ale uživatelsky dost nepraktické. U výše zmíněných kamarádů by stačilo se sejít a potvrdit si vzájemná telefonní čísla. U většiny end-to-end komunikátorů je možnost šifrovací klíče v nějaké formě zobrazit, ať už jako změť znaků, posloupnost kódů, obrázků, nebo přímo slov. Pak nám stačí se s dotyčným spojit (určitě jinak než pomocí právě kontrolovaného komunikátoru – například se sejít nebo si zavolat) a klíče si zkontrolovat. Pokud jsou stejné, nemáte se čeho bát.

Pro většinu uživatelů je tento způsob ale značně otravný a z naší zkušenosti víme, že klíče ověřuje pouze zlomek osob. Pokud si k tomu přidáte, že klíče se časem mění a některé komunikátory vás na změnu ani neupozorní, mohli byste klíče kontrolovat v podstatě neustále.

Z toho, co říkáte, mám pocit, že end-to-end šifrování je docela noční můra…

Pravda je, že cesta přes ruční kontrolování klíčů noční můra trochu je. I proto je většina komunikátorů v aplikaci spíše ukrývá, aby aplikace nevypadala příliš složitě, ale bezpečnosti to zrovna nepřidává. Námi vyvíjený komunikátor BabelApp se ze začátku snažil být k uživateli co nejvíce kritický a stále ho upozorňoval, co je potřeba zkontrolovat, kdo si změnil klíč atd.

Ve výsledku to ale velký úspěch nemělo. Varování a informací bylo tolik, že je nikdo nechtěl řešit, a došli jsme k přesvědčení, že jediná bezpečná cesta je veškeré kontroly dělat automaticky a uživatele varovat pouze v případě nebezpečí, popřípadě mu, při odhaleném útoku, komunikaci úplně přerušit. 

A lze vůbec ověřování klíčů řešit jinak?

Připomeňme si vaši komunikaci s kamarádkou, kterou někdo odposlouchává nebo čte. Sejít se s ní je určitě řešení a nejspíš i příjemné, ale nejspíš by vám stačilo mít telefonní seznam, kde byste si našel její jméno a ověřil, že telefonní číslo je správné.

Vypadá to jednoduše, ale někdo může namítnout, jak vím, že telefonní seznam do kterého nahlížím, není napaden. Co když mi ho „lstivý“ kamarád podstrčil? A měl by pravdu, jistý si být nemohu. Potřeboval bych telefonní seznam, kterému by všichni věřili a nešel by nijak zfalšovat a měnit. Pokud to převedu na internet, potřebuji nějakou službu, která nikomu nepatří, kde mohou všichni data číst, v určitých případech i zapisovat, ale nikdo není schopen je změnit.

Máte na mysli blockchain?

Ano i ne. Je pravda, že blockchain si lze představit jako úložiště neboli databázi, kde lze informace obtížně měnit. Termín „blockchain“ se stal tak trochu synonymem pro něco neměnného, a tudíž bezpečného, není to ale úplně pravda. Blockchain je pouze struktura dat, obsahující bloky, které jsou propojené do řetězce a mají tu vlastnost, že pokud změníte informace ve starším bloku, je potřeba změnit i všechny novější bloky. Tím se prováděné změny komplikují, ale to je vše.

Blockchain pro ukládání transakcí využívají například kryptoměny, a aby nemohlo docházet ke změnám v transakcích, využívají velmi chytré ochranné mechanismy. Nejrozšířenější je tzv. „proof of work“ – ochrana spočívající v tom, že aby byl blok považován za platný, musí splnit velice striktní kritéria. Lze jednoduše ověřit, že tomu tak je, nicméně je velice složité takový blok vytvořit. I pro miliony počítačů, které se o to snaží 24/7, je to otázka několika minut (u Bitcoinu přibližně 10 minut).

Pokud by tedy někdo chtěl změnu provést, musel by sehnat takový výpočetní výkon, kterým by byl schopen přepočítat měněný blok a následně i všechny novější bloky, a to rychleji, než zbytek sítě přidává nové. O tom, jak je tento výkon masivní, svědčí například to, že i velice úsporné čipy, které se o výpočty starají, spotřebují tolik elektrické energie jako několik jaderných elektráren. Jak vidíte, ekologické to zrovna není.

Vy využíváte kryptoměny pro ukládání informací o klíčích?

Ano. Po analýzách, které jsme si udělali, jsme se rozhodli pro využití největší, nejstarší a snad i nejstabilnější kryptoměny, pokud se slovo stabilní dá tedy v souvislosti s kryptoměnami vůbec použít. Tou nejstarší kryptoměnou samozřejmě myslím Bitcoin.

Místo bitcoinových transakcí tedy zapisujete do bitcoinové sítě informace o klíčích? Smí se to vůbec?

To není úplně přesné. Bloky v bitcoinovém blockchainu obsahují pouze seznamy provedených transakcí a nic jiného. Pravidla samozřejmě musíme dodržovat a nic jiného než transakce by nebylo sítí přijato. Stejně ale jako k finanční transakci v bance je i k bitcoinové transakci možné napsat určitou formu komentáře. My těchto několik málo bajtů využíváme pro pozdější ověřování. Vždy tedy převedeme malý zlomek bitcoinu (v přepočtu několik korun) a doplníme důležité informace pro pozdější ověřování. Kdokoli je tuto transakci schopný vyhledat a ověřit, nikdo ale není schopen ji smazat či změnit.

A změna klíče? Říkal jste, že se klíče časem mohou měnit, ale v bitcoinové síti z principu nic nezměníte.

Měnit nic nelze, ale tu malou bitcoinovou částku lze převádět dál a dál, stejně jako peníze. Jedině poslední, nevyplacená, transakce je platná, ostatní transakce jsou pak pouze historie.

Někdo ale transakce s klíči do bitcoinové sítě vkládá. Kdo má právo je tam vkládat a jak si mohu být jistý, že tam nebyly vloženy podvržené informace?

V případě BabelApp využíváme standardního mechanismu bitcoinových transakcí. Pokud převedete část bitcoinu pomocí nové transakce, nadefinujete v ní, kdo má k té částce přístup, a kdo ji tedy může v budoucnu převést někomu dalšímu. Takto je zabezpečeno, že vytvářet, měnit klíče i další potřebné operace může provést pouze ten, komu klíče patří.

Navíc, pokud by došlo například k odcizení bitcoinových klíčů, které umožňují zápis, a jejich zneužití, velmi rychle by se to odhalilo. Každý telefon neustále sleduje všechny změny v bitcoinové síti, které obsahují informace s údaji pro BabelApp. Nemůže mu tedy uniknout ani informace o změně informací o vlastním účtu a aplikace sama okamžitě komunikaci ukončí.

Bitcoinová síť je určitě bezpečná, je ale také obrovská. Pokud potřebuji někoho konkrétního ověřit, je skutečně potřeba stáhnout stovky GB dat?

U standardního telefonu to může být problém. Bitcoinová síť stále roste obrovskou rychlostí a všechny bloky obsahují opravdu stovky GB. Není ale potřeba všechna tato data stahovat. Uživatelé se nepřipojují přímo k uzlům v bitcoinové síti, ale jen k některému, popřípadě k více BabelApp serverům. Tyto servery stahují data z bitcoinových uzlů, ověřují je a filtrují a klientům již posílají pouze jejich zlomek. Tak není nijak narušena bezpečnost a neměnnost těchto informací a koncoví klienti vždy validují, zda server nepodvádí.

Klienti tedy zpracovávají pouze zanedbatelné množství dat. Pokud si posíláte obrázky či telefonujete, jsou objemy mnohem větší. Navíc – informace jsou na klientech uloženy, takže jsou dostupné i offline a není potřeba nic stahovat vícekrát.

Používat bitcoiny je docela složité. Potřebuji peněženku, někde bitcoiny musíte nakoupit a pak platit poplatky těžařům. Platí to i v případě BabelApp?

Těžaři zajišťují bezpečnost sítě. Čím je jich více, tím je síť logicky bezpečnější. Nedělají to ale z nějakého přesvědčení nebo nařízení, dělají to kvůli penězům. Proto je chování sítě předvídatelné – dražší bitcoiny znamenají více těžařů a větší bezpečí. Těžaři mají jasný úkol, pokusit se vytvořit správný blok s transakcemi, a když se to přibližně jednou za deset minut jednomu z nich podaří, dostane odměnu. Část odměny jsou poplatky za ty transakce, které do bloku zahrnou. Pokud je transakcí mnoho, je potřeba nějakou dobu čekat, než jsou transakce do bloku vloženy. To může trvat hodiny, výjimečně i dny.

Je jasné, že těmto těžařům někdo zaplatit musí, jinak by to nedělali. Neznamená to ale, že si musíte jít koupit bitcoiny a nastudovat si použití bitcoinové peněženky. Za vaše transakce platí váš server, ke kterému jste registrováni. Pokud je to server ve vaší firmě, platí to za vás firma. Pokud používáte free BabelApp, ke kterému se můžete připojit zdarma, tak můžete tuto ochranu využít i tam. Stačí v aplikaci provést aktivaci služby a spolu s tím zaplatit přes Google nebo Apple poplatek za transakci 10 Kč.

Je to trochu méně, než jsou momentální skutečné náklady, ale jde nám hlavně o to, aby aplikaci někdo zbytečně nezneužíval. Aplikaci můžete využívat i bez této ochrany, pak je to, co se zabezpečení týče, stejné jako například Threema nebo Signal. O aplikaci si každý, koho to zajímá, může zjistit více na stránkách babelapp.com. Je tam i možné si stáhnout obsáhlý whitepaper se všemi informacemi ohledně aplikace, včetně detailního popisu použití zabezpečení pomocí bitcoinových sítí.

Mám aktivovanou bitcoinovou ochranu, nemusím se tedy už o nic starat? Aplikace vše stále ověřuje za mě?

Zjednodušeně řečeno. Aplikace stále kontroluje novinky v bitcoinové síti, ověřuje je s informacemi, které má, a hledá možné hrozby. Pokud na nějakou narazí, informuje vás o tom, popřípadě vám napadenou komunikaci úplně odepře. Pokud někdo z vašich kontaktů tuto ochranu nepoužívá, aplikace jej označí oranžovou barvou a můžete použít klasické ruční ověření. Pokud vám telefon tedy nehlásí napadení, není se čeho bát. U oranžových kontaktů si pouze dávejte pozor na citlivou korespondenci, alespoň do doby, než si kontakt ověříte ručně.

BabelApp zní jako zajímavý projekt, ale i velice rozsáhlý. Blockchain, Bitcoin, šifrování, bezpečnost, Android, iOS, Windows klient. Řeknete nám něco o tom, co pro projekt chystáte, co plánujete dál, jak velký tým vývojářů na aplikaci pracuje?

Klidně byste v seznamu mohl pokračovat, OSX, Java, C++, VOIP. Při vývoji jsme se opravdu dostali do různých problematik, od Androidu až po ZRTP. Projekt vznikl asi před 8 lety jako nástroj pro šifrování SMS pro Android a iOS. Od té doby se rozrostl na jednu z nejbezpečnějších komunikačních platforem na světě. V roadmapě máme další a další funkce, které implementujeme, zmínil bych například videokonference, kalendář, popřípadě šifrovaný disk a přístup k přijatým a odeslaným přílohám pomocí něj. Je toho mnohem více a záleží pouze na našich zákaznících a jejich prioritách.

Na vývoj máme v rámci naší firmy tým asi dvaceti lidí. Jsou to nejen vývojáři, ale i testeři, UX designer, specialista implementace a další. Tým se stále rozrůstá, pokud někoho, kdo článek čte, problematika zajímá a myslí si, že nám má co nabídnout, určitě ho rádi v OKsystemu přivítáme, otevřených pozic máme aktuálně hned několik.