TrueCrypt je široce známý software pro šifrování disků, který už mnoho let existuje také pro Linux včetně verze s GUI. Byl vždy zdarma, pod open-source licencí, ale měl neznámé autory, což snižovalo jeho důvěryhodnost. Přesto byl mnoho let synonymem pro software šifrující pevné i přenosné disky.
Celý svět jej akceptoval jako bezproblémové řešení až do chvíle, kdy se v roce 2014 na webu projektu objevila informace o ukončení vývoje. Autoři ukončili vývoj velmi podivným způsobem. Bylo to hodně drsné, minimálně způsobem oznámení,
řekl na své přednášce na konferenci CryptoFest 2015 Josef Kokeš z Fakulty informačních technologií ČVUT. Ten se věnoval poměrně klíčové otázce, zda je vlastně ještě TrueCrypt bezpečný a zda je možné mu věřit. Program si za léta existence našel velmi mnoho uživatelů a má řadu nástupců: například VeraCrypt či CipherShed. Proto má smysl dělat bezpečnostní audit i u oficiálně ukončeného projektu. Kód je totiž široce používán i nadále.
Před ukončením vývoje uživatelé věřili, že je TrueCrypt bezpečný, ale tato důvěra nebyla podložena žádnými fakty. Uživatelé věřili v bezpečnost, ale šlo o emoční záležitost.
Až rychlé ukončení vývoje vedlo veřejnost k zamyšlení nad skutečným stavem věci. V průběhu let proběhlo několik bezpečnostních auditů s rozdílnými výsledky. Šlo ale spíš o dílčí audity, v minulosti nikdy nebylo prováděno komplexní zkoumání,
vysvětluje Kokeš.
Teprve od roku 2013 probíhá Open Crypto Audit, který provádí profesionální společnosti zabývající se bezpečností. První část auditu se zabývala bezpečností kódu a druhá implementací kryptografických algoritmů.
První audit prováděla společnost iSEC Partners, ale zkoumaly se jen některé části kódu: především kód bootování a ovladač pro Windows. Nezkoumaly se například kryptografické funkce.
Výsledek dopadl poměrně dobře, nalezeno bylo jedenáct chyb. Nejzásadnější závažnost byla označena za středně nebezpečnou,
shrnuje výsledky Josef Kokeš. Nejčastěji šlo o nesprávné testy vstupních dat nebo o nesprávnou práci s citlivými daty. Jedna chyba se týkala i kryptografie, přestože ta nebyla přímo zkoumaná: výzkumníci zjistili nedostatek iterací v algoritmu PBKDF2. Většina slabin není exploitovatelná, pokud uživatel dodrží stanovená doporučení týkající se fyzické bezpečnosti či šifrování systému,
uklidňuje Kokeš.
Druhá fáze auditu byla dokončena letos v březnu a zaměřovala se vyloženě na implementaci kryptografických funkcí. Jaké šifry byly použity, jak byly implementovány a zda v kódu neexistují slabá místa,
vyjmenovává Josef Kokeš. Konkrétně šlo o funkce provádějící šifrování dat, generování klíče z hesla, práce s hlavičkou kontejneru a implementaci AES a XTS. Auditoři naopak neřešili například skryté svazky nebo ostatní šifrovací algoritmy,
varuje Kokeš. Pořád tedy existuje poměrně velká část kódu, ve které může být v budoucnu nalezena významná chyba.
Celkem byly ve zkoumaných kryptografických algoritmech nalezeny čtyři konkrétní slabiny. Za prvé není ve Windows vhodně ošetřené selhání funkce CryptAcquireContext. TrueCrypt neřeší mezní případy, kdy některá funkce neočekávaně selže. Pokud by například selhala tato funkce pro inicializaci prostředků pro získání náhodných dat, aplikace to potichu přejde a použije entropii jen z dalších zdrojů,
vysvětlil Kokeš. Autoři pravděpodobně předpokládali, že stále zbývá dostatek entropie pro generování kvalitních náhodných dat. Z uživatelského hlediska jde ale podle Kokeše o selhání, protože uživatel si stále myslí, že software používá generátor náhodných čísel z operačního systému, ale doopravdy k tomu nemuselo dojít. Jsme svádění k falešnému pocitu bezpečí,
varuje Kokeš. Naštěstí je praktické zneužití poměrně složité, protože aby funkce selhala, musel útočník zcela ovládnout operační systém – to mu ovšem dává do rukou mnohem jednodušší způsoby zneužití. Navíc entropie z dalších zdrojů je skutečně dostatečně velká. Dobré také je, že tohle je chyba, která se dá opravit velmi snadno,
dodává Kokeš.
Další problém byl nalezen v implementaci AES, která je náchylná k časovacím útokům. Šifrování pomocí AES totiž může trvat různě dlouhou dobu pro různá data. Pokud má útočník kontrolu nad vstupními daty, může měřit dobu šifrování a teoreticky může získat i šifrovací klíče. Týká se to ale spíše smart karet než aplikací v PC.
Útočník by opět musel mít velkou kontrolu nad operačním systémem, pravděpodobně na úrovni jádra. V takové situaci už může útočník klíče vyčíst z paměti a nemusí složitě útočit na implementaci AES.
Pravdou ovšem je, že tato nedokonalost se bude opravovat velmi špatně. Bude to vyžadovat pravděpodobně reimplementaci algoritmu pro každou platformu zvlášť, možná i pro každý procesor.
Další chyby již byly označeny nízkou závažností. Například dochází k nesprávné práci s keyfiles – nepoužívá se ani PBKDF2 nebo HMAC, ale obyčejné CRC, které je velmi slabé a nebylo nikdy zamýšleno jako bezpečnostní opatření. Když porovnáme to, jak TrueCrypt dobře nakládá s hesly, tak nás překvapí, jak špatně pracuje s keyfiles.
Využití této chyby je podle Kokeše opět velmi těžké, je sice možné keyfiles ve správnou chvíli napadnout, ale jednodušší je citlivé soubory opět získat jinou cestou.
Posledním zjištěním byl špatně autentizovaný šifrovaný text v hlavičce souborů. TrueCrypt kontejner totiž nemá v šifrované podobě žádnou hlavičku. Při zadání hesla jsou na soubor vyzkoušeny všechny algoritmy a software sleduje, zda výsledkem není známá struktura. Podle ní pozná, že bylo heslo zadáno správně a že je možné začít číst otevřenou podobu dat. Testování ale probíhá velmi slabou cestou a opět se používá jen CRC a jednoduchý čtyřbajtový magický řetězec ‚TRUE‘.
Útočník má tedy teoreticky možnost vytvořit vlastní šifrovanou hlavičku, která po dešifrování vrátí správný výsledek. Otázka zní, jak to lze zneužít. Možná bychom mohli nastavit data tak, aby TrueCrypt po otevření takového souboru spadl. Neumím si představit, že by takto útočník třeba zjistil heslo.
TrueCrypt není dokonalý, jak jsme si mohli původně myslet. Zároveň ale nebylo nalezeno žádné fatální selhání. Naštěstí chyby nejsou kritické, jsou špatně zneužitelné a dají se snadno opravit.
Podle Kokeše je ale minimálně chyba s neošetření CryptAcquireContext špatná z hlediska spolehlivosti a důvěryhodnosti tvůrců. Otázkou je, jak by měla aplikace zareagovat, když podobná funkce selže. Může na problém upozornit, ale uživatelé obvykle nemají dostatečné znalosti, aby se mohli zodpovědně rozhodnout, zda jim menší entropie vlastně vadí. Podle mě, pokud taková funkce selže, je to poměrně velký zásah do vnitřních procesů TrueCryptu a generování klíčů by mělo skončit,
vysvětluje svůj postoj Josef Kokeš.
Podle dokončených auditů je tedy TrueCrypt bezpečný. Musíme si ale uvědomit, že audit nebyl komplexní a nebyly kontrolovány všechny části. Přesto má na své straně TrueCrypt stále minimálně jednu zásadní výhodu. TrueCrypt má tu výhodu, že má za sebou dlouhou historii. Než podobnou historii získají nějaké alternativy, bude to ještě dlouho trvat.
Uživatelé tedy vlastně ani nemají důvod přecházet na budoucí novou verzi vydanou novým týmem pod novým názvem. Já bych nepřecházel, rozhodně ne dříve než za tři čtyři roky. Určitě bych počkal,
uzavírá Kokeš. Zatím tedy nemáme jednoznačný důkaz, že by TrueCrypt byl nebezpečný, což lze v každém případě považovat za dobrý výsledek.