訊息認證碼(MAC)

2022-07-21 11:18:10 字數 1818 閱讀 7610

訊息認證碼:帶密碼的hash     (能提取訊息的'指紋')

訊息認證碼 mac (message authentication code)是種訊息認證技術。

傳送方a和接收方b共享金鑰

k,若a向b傳送訊息。則a計算利用c=f(k,m)計算mac值:然後將原始訊息m和c一起傳送給接收方。

接收方b對收到的訊息m用相同的金鑰進行相同的計算得出新的mac值c'。並將接收到的c與其計算出的c'進行比較,若相等,則:

(1)接收方可以相信訊息未被修改。                               如果被修改,hash值會不等

(2)接收方可以確信訊息來自真正的傳送方。      k值只有a、b知道,能知道來自誰

f是mac函式,它利用金鑰和任意長度的訊息來生成乙個固定長度的短資料塊c。

cbc-mac

基本思想:                               

首先,填充資料,形成一串n位元組

其次,使用cbc模式加密這些資料      cbc (cipher block chaining)模式

對最後的輸出分組進行選擇處理和截斷(如果m設n位元資料組d1,d2,…dq.

則mac的具體計算過程如下:

1.置i1=d1,計算o1=ek(i1)。

2.對i=2,3,…,q,完成下列計算

ii⊕oi-1=di

oi=ek(ii)

3.對oq進行選擇處理和截斷,獲得m位元mac.其中ek表示分組密碼的加密函式.

若資料不是加密演算法分組長度的整數倍,則需進行訊息填充,填充方法有:

方法1:對需要計算mac的資料的右邊填充若干個或零個「0"位元,以便得到乙個位元長度是n的整數倍的資料串。

方法2:對需要計算mac的資料的右邊先填充乙個「1"位元,然後填充若干個或零個「0"位元,以便得到乙個位元長度是n的整數倍的資料串。

方法3:首先對需要計算mac的資料的右邊填充若干個或零個0」位元,以便得到乙個位元長度是n的整數倍的資料串:其次,在所到的資料串的左邊填充乙個n位元組:該組包含了未進行填充的資料的位元長度的二元表示,其左邊用「0"補齊。

注:如果驗證者不知道資料的長度,則應選用填充方法或3,因為這兩種方法可使驗證者查明所填充的那些「0」位元.

hmac

hmac的基本觀點:

使用hash函式h,k1和k2(k1≠k2)計算mac=h(k1||h(k2||m)),其中k1和k2由同乙個金鑰k匯出

hmac的工作流程如下:

h是乙個hash函式

k表示金鑰

b表示計算訊息摘要時訊息分塊的位元組長度(對md5和sha-1是512位元,64位元組)

l表示訊息摘要按位元組計算的長度(對md5是16位元組)

ipad表示0x36重複b次,opad表示0x5重複b次

k可以有不超過b位元組的任意長度,但一般建議k的長度不小於l。當使用長度大於b的金鑰時,先用田對金鑰進行雜湊,然後用得出的l位元組作為hmc的真正金鑰

計算乙個資料「文字」的hmac的操作如下:

1.在k的後面加上足夠的0以得到b位元組的串

2.將上一步得到的b位元組串與ipad異或

3.將資料流「文字」接在第2步得到的b位元組串後面

4.將h應用於上一步的位元串

5.將第1步所得到的b位元組串與opad異或

6.將第4步的訊息摘要接在第5步的b位元組串後面

7.應用於上一步的位元串

前面的描述可以表述為h((k⊕opad)||h(k⊕ipad||text))

訊息認證碼 hmac

hmac hash message authentication code 是用來確認訊息的完整性及認證訊息的傳送者的技術 完整性,是通過判斷hash值來確定的 認證,是通過對稱密碼的金鑰來完成的 因為是對稱密碼,所以傳送發和接收方事先需要共享金鑰 公式 hmac hash msg,key 傳送方傳...

訊息認證碼 CMAC

於nist的標準 recommendation for block cipher modes of operation the cmac mode for authentication nist 基於分組密碼cbc模式的 訊息認證碼,最後乙個分組 可能需要填充填充10.0 與子金鑰異或後參與cbc模...

Lauren與密碼學8,訊息認證碼MAC

haorui lauren,還記得我們之前講的手套訂單問題嗎?lauren 記得裡面有很多安全問題,比如否認 抵賴,偽造 篡改等等。haorui 是的,我們學的hash函式可以解決篡改問題。lauren 是的,我們只要計算一下訂單的hash值就可以知道這個訂單在傳送的過程中是否被人篡改了。這樣說來,...