2014年11月15日 星期六

訊息鑑別技術

Message Authentication



每說到文件識別技術,我們通常關心三件事:
  • 送出的訊息是否完整且正確 (protect integrity)
    • 你不會希望在匯款時多送了幾個 0
  • 發訊人的身分是不是正確的 (validate identity)
    • 防止有人假冒你幹些雞鳴狗盜的勾當
  • 發訊人不可否認曾做過的事 (Non-repudiation)
    • 沒辦法切割幹過的壞事
要實踐訊息鑑別,有兩個簡單的方法:
  • CBC - residue , CMAC(Cipher-based MAC):在區塊加密時進行鑑別
  • HMAC :另外用個雜湊函式(Hash) 進行鑑別

什麼是MAC

是Message Authentication code的縮寫,它是文件經過某些演算法(MAC algorith)產生的,能夠擷取出文件訊息,從加解密的而言,我們可以把它當成一個Checksum,用其進行完整性或身分檢查。


要使用MAC,傳送方跟接受方需要共享一把鑰匙,這可以視為MAC演算法的一個參數。每當傳送方發送文件時,會經由演算法送出MAC,並附在文件中,接收方在收到文件後,會對收到的文件再做一次演算,如果兩方得出的MAC是相同的,可以假定這份文件沒被修改過。

CBC - Residue 

使用了2把Key,一把用於進行CBC模式,一把用於產生MAC(Residue)。CBC - Residue在加密過程幾乎沒有改變,唯一的不同是在最後的明文Pn的加密,他分成兩個部份,我們把Pn和密文Cn-1做XOR產生的東東叫做Xn好了,一是Xn用Key1加密產生最後一份密文Cn,二是Xn用Key2加密產生一個渣渣,這個渣渣跟密文一點關係都沒有,我們把他當做一個校正碼。因為CBC特有的雪崩效應,使得先前的加密有ㄧ些小改變就會造成後續一連串的錯誤,所以我們才能把這個渣渣用做比對。

HMAC

1.什麼是 Hash ?

Hash是一個單向函式,假設有一個Hash函式H,H(X) = A, 你無法透過A得到X,從加解密而言,Hash做到的只有加密,而沒辦法解密,因此Hash只會用來做驗證及比較。

2.HMAC

道理很簡單,我們有相同鑰匙,相同算法,那麼對相同明文,Hash出來的東西就該相同。

Authenticated Encryption

加密做的是:保證資料的安全
驗證做的是:保證資料的完整

而雙管齊下就是Authenticated encryption,直觀來看有這幾種型式:

但是他們都有一個缺點,就是對於N個區塊而言,他們往往要進行2N次的處理。為了解決這個問題,出現了IAPM與OCB這兩種新模式。

IAPM


S0~SM是用做擾亂資料,因為這是個近似ECB的模式。Sigma P 是由P1XorP2...XorPm-1得出的,Cm即為產生的校正碼。

OCB (Offset codebook Mode)


OCB參考資料
Checksum = M1 ⊕…⊕ Mn

沒有留言:

張貼留言