OpenBSD CRYPTO 장치의 첫 번째 MByte를 지워야 하는 이유는 무엇입니까?

OpenBSD CRYPTO 장치의 첫 번째 MByte를 지워야 하는 이유는 무엇입니까?

에서:http://www.openbsd.org/cgi-bin/man.cgi?query=bioctl

The following command, executed from the command line, would configure
     the device softraid0 with one special device (/dev/sd2e) and an
     encrypting volume:

    # bioctl -c C -l /dev/sd2e softraid0

     bioctl will ask for a passphrase, which will be needed to unlock the
     encrypted disk.  After creating a newly encrypted disk, the first
     megabyte of it should be zeroed, so tools like fdisk(8) or disklabel(8)
     don't get confused by the random data that appears on the new disk.  This
     can be done with the following command (assuming the new disk is sd3):

    # dd if=/dev/zero of=/dev/rsd3c bs=1m count=1

내 질문: 그런데 도대체 왜 CRYPTO 장치의 첫 번째 MByte를 지워야 할까요? 이 작업을 놓치면 단점이 있나요?

답변1

그 이유를 한 문장으로 표현해보세요:

so tools like fdisk(8) or disklabel(8) don't get confused by the 
random data that appears on the new disk

암호화된 장치를 생성한 후에는 데이터가 무작위가 됩니다(설명된 대로 디스크가 처음에 0으로 가득 찬 경우에도 마찬가지임). 데이터가 (거의) 유효한 파티션 테이블 정보와 유사해 보이면 fdisk혼란스러울 수 있습니다 .disklabel

그러니 제로화해야 해암호화를 통해계속하기 전에 무작위가 아닌 데이터를 작성하십시오.

답변2

이미 답변을 인용하셨습니다.

따라서 fdisk(8) 또는 disklabel(8)과 같은 도구는 새 디스크에 나타나는 임의의 데이터에 속지 않습니다.

디스크를 분할하는 데 사용되는 도구(예: fdiskparted) 또는 디스크를 표시하는 데 사용되는 도구(예: disklabel)는 기존 MBR 읽기를 시도합니다. MBR이 0이면 비어 있는 것으로 처리됩니다. 0이 아니면 내용을 이해하려고 노력할 것입니다. 그러나 귀하의 경우 콘텐츠는 완전히 무작위입니다. 이는 이러한 도구를 혼란스럽게 하며 최악의 경우 가짜 값을 읽을 준비가 되어 있지 않으면 충돌이 발생할 수 있습니다.

답변3

OpenBSD 기타 메일링 리스트에서 Nick Holland의 답변을 찾았습니다.

So...today, you take a couple disks, zero the first 10MB, put a 1G boot
partition and make the rest RAID, then build a mirrored set, do your
testing, and call it done.

Tomorrow, you take the same disk, zero the first 10MB, put a 1GB boot
partition on it, and make the rest RAID, and intend to build a crypto
RAID partition on it.  Except...Poof! your RAID1 chunk is baaack!  Why?
 Because you didn't touch the softraid data which is 1GB up the disk.

관련 정보