Pull to refresh

Шифрованная файловая система в файле: готовый рецепт

Reading time 2 min
Views 4.9K
Picamatic - upload your imagesНа хабре уже было множество статей о том, как безопасно передать данные, защитив канал, или зашифровав файл с данными. Но часто хранить данные в файле не очень удобно (например, в файле не удобно хранить SVN-репозиторий, или maildir с почтой).

Под катом ещё одно решение, которое я нахожу весьма удобным, возможно оно пригодится ещё кому-то.

Почему я использую не архив, а именно файловую систему? Потому, что файловой системой умеют пользоваться все программы, работающие с файлами. А архив пришлось бы разархивировать и создавать не зашифрованную копию, которую потом можно случайно забыть удалить. Одним словом, шифрованная файловая система — это естественное решение, а сохранение файлов со всеми их атрибутами в шифрованном архиве — это искусственное решение. На этом позвольте закончить лирическую часть и перейти к конкретике.

Создаём файл с шифрованной файловой системой


Подгружаем модуль ядра geom_bde
# kldload geom_bde
или для автоматической загрузки прописываем в /boot/loader.conf
geom_bde_load="YES"
Создаём сам файл (в моём случае — один мегабайт):
# dd bs=1024 count=1024 if=/dev/zero of=/mnt/nokia/virt-fs
Создаём устройство, глядящее в этот файл:
# mdconfig -a -t vnode -f /mnt/nokia/virt-fs -u 0
Теперь у нас есть устройство /dev/md0.
Инициализируем шифрование:
# gbde init /dev/md0
Тут вас попросят дважды ввести пароль.
Внимание, это самый простой способ. gbde допускает более изощрённые способы защиты с lock- и key-файлами. Если вам это интересно, смотрите man.
Теперь зашифрованное устройство надо подключить:
# gbde attach /dev/md0
Снова вводим пароль. Если пароль не правильный, то ничего не произойдёт. Если правильный — тот у вас появилось устройство /dev/md0.bde.
Создаём на нём файловую систему:
# newfs -U -O2 /dev/md0.bde
Вот и всё, можно разобрать всю эту конструкцию, если она вам больше не нужна (подробнее см. ниже):
# gbde detach /dev/md0; mdconfig -d -u 0

Подключаем


Тут, я думаю, незнакомых команд не будет:
# mdconfig -a -t vnode -f /mnt/nokia/virt-fs -u 0
# gbde attach /dev/md0
# mount /dev/md0.bde /mnt-private
Теперь в /mnt-private смонтирована шифрованная файловая система, находящаяся в файле /mnt/nokia/virt-fs и ей может пользоваться любая программа (кстати, симлинки рулят!).

Отключаем


Тут всё ещё проще:
# umount /mnt-private
# gbde detach /dev/md0
# mdconfig -d -u 0
Обратите внимание, что если одна из этих команд не сработает (скажем, файловая система занята и не размонтировалась), то остальные тоже не сработают. Это надо учитывать, при написании скрипта подключения/отключения.

Вот и всё


Теперь, если враг похитит мою «нокию», то ничего не сможет разобрать в файле virt-fs.

Всем успехов и сохранности приватных данных!
Tags:
Hubs:
+21
Comments 25
Comments Comments 25

Articles