it-swarm-korea.com

/ dev / urandom에 대한 대안이 있습니까?

/ dev/[u] random보다 빠른 방법이 있습니까? 때로는 다음과 같은 일을해야합니다

고양이/dev/urandom>/dev/sdb

임의의 장치는 "너무"안전하고 불행히도 너무 느립니다. 보안 삭제를위한 wipe 및 이와 유사한 도구가 있다는 것을 알고 있지만 Linux에서도 이와 같은 도구가 있다고 가정합니다.

21
cgp

하드 드라이브 (또는 파일)를 "안전하게"지우려면 파쇄 유틸리티를 살펴 봐야합니다.

이전 포스터에서 지적했듯이/dev/* random 장치는 임의의 작은 데이터 청크의 소스로 사용됩니다.

12
MikeyB

불행히도 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) 그러나 보장하지는 않습니다.

24
Tronic

T2500 CPU가 장착 된 Thinkpad T60p에서 Ubuntu 8.04의 빠른 테스트에서 openssl Rand의 1GB의 임의 데이터가 /dev/urandom보다 3-4 배 빠릅니다. 그건,

time cat /dev/urandom | head -c 1000000000 > /dev/null

... 약 4 분 동안 ...

time openssl Rand 1000000000 | head -c 1000000000 > /dev/null

... 1 분이 넘었습니다.

랜덤 품질에 차이가 있는지 확실하지 않지만 HD 와이 핑에는 적합합니다.

7
gojomo

무작위 데이터를 사용하는 것이 중요하지 않다는 많은 답변이 있습니다. 드라이브를 지우는 것만으로도 디스크 암호화를 준비 할 때 드라이브를 닦는 것은 그리 중요하지 않습니다.

임의의 데이터가 아닌 장치로 장치를 채우면 암호화 된 파티션을 배치하면 문제가 발생할 수 있습니다. 암호화 된 데이터가 무작위로 표시되고 나머지는 그렇지 않기 때문에 암호화 된 데이터를 저장하는 드라이브 부분은 나머지 드라이브에서 두드러집니다. 이는 크래킹에 사용될 수있는 암호화 디스크에 대한 정보를 결정하는 데 사용될 수 있습니다. 아래 링크는 좀 더 일반적인 공격의 작동 원리와 그에 대한 방어 방법 (Linux의 경우)을 설명합니다.

Linux 하드 디스크 암호화 설정

5
user104021

거대한 블록 장치를 지우려면 임의 데이터의 출력 리디렉션 대신 dd 및 장치 매퍼를 사용하는 것이 더 강력하다는 것을 알았습니다. 다음은 /dev/sdb/dev/mapper/deviceToBeErased에 매핑하고 중간에 투명하게 해독합니다. 암호화 된 끝에서 장치를 채우려면 매퍼의 일반 텍스트쪽에 0이 복사됩니다 (/dev/mapper/deviceToBeErased).

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

/dev/sdb의 암호화 된 데이터는 AES에 심각한 약점이없는 경우 임의의 데이터와 구분할 수 없습니다. 사용 된 키는 /dev/random에서 가져옵니다 (걱정하지 마십시오-32 바이트 만 사용함).

5
Perseids

HD를 안전하게 닦아야하는 경우 하나의 도구 very 강력 함 : DBAN =

5
Arg

프 랜덤 확인

http://billauer.co.il/frandom.html

내 테스트에 따르면 가장 빠릅니다.

4
MA1

공구가 빠를수록 결과의 안전성이 떨어집니다. 좋은 무작위성을 생성하려면 시간이 걸립니다.

어쨌든 dd if =/dev/zero of =/dev/sdb와 같은 것을 사용할 수 있지만 분명히 무작위는 아니므로 훨씬 빨리 지울 것입니다.

또 다른 옵션은이 방법을 사용하는 것입니다. / sbin/badblocks -c 10240 -s -w -t random -v/dev/sdb urandom보다 빠르지 만 badblocks PRNG 덜 무작위입니다.

2
Zoredache

/dev/random은 (는) 많은 시스템 엔트로피를 사용하므로 느린 데이터 스트림 만 생성합니다.

/dev/urandom는 덜 안전하고 빠르지 만 더 작은 데이터 청크에 맞춰져 있습니다. 연속 된 고속 난수 스트림을 제공하는 것은 아닙니다.

당신은 PRNG 자신의 디자인을 만들어서 /dev/random 또는 /dev/urandom. 좀 더 무작위로 필요한 경우 몇 MB마다 (또는 prng 길이에 상관없이) 주기적으로 시드하십시오. urandom 또는 random에서 4 바이트 (32 비트 값)를 가져 오는 것은 1k의 데이터 (1k마다 prng를 시드)마다이 작업을 수행 할 수있을 정도로 빠르며 매우, 매우 빠르게 진행되는 동안 매우 임의의 결과를 얻을 수 있습니다.

-아담

2
Adam Davis

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없이 임의의 비트로 디스크를 빠르게 채 웁니다

2
Eric Wheeler

하드 드라이브를 빨리 지우려면 임의의 데이터가 아닌 데이터를 쓰십시오. 이것은 무작위 데이터를 사용하는 것보다 덜 안전합니다. 어느 쪽이든, 컴퓨터에 연결되면 원본 데이터를 읽을 수 없습니다. 하드 드라이브 데이터 덮어 쓰기 : 대단한 논란 는 현미경을 사용하여 원본 데이터를 읽을 수 없음을 보여줍니다.

2
sciurus

하드 드라이브를 지우려면 dd는 재 할당 된 섹터의 내용을 삭제하지 않으며 하드 드라이브가 죽으면 매우 느립니다. 대신 오랫동안 표준화 된 드라이브 내장 지우기 기능을 사용할 수 있습니다.

이 예에서는 단 102 분 안에 500GB 기계식 하드 드라이브를 지우고 있습니다. 재 할당 된 섹터로 가득 찬 경우에도 :

[email protected]:~# hdparm --security-set-pass Eins /dev/sdaj
security_password="Eins"

/dev/sdaj:
 Issuing SECURITY_SET_PASS command, password="Eins", user=user, mode=high
[email protected]:~# 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

[email protected]:~# 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를 사용하지 않으므로 앞에서 언급 한 재 할당 된 섹터를 삭제해야합니다.

2

실제로 하나의 연속 무작위 스트림에서 전체 디스크를 시드 할 필요는 없습니다.

적당한 크기의 임의의 데이터 청크를 만든 다음 디스크에서 반복해서 반복 할 수 있습니다.

데이터 청크가 디스크의 일반 블록 크기의 배수가 아닌지 확인하여 상관 된 데이터 블록을 정확히 동일한 비트의 임의 데이터로 덮어 쓰지 않도록하십시오. ~ 1MB 범위의 소수 인 청크 크기는 훌륭해야합니다.

추가 보안을 위해 매번 다른 청크 크기를 사용하여 몇 번 더 수행하십시오.

1
Alnitak

'파쇄 된'유틸리티는 쉽고 빠릅니다. 드라이브의 SMART 속성이 0으로 재 할당 된 섹터를 나타내는 경우, '파쇄'는 충분히 안전합니다.

그러나 드라이브에 섹터가 재 할당 된 경우 손상된 섹터의 데이터는 덮어 쓰지 않습니다. 손상된 위치에 재 할당되기 전에 민감한 데이터가 포함 된 경우 '파쇄'가 충분하지 않을 수 있습니다. '불량'섹터는 드라이브의 할당 맵을 재설정하고 (반복적으로) 읽음으로써 읽을 수 있습니다.

불량 섹터 할당 맵을 재설정하는 기능은 제조업체 및 드라이브 모델에 따라 다릅니다.

1
drok

디스크를 덮어 쓰는 것만으로도 사용하는 것은 중요하지 않습니다. 왜냐하면 어떤 것이라도 법의학 실험실에서 부족한 것을 이길 수 있기 때문에 그 수준의 리소스를 막기 위해 드라이브를 슬래그하는 것 외에는 아무것도 신뢰하지 않기 때문입니다. .

모든 0 또는 1과 같은 무작위가 아닌 소스 또는 다음과 같은 반복 패턴을 사용하십시오 (이것이 효과가 있다고 생각합니다)

(head -c 4096 /dev/urandom; cat /dev/sdb/) > /dev/sdb
0
BCS