doc:guides:encfs

Sistema de fitxers encriptat

This article is obsoleted, deprecated and/or outdated, is kept here for historical reason

Al sistema de fitxers encriptat si accedeix per mitjà d'una clau simètrica. L'enfoc simple és escollir un password i encriptar el sistema amb AES usant el password com a clau. Aquest sistema s'assegura 'pel que saps': la clau secreta.

L'enfoc que fem aquí és una mica més rebuscat i segur: Generem una clau simètrica molt llarga i aleatòria (més segura). Com que pot ser molt díficil recordar-la, encriptem la clau simètrica amb la nostra clau pública GPG. El resultat, la clau secreta encriptada, es guarda en un disc extern (memòria USB). Ara la informació està protegida per dos coses: 'el que saps': El password de la teva clau pública GPG i 'el que tens' el disc USB que conté la autèntica clau secreta del sistema de fitxers.

Actualment, si uses un kernel de la branca 2.6, no necessitaràs la primera part d'aquesta recepte, ja que ja té suport per loop-AES i no cal aplicar patches.

* Els fonts del Kernel 2.4.x
* El patch loop-AES per encriptar els dispositius de loopback
* Una versió d'util-linux > 2.12
* Un disc extern USB (opcional)
* GNU GPG

Per usar loop-AES al kernel hem de compilar aquest seleccionant el suport pel dispositiu de loopback i compilar-lo com a mòdul, també és aconsellable compilar-hi Crypto-API i incloure-hi suport per AES. Fet això, arranquem amb el nou kernel i comprovem que el dispositiu de loopback funciona correctament.

Per incloure el loop-AES, ens hem d'assegurar que /usr/src/linux apunta al directori dels fonts del nucli que estem rodant. Després desempaquetem el loop-AES i fent un make en hauria de generar un loop.o en el directori que serà el nou driver de loopback amb suport per encriptació AES. El copiem al directori de mòduls del kernel i refem les dependències per si de cas.

# make
# cp loop.o /lib/modules/`uname -r`/kernel/drivers/block/
# depmod -ae

Encara que la documentació de loop-AES no ho indica així, a mi m'ha funcionat sempre i no he tingut cap problema.

Si la teva versió de les util-linux és anterior a 2.12pre, recompila-les i copia't almenys el mount i el losetup de la nova versió.

La clau secreta simètrica per AES ha de ser aleatòria i com més llarga millor, per a crear-la ens aprofitarem de varies comandes UNIX en cadena:

$ head -c 45 /dev/random | uuencode -m - | head -n 2 | tail -n 1 
  | gpg -e -a > keychain.gpg

Amb aquesta comanda hem creat una clau simètrica aleatòria (la llegim de /dev/random), n'agafem només una part, l'encriptem amb la clau pública GPG i la guardem en un fitxer keychain.gpg que guardarem en el nostre disc USB.

Com que la clau simètrica està en el disc USB, aquest ha d'estar muntat en el moment d'usar el sistema encriptat per poder llegir la clau (Només en muntar i desmuntar). Es pot simplificar la feina si enlloc d'usar fstab/mount usem el dimoni d'automutatge automount que ens el muntarà automàticament quan sigui necessari. Així, suposant que disc USB (o el lloc on hem guardat la clau) és /dev/sda1 i el muntem a /misc/usb posarem al /etc/auto.misc una entrada:

usb	-fstype=auto		:/dev/sda1

El dispositiu que contindrà el sistema de fitxers pot ser tant una partició, com un disc o fins i tot un fitxer. Farem referència a ell com a $DEVFS.

En el cas del sistema de fitxers encriptats el mètode d'automount no funciona (no sé per què). Així que usarem el tradicional /etc/fstab

$DEVFS	/mnt/sec	ext2 defaults,noauto,loop=/dev/loop3,encryption=AES128,gpgkey=/misc/usb/keychaing.gpg,gpghome=$HOME/.gnupg 0 0

Aquesta línia muntarà el dispositiu $DEVFS al directori /mnt/sec a través del dispositiu loopback /dev/loop3 usant encriptació AES-128bits i llegint la clau de /misc/usb/keychain.gpg amb clau pública al $HOME/.gnupg. Notar que usem un tipus ext2 sense journal ja que diuen que pot portar problemes.

Finalment només queda crear el sistema de fitxers. Necessitem que el dispostiu contingui el màxim d'entropia possible per fer més díficil un atac estadístic a la informació. Bàsicament omplirem el dispositiu de valors aleatòris, el conectarem a /dev/loop3 i el formatarem:

# dd if=/dev/random of=$DEVFS
# losetup -F /dev/loop3
# mke2fs /dev/loop3
# losetup -d /dev/loop3

Si has configurat correctament /etc/fstab i /etc/auto.misc (pensa en reiniciar el dimoni automount). Amb un simple mount hauria de funcionar:

$ mount /mnt/sec
Password:
  • doc/guides/encfs.txt
  • Last modified: 2021/06/10 21:44
  • by 127.0.0.1