haorui: lauren, 還記得我們之前講的手套訂單問題嗎?
lauren: 記得裡面有很多安全問題,比如否認、抵賴,偽造、篡改等等。
haorui: 是的,我們學的hash函式可以解決篡改問題。
lauren: 是的,我們只要計算一下訂單的hash值就可以知道這個訂單在傳送的過程中是否被人篡改了。這樣說來,如果傳輸過程出現錯誤,hash函式也可以檢測出來。功能強大呀!
haorui: 我們己經學習了隨機數,主要用來作密碼使用;對稱加密演算法、非對稱加密演算法,用來解決訊息的機密性;雜湊函式,用來解決訊息的完整性。從今天開始,基本上不會講新的演算法了,需是用我們己經學過的知識,互相配合使用,一套套組合拳,解決不同的安全問題。
lauren: 原來我們學習這麼多了!我們的電子郵件系統用上hash函式就不用擔心傳輸錯誤,或者被篡改的問題了。
haorui: 回到手套訂單問題,我們來看看偽造問題,某人偽造了乙個訂單發給工廠。hash函式能解決嗎?
lauren: 不能,hash只能解決訂單的正確性,也就是完整性問題。也就是說,我們不知道訂單是否是從乙個合法的客戶發出來的。如何確認客戶的合法性是個問題。
haorui: 這有個主意,我們先對訊息計算hash值,然後對hash值進行加密,比如用des加密演算法進行加密碼。再把密碼事先告訴工廠。工廠收到訂單及加密的hash值後,對hash值進行解密到得hash值後就可以驗證訂單的完整性了。
lauren: good idea. 密碼只有工廠與客戶知道,所以第三者無法偽造訂單了。
haorui: 這就是我們今天要講的訊息認證碼,乙個帶對稱加密的hash函式。與hash函式對比一下,就多乙個加密步驟。見圖8.1:
我們再看看具體的流程,與hash函式的流程相相似。見圖8.2:
- 首先,雙方要共享乙個對稱金鑰。
- 客戶生成訂單,計算hash值並加密得到mac值,然後將訂單與mac值發給工廠。
- 工廠對訂單計算mac值並與接收到的mac對比。
- 兩個mac值相同,則證明訂單有效。
lauren: 所以我們用hash演算法加對稱密碼系統解決了偽造與篡改兩個安全問題。幹嘛不直接加密訂單發給工廠呢,訂單的內容而且是加密的。其它人還看不到。
haorui: 這個就要加密函式來保證訂單的完整性了,它不定能做到。再者,hash值是固定的,一般在1k位元組左右,比較小,加密起來比較快。
lauren: 明白了,訊息認證碼演算法長啥樣?
haorui: 可以用hash函式演算法來作為訊息認證碼的演算法,我們稱之為hmac。當然也有其它的演算法,比如hmac-md5, hhac-sha1。從命名可以看出,其主體演算法用的不同的hash函式。當然也有基於分組密碼的mac。如資料認證演算法(daa,dataauthentication algorithm),基於密碼的訊息認證碼(cmac,ciphermac)。daa是基於des-cbc演算法。cmac基於aes3des。
Lauren與密碼學9,數字簽名
lauren 我思考了一下,採用訊息認證碼的手套訂單還是有問題。客戶生成訂單,計算hash值,並且給hash值加密。這樣防止了篡改和別人偽造,但是因為密碼是在工廠與客戶之間共享的。客戶和工廠都有生成一模一樣訂單的能力。客戶否認說我沒有發過這個訂單,是工廠自己偽造的訂單。技術上來講,訊息認證碼沒有辦法...
密碼學基礎 OSG8
密碼用於 靜態 動態 使用中的資訊 目標 保密性 加密演算法實現 完整性 加密的資訊摘要實現,數字簽名 身份驗證 挑戰 應答 不可否認性 無冒充的傳送者,防止接受者聲稱沒有接到訊息,非對稱實現 布林數學 1 0 邏輯運算 與 and 有0則0 v 或 or 有1則1 非 not 取反 o 異或 xo...
公鑰密碼學 數字簽名和訊息認證的區別
在公鑰密碼學不足的問題在於怎麼讓接收方確定訊息的傳送者是誰,以及傳送的訊息是否被攻擊者篡改過,解決這兩個問題就可以讓公鑰加密變得完善 訊息認證 訊息認證就是確定接收者接收到的訊息是否真實,例如有沒有被改動過啊,訊息認證又叫完整性校驗,在我們通訊osi安全模型中稱作封裝,訊息認證具體可以認證哪些資訊呢...