Něco k zamyšlení ohledně těch nesmyslů, které tu opakovaně padají o ZIPu vs EFS.
Podobně jako existuje OSI model, máme podobně vrstvy i pro I/O. Pro nás jsou teď zajímavé tyhle:
1. Volume, například partition na HDD nebo SDD, vystavuje API pro čtení a zápis bloků. Pokud chcete šifrovat tady, bude šifrované všechno na celém volume, a bude to transparentní pro všechny aplikace. Příklady: BitLocker, TrueCrypt.
2. File system, implementuje správu adresářů a souborů nad layerem 1, vystavuje API pro manipulaci s nimi. Pokud budete šifrovat tady, můžete si vybrat které soubory nebo adresáře budete šifrovat, umožnit dešifrování jen vybraným uživatelům, a umožňuje to aplikacím k FS přistupovat zcela transparentně (šifrovaný adresář nebo soubor se pro ně tváří jako by šifrovaný nebyl). Příklady: EFS na NTFS, EFS na FAT32, a nejspíš i poslední verze ext4.
3. Aplikační vrstva, manipuluje s daty pomocí API vystaveného layerem 2. Příkladem je WinZIP nebo podpora ZIPu ve Windows Exploreru, plus samozřejmě aplikace jako je Word nebo účetní SW. Pokud šifrujete na této úrovni, není to transparentní pro aplikace, protože ty volají přímo API layeru 2 (tedy funkce FS). Jinými slovy nemůžete například zašifrovat půlku souborů účetního SW a dál z něj ty soubory používat, nebo zašifrovat soubor Wordu a otevřít ho pak z aplikace.
Šifrování na každé z těchto úrovní má svoje vlastní výhody a nevýhody, které jsou myslím zjevné. Pokud chcete zašifrovat soubor pro poslání emailem, nejlépe to půjde na layeru 3. Pokud chcete šifrovat vybrané soubory, umožnit jejich dešifrování jen konkrétním uživatelům a/nebo zachovat původní funkci souborů, chce to šifrovat na layeru 2. Pokud chcete šifrovat celý volume, je zjevnou volbou layer 1.
A samozřejmě to není rigidní model. Můžete například na úrovni 1 použít image disku (tj. soubor na layeru 2 použít jako layer 1) a přimountovat si ho. Nebo na layeru 2 implementovat ZIP FS, který použije soubor typu ZIP místo layeru 1 a implementuje API pro práci se soubory a adresáři (i když ZIP na to není stavěný a výkon bude velmi slabý). Je pochopitelně také možné konkrétní aplikace na layeru 3 upravit tak aby explicitně podporovaly šifrování na nějaké úrovni. Ale principy jsou snad dostatečně jasné.