簡體   English   中英

如何利用易受攻擊的pRNG?

[英]How to exploit a vulnerable pRNG?

消息來源經常指出,如果pRNG具有可預測的種子(如日期時間),則結果輸出的熵很小,可以被利用。

但是您實際上如何利用pRNG? 您是否需要長時間觀看輸出流? 在這種情況下,您要分析什么以及如何使用它?

是否有關於該主題的論文?

假設您懷疑系統僅在很短的時間內就植入了非常弱的pRNG,那么您如何確認懷疑? 你如何使用它?

或者,如果您要測試pRNG以查看它是否非常弱,您將如何處理?

蝙蝠俠的神聖問題。 希望我參加聚會不是太晚。

But how do you actually go about exploiting the pRNG?

這取決於使用它的系統,並且將從下一個隨機數的知識中獲得什么(如果有)優勢。

您是否需要長時間觀看輸出流? 在這種情況下,您要分析什么以及如何使用它?

瞧,這很大程度上取決於所使用的RNG類型。 例如,考慮兩種不同的RNG算法,兩者都隨系統時間而變化。 第一個是線性同余生成器或LCG,第二個是Mersenne Twister。 如果您具有用於LCG的算法,則可以在僅看到一個隨機數后預測下一個數字。 即使您不知道,如果您知道種子和/或可以訪問相當大小的輸出隨機數流,也可以在幾分鍾內用蠻力解決。

至於梅森納捻線機,即使您知道算法,在仍可能預測下一個之前,仍然需要輸出624個隨機數,更不用說編寫該算法的復雜性。

因此,利用難度已經有了巨大的差異。 一旦找到了blum blum shub或其他類似的適合密碼的算法,它幾乎變得不可能。

是否有關於該主題的論文?

負載。 無論如何,這里有一些文章:

這是整個基於RNG的漏洞利用的非常酷的示例

這一點更專注於RNG本身

假設您懷疑系統僅在很短的時間內就植入了非常弱的pRNG,那么您如何確認懷疑? 你如何使用它?

同樣,這取決於所使用的RNG。 對於具有一些基本知識的LCG,找出它不會花太長時間。 對它們進行一些閱讀,您會明白我的意思。 對於更復雜的事情,難度將成倍增加。

或者,如果您要測試pRNG以查看它是否非常弱,您將如何處理?

PRNG具有句點,或一個數字循環,將不斷重復。 這是一個很好的判斷方式。 如果選擇了錯誤的數字或生成器,有時它們確實很短。 如果您可以無限制地訪問生成器(例如,如果您要進行質量檢查的代碼中包含一些黑盒的Random()函數),那么一個非常簡單的測試就是有效的,它只是記錄您獲得的第一個數字,然后請稍等片刻,再等待多長時間。 如果它在幾分鍾內發生(2 ^ 32個數字),則說明您正在處理一個簡單的LCG。 對於像梅森·扭轉者這樣的東西,它不會再出現幾千年了(2 ^ 19937 − 1)。

希望這有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM