
메모리 제한으로 인해 Raspberry PI에서 LUKS 파티션 중 하나를 열 수 없습니다. 나는 이미 이 경우의 제안이 다음과 같다는 것을 알았습니다.액세스할 가장 느린 장치에서 파티션을 다시 생성합니다.(이 경우에는 라즈베리 PI).
그러나 보안 수준이 저하될 수 있다는 점이 우려됩니다(아마도 컴퓨팅 성능이 낮을수록 더 약한 키가 사용됩니다).
이 문제에 대해 cryptsetup의 문서에 나와 있는 내용은 다음과 같습니다.
참고: 암호 반복은 CPU 성능에 따라 cryptsetup에 의해 결정됩니다. 느린 장치에서는 이 값이 원하는 것보다 낮을 수 있습니다. 최근에 Raspberry Pi에서 이것을 벤치마킹했는데 일반 PC 반복 횟수의 약 1/15로 나왔습니다. 보안이 가장 중요하다면 나중에 잠금 해제 속도가 느려지는 대신 반복에 소요되는 시간을 늘리는 것이 좋습니다. 라즈베리 파이의 경우 다음을 사용합니다.
cryptsetup luksFormat -i 15000 <target device>
암호 반복 및 마스터 키 반복에 대해 평균 PC와 동일한 반복 횟수 및 보안 수준을 제공합니다. 의심스러운 경우 다음을 사용하여 반복 횟수를 확인하세요.
cryptsetup luksDump <target device>
요구 사항이 충족될 때까지 다른 반복 시간('-i' 뒤의 숫자는 밀리초 단위의 반복 시간)으로 컨테이너를 다시 생성하여 이에 따라 반복 횟수를 조정합니다.
이제 위의 조언을 따른다면 어떤 일이 일어날지 잘 모르겠습니다.
- 파티션이 PC만큼 안전할까요?(반복 횟수가 올바른 경우), 단지 느린가요?
- 속도가 느린 경우 잠금 해제만 느린가요, 아니면 나중에 읽기/쓰기가 추가 반복 없이도 빠른가요? (그렇다면 그 이유는 무엇입니까? 잠금을 해제함으로써 나중에 파티션의 콘텐츠를 해독하는 데 사용될 키만 해독하기 때문입니까?)
- 그래도 빠른 PC에서 생성된 파티션보다 메모리를 덜 소모합니까? (즉, Raspberry PI에서 사용할 수 있도록 파티션을 다시 만들고 싶습니다. 기본값을 사용하면 사용할 수 있지만 보안 수준이 떨어집니다. 반복 횟수를 늘려도 계속 사용할 수 있습니까, 아니면 또 메모리를 너무 많이 소모하나요?)
답변1
먼저 읽고 있는 LUKS 문서는 LUKS1용으로 작성되었으며 현재는 다소 오래된 것입니다. 인용한 모든 것(예: 반복 횟수)은 PBKDF2 알고리즘에만 해당됩니다.실제로는 사용하지 않습니다.
LUKS2는 암호 문구를 키로 변환하는 두 가지 알고리즘, 즉 기존 PBKDF2와 최신 Argon2를 지원합니다. 후자는 현재 LUKS가 기본적으로 사용하는 것이며 필요한 최소 메모리 양이 (조정 가능한) 있는 유일한 것입니다. 이는 "반복 횟수"와는 다릅니다.
그러나 보안 수준이 저하될 수 있다는 점이 우려됩니다(아마도 컴퓨팅 성능이 낮을수록 더 약한 키가 사용됩니다).
키 강도를 조정하는 것이 아니라 키의 강도를 조정하는 것입니다.보호.
귀하가 조정하는 매개변수는 귀하가 입력하는 암호를 공격하려는 누군가로부터 보호하기 위한 것입니다. 즉, 키 파생 프로세스를 엄청나게 느리게 만들어서 무차별 대입 공격(즉, 연속적으로 다양한 암호를 시도하는 것)을 방지합니다.
그러나 생성된 키는 그 자체로 항상 동일하게 강력하며(다른 AES 키만큼 우수함) 누구도 이를 직접 공격하지 않습니다.
속도가 느린 경우 잠금 해제만 느린가요, 아니면 나중에 읽기/쓰기가 추가 반복 없이도 빠른가요? (그렇다면 그 이유는 무엇입니까? 잠금을 해제함으로써 나중에 파티션의 콘텐츠를 해독하는 데 사용될 키만 해독하기 때문입니까?)
볼륨 잠금을 해제할 때마다 LUKS는 "키 파생 기능"(KDF)을 사용하여 암호 문구를 암호화 키로 변환하므로 프로세스가 무차별 대입 공격에 더욱 강해집니다. LUKS1은 항상 계산 속도가 느리다는 의미이지만(메모리 요구 사항은 부과하지 않음) LUKS2는 대신 특정 양의 RAM이 필요한 'Argon2'를 추가로 지원합니다.
키 파생은 잠금 해제 시 한 번만 발생합니다. 나머지(실제 데이터 암호화)에는 암호가 전혀 필요하지 않습니다.
(즉, Raspberry PI에서 사용할 수 있도록 파티션을 다시 만들고 싶습니다. 기본값을 사용하면 사용할 수 있지만 보안 수준이 떨어집니다. 반복 횟수를 늘려도 계속 사용할 수 있습니까, 아니면 또 메모리를 너무 많이 소모하나요?)
암호 파생 키도 데이터를 직접 암호화하는 데 사용되지 않으므로 파티션을 전혀 다시 만들 필요가 없습니다.주인LUKS 볼륨 헤더에 저장된 키입니다.
이것이 바로 전체 디스크를 다시 암호화할 필요 없이(또는 여러 개의 암호를 가질 필요 없이) 암호를 빠르게 변경할 수 있는 이유이며, 마찬가지로 LUKS를 사용하면 KDF 매개변수를 쉽게 변경할 수 있습니다.
기본 Argon2 매개변수가 너무 많은 메모리를 사용하는 경우 LUKS에 다음과 같이 알려주십시오.
cryptsetup luksConvertKey --pbkdf "argon2i" --pbkdf-memory <num_kilobytes> <device>
Argon2를 전혀 사용할 수 없는 경우에도 LUKS에 대신 PBKDF2를 사용하도록 지시할 수 있습니다.
cryptsetup luksConvertKey --pbkdf "pbkdf2" --iter-time <milliseconds> <device>
밀리초(장치에 따라 다름) 대신 PBKDF2의 수를 직접 지정할 수 있습니다.반복원하는 것(어떤 장치에서 수행하든 항상 동일한 결과를 제공함) - PC의 기본값은 대략 백만 정도입니다.
cryptsetup luksConvertKey --pbkdf "pbkdf2" --pbkdf-force-iterations <count> <target>
(암호를 변경할 때) 동일한 옵션이 허용됩니다 luksChangeKey
. 실제로는필요암호를 변경할 때마다 지정됩니다.