배경 정보
저는 최근에 Windows를 시작한 Linux 초보자입니다. 현재 전체 디스크 암호화없이 Ubuntu 11.04를 사용하고 있습니다. 내 홈 디렉토리 만 암호화되고 eCryptFS로 암호화됩니다. 최근에 암호화가 투명하지 않은 것으로 나타났습니다. 예를 들어 VMWare는 암호화 된 홈 디렉토리에 저장된 가상 머신에 문제가 발생하기 때문에 가상 머신을 암호화되지 않은 위치로 옮기고 암호화 된 홈 디렉토리에서 가상 머신에 연결하기 만하면됩니다. 그러나 그것은 요점입니다. 우분투와 같은 오픈 소스 운영 체제는 비밀로 유지해야 할 정보를 공개하기 위해 수정하기가 매우 쉽기 때문에 실제로 시스템을 암호화되지 않은 채로 두는 것이 안전하지 않다는 것을 깨달았습니다.
골
부팅 전 인증을위한 키 장치 및 암호와 함께 전체 디스크 암호화 작업을 수행하고 싶습니다.
요구 사항 / 세부 사항
- 전체 디스크를 암호화해야합니다. 최소한 디스크는 암호화 된 개별 파티션으로 구성됩니다. 암호화로 파티션을 숨길 수 있다면 갈 것입니다. 암호화가 투명할수록 좋습니다. 컴퓨터를 다르게 사용하거나 다른 것을 구성 할 필요는 없습니다.
- 암호화 된 파티션의 잠금을 해제하고 부팅하는 데 사용되는 장치는 소형 외부 휴대용 장치 여야합니다. 이것은 두 가지 목적을 제공합니다. 부트 로더는 사용하지 않을 때 나와 함께 있기 때문에 악의적 인 목적으로 변경 될 가능성이 훨씬 적습니다. 디스크를 해독하기위한 키 파일은 암호화 된 디스크 자체의 어느 곳에서도 찾을 수 없습니다.
- 키 파일은 비밀번호로 암호화해야합니다. 컴퓨터와 USB 장치를 모두 잃어버린 경우에도 데이터와 운영 체제는 안전합니다. USB 키를 잃어 버리거나 손상된 경우 백업에서 다른 깨끗한 키를 만들 수 있습니다. 두 경우 모두 정보가 공개되지 않습니다. 물론 컴퓨터를 잃어 버리면 중요하지 않습니다.
예, 여러 곳에서 가이드를 살펴 봤지만 문제는 모든 요구 사항 (특히 3 번)을 다루지 않는다는 것입니다. 나는 누군가가 이미 그러한 설정을 시도하고 성공적으로 구현했을 정도로 내 요구 사항이 공통적이라고 확신합니다. Linux 전문가가 솔루션을 공유 할 수 있다면 감사하겠습니다.
답변
부팅하려면 특정 썸 드라이브와 암호가 필요한 전체 디스크 암호화를 수행하는 간단한 방법이 있습니다.
완전 암호화 된 하드 드라이브에서 LUKS 헤더를 분리하여 썸 드라이브에 저장하십시오.
이미 다음과 같은 설정이 있다고 가정합니다.
# /dev/sda1 is the boot partition (100MB)
# /dev/sda2 is the encrypted partition
parted /dev/sda mklabel msdos
parted /dev/sda -- mkpart primary ext2 1M 200M
parted /dev/sda -- mkpart primary ext4 200M -100M
cryptsetup luksFormat /dev/sda2
luks 헤더의 사본을 작성하고 로컬 장치에서 지우십시오.
mkdir /media/ramdisk && mount -t tmpfs -osize=20m,rw tmpfs /media/ramdisk
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file /media/ramdisk/header.img
dd if=/dev/urandom of=/dev/sda2 bs=1M count=2
예산이 많은 대행사의 대상인 경우 마지막 단계를 여러 번 실행하십시오. 또한 헤더를 일시적으로 유지하기 위해 램 디스크를 만들었으므로 나중에는 머물러 있지 않습니다.
/ dev / sdb에 usb 장치를 사용하여 2MB 파티션을 만들고 헤더를로드하십시오.
parted /dev/sdb -- mklabel MSDOS
parted /dev/sdb -- mkpart primary 1M 3M
dd if=/media/ramdisk/header.img of=/dev/sdb1
현재 / dev / sda2의 모든 것은 임의의 데이터처럼 보이며 / dev / sdb1에 헤더가 있습니다. 암호화 된 드라이브에 수동으로 액세스하려면 다음을 사용하십시오.
cryptsetup luksOpen --header /dev/sdb1 /dev/sda2 rootfs
mount /dev/mapper/rootfs /target
다음 단계는 부팅 과정에서 부팅시 pendrive를 삽입하도록 요청하는 것입니다. 나는 그것이있을 것이라고 가정하고 그렇지 않으면 실패하는 것이 더 쉽다는 것을 알았습니다. 먼저 장치의 ID와 UUID를 찾으십시오.
find -L /dev/disk/by-id/ -samefile /dev/sdb1
/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
find -L /dev/disk/by-id/ -samefile /dev/sda2
/dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2
blkid /dev/sdb1
/dev/sdb1: UUID="63347546-2db3-4bc1-9414-1142739a4c9f" TYPE="crypto_LUKS"
다음 /etc/crypttab
과 같이 라인을 편집하십시오 .
root /dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2 none luks,header=/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
(당신은해야 할 수도 있습니다 이 패치를 에 대한 지원을 얻기 위해 header
옵션에서 crypttab
)
마지막으로, initram을 업데이트하십시오 :
update-initramfs -u
한 단계 더 나아가서 실제로 전체 부팅 파티션을 USB 드라이브에로드 할 수 있습니다 . 이 기사의 저자는이 사이트에서 후속 작업을 수행했습니다 .
있습니다 많은 다른 접근 취할 수있는 보안 및적이고 다양한 각도와 함께.
보안에 관한 특별 참고 사항 : 암호 문구가 손상되면 나중에 암호 문구를 변경하더라도 헤더 사본이있는 사람은 누구나 데이터를 해독 할 수 있습니다.
답변
OSC, Windows 및 Linux에서 TrueCrypt를 사용할 수 있다는 것을 알고 있습니다. 전체 드라이브에 대해 두 가지 수준의 암호화를 수행 할 수 있습니다. AES 전체 디스크 암호화와 함께 데비안에서 사용했습니다. 하드 드라이브의 데이터에 액세스하려면 부팅시 암호가 필요합니다.