在網絡環境中的攻擊類型
消息保密性范疇: 1、泄密 2、傳輸分析
消息認證/數字簽名: 3、偽裝 4、內容修改 插入/刪除/轉換/修改(消息內容) 5、順序修改 插入/刪除/重排(以消息為單位) 6、計時修改 延時/重播
數字簽名: 7、發送方否認 8、接收方否認
消息認證函數
該函數用來產生認證符,可分成三類
1、Hash函數--以Hash值為認證符
2、消息加密--以整個信息加密后的密文作為認證符
3、消息認證符(MAC)--以消息和密鑰作輸入,產生定長值作為認證符
消息加密
1、對稱加密

可行性:既提供了保密性,又提供了認證。保密性源自加密和密鑰共享,認證則來自於密鑰共享。
不足:若明文合法性難以判定(如圖片或二進制文件等),則僅滿足保密性,卻無法認證。根源在於沒有能夠識別的結構對明文合法性進行驗證。
解決辦法:因為進行傳輸前只有發送方A知道明文M,A用函數F計算M生成錯誤檢測碼FCS,附在M后,然后一起加密發送給B。第三方在不能破解密文情況下不知道明文M,因此也就無法偽造出符合條件的FCS,而接收方也就能夠根據FCS進行身份認證。

2、公鑰加密

A用B的公鑰加密,B用自己的私鑰解密。由於任何人都能獲取B的公鑰,僅此無法判斷消息是從哪里發過來的,即無法認證。

A用自己的私鑰加密或者簽名,由於B只能用A的公鑰解密(約定明文合法性),因此有認證和簽名的功能。由於任何人都可以得到A的公鑰,因此不具有保密性。

A用自己的私鑰簽名,然后再用B的公鑰加密。由於只有B能夠用自己的私鑰解密,因此保證了保密性。而又只有A的公鑰能夠驗證簽名,因此還有認證和簽名的功能。
消息認證碼(MAC) Message Authentication Codes
MAC = C(K , M)
M是輸入消息;C是MAC函數;K是共享密鑰;
A計算出MAC后,將之附在不加密的明文M后面一起發送給B。B根據K和M重新計算MAC進行比對認證。
MAC有以下三種基本模式:

MAC函數與加密的區別:MAC算法不要求可逆,而加密算法必須可逆。
MAC函數與Hash函數的區別:MAC算法的輸入包含密鑰,而Hash不包含。
由於MAC基於共享密鑰,因此不能提供數字簽名。
使用MAC的優點:
1、MAC將加密性與認證分離開來,可以滿足只需要認證不需要加密的需求。同時MAC使得層次結構更加靈活,如可以在傳輸的不同的層次來分別完成加密和認證。
2、MAC不影響明文的讀取,可以一直附在明文后面,在需要的時候靈活認證。也可以延長對消息的保護時間,而不僅僅只是在傳輸的時候。也正是基於這一點,上圖b方案比c方案要更好一些。
MAC的安全性:
由於認證函數的數學性質,與加密相比,認證函數更不易被攻破。
因為MAC函數是一種多對一的函數,在窮舉攻擊下,給定明文和MAC值,攻擊者須遍歷所有可能的K以重現MAC值。由於可能有許多K都可以重現MAC值,因而並不能確定具體的認證密鑰,還必須再用新的明文MAC對再做驗證,直到K只剩下一種可能。
MAC函數應具有的性質:
1、攻擊者在已知M和MAC值以及MAC函數的情況下,要構造滿足MAC(K , M') = MAC(K , M)的消息M'在計算上不可行
該要求是防止攻擊者不知道密鑰的情況下也能夠構造出與給定MAC匹配的新消息。
2、對隨機的消息M和M',MAC(K , M) = MAC(K , M')的概率是2-n,其中n是MAC的位數
該要求是使MAC函數具有均勻分布的特點,對於選擇明文的窮舉攻擊平均都需要2n-1步才能找到具有給定MAC的消息
3、設M' = f(M),例如f可能是將M的一位或者多位取反,要求Pr[MAC(K , M) = MAC(K , M')] = 2-n
該要求是認證算法不應對消息的某些部位比其他部位的處理不均勻。
常見的MAC函數實現:
1、基於Hash函數的MAC--HMAC
2、基於分組密碼的MAC--DAA和CMAC
3、認證加密:CCM和GCM
