Béton brut

Widzę szuje więc szyfruję: encfs

2013-12-15

Wróćmy na chwilę do szyfrowania. Pisałem niedawno 1 o kryptografii asymetrycznej i GPG. W artykule wspominałem jak kłopotliwym problemem w kryptografii jest system, który da się „odemknąć” znając tylko jeden sekret: hasło. Niestety, w normalnych okolicznościach zawsze dochodzi do zderzenia między ideami a rzeczywistością. Wyrazem tego ilorazu jest narzędzie, które chciałem dla Was pokrótce opisać.

encfs to krypto-pseudo-system-plików w przestrzeni użytkownika.

Rozwijając nieco to karkołomne zdanie, encfs umożliwia stworzenie wirtualnego napędu przez każdego użytkownika systemu, który nie został pobłogosławiony przez administratora systemu pełnymi prawami (nie jest w /etc/sudoers, nie zna hasła roota). Wszystkie pliki umieszczone w folderze zamontowanym przez encfs podlegają szyfrowaniu przy użyciu klucza, którym jest hasło ustawione przez użytkownika.

Praktycznie znaczy to tyle, że folder źródłowy zawiera pliki, których zawartość jest nie do odczytania dla osób postronnych 2.

Kiedy pierwszy raz trafiłem na to rozwiązanie pomyślałem, że będzie to praktyczne rozwiązanie pozwalające mi ukryć moje pliki wideo w których dinozaury pieprzą samochody 3 przed oczami postronnych osób, które trafią przypadkowo na mojego laptopa. Później zdałem sobie sprawę z jeszcze lepszego zastosowania: szyfrowanie danych w Dropboksie.

Dropbox używa szyfrowania danych, ale osobiście znajduję ich zabezpieczenie bezużytecznym: to oni mają klucze. Wiemy to z absolutną pewnością: gdyby nie mogli zerknąć do naszych danych nie mogliby też zbudować interfejsu webowego, gdzie mamy do nich dostęp. Bez względu na rodzaj stosowanej kryptografii Dropbox jest sejfem, który ma klucz pod wycieraczką.

Natura encfs daje nam idealne narzędzie, które możemy połączyć z Dropboksem i ukryć przynajmniej część informacji. Dodatkowym plusem jest fakt, że tak współdzielony katalog możemy bez problemu zamontować na drugim komputerze, a zmiany dokonane na nim propagują się idealnie.

encfs jest zwykle dostępny w repozytoriach Dobrych Dystrybucji. Może działa też na OS X via homebrew. Pewnie nie działa na Windowsie.

Po instalacji musimy się upewnić, że nasz użytkownik ma dostęp do grupy fuse. Możemy to sprawdzić w następujący sposób:

$  groups
emil cdrom floppy audio dip video plugdev netdev fuse scanner bluetooth

Teraz nie pozostaje nam nic innego jak stworzyć nasz szyfrowany system plików:

tmp $ encfs /tmp/zrodlo /tmp/szyfrowany_dysk [ref]zwróć uwagę, że ścieżki być absolutne[/ref]
Katalog "/tmp/zrodlo/" nie istnieje. Utworzyć? (y,n) y
Katalog "/tmp/szyfrowany_dysk" nie istnieje. Utworzyć? (y,n) y
Tworzenie nowego zaszyfrowanego wolumenu.
Proszę wybrać jedną z pośród niżej podanych opcji:
 wprowadź "x" aby uruchomić tryb konfiguracji eksperta,
 wprowadź "p" aby wybrać preinstalowany tryb paranoiczny,
 jakikolwiek inny znak, lub pusta linia spowoduje wybranie trybu standardowego.
?> p

Wybrano konfiguracje paranoiczną.

Konfiguracja zakończona. Tworzony system plików
będzie miał następujące własności:
Algorytm szyfrujacy system plików: "ssl/aes", wersja 302
Kodowanie nazwy pliku: "nameio/block", wersja 3:0:1
Długość klucza: 256 bitów
Rozmiar bloku: 1024 bajtów, włącznie z 8 bajtami nagłówka MAC
Każdy plik zawiera 8-bajtowy nagłówek z unikatowymi danymi IV.
Filenames encoded using IV chaining mode.
File data IV is chained to filename IV.
File holes passed through to ciphertext.

[...]

Nowe hasło EncFS: 
Potwierdź hasło EncFS:

Wybrałem konfigurację paranoiczną i Wy też powinniście. Manualna konfiguracja jest dla ludzi, którzy nie mają nic lepszego do roboty. Wolumin jest już zamontowany i szyfruje. Wszystkie pliki przegrane do /tmp/szyfrowany_dysk zostają odtwarzane w swojej zaszyfrowanej formie w /tmp/zrodlo.

tmp $ cd /tmp/szyfrowany_dysk/
szyfrowany_dysk $ dmesg > dmesg.txt
szyfrowany_dysk $ ls -l dmesg.txt 
-rw-r--r-- 1 emil emil 54881 gru 15 21:24 dmesg.txt
szyfrowany_dysk $ cd /tmp/zrodlo/
zrodlo $ ls -l
razem 56
-rw-r--r-- 1 emil emil 55329 gru 15 21:24 ppfVDlRysmXqpOOqaolF2kF7

A jak spiąć to z Dropboksem?

$ encfs ~/Dropbox/myp0rn ~/Documents/VeryImportant

I ot, cała magia. Jesteście teraz w posiadaniu „bezpiecznego” folderu, który może podążać za Wami ze wszystkimi plikami, który nie pokazalibyście Waszym Matkom.

Ta notka miała być moim debiutem w świecie demonstracji audio-wizualnych. Niestety po raz kolejny stchórzyłem słysząc własny głos. Pozostał mi tylko nieprzycięty i niemy materiał na którym demonstruję wszystko, o czym pisałem wyżej.

Możecie pobrać plik źródłowy lub rzucić okiem na YouTube.

EDIT (2014-3-12): Niezależny audyt EncFS wskazuje kilka problemów z aplikacją.

  1. „niedawno” biorąc pod uwagę cykl wydawniczy tego internetowego czasopisma
  2. „nie jest” to oczywiste kłamstwo, zawsze mogą Wam połamać palce prosząc o hasło
  3. Wujek Dobra Rada: nie googlajcie
QR for Widzę szuje więc szyfruję: encfs