CBC 變體:為什麼用不同的密鑰加密隨機數?
我是密碼學的新手。我對CBC加密有所了解。您不想對每條消息都使用相同的“IV”,因為這樣密碼就不是很隨機。我的問題是關於基於隨機數的 CBC。我的主要問題是為什麼需要使用與消息的其餘部分不同的密鑰來加密隨機數?
還有一個問題是nonce需要不同嗎?或者它可以是可預測和可重複使用的嗎?
下面是我所指的圖片。這張圖片很好地展示了我所指的觀點,但沒有解釋它。為什麼k1 = k不能?
(摘自Dan Boneh 和 Victor Shoup的應用密碼學研究生課程,問題 5.14)
我認為這與隨機數選擇模型有關,特別是允許攻擊者選擇隨機數(只要它是唯一的)。
如果我們假設這樣的攻擊者是合理的,那麼如果 nonce 使用與其他所有內容相同的密鑰加密,那麼攻擊者可以執行選擇的 nonce/明文攻擊作為區分符,並允許攻擊者解密低-熵明文。
下面是它的工作原理:假設攻擊者有一個他猜測的密文 $ t $ 到價值 $ m[i] $ , 和(當然,密文值 $ c[i-1] $ 和 $ c[i] $ )。然後,攻擊者構造一個消息,第一個塊是 $ c[i] \oplus t \oplus c[i-1] $ , 並要求使用 nonce 值對其進行加密 $ t \oplus c[i-1] $ . 然後他檢查生成的密文的第一個塊;如果它恰好是值 $ c[i] $ ,那麼(很有可能)他的猜測是正確的。
如果他的猜測 $ t $ 是正確的,也就是說,如果 $ t = m[i] $ ,那麼我們有 $ c[i] = E_k( t \oplus c[i-1]) $ (因為這是加密器用來創建的公式 $ c[i] $ )
所以,這就是加密過程要做的事情:模式首先加密隨機數;隨機數是 $ t \oplus c[i-1] $ ,所以加密的結果是 $ c[i] $ . 然後與明文消息的第一個塊進行異或運算,即 $ c[i] \oplus t \oplus c[i-1] $ ; 該異或的結果是 $ t \oplus c[i-1] $ . 然後加密;同樣,加密的結果是 $ c[i] $ ; 這是加密的第一個塊。
如果 $ t \ne m[i] $ , 兩次加密的結果不太可能恰好是值 $ c[i] $ .
讓最初加密隨機數的過程使用不同的密鑰來阻止這種攻擊。
現在,如果我們假設攻擊者不能任意選擇隨機數(例如隨機數是連續的),那麼這種攻擊不適用;重複使用相同的密鑰是安全的。