Aes

知道隨機種子是否有助於破解 AES 或類似的問題?

  • May 25, 2020

假設我知道 Bob 用來向 Alice 發送加密電子郵件的隨機數生成器的種子。我在破譯資訊方面會有優勢嗎?另外,例如,openssl 如何生成一個完全隨機的種子,這樣生成的序列的其餘部分就不會被發現?我在這裡錯過了什麼嗎?

是的,它可以提供很大幫助。有很多例子,但DUHK 攻擊和任何例子一樣好。這使您可以被動地攻擊具有以下特徵的密碼系統:

  • 它使用 X9.31 隨機數生成器
  • 生成器使用的種子密鑰被硬編碼到實現中
  • 隨機數生成器的輸出直接用於生成加密密鑰
  • 至少有一些在用於製作密鑰之前或之後的隨機數是未加密傳輸的。這通常是 SSL/TLS 和 IPsec 的情況。

可以在此處找到它特定於 X9.31 PRNG 的原因(簡而言之,X9.31 有一個“長期種子密鑰”)。這個想法是,如果您知道長期種子密鑰,並看到一些直接輸出(第 4 個假設),您可以恢復 PRNG 的狀態,這足以(通過第 3 點)恢復生成的加密密鑰。

啟發式地,如果您的 PRNG 乙太少的熵開始,則它的輸出比協議的其他部分假設的“隨機性更小”,這可能會破壞協議的其他部分。


至於設備如何生成隨機種子,它們通常輪詢系統 RNG(通常/dev/urandom/在 UNIX 設備上)。如何/dev/urandom/生成隨機數?從環境(參見此處進行一些討論)。我不知道每個設備/作業系統目前使用的是什麼,但通常(理論上)密碼學家會提到以下內容:

  • 測量 CPU 上的溫度波動
  • 測量各種輸入設備(鍵盤/滑鼠)的時間,以及一般來自外部設備的其他“隨機”資訊

這些可能並非全部在實踐中使用,但可以直覺地了解設備可能具有哪些“隨機源”。請注意,某些設備(例如嵌入式設備)的可用資源可能較少——這導致了對嵌入式系統的攻擊。攻擊的後續論文。本文包括他們工作的以下動機:

動機:我們的工作受到 Heninger、Durumeric、Wustrow 和 Halderman 最近論文的啟發

$$ 16 $$,它揭示了 Linux 核心隨機子系統的設計和實現中的嚴重缺陷。該子系統公開了一個阻塞介面(/dev/random)和一個非阻塞介面(/dev/urandom);實際上,幾乎所有軟體都使用非阻塞介面。海寧格等人。觀察

  1. 在 Linux 估計已經收集到 192 位熵之前,系統收集的熵對非阻塞介面不可用,並且
  2. Linux 在估計事件中的熵時過於保守,特別是在嵌入式系統上,沒有觀察到的事件被認為是熵。

這兩個事實結合起來創造了一個“啟動時熵空洞”,在此期間, 的輸出/dev/urandom是可預測的。

Linux 維護人員根據 Heninger 等人的論文徹底檢查了隨機性子系統。現在每個 IRQ 的時間都是一個熵源,而不僅僅是硬碟、鍵盤和滑鼠的 IRQ。熵首先應用於非阻塞池,希望在啟動後不久向客戶端提供隨機性。(在阻塞介面上等待的客戶端可以阻塞更長時間。)

請注意,提到的 Heninger 等人的攻擊是Mining your P’s and Q’s attack,這是對 RSA 的攻擊。RSA 有一個公鑰,其中包含 $ n_i = p_iq_i $ ,兩個半素數的乘積。這次攻擊基本上收集了許多 $ n_1,\dots, n_k $ RSA 模數,然後搜尋(成對)它們之間的公約數(這可以變得非常有效)。任何這樣的公約數都允許您分解兩個模數。如果 PRNG 正常工作,那麼這背後的理論預測這將失敗。該攻擊暴露了 PRNG 無法正常工作,這是由於嵌入式設備啟動過程早期的熵不足。

請注意,“熵不足”可以被視為“有一些關於種子的部分資訊”。完全了解種子就是一個極端的例子,雖然這並不一定意味著每個密碼系統都會崩潰,但許多密碼系統會從較弱的假設中打破。

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