EncFS | |
---|---|
Típusú | kriptográfiai fájlrendszer |
Fejlesztő | Valent Gough (Valent Gough) |
Operációs rendszer | Linux , FreeBSD és macOS |
Első kiadás | 2003 [1] |
legújabb verzió |
|
Engedély | GNU GPL |
Weboldal | vgough.github.io/encfs/ |
Az EncFS egy ingyenes kriptográfiai fájlrendszer, amely a FUSE -n alapul, amely transzparensen titkosítja a fájlokat egy tetszőleges könyvtár használatával a titkosított fájlok tárolási helyeként. GPL licenc alatt terjesztve .
Az EncFS csatlakoztatásakor meg kell adni a forráskönyvtárat (a titkosított fájlokat tartalmazó forráskönyvtárat) és a csatolási pontot. A csatlakoztatás után a beillesztési pont könyvtárában lévő minden fájl egy adott fájlnak felel meg a titkosított könyvtárból. Így a csatolási pont könyvtárban a forráskönyvtár fájljai titkosítatlan formában jelennek meg. A fájlok titkosítása egy kulccsal történik, amely viszont ugyanabban a könyvtárban van tárolva, mint a titkosított fájlok, titkosított formában. A felhasználó által a billentyűzeten beírt jelszó a kulcs visszafejtésére szolgál.
Az EncFS közvetlenül együttműködik a libfuse-val (FUSE interfész), a naplózó könyvtárral és az OpenSSL -lel (titkosítási könyvtár). A kernellel való "kommunikáció" a FUSE-n keresztül történik.
A használt OpenSSL könyvtár az AES (16 bájtos blokkrejtjel 128-256 bites kulcshosszúsággal) és a Blowfish (8 bájtos blokkrejtjel 128-256 bites kulcshosszúságú) titkosítási algoritmusokat biztosít. A korai verziók (1.1 előtt) részlegesen támogatták a Botan titkosítási könyvtárat . A titkosítás a következőképpen történik:
A fájlneveket titkosítják, majd 64 bites kódolással kódolják, miközben megszabadulnak a "." és "/". Lehetőség van streamingre (standard az 1.1-es verzióig) és blokkolt titkosításra. A 16 bites MAC IV-ként (inicializálási vektorként) használatos, és a titkosított név elé kerül, ami lehetővé teszi a titkosítási eredmény véletlenszerűsítését (ugyanazok a fájlnevek különbözőképpen titkosítva vannak, mivel az inicializálási vektor generálásakor a fájl teljes elérési útja kerül felhasználásra. ).
Minden EncFS-példány véletlenszerűen generált kulcsot (hangerőkulcsot) használ. Ezt a kulcsot a felhasználó által megadott jelszóval titkosítva tároljuk. És akkor dekódolódik, amikor a felhasználó beír egy jelszót a billentyűzetről. Ez lehetővé teszi a következő előnyök elérését:
Az EncFS összes olvasási/írási művelete blokk alapú. A blokk méretét a felhasználó határozza meg a fájlrendszer létrehozásakor, és 64 és 4096 bájt között változik. A kis blokkméret csökkenti a véletlen hozzáférési időt, de növeli a kérések számát nagy fájldarabok olvasásakor/írásakor. A nagy blokkméretek növelik az adatfeldolgozási sebességet, de növelik a véletlen hozzáférési időt. A valódi fájlrendszerekkel ellentétben a nagy blokkméretek nem pazarolják a lemezterületet (a kitöltetlen blokkok nincsenek nullákkal töltve).
A fájl minden blokkja MAC-fejléccel van titkosítva. Az EncFS legújabb verziójáig a 64 bites SHA-1 használatos MAC-ként . Így egy 512 bájtos blokk 504 bájt titkosított adatot és 8 bájt MAC-ot tartalmaz.
Az EncFS fájlrendszer minden példánya tartalmaz egy „.encfs%” konfigurációs fájlt, ahol a % a verziószám. Ez a fájl a következőket tartalmazza:
Az EncFS támogatja a fájlrendszerek alapvető szemantikáját a következő kivételekkel:
A fő EncFS megvalósítást Linux, Mac OS X, FreeBSD operációs rendszerek támogatják. Számos aktív fejlesztésű implementáció létezik Windows alatt [3] [4] [5] [6] .
A titkosított könyvtárak használata nagyon hasonlít bármely más fájlrendszer telepítéséhez Linux alatt. Valódi könyvtár jön létre az összes fájllal, például /home/user/crypt-raw. Létre kell hozni egy csatolási pontot is, legyen az /home/user/crypt. Amikor eléri ezeket a könyvtárakat, feltétlenül használjon abszolút elérési utat (nem csak a /usr/bin/crypt).
Az adatok titkosítása a következő paranccsal történik:
> encfs /home/user/crypt-raw /home/user/crypt A hangerőkulcs nem található, új titkosított kötet jön létre. Jelszó: Ellenőrzés:Amikor a titkosítás befejeződött, a fájlok a crypt könyvtár használatával érhetők el. A munka befejezése után használhatja a következő parancsot:
> fusermount -u /home/user/cryptEz a parancs leválasztja a crypt könyvtárat, így a crypt-raw titkosítva marad.
Az EncFS számos előnnyel rendelkezik a többi merevlemez-partíció-titkosítási rendszerhez képest, mivel minden egyes fájlt külön-külön titkosítanak és normál fájlként mentenek.
Új EncFS-könyvtár létrehozásakor különféle lehetőségek állnak rendelkezésre.
Az EncFS bármilyen titkosítási algoritmust használhat, amely a rendszeren megtalálható. A Blowfish és az AES általában elérhetők .
Ha a titkosítási algoritmus lehetővé teszi a kulcs hosszának kiválasztását, ezt megteheti az EncFS-ben történő használatakor.
Minden fájl blokkonként titkosítva van, és ez az opció lehetővé teszi a blokk méretének kiválasztását. Amikor egy titkosított fájlból legalább egy bájtot beolvas, a teljes blokk visszafejtésre kerül. Íráskor a blokk először teljes egészében visszafejtésre kerül, majd visszakódolásra kerül.
Az alapértelmezett blokkméret 512, ami a legtöbb esetben elegendő.
A titkosított fájlok tartalmától eltérően a fájlnevek blokk- vagy adatfolyam titkosítással titkosíthatók. A blokk titkosítás lehetővé teszi a fájlnevek pontos hosszának elrejtését, míg a stream titkosítás pontosan ugyanazt mutatja, miközben helyet takarít meg az adathordozón (bár kicsi).
Ez az opció lehetővé teszi, hogy a különböző könyvtárakban található fájlneveket eltérő módon titkosítsa, a fájl teljes elérési útja alapján.
Ha azonban a szülőkönyvtárat átnevezi, akkor az összes mögöttes fájl és könyvtár is át lesz nevezve. Ez meglehetősen erőforrásigényes művelet lehet. Ezért nem ajánlott ezt a beállítást használni, ha a szorosan beágyazott könyvtárak gyakori átnevezése várható.
Ha ez az opció engedélyezve van, akkor minden fájl egy tetszőleges 8 bájtos kezdővektorral van titkosítva, amely a titkosított fájlon belül található. Ha ez az opció le van tiltva, akkor minden fájl ugyanazzal a kezdeti vektorral lesz titkosítva, ami kevésbé ellenállóvá teheti a kulcsot a repedésekkel szemben.
Ennek az opciónak az engedélyezése biztonságosabbá teszi a fájlrendszert, mindössze 8 bájt hozzáadásával minden fájlhoz.
Lehetővé teszi a különböző fájlok ugyanazon blokkjainak tartalmának különböző módon történő titkosítását, a fájl teljes elérési útja alapján.
Ennek megfelelően a fájl elérési útjának megváltoztatása megváltoztatja a titkosított tartalmat is.
Lehetővé teszi minden egyes titkosított blokk ellenőrző összegének tárolását , hogy az EncFS észlelhesse a titkosított fájl sérülését vagy módosítását. Az ellenőrző összeg 8 bájt hozzáadódik minden blokkhoz. 8 további véletlenszerű bájtot használhat, így két azonos nyitott blokk ellenőrzőösszege eltérő.
Ez az opció többletköltséget ró a CPU -ra , mivel minden egyes blokkot minden olvasáskor vagy íráskor ellenőrizni kell az ellenőrző összegével.
Ha a titkosított fájlrendszert hosszabb ideig (több percig) nem használták, akkor az automatikusan lecsatolható. A leválasztás nem történik meg, ha legalább egy fájl nyitva van, még olvasásra sem.
Az összehasonlítás a CryptoFS (szintén FUSE alapú) és a LUKS (kernel-implementált) fájlrendszerekkel történt. A CryptoFS és EncFS fájlrendszerek akkor mutatják a legjobb teljesítményt, ha a fájl- és írásméret közel van a Linux rendszerek „natív” oldalméretéhez (4096 KB). Mindkét felhasználói térrendszer eredményei a várakozásoknak megfelelően jelentősen elmaradnak a LUKS titkosítás eredményeitől. Valójában a különféle FUSE absztrakciók és kriptográfiai rendszerek használata további késleltetést ír elő minden olvasási és írási műveletnél. Az EncFS teljesítménye azonban valamivel nagyobbnak bizonyult, mint a CryptoFS [7] .
Fájlrendszerek ( lista , összehasonlítás ) | |||||||
---|---|---|---|---|---|---|---|
Korong |
| ||||||
Elosztott (hálózat) | |||||||
Különleges |
|