HMAC
RFC 2014給出了HMAC的設計目標:
- 不必修改而直接使用現有的hash函式、
- 如果找到或者需要更快或更安全的hash函式,應該很容易替代原來嵌入的hash函式
- 應保持Hash函式原有性能,不能過分降低其性能
- 對密鑰的使用和處理應該比較簡單
- 如果已知嵌入的HAsh函式的強度,則完全可以知道認證機制抗密碼分析的強度
HMAC的總體結構如圖所示


更為有效的HMAC實作方式如圖所示

任何建立在嵌入Hash函式基礎上的MAC,其安全性在某種程度上依賴于該Hash函式的強度,HMAC的好處在于,設計者可以證明嵌入Hash函式的強度與HMAC的強度之間的聯系,能夠成功攻擊HMAC的概率等價于對嵌入Hash函式的攻擊之一:
- 對攻擊者而言,即使IV是隨機的,秘密的,未知的,攻擊者也能計算壓縮函式的輸出
- 即使IV是隨機的秘密的,攻擊者也能找到Hash函式中的碰撞
基于分組密碼的MAC:DAA(資料認證演算法)和CMAC(基于密碼的訊息認證碼)
DAA是建立在DES上,使用廣泛的MAC演算法之一,但是發現這個演算法存在安全弱點,

DAA采用DES運算的CBC模式,初始向量為0,需要認證的資料分組,DAC可以是整個塊,也可以是最左邊m位,
DDA演算法在政府和工業界應用廣泛,但是這種演算法在合理的安全準則下使用的時候有一個限制:僅能處理固定長度為mn的訊息,其中n是密文分組的長度,m是一個固定的正整數,Black和Rogaway證明了這種限制可以使用三個密鑰來克服:一個密鑰長度為K,用在密文分組鏈接的每一步,兩個長度為n的密鑰,其中k是密鑰的長度,n是密文分組長度,后又優化了這個結構,使得兩個n位的密鑰可以從加密密鑰匯出,而不是單獨提供,這種優化被NIST采用作為CMAC的運算模式,

計算程序為

![]()
如果訊息不是密文分組長度的整數倍,最后分組的右邊填充一個1和若干0使得最后的分組長度為b,
認證加密:CCM和GCM
認證加密(AE)是指在通信中同時提供保密性和認證的加密系統,四種同時提供認證和加密的通用方案:
- HtE:先Hash再加密,對M先用密碼學Hash函式計算,然后將訊息和Hash值一起加密
- MtE:先MAC再加密,使用兩個密鑰,先計算MAC,然后將訊息和MAC一起加密
- EtM:先加密在MAC,使用兩個密鑰,先加密明文,然后對密文計算MAC,得到密文和MAC值
- E&M:加密并MAC,使用兩個密鑰,加密明文,對明文計算MAC,得到密文和MAC值
CCM是E&M方案的改進,可提供認證和加密,組成CCM的關鍵演算法是AES加密演算法,CTR作業模式和CMAC認證演算法,在加密和MAC演算法中共用一個密鑰K,CCM加密程序的輸入包括三部分:
- 將要被認證和加密的資料,即明文P
- 將要被認證但不需要加密的資料A
- 臨時量N作為負載和相關資料的補充,對每天訊息在協議生命期內,N的取值唯一,可防止重放攻擊等


CCM是一個相對復雜的演算法,對明文需要兩次完整的處理:一次用于生成MAC,一次用于加密,臨時量和MAC的長度進行這種選擇,加密密鑰在CTR模式下使用了兩次,
Galois/計數器模式基于并行設計,可以提供高效的吞吐率和低成本、低延遲,本質是訊息在變型的CTR模式下加密,密文結果與密鑰以及訊息長度資訊在域上相乘,
GCM模式使用兩個函式:帶密鑰的Hash函式GHASH,以及計數器每次真增加1的CTR模式的GCTR,


GHASH將Hash密鑰H和位串X作為輸入,其中位,m是正整數,輸出128位的MAC值,

GCTR將密鑰K和任意長度的位串X作為輸入,輸出是長度與X相同的密文Y,
![]()

計數器值可以被快速生成,加密操作可以并行執行,整個認證加密函式如圖所示

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/163688.html
標籤:其他
下一篇:DES演算法和原理
