Cryptanalysis

網路攝像頭隨機數生成器

  • November 23, 2018

我有一個關於隨機數生成器的問題。

我從一個基於網路攝像頭(“randcam”)的真實隨機數生成器中讀取。我的問題是,我並不真正了解隨機數的生成是如何工作的。有沒有人聽說過這個原則並且可以給出一些提示如何實現它?這種方法有多隨機,我讀過它應該給出真正的隨機數,但這是真的嗎?我在 C++ 中找到了一個實現,但我並沒有真正理解這個實現是如何工作的,我對 C++ 不是很熟悉。

對“randcam”的快速網路搜尋向我展示了這個德語頁面“Zufallszahlen aus der Webcam”,翻譯為“來自網路攝像頭的隨機數”。(第一個 Google 結果頁面上的所有其他點擊都是關於不相關的無活塞轉子發動機)。

這個頁面是關於同一站點上的一個程序,它試圖從網路攝像頭收集熵並從中產生“真實的”隨機數。從連結頁面(我沒有嘗試閱讀原始碼)中,程序嘗試通過計算後續幀之間的差異來從光電感測器中提取電雜訊,然後將差異字節組裝成塊並使用 MD5 對每個塊進行雜湊處理. 這些塊的大小(以及數量)根據測量的熵針對每個差異幀進行調整(但沒有描述如何測量),並且還取決於一些可調整的因素。

使用來自網路攝像頭的電子雜訊作為熵輸入的想法聽起來不錯。當然,我希望看到對可以收集的熵進行更理論的分析,而不僅僅是統計測試(有密碼學上糟糕的 RNG 可以通過所有統計測試),我會使用更合理的數據密碼處理。

從加密方面來看,我不會為此使用 MD5,而是使用更新的散列函式,如 SHA-2 系列之一。雖然 MD5 損壞的抗碰撞性在這裡不是問題,但當您的對手可以插入自己的設備並提供任意位而不是圖像時,將 MD5 用於任何與安全相關的事情對您的聲譽不利。

我會使用熵池設計密碼隨機數生成器。來自網路攝像頭的熵將被添加到熵池中,該池使用偽隨機函式混合,然後由另一個偽隨機函式提取隨機數。為此有標準化的結構。

正如 DW 評論的那樣,仍然缺少一些分析(例如,我們實際上從差異中得到了多少熵?),以及圍繞這個加密的理由。所以我還不建議將它用於任何生產用途。

引用自:https://crypto.stackexchange.com/questions/5542