Obsah

ENCFS - připojení šifrovaného adresáře

Jde o modul systému FUSE1), který transparentně šifruje a dešifruje data i názvy souborů.

Uvedený postup je určen uživatelům OS Linux, případně jiných UNIXových OS (s mírnými změnami). Další platformy budou postupně testovány.

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.

Protože nešifrovaná data ani hesla a klíče šifer neopouští počítač uživatele, není ztráta klíčů/hesel u uživatele nijak napravitelná ze strany datového úložiště. Data nejsou bez znalosti hesla/klíče dešifrovatelná ani pro správce datového úložiště.



Potřebný SW



Lokální použití

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).

  • adresáře musí být uvedeny jako absolutní cesty - což zjednodušíme pomocí proměnné $PWD (měla by obsahovat aktuální adresář jako absolutní cestu)
  • cílový adresář, pokud existuje, musí být prázdný.


Program se zeptá na variantu konfigurace - doporučujeme „standard mode“ (zadává se prázdný řádek):

Je možné použít i „expert mode“ - např. zvětšit délku klíče šifry nebo délku bloku (viz. podrobnější návod).
Pozor: volba „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



Použití nad NFS adresářem

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í.

Šifrovaný adresář (v příkladu .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.



Použití 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
DU4 Ostrava ssh.du4.cesnet.cz
DU5 Jihlava ssh.du5.cesnet.cz

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í.

1)
Filesystem in Userspace