/ dev / [u] random보다 빠른 방법이 있습니까? 때로는 다음과 같은 일을해야합니다
고양이 / dev / urandom> / dev / sdb
임의의 장치는 "너무"안전하고 불행히도 너무 느립니다. wipe
보안 삭제를위한 유사한 도구 가 있다는 것을 알고 있지만 Linux에서도 온보드 수단이 있다고 가정합니다.
/ dev / [u] random보다 빠른 방법이 있습니까? 때로는 다음과 같은 일을해야합니다
고양이 / dev / urandom> / dev / sdb
임의의 장치는 "너무"안전하고 불행히도 너무 느립니다. wipe
보안 삭제를위한 유사한 도구 가 있다는 것을 알고 있지만 Linux에서도 온보드 수단이 있다고 가정합니다.
답변:
하드 드라이브 (또는 파일)를 "안전하게"지우려면 파쇄 유틸리티를 살펴 봐야합니다.
이전 포스터에서 지적했듯이 / dev / * random 장치는 임의의 작은 데이터 청크의 소스로 사용됩니다.
불행히도 Linux에는 urandom의 구현이 잘못되었습니다. CPU가 AES-NI (하드웨어 가속)를 지원하는 경우 임의의 키와 함께 aes256-ctr을 사용하고 초당 수백 메가 바이트의 의사 난수를 얻을 수 있습니다. 현대적인 접근 방식으로 전환하기를 기대하고 있습니다.
openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > randomfile.bin
이 강아지는 내 상자에서 1.0GB / s를 수행합니다 (14MB / s의 / dev / urandom과 비교). urandom을 사용하여 임의의 비밀번호를 작성한 다음 해당 키를 사용하여 / dev / zero의 매우 빠른 암호화를 수행합니다. 이것은 암호화 적으로 안전한 PRNG 여야하지만 보장하지는 않습니다.
pv
좋은 진행률 표시기를 통과하십시오 . openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero | pv -pterb > /dev/sdb
.
pv
권장 사항 에 추가하기 위해 쓰기 완료를 향한 진행 상황을 보여주기 pv -pterb -s $(blockdev --getsize64 /dev/sdb) >/sdb
위해 파이프로 연결할 수 있습니다 pv
.
T2500 CPU가 장착 된 Thinkpad T60p에서 Ubuntu 8.04의 빠른 테스트에서 1GB의 임의 데이터 openssl rand
가 3-4 배 더 빠릅니다 /dev/urandom
. 그건,
time cat /dev/urandom | head -c 1000000000 > /dev/null
... 약 4 분 동안 ...
time openssl rand 1000000000 | head -c 1000000000 > /dev/null
... 1 분이 넘었습니다.
랜덤 품질에 차이가 있는지 확실하지 않지만 HD 와이 핑에는 적합합니다.
무작위 데이터를 사용하는 것이 중요하지 않다는 많은 답변이 있습니다. 드라이브를 지우는 것만으로도 디스크 암호화를 준비하기 위해 드라이브를 닦는 것만으로는 충분하지 않습니다.
임의의 데이터가 아닌 장치로 장치를 채우면 암호화 된 파티션을 배치하면 문제가 발생할 수 있습니다. 암호화 된 데이터가 무작위로 표시되고 나머지는 그렇지 않기 때문에 암호화 된 데이터를 저장하는 드라이브 부분은 나머지 드라이브에서 두드러집니다. 이는 크래킹에 사용될 수있는 암호화 디스크에 대한 정보를 결정하는 데 사용될 수 있습니다. 아래 링크는 좀 더 일반적인 공격의 작동 원리와 그에 대한 방어 방법 (Linux의 경우)을 설명합니다.
거대한 블록 장치를 지우려면 dd
무작위 데이터의 출력 리디렉션 대신 장치 매퍼 를 사용하는 것이 더 강력하다는 것을 알았습니다 . 다음은 그 사이에 투명하게 암호화 및 해독하는 것에 매핑 /dev/sdb
됩니다 /dev/mapper/deviceToBeErased
. 암호화 된 끝에서 장치를 채우려면 매퍼 ( /dev/mapper/deviceToBeErased
) 의 일반 텍스트쪽에 0이 복사됩니다 .
cryptsetup --cipher aes-xts-plain64 --key-file /dev/random --keyfile-size 32 create deviceToBeErased /dev/sdb
dd if=/dev/zero of=/dev/mapper/deviceToBeErased bs=1M
AES에 심각한 취약점 /dev/sdb
이없는 경우 암호화 된 데이터 는 임의의 데이터와 구분할 수 없습니다 . 사용 된 키는 움켜 잡습니다 (걱정하지 마십시오-32 바이트 만 사용합니다)./dev/random
공구가 빠를수록 결과의 안전성이 떨어집니다. 좋은 무작위성을 생성하려면 시간이 걸립니다.
어쨌든 dd if = / dev / zero of = / dev / sdb 와 같은 것을 사용할 수 있지만 분명히 무작위가 아니므로 훨씬 빨리 지워집니다.
또 다른 옵션은이 방법을 사용할 수 있습니다 경우 / sbin / 배드 블럭 -c 10240 -s -w -t 임의 -v는 / dev / sdb에 더 빨리 다음 urandom을하지만 배드 블럭 PRNG 덜 무작위입니다.
/dev/random
많은 시스템 엔트로피를 사용하므로 느린 데이터 스트림 만 생성합니다.
/dev/urandom
덜 안전하고 빠르지 만 여전히 작은 데이터 청크에 맞춰져 있습니다. 연속적인 고속 난수 스트림을 제공하는 것은 아닙니다.
자신 만의 디자인으로 PRNG를 만들어서 /dev/random
또는의 무언가로 시드해야합니다 /dev/urandom
. 좀 더 무작위로 필요한 경우 몇 MB마다 (또는 prng 길이에 상관없이) 주기적으로 시드하십시오. urandom 또는 random에서 4 바이트 (32 비트 값)를 가져 오는 것은 1k 데이터마다 (1k마다 prng 시드)이 작업을 수행 할 수있을만큼 빠르며 매우, 매우 빠르게 진행되는 동안 매우 임의의 결과를 얻을 수 있습니다.
-아담
하드 드라이브를 빨리 지우려면 임의의 데이터가 아닌 데이터를 쓰십시오. 이것은 무작위 데이터를 사용하는 것보다 덜 안전합니다. 어느 쪽이든, 컴퓨터에 연결되면 원본 데이터를 읽을 수 없습니다. 하드 드라이브 데이터 덮어 쓰기 : 위대한 삭제 논쟁 은 원본 데이터를 현미경으로도 읽을 수 없음을 보여줍니다.
LUKS로 포맷하고 암호화 된 볼륨을 통해 dd하십시오. 그런 다음 / dev / urandom을 사용하여 LUKS 헤더를 지우십시오.
하드웨어 AES를 지원하는 경우 매우 빠른 솔루션입니다.
간단히:
cryptsetup luksFormat /dev/sdX
cryptsetup luksOpen /dev/sdX cryptodev
dd if=/dev/zero bs=1M of=/dev/mapper/cryptodev
cryptsetup luksClose cryptodev
# wipe the luks header. Yes, it uses /dev/urandom but only for 2MB of data:
dd if=/dev/urandom bs=1M count=2 of=/dev/sdX
끝난!
내 블로그를 참조하십시오 : / dev / urandom없이 임의의 비트로 디스크를 빠르게 채 웁니다.
하드 드라이브를 지우려면 dd는 재 할당 된 섹터의 내용을 삭제하지 않으며 하드 드라이브가 죽으면 매우 느립니다. 대신 오랫동안 표준화 된 드라이브 내장 지우기 기능을 사용할 수 있습니다.
이 예에서는 단 102 분 안에 500GB 기계식 하드 드라이브를 지우고 있습니다. 재 할당 된 섹터로 가득 찬 경우에도 :
root@ubuntu:~# hdparm --security-set-pass Eins /dev/sdaj
security_password="Eins"
/dev/sdaj:
Issuing SECURITY_SET_PASS command, password="Eins", user=user, mode=high
root@ubuntu:~# time hdparm --security-erase-enhanced Eins /dev/sdaj
security_password="Eins"
/dev/sdaj:
Issuing SECURITY_ERASE command, password="Eins", user=user
real 102m22.395s
user 0m0.001s
sys 0m0.010s
root@ubuntu:~# smartctl --all /dev/sdaj | grep Reallocated
5 Reallocated_Sector_Ct 0x0033 036 036 036 Pre-fail Always FAILING_NOW 1327
ata.wiki.kernel.org 에서 자세한 내용을 볼 수 있지만,이 예제에서는 --security-erase-enhanced를 사용하지 않으므로 앞에서 언급 한 재 할당 된 섹터를 삭제해야합니다.
디스크를 덮어 쓰는 것만으로도 사용하는 것은 중요하지 않습니다. 왜냐하면 어떤 것이라도 법의학 실험실에서 부족한 것을 이길 수 있기 때문에 그 수준의 리소스를 막기 위해 드라이브를 슬래그하지 않는 것을 신뢰하지 않기 때문입니다. .
모든 0 또는 1과 같은 무작위가 아닌 소스 또는 다음과 같은 반복 패턴을 사용하십시오 (이것이 효과가 있다고 생각합니다)
(head -c 4096 /dev/urandom; cat /dev/sdb/) > /dev/sdb