![콘텐츠로 드라이브 암호화](https://linux55.com/image/40136/%EC%BD%98%ED%85%90%EC%B8%A0%EB%A1%9C%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C%20%EC%95%94%ED%98%B8%ED%99%94.png)
저는 각각 3TB의 하드 드라이브 2개를 가지고 있습니다. 첫 번째 드라이브는 매우 중요한 콘텐츠로 가득 차 있습니다. 다음 기술을 사용하여 두 번째 3TB 드라이브를 암호화했습니다.
https://www.youtube.com/watch?v=J_g-W6hrkNA
그리고 암호화되지 않은 첫 번째 드라이브의 파일을 암호화된 두 번째 드라이브에 복사합니다. 이제 첫 번째 드라이브를 암호화하고 싶습니다. 어떻게 해야 하나요? 콘텐츠가 포함되어 있으므로 드라이브 위의 링크를 사용하여 암호화하면 지워질 것이라고 가정합니까?
답변1
당신이 해야 할 일은 원본 드라이브를 안전하게 지워 암호화되지 않은 데이터를 모두 제거한 다음 암호화를 설정하고 파일을 복사하는 것입니다.
먼저, 원본 드라이브가 완전히 지워지므로 백업이 올바른지 확인해야 합니다. 다음 명령을 사용하여 드라이브를 지우십시오.
# dd if=/dev/urandom of=/dev/sdX bs=4096
sdX
지우려는 드라이브는 어디에 있습니까? /dev/zero
대신 urandom을 사용 /dev/urandom
하는 것이 더 안전하지만 urandom이 더 오래 걸리기 때문에 사용할 수 있습니다 . 이에 대한 자세한 내용을 확인할 수 있습니다.여기. 올바른 드라이브(가능한 한 다른 드라이브)를 지워서 손상될 가능성이 없도록 하십시오.
이런 방식으로 삭제된 데이터는 복구할 수 없다는 점에 유의하세요(그게 포인트입니다).
디스크가 안전하게 지워지고 더 이상 암호화되지 않은 데이터가 남아 있지 않으면 암호화를 설정하고 데이터를 복사할 수 있습니다.
답변2
내부 암호화가 가능하지만 위험합니다. 지금까지는 삭제/포맷/mkfs하고 다른 곳의 파일로 다시 채우는 것이 더 쉽습니다.
내부 방법의 경우 먼저 파일 시스템을 축소하여 2MiB
드라이브 시작 부분에 최소한 LUKS 헤더를 위한 공간을 확보해야 합니다. 안전을 위해 조금 더 작게 만드세요.
2MiB
그런 다음 암호화된 컨테이너의 모든 데이터 에는 LUKS 헤더로 인해 최소한 하나의 오프셋이 있다는 점을 기억해야 합니다 . 따라서 암호화된 컨테이너에 대한 암호화되지 않은 선형 복사본은 dd
각 쓰기가 아직 읽지 않은 데이터를 덮어쓰게 되므로 작동하지 않습니다.
이러한 상황을 방지하려면 복사 작업을 역방향으로 실행해야 합니다. 에서는 이에 대한 직접적인 지원이 없지만 까지 각 단계에서 1을 감소시키는 역방향 루프에서 이를 사용하여 시뮬레이션 dd
할 수 있습니다 .seek=$x skip=$x count=1
$x
$x=0
/dev/sdx1
파일 시스템이 있는 장치를 사용하는 예 ext4
:
# make sure it's not mounted anywhere
umount /dev/sdx1
# backup the first 128MiB somewhere
dd bs=1M if=/dev/sdx1 of=/somewhere/sdx9.backup count=128
# shrink filesystem by 128MiB
resize2fs /dev/sdx1 $(($(blockdev --getsize64 /dev/sdx1)/1024/1024-128))M
# create encryption layer
cryptsetup luksFormat /dev/sdx1
cryptsetup luksOpen /dev/sdx1 luksx1
# dd backwards using GiBs of memory. Change math and bs for less memory usage.
for x in $(seq $(($(blockdev --getsize64 /dev/sdx1)/1024/1024/1024+1)) -1 0)
do
dd bs=1G iflag=fullblock seek=$x skip=$x count=1 \
if=/dev/sdx1 of=/dev/mapper/luksx1
done
# include backup for region previously overwritten by LUKS header
dd bs=1M if=/somewhere/sdx9.backup of=/dev/mapper/luksx1
# grow filesystem to full size
resize2fs /dev/mapper/luksx1
이를 수행하기 전에 임시 장치로 프로세스를 테스트하십시오.
어느 시점에서든 프로세스가 취소되면 반 암호화된 내용으로 끝나게 되므로 원인이 거의 손실됩니다.
일부 프런트엔드는 거의 동일한 접근 방식을 사용합니다. cryptsetup
재암호화 절차 자체가 있거나 행운을 시험해 볼 수도 있습니다.http://www.johannes-bauer.com/linux/luksipc/. 나는 그것이 어떻게 작동하고 어떤 문제가 발생할 수 있는지 이해하기 때문에 수동 방법을 선호합니다.