任意長的M ——> 定長的哈希值,哈希值是認證符。
整個消息 ——> 密文,密文是認證符。
1、對稱密碼:
上圖中,如果消息是隨機序列,那麼無法判別是否被篡改。
於是,增加了FCS(校驗和 / 錯誤檢測碼)在末尾:
(a)內部錯誤控制;
(b)外部錯誤控制。
.
(a)更難篡改,因爲FCS被加密了;
而(b)的FCS暴露在外,很容易構造出正確的FCS。
2、公鑰密碼:
(b)僅有保密性;
(c)僅有認證;
(d)既有保密性,也有認證,但是公鑰算法一共執行4次。
又稱 「**校驗和」
消息和** ——> 定長的值,此值是認證符。
MAC算法不需要的可逆性,而加密算法必須可逆。
.
一般而言,MAC直接附在明文後面比較好(符合霍頓原則)。
(a)認證;
(b)認證+保密性,MAC與明文捆綁;
(c)認證+保密性,MAC與密文捆綁
.
(b)優點:更安全,正常人的選擇。
(c)優點:可以先檢驗認證,無誤後,纔會解密,節省資源。
必須使用MAC的情形:
- 將同一消息廣播給很多接受者。 只有一個人檢驗MAC,其他人直接解密,如果發現MAC出錯,這個人發出警報給所有人。必須用(b)才行。
- 接受者負荷大。 隨機選擇消息驗證MAC。(對稱密碼必須解密每條密文,不然讀不了,解密的同時也就驗證MAC了)
- MAC附在明文後面,每次驗證MAC不用解密。(對稱密碼想驗證MAC,只能通過解密密文)
補充:
由於雙方共享**,故MAC不提供數字簽名。(既然發送者能用**加密,一定是自己人)
可能的攻擊:
保密性:泄露;傳輸分析
完整性:內容修改;順序修改;計時修改(延時和重放)
認證:僞裝
不可否認性:發送方否認;接收方否認
.
消息認證 對付完整性和認證的攻擊。
1、弱抗碰撞性
2、無法窮舉明文
3、算法對消息的任一部分的認證,都不應比其他部分弱(木桶原理)
. .