VeraCrypt 및 LUKS는 데이터 손상에 대해 볼륨을 얼마나 탄력적으로 복원합니까?


19

질문에 부분적으로 대답했지만 여전히 내가 정확히 찾고있는 것은 아닙니다. 업데이트 1 다운 참조

VeraCrypt 및 LUKS를 사용하여 일부 파일 시스템을 암호화 할 계획이지만 단일 문제가 발생하면 파티션을 다시 마운트 할 수 없으므로 그 안에 저장된 모든 데이터가 손실 될 수 있습니다. (섹터 / 블록 손상, 쓰기 작업 중 정전, 파일 시스템 오류 등으로 인해)

또한 VeraCrypt는 TrueCrypt의 수리 도구를 분리했을 수도 있지만 실제로는 이에 의존하지 않고 실제 사례에 대해 더 많이 찾고 있습니다.

또한 RAID 및 백업 / 볼트에 대해서도 알고 있지만 원하는 것은 아닙니다.

따라서 질문은 : VeraCrypt 및 LUKS를 사용하여 암호화 된 파티션 자체는 얼마나 탄력적입니까?

업데이트 1 :

내 질문은 마스터 키, 메타 데이터 또는 헤더를 저장하는 것이 아니라 암호화 된 파티션과 데이터의 복원력에 대한 것입니다. 문제는 견고한 7zip 아카이브와 유사합니다. 중간에 단일 비트가 손상되면 전체 아카이브가 손실됩니다.

암호화 된 파티션은 취약합니까? (마스터 키, 메타 데이터 및 헤더 제외)

추신 : 바로 대답하지 않으면 죄송합니다. 전 세계에서 일하고 여행하고 있습니다. 따라서이 게시물과 관련이 있으며 시간이 많이 걸리는 비즈니스에 종종 직면합니다. 그러나 확실히 답할 것입니다.

답변:


13

실제로 마스터 키와 메타 데이터를 올바르게 백업하기 만하면 암호화없이 거의 탄력적으로 복구 할 수 있습니다 .

메타 데이터 외에도 손상은 손상된 비트의 블록에만 영향을 미치며 대부분 16 비트입니다.

암호 및 Veracrypt / LUKS와 같은 키와 도구를 사용하여 대부분의 데이터 손상 상황에서는 암호화 된 디스크를 일상적으로 사용하는 것처럼 암호화되지 않은 디스크와 동일한 액세스 권한을 갖습니다. 암호화는 평소보다 추가 단계 (암호화 된 파티션 열기) 만 추가합니다. 따라서이 경우 암호화되지 않은 데이터처럼 작동합니다.

Veracrypt 또는 Luks를 사용하면 마스터 키를 디스크에 저장해야합니다.이 키는 암호로 암호화됩니다. 이 섹터를 손상 시키면 영구적 인 데이터 손실이 발생할 수 있습니다. 이는 마스터 키 백업 (크기가 몇 킬로바이트)으로 쉽게 해결할 수 있으며 두 소프트웨어로 쉽게 수행 할 수 있으며 모든 사람에게 권장됩니다.

비 메타 데이터에 대한 세부 사항

Veracrypt와 Luks는 현재 XTS를 사용합니다. 이 모드에서는 모든 블록에 대한 키가 계산됩니다. 간단히 말해서, 블록을 암호화 i하려면 마스터 키와 블록 번호로 생성 된 키를 사용하십시오. 따라서 한 블록의 암호화는 다른 블록과 독립적입니다. 일부 정보가 손상되면 해당 블록으로 제한됩니다.

XTS에서는 블록을 하위 블록 (일반적으로 16 바이트)으로 나누고 키를 만들고 해당 하위 블록을 암호화합니다. 즉, 비트를 변경하면이 16 바이트 만 영향을받습니다.

테스트와 마찬가지로 Luks 볼륨에서 단일 비트를 변경하면 원본 파일의 16 바이트가 횡설수설로 바뀌지 만 나머지 496은 변경되지 않습니다. 7zip 파일에서는 스트림 방법을 사용하여 모든 바이트가 연결되므로 한 바이트 변경이 나머지 모든 바이트에 영향을 미칩니다. 여기에는 해당되지 않습니다.

암호화 된 데이터 만 비교하여 일반 텍스트를 변경할 때 언제 어디서나 16 바이트의 정밀도로 알 수 있듯이 일부는이 문제를 고려합니다.

이에 대한 더 흥미로운 정보는 다음 링크에서 찾을 수 있습니다.

/crypto/6185/what-is-a-tweakable-block-cipher

/security/39306/how-secure-is-ubuntus-default-full-disk-encryption

https://en.wikipedia.org/wiki/Disk_encryption_theory

마스터 키에 대한 세부 사항

럭스

LUKS는 파티션 (또는 디스크)의 시작 부분에 메타 데이터, 암호화 방법, 기타 매개 변수 및 8 개의 키 슬롯을 저장하는 몇 개의 섹터를 가지고 있습니다. 디스크 암호화 및 암호 해독을 위해 LUKS 컨테이너를 만들 때 생성되는 큰 난수 인 마스터 키를 사용합니다 . 암호를 저장하기 위해 암호를 통해 암호 해시 기능을 여러 번 반복하고 해당 슬롯에 대한 특정 키를 생성하여 암호로 마스터 키를 암호화합니다. 동일한 디스크에 대해 8 개의 서로 다른 암호를 가질 수 있습니다. 각 암호는 슬롯에서 다른 암호로 마스터 키를 암호화합니다. 암호를 변경하면 마스터 키를 암호화하고 모든 파티션을 변경하지 않는 것처럼 간단합니다.

따라서이 슬롯과 메타 데이터가 손상되면 실제로 해독하는 데 사용되는 마스터 키를 복구 할 수 없으므로 디스크의 모든 데이터가 손실됩니다. 이것은 모든 데이터를 빠르게 파괴하는 쉬운 방법입니다. 그러나 볼륨 헤더의 백업이 있으면 복구하기가 쉽습니다.

아래는 https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#6-backup-and-data-recovery 에서 추출한 백업에 대한 LUKS FAQ 사본입니다.

6.2 LUKS 헤더를 어떻게 백업합니까?

LUKS 파티션의 시작 부분에서 적절한 바이트 수만 복사 할 수 있지만 가장 좋은 방법은 cryptsetup의 "luksHeaderBackup"명령 옵션을 사용하는 것입니다. 이는 비표준 매개 변수가 LUKS 파티션 작성에 사용 된 경우 오류로부터 보호합니다. 예:

cryptsetup luksHeaderBackup --header-backup-file <file> <device>

복원하려면 inverse 명령, 즉

cryptsetup luksHeaderRestore --header-backup-file <file> <device>

복원 할 헤더가 확실하지 않으면 현재 헤더를 먼저 백업하십시오! 다음과 같이 분리 된 헤더에 --header 옵션을 사용하여 헤더 파일을 복원하지 않고 테스트 할 수도 있습니다.

cryptsetup --header <file> luksOpen <device> </dev/mapper/ -name>

그것이 키 슬롯을 잠금 해제하면 좋습니다. 장치를 다시 닫는 것을 잊지 마십시오.

상황에 따라 (손상된 헤더) 실패합니다. 그런 다음 다음 단계를 사용하십시오.

먼저 마스터 키 크기를 결정하십시오.

cryptsetup luksDump <device>

형태의 라인을 제공합니다

MK bits:        <bits>

이전 기본값은 256이고 새 기본값은 512입니다. 256 비트는 총 헤더 크기가 1'052'672 바이트이고 512 비트는 2MiB 중 하나입니다. (항목 6.12 참조) luksDump가 실패하면 2MiB를 가정하지만 복원하면 파일 시스템의 첫 1M 정도를 복원 할 수도 있습니다. 헤더 크기를 결정할 수 없으면 파일 시스템을 변경하지 마십시오! 이를 통해 너무 큰 헤더 백업을 복원하는 것이 여전히 안전합니다.

둘째, 헤더를 파일로 덤프하십시오. 여러 가지 방법이 있으며 다음을 선호합니다.

head -c 1052672 <device>  >  header_backup.dmp

또는

head -c 2M <device>  >  header_backup.dmp

2MiB 헤더 용. 덤프 파일의 크기를 확인하십시오. 이러한 백업을 복원하려면 luksHeaderRestore를 시도하거나보다 기본적인 작업을 수행하십시오

cat header_backup.dmp  >  <device>

Veracrypt

Veracrypt는 LUKS와 유사합니다. Truecrypt와 함께 사용하지 않았지만 일반적인 아이디어는 유지됩니다.

Veracrypt에는 하나의 키 슬롯 만 있으므로 동시에 둘 이상의 암호를 가질 수 없습니다. 그러나 숨겨진 볼륨을 가질 수 있습니다. 파티션 (또는 디스크 또는 파일) 끝에 메타 데이터를 저장합니다. 숨겨진 볼륨에는 다른 마스터 키가 있으며 파티션의 끝을 겹친 공간으로 사용합니다. 백업해야한다는 생각은 동일합니다. 이 작업은 Tools -> Backup Volume Headerand 로 수행 할 수 있습니다 Tools -> Restore Volume Header. 시스템 암호화를 사용하면 키 백업으로 부팅 가능한 디스크를 만들어 손상이 발생한 경우 Truecrypt 로더와 키를 복구했습니다. 그것은 무엇이든 암호화하기 전에 완료되며, 내가 아는 한 Veracrypt는 계속 같은 방식으로 수행합니다.

자세한 내용은이 링크를 참조하십시오 https://veracrypt.codeplex.com/wikipage?title=Program%20Menu

백업 키에 대한 보안 고려 사항

예를 들어, 유출 된 비밀번호가 있고 볼륨 비밀번호를 새롭고 강력하고 안전한 비밀번호로 변경하더라도 백업에 액세스 할 수있는 사람은 여전히 ​​이전 비밀번호로 파일을 해독 할 수 있습니다. 백업은 기본적으로 (이전) 암호로 암호화 된 마스터 키입니다. 따라서 비밀번호를 변경할 때 새 백업을 만들고 이전 비밀번호를 파기해야합니다. 그리고 데이터를 영구적으로 파괴하는 것은 매우 까다로울 수 있습니다.

해당 비밀번호로 보유한 모든 백업에 대해 해당 비밀번호로 데이터를 해독 할 수있는 방법입니다. 예를 들어 회사와 같은 "Universal Password"를 사용하여 백업하고 다른 암호로 변경하는 등 Veracrypt에서 사용할 수 있습니다. 그래서 IT 부서. 누군가 비밀번호를 잊어 버린 경우에도 해당 볼륨에 대한 액세스를 복구 할 수 있습니다 (마스터 비밀번호라고 생각하지만 이전의 마스터 키와 혼동하지 마십시오).

최종 생각 (TL; DR)

마스터 키를 사용하여 특정 섹터를 손상시킬 가능성은 전체 디스크 장애가 발생할 가능성보다 적습니다. 따라서이 데이터가 중요한 경우 볼륨 헤더 (마스터 키) 대신 백업해야합니다.

또한 데이터 손상이 거의 발생하지 않아 (16 바이트) 대부분의 사용에 적합합니다.

따라서 파티션 또는 디스크 중간에 불량 블록이 있으면 해당 블록에만 영향을줍니다. 그리고 섹터의 몇 비트 오류는 해당 섹터로 제한되며 총 512 바이트 섹터에도 영향을 미치지 않습니다.

업데이트 (23/01/2017) : OP 의견을 기반으로 추가 정보를 추가하십시오.


1
와우, 그것은 매우 광범위하고 유익한 답변이었습니다. 대단히 감사합니다! 그러나 제 질문은 마스터 키와 메타 데이터가 아니라 암호화 된 파티션과 데이터 자체의 복원력에 관한 것입니다. 문제는 견고한 7zip 아카이브와 유사합니다. 중간에 단일 비트가 손상되면 전체 아카이브가 손실됩니다. 암호화 된 파티션이 동일하게 작동합니까? (마스터 키 및 메타 데이터 제외)
X.LINK

4

VeraCrypt / TrueCrypt 컨테이너의 복원력에 대한 정보를 아래에 정리했습니다.

에서 Veracrypt 데이터 손상 :

TC / VC는 볼륨 헤더를 볼륨 시작과 끝의 두 곳에 저장합니다. 시작시 하나가 기본이고 끝에 하나는 백업입니다. 이 메커니즘은 일반적으로 드라이브의 일부가 손상되었거나 로컬에 손상되어 액세스 할 수 있도록하기에 충분합니다. 드라이브의 시작과 끝 모두에 손상이 발생하면 드라이브가 거의 죽었을 것입니다.

드라이브가 손상되거나 손상된 경우 암호화를 사용하지 않을 때와 동일한 데이터 손실이 발생합니다. 이는 볼륨을 마운트 할 수 있어도 읽은 데이터가 손상 될 수 있음을 의미합니다. 따라서 암호화는 데이터 손상으로부터 보호하지 않으므로 항상 데이터 백업에 대해 생각하십시오.

로부터 VeraCrypt 자주 묻는 질문 :

VeraCrypt 볼륨의 일부가 손상되면 어떻게됩니까?

암호화 된 데이터에서 하나의 손상된 비트는 일반적으로 발생한 전체 암호문 블록을 손상시킵니다. VeraCrypt에서 사용하는 암호문 블록 크기는 16 바이트 (즉, 128 비트)입니다. VeraCrypt에서 사용하는 작동 모드는 블록 내에서 데이터 손상이 발생하더라도 나머지 블록은 영향을받지 않습니다.

VeraCrypt 볼륨의 암호화 된 파일 시스템이 손상되면 어떻게해야합니까?

VeraCrypt 볼륨 내의 파일 시스템은 암호화되지 않은 일반 파일 시스템과 같은 방식으로 손상 될 수 있습니다. 이 경우 운영 체제와 함께 제공된 파일 시스템 복구 도구를 사용하여 문제를 해결할 수 있습니다. Windows에서는 'chkdsk'도구입니다. VeraCrypt는 VeraCrypt 볼륨에서이 도구를 사용하는 쉬운 방법을 제공합니다. 기본 VeraCrypt 창 (드라이브 목록에 있음)에서 마운트 된 볼륨을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 '파일 시스템 복구'를 선택하십시오.

작은 데이터 손상은 로컬에 영향을 미쳐 전체 컨테이너를 파괴하지 않습니다. 그러나 복구가 더 복잡해질 수 있으므로 전체 볼륨 / 파티션, 특히 시스템 드라이브를 암호화하지 않는 것이 좋습니다. 특히 볼륨 헤더의 경우 백업을 잘 수행하십시오. 실제 디스크 나 폴더와 마찬가지로 디스크 / 파일 헤더가 손상되면 데이터 복구가 어려워지고 고급 유틸리티가 필요할 수 있습니다.

LUKS에는 디스크에 두 번째 헤더가 없으므로 백업 유지에 대해 더욱주의해야합니다.


나는 그것들을 읽었지만 여전히 약간 혼란 스럽습니다. 컨테이너 내부의 컨테이너 헤더 및 파일 시스템을 통한 복구 외에도 컨테이너 자체의 불량 섹터가 완전히 죽어 마운트를 불가능하게하지는 않습니까? 내가 올바르게 이해할 수 있듯이, 암호문 블록은 솔리드가 아닌 7-zip 아카이브 / 암호화되지 않은 ext3 내부에서도 여전히 물리적으로 불량 섹터가 있습니까?
X.LINK

암호화 된 볼륨을 말할 수는 없지만 암호화 된 암호문에서 단일 비트를 변경하면 전체 블록에 대한 가비지가 발생합니다. 블록 크기는 128 바이트 또는 256 바이트 또는 4kb 일 수 있습니다. 나머지 암호문이 해독되는 것을 막지는 않습니다. 암호화 알고리즘이 가비지를 잘못 알 수있는 방법은 없습니다. 체크섬 또는 아무것도 없습니다 (AES-CBC 용). 해당 블록이 텍스트 파일 안에 있으면 메모장의 쓰레기처럼 보일 것입니다. 디렉토리 구조의 일부인 경우 파일 시스템이 왜곡되어 표시됩니다 chkdsk.
Chloe

@ X.LINK : 잘못된 비트는 16 바이트의 "섹터"전체를 손상시킵니다. 해당 섹터의 위치에 따라 사용되지 않는 영역에 빠지거나 파일의 해당 위치에 쓰레기가 있거나 최악의 경우 복구 유틸리티를 사용해야하는 잘못된 디렉토리 구조 인 경우 결과는 아무 것도 아닙니다. 이것은 사용하지 않은 섹터, 파일 데이터 및 디스크 테이블이있는 실제 디스크와 매우 유사하며 백업은 유사한 지침을 따라야합니다.
harrymc

0

사람들이 제공 한 모든 답변 덕분에 최종 답변은 100 % 완성되었습니다.

요즘 시간이별로 없어서 나중에 "자신의"답변을 편집하겠습니다. 사람들이 여기에 준 모든 대답이 완전히 유용하기 때문에 이것은 그들이 말한 내용과 내 발견 사항을 요약 한 것입니다.

어쨌든, 여기에 내가 만난 많은 혼란을 초래할 수있는 나의 발견 중 하나가 있습니다.

https://sockpuppet.org/blog/2014/04/30/you-dont-want-xts/

또한 여기에서 일에 대해 이야기하고 '차단'혼동을 피하는 "표준"방법을 찾을 수 있습니다.

/superuser/1176839/what-are-every-possible-names-of-hard-drives-structure-parts

간단히 말해서 단어 "400"을 포함하는 암호화 된 블록을 "800"으로 변경할 수 있습니다. 이것은 암호화 된 블록 레벨 계층이 "일반 파일 시스템처럼 작동 할 것"(즉 Veracrypt FAQ)을 믿지 않고 완전히 단단하지 않다는 것을 의미합니다.

또한 두 달 전에 그 링크를 우연히 발견했을 것입니다.

/unix/321488/full-image-of-internal-hdd-drive-dd-dd-rescue-with-truecrypt-bad-sectors/

VeraCrypt는 TrueCrypt의 포크이므로 확실히 동일하게 작동합니다.

추신:

추가 답변은 계속 환영하며 "자신의"답변에 추가됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.