EncFS | |
---|---|
Typ | kryptografický souborový systém |
Vývojář | Valient Gough (Valent Gough) |
Operační systém | Linux , FreeBSD a macOS |
První vydání | 2003 [1] |
Nejnovější verze | |
Licence | GNU GPL |
webová stránka | vgough.github.io/encfs/ |
EncFS je bezplatný kryptografický souborový systém založený na FUSE , který transparentně šifruje soubory pomocí libovolného adresáře jako místa pro uložení zašifrovaných souborů. Distribuováno pod licencí GPL .
Při připojování EncFS je specifikován zdrojový adresář (zdrojový adresář se zašifrovanými soubory) a bod připojení. Po připojení každý soubor v adresáři bodu připojení odpovídá konkrétnímu souboru ze zašifrovaného adresáře. V adresáři bodu připojení jsou tedy soubory zdrojového adresáře prezentovány v nezašifrované podobě. Soubory jsou šifrovány pomocí klíče, který je zase uložen ve stejném adresáři jako šifrované soubory v zašifrované podobě. K dešifrování tohoto klíče se používá heslo zadané uživatelem na klávesnici.
EncFS přímo spolupracuje s libfuse (rozhraní FUSE), protokolovací knihovnou a OpenSSL (šifrovací knihovna). "Komunikace" s jádrem probíhá přes FUSE.
Použitá knihovna OpenSSL poskytuje šifrovací algoritmy AES (16bajtová bloková šifra s délkou klíče 128-256 bitů) a Blowfish (8bajtová bloková šifra s délkou klíče 128-256 bitů). Dřívější verze (před 1.1) měly částečnou podporu pro šifrovací knihovnu Botan . Šifrování probíhá takto:
Názvy souborů jsou zašifrovány a poté zakódovány v 64bitovém kódování, přičemž se zbaví znaku "." a "/". Nechybí možnost streamování (standardně až do verze 1.1) a blokové šifrování. 16bitový MAC se používá jako IV (inicializační vektor) a je připojen k zašifrovanému jménu, což umožňuje randomizovat výsledek šifrování (stejné názvy souborů jsou šifrovány odlišně, protože při generování inicializačního vektoru se používá celá cesta k souboru. ).
Každá instance EncFS používá náhodně generovaný klíč (volume key). Tento klíč je uložen zašifrovaný pomocí hesla zadaného uživatelem. A dešifruje se, když uživatel zadá heslo z klávesnice. To vám umožní dosáhnout následujících výhod:
Všechny operace čtení/zápisu v EncFS jsou blokové. Velikost bloku je určena uživatelem při vytváření systému souborů a pohybuje se od 64 do 4096 bajtů. Malá velikost bloku snižuje čas náhodného přístupu, ale zvyšuje počet požadavků při čtení/zápisu velkých částí souborů. Velké velikosti bloků zvyšují rychlost zpracování dat, ale prodlužují dobu náhodného přístupu. Na rozdíl od skutečných souborových systémů velké bloky neplýtvají místem na disku (nevyplněné bloky nejsou vyplněny nulami).
Každý blok v souboru je zašifrován MAC hlavičkou. Až do nejnovější verze EncFS včetně se jako MAC používá 64bitový SHA-1 . 512bajtový blok je tedy 504 bajtů šifrovaných dat a 8 bajtů MAC.
Každá instance systému souborů EncFS obsahuje konfigurační soubor ".encfs%", kde % je číslo verze. Tento soubor obsahuje:
EncFS podporuje základní sémantiku souborového systému s následujícími výjimkami:
Hlavní implementace EncFS je podporována operačními systémy Linux, Mac OS X, FreeBSD. Pod Windows existuje několik aktivně vyvíjených implementací [3] [4] [5] [6] .
Použití šifrovaných adresářů je velmi podobné instalaci jakéhokoli jiného souborového systému pod Linuxem. Vytvoří se skutečný adresář se všemi vašimi soubory, například /home/user/crypt-raw. Musíte také vytvořit přípojný bod, ať je to /home/user/crypt. Při přístupu k těmto adresářům se ujistěte, že používáte absolutní cesty (nejen /usr/bin/crypt).
Data jsou šifrována příkazem:
> encfs /home/user/crypt-raw /home/user/crypt Klíč svazku nebyl nalezen, vytváří se nový šifrovaný svazek. Heslo: Ověřte:Po dokončení šifrování lze k souborům přistupovat pomocí adresáře crypt. Po dokončení práce můžete použít příkaz:
> fusermount -u /home/user/cryptTento příkaz odpojí adresář crypt a ponechá crypt-raw zašifrovaný.
EncFS má oproti jiným systémům šifrování oddílů pevného disku řadu výhod, protože každý soubor je individuálně zašifrován a uložen jako běžný soubor.
Při vytváření nového adresáře EncFS jsou k dispozici různé možnosti.
EncFS může používat jakékoli šifrovací algoritmy, které lze nalézt v systému. Blowfish a AES jsou běžně dostupné .
Pokud vám šifrovací algoritmus umožňuje zvolit délku klíče, lze to provést při použití v EncFS.
Každý soubor je zašifrován blok po bloku a tato možnost umožňuje zvolit velikost bloku. Při čtení alespoň jednoho bajtu ze zašifrovaného souboru se dešifruje celý blok. Také při zápisu je blok nejprve celý dešifrován a poté zašifrován zpět.
Výchozí velikost bloku je 512, což je ve většině případů dostačující.
Na rozdíl od obsahu zašifrovaných souborů lze názvy souborů zašifrovat blokovou nebo proudovou šifrou. Bloková šifra umožňuje skrýt přesnou délku názvů souborů, zatímco proudová šifra ji zobrazuje úplně stejně, přičemž šetří místo na médiu (i když malé).
Tato možnost umožňuje zašifrovat stejné názvy souborů umístěné v různých adresářích odlišně na základě úplné cesty k souboru.
Pokud je však nadřazený adresář přejmenován, budou přejmenovány také všechny podkladové soubory a adresáře. To může být poměrně náročná operace. Proto se nedoporučuje používat tuto volbu, pokud se očekává časté přejmenovávání vysoce vnořených adresářů.
Pokud je tato možnost povolena, je každý soubor zašifrován libovolným 8bajtovým počátečním vektorem, který se nachází uvnitř zašifrovaného souboru. Pokud je tato možnost zakázána, je každý soubor zašifrován stejným počátečním vektorem, což může způsobit , že klíč bude méně odolný vůči prasknutí.
Povolením této možnosti je systém souborů bezpečnější za cenu přidání pouze 8 bajtů ke každému souboru.
Umožňuje šifrovat obsah stejných bloků různých souborů různými způsoby na základě úplné cesty k souboru.
V souladu s tím se změnou cesty k souboru změní také jeho šifrovaný obsah.
Umožňuje uložit kontrolní součet každého zašifrovaného bloku, aby bylo možné pomocí EncFS detekovat poškození nebo úpravu zašifrovaného souboru. Kontrolní součet je 8 bajtů přidaných ke každému bloku. Můžete použít 8 dalších náhodných bajtů, takže dva stejné otevřené bloky mají různý kontrolní součet.
Tato možnost uvaluje dodatečné náklady na CPU , protože každý blok musí být kontrolován proti jeho kontrolnímu součtu při každém čtení nebo zápisu.
Pokud nebyl šifrovaný souborový systém nějakou dobu (několik minut) používán, lze jej automaticky odpojit. K odpojení nedojde, pokud je otevřen alespoň jeden soubor, a to i pro čtení.
Srovnání bylo provedeno se souborovými systémy CryptoFS (také založené na FUSE) a LUKS (implementované v jádře). Souborové systémy CryptoFS a EncFS vykazují nejlepší výkon, když se velikost souboru a zápisu blíží „nativní“ velikosti stránky systémů Linux (4096 KB). Výsledky obou systémů uživatelského prostoru podle očekávání výrazně zaostávají za výsledky šifrování LUKS. Ve skutečnosti použití různých abstrakcí FUSE a kryptografických systémů způsobuje další latenci všech operací čtení a zápisu. Ukázalo se však, že výkon EncFS je o něco vyšší než výkon CryptoFS [7] .
Souborové systémy ( seznam , srovnání ) | |||||||
---|---|---|---|---|---|---|---|
Disk |
| ||||||
Distribuované (síť) | |||||||
Speciální |
|