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

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

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

분명히 하나를 만들면 옵션을 전달할 수 있습니다새로운장치 예:

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

그러나 장치가 이미 존재하는 경우 장치를 "중단"하지 않고 반복 시간을 변경 sha256하거나 변경할 수 있는 방법은 무엇입니까? sha1(물론 새로운 해시가 생성되므로 비밀번호를 다시 입력해야 합니다.)

답변1

해시만 변경하려는 경우에는 다시 암호화할 필요가 없습니다. 그러나 여전히 새로운 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

그러면 그렇게 해.

답변2

각 키웨이에는 고유한 반복 시간이 있습니다. 반복 횟수를 변경하려면 동일한 비밀번호와 새 반복 번호로 새 슬롯을 만든 다음 이전 슬롯을 삭제하세요.

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

해싱 알고리즘은 슬롯별로 구성할 수 없으며 항상 전역적으로 선택된 해시 함수를 사용하는 PBKDF2입니다.

최신 버전의 cryptsetup마스터 암호화 키와 모든 매개변수를 변경할 수 있는 도구가 포함되어 있지만 cryptsetup-reencrypt이는 실험적인 것으로 간주됩니다(비밀번호 기반 키 파생 기능을 변경하는 데 꼭 필요한 것은 아니지만 전체 장치를 다시 암호화합니다).

관련 정보