Použité technologie

I když většina lidí si myslí něco jiného, ve skutečnosti je důležité a žádoucí, aby principy a metody, na kterých je zabezpečení postaveno, byly veřejně známé a důkladně prozkoumané. Bezpečnost je třeba zajišťovat nikoli utajováním způsobu fungování, ale utajením šifrovacího klíče. Opačný přístup, nazývaný „security through obscurity“, velmi často vede k chybám, které může útočník odhalit a následně zneužívat.

Proto naše produkty stavíme na moderních protokolech a metodách šifrování prověřených širokou kryptologickou komunitou.


Síťová komunikace

Veškerá komunikace v rámci aplikace CryptoCult probíhá přes internet. Pro řízení provozu, to jest navazování a ukončování hovorů, signalizaci dostupnosti kontaktů a zasílání textových zpráv, používáme Session Initiation Protocol (SIP). Spojení se SIP serverem, který si lze představit jako telefonní ústřednu, zabezpečuje protokol TLS.


Hlasové hovory

Hlasové hovory jsou zabezpečeny pomocí protokolu SRTP, který zajišťuje ochranu před odposlechem, modifikací i opakovaným použitím zachycených dat. Data jsou chráněna šifrou AES-256 a k ověření jejich integrity slouží kód HMAC-SHA1. Pro výměnu hlavního klíče, od kterého jsou pak dle standardu SRTP odvozovány klíče pro samotné šifrování a ověřování integrity, je použit protokol ZRTP.

Hlavní výhodou protokolu ZRTP je, že nevyžaduje, aby komunikující strany předem sdílely nějakou tajnou informaci, již by následně mohly použít pro vzájemné prokázání své identity, tzv. autentizaci. Prvním krokem protokolu ZRTP je Diffieho-Hellmanova výměna klíčů, která umožňuje komunikujícím stranám bezpečně si vyměnit klíče po nezabezpečeném kanálu.

Z důvodu ochrany před útočníkem aktivně vstupujícím do komunikace a vydávajícím se za druhou z komunikujících stran, tzv. man-in-the-middle útokem, následuje po výměně klíčů ověření, že obě strany dospěly ke stejnému sdílenému klíči. Kdyby mezi komunikující strany vstoupil útočník, klíče, ke kterým každá ze stran došla, by se lišily.

Ověření se provádí pomocí čtyřpísmenného kódu, tzv. Short Authentication String, odvozeného od klíče. Tento kód si obě strany na počátku hovoru navzájem přečtou a ověří tak shodu. Pokud spolu již někdy v minulosti obě strany komunikovaly, použije se navíc k ověření informace odvozená od klíče použitého při minulém spojení.

Po ukončení hovoru jsou klíče zničeny, takže dešifrování zachycených dat by nebylo možné ani v případě, kdy by byla později jedna ze stran donucena útočníkem ke spolupráci.


Textové zprávy

Textové zprávy a e-maily jsou chráněny dle standardu OpenPGP. Jejich zabezpečení je založeno na asymetrické kryptografii, kdy každý uživatel má pár klíčů – klíč veřejný a klíč soukromý. Veřejný klíč, jak již jeho označení napovídá, je určen ke zveřejnění. S jeho pomocí mohou ostatní uživatelé zašifrovat zprávy, dešifrovat je však může jen držitel soukromého klíče.

Implementace OpenPGP v aplikaci CryptoCult podporuje asymetrické šifry RSA pro šifrování, dešifrování i podepisování zpráv, ElGamal pro šifrování a DSA pro podepisování zpráv. Ze symetrických šifer, které se používají pro zabezpečení samotného obsahu zprávy, CryptoCult plně podporuje šifru AES v její 128-, 192- i 256bitové variantě a šifru CAST5. Vedle toho umožňuje dešifrovat i zprávy zašifrované šiframi 3DESTwoFish.

Vlastní PGP klíč (RSA) si můžete bezpečně vygenerovat přímo v aplikaci, nemusíte se tedy spoléhat na produkty třetích stran. Lze však také importovat a používat klíče vygenerované v jiných aplikacích, jako je GnuPG nebo PGP Desktop.


E-mail

E-maily jsou zabezpečeny stejně jako textové zprávy, dle standardu OpenPGP. E-mailový klient integrovaný v aplikaci CryptoCult podporuje standardní protokoly pro příjem a odesílání zpráv, tedy POP3, IMAPSMTP. Spojení s e-mailovým serverem je standardně zabezpečeno pomocí SSL a aplikace podporuje i navázání zabezpečené komunikace protokolem STARTTLS.


Zabezpečení dat aplikace

Data aplikace a údaje uložené v Trezoru jsou šifrovány šifrou AES-256. Klíč je odvozen od uživatelského hesla funkcí PBKDF2 s 4096 iteracemi hashovací funkce HMAC-SHA-256 a 160bitovou solí (salt). Tento způsob odvození klíče zajišťuje zvýšenou ochranu proti útokům na heslo, které je typicky nejslabším článkem zabezpečení.


Zdroj náhodných dat

Bezpečné fungování jakékoli kryptografické aplikace se neobejde bez kvalitního zdroje náhodných dat. Sebelepší šifra data neochrání, pokud útočník může uhodnout klíč. Proto jsme i generování náhodných dat věnovali maximální pozornost.

Protože skutečně náhodná data jsou relativně vzácná, v praxi se používají generátory tzv. pseudonáhodných čísel. Ty na základě skutečně náhodného vstupu dokážou vygenerovat větší množství dat, přičemž v případě kryptograficky bezpečného generátoru tato data nelze rozlišit od dat skutečně náhodných. V naší aplikaci používáme kryptograficky bezpečný generátor pseudonáhodných čísel Fortuna navržený Brucem Schneierem, jemuž jako zdroj náhodnosti slouží fotoaparát mobilního telefonu, zvuk v průběhu hovoru a uživatelské akce.

Konstrukce generátoru Fortuna zajišťuje, že ani vyřazení či manipulace s některým ze zdrojů náhodnosti, například přesvícení kamery, neohrožuje kvalitu výstupních pseudonáhodných dat.