Aes

如何將 AES 轉換為 PRNG 以執行 NIST 統計測試套件?

  • March 14, 2020

我想對我的 AES 實現進行統計測試。我應該如何將其轉換為 PRNG?有沒有標準的方法來做到這一點?儘管這是由 NIST 在過去選擇 AES 期間完成的,但我找不到太多關於此的資訊。

答案很簡單。AES 本身就是一個偽隨機函式,因此單塊加密的輸出將產生 128 位的偽隨機數。

現在要使用 AES 生成更長的序列,您必須使用分組密碼模式來實現相同的操作。

以下是一些非常流行的 PRNG 模式的小列表:

  1. Counter(CTR):計數器模式將塊密碼轉換為同步流密碼。它需要一個 IV 或隨機數,它與一個計數器組合併用分組密碼加密。計數器可以是任何非重複函式,但是簡單的加一就足夠安全了,更不用說最有效了。

點擊率加密 點擊率解密

  1. 輸出回饋(OFB):這也將塊密碼轉換為同步流密碼。它以 IV 開始加密,並通過加密前一個塊來操作。

OFB加密 OFB解密

  1. 密碼回饋(CFB):這個將分組密碼轉換為自同步流密碼。它以 IV 開始,對輸出進行異或以獲得第一個密文塊,並將每個前一個密文塊用作下一個 IV。 CFB 加密 CFB解密

您也可以使用其他模式,但它們可能不太適合在流密碼中使用,因此它們會很慢。否則,您問題的最終答案是使用安全分組密碼模式。而且,更不用說,它們也適用於散列函式。

正如 David Wong 評論的那樣,NIST 提出了 CTR-DRBG 作為安全的方法。 這是使用 CTR-AES-128 在 Python 中實現的連結。

然而,應該注意的是,最近(2019 年 11 月)發布了側通道攻擊(由 COSICS 的 Lauren De Meyer 撰寫),僅使用 256 個 CTR-AES 的功率軌跡來恢復密鑰和隨機數。

因此,如果對手知道設備的功耗,在從 CTR-AES 生成許多隨機數時應該非常小心。

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