나도 알아
dd if=/dev/urandom of=/dev/sdX bs=1M count=hdd_size_in_MB
임의의 데이터로 전체 디스크를 지울 수 있습니다. 그러나 urandom은 매우 느립니다. 그렇다면 CPU 리소스를 차지하는 TB의 무작위 데이터를 생성하는 대신 100MB~1000MB의 무작위 데이터를 생성하여 RAM에 저장하고 디스크에 여러 번 쓸 수 있는지 궁금합니다.
어떻게 해야 하나요?
답변1
몇 가지:
- 무작위 데이터로 여러 번 덮어쓰는 것이 데이터를 복구할 수 없게 만드는지 여부에 대해 오랫동안 논쟁이 있어 왔습니다. 이를 권장하는 문서는 기술적으로 오래되었습니다. 좀 더 심도 있는 논의를 위해서는 다음 사항을 읽어야 합니다.https://security.stackexchange.com/questions/10464/why-is-writing-zeros-or-random-data-over-a-hard-drive-multiple-times-better-th/10474#10474(저는 여기 어딘가에 더 긴 호언장담을 썼습니다. 요점은 다음과 같습니다: 모든 현대 녹음 기술은위해 싸우다어쨌든 화이트 데이터로 오버레이하든지, 일정한 데이터로 자기 관점에서 오버레이하든 전혀 중요하지 않습니다. 위협 모델이 전자현미경과 전문 실험실에서 0으로 덮인 하드 드라이브를 읽는 데 몇 달을 소비하는 것이라면, 버리지 말고 재판매하거나 재사용하지 말고 물리적으로 파기하십시오. 전체 위협 모델은 이상합니다. )
- 복구 불가능함을 원하는 경우무작위 적용이 도움이 되는 경우더 짧은 시퀀스를 선택하고 반복하면 접근 방식을 우스꽝스럽게 만드는 통계적 공격에 노출됩니다.
- 아니요
dd
. 간단한 접근 방식cat < /dev/urandom > /dev/sdX
은 커널이 적절한 읽기/쓰기 크기를 결정하도록 하는 것입니다. 즉, 이러한 쓰기는 스토리지 계층에 의해 버퍼링됩니다.그리고어쨌든, 하드 드라이브. chacha20
커널에서 단일 스레드를 수행하고 몇 kB마다 컨텍스트 전환을 수행하는 대신 openssl 또는 유사한 도구에 정적 시드를 암호화하고 디스크에 쓰도록 요청할 수 있습니다 .chacha20
(또는 자신만의 난수 생성기를 작성하여 시드할 수도 있습니다. 다시 말하지만, 무작위 적용 범위에 대한 전체 아이디어는 의미가 없지만 충분히 큰 상태 PRNG의 시드를 재구성하는 것은 암호학적으로 안전하지 않더라도 합리적으로 불가능해야 합니다.)
답변2
shred
coreutils에는 파일이나 장치를 임의로 다시 쓸 수 있는 명령이 있습니다 . 기본적으로 이는 전체 파일 장치(예: 파티션)에 적용되지만 --size
/는 -s
지정된 크기를 제공할 수 있습니다.
이것은 매우 효과적입니다.