dd를 사용할 때 왜 / dev / random이 너무 느립니까? 많은 하드 드라이브를 반쯤

많은 하드 드라이브를 반쯤 안전하게 지우려고합니다. 다음은 20-50Mb / s에서 작동합니다.

dd if=/dev/zero of=/dev/sda

그러나

dd if=/dev/random of=/dev/sda

작동하지 않는 것 같습니다. 입력 할 때도

dd if=/dev/random of=stdout

bs = 및 count =에 전달한 내용에 관계없이 몇 바이트 만 제공합니다.

/ dev / random을 잘못 사용하고 있습니까? 이 문제 해결을 진행하기 위해 어떤 다른 정보를 찾아야합니까? 스크립트 또는 이와 비슷한 방법으로 다른 방법이 있습니까?

makeMyLifeEasy | dd if=stdin of=/dev/sda

아니면 그런 …



답변

/dev/random/dev/urandom에 “엔트로피 풀”을 사용합니다. 풀이 다 떨어지면 /dev/random다시 채워질 때까지 기다리면 시스템 동작 (키보드 입력, 마우스 움직임 등)을 모니터링해야하지만 /dev/urandom의사 난수 데이터는 계속 제공됩니다. /dev/random이론적으로 더 높은 품질이지만, /dev/urandom거의 확실하게 귀하의 목적에 충분합니다. (그러나 /dev/urandom다른 방법보다 속도가 느릴 수도 있습니다. 더 빠르지 만 품질이 낮은 발전기는 아마도 하드 드라이브를 지우는 데 충분할 것입니다. 임의의 숫자는 0, 1, 2, 3, 4, ….와 같은 시퀀스 보다이 목적에 더 좋습니다 .)

random(4)매뉴얼 페이지 인용 :

당신은 당신이 사용하는지 여부를 모르는 경우 /dev/random또는
/dev/urandom, 다음 아마 당신은 후자를 사용하고 싶습니다. 일반적으로 /dev/urandom오래 지속되는 GPG / SSL / SSH 키를 제외한 모든 항목에 사용해야합니다.

업데이트 :`random (4) 매뉴얼 페이지는 내가 쓴 이후로 업데이트되었습니다. 이제 말합니다 :

/dev/random인터페이스는 기존의 인터페이스로 간주되며,
/dev/urandom초기 부팅 시간 동안 임의성을 필요로하는 응용 프로그램을 제외하고, 선호하는 모든 사용 사례에 충분한되며, 이러한 응용 프로그램의 getrandom(2)경우 엔트로피 풀이 초기화 될 때까지 차단되므로 대신 사용해야합니다.

Thomas Hühn의 ” / dev / urandom에 대한 신화 “도 참조하십시오 .

그러나 /dev/urandom차단되지 않더라도 대량의 데이터를 생성하려는 경우 속도가 너무 느릴 수 있습니다. 시도하기 전에 시스템에서 몇 가지 측정을 수행하십시오.

편집 : 다음은 “참”난수 대 의사 난수에 대한 설명입니다. 관심있는 모든 것이 질문에 대한 실질적인 답변이라면 지금 읽기를 중단 할 수 있습니다.

/dev/random의사 난수 생성기 (PRNG)와 달리 “진정한”난수 생성기 를 구현하는 클레임 (여기 다른 답변 포함 )이 있습니다. 예를 들어, Wikipedia 기사 는 그러한 주장을합니다. 나는 그것이 옳지 않다고 생각합니다. 거기의 논의의 여기 하드웨어 난수 발생기를 의미,하지만 난 아무 기록도 볼 /dev/random일반적으로 이러한 장치를 사용하거나 일반적인 컴퓨터도 이러한 장치를 가지고 있습니다. 그들은 rand()실제로 예측할 수없는 출처에서 엔트로피를 수확하므로 결정 론적이지 않다는 점에서 C 함수 와 같은 PRNG와 다릅니다 .

“무작위”숫자 생성기에는 세 가지 클래스가 있다고합니다.

  1. C rand()함수 와 같은 결정 론적 PRNG 는 알고리즘을 사용하여 진정으로 무작위 시퀀스의 통계적 특성을 갖는 반복 가능한 시퀀스를 생성합니다. 이것들은 게임에 충분할 수 있고 (게임을 파종하는 좋은 방법으로) 반복성이 필요한 응용 프로그램에 필요하지만 암호에는 적합하지 않습니다.

  2. I / O 활동과 같이 실제로 예측할 수없는 일부 소스에서 엔트로피를 좋아 /dev/random하고 생성 /dev/urandom하는 생성기 (키보드를 두드 리거나 마우스를 움직이면 /dev/random더 많은 데이터를 생성 할 수 있음 ) 이들이 PRNG의 정의를 충족시키는 지 여부는 명확하지 않지만 (PRNG가 결정적이라고 말하는 정의를 보았 음) 진정한 난수 생성기 도 아닙니다 .

  3. 초기 상태에 대한 완전한 지식이 있어도 물리적으로 예측할 수없고 추가로 수학적 기술을 사용하여 올바른 통계적 속성을 보장하는 하드웨어 난수 생성기 .


답변

/dev/random진정한 엔트로피의 소스, 진정한 임의의 바이트입니다. 따라서 임의의 출처가 필요합니다. 당신은 그것을 읽음으로써 임의성을 ‘사용’할 수 있습니다. 그것은 당신에게 가지고있는 모든 무작위성을 줄 것이고, 더 많이 얻을 때까지 차단합니다. 당신은 아마 거기 앉아 기다리고있을 것이고, 기계는 새로운 무작위성을 거의 얻지 못하고 기다릴뿐입니다.

/dev/random진정한 무작위 암호화, 고품질 무작위성. 따라서 디스크 드라이브 덮어 쓰기에 너무 많은 부담이됩니다. /dev/zero몇 번 부터 쓰는 것이 좋습니다. 또는에서 쓸 수 있습니다 /dev/urandom.이 코드는 진정한 임의성이 떨어지면 의사 난수를 차단하지 않습니다.


답변

Linux에서 / dev / random은 고품질 의사 난수를 제공 하는 특수 파일입니다.
이 구현은 키보드, 마우스, 디스크 및 시스템 인터럽트에서 발생하는 이벤트에서 엔트로피를 수집합니다. ( 문서를 참조하십시오. ) 그러한 이벤트가 없을 때 엔트로피 풀이 비어 있으면 추가 환경 노이즈가 수집 될 때까지 / dev / random의 읽기가 차단됩니다. 문제가 설명되어 있습니다. 엔트로피 풀을 채우려면 키보드에서 키를 누를 수 있습니다.

다른 한편으로, 진정한 난수 생성기는 물리적 프로세스에서 난수를 생성 하는 하드웨어 난수 생성기를 사용 합니다. 이러한 프로세스에는 열 잡음 또는 광전 효과 또는 다른 물리적 현상. 이론적으로 이러한 과정은 완전히 예측할 수 없으며 예측할 수없는 이론에 대한 주장은 실험 테스트를 거칩니다.

하드웨어 난수 발생기는 일반적으로 물리적 현상의 일부 측면을 전기 신호, 증폭기 및 기타 전자 회로로 변환하여 임의 변동의 진폭을 거시적 수준으로 높이고 일부 유형의 아날로그-디지털 변환기를 변환기로 구성합니다. 무작위로 변하는 신호를 반복적으로 샘플링함으로써 일련의 난수가 얻어진다.

하드웨어 난수 생성기는 장치 드라이버 및 기타 소스에서 환경 소음을 엔트로피 풀로 수집합니다. 이 엔트로피 풀에서 난수가 생성됩니다. 읽을 때 / dev / random 장치는 엔트로피 풀의 추정 된 비트 수의 비트 내에서 임의의 바이트 만 반환합니다. 문제가 설명되어 있습니다.

하드웨어 RNG의 일부 구현은 커널 문서장치 정보에 설명되어 있습니다.

/ dev / random에 대응하는 것은 / dev / urandom ( “잠금 해제”/ 비 차단 임의 소스)이며 내부 풀을 재사용하여 의사 난수 비트를 생성합니다. 이는 호출이 차단되지 않지만 출력에 / dev / random의 해당 읽기보다 엔트로피가 적을 수 있음을 의미합니다.

따라서 CSPRNG (암호 적으로 안전한 의사 난수 생성기)를 생성하지 않으려면 / dev / urandom을 사용해야합니다.


답변

귀하의 질문에 대답하지 않고 여기에 완전한 답변이 있습니다- 라이브 CD 드라이브 와이퍼 인 Darik ‘s Boot and Nuke 일명 DBAN 도 확인할 수 있습니다 .


답변

shredcoreutils와 함께 제공 되는 명령을 사용하십시오 . 효율적인 방식으로 임의의 데이터를 사용합니다. dd는 저수준 도구이며 아마도이 작업에는 약간 낮은 수준 일 것입니다.
shred예를 들어 장치의 쓸 수없는 부분을 효율적으로 건너 뜁니다.