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

11

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

Oto_Shan
источник
2
Возможный дубликат Как создать зашифрованный раздел?
Рон
Это не дубликат, поскольку ни один из существующих ответов не касается конкретной функции, добавленной в ядро ​​4.1, ссылка: phoronix.com/…
LiveWireBT

Ответы:

9

Прежде всего, отказ от ответственности: я делал это не с 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можно использовать команду установки ключа для расшифровки каталога и его потомков:

    $ /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.
    
Даниэль Глассер
источник
Статья в вики Arch предлагает прочитать следующий пост в блоге, автор которого написал программу для упрощения некоторых шагов: blog.quarkslab.com/… На момент написания статьи 16.04 все еще находится в разработке и имеет две соответствующие конфигурации ядра параметры установлены, хотя e2fsprogs все еще в версии 1.42.
LiveWireBT
Хорошо ... Я попробовал эти инструкции, и моя папка заблокирована ... на cp .. /secret/home/$USER/.я получаю: «cp: не может создать обычный файл '/secret/home/alexis/test-top-secret-image.svg': требуемый ключ отсутствует доступно » . Я просто следовал твоим инструкциям, так что думаю что-то изменилось.
Алексис Уилк
Во втором экземпляре " /usr/bin/e4crypt" отсутствует "s" в "/ [s] bin".
Алексис Уилк
3

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
источник
Этот ответ имел серьезные проблемы с форматированием. Я пытался улучшить, насколько мог, но мне не имеет смысла, почему кто-то явно пытался использовать форматирование уценки, обрабатывать сложные команды, а также одновременно выполнять аналогичное редактирование в вики Arch, но потом посмотрю на мусор, представленный в предварительном просмотре и решили оставить все как есть. Нет удовлетворительного объяснения или дополнительной ссылки, почему строки должны быть удалены. Кроме того, предлагается использовать debuild не по назначению (с не-debianized пакетом, в Debian есть экспериментальный пакет) и он не работает. -1
LiveWireBT