Mount HFS được mã hóa trong Ubuntu


32

Tôi cố gắng gắn kết một phân vùng HFS + được mã hóa trong Ubuntu.

Một bài đăng cũ mô tả khá tốt cách thực hiện, nhưng thiếu thông tin về cách sử dụng các phân vùng được mã hóa.

Những gì tôi tìm thấy cho đến nay là:

  # 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

Nhưng một khi tôi chạy nó, tôi gặp lỗi sau:

  Error: Password must be at least 20 characters.

Vì vậy, tôi đã cố gắng gõ nó trong hai lần, nhưng kết quả là:

  ioctl: LOOP_SET_STATUS: Invalid argument, requested cipher or key (256 bits) not supported by kernel

Bất kỳ đề xuất?


Không chắc chắn nếu điều này làm cho một sự khác biệt, nhưng bạn đã thử aes256thay vì aes-256?
Ansgar Wiechers

có - kết quả tương tự cho cả hai - ngay cả khi chỉ sử dụng "aes" cũng cho kết quả tương tự
vào

Câu trả lời:


59

Bạn không thể gắn kết phân vùng HFS + được mã hóa trong OS X bằng mounttùy chọn của encryption=aes. Lý do là các phân vùng và khối lượng HFS + được mã hóa sử dụng định dạng độc quyền .

Cả CryptoloopLoop-AES , là các phương thức giải mã cơ bản được sử dụng bởi mountencryption, hiểu định dạng đó.

Đây là những gì tôi tìm ra:

Cryptoloop có thể gắn kết các phân vùng hoặc hình ảnh đĩa được mã hóa thành một khối AES duy nhất (đây được gọi là chế độ một phím, xem http://www.tldp.org/HOWTO/html_single/Cryptoloop-HOWTO/#cryptoloop-int sinhtion ):

  /dev/sdXX                                                        
  disk image                                                       /dev/loopX
+-----------+                                                    +-------------+
|           |                                                    |             |
|           |                                                    |             |
|           |                                                    | unencrypted |
| AES block | -AES passwd->AES key->decrypt I/O to loop device-> |  partition  |
|           |                                                    |             |
|           |                                                    |             |
|           |                                                    |             |
+-----------+                                                    +-------------+

AES-Loop có thể gắn các khóa đơn (như trên) và các phân vùng được mã hóa đa khóa hoặc hình ảnh đĩa:

  /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|                                                    |             |
+------------+                                                    |             |
|    ...     |                                                    |             |
+------------+                                                    +-------------+

Mặt khác, phân vùng HFS + được mã hóa:

  • bao gồm một tiêu đề (bạn có thể kết xuất nó với xxd)
  • sử dụng một số khóa theo cách không có giấy tờ (xem http://events.ccc.de/congress/2006/Fahrplan/attachments/1244-23C3VileFault.pdf )
  • bắt đầu với OS X 10.7 "Lion", nó được bao bọc trong Nhóm khối lượng logic của CoreStorage (xem man diskutilhoặc https://developer.apple.com/legacy/l Library / documentation / Darwin / Relerence / MakPages / man8 / displayutil.8.html )
  • sử dụng AES-XTS :

       $ diskutil coreStorage list
       (...)
       +-> Logical Volume Family D1C4665F-EAC8-4DAB-B392-634842A59559
           ----------------------------------------------------------
           Encryption Status:       Unlocked
           Encryption Type:         AES-XTS
           (...)
    

    mà dường như không được hỗ trợ bởi Cryptoloop cũng như Loop-AES.

Người kế vị của Cryptoloop dm-crypt, cũng không thể đọc HFS + được mã hóa.

Nhưng trước khi mọi hy vọng không còn nữa:

Đối với các thông báo lỗi bạn gặp phải:

Lỗi đầu tiên:

Error: Password must be at least 20 characters.

Đáng ngạc nhiên, mountthực thi mật khẩu dài không chỉ để mã hóa mà còn để giải mã , mặc dù bạn có thể không có quyền kiểm soát phân vùng để giải mã. Bạn chỉ có thể khắc phục sự phiền toái này bằng cách tải xuống và chỉnh sửa nguồn và biên dịch lại. (Các bản phân phối khác, như SuSE Linux Enterprise Server (SLES), không có hạn chế này.)

Lỗi thứ hai:

ioctl: LOOP_SET_STATUS: Invalid argument, requested cipher or key (256 bits) not supported by kernel

Bạn cần tải mô-đun hạt nhân Cryptoloop:

$ sudo modprobe cryptoloop

bởi vì mặc dù bạn đã cài đặt gói nhưng loop-aes-utilsbạn không sử dụng Loop-AES.

Loop-AES sử dụng một số công cụ không gian người dùng sửa đổi ( mount, umount, losetup, swaponswapoff, được cung cấp bởi loop-aes-utils) và biến đổi loop.komô-đun hạt nhân. Các phiên bản Ubuntu gần đây biên dịch một loopmô-đun chưa sửa đổi vào kernel:

    $ 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

vì vậy Loop-AES không thể được sử dụng trên Ubuntu. Bạn cần vá và biên dịch lại kernel như được giải thích ở đây: http://loop-aes.sourceforge.net/loop-AES.README . Đó là lý do tại sao mountvẫn cần Cryptoloop.

Nếu bạn vẫn nhận được một thông báo lỗi tương tự sau khi tải cryptoloop.koloại mã hóa có thể không được nhận ra. Ví dụ, Ubuntu 12.04 của tôi không nhận ra aes-128, nhưng aes. SLES chỉ nhận ra aes-128.


1
+1 cho thông tin chuyên sâu và chi tiết được cung cấp trong câu trả lời.
Daemon of Chaos

4
Đây là một câu trả lời đơn giản. Thông tin đặc biệt, chi tiết, và rõ ràng được nghiên cứu rất tốt. Cảm ơn đã chia sẻ jaume, cảm ơn rất nhiều.
chmac

3
Chỉ muốn lưu ý rằng tôi đã thử điều này trên OSX 10.10.3 với thành công. Tôi cũng thấy rằng quá trình giải mã ổ đĩa sẽ không có tiến triển gì khi tôi làm việc nhiều với máy tính. Tuy nhiên, với máy tính xách tay có nguồn điện trên tường và ổ đĩa được cắm vào, tôi đã đóng nắp (ngủ hoàn toàn) và nó đã hoàn thành việc giải mã trong khi nó ngủ trong PowerNap.
voxobscuro

14

Trên thực tế, có ứng dụng Java hfsexplorer có khả năng mở .dmgcác tệp được mã hóa và tạo các .dmghình ảnh được giải mã có thể được gắn trong Linux.

Tôi đã có thể tạo .dmgcác tệp được mã hóa trong OS X 10.9.5 và sau đó khám phá hình ảnh từ một máy ảo chạy Ubuntu 14.04.2 LTS. Cả mã hóa AES-128 và AES-256 đều hoạt động cho các trường hợp thử nghiệm của tôi.

Đây là cách tôi tạo ra .dmghình ảnh:

$ hdiutil create -size 10m -layout NONE -fs HFS+ -encryption AES-256 -volname "Vault" vault.dmg

Từ máy ảo chạy Ubuntu tôi đã có thể mở hình ảnh:

$ ./hfsexplorer-0/bin/hfsexplorer.sh /tmp/vault.dmg

Nó nhắc nhập mật khẩu và sau đó hiển thị nội dung của hình ảnh. Có một tùy chọn (Công cụ -> tạo hình ảnh đĩa) tạo ra hình ảnh đĩa được giải mã, sau đó có thể được gắn với các công cụ hfs từ linux.

$ mount vault_decrypted.dmg /mnt/hfs/

Ngay cả các hệ thống tập tin HFS + Tạp chí đã làm việc. Hạn chế duy nhất là hỗ trợ ghi vào hệ thống tệp HFS + J bị tắt theo mặc định trong Linux.

Điều này chứng tỏ rằng mã hóa .dmgđược hiểu hfsexplorervà có thể được thực hiện trong mountlệnh. Với việc tạo ra một mã hóa không được mã hóa .dmg, cuối cùng có thể gắn hình ảnh vào Linux.

vfdecrypt cũng không làm việc cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.