MAC與HMAC介紹

在密碼學中,(消息認證碼)Message Authentication Code是用來認證消息的比較短的信息。換言之,MAC用來保證消息的數據完整性和消息的數據源認證。

MAC由消息本身和一個密鑰經過一系列計算產生,用於生成MAC的算法,稱爲MAC算法。MAC算法應能滿足如下幾個條件:

在僅有消息本身沒有密鑰的情況下,無法得到該消息的MAC;
同一個消息在使用不同密鑰的情況下,生成的MAC應當無關聯;
在已有一系列消息以及其MAC時,給定一個新的消息,無法得到該消息的MAC。
下圖摘自維基百科,可以很好的描述MAC的使用原理:
MAC與HMAC介紹

#HMAC

HMAC是MAC算法中的一種,其基於加密HASH算法實現。任何加密HASH, 比如MD5、SHA256等,都可以用來實現HMAC算法,其相應的算法稱爲HMAC-MD5、HMAC-SHA256等。

以下僞代碼,描述了HMAC算法的計算過程:

function hmac (key, message)
    if (length(key) > blocksize) then
        key = hash(key) // keys longer than blocksize are shortened
    end if
    if (length(key) < blocksize) then
        key = key ∥ [0x00 * (blocksize - length(key))] // keys shorter than blocksize are zero-padded (where ∥ is concatenation)
    end if

    o_key_pad = [0x5c * blocksize] ⊕ key // Where blocksize is that of the underlying hash function
    i_key_pad = [0x36 * blocksize] ⊕ key // Where ⊕ is exclusive or (XOR)

    return hash(o_key_pad ∥ hash(i_key_pad ∥ message)) // Where ∥ is concatenation
end function
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章