Как создать зашифрованный раздел ext4 в Ubuntu 15.04 с новым ядром 4.1?
Могу ли я создать новый ext4
зашифрованный раздел с ядром 4.1 на Ubuntu 15.04?
2 ответа
Прежде всего, отказ от ответственности: я не делал этого с Ubuntu, но на машине с установленным Debian "Stretch", используя собственное ядро Linux 4.2.3, которое я включил EXT4_FS_ENCRYPTION
на.
Инструкции, данные kmeaw, не работают для меня точно так, как опубликовано. Несколько вещей были опущены (параметры командной строки и шаги).
- Обновить
e2fsprogs
как показано выше Создайте свою случайную соль. Я использовал следующее, чтобы сохранить его в "безопасном месте":
head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
Чтобы использовать шифрование ext4 в файловой системе, в суперблоке должен быть установлен флаг "шифровать". Это не значение по умолчанию при создании файловой системы 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
Можно использовать команду set 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.
Linux 4.1 поставляется с новой функцией Ext4 для шифрования каталогов файловой системы. Ключи шифрования хранятся в связке ключей. Для начала убедитесь, что вы включили CONFIG_KEYS
а также CONFIG_EXT4_FS_ENCRYPTION
опции ядра и у вас ядро 4.1 или выше.
Прежде всего, вам нужно обновить e2fsprogs по крайней мере до версии 1.43, которая на момент написания все еще была WIP, поэтому нам нужно извлечь ее из репозитория 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
Это все. Если вы попытаетесь получить доступ к диску без добавления ключа в цепочку для ключей, имена файлов и их содержимое будут рассматриваться как зашифрованный бред. Будьте осторожны при запуске старых версий e2fsck в вашей файловой системе - зашифрованные имена файлов будут считаться недействительными.