2009-05-03 9 views
2

자연스러운 입력을 위해 알고리즘으로 생성 된 임의의 종류의 임의의 숫자 (예 : 주사위 굴림)를 우회 할 수있는 것이 좋을 것입니다. 예를 들어, 암호화 키 생성은 필자에게 충분한 데이터가 거의 필요없는 상황으로 치고, 실제로 데이터가 무작위이어야한다는 요구는 충분히 실현 가능하고 바람직한 일일 수 있습니다.사용자 입력을 통해 엔트로피 풀을 작성하는 소프트웨어가 있습니까?

내가 손에 들어가기 전에 알아 두어야 할 것은 임의의 숫자 입력에서 직접 엔트로피 풀을 만드는 소프트웨어가 있습니까? 단순히 기수 r에서 기수 2로 변환하는 것만으로는 충분하지 않습니다. 예를 들어, 3과 2는 상대적으로 소수이기 때문에 기수 입력에서 최대 엔트로피를 유지하면서 기수 -3 (또는 기수 -6) 숫자를 2 진수로 변환하는 것은 완전히 간단하지 않습니다.

답변

4

디바이스 /dev/random은 Linux에서 정확히 이것을 수행합니다. 소스를 살펴볼 가치가 있습니까?

편집 : joeytwiddle 말한다 충분한 임의성를 사용할 수없는 경우

는, /dev/random (예를 들어 마우스, 디스크 드라이브)를 외부 장치를 모니터링하여 "구축"에 엔트로피를 기다리는 차단합니다. 이것은 당신이 원하는 것일 수도 아닐 수도 있습니다. 기다리지 않고 더 낮은 품질의 임의성에 만족한다면, 대신 /dev/urandom을 사용하십시오. 사용 가능한 경우 임의의 숫자를 /dev/random에서 주입하는 비 차단 의사 난수 생성기이므로 일반 결정 성보다 무작위입니다 PRNG. (자세한 내용은 man /dev/urandom을 참조하십시오.)

+1

/dev/random은 사용자 상호 작용 (마우스/키보드) 및 디스크 액세스 속도로부터 입력의 일부를 얻게되며 자연스럽게 현상에 영향을줍니다. 이러한 입력이 없으면/dev/random 출력은 느리게 출력됩니다 (실제 임의의 데이터를 기다리고 있음)! – joeytwiddle

+0

/dev/random은 사용자 상호 작용 (마우스/키보드)과 디스크 액세스 속도에서 자연스럽게 영향을받는 일부 입력을 얻습니다. 이러한 입력이 없으면/dev/random 출력은 느리게 출력됩니다 (실제 임의의 데이터를 기다리고 있음)! – joeytwiddle

+0

@joey : 그러나 IIRC 루트는 엔트로피를 풀에 제공하고 자체 견적을 제공 할 수 있습니다. 따라서 적절한 setuid 프로그램은 신뢰할 수있는 사용자의 주사위 굴림을 받아 들일 수 있고/dev/random에 피드를 제공 할 수 있습니다. 그러면 사용자가 주사위를 굴릴만큼 빠르게 출력합니다 (즉, 여전히 매우 천천히 ...) –

2

paper은 UN * X 및 Windows 모두에 대한 구현 아이디어가있는 다양한 접근 방식을 제시합니다.

2

나는 당신이 무엇을 요구하고 있는지 확실하지 않습니다. "엔트로피 풀"은 "임의의 숫자"에 대한 단어 일 뿐이므로 확실히 주사위 롤을 사용할 수 있습니다. 단순히 원하는대로 특성을 가진 의사 난수 생성기에 표시된 것처럼 사용하십시오.

예를 들어 Lavarnd 또는 Hotbits에서 실제로 생성 된 임의의 숫자를 온라인으로 가져올 수 있습니다.

+1

나는 "엔트로피 풀 (entropy pool)"에 의해 엔트로피 콜렉터라고 부르는 것을 의미한다고 생각합니다. 따라서 "임의의 숫자"뿐만 아니라 각 입력에 대한 엔트로피 추정치와 함께 입력을 받아들이고 요청 된 비트 수에 대해 현재 상태에서 엔트로피가 충분하다면 출력을 제공합니다. –

0

풀의 엔트로피 양은 반드시 정수 일 필요는 없습니다. 이것은 주로 2 인자가 아닌 다른 문제를 다루어야합니다.

정수 계산이 필요한 구현을 사용하더라도 암호화 키를 생성하려면 몇 개의 주사위 굴림이 필요합니다. 그래서 당신은 움큼으로 그들을 요구할 수 있습니다. 사용자가 10 d6 롤의 결과를 제공하고 엔트로피를 25 비트로 추정하면 주사위 당 0.08 비트를 잃어 버렸을 것입니다. 반올림하는 것을 잊지 마십시오 ;-)

Btw, 나는 하드웨어 자원에서/dev/random과 같은 것을 추출하지 않고 TRNG 데이터를 사용자에게 묻는 대신 개선점보다는 재미있는 장난감으로 취급 할 것입니다. 전문가가 임의의 숫자를 생성하는 것만으로는 충분하지 않습니다. 일반 사용자가 자신의 아마추어 리를 자비로 남겨두고 싶지는 않습니다. "난수 생성은 너무 우연한 일입니다."- Rovet Coveyou. 다른 말로하면, BSD의 저자는 PC 하드웨어에 대한 실제 소스에 대한 엔트로피 추정이 잘 이해되지 않았기 때문에 (물리 문제가 아닌 수학 문제 임), PRNG를 사용하는 것은 실제로 그런 것이 아니라고 주장한다. Schneier/Kelsey/Ferguson의 Yarrow 디자인에 따라 잘 리 시드 된 경우 옵션이 잘못되었습니다.귀하의 주사위 아이디어는 적어도 사용자가 공정한 주사위를 찾아서 제대로 굴릴 수있는 한 엔트로피의 하한값을 자신있게 지정할 수 있다면/dev/random에 대한 엔트로피의 일반적인 소스보다 장점이 있습니다. 좋은 쌍안경 쌍 및/또는 키보드에서의 도청 수단 (예 : E/M 방출)이있는 관찰자가 전체 계획을 깨뜨릴 수 있다는 단점이 있으므로 실제로 모든 것은 위협 모델에 달려 있습니다.

+0

알고리즘 적으로는 해결 된 문제입니다. 를 참조하십시오. 오히려 입력을 수집하기위한 인터페이스를 제공하는 실제 소프트웨어에 대해 이야기하고 있습니다. –

+0

UI가 포함 된 패키지가 완성 되었습니까? 개인적으로 엔트로피 컬렉터 (commodity entropy collector)에 대한 내 자신의 견해와 함께 내 자신의 UI를 배치하기 위해 정착 할 것입니다. –

+0

"알고리즘 적으로 문제는 해결되었습니다"- RPG 스토어에서 구입할 수있는 8 면체 주사위를 사용하십시오 ;-) –