luks2는 몇 개의 키를 지원합니까?

luks2는 몇 개의 키를 지원합니까?

luks1의 한도는 8입니다. 그런데 실수로 luks2에 슬롯 9개(0~8)를 추가했습니다. luks2의 한계가 무엇인지 알고 싶습니다.

Keyslots:
  0: luks2
        Key:        512 bits
        Priority:   normal
        Cipher:     aes-xts-plain64
        Cipher key: 512 bits
        PBKDF:      argon2i
        Time cost:  5
        Memory:     1048576
        Threads:    4
        Salt:       32 ff 35 1e a2 b5 64 a7 fe f9 6e 7d 12 75 75 d5 
                    a4 e7 47 39 80 96 1d 76 b1 35 b3 77 0a 85 46 ac 
        AF stripes: 4000
        AF hash:    sha256
        Area offset:32768 [bytes]
        Area length:258048 [bytes]
        Digest ID:  0
  1: luks2
        Key:        512 bits
        Priority:   normal
        Cipher:     aes-xts-plain64
        Cipher key: 512 bits
        PBKDF:      argon2i
        Time cost:  5
        Memory:     1048576
        Threads:    4
        Salt:       55 7b 9a 4c d8 53 2b bb 90 af 57 44 67 b5 0c 03 
                    85 a1 5d 70 e4 1e b0 5f 97 1a f3 0e f2 8c dc b2 
        AF stripes: 4000
        AF hash:    sha256
        Area offset:290816 [bytes]
        Area length:258048 [bytes]
        Digest ID:  0
  2: luks2
        Key:        512 bits
        Priority:   normal
        Cipher:     aes-xts-plain64
        Cipher key: 512 bits
        PBKDF:      argon2i
        Time cost:  5
        Memory:     1048576
        Threads:    4
        Salt:       ac 24 09 ca f9 24 52 3d 49 d3 c9 89 63 d0 1d 61 
                    83 4a aa ed 75 a2 39 ec 3f f8 ab 95 5d 0c 49 aa 
        AF stripes: 4000
        AF hash:    sha256
        Area offset:1064960 [bytes]
        Area length:258048 [bytes]
        Digest ID:  0
  3: luks2
        Key:        512 bits
        Priority:   normal
        Cipher:     aes-xts-plain64
        Cipher key: 512 bits
        PBKDF:      argon2i
        Time cost:  5
        Memory:     1048576
        Threads:    4
        Salt:       3d 37 41 20 93 44 55 62 c6 19 fe e0 7d ae 14 0d 
                    67 86 6a 44 5e c8 8a f0 97 01 1d c7 c6 83 02 22 
        AF stripes: 4000
        AF hash:    sha256
        Area offset:1323008 [bytes]
        Area length:258048 [bytes]
        Digest ID:  0
  4: luks2
        Key:        512 bits
        Priority:   normal
        Cipher:     aes-xts-plain64
        Cipher key: 512 bits
        PBKDF:      argon2i
        Time cost:  5
        Memory:     1048576
        Threads:    4
        Salt:       bf 6d a0 15 c9 8e 9b 49 12 84 86 6b 13 93 95 7d 
                    cf cf 8f 3a e2 b7 42 42 4c 59 a1 5c 23 cd e6 1a 
        AF stripes: 4000
        AF hash:    sha256
        Area offset:1581056 [bytes]
        Area length:258048 [bytes]
        Digest ID:  0
  5: luks2
        Key:        512 bits
        Priority:   normal
        Cipher:     aes-xts-plain64
        Cipher key: 512 bits
        PBKDF:      argon2i
        Time cost:  5
        Memory:     1048576
        Threads:    4
        Salt:       bd 76 ae e1 33 d3 7a 83 5b 59 d4 bc 46 17 36 ec 
                    e6 94 a5 b1 85 2d 00 9f a4 ff f4 02 cc b6 ca bc 
        AF stripes: 4000
        AF hash:    sha256
        Area offset:1839104 [bytes]
        Area length:258048 [bytes]
        Digest ID:  0
  6: luks2
        Key:        512 bits
        Priority:   normal
        Cipher:     aes-xts-plain64
        Cipher key: 512 bits
        PBKDF:      argon2i
        Time cost:  5
        Memory:     1048576
        Threads:    4
        Salt:       ab 7f dd e5 2c eb 32 51 97 9a 10 5e 70 75 1e 15 
                    91 35 10 63 f5 8b b6 8c 7a 97 16 40 50 e6 89 fb 
        AF stripes: 4000
        AF hash:    sha256
        Area offset:2097152 [bytes]
        Area length:258048 [bytes]
        Digest ID:  0
  7: luks2
        Key:        512 bits
        Priority:   normal
        Cipher:     aes-xts-plain64
        Cipher key: 512 bits
        PBKDF:      argon2i
        Time cost:  5
        Memory:     1048576
        Threads:    4
        Salt:       aa 02 fd a2 fd 4a ee 84 1a 41 93 58 7a 25 c2 d4 
                    0d 65 bc b4 5b 18 1a 05 4b 0a 81 f7 68 8c 9a 26 
        AF stripes: 4000
        AF hash:    sha256
        Area offset:548864 [bytes]
        Area length:258048 [bytes]
        Digest ID:  0
  8: luks2
        Key:        512 bits
        Priority:   normal
        Cipher:     aes-xts-plain64
        Cipher key: 512 bits
        PBKDF:      argon2i
        Time cost:  5
        Memory:     1048576
        Threads:    4
        Salt:       2b 04 62 29 e2 dc 42 b4 3a 28 8d 46 28 17 05 26 
                    a1 05 86 62 95 8e 50 98 91 67 18 15 71 1c 8a f9 
        AF stripes: 4000
        AF hash:    sha256
        Area offset:806912 [bytes]
        Area length:258048 [bytes]
        Digest ID:  0

답변1

LUKS1의 경우 8개의 키 홈이 고정되어 있습니다.

럭스 2의 경우,현재 최대 32개의 핵심 직책이 있습니다.:

#define LUKS2_KEYSLOTS_MAX       32

더 많은 결과를 추가하려고 하면 "모든 키 홈이 꽉 찼습니다."라는 오류 메시지가 나타납니다.

그러나 대답은 그렇게 간단하지 않을 수도 있습니다. 코드에는 32개의 제한이 있지만 코드에서는 전혀 언급되지 않습니다.LUKS2 디스크 포맷 사양.

LUKS2 헤더는 실제로 32개 이상의 키홈을 저장할 수 있습니다. 아니면 8개를 저장하지 못할 수도 있습니다. 이는 데이터 오프셋, 키 홈 영역의 크기 및 각 개별 키에 필요한 크기에 따라 다릅니다.

새로 포맷된 헤더의 경우 기본적으로 더 큰 데이터 오프셋이 설정되므로 32개의 키웨이를 쉽게 얻을 수 있습니다. LUKS1(2MiB 데이터 오프셋만)에서 변환하면 8개의 키웨이에서 변경되지 않습니다. 데이터 오프셋이 작은 경우 키홈이 8개 미만일 수 있습니다.

데이터 오프셋이 1MiB이면 3개의 키홈만 얻을 수 있습니다( cryptsetup경고).

# truncate -s 100M foobar.img
# cryptsetup luksFormat --offset=2048 foobar.img
WARNING: keyslots area (1015808 bytes) is very small,
available LUKS2 keyslot count is very limited.
# cryptsetup luksAddKey foobar.img 
# cryptsetup luksAddKey foobar.img 
# cryptsetup luksAddKey foobar.img 
No space for new keyslot.

이 특정 예에서는 헤더에 더 많은 키를 저장할 공간이 부족해지기 전에 3개의 키 슬롯만 사용할 수 있습니다.

# cryptsetup luksDump foobar.img
LUKS header information
Version:        2
Epoch:          5
Metadata area:  16384 [bytes]
Keyslots area:  1015808 [bytes]
[...]
Keyslots:
  0: luks2
    [...]
    Area offset:32768 [bytes]
    Area length:258048 [bytes]
    Digest ID:  0
  1: luks2
    [...]
    Area offset:290816 [bytes]
    Area length:258048 [bytes]
    Digest ID:  0
  2: luks2
    [...]
    Area offset:548864 [bytes]
    Area length:258048 [bytes]
    Digest ID:  0

여기서 사용 가능한 총 키홈 영역은 1015808바이트에 불과합니다. 각 키의 크기는 257048바이트입니다. 추가 키를 저장하려면 최소 1032192바이트가 필요하므로 이 특별한 경우에는 더 많은 키를 저장하는 데 적합하지 않습니다.

MiB 정렬에 신경 쓰지 않는다면 오프셋을 더 작게 만들고 키홈 하나만 남겨 둘 수 있습니다.

답변2

Luks2에는 Luks1처럼 고정된 키홈이 없습니다. 저장할 수 있는 개수는 다음에 따라 다릅니다.
* luks2-metadata-size(사양당 최대 4MB까지 예약 가능), 여기서 키 슬롯 정의는 다른 모든 메타데이터와 함께 저장됩니다(JSON 형식이므로 명시적인 키 영역 예약이 없음). 및 각각 키에 대한 절대적인 크기 요구 사항은 없습니다.
* luks2-keyslots-size(사양당 최대 128MB 유지), 키 슬롯의 실제 비밀번호 콘텐츠를 보유합니다. 여기서도 느슨한 구조이므로 특정 크기로 얻을 수 있는 키 수는 실제 슬롯 데이터에 따라 다릅니다.
계산해 보지는 않았지만 대부분의 경우 슬롯이 많을 것이라고 생각합니다.

관련 정보