Elliptic-Curves
ECIES:MAC的目的?
假設:
- $ A $ 想交流 $ B $
- $ A $ 知道公鑰 $ P_B $ 受第三方信任並屬於 $ B $
- $ A $ 知道假裝某人的地址 $ B $
$ A $ 想發消息給 $ B $ 使用ECIES:
- $ A $ 計算隨機私鑰 $ K $ 和相關的公鑰 $ P $
- $ A $ 計算共享秘密 $ Z $ 使用 $ K $ 和 $ P_B $ 根據ECIES
- $ A $ 從共享密鑰派生對稱密鑰 $ k_1|k_2=\text{KDF}(Z_x) $
- $ A $ 加密消息 $ c=\text{ENCRYPT}_{k_1}(m) $
- $ A $ 標記加密的消息 $ t=\text{MAC}_{k_2}(c) $
- $ A $ 發送 $ P|c|t $ 對假裝的人 $ B $
問題:
- 能 $ A $ 假設,只有 $ B $ 可以閱讀留言嗎?我認同。
- 作為 $ B $ 什麼都不知道 $ A $ MAC的加密目的是什麼?作為 $ K $ 和 $ P $ 是特定於消息的任何人都知道 $ P_B $ 可以使用有效的 MAC 將此消息發送到 $ B $ !?
- 刪除 MAC 步驟會降低ECIES的安全性嗎?我假設,但我不明白為什麼。
能 $ A $ 假設只有 $ B $ 可以閱讀留言嗎?
只有擁有對應私鑰的人 $ P_B $ 可以閱讀消息。如果 $ A $ 可以假設只有 $ B $ 有它,這行得通。
作為 $ B $ 什麼都不知道 $ A $ MAC的加密目的是什麼?
這樣其他人就無法修改加密的消息。
我們要防止的是有人可以拿走加密的消息 $ E_{P_B}{m} $ ,並對其進行修改,使其成功解密為消息 $ m’ $ , 在哪裡 $ m $ 和 $ m’ $ 有關係。如果沒有 MAC,有人可能會嘗試以下方法:
- 取密文 $ c = ENCRYPT_{k_1}(m) $
- 將其替換為 $ c’ $ , 解密為 $ k_1 $ 進入 $ m’ $
- 重新打包成 $ P|c’ $ 作為新的加密消息。
這通常是可行的,因為許多加密方法使修改加密消息成為可能(即使您不知道加密密鑰 $ k_1 $ )。一個例子是計數器模式。如果您翻轉加密消息的任何位,則解密的相應位也將翻轉(沒有其他更改)。
因此,在沒有 MAC 的情況下,Eve 可能能夠獲取加密消息:
$ ENCRYPT( \text{ “Transfer one million into Bob’s account, password Rhinosaurus” }) $
並將其更改為
$ ENCRYPT( \text{ “Transfer one million into Eve’s account, password Rhinosaurus” }) $
使用 MAC,這種類型的消息修改是不可行的。
所以在這種情況下,MAC Eve 仍然可以發送“有效”消息到 $ B $ ,但只要 Eve 沒有密碼(“Rhinosaurus”),Eve 就無法執行或修改交易。