기존 dm-crypt LUKS 장치의 해시 사양 및 반복 시간을 변경하는 방법은 무엇입니까?


11

기존 dm-crypt LUKS 장치 의 해시 사양 및 반복 시간을 어떻게 변경할 수 있습니까?

장치를 만들면 옵션을 전달할 수 있습니다. 예를 들면 다음과 같습니다.

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

그러나 장치가 이미 존재하면 예 sha256를 들어 sha1장치를 "파기"하지 않고 반복 시간을 변경하거나 변경할 수 있습니다 . 새 해시가 생성되므로 분명히 암호를 다시 입력해야합니다.


내 질문에서 무엇을 이해하지 못합니까?
학생

나만 있을지 모르지만 적어도 맨 페이지 나 자습서 또는 더 구체적 으로 무엇인지 hash-spec또는 iter-time설정 과 같은 세부 사항을 따르려고하는 것을 언급하지 않고 1 문장 Q를 묻는 것이 무례하다고 생각합니다 .
slm

나는 우리가 Q에 대해 함께 일한 적이 있다고 생각합니다.
slm

이 경우에는 더 많은 정보가없고 맨 페이지에서 원하는 것을 찾지 못했습니다 ...
학생

2
또한이 다른 도구의 언급은 , cryptsetup-reencrypt. 글 머리 기호 목록은 "임의 암호화 매개 변수 변경"과 같이 시도한 것과 같습니다.
slm

답변:


6

각 키 슬롯에는 자체 반복 시간이 있습니다. 반복 횟수를 변경하려면 동일한 암호 구와 반복 횟수를 사용하여 새 슬롯을 만든 다음 이전 슬롯을 제거하십시오.

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

해시 알고리즘은 슬롯 당 구성 할 수 없다고 생각합니다. 전 세계적으로 선택된 해시 기능을 갖춘 PBKDF2입니다.

최신 버전의 cryptsetup 에는 cryptsetup-reencrypt기본 암호화 키와 모든 매개 변수를 변경할 수 있는 도구가 포함되어 있지만 실험적인 것으로 간주됩니다 (암호 기반 키 파생 함수를 변경하는 데 필요하지는 않지만 전체 장치를 다시 암호화합니다) .


9

변경하려는 모든 것이 해시이면 다시 암호화 할 필요가 없습니다. 그래도 새 LUKS 헤더를 작성해야합니다. 동일한 암호, 동일한 마스터 키, 동일한 오프셋, 다른 해시

직접 시도해보십시오. 먼저 표준 설정과 반복 횟수가 많은 LUKS 장치를 설정합니다.

# 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

이 시점에서 암호화 된 데이터 "Hello World I am LUKS"가있는 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 헤더가 필요합니다.

마스터 키 얻기 : (경고 :이 예에서는 마스터 키를 세계가 읽을 수있는 파일, 프로세스 목록 및 셸 기록으로 유출합니다. 안전을 위해 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.