消息認證碼
定義
將通信雙方共享的密鑰K和消息m作為輸入,生成一個關於K和m的函數值MAC,將其作為認證標記(Tag)。發送時,將消息和認證碼同時發送給接收方,若接收方用消息和共享密鑰生成相同的消息認證碼,則認證通過。

消息認證碼用於保證數據的完整性。即防止數據被非授權用戶篡改。需要注意的是:僅加密是無法保證數據的完整性的(如對ECB模式的攻擊),因此需要認證。常見的消息認證碼包括以下幾類:
- 基於分組密碼的MAC
- 基於帶密鑰的Hash函數的MAC
- 基於泛Hash函數的MAC
認證的安全性模型
攻擊者選擇消息發送給MAC,MAC將相應的Tag值返回,通過該方法可以得到任意消息的認證碼。若攻擊者可以另外找一個其他的消息,並能夠偽造其認證碼,則攻擊成功,MAC被攻破。

標准MAC算法

基於分組密碼的MAC
CBC-MAC
對消息使用CBC模式進行加密,取密文的最后一塊作為認證碼(相當於用異或操作進行了壓縮)
- 優點:構造簡單,底層算法具有黑盒性質,方便替換。
- 缺點:無法處理變長消息;可以偽造消息通過認證,比如:
已知:\((M1,M2,M3,T)\) 和 \((M1,M2,T1)\),可偽造\((M1,M2,M3,M3\oplus T \oplus T1,T)\)通過認證。

EMAC
EMAC為CBC-MAC的改進。利用1或0對明文消息進行填充,從而可以處理變長消息。
- 優點:可處理變長消息。
- 缺點:若消息是整分組,最后一塊完全處理填充消息,會造成浪費。

XCBC->TMAC->OMAC
XCBC、TMAC、OMAC均為對CBC-MAC和EMAC的改進,結合了兩者的優點。若消息為整分組,則采取下圖左邊的方案;若消息不是整分組,則采取下圖右邊的方案。
- XCBC:\(K_1,K_2,K_3\)均不相同
- TMAC:\((K_2,K_3)=(K \cdot u, K)\)
- OMAC1 和OMAC2: \((K_2,K_3)=(L\cdot u,L\cdot u^2)\) 或 \((K_2,K_3)=(L\cdot u,L\cdot u^{-1})\),\(L=E_K(0^n)\)

CMAC=OMAC1
下圖中,\((K_1,K_2)=(L\cdot u,L\cdot u^2)\),\(L=E_K(0^n)\)

基於泛哈希函數(Universal Hash Function)的MAC
基於泛哈希函數的MAC
- Rogaway : Bucket hashing (1995)
- Halevi-Krawczyk : MMH (1997)
- Black-Halevi-Krawczyk-Krovertz-Rogaway : UMAC (1999)
- Bernstein: Poly1305(2005)
Almost Universal(AU) Hash Function 和 Almost Xor Universal(AXU) Hash Function
Almost Xor Universal hash function(AXU) 的定義如下圖,即保證輸出異或值的隨機

AXU函數舉例
- 例1
- \(H: \{0,1\}^n \times \{0,1\}^n \rightarrow \{0,1\}^n\)
- \(H(K,M) = K· M\)
- \(1/2^n-AXU\)
- 例2

Almost Universal(AU):只要保證對於不同輸入,輸出相同值的概率很低即可,不必保證輸出異或值的均勻性。也就是上圖中的式子無需對任意C成立,只要C=0時成立即可。AU性質要比AXU弱一些。
Wegman-Carter方案
-
應用場景
Wegman-Carter MAC 在量子通信領域有較多的應用,可運用於多用戶量子密鑰分發(MQKD)中用戶的身份的驗證。
使用時,兩個用戶預先共享相同的密鑰。然后,他們使用這個共享密鑰從一個通用哈希函數類中選擇一個哈希函數,並根據所選的哈希函數計算公共消息的哈希值。通過這種方式,它可以同時實現消息和身份驗證。然而,這種方法不適用於大型網絡。當一個網絡上有m個用戶時,如果一個用戶想和其他任一用戶進行QKD,他應該提前持有m-1個密鑰。因此,整個網絡需要0(m^2)數量級的密鑰量,這對於一些大型網絡來說是一個新的負擔。
另一種常見方法是引入一個第三方,即由第三方產生會話密鑰,並通過安全的量子密鑰分發協議將其分別傳給兩個通信用戶。這里需要滿足一個前提條件,即這個第三方必須是可信的。然而,在現實生活中,尋找這種完全可信的第三方是比較困難的。
相比於傳統通信,量子通信最大的優勢在於量子密鑰分發替換了傳統密鑰協商或預共享的密鑰確立機制。 -
方案介紹
先用泛哈希壓縮數據,再一次一密得到認證碼。密鑰K需要不斷更新。

- 安全性證明
這里的泛哈希函數選擇AXU,只要選擇的AXU函數是安全的,那么Wegman-Carter方案就是安全的。

如果AU后面直接用PRF處理而不是生成隨機值后一次一密異或處理(例如用分組密碼處理生成MAC) 就不用使用AXU,滿足AU性質即可。
- 實例化:128-EIA3
128-EIA3是基於流密碼ZUC的消息認證碼,采用Wegman-Carter方案。它是由中國提出的國際算法標准(3GPP標准LTE的完整性算法,EEA3為同步提出的機密性算法)。

