Hlavní navigace

Názor ke zprávičce Znovu povinné šifrování dat v Androidu 6.0? od Lael Ophir - Budu předpokládat, že je to vážně míněná otázka....

  • Aktualita je stará, nové názory již nelze přidávat.
  • 22. 10. 2015 9:54

    Lael Ophir (neregistrovaný)

    Budu předpokládat, že je to vážně míněná otázka. XORovat data krátkým klíčem přináší pár problémů:
    - XOR má jako šifra ten zásadní problém, že pokud znáte šifrovaná data, triviálně získáte klíč, protože (A XOR K) XOR A = K, kde A jsou šifrovaná data a K je klíč. A šifrovaná data znáte v řadě případů: obsah partition table, superblocku FS, headery souborů atd.
    - Variace na předchozí: 0 XOR K = K, takže zašifrované byty 0x0 jsou přímo klíčem. Pak už stačí vědět, kde byly před šifrováním byty 0x0.
    - I pokud neznáte přímo šifrovaná data, tak stačí znát jejich charakter (například vědět že jde o anglický text), a triviálně lze použít frekvenční analýzu.

    Pokud byste chtěl šifrovat kvalitněji, představte si, že například na základě klíče vygenerujete pseudonáhodnou sekvenci (klíč je seed generátoru) o délce celých šifrovaných dat (tj. třeba celého FS), a potom XORujete data tou sekvencí. Praxe je trochu složitější, ale pro demonstraci to snad stačí.

    A pak je tu obecnější problém: abyste mohl dešifrovat, musíte mít klíč. A ten klíč musíte někde na zařízení uložit. Jako příklad si představte váš 5-bytový klíč pro XORování uložený v souboru /etc/encrypti­onkey.bin. Samozřejmě ho můžete načíst a data s ním dešifrovat. Nabízí se možnost klíč zašifrovat, ale k jeho dešifrování opět potřebujete klíč, takže jste přesně tam kde jste byl.
    Pochopitelně můžete dešifrovat heslem, které zadá uživatel. Jenže na mobilu po uživateli nemůžete chtít silné heslo. Typicky se používá čtyřčíselný PIN, takže by stačilo triviálně zkusit deset tisíc kombinací.
    Řešením je použití dedikovaného čipu (typicky TPM) pro uložení hesla. Data v HW modulu jsou chráněná dalším heslem, které zadává uživatel. Klidně to může být i krátký PIN, protože HW modul odmítne data vydat, když se párkrát nestrefíte do hesla. Ten HW modul pochopitelně musí být navržený tak, abyste z něj nemohl dostat data bez znalosti hesla.