Điểm:2

Phương pháp xử lý hậu kỳ cho Trình tạo số ngẫu nhiên thực

lá cờ de

Tôi đang tìm phương pháp hậu xử lý để cải thiện tính ngẫu nhiên của Trình tạo số ngẫu nhiên thực. Đặc biệt, TRNG có thể vượt qua NIST SP 800-22 sau khi áp dụng xử lý hậu kỳ.

Tôi đã thử áp dụng Trình tạo số giả ngẫu nhiên Enocoro-128_v2 làm phương pháp xử lý hậu kỳ cho TRNG. TRNG sẽ cung cấp hạt giống cho Enocoro. Sau đó, Enocoro hoạt động và tạo đầu ra. Sau khi áp dụng phương pháp này, kết quả có thể được cải thiện. TRNG có thể được thông qua NIST SP 800-22.

Câu hỏi của tôi: Tại sao Trình tạo số giả ngẫu nhiên Enocoro-128_v2 có thể cải thiện hiệu suất của TRNG?

SAI Peregrinus avatar
lá cờ si
Định nghĩa của bạn về "Trình tạo số ngẫu nhiên thực" là gì? Điều gì làm cho nó trở thành "True", trái ngược với Trình tạo số ngẫu nhiên phần cứng thông thường? IME a TRNG là một cấu trúc giả thuyết, giống như một lời tiên tri ngẫu nhiên, phát ra các bit không thể đoán trước được phân phối hoàn toàn đồng nhất, không tương quan, do đó sẽ không cần xử lý đầu ra. Chúng là một cấu trúc hữu ích để chứng minh một số định lý, không phải là một thiết bị thực sự.
lá cờ de
True Random Number Generator có nghĩa là chúng tôi sử dụng các nguồn nhiễu vật lý (Ring Oscillator, PLL, Metastable,...) để tạo số ngẫu nhiên.
Điểm:0
lá cờ cn

Nó không thể, ngay cả khi không biết cách thức hoạt động của "Trình tạo số giả ngẫu nhiên Enocoro-128_v2", vì PRNG sẽ có $H_{ra} < H_{in}$

Bạn dường như có một nguồn entropy có lẽ tạo ra các mẫu ngẫu nhiên Kolmogorov. Những cái có phân phối không đồng đều mà bạn sẽ có thể nhìn thấy từ hàm/biểu đồ khối lượng xác suất và nó không đạt SP 800-22. Và chúng có thể tự tương quan. Điều đó có nghĩa là $H_{\infty} \ll 1$ bit/bit. Chạy 800 90b của NIST ea_iid kiểm tra để xác nhận.

Việc bôi nhọ PRNG lên trên chỉ đơn giản là che giấu entropy Kolmogorov bên dưới bằng entropy giả có thể dự đoán được ($H_{\infty} =0 $ từ góc độ TRNG). Một số người đã mô tả một công trình như vậy như một PRNG phần cứng. Tuy nhiên, để bất kỳ TRNG nào xứng đáng với tên gọi, nó phải đáp ứng khía cạnh quan trọng nhất của thiết kế TRNG, đó là entropy được tạo ra > đầu ra độ dài. Chính thức hơn: $H_{ra} \ngtr H_{in}$.


Với một chút giả mạo PRNG, bất kỳ nguồn entropy nào cũng có thể tạo ra entropy đầu ra với tốc độ gần như vô hạn. Chẳng hạn, TRNG (RDRAND) trên chip Intel được cho là tạo ra gần 2 Gb/s. Thông suốt Rác rưởi & bừa bộn. Con chip này rõ ràng có $H_{ra} \gg H_{in}$.

Vì vậy, trích xuất bài đăng, một nguồn ngẫu nhiên yếu dường như xuất hiện với tính ngẫu nhiên tốt hơn nhiều và sự thiên vị khỏi sự hoàn hảo bị giới hạn bởi Bổ đề băm còn lại:-

$$ \epsilon = 2^{-(sn-k)/2} $$

nơi chúng ta có $n$ = bit đầu vào tại $s$ bit/bit của entropy thô từ nguồn, $k$ là số bit đầu ra từ bộ trích xuất (và $<n$). $\epsilon$ là sự thiên vị từ một thống nhất hoàn hảo $k$ chuỗi độ dài bit, tức là $H(k) = 1 - \epsilon$ bit/bit. NIST chấp nhận điều đó $\epsilon < 2^{-64}$ cho các ứng dụng mật mã.

Tuy nhiên, $\epsilon$ có thể dễ dàng được làm nhỏ hơn nhiều. tôi nhắm đến $2^{-128}$. Đối với trình giải nén, bạn có thể sử dụng SHA-512 ($k=512$) để giảm thiểu tổn thất entropy. Bạn có thể nhìn thấy $n/k$ tỷ lệ và hiệu quả tương đối trong các biểu đồ này: -

biểu đồ1

biểu đồ2


Vì vậy, để kết luận, bạn không cần/không nên sử dụng PRNG trên nguồn entropy của mình. Nếu bạn đang tạo một TRNG, hãy biến nó thành một TRNG phù hợp. Tốc độ không phải là tất cả những gì quan trọng.

Rốt cuộc, bạn có thể làm gì với tất cả những thứ Kolmogorov đó?

Maarten Bodewes avatar
lá cờ in
Ví dụ của Intel đã trực tiếp tuân theo tuyên bố rằng entropy phải lớn hơn kích thước của đầu ra. Tôi đã chỉnh sửa câu trả lời để rõ ràng là Intel **không** làm điều này. Lưu ý rằng đối với Intel, RDRAND đã được định nghĩa là "Đối với phân loại RNG đã thảo luận ở trên, DRNG tuân theo mô hình RNG xây dựng theo tầng, sử dụng nguồn entropy thường trú của bộ xử lý để **liên tục tạo CSPRNG do phần cứng triển khai.**" Vì vậy nếu bạn muốn tấn công Intel, có lẽ bạn sẽ phải tấn công RDSEED chứ không phải RDRAND (điều mà bạn dường như làm trong câu trả lời được liên kết với mình).
Maarten Bodewes avatar
lá cờ in
Bạn có thể vui lòng thử và đặt một chút ít cảm xúc tiêu cực hơn trong bài đăng của mình không? Các tuyên bố như "... và tôi không quan tâm" hiện đã bị xóa sẽ gây ra tình cảm tiêu cực, điều này không giúp ích cho chất lượng của câu trả lời. Tương tự, bạn đang chỉ ra rằng Intel có RDSEED "rubbisch", trong khi chỉ liên kết với câu trả lời của riêng bạn. Tại sao không gọi nó là "rất nghi vấn"? Điều đó đã dẫn tôi đến một lượt phản đối trước đó, trước khi tôi quyết định rằng tôi thực sự đồng ý với ý chính của những gì bạn đang viết ra và thực hiện chỉnh sửa để nó dễ hiểu hơn/trang trọng hơn một chút.
Maarten Bodewes avatar
lá cờ in
Có lẽ bạn có thể đưa ra một kích thước đầu vào ví dụ cho SHA-512 w.r.t.số bit dự kiến ​​được tạo bởi thiết bị entropy? Tôi cho rằng bạn đang sử dụng phép nối các giá trị băm được tạo sau đó?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.