Как создать зашифрованный раздел ext4 на Ubuntu 15.04 с новым ядром 4.1?

7

Можно ли создать новый зашифрованный раздел ext4 с ядром 4.1 на Ubuntu 15.04?

    
задан Oto_Shan 02.07.2015 в 13:11
источник

2 ответа

8

Во-первых, отказ от ответственности: я не делал этого с Ubuntu, но на машине с Debian Stretch, установленной с использованием специального ядра Linux 4.2.3, я включил EXT4_FS_ENCRYPTION on.

Инструкции, данные kmeaw , не работают для меня точно так, как указано. Осталось несколько вещей (параметры и этапы командной строки).

  • Обновить 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
    
  • Создайте ключ в keyring и используйте его для установки политики для шифруемого каталога (здесь не нужна команда 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.
    
ответ дан Daniel Glasser 23.10.2015 в 18:49
2

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 в вашей файловой системе - он будет обрабатывать зашифрованные имена файлов как недопустимые.

    
ответ дан kmeaw 08.07.2015 в 17:14