듀얼 부팅 SSD 드라이브를 완전히 암호화할 수 있는 솔루션을 찾고 있습니다(아직 새 제품이고 비어 있어서 드라이브에 무엇이든 넣기 전에 암호화를 설정하고 싶습니다).
이 문제에 대해 온라인상에서 많은 혼란이 있지만, 추가 부팅 디스크에서 TrueCrypt의 부트 로더를 사용해야 할 수도 있지만 TrueCrypt가 이 작업을 수행할 수 있을 것으로 보입니다. 나는 일부 Linux 도구(일부 수정된 GRUB2 버전 포함)에서도 이 작업을 수행할 수 있다는 것을 알고 있습니다.
그러나 나는 의심이 들며 내가 읽은 기사는 기본적인 질문에 답할 만큼 깊이 있지 않습니다. 전체 디스크가 암호화되었고 일부 사전 부팅 도구에서 사용자에게 암호 해독 키를 제공하도록 요구했다면 어떻게 될까요? 그렇지 않을까? 도구가 실행되는 운영 체제에서 실행되어야 한다는 의미인가요? 즉, 운영 체제가 보는 디스크가 실제로 암호화되어 있다는 사실을 알지 못하게 할 수 있는 도구가 있습니까?
그러한 도구가 없다면, 이는 암호 해독 도구가 시작 시 암호 해독 정보를 운영 체제에 전달해야 함을 의미합니까? 크로스 플랫폼을 구현하는 것은 어려울 것이라고 생각합니다.
답변1
전체 디스크가 암호화되어 있고 일부 사전 부팅 도구에서 사용자가 디스크의 암호를 해독하려면 키를 제공해야 하는 경우 도구가 부팅되는 운영 체제에서 실행되어야 한다는 의미입니까?
네, 거의요.하드웨어 기반 전체 디스크 암호화수행 방법: 암호화는 장치(하드 드라이브/플래시)에 의해 완전히 처리되거나 가능하면 물리적 장치에 대한 체인의 컨트롤러에서 처리되며 운영 체제에는 "표시"되지 않습니다.
이를 통해 OS는 암호화되지 않은 일반적인 장치와 마찬가지로 I/O 작업을 처리하며 하드웨어(및/또는 펌웨어 - 어쨌든 OS "아래")에서 마법 같은 일이 발생합니다.
그러한 도구가 없다면, 이는 암호 해독 도구가 시작 시 암호 해독 정보를 운영 체제에 전달해야 함을 의미합니까?
암호화가 운영 체제 "아래"에서 수행될 수 없는 경우(위에서 언급한 것처럼 또는 가상화 기술을 사용하지만 두 개 이상의 운영 체제를 실행할 수 있음) 실제로 어떤 형태로든 정보 전송이 있어야 합니다. . 예, 이는 교차 운영 체제가 어렵다는 것을 의미합니다.
하드웨어/펌웨어 도움말이 없으면 암호화되지 않은 부트로더 코드(적어도 부트로더)도 필요합니다.
위키피디아디스크 암호화기사에는 이에 대한 자세한 내용이 있습니다.
답변2
암호화된 드라이브를 지원하는 하드웨어(더 정확하게는 펌웨어, BIOS)가 있는 경우 펌웨어를 사용하여 전체 디스크를 암호화할 수 있습니다. 여기에는 단점이 있습니다. 주변에 디스크 암호화를 지원하는 컴퓨터가 많지 않으며 이로 인해 특정 펌웨어에 연결됩니다. 더 나쁜 것은 컴퓨터에 TPM이 있고 암호화 키가 TPM에 있는 경우 특정 펌웨어에 연결됩니다. 펌웨어)(스토리지 암호화 키를 백업하지 않은 경우).
운영 체제가 암호화된 경우 운영 체제의 초기 부분을 저장하기 위해 디스크에 암호화되지 않은 작은 공간이 있어야 합니다. Linux의 일반적인 구성은 단일 일반 텍스트 /boot
파티션을 갖고 다른 모든 파티션을 암호화하는 것입니다. "전체 디스크 암호화"는 약간 잘못된 이름입니다. 볼륨이 일반적으로 디스크가 아닌 파티션인 "전체 볼륨 암호화"를 의미하는 데 자주 사용됩니다. 전체 디스크 암호화는 각 파일(또는 최소한 디렉터리 트리)을 개별적으로 암호화하지 않음을 의미합니다.
Linux에서 전체 디스크 암호화를 위한 표준 도구는 다음과 같습니다.암호화. 모든 주요 배포판에서 사용할 수 있으며 많은 설치 프로그램에 통합되어 있습니다.
답변3
예, Grub2 /boot
파티션을 사용하면 LUK로 암호화할 수 있습니다.
/boot
/
LUK 암호화 파티션의 폴더로/boot
파티션에서 암호화된 LUK- 그리고 Linux에서는 정렬되지 않은 차단 목록을 장치로 사용하거나 루트로 사용할 수 있으므로(initramfs는 정렬되지 않은 차단 목록에 대해 구성하기가 매우 복잡하지만 수행할 수 있습니다. 편집증적인 방식입니다) )
/boot
또한 여러 계층(분할된 경우)을 사용하여 편집증적인 암호화를 테스트했습니다.
/dev/sda5
디스크의 유일한 논리 파티션(MBR에는 두 개의 확장 파티션만/boot
있음/
)/dev/sda5
LUK 레벨 1을 맨 위에 놓고 다음과 같이 매핑했습니다./dev/mapper/level_0001
/dev/mapper/level_0001
위에 LUK 레벨 2를 배치하고 다음과 같이 매핑했습니다./dev/mapper/level_0002
/dev/mapper/level_0002
위에 LUK 레벨 3을 배치하고 다음과 같이 매핑했습니다./dev/mapper/level_0003
- 그런 다음 LUK 레벨을 다음과 같이 매핑
/dev/mapper/level_####
합니다 .####+1
/dev/mapper/level_####+1
/dev/mapper/level_3436
LUK 레벨 3437을 다음에 매핑했습니다 ./dev/mapper/level_3436
- 나는 그것에
/dev/mapper/level_3437
Ext4를 넣고 다음과 같이 설치했습니다./boot
/boot
실행 후 Grub2를 설치했습니다.echo GRUB_CRYPTODISK_ENABLE=y >> /etc/default/grub
- LUK를 한겹 만
/dev/sda6
넣었어요/
시작했을 때 각각 32자를 넘는 3437개의 서로 다른 비밀번호를 요청했습니다.
이것은 단지 개념 증명일 뿐이며 시작 시간이 끔찍합니다.
하지만 똑같은 일을 하면 /
모든 시스템에서 읽기/쓰기 속도도 형편없지만 적어도 Linux는 작동합니다. 또한 10,000개 이상의 레벨을 테스트했습니다. 부분적으로 작동하고 CPU에서 읽기/쓰기 속도가 10KiB/s로 떨어졌으며(예, 정말 나쁩니다) 부팅하는 데 하루 종일 걸리고 온라인 액세스(서핑 등)를 수행하는 동안 응용 프로그램이 작동하는 경향이 있습니다. 디스크 시간 초과로 인해 충돌이 발생합니다. .
따라서 3~4레벨 LUK, 어쩌면 10레벨을 넣는 것이 허용될 수 있습니다. 이는 CPU와 CPU 대 디스크, 3D 렌더링 대 대규모 데이터 스크램블링 등을 사용하는 방법에 따라 많이 달라집니다.
PD: LUK의 각 레벨에서 다양한 해시 함수와 알고리즘을 사용할 수도 있고, --iter-time=#
약 10,000의 값을 사용하여 마운트 시간을 늘릴 수도 있습니다. 사전 부팅 시간은 30초에 가깝습니다.