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

Другие вопросы по тегам