воскресенье, 26 мая 2013 г.

Шифрование данных с помощью EncFS

Нижеописанное является вольным переводом статьи "Encrypt Your Data With EncFS (OpenSUSE 12.3)", автором которой является Falko Timme.


EncFS предоставляет зашифрованную файловую систему в пространстве пользователя. Она запускается без каких-либо особых разрешений и использует только библиотеку FUSE с модулем ядра. Это сквозная файловая система, а не зашифрованное блочное устройство, что означает то, что она создаётся на уже существующей файловой системе. Это руководство показывает, как вы можете использовать EncFS на OpenSUSE 12.3 для шифрования своих данных.

Я не даю никаких гарантий, что это будет работать у вас!

1. Примечание

Я использую имя пользователя falko в этом руководстве.

2. Установка EncFS

Для начала нужно выполнить вход под пользователем root:
su
После чего EncFS может быть установлен командой:
zypper install encfs
Теперь можно покинуть командную оболочку пользователя root:
exit
И ознакомиться с опциями EncFS просмотрев страницу руководства:
man encfs

3. Использование EncFS

Создадим каталоги encrypted (зашифрованное) и decrypted (расшифрованное) в домашней директории пользователя:
mkdir -p ~/encrypted
mkdir -p ~/decrypted
Укажем EncFS использовать эти каталоги по назначению:
encfs ~/encrypted ~/decrypted
Если вы запускаете encfs впервые, то он также запустит собственную настройку:
falko@linux-ci7w:~> encfs ~/encrypted ~/decrypted
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.
?>  --p--


Paranoia 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: 256 bits
Block Size: 1024 bytes, including 8 byte MAC header
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File data IV is chained to filename IV.
File holes passed through to ciphertext.


-------------------------- WARNING --------------------------
The external initialization-vector chaining option has been
enabled. This option disables the use of hard links on the
filesystem. Without hard links, some programs may not work.
The programs 'mutt' and 'procmail' are known to fail. For
more information, please see the encfs mailing list.
If you would like to choose another configuration setting,
please press CTRL-C now to abort and start over.


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.


New Encfs Password: --ваш_секретный_пароль--
Verify Encfs Password: --ещё_раз_ваш_секретный_пароль--
falko@linux-ci7w:~>

Убедитесь, что вы запомнили свой секретный пароль, потому что без него восстановить данные в каталоге ~/encrypted будет невозможно.
Теперь подключенная файловая система должна отображаться среди прочих в выводе команды  mount:
falko@linux-ci7w:~> mount
devtmpfs on /dev type devtmpfs (rw,relatime,size=1020060k,nr_inodes=255015,mode=755)
tmpfs on /dev/shm type tmpfs (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
/dev/sda2 on / type ext4 (rw,relatime,data=ordered)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,relatime,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=24,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
tmpfs on /var/lock type tmpfs (rw,nosuid,nodev,relatime,mode=755)
tmpfs on /var/run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,relatime)
tmpfs on /media type tmpfs (rw,nosuid,nodev,noexec,relatime,mode=755)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
/dev/sda3 on /home type ext4 (rw,relatime,data=ordered)
none on /proc/fs/vmblock/mountPoint type vmblock (rw,relatime)
gvfs-fuse-daemon on /run/user/falko/gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,relatime,user_id=1000,group_id=100)
encfs on /home/falko/decrypted type fuse.encfs (rw,nosuid,nodev,relatime,user_id=1000,group_id=100,default_permissions)
falko@linux-ci7w:~>
И в df -h:
falko@linux-ci7w:~> df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           12G  3.4G  7.5G  31% /
devtmpfs        997M  4.0K  997M   1% /dev
tmpfs          1004M   96K 1004M   1% /dev/shm
tmpfs          1004M  568K 1003M   1% /run
/dev/sda2        12G  3.4G  7.5G  31% /
tmpfs          1004M     0 1004M   0% /sys/fs/cgroup
tmpfs          1004M  568K 1003M   1% /var/lock
tmpfs          1004M  568K 1003M   1% /var/run
tmpfs          1004M     0 1004M   0% /media
/dev/sda3        17G  387M   16G   3% /home
encfs            17G  387M   16G   3% /home/falko/decrypted
falko@linux-ci7w:~>
Чтобы сохранить данные в зашифрованном виде, с каталогом ~/decrypted можно работать как и с любым другим простым каталогом:
cd ~/decrypted
echo "hello foo" > foo
echo "hello bar" > bar
ln -s foo foo2
Если вы проверите содержимое директории с помощью ls -l, то сможете убедиться, что данные отображаются как и раньше:
falko@linux-ci7w:~/decrypted> ls -l
total 8
-rw-r--r-- 1 falko users 10 Dec  5 20:04 bar
-rw-r--r-- 1 falko users 10 Dec  5 20:04 foo
lrwxrwxrwx 1 falko users  3 Dec  5 20:04 foo2 -> foo
falko@linux-ci7w:~/decrypted>
Но в это же время в каталоге ~/encrypted они уже зашифрованы:
cd ~/encrypted
ls -l
total 8
-rw-r--r-- 1 falko users 26 Dec  5 20:04 7ijqcKIYQH4hNiq1XjXYmozt
lrwxrwxrwx 1 falko users 24 Dec  5 20:04 eYgd4NX4d1bfjKPd61jmPZ5G -> 7ijqcKIYQH4hNiq1XjXYmozt
-rw-r--r-- 1 falko users 26 Dec  5 20:04 z8GFaXk7mXU7hgWxk0Md6zZn
falko@linux-ci7w:~/encrypted>
Чтобы отключить расшифрованную файловую систему, выполните:
cd
fusermount -u ~/decrypted
Проверьте вывод команд mount и df -h, чтобы убедиться в то, что файловая система EncFS более не подключена.
Каталог ~/decrypted при этом будет пуст, а содержимое ~/encrypted наоборот никуда не денется.

Для того, чтобы смонтировать ~/decrypted и ~/encrypted обратно, просто запустите:
encfs ~/encrypted ~/decrypted
EncFS запросит у вас пароль, который вы вводили ранее.
falko@linux-ci7w:~> encfs ~/encrypted ~/decrypted
EncFS Password: --ваш_секретный_пароль--
falko@linux-ci7w:~>
После чего в ~/decrypted вновь появятся расшифрованные файлы.

Для смены пароля введите:
encfsctl passwd ~/encrypted

4. Ссылки

Комментариев нет:

Отправить комментарий