Jde o modul systému FUSE1), který transparentně šifruje a dešifruje data i názvy souborů.
V datovém úložišti je ENCFS možné kombinovat se systémy pro připojení vzdáleného adresáře a tím docílit bezpečné uložení dat s šifrováním na klientské straně - tj. data v nešifrované podobě neopustí počítač uživatele.
V principu lze ENCFS použít i lokálně (tj. bez síťového připojení vzdáleného adresáře) pouze k zpřístupnění zašifrovaných dat.
Tato varianta není sice použitelná s datovým úložištěm, ale je nejjednodušší jako zkouška správné konfigurace ENCFS vrstvy.
Příprava adresářů (.private
pro zašifrovaná data a mnt
jako bod připojení dat v rozšifrovaném stavu)
$ mkdir .private mnt
Prvním spuštěním příkazu encfs
provedeme inicializaci šifrovaného prostoru, při dalších spuštěních se příkaz už pouze zeptá na heslo (pak už vždy jen jednou).
Program se zeptá na variantu konfigurace - doporučujeme „standard mode“ (zadává se prázdný řádek):
„Add random bytes to each block header“
, použitá v „paranoia mode“ a volitelná v „expert mode“ způsobuje při nenulové hodnotě značný pokles rychlosti zápisu.
$ encfs ${PWD}/.private ${PWD}/mnt Creating new encrypted volume. Please choose from one of the following options: enter "x" for expert configuration mode, enter "p" for pre-configured paranoia mode, anything else, or an empty line will select standard mode. ?> Standard configuration selected. Configuration finished. The filesystem to be created has the following properties: Filesystem cipher: "ssl/aes", version 3:0:2 Filename encoding: "nameio/block", version 3:0:1 Key Size: 192 bits Block Size: 1024 bytes Each file contains 8 byte header with unique IV data. Filenames encoded using IV chaining mode. File holes passed through to ciphertext. Now you will need to enter a password for your filesystem. You will need to remember this password, as there is absolutely no recovery mechanism. However, the password can be changed later using encfsctl.
Poté je potřeba dvakrát zadat přístupové heslo (mělo by být dostatečně silné - uměrně důvěrnosti dat):
New Encfs Password: tajneheslo Verify Encfs Password: tajneheslo
Adresář by měl být v tuto chvíli již připojen - můžeme ověřit příkazem mount
:
$ mount | grep encfs encfs on /home/user/mnt type fuse.encfs (rw,nosuid,nodev,default_permissions,user=user)
Zatím jsou adresáře prázdné:
$ tree mnt/ mnt/ 0 directories, 0 files
$ tree .private/ .private/ 0 directories, 0 files
Do nešifrované části teď můžeme vytvářet adresáře a zapisovat soubory - například:
$ mkdir -p mnt/d1/d11 mnt/d2 mnt/d3 $ echo "data" > mnt/d1/d11/file11.txt
Data se objevují v obou adresářích, v části .private
jsou šifrovaná:
$ tree mnt/ mnt/ |-- d1 | `-- d11 | `-- file11.txt |-- d2 `-- d3 4 directories, 1 file
$ tree .private/ .private/ |-- qRGNFVqtAMcA0aOAWTkn0h1I | `-- 7sJ78NEr5Phv5eRvE2bm-VCN | `-- cJHbtOnV7nSy9tMf6iWkgh9t |-- ,Wjp3Cup0wLEOv-pvn6rY-hz `-- HiRnQGsyjn1LM-cN5z9G4nkV 4 directories, 1 file
Odpojení adresáře:
$ fusermount -u mnt
Nešifrovaná část je odpojena, data v šifrované části zůstávají:
$ tree mnt/ mnt/ 0 directories, 0 files
$ tree .private/ .private/ |-- qRGNFVqtAMcA0aOAWTkn0h1I | `-- 7sJ78NEr5Phv5eRvE2bm-VCN | `-- cJHbtOnV7nSy9tMf6iWkgh9t |-- ,Wjp3Cup0wLEOv-pvn6rY-hz `-- HiRnQGsyjn1LM-cN5z9G4nkV 4 directories, 1 file
Příklad opětovného připojení (již bez dotazů na konfiguraci):
$ encfs ${PWD}/.private ${PWD}/mnt EncFS Password: tajneheslo
Předpokládejme nfs-mnt
jako bod, kam je připojen vzdálený NFS adresář (viz. NFS návod).
ENCFS použijeme podobně jako při lokálním použití:
$ encfs ${PWD}/nfs-mnt/.private ${PWD}/mnt
Pozor: přípojný bod mnt
musí být lokální - neměl by ležet na vzdáleném prostoru připojeném přes NFS.
Celý postup (fusermount
atd.) je i dále analogický jako u varianty Lokální použití.
.private
) musí být na lokálním systému vlastněn uživatelem se stejným uživ.jménem jako uživatel, který připojení ENCFS provádí. V opačném případě nemusí být umožněn vstup do adresáře a čtení resp. zápis dat (závisí na nastavení práv šifrovaného adresáře).
Zobrazuje-li se Vám tedy například jako vlastník adresáře .private
uživatel nobody
, bude možné číst ENFS připojená data jen pomocí tohoto uživatele.
Problematice správného mapování a zobrazování uživatelských jmen se věnuje navod na sekci idmapd.conf.
Pokud není možno tuto podmínku splnit použijte ENCFS zatím raději nad SSHFS adresářem.
Předpokládejme sshfs-mnt
jako bod, kam připojíme vzdálený adresář pomocí SSHFS (viz. SSHFS návod).
Příklad připojení SSHFS:
$ sshfs -o idmap=user username@ssh.du1.cesnet.cz:/VO_storage/home/username sshfs-mnt
ENCFS použijeme podobně jako v předchozích variantách:
$ encfs ${PWD}/sshfs-mnt/.private ${PWD}/mnt
Pozor: přípojný bod mnt
musí být lokální - neměl by ležet na vzdáleném prostoru připojeném přes SSHFS.
Celý postup (fusermount
atd.) je i dále analogický jako u varianty Lokální použití.