Bạn có thể giải thích ước tính entropy được sử dụng trong Random.c


12

/dev/randomsử dụng thời gian của các hạt nhân xen kẽ để thêm vào nhóm entropy. Số lượng entropy trong nhóm được theo dõi trong một biến có tên entropy_count.

Đây là đoạn mã có liên quan từ random.c. Nó đại diện cho thời gian (trong jiffies tôi nghĩ) giữa hai lần xen kẽ cuối cùng trong biến deltavà sự khác biệt về đồng bằng như 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;

Có vẻ như ước tính của entropy được thêm vào thực chất là sàn (không phải trần vì bithift ban đầu trước vòng lặp) của logarit cơ sở 2 của delta. Điều này có ý nghĩa trực quan, mặc dù tôi không chắc những giả định nào sẽ cần thiết để thực hiện chính xác điều này.

Vì vậy, câu hỏi đầu tiên của tôi là "lý do đằng sau ước tính này là gì?"

Câu hỏi thứ hai của tôi là về delta = MIN(delta, delta2) .... Cái này làm gì Tại sao lấy tối thiểu của đồng bằng này và cuối cùng? Tôi không biết những gì cần phải đạt được - có lẽ nó làm cho ước tính tốt hơn, có thể chỉ là bảo thủ hơn.

Chỉnh sửa: Tôi đã tìm thấy một bài viết chỉ định ước tính , nhưng nó không thực sự đưa ra một lý lẽ hợp lý cho nó (mặc dù nó phác thảo một số điều kiện không chính thức mà người ước tính sẽ đáp ứng).

Các tài nguyên khác đã được đưa ra trong các ý kiến:


1
Lưu ý rằng giá trị của ước tính entropy trong Linux /dev/randomlà trên một nền tảng run rẩy - xem nhóm entropy ngẫu nhiên / ăn / ngẫu nhiên? . Tôi đã ping Thomas với hy vọng anh ấy sẽ trả lời câu hỏi của bạn.
Gilles 'SO- ngừng trở nên xấu xa'

Nếu bất cứ ai quan tâm đến chủ đề này, việc điều trị về nó trong Wikipedia là một điểm khởi đầu khá tốt: en.wikipedia.org/wiki//dev/random
slm

1
@Lucas - hãy xem bài viết này: [Giải thích về công cụ ước tính entropy Linux] ( eprint.iacr.org/2012/487.pdf )
slm

@slm Thú vị, mặc dù tôi không chắc là nó đúng - bước biện minh cho hàm tối thiểu sử dụng độ phức tạp Kolmogorov là một bước nhảy vọt lớn trong lý luận và đối với tôi không rõ ràng về mặt khái niệm này.
Lucas

@Lucas - Tôi nghĩ rằng tôi sẽ vượt qua nó, tôi sẽ rời khỏi giải đấu của mình với điều này 8-)
slm

Câu trả lời:


5

delta2không phải là trước đó delta, nhưng sự khác biệt giữa hai giá trị liên tiếp của delta. Nó là một loại đạo hàm: nếu deltađo tốc độ, delta2là gia tốc.

Ý tưởng trực quan đằng sau ước tính đó là các ngắt xảy ra ở các khoảng thời gian ngẫu nhiên ít nhiều, được quyết định bởi các sự kiện không thể đoán trước từ thế giới vật lý (ví dụ: các nét chính hoặc sự xuất hiện của các gói mạng). Càng trì hoãn lâu, các sự kiện không thể đoán trước có liên quan. Tuy nhiên, có những hệ thống vật lý làm gián đoạn lửa ở một tốc độ cố định; các delta2biện pháp là một cơ chế bảo vệ trong đó phát hiện sự cố như vậy (nếu ngắt xảy ra trong khoảng thời gian cố định, do đó decidedly thể dự đoán được, tất cả deltasẽ có cùng giá trị, do đó delta2sẽ là zero).

Tôi đã nói "trực quan" và không có nhiều điều để nói. Trong thực tế, trong mô hình "các sự kiện vật lý ngẫu nhiên", việc đếm các bit là sai; nếu một sự kiện phần cứng xảy ra với xác suất p cho mỗi đơn vị thời gian và bạn nhận được độ trễ được biểu thị trên n bit, thì đóng góp entropy phải được tính là n / 2 bit, không phải n bit. Nhưng chúng ta biết rằng trong thực tế, các sự kiện vật lý không xảy ra vào những thời điểm chính xác ngẫu nhiên; các delta2cơ chế thừa nhận càng nhiều.

Vì vậy, trong thực tế, "ước tính entropy" chính xác là: ước tính . Giá trị bảo mật của nó không đến từ một lý do chính đáng, chính xác về mặt toán học, mà từ nguồn bảo mật thông thường: dường như không ai tìm được cách lạm dụng nó (chưa).


Trang này được viết bởi một người đã chán ngấy với những huyền thoại về /dev/randomvà công cụ ước tính entropy của nó, và tôi nghĩ nó giải thích mọi thứ tốt, với đủ chi tiết. Điều quan trọng là có được một số ý tưởng cơ bản ngay khi giao dịch với RNG.


Ooops, tôi sai chính tả, tôi nên nói thay đổi trong đồng bằng. Tôi có thể nói rằng hầu hết các ước tính này có một "nổi lập luận, biện minh về mặt toán học chính xác", đó là những gì phân biệt chúng từ dự đoán - và nếu nó hoạt động ở tất cả nó phải có một số biện minh chính thức. Sẽ không sao nếu không quan tâm đến những điều này và chỉ quan tâm đến tính thực dụng của bảo mật, nhưng điều này không đúng với mọi người. Không đồng ý về những gì thú vị không phải là vấn đề nhận được "ý tưởng cơ bản đúng".
Lucas

Tôi không nói rằng sai lầm của bạn trong đó là một ước tính thực tế cho các mục đích mà nó được thiết kế.
Lucas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.