จะเปลี่ยน hash-spec และ iter-time ของอุปกรณ์ dm-crypt LUKS ที่มีอยู่ได้อย่างไร


11

ฉันจะเปลี่ยนกัญชาข้อมูลจำเพาะและเราเตอร์เวลาของที่มีอยู่ในอุปกรณ์ LUKS DM-ฝังศพใต้ถุนโบสถ์?

เห็นได้ชัดว่าฉันสามารถผ่านตัวเลือกถ้าฉันสร้างอุปกรณ์ใหม่เช่นสิ่งนี้:

 sudo cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 --iter-time 2100 --hash sha512 /dev/loop0

แต่ถ้าอุปกรณ์มีอยู่แล้วฉันจะเปลี่ยนตัวอย่างsha256เป็นsha1หรือเปลี่ยนเวลาการทำซ้ำได้โดยไม่ต้อง "ทำลาย" อุปกรณ์ (เห็นได้ชัดว่าคุณจะต้องพิมพ์รหัสผ่านซ้ำเนื่องจากจะมีการสร้างแฮชใหม่)


คุณไม่เข้าใจคำถามของฉัน
นักเรียน

อาจเป็นแค่ฉัน แต่ฉันคิดว่ามันไม่สุภาพที่จะถาม 1 ประโยค Q โดยไม่มีการอ้างถึงหน้า man หรือแบบฝึกหัดหรือสิ่งที่คุณพยายามทำตามด้วยข้อมูลเฉพาะเช่นสิ่งที่hash-specเป็นหรือiter-timeการตั้งค่าโดยเฉพาะ
slm

ฉันเดาว่าเราเคยทำงานร่วมกันก่อนหน้านี้กับ Q (และคุณมักจะใส่รายละเอียดที่ดีเยี่ยมไว้ในนั้น) และมันทำให้ฉันระวังว่าคราวนี้คุณจะไม่ทำ
slm

ฉันไม่มีข้อมูลเพิ่มเติมในกรณีนี้และไม่พบสิ่งที่ฉันต้องการในหน้า man ...
นักเรียน

2
นอกจากนี้ยังมีการกล่าวถึงเครื่องมืออื่น , cryptsetup-reencrypt. รายการหัวข้อย่อยดูเหมือนว่าคุณกำลังทำอะไรกับฉัน: "เปลี่ยนพารามิเตอร์การเข้ารหัสโดยพลการ"
slm

คำตอบ:


6

แต่ละช่องเสียบกุญแจมีเวลาซ้ำของตัวเอง หากคุณต้องการเปลี่ยนจำนวนการวนซ้ำให้สร้างสล็อตใหม่ด้วยวลีรหัสผ่านเดียวกันและหมายเลขการวนซ้ำใหม่จากนั้นลบสล็อตเก่าออก

cryptsetup -i 100000 --key-slot 2 luksAddKey $device
cryptsetup luksKillSlot $device 1

ฉันคิดว่าอัลกอริธึมการแฮชไม่สามารถกำหนดค่าได้ต่อหนึ่งสล็อตมันเป็น PBKDF2 เสมอพร้อมกับฟังก์ชั่นแฮชที่เลือกใช้ทั่วโลก

cryptsetup เวอร์ชันล่าสุดมีเครื่องมือcryptsetup-reencryptซึ่งสามารถเปลี่ยนคีย์การเข้ารหัสหลักและพารามิเตอร์ทั้งหมด แต่ถือว่าเป็นการทดลอง (และจะเข้ารหัสอุปกรณ์ทั้งหมดแม้ว่าจะไม่จำเป็นต้องเปลี่ยนฟังก์ชันการรับรหัสผ่านตามหลัก) .


9

หากสิ่งที่คุณต้องการเปลี่ยนคือแฮชคุณไม่จำเป็นต้องเข้ารหัสอีกครั้ง คุณยังต้องสร้างส่วนหัว LUKS ใหม่ ตัวเลขเดียวกัน, คีย์หลักเดียวกัน, ออฟเซ็ตเดียวกัน, แฮชที่ต่างกัน

คุณสามารถลองด้วยตัวเอง ครั้งแรกที่เราตั้งค่าอุปกรณ์ LUKS ด้วยการตั้งค่ามาตรฐานและนับ iter หมัด:

# truncate -s 8M /dev/shm/foobar
# cryptsetup --iter-time=42 luksFormat /dev/shm/foobar

WARNING!
========
This will overwrite data on /dev/shm/foobar irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: 
Verify passphrase: 
# cryptsetup luksOpen /dev/shm/foobar foobar
Enter passphrase for /dev/shm/foobar: 
# shred -z /dev/mapper/foobar
# echo Hello World I am LUKS > /dev/mapper/foobar
# strings /dev/mapper/foobar
Hello World I am LUKS
# cryptsetup luksClose foobar

ณ จุดนี้เรามีอุปกรณ์ LUKS ที่มีข้อมูลที่เข้ารหัส "Hello World I am LUKS" โดยเฉพาะอย่างยิ่งดูเหมือนว่านี้:

# cryptsetup luksDump /dev/shm/foobar
LUKS header information for /dev/shm/foobar

Version:        1
Cipher name:    aes
Cipher mode:    xts-plain64
Hash spec:      sha1
Payload offset: 4096
MK bits:        256
MK digest:      30 87 62 81 8e 8f a9 15 68 e0 82 c0 dc ee 19 54 9b f2 eb 5c 
MK salt:        c3 e0 28 53 67 10 13 d4 43 e3 7b d1 ce 62 6b e3 
                58 85 ee 67 71 76 b6 48 78 a8 34 71 58 71 21 f8 
MK iterations:  6175
UUID:           14a0a11d-0890-433e-bdcb-d2d1f5281bc2

Key Slot 0: ENABLED
    Iterations:             26033
    Salt:                   a1 7b 2b 5b 3d 8c 3c d1 3b 57 61 5a df 25 47 c8 
                            29 97 62 09 08 2b e1 b2 af 61 56 80 2f af a6 ae 
    Key material offset:    8
    AF stripes:             4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

อย่างที่คุณเห็นการนับซ้ำของหมัดหมัด sha1 มาตรฐาน

ในการสลับไปที่การนับซ้ำสูงและแฮช sha512 โดยไม่ต้องเข้ารหัสใหม่เราจำเป็นต้องมีส่วนหัว LUKS ใหม่โดยใช้คีย์หลักเดียวกันรหัสตัวเลขเดียวกันและออฟเซ็ต payload เดียวกัน

การรับรหัสหลัก: (คำเตือน: ตัวอย่างนี้ปล่อยให้รหัสหลักของคุณไปยังไฟล์ที่อ่านได้ทั่วโลกไปยังรายการกระบวนการตลอดจนประวัติเชลล์ของคุณเพื่อความปลอดภัยให้ทำใน RAM / บน Live CD / อะไรก็ตาม)

# cryptsetup --dump-master-key luksDump /dev/shm/foobar

WARNING!
========
Header dump with volume key is sensitive information
which allows access to encrypted partition without passphrase.
This dump should be always stored encrypted on safe place.

Are you sure? (Type uppercase yes): YES
Enter passphrase: 
LUKS header information for /dev/shm/foobar
Cipher name:    aes
Cipher mode:    xts-plain64
Payload offset: 4096
UUID:           14a0a11d-0890-433e-bdcb-d2d1f5281bc2
MK bits:        256
MK dump:    eb aa 57 2d 42 93 fe 90 00 b9 d2 e0 e0 7b 73 26 
            4b 64 1b 8b 8e 61 75 84 1b c3 d6 f7 3f 03 d2 14 

# printf '\xeb\xaa\x57\x2d\x42\x93\xfe\x90\x00\xb9\xd2\xe0\xe0\x7b\x73\x26\x4b\x64\x1b\x8b\x8e\x61\x75\x84\x1b\xc3\xd6\xf7\x3f\x03\xd2\x14' > /dev/shm/masterkey
# hexdump -C /dev/shm/masterkey
00000000  eb aa 57 2d 42 93 fe 90  00 b9 d2 e0 e0 7b 73 26  |..W-B........{s&|
00000010  4b 64 1b 8b 8e 61 75 84  1b c3 d6 f7 3f 03 d2 14  |Kd...au.....?...|
00000020

สร้างส่วนหัว LUKS ใหม่โดยใช้คีย์นี้: (เป็นไปได้ที่ล้มเหลว - ทำการสำรองข้อมูลส่วนหัว LUKS เก่าของคุณก่อน!)

# cryptsetup --master-key-file=/dev/shm/masterkey --iter-time=5000 --hash=sha512 luksFormat /dev/shm/foobar

WARNING!
========
This will overwrite data on /dev/shm/foobar irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: 
Verify passphrase: 

และนี่คือสิ่งที่ดูเหมือนว่า:

# cryptsetup luksDump /dev/shm/foobar
LUKS header information for /dev/shm/foobar

Version:        1
Cipher name:    aes
Cipher mode:    xts-plain64
Hash spec:      sha512
Payload offset: 4096
MK bits:        256
MK digest:      47 ab 7b c6 41 b0 7c d8 af 3c a0 a4 23 e6 72 87 9c 0f c6 a0 
MK salt:        32 49 a5 b5 cb 4d 8a d7 25 69 72 ae e5 b2 9e 9d 
                14 09 00 1d 01 f3 c9 99 da e1 6c fc 69 78 e4 64 
MK iterations:  393750
UUID:           fd554ae8-a862-4609-8327-c6dd65ee9a83

Key Slot 0: ENABLED
    Iterations:             1578295
    Salt:                   e5 75 1c 1f 63 1d c6 0b d9 27 1a b1 27 85 b9 c1 
                            89 e8 57 95 2a c8 a0 24 9c 29 c0 f2 27 d7 2f 9a 
    Key material offset:    8
    AF stripes:             4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

ตอนนี้เรามีมัน รหัสเดียวกันชดเชย [ถ้าพวกเขาแตกต่างกันคุณต้องระบุพวกเขาพร้อมกับ luksFormat] แฮใหม่และจำนวนที่เหมาะสมของการทำซ้ำ

แต่เนื้อหายังอยู่ที่นั่นหรือ

# cryptsetup luksOpen /dev/shm/foobar foobar
Enter passphrase for /dev/shm/foobar: 
# strings /dev/mapper/foobar
Hello World I am LUKS

ไปแล้ว


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