Symmetric
在(簡化的)Needham-Schroeder 協議上,nonce 可以完全隨機嗎?
從我目前所讀到的內容來看,nonce 是隨機的一次性值,除了密文之外,它們還以明文形式發送,以驗證發送者/接收者的身份。理論上,如果 nonce 是隨機的,攻擊者 E 可以攔截 Alice 指定給 Bob 的消息,並通過生成隨機 nonce 冒充 Bob,而無需與 Bob 通信。
因此,如果請求-響應協議是:
A → B:n A
B → A: {n A , n B } K
A → B : n B
nA,nB 是隨機數,K 是 Alice 和 Bob 之間的對稱共享密鑰。
- 攻擊者可以通過改變隨機數來對 Alice 進行反射攻擊嗎?這樣 A 被認為 B 正在與 A 發起通信而被愚弄,然後她將共享用密鑰加密的兩個 nonce,
在這種情況下(修改協議的第二行):
B → A: {n A , n E } K
導致已知明文攻擊。在這種情況下,攻擊者對明文和密文都有了解,因此他可以推導出密鑰。
- 協議中的這個缺陷可以通過以下方式修復:
- 將 k 應用於隨機數?
- 在第二個密文中包括 B(接收者)的標識符?
修復提案
A → B: {n A } k
B → A: {B, n A } k
A → B : {n B } k
導致已知明文攻擊。在這種情況下,攻擊者對明文和密文都有了解,因此他可以推導出密鑰。
這對於任何現代密碼設計都是不可行的。密碼的設計使得即使攻擊者可以訪問大量匹配的明文和密文,密鑰仍然無法恢復。
如果 Alice 允許與 Bob 的會話(她既是發送者又是接收者)交錯並為兩者使用相同的密鑰,那麼您的協議就會受到反射攻擊。它是這樣的:
- 會話 1:Alice 生成並發送 $ n_A $ 給鮑勃,但被馬洛里截獲
- 第 2 節:馬洛里反映 $ n_A $ 回到假裝是鮑勃的愛麗絲
- 會話 2:Alice 生成 $ n_B $ 並發送 $ (n_A,n_B)_K $ 給鮑勃,但被馬洛里截獲
- 第 1 節:馬洛里反映 $ (n_A,n_B)_K $ 回到愛麗絲
- 會話 1:Alice 解密 $ (n_A,n_B)_K $ 並檢查 $ n_A $ 是她在會話 1 開始時發送的那個。如果是這樣,她發送 $ n_B $ 給鮑勃,但它被馬洛里攔截了。
- 第 2 節:馬洛里反映 $ n_B $ 回到愛麗絲。
在會話 2 中,Alice 收到回 $ n_B $ 她預期的值,並且在兩個會話中,協議都使她相信她正在與 Bob 通信。加密初始隨機數不會阻止此攻擊。