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

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

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

Связанный контент