Смонтировать зашифрованный HFS в Ubuntu
Я пытаюсь смонтировать зашифрованный раздел HFS+ в Ubuntu.
В более раннем посте было довольно хорошо описано, как это сделать, но не хватает информации о том, как использовать зашифрованные разделы.
Что я нашел до сих пор:
# install required packages
sudo apt-get install hfsprogs hfsutils hfsplus loop-aes-utils
# try to mount it
mount -t hfsplus -o encryption=aes-256 /dev/xyz /mount/xyz
Но как только я запускаю это, я получаю следующую ошибку:
Error: Password must be at least 20 characters.
Итак, я попытался ввести его дважды, но это приводит к следующему:
ioctl: LOOP_SET_STATUS: Invalid argument, requested cipher or key (256 bits) not supported by kernel
Какие-либо предложения?
2 ответа
Вы не можете смонтировать раздел HFS+, зашифрованный в OS X, используя mount
вариант encryption=aes
, Причина в том, что зашифрованные разделы и тома HFS+ используют собственный формат.
Ни Cryptoloop, ни Loop-AES, которые лежат в основе методов дешифрования, используемых mount
а также encryption
, понять этот формат.
Вот что я узнал:
Cryptoloop может монтировать разделы или образы дисков, зашифрованные как один блок AES (это называется одноключевым режимом, см. http://www.tldp.org/HOWTO/html_single/Cryptoloop-HOWTO/):
/dev/sdXX
disk image /dev/loopX
+-----------+ +-------------+
| | | |
| | | |
| | | unencrypted |
| AES block | -AES passwd->AES key->decrypt I/O to loop device-> | partition |
| | | |
| | | |
| | | |
+-----------+ +-------------+
AES-Loop может монтировать одноключевые (как указано выше) и многоключевые зашифрованные разделы или образы дисков:
/dev/sdXX
disk image /dev/loopX
+------------+ +-------------+
|AES block #1| | |
+------------+ | |
|AES block #2| | unencrypted |
+------------+ -AES passwd->AES key(s)->decrypt I/O to loop dev-> | partition |
|AES block #3| | |
+------------+ | |
| ... | | |
+------------+ +-------------+
С другой стороны, зашифрованный раздел HFS+:
- включает в себя заголовок (вы можете сбросить его с
xxd
) - использует несколько ключей без документов (см. http://events.ccc.de/congress/2006/Fahrplan/attachments/1244-23C3VileFault.pdf)
- начиная с OS X 10.7 "Lion", он включен в группу логических томов CoreStorage (см.
man diskutil
или https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/diskutil.8.html) использует AES-XTS:
$ diskutil coreStorage list (...) +-> Logical Volume Family D1C4665F-EAC8-4DAB-B392-634842A59559 ---------------------------------------------------------- Encryption Status: Unlocked Encryption Type: AES-XTS (...)
который не поддерживается ни Cryptoloop, ни Loop-AES.
Наследник Cryptoloop, dm-crypt
, не могу прочитать зашифрованный HFS+ либо.
Но прежде чем вся надежда ушла
Группа экспертов по криптографии создала
vfdecrypt
(входит в пакет Ubuntudmg2img
tar.gz находится здесь: http://code.google.com/p/iphone-elite/downloads/list), который расшифровывает зашифрованные образы дисков FileVault (он не будет работать с файлами устройств).Этот инструмент выглядит очень многообещающе, но не работал ни с одним из нескольких зашифрованных образов дисков, которые я создал
Disk Utility
на OS X 10.8.2 "Горный лев". Другие люди ( http://bre.klaki.net/blog/2011/08/17/), похоже, добились успеха со старыми зашифрованными изображениями.Другие эксперты работают над проектом
libfvde
( https://code.google.com/p/libfvde), который включает командуfvdemount
для чтения FileVault зашифрованных системных томов. Ограничивающим фактором здесь является "объем системы". Он не поддерживает разделы на съемных носителях. Если вам интересно, описание здесь: https://code.google.com/p/libfvde/wiki/Mounting. Исходный код можно скачать здесь: https://code.google.com/p/libfvde/downloads/list.
Что касается сообщений об ошибках, с которыми вы столкнулись:
Первая ошибка:
Error: Password must be at least 20 characters.
Удивительно, mount
вводит длинные пароли не только для шифрования, но и для дешифрования, хотя вы не можете контролировать раздел для расшифровки. Вы можете обойти эту неприятность только путем загрузки и редактирования исходного кода и перекомпиляции. (Другие дистрибутивы, такие как SuSE Linux Enterprise Server (SLES), не имеют этого ограничения.)
Вторая ошибка:
ioctl: LOOP_SET_STATUS: Invalid argument, requested cipher or key (256 bits) not supported by kernel
Вам необходимо загрузить модуль ядра Cryptoloop:
$ sudo modprobe cryptoloop
потому что, хотя вы установили пакет loop-aes-utils
Вы не используете Loop-AES.
Loop-AES использует несколько модифицированных инструментов пространства пользователя (mount
, umount
, losetup
, swapon
а также swapoff
предоставлено loop-aes-utils
) и модифицированный loop.ko
модуль ядра. Последние версии Ubuntu компилируют неизмененные loop
модуль в ядро:
$ cd /usr/src/linux-source-3.2.0/linux-source-3.2.0/drivers/block/
$ diff -q /tmp/loop.c-3.x.patched loop.c
Files /tmp/loop.c-3.x.patched and loop.c differ
поэтому Loop-AES нельзя использовать на Ubuntu из коробки. Вам нужно исправить и перекомпилировать ядро, как описано здесь: http://loop-aes.sourceforge.net/loop-AES.README. Вот почему mount
все еще нуждается в Cryptoloop.
Если вы все еще получаете похожее сообщение об ошибке после загрузки cryptoloop.ko
тип шифрования может быть не распознан. Например, моя Ubuntu 12.04 не распознала aes-128
, но aes
, SLES только распознает aes-128
,
На самом деле, есть Java-приложение hfsexplorer, которое может открывать зашифрованные .dmg
файлы и создает расшифрованные .dmg
образы, которые можно монтировать в Linux.
Я смог создать зашифрованный .dmg
файлы в OS X 10.9.5, а затем исследовать образ с виртуальной машины под управлением Ubuntu 14.04.2 LTS. И шифрование AES-128 и AES-256 работало для моих тестовых случаев.
Вот как я создал .dmg
образ:
$ hdiutil create -size 10m -layout NONE -fs HFS+ -encryption AES-256 -volname "Vault" vault.dmg
С виртуальной машины под управлением Ubuntu я смог открыть образ:
$ ./hfsexplorer-0/bin/hfsexplorer.sh /tmp/vault.dmg
Он запрашивает пароль, а затем показывает содержимое изображения. Существует опция (Инструменты -> создать образ диска), которая создает расшифрованный образ диска, который затем можно смонтировать с помощью инструментов hfs из linux.
$ mount vault_decrypted.dmg /mnt/hfs/
Работали даже файловые системы HFS+ Journaled. Единственным ограничением является то, что поддержка записи в файловые системы HFS + J по умолчанию отключена в Linux.
Это показывает, что шифрование .dmg
понимается hfsexplorer
и может быть реализовано в mount
команда. С созданием незашифрованного .dmg
в конечном итоге возможно смонтировать образ в Linux.
vfdecrypt
у меня тоже не сработало.