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.