2012-01-10 135 views
25

我知道獨特的IV在加密時非常重要,可以防止頻率分析等攻擊。問題:For AES CBC encryption, whats the importance of the IV?有一個非常明確的答案來解釋IV的重要性。AES加密如何傳輸IV

以明文形式發送IV會有什麼安全漏洞嗎?或者是否需要使用用於發送對稱密鑰的相同公鑰/私鑰進行加密?

如果IV需要加密發送,那麼爲什麼不每次都生成一個新的對稱密鑰並將IV作爲密鑰的一部分?生成對稱密鑰是否太昂貴?或者是最小化傳輸的數據量?


頂端回答到Secret vs. Non-secret Initialization Vector狀態:

一個典型的密鑰建立協議將導致兩個涉及雙方計算一個數據,他們,但只有他們,都知道。使用Diffie-Hellman(或其任何橢圓曲線變體),所述共享數據片段具有固定長度,並且它們無法控制其值(它們只是得到相同的看起來隨機的比特序列)。

兩個實體如何在沒有共享信息的情況下導出「相同的表面上隨機的位序列」?是否將共享信息發送加密的假設?而且,如果共享信息被加密發送,爲什麼不直接發送加密的IV?


因爲應用程序需要安全地傳輸對稱密鑰,它似乎是從密鑰本身分離IV本質上是一個優化。或者我錯過了什麼?

+0

我過去曾經使用過的一個方案是每次生成一個隨機密鑰,並用先前共享的公鑰/私鑰對對密鑰和iv進行加密。我從來沒有覺得這會增加AES有效載荷(對於我的使用),但可能極其有限的通信協議可能對尺寸有更嚴格的要求 – rejj 2012-01-10 14:17:36

回答

25

通過以明文方式發送IV沒有任何安全漏洞 - 這類似於以明文形式存儲哈希值的鹽:只要攻擊者無法控制IV /鹽,並且只要它是隨機的, 沒有問題。

26

初始化向量和密鑰之間的主要區別是密鑰必須保密,而IV不一定是 - 它可以被攻擊者讀取而不會對加密的安全性產生任何危險有關計劃。

這個想法是,你可以使用相同的密鑰來處理幾個消息,只爲每個消息使用不同的(隨機)初始化向量,所以純文本之間的關係不會顯示在相應的密文中。也就是說,如果您使用的是像Diffie-Hellman這樣的密鑰協議方案,它爲每個會話提供新的共享密鑰,您也可以使用它來生成第一個初始化向量。與直接選擇初始化向量並將其與消息一起發送相比,這並沒有帶來太多的安全優勢,但是可以節省一些帶寬和一些來自隨機源的熵。如果其中一個合作伙伴有一個糟糕的隨機性來源(儘管DH在這種情況下也不是很安全),它會使IV更隨機一些。

兩個實體如何在沒有共享信息的情況下導出「相同的表面上隨機的位序列」? 是否假設共享信息已發送加密?而且,如果共享信息被加密發送,爲什麼不直接發送IV加密?

的Diffie-Hellman是基於羣論問題:伊芙知道一個(環式)基團G與發電機g並看到兩個值g^a(從Alice發送到Bob)和g^b(從鮑勃發送到Alice),其中ab是由Alice和Bob選擇的隨機大整數,並且Eve和甚至其他夥伴都不知道)。共享祕密然後是(g^a)^b = g^(a·b) = (g^b)^a。顯然鮑勃(誰知道b)可以計算出祕密爲(g^a)^b,而愛麗絲(誰知道a)可以計算出(g^b)^a。夏娃需要得到這個祕密來破解協議。

在某些羣體這個(被稱爲計算Diffie-Hellman問題)似乎是一個很難的問題,我們正在使用的密碼,這些羣體。 (在原始的DH中,我們使用一些大的有限素數域的乘法羣的素數的子羣,在橢圓曲線DH中,我們在有限域上使用橢圓曲線羣,其他羣也起作用)

然後Alice和Bob都使用密鑰派生函數來導出實際的密鑰材料(即,兩個方向的加密密鑰,MAC密鑰和開始IV)。

+0

非常有幫助,謝謝 – RunHolt 2012-01-12 14:19:48