Cbc

nonce 和 IV 的區別

  • August 19, 2014

我知道 nonce 和 IV 之間的一般區別。我特別希望澄清Phil Rogaway在“評估某些塊密碼操作模式”中使用的這些術語。在描述例如 CBC 的分組密碼模式時,他說了以下內容(第 5 頁中的表格)-

如果 IV 只是一個 nonce,或者它是在該方案使用的相同密鑰下加密的 nonce,則無法實現機密性,正如標準錯誤地建議的那樣。

在這種情況下,我不明白 IV 和 nonce 之間的區別。如果我隨機選擇 nonce 會不會和 IV 一樣?我在這裡想念什麼?

對於 CBC 模式,初始化向量稱為 IV,因為它不是隨機數。有一些方法可以構造 nonce,使其不滿足 CBC 模式的需要。隨機 IV 是一代選擇,通常很好。 Nonce也可以是一個計數器,這裡不行。

定義

Nonce表示使用一次的數字。 IV表示初始化向量。

CBC模式安全

為了 CBC 模式(在這種情況下為 SemCPA)的安全性,IV必須是不可預測的,必須事先使用IV。但是,一旦使用IV,該值就不需要保密。

生成IV的一種方法是生成隨機數。對於 CBC IV大小(128 位),獲得與先前使用的 IV 之一相同的**IV值極為罕見。此外,根據定義,隨機數是不可預測的。

這樣的IV值也是隨機數,因為這些數字只使用一次(很有可能,除非使用相同密鑰的加密次數非常多)。

但是,還有其他方法可以生成nonce。生成隨機數的常用方法之一是使用遞增數字(以 1 遞增或使用線性回饋移位寄存器)。這種方法滿足了nonce的必要要求,但不能滿足CBC 模式的IV需求(不可預測性)。(在 Rogaway 的論文中,“Random IV”用於隨機 IV 生成,“nonce IV”用於其他生成隨機數的方式。)

Rogaway 的論文關注的是調查 AES 通常的分組密碼操作模式提供的安全性,如果它們已按照 NIST 論文中的定義實現。NIST SP 800-38A涉及 CBC、CFB、OFB 和 ECB 模式。NIST SP 800-38A(附錄 C)提出了兩種為 CBC 模式生成IV的方法,隨機 IV 和使用前向密碼函式的基於 nonce 的方案( $ C = E_K^R(P) $ ) 來生成 IV。

Rogaway 的這篇論文指出,使用前向密碼功能的基於隨機數的方案不能提供預期的安全性。

隨機四

使用 Random IV 時,請記住,如果您生成 $ 2^{64} $ IV,有大約 50% 的可能性不是所有的 IV 都是唯一的。因此,您需要確保使用單個密鑰的加密量不要太大。

並且…如果隨機數生成器不是一個好的隨機數生成器,則可能會違反不可預測性。因此,通常您應該確保 IV 使用加密安全的 RNG。

沒有太大區別,實際上這些術語通常用於表示相同的事物。然而,在這種情況下,Nonce 不必保持 IV 具有的隨機屬性。正如論文中所解釋的:

一種機率加密方案 $ C = \varepsilon^R_K (P) $ 是一種基於 IV 的加密方案,在語法上,但我們建議在安全定義中,IV 將被視為一個隨機值 $ R $ . 基於隨機數的加密方案 $ C = \varepsilon^N_K (P) $ 在語法上是基於 IV 的加密方案,但我們建議在安全定義中,IV 將被視為隨機數 $ N $ :對於給定鍵最多使用一次的值。

所以是的,如果你隨機選擇隨機數,那麼CBC和論文中定義的*#CBC*是相同的。

請注意,論文中對*#CBC的攻擊表明未滿足NIST 對#CBC的要求(未實現**SemCPA安全性)。在實踐中,密碼在特定協議中可能是安全的,例如當CPA*(選擇明文攻擊)不適用時。

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