Можно ли создать новый ext4
зашифрованный раздел с ядром 4.1 в Ubuntu 15.04?
решение1
Для начала хочу предупредить: я делал это не на Ubuntu, а на машине с установленным Debian «Stretch» с использованием специального ядра Linux 4.2.3, которое я включил EXT4_FS_ENCRYPTION
.
Инструкции, данныекмяуне работает у меня точно так, как написано. Несколько вещей были упущены (параметры командной строки и шаги).
- Обновите
e2fsprogs
, как показано выше Сгенерируйте свою случайную соль. Я использовал следующее, чтобы сохранить ее в «безопасном месте»:
head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
Для использования шифрования ext4 в файловой системе необходимо установить флаг "encrypt" в суперблоке. Это не является значением по умолчанию при создании файловой системы ext4. Используя утилиту "tune2fs" из e2fsprogs 1.43 или более поздней версии, установите параметр "encrypt":
sudo tune2fs -O encrypt /dev/sda4
Смонтируйте или перемонтируйте файловую систему, чтобы ядро узнало об изменении (возможно, это происходит автоматически, но я делал это только на отдельном разделе, поэтому не уверен).
Создайте каталог в файловой системе, смонтированный с включенным шифрованием:
sudo mkdir -p /secret/home/$USER sudo chown $USER:$USER /secret/home/$USER
Создайте ключ в связке ключей и используйте его для установки политики шифрования каталога (команда
sudo
здесь не нужна):$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt` Enter passphrase (echo disabled): Added key with descriptor [0132fed69f946c86] $ /usr/bin/e4crypt set_policy 0132fed69f946c86 /secret/home/$USER Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
После каждой перезагрузки
add_key
можно использовать команду установки ключа для расшифровки каталога и его потомков:$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt` Enter passphrase (echo disabled): Added key with descriptor [0132fed69f946c86]
Введите тот же пароль, который использовался на предыдущем шаге, и вам не придется запоминать шестнадцатеричную строку дескриптора.
Вы также можете использовать
add_key
напрямую. Это будет использовать специфическую соль файловой системы (поэтому все папки в этом разделе будут иметь одинаковую соль)$ /usr/sbin/e4crypt add_key /secret/home/$USER Added key with descriptor [0132fed69f946c86] Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
решение2
Linux 4.1 поставляется с новой функцией Ext4 для шифрования каталогов файловой системы. Ключи шифрования хранятся в связке ключей. Для начала убедитесь, что у вас включены CONFIG_KEYS
и CONFIG_EXT4_FS_ENCRYPTION
параметры ядра и у вас ядро 4.1 или выше.
Прежде всего, вам необходимо обновить e2fsprogs как минимум до версии 1.43, которая на момент написания статьи все еще находилась в стадии разработки, поэтому нам нужно загрузить ее изgit-репозиторий:
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
Источник e4crypt отключил соответствующий раздел в своем исходном коде. Включите его, отредактировав misc/e4crypt.c и удалив эти две строки около строки 714:
printf("arg %s\n", argv[optind]);
exit(0);
Теперь соберите и установите новые e2fsprogs:
$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb
Проверьте свою версию сейчас, она должна быть 1.43-WIP:
# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
Using EXT2FS Library version 1.43-WIP, 18-May-2015
Для работы с ключами нам необходимо установить keyutils
пакет:
$ sudo apt-get install keyutils
Давайте создадим каталог, который будем шифровать. Политику шифрования можно устанавливать только для пустых каталогов:
$ sudo mkdir -p /encrypted/dir
Сначала сгенерируйте случайное значение соли и сохраните его в надежном месте:
$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459
Теперь сгенерируйте и добавьте новый ключ в свою связку ключей: этот шаг следует повторять каждый раз, когда вы очищаете свою связку ключей (перезагружаете).
$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled):
Added key with descriptor [f88747555a6115f5]
Теперь вы знаете дескриптор для вашего ключа. Убедитесь, что вы добавили ключ в свою связку ключей:
$ keyctl show
Session Keyring
1021618178 --alswrv 1000 1000 keyring: _ses
176349519 --alsw-v 1000 1000 \_ logon: ext4:f88747555a6115f5
Почти готово. Теперь зададим политику шифрования для каталога:
$ e4crypt set_policy f88747555a6115f5 /encrypted/dir
Вот и все. Если вы попытаетесь получить доступ к диску без добавления ключа в keychain, имена файлов и их содержимое будут отображаться как зашифрованная тарабарщина. Будьте осторожны, запуская старые версии e2fsck на вашей файловой системе — она будет считать зашифрованные имена файлов недействительными.