random.c에 사용 된 엔트로피 추정치를 설명 할 수 있습니까?


12

/dev/random커널 interupts의 타이밍을 사용하여 엔트로피 풀에 추가합니다. 풀의 엔트로피 양은이라는 변수에서 추적됩니다 entropy_count.

의 관련 코드 스 니펫은 다음과 같습니다 random.c. 변수의 마지막 두 interupts delta와 델타의 차이 사이의 시간을 (jiffies로 생각합니다) 나타냅니다 delta2.

delta = time - state->last_time;
state->last_time = time;

delta2 = delta - state->last_delta;
state->last_delta = delta;

if (delta < 0) delta = -delta;
if (delta2 < 0) delta2 = -delta2;
delta = MIN(delta, delta2) >> 1;
for (nbits = 0; delta; nbits++)
  delta >>= 1;

r->entropy_count += nbits;

/* Prevent overflow */
if (r->entropy_count > POOLBITS)
  r->entropy_count = POOLBITS;

추가 된 엔트로피의 추정값은 기본적으로 델타의 밑이 2 인 로그의 바닥 (루프 이전의 초기 비트 시프트 때문에 멈춤이 아님) 인 것으로 보입니다. 이것은 직관적으로 이해가되지만 공식적으로 올바른 것으로 만들기 위해 어떤 가정이 필요한지 잘 모르겠습니다.

첫 번째 질문은 "이 추정치의 추론은 무엇입니까?"입니다.

두 번째 질문은 delta = MIN(delta, delta2) ...입니다. 이것은 무엇을 하는가? 왜이 델타의 최소값과 마지막 델타를 취합니까? 나는 이것이 무엇을 성취 해야하는지 모르겠습니다. 아마도 견적을 더 좋게 만들거나 아마도 더 보수적 일 것입니다.

편집 : 추정값을 지정 하는 논문을 찾았 지만 실제로는 그에 대한 합리적인 논증을 제시하지는 않습니다 (추정자가 충족 해야하는 비공식적 인 조건이 요약되어 있음).

의견에 나온 다른 자료들 :


1
리눅스에서 엔트로피 추정값은 /dev/random불안정한 기초에 있습니다. Feeding / dev / random entropy pool? . 토마스가 당신의 질문에 대답하기를 바라면서 핑을했습니다.
Gilles 'SO- 악마 그만해'

이 주제에 관심이있는 사람이 있다면 Wikipedia에서 이에 대한 치료를 시작하는 것이 좋습니다. en.wikipedia.org/wiki//dev/random
slm

1
@Lucas-이 논문도 살펴보십시오 : [Linux 엔트로피 추정기의 해석] ( eprint.iacr.org/2012/487.pdf )
slm

@slm 흥미롭지 만 확실하지는 않지만 Kolmogorov 복잡도를 사용하여 최소 기능을 정당화하는 단계는 추론에서 큰 도약이며 개념적으로 건전하다는 것이 명확하지 않습니다.
Lucas

@Lucas-내가 그것을 통과 할 줄 알았는데, 나는이 리그에서 나왔습니다. 8-)
slm

답변:


5

delta2이전 delta이 아니라의 두 연속 값의 차이 입니다 delta. delta속도를 측정 delta2하면 가속도는 일종의 미분 입니다.

이 추정의 배후에있는 직관적 인 아이디어는 물리적 세계에서 예측할 수없는 이벤트 (예 : 키 스트로크 또는 네트워크 패킷 도착)에 의해 인터럽트가 임의의 간격으로 발생한다는 것입니다. 지연이 길수록 예측할 수없는 이벤트가 더 많이 발생합니다. 그러나 고정 속도로 발사하는 물리적 시스템이 있습니다. delta2측정 (모두, 따라서 확실히 예측 인터럽트가 일정 간격으로 발생하는 경우 등의 발생을 검출하는 보호 메커니즘 delta따라서, 동일한 값을 가질 것이다 delta2제로가 될 것이다).

나는 "직관적"이라고 말했고 더 이상 할 말이 없습니다. 실제로 "무작위 물리적 이벤트"모델에서는 비트 수를 잘못 계산합니다. 하드웨어 이벤트가 각 시간 단위에 대해 확률 p 로 발생하고 n 비트에 걸쳐 지연이 표시 되면 엔트로피 기여는 n 비트가 아닌 n / 2 비트로 간주되어야합니다 . 그러나 실제로 실제 사건은 정확히 임의의 순간에 발생하지 않는다는 것을 알고 있습니다. 메커니즘은 많이 인정하고있다.delta2

실제로, "엔트로피 추정치"는 정확히 다음과 같습니다. 추정치 . 보안 가치는 합리적이고 수학적으로 정확한 근거가 아니라 일반적인 보안 출처에서 비롯됩니다. 아무도 그것을 남용 할 방법을 찾지 못한 것 같습니다.


이 페이지 는 신화에 대한 신화 /dev/random와 엔트로피 추정기에 익숙한 사람에 의해 작성되었으며 충분한 세부 사항으로 내용을 잘 설명한다고 생각합니다. RNG를 다룰 때 기본적인 아이디어를 얻는 것이 중요합니다.


죄송합니다. 델타 변경 사항을 말 했어야합니다. 그것이 작동하는 경우 - 나는 대부분의 평가는 "잘 추론, 수학적으로 정확한 정당성", 추측에서 그들을 구별 무엇을해야합니까 '라고해야 전혀 그것을해야 몇 가지 형식적인 정당성을. 이러한 것들에 신경 쓰지 않고 보안의 실용주의에만 신경 쓰면 괜찮지 만 모든 사람에게 해당되는 것은 아닙니다. 흥미로운 것에 동의하지 않는 것은 "기본 아이디어를 올바르게 얻는"문제가 아닙니다.
Lucas

나는 그것이 당신의 잘못이 그것이 계획된 목적을위한 실제적인 추정이라고 말하는 것은 아닙니다.
Lucas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.