TrueCrypt a administrátorské heslo

TrueCryptu bývá občas vyčítáno, že narozdíl od komerčních šifrovacích programů řeší právě jen to šifrování, ale už ne některé návaznosti okolo – například vytváření a správu administrativních přístupů k šifrovaným kontejnerům: firemní admin potřebuje ochránit data na noteboocích uživatelů pro případ ztráty nebo krádeže, ale současně si potřebuje podržet prostředky pro přístup k datům pro případ, že uživatel svoje heslo zapomene (ať už neúmyslně nebo v návalu zlosti nad výpovědí). Ve skutečnosti ovšem TrueCrypt i tento požadavek dokáže pokrýt, i když trochu „oklikou“ a nepříliš intuitivně.

Jak to zařídit

Protože jde ve skutečnosti o úplně jednoduchý postup, uvedu proti svým zvyklostem napřed návod a teprve poté vysvětlení, proč to funguje a jaké to má důsledky. Předpokládám, že administrátor má před sebou nezašifrovaný počítač a chce dosáhnout stavu, kdy uživatel má svoje vlastní heslo (které nezná nikdo, ani administrátor), ale administrátor má někde uložené prostředky, aby se k obsahu počítače dostal i bez spolupráce tohoto uživatele. Sekvence kroků:

  1. Zašifrovat počítač (resp. kontejner) známým heslem. Je možné použít libovolnou kombinaci typů kontejnerů, algoritmů a nastavení, které TrueCrypt povoluje, podstatné je jenom to, že použité heslo je administrátorovi známé.

  2. Zazálohovat hlavičky kontejneru, tuto zálohu společně s heslem zalepit do obálky (označené identifikací počítače) a zamknout do trezoru.

  3. Změnit heslo kontejneru na heslo uživatele (asi tak, že admin zadá požadavek na změnu hesla, vloží staré heslo a pak přivolá uživatele, ať si naťuká heslo svoje).

No a to je celá příprava. Uživatel má k dispozici zašifrovaný kontejner, ke kterému zná heslo jen on sám, administrátor má v trezoru uložené prostředky pro zpřístupnění dat z kontejneru. Jak by tedy postupoval, kdyby uživatel svoje heslo zapomněl?

  1. V trezoru vyhledat obálku příslušející zpracovávanému počítači.

  2. Do kontejneru obnovit hlavičku z trezoru.

  3. Otevřít kontejner administrátorským heslem.

Pozn.: Ve všech krocích, kde píšu o heslu, je tím míněno „jakákoliv kombinace hesel, které TrueCrypt umožňuje“ – tzn. ne jen heslo naťukané z klávesnice, ale i jeden nebo více keyfiles, čipová karta nebo jakákoliv kombinace všech uvedených prostředků. Administrátorské i uživatelské heslo přitom může být složené úplně jinak.

Proč to funguje

Funguje to z toho prostého důvodu, že vztah mezi heslem a šifrovanými daty je u TrueCryptu velice volný. Když vytváříte nový kontejner, TrueCrypt si náhodně zvolí tzv. master key, který bude použit pro šifrování dat. Zdůrazňuji náhodně zvolí – tento klíč naprosto nijak nesouvisí s vaším heslem! Pomocí master key pak zašifruje volné místo kontejneru a v budoucnosti i všechna další data, která budou do kontejneru ukládána. Následně vygeneruje hlavičku kontejneru, do které mimo jiné uloží i tento master key. Následně z vašeho hesla a náhodných dat na začátku hlavičky (salt) vypočítá tzv. header key, kterým hlavičku (mimo saltu) zašifruje a uloží ji na příslušné místo v kontejneru.

Při pokusu o připojení (mount) kontejneru je postup opačný: TrueCrypt si vyžádá heslo. Z něj a ze saltu na začátku hlavičky vygeneruje header key. Tento header key následně použije do všech možných kombinací šifrovacích a hashovacích algoritmů, které zná, na dešifrování hlavičky. Správnou kombinaci pozná podle toho, že mu v dešifrované hlavičce vyjdou „rozumná data“ (je tam známý řetězec a kontrolní součet dešifrované části hlavičky, kterými se to dá snadno ověřit). Když takto získá hlavičku, zapamatuje si kombinaci algoritmů, ale zapomene (zničí) jak vaše heslo, tak header key – ani jedno už nebude potřebovat. Z hlavičky si přečte master key a ten následně použije pro všechnu práci s obsahem kontejneru.

Jak do toho vstoupí změna hesla? Docela jednoduše: Při požadavku na změnu hesla má TrueCrypt k dispozici staré i nové heslo. Starým heslem dešifruje hlavičku. Když se mu to podaří, vygeneruje nový náhodný salt, z nového hesla a nového saltu vygeneruje nový header key a tím hlavičku (která se až na salt nijak nezměnila!) znovu zašifruje a zapíše do kontejneru. Z celého kontejneru se tak změní jen hlavička, a to ještě jen v šifrované podobě – její dešifrovaný obsah zůstane nezměněn, a to celý obsah včetně master key.

Možná úskalí

Celý proces je z technického hlediska dost spolehlivý a neprůstřelný (s výjimkou případu, kdy používáte Windows XP a velké kontejnery – XP špatně pracují se soubory o velikosti nad 2TB (přesněji nad 2TB – 1MB), vyžadují k nim trochu speciální přístup, který TrueCrypt nepoužívá), dokonce i z hlediska operace „vytvoření záložního hesla“ je všechno pořádku (za předpokladu, že to záložní heslo bude bezpečně uloženo). Problémy nastanou v úplně jiných souvislostech, zejména při nesprávném použití TrueCryptu: Uvedený postup mimo jiné znamená, že pokud útočník nějak získá master key, dokáže s ním otevřít všechny kontejnery tímto master key zašifrované, bez ohledu na jejich hesla. V praxi se to týká zejména případu, kdy útočník prolomil slabé heslo u starší verze kontejneru; vy jste sice následně heslo změnil, ale to je úplně k ničemu, protože útočník už tím získal master key, který se změnou hesla nezmění! Jedinou pomocí v takovém případě je vytvořit nový kontejner (který dostane nový náhodný master key), data do něj překopírovat a starý kontejner smazat.

Z tohoto důvodu také dokumentace TrueCryptu doporučuje kontejnery nekopírovat (např. při záloze) ale vytvářet vždy nové a kopírovat jen obsahy – útočníkovi stačí dostat se k master klíči libovolného zkopírovaného kontejneru, aby dokázal otevřít všechny, bez ohledu na jejich stáří. Prozrazení klíče by vás stavilo do nepříjemné pozice, že budete muset přešifrovat všechny kopie (velice problematické, pokud je budete mít geograficky rozloženy, a velice nepohodlné, pokud je budete mít na pomalých a/nebo vyměnitelných médiích) a původní verze bezpečně zničit (ještě problematičtější) – a to všechno předtím, než se k nim dostane útočník.

Podobné příspěvky:

2 komentáře “TrueCrypt a administrátorské heslo”

  1. avatar pepak napsal:

    U šifrovaného oddílu to nemám osobně vyzkoušené, ale vzhledem k tomu, že šifrovaný oddíl používá stejnou strukturu kontejneru jako zbytek TrueCryptu, tak by to fungovat mělo.

  2. avatar abc napsal:

    Tak toto je velice zajimavy clanek. Opravdu to je tak jednoduche? I u zasifrovanych systemovych disku s OS? Budu to muset vyzkouset, protoze nektere me problemy by to urcite vyresilo. Posledni odstavec o zalohach je taky zajimavy. Clovek se porad uci.

Leave a Reply

Themocracy iconWordPress Themes

css.php