Làm cách nào để thay đổi hàm băm và thời gian lặp của thiết bị LUKS dm-crypt hiện có?


11

Làm cách nào tôi có thể thay đổi hàm băm và thời gian lặp của thiết bị LUKS dm-crypt hiện có ?

Rõ ràng tôi có thể vượt qua các tùy chọn nếu tôi tạo một thiết bị mới , ví dụ như một cái gì đó như thế này:

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

Nhưng nếu thiết bị đã tồn tại, làm thế nào tôi có thể thay đổi ví dụ sha256để sha1hoặc thay đổi thời gian lặp lại mà không "phá hủy" các thiết bị. (Rõ ràng bạn sẽ phải nhập lại mật khẩu của mình vì hàm băm mới sẽ được tạo.)


Bạn không hiểu gì trong câu hỏi của tôi?
sinh viên

Có thể chỉ là tôi, nhưng tôi cho rằng thật bất lịch sự khi hỏi 1 câu Q ít nhất là tham khảo trang nam hoặc hướng dẫn hoặc thứ gì đó mà bạn đang cố gắng làm theo với các chi tiết cụ thể như cụ thể hash-spechoặc iter-timecài đặt cụ thể hơn.
slm

Tôi đoán rằng chúng tôi đã làm việc cùng nhau trước đây trên Q (và bạn thường đưa những chi tiết tuyệt vời vào chúng) và điều đó khiến tôi mất cảnh giác rằng lần này bạn không làm thế.
slm

Tôi không có thêm thông tin trong trường hợp này và không tìm thấy những gì tôi muốn trong trang nam ...
sinh viên

2
Cũng có đề cập đến một công cụ khác , cryptsetup-reencrypt. Danh sách dấu đầu dòng nghe giống như những gì bạn đang cố gắng thực hiện với tôi: "thay đổi các tham số mã hóa tùy ý".
slm

Câu trả lời:


6

Mỗi khe khóa có thời gian lặp lại riêng. Nếu bạn muốn thay đổi số lần lặp, hãy tạo một vị trí mới có cùng cụm mật khẩu và số lần lặp mới, sau đó xóa vị trí cũ.

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

Tôi nghĩ rằng thuật toán băm không thể được cấu hình trên mỗi vị trí, nó luôn là PBKDF2 với hàm băm được chọn trên toàn cầu.

Các phiên bản gần đây của cryptsetup bao gồm một công cụ cryptsetup-reencrypt, có thể thay đổi khóa mã hóa chính và tất cả các tham số, nhưng nó được coi là thử nghiệm (và nó khởi động lại toàn bộ thiết bị mặc dù điều này không cần thiết chỉ thay đổi chức năng phái sinh khóa dựa trên mật khẩu) .


9

Nếu tất cả những gì bạn muốn thay đổi là hàm băm, không cần phải mã hóa lại. Bạn vẫn phải xây dựng một tiêu đề LUKS mới mặc dù. Cùng một mật mã, cùng khóa chính, cùng bù, băm khác nhau.

Bạn có thể thử điều này cho chính mình. Đầu tiên chúng tôi thiết lập một thiết bị LUKS với các cài đặt tiêu chuẩn và số lần lặp tệ hại:

# 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

Tại thời điểm này, chúng tôi có một thiết bị LUKS với dữ liệu được mã hóa "Xin chào thế giới tôi là LUKS". Đặc biệt nó trông như thế này:

# 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

Như bạn có thể thấy, số lần lặp tệ hại, băm sha1 tiêu chuẩn.

Để chuyển đổi sang số lần lặp cao và hàm băm sha512, mà không cần mã hóa lại, chúng ta cần một tiêu đề LUKS mới sử dụng cùng khóa chính, cùng mật mã và cùng một tải trọng bù.

Lấy khóa chính: (Cảnh báo: ví dụ này rò rỉ khóa chính của bạn vào một tệp có thể đọc được trên thế giới, vào danh sách quy trình, cũng như lịch sử của trình bao của bạn. Để an toàn, hãy thực hiện trong RAM / trên CD Live / bất cứ điều gì)

# 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

Tạo tiêu đề LUKS mới bằng khóa này: (thất bại là có thể - trước tiên hãy tạo bản sao lưu của tiêu đề LUKS cũ của bạn!)

# 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: 

Và đây là những gì nó trông giống như:

# 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

Bây giờ chúng tôi có nó. Cùng một mật mã, offset [nếu chúng khác nhau, bạn phải chỉ định chúng cùng với luksFormat], hàm băm mới và số lần lặp thích hợp.

Nhưng nội dung vẫn còn đó chứ?

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

Có bạn đi.


6
cryptsetup-reencrypt --keep-key --hash sha512làm điều tương tự
frostschutz
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.