Столкнулся с такой особенностью - и при создании пользователя командой
adduser --encrypt-home test
и при преобразовании домашнего каталога пользователя посредством ecryptfs-migrate-home генерируется ключ длиной 128 бит, в то время как в принципе ecryptfs вроде бы поддерживает шифрование с ключом 256 бит.
Как создать пользователя с шифрованием домашнего каталога ecryptfs ключом 256 бит?
Пользователь решил продолжить мысль 20 Января 2012, 23:25:06:
Неужто никто вопросом не задавался? При монтировании ecryptfs предлагается выбрать:
$ sudo mount -t ecryptfs /home/.ecryptfs/test/.Private /mnt/tmp
Passphrase:
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
2) blowfish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]:
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]:
...
Т.е. теоретически ecryptfs поддерживает 6 разных алгоритмов шифрования, а в случае aes - 16, 24 и 32-байтный ключ... Так как же создать то, что можно смонтировать с ответом под номером 2 на вопрос "Select key bytes"

?
Пользователь решил продолжить мысль 21 Января 2012, 03:11:19:
Провел следственный эксперимент... Каждый шаг логировался, привожу полностью:
Вхожу как администратор:
$ sudo -i
Создаю нового пользователя с зашифрованным $HOME
# adduser --encrypt-home test2
Добавляется пользователь `test2' ...
Добавляется новая группа `test2' (1006) ...
Добавляется новый пользователь `test2' (1006) в группу `test2' ...
Создаётся домашний каталог `/home/test2' ...
Настройка шифрования ...
************************************************************************
YOU SHOULD RECORD YOUR MOUNT PASSPHRASE AND STORE IT IN A SAFE LOCATION.
ecryptfs-unwrap-passphrase ~/.ecryptfs/wrapped-passphrase
THIS WILL BE REQUIRED IF YOU NEED TO RECOVER YOUR DATA AT A LATER TIME.
************************************************************************
Done configuring.
Копирование файлов из `/etc/skel' ...
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: пароль успешно обновлён
Изменение информации о пользователе test2
Введите новое значение или нажмите ВВОД для выбора значения по умолчанию
Полное имя []:
Номер комнаты []:
Рабочий телефон []:
Домашний телефон []:
Другое []:
Данная информация корректна? [Д/н]
#
Созданный пользователь имеет шифрованный $HOME ключом 128 бит.
Генерирую новый ключ шифрования длиной 256 бит:
# xxd -p -l 32 -c 32 /dev/random
1626d5c13700404255d75c1271a9d6c5565756467c6960699bbb7a06548351f6
#
Удаляю файлы с ключами и подписями, а также все зашифрованные пользовательские файлы (все равно добраться без ключа до них не добраться):
# cd /home/.ecryptfs/test2/.ecryptfs/
# rm Private.sig
# rm wrapped-passphrase
# эрэм эрэф /home/.ecryptfs/test2/.Private/*
#
Создаю взамен них новые:
# ecryptfs-wrap-passphrase wrapped-passphrase
Passphrase to wrap:
Wrapping passphrase:
#
Здесь на запрос "Passphrase to wrap" ввожу сгенерированный 32-байтный ключ (1626d5c13700404255d75c1271a9d6c5565756467c6960699bbb7a06548351f6), а на "Wrapping passphrase" - пароль пользователя test2.
На всякий случай пробую его расшифровать (используя пароль пользователя):
# ecryptfs-unwrap-passphrase wrapped-passphrase
Passphrase:
1626d5c13700404255d75c1271a9d6c5565756467c6960699bbb7a06548351f6
#
Получилось. Теперь добавляю нужные ключи подписей в связку ключей ядра и в файл взамен удаленному:
# ecryptfs-add-passphrase --fnek
Passphrase:
Inserted auth tok with sig [3b95dadfccce9e3d] into the user session keyring
Inserted auth tok with sig [651cc20cdbcc160a] into the user session keyring
# echo 3b95dadfccce9e3d > Private.sig
# echo 651cc20cdbcc160a >> Private.sig
#
Здесь на запрос Passphrase ввожу 32-байтный ключ, а данные выводимые в Private.sig беру из вывода ecryptfs-add-passphrase.
Монтирую директорию (пока из-под рута):
# mount -t ecryptfs /home/.ecryptfs/test2/.Private/ /home/test2
Passphrase:
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (loaded)
2) blowfish: blocksize = 16; min keysize = 16; max keysize = 56 (not loaded)
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
4) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
5) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]:
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]: 32
Enable plaintext passthrough (y/n) [n]:
Enable filename encryption (y/n) [n]: y
Filename Encryption Key (FNEK) Signature [3b95dadfccce9e3d]: 651cc20cdbcc160a
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=651cc20cdbcc160a
ecryptfs_key_bytes=32
ecryptfs_cipher=aes
ecryptfs_sig=3b95dadfccce9e3d
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.
Would you like to proceed with the mount (yes/no)? : yes
Would you like to append sig [3b95dadfccce9e3d] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? : no
Not adding sig to user sig cache file; continuing with mount.
Mounted eCryptfs
#
Здесь Passphrase - сгенерированный ключ, алгоритм оставляю aes, вместо предлагаемого по умолчанию 16-битного ключа использую 32-битный, вместо предлагаемой FNEK подписи ввожу ту, которая находится во второй строке файла Private.sig, отказываюсь от добавления ecryptfs_sig в /root/.ecryptfs/sig-cache.txt.
Проверяю опции монтирования:
# mount |grep test2
/home/.ecryptfs/test2/.Private on /home/test2 type ecryptfs (rw,ecryptfs_sig=3b95dadfccce9e3d,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_fnek_sig=651cc20cdbcc160a,ecryptfs_unlink_sigs)
#
Теперь копирую в папку пользователя /etc/skel и создаю пару символьных ссылок (аналогично тем, которые создаются по умолчанию):
# cp -r /etc/skel/. /home/test2/
# ln -s /home/.ecryptfs/test2/.ecryptfs /home/test2/
# ln -s /home/.ecryptfs/test2/.Private/ /home/test2/
#
Размонтирую шифрованный каталог:
# umount /home/test2/
#
Передаю созданные рутом файлы его владельцу:
# chown -R test2: /home/.ecryptfs/test2
#
Самый ответственный момент - вход в систему...
$ su - test2
$ mount |grep test2
/home/test2/.Private on /home/test2 type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=3b95dadfccce9e3d,ecryptfs_fnek_sig=651cc20cdbcc160a)
$ ls
ECRYPTFS_FNEK_ENCRYPTED.FWZZ5A6AqwkK0Ua7Bpk8H34CPAS6FQQDHCbw7mS3RSdoCVjJb94iIdAsLk-- ECRYPTFS_FNEK_ENCRYPTED.FWZZ5A6AqwkK0Ua7Bpk8H34CPAS6FQQDHCbwGtRiBwvxY95oX8TO9lBfeU--
ECRYPTFS_FNEK_ENCRYPTED.FWZZ5A6AqwkK0Ua7Bpk8H34CPAS6FQQDHCbwaP8sapMzowx-aA39F0Bz9U-- ECRYPTFS_FNEK_ENCRYPTED.FWZZ5A6AqwkK0Ua7Bpk8H34CPAS6FQQDHCbwj1l0.2o2DwfGwwiJF7ieY---
ECRYPTFS_FNEK_ENCRYPTED.FWZZ5A6AqwkK0Ua7Bpk8H34CPAS6FQQDHCbwFksYWwQx1Zf4xoG35Q-6MU--
$
Облом, смонтировалось с 16-байтным ключом, названия файлов остались зашифрованными... И что самое обидное - выходит, не было шифрования данных 32-байтным ключом, т.к. в файлах с зашифрованными названиями обнаруживаются читаемые данные...
$ cat ECRYPTFS_FNEK_ENCRYPTED.FWZZ5A6AqwkK0Ua7Bpk8H34CPAS6FQQDHCbwFksYWwQx1Zf4xoG35Q-6MU--
# ~/.profile: executed by the command interpreter for login shells.
...
$
Выходит, ecryptfs не поддерживает 256-битный aes и даже при явном заданиии длины ключа 32 байта шифрует данные 16-байтным ключом??? Или я что-то упустил?