Шифрование домашней папки на Linux с помощью fscrypt
Не так давно, по случаю, мне достался ноутбук. Скончался от болезни человек, с которым я был в хороших отношениях. Спустя какое то время родственники приятеля начали распродавать и раздавать имущество умершего. Мне отдали ноутбук. Ноут Acer, не особо новый и не дорогой, особой ценности не представляет, отдали бесплатно. Но попросили по возможности достать оттуда данные — старые фото и видео на память. На ноутбуке установлена десятка и учетка с паролем, которого никто не знал. Делаю загрузочную флешку, цепляю съемный диск. Готово. В процессе копирования посмотрел, что еще есть на диске. Текстовые файлы с паролями, профиль браузера, какая то рабочая документация, личные заметки и т.д. Ненужно и не интересно. Фото и видео отдал родственникам. Диск отформатировал. Ноут в кладовку.
Но в процессе ковыряния ноутбука, у меня появилась мысль. А хотелось бы мне, что бы в подобной ситуации кто то, так же лазил в моем ноутбуке. Нет, мне бы очень этого не хотелось. Несмотря на то, что там нет чего-то компрометирующего и критически важного для меня и моих близких. Все равно нет. Не приятно. А с учетом того, что мой ноутбук всегда и везде со мной. То я могу его где то забыть, потерять да и банальную кражу тоже никто не отменял. И если за свой телефон и планшет по этому поводу я не переживал, все таки там биометрия и шифрование, то ноутбук давал мне повод для беспокойства. Шифрования у меня там не было.
А так как последние лет десять я сидел под ubuntu то меня заинтересовало, а как там дела с шифрованием обстоят в linux.
Сразу оговорюсь. В первую очередь меня интересовала защита от случайных людей — сотрудников сервисных центров и мастерских, мамкиных хакеров и различных домашних аникейщиков. У меня нет задачи противостоять сотрудникам спецслужб, международным криминальным организациям и специалистам по криптографии. До этого, два раза, у меня был лайтовый опыт общения со следователями по уголовным делам и по этому, на свой счет, я иллюзий не испытываю.
У меня установлена ubuntu 22.04 и все манипуляции я проводил на ней. Но я думаю, что эта инструкция подойдет и к любым другим дистрибутивам. Каких то специфических, дистрибутив зависимых вещей там нет.
Итак, начал разбираться. Основной способ шифрования который сейчас предлагает при установке ubuntu и другие, это шифрование всего диска с помощью LUKS + LVM. Мне он не подошел. Во первых я не хотел переустанавливать ОС и во вторых я не хотел целиком шифровать весь диск. Для меня это слишком избыточный метод, я хотел шифровать только свою домашнюю папку. Хотя я знаю, что сейчас это наиболее правильный метод для защиты данных.
Далее по популярности шло использование eCryptFS. Этот способ до 2018 года тоже предлагался в ubuntu при установке. Затем Canonical по различным причинам отказался от него. На данный момент проект то ли поддерживается, то ли не поддерживается. До конца я так и не понял.
Поэтому я решил использовать fscrypt. Нативный метод шифрования для ext4. Разрабатывается и поддерживается google, используется в chromeOS и Android для шифрования. Ну, что еще надо.
Поверхностное гугление выдало пару инструкций. Но судя по комментариям после одной из них компьютер уходил в цикличную перезагрузку, ну а вторая просто не работала. Пришлось идти на гитхаб проекта и читать документацию.
Итак, если вы хотите зашифровать свою домашнюю папку с помощью fscrypt на уже установленной операционке с файловой системой ext4:
tune2fs -O encrypt /dev/ваш диск
apt install fscrypt libpam-fscrypt
- Создаем нового пользователя (например user1) и включаем его в группу sudo. Так как мы далее будем проводить манипуляции с нашей домашней папкой, то делать это лучше всего из под другого пользователя. Завершаем сеанс нашего основного пользователя (например user0) и заходим нашим новым пользователем (user1). Дальше все действия выполняем под ним.
- Настраиваем fscrypt
user1@laptop:# sudo fscrypt setup
будет создан конфигурационный файл
Created global config file at "/etc/fscrypt.conf".
Metadata directories created at "/.fscrypt"
на запрос создания файла метаданных в корне ./ нажимаем Y
5. Создаем новую домашнюю папку user0-new
user1@laptop:# sudo mkdir /home/user0-new
user1@laptop:# sudo fscrypt encrypt /home/user0-new --user=user0(ваш основной пользователь)
- В появившемся диалоге выбираем 1. Т.е для дешифровки папки будет использоваться ваш пароль для логина в системе. И вводим пароль вашего основного пользователя(user0)
The following protector sources are available: 1 - Your login passphrase (pam_passphrase) 2 - A custom passphrase (custom_passphrase) 3 - A raw 256-bit key (raw_key) Enter the source number for the new protector [2 - custom_passphrase]: 1 IMPORTANT: Before continuing, ensure you have properly set up your system for login protectors. See https://github.com/google/fscrypt#setting-up-for-login-protectors Enter login passphrase for user0: "user0-new" is now encrypted, unlocked, and ready for use.
user1@laptop:#sudo cp -a -T /home/user0 /home/user0-new
user1@laptop:# sudo mv user0 user0.backup
user1@laptop:# sudo mv user0-new user0
Все готово. Перезагружаемся и заходим вашим основным пользователем (user0). Если все нормально, то удаляем нового пользователя и папку с бекапом (user0.backup).
FolderEncryption
Encfs is an application that allows you to create encrypted directories, any file that is placed in such a directory will be encrypted. To open an encrypted directory you need a correct password.
Both encfs must be set up from a terminal so this tutorial might be a bit difficult for linux newcomers. There is a GUI alternative for the default file browser in Ubuntu, see the External Links section.
Setting up encfs
(These directions assume a recent version of ubuntu (>10.04) in which all the fuse details are setup by default.)
To install encfs you need to have access to the universe-packages of ubuntu (How To).
Now enter a terminal and type:
Finally you are ready to create the encrypted directory. The application encfs will create one directory which contains the encrypted files and one directory where the files are unlocked and accessible. The syntax for encfs is: encfs
For example, I wish to have a directory in my home directory called visible and another one called encrypted. Therefore I could write:
Where the ‘~’ indicates that the directories shall be placed in the home directory.
First encfs will ask you to create the selected directories. Simply type ‘y’. Then it asks which degree of encryption that should be used. I prefer to simply press enter to use default encryption-level. At last encfs will ask you for the password that is needed to reach the encrypted information.
If things work out correctly and you don’t recieve an error-message after typing in your password you are now free to use the directory ~/visible to store all kinds of sensitive information:-)
In order to close the ~/visible directory simply type:
As long as the directory is closed all the information in ~/visible will seem to have disappeared. The only way to gain access to this information again is by unlocking it. This can be done in a terminal by typing:
You will be asked for the proper password to gain access.
Automatically Mounting on Startup
gnome-encfs Python script
The gnome-encfs project uses the gnome keyring (standard authentication mechanism) and the autostart mechanism to automatically mount your directory on login.
Unfortunately this is not available in the Ubuntu repositories, and must be manually installed.
From the directory where you keep miscellaneous or source files, run:
hg clone http://bitbucket.org/obensonne/gnome-encfs cd gnome-encfs sudo install gnome-encfs /usr/local/bin
Now to setup gnome-encfs so that it knows to mount your directory (using the same names as above) run:
gnome-encfs --add ~/.encrypted ~/visible
Gnome Encfs Manager
There is also GUI solution — Gnome Encfs Manager (homepage: http://www.libertyzero.com/GEncfsM/, project page at Launchpad: https://launchpad.net/gencfsm).
To install it copy/paste the following line into a terminal and hit enter:
sudo add-apt-repository ppa:gencfsm && sudo apt update && sudo apt install gnome-encfs-manager
Now run «Gnome Encfs Manager» application and do setup via GUI dialogs.
Manually Mounting from Cryptkeeper
There is a gnome tray application called Cryptkeeper that allows for manual (GUI based) mounting/unmounting of directories encrypted with encfs.
sudo apt install cryptkeeper
It should then be available to run from Applications->System Tools->Crytpkeeper. To add your volume click on the tray icon and select «Import EncFS directory». It will then let you browse to your encrypted ~/.encrypted directory (from part 1 of this page). You can then select the location it should be mounted as well.
In the future, you can simply click on it, and select your directory from the drop-down options.
Compatibility Warning
Because of changes to the Boost Serialization library (in 1.42), data encrypted under 10.10 Maverick Meerkat or later are not compatible with encfs running on 10.04LTS Lucid Lynx or earlier.
External Links
FolderEncryption (последним исправлял пользователь cpe-69-23-67-43 2016-04-04 02:54:49)
The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details