เมานต์ HFS ที่เข้ารหัสใน Ubuntu


32

ฉันพยายามเมาต์พาร์ติชัน 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

ข้อเสนอแนะใด ๆ


ไม่แน่ใจว่านี้ทำให้ความแตกต่าง แต่มีคุณพยายามaes256แทนaes-256?
Ansgar Wiechers

ใช่ - ผลลัพธ์เดียวกันสำหรับทั้งคู่ - แม้เพียงแค่ใช้ "aes" ก็ให้ผลลัพธ์เหมือนกัน
pagid

คำตอบ:


59

คุณไม่สามารถกำหนดพาร์ทิชัน HFS + เข้ารหัสใน OS X โดยใช้mount's encryption=aesตัวเลือก เหตุผลคือพาร์ติชันและไดรฟ์ข้อมูลที่เข้ารหัส HFS + ใช้รูปแบบที่เป็นกรรมสิทธิ์

ทั้งCryptoloopมิได้ห่วง-AESซึ่งเป็นวิธีการถอดรหัสพื้นฐานใช้โดยmountและencryptionเข้าใจรูปแบบที่

นี่คือสิ่งที่ฉันค้นพบ:

Cryptoloop สามารถเมาต์พาร์ติชันหรือดิสก์อิมเมจที่เข้ารหัสเป็นบล็อก AES เดียว (ซึ่งเรียกว่าโหมดคีย์เดียวดูที่http://www.tldp.org/HOWTO/html_single/Cryptoloop-HOWTO/#cryptoloop-introduction ):

  /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 Logical (ดู 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(รวมอยู่ในแพ็คเกจ Ubuntu dmg2img, tar.gz อยู่ที่นี่: http://code.google.com/p/iphone-elite/downloads/list ) ซึ่งถอดรหัสภาพดิสก์ FileVault ที่เข้ารหัส (มันจะ ' ไม่ทำงานกับไฟล์อุปกรณ์)

    เครื่องมือนี้ดูมีแนวโน้มมาก แต่ไม่สามารถใช้งานได้กับดิสก์อิมเมจเข้ารหัสหลายรูปแบบที่ฉันสร้างขึ้นDisk Utilityใน OS X 10.8.2 "Mountain Lion" คนอื่น ๆ ( 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#Mouting_the_system_volume รหัสที่มาที่สามารถดาวน์โหลดได้ที่นี่: 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

ห่วง-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 aesSLES aes-128เพียงตระหนัก


1
+1 สำหรับข้อมูลเชิงลึกและรายละเอียดที่ให้ไว้ในคำตอบ
Daemon of Chaos

4
นี่เป็นคำตอบที่มหัศจรรย์ ให้ข้อมูลมีรายละเอียดและวิจัยได้ดีมาก ขอบคุณสำหรับการแบ่งปัน jaume ขอบคุณมาก
chmac

3
แค่อยากจะทราบว่าฉันเพิ่งลองสิ่งนี้ใน OSX 10.10.3 ด้วยความสำเร็จ ฉันยังพบว่ากระบวนการถอดรหัสลับไดรฟ์จะไม่คืบหน้าเมื่อฉันทำอะไรกับคอมพิวเตอร์มาก อย่างไรก็ตามด้วยแล็ปท็อปที่มีกำลังไฟติดผนังและไดรฟ์เสียบเข้าด้วยกันฉันจึงปิดฝา (นอนหลับเต็ม) และถอดรหัสเสร็จในขณะที่นอนใน PowerNap
voxobscuro

14

อันที่จริงมี Java application 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 ไม่ได้ผลสำหรับฉันเช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.