На хабре уже было множество статей о том, как безопасно передать данные, защитив канал, или зашифровав файл с данными. Но часто хранить данные в файле не очень удобно (например, в файле не удобно хранить SVN-репозиторий, или maildir с почтой).
Под катом ещё одно решение, которое я нахожу весьма удобным, возможно оно пригодится ещё кому-то.
Почему я использую не архив, а именно файловую систему? Потому, что файловой системой умеют пользоваться все программы, работающие с файлами. А архив пришлось бы разархивировать и создавать не зашифрованную копию, которую потом можно случайно забыть удалить. Одним словом, шифрованная файловая система — это естественное решение, а сохранение файлов со всеми их атрибутами в шифрованном архиве — это искусственное решение. На этом позвольте закончить лирическую часть и перейти к конкретике.
Подгружаем модуль ядра geom_bde
Инициализируем шифрование:
Создаём на нём файловую систему:
Тут, я думаю, незнакомых команд не будет:
Тут всё ещё проще:
Теперь, если враг похитит мою «нокию», то ничего не сможет разобрать в файле virt-fs.
Всем успехов и сохранности приватных данных!
Под катом ещё одно решение, которое я нахожу весьма удобным, возможно оно пригодится ещё кому-то.
Почему я использую не архив, а именно файловую систему? Потому, что файловой системой умеют пользоваться все программы, работающие с файлами. А архив пришлось бы разархивировать и создавать не зашифрованную копию, которую потом можно случайно забыть удалить. Одним словом, шифрованная файловая система — это естественное решение, а сохранение файлов со всеми их атрибутами в шифрованном архиве — это искусственное решение. На этом позвольте закончить лирическую часть и перейти к конкретике.
Создаём файл с шифрованной файловой системой
Подгружаем модуль ядра 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.
Всем успехов и сохранности приватных данных!