Hash函數(shù)(消息認(rèn)證)_第1頁(yè)
Hash函數(shù)(消息認(rèn)證)_第2頁(yè)
Hash函數(shù)(消息認(rèn)證)_第3頁(yè)
Hash函數(shù)(消息認(rèn)證)_第4頁(yè)
Hash函數(shù)(消息認(rèn)證)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

哈希函數(shù)——消息認(rèn)證認(rèn)證(authentication)是防止網(wǎng)絡(luò)系統(tǒng)遭受主動(dòng)攻擊的重要技術(shù)認(rèn)證的主要目的有兩個(gè)第一,驗(yàn)證消息的發(fā)送者是真的,而不是冒充的,稱(chēng)為實(shí)體認(rèn)證,包括信源、信宿等的認(rèn)證和識(shí)別。第二,驗(yàn)證信息的完整性,即驗(yàn)證數(shù)據(jù)在傳送或存儲(chǔ)過(guò)程中未被篡改、重放或延遲,稱(chēng)為消息認(rèn)證。11消息認(rèn)證碼帶密鑰的Hash函數(shù)稱(chēng)為消息認(rèn)證碼(MAC:messageauthenticationcode).消息認(rèn)證碼是實(shí)現(xiàn)消息認(rèn)證的重要工具.MAC有兩個(gè)不同的輸入,一個(gè)是消息x,另一個(gè)是密鑰K.MAC產(chǎn)生定長(zhǎng)的輸出.實(shí)例:某一個(gè)大公司A想給它的客戶(hù)發(fā)布一個(gè)新產(chǎn)品的廣告,A希望不對(duì)廣告內(nèi)容加密,但又希望其它公司不能修改廣告內(nèi)容或冒充公司A發(fā)布同樣的廣告,或者當(dāng)廣告內(nèi)容被修改后能夠發(fā)現(xiàn).如果使用不帶密鑰的Hash函數(shù),由于其它公司可能在修改廣告內(nèi)容后產(chǎn)生新的散列值,從而使A無(wú)法確認(rèn)原廣告是否被修改.

設(shè)計(jì)MAC算法的要求在不知道密鑰的情況下,難以找到兩個(gè)不同的消息具有相同的輸出。21消息認(rèn)證碼基于分組密碼CBC工作模式構(gòu)造MAC基于分組密碼CBC工作模式構(gòu)造MAC算法已經(jīng)成為ISO/IEC9797標(biāo)準(zhǔn),它使用密文鏈接和雙密鑰三重加密技術(shù)。設(shè)EK表示以K為密鑰的加密算法,設(shè)K’是一個(gè)與K不同的密鑰,消息分組長(zhǎng)度為n。首先把消息x分成L個(gè)n位塊x=x1x2…xL,計(jì)算:hK是一個(gè)n位MAC.記為CBC-MAC.31消息認(rèn)證碼基于Hash函數(shù)構(gòu)造MAC設(shè)h是一個(gè)(不帶密鑰)Hash函數(shù),K是密鑰,x是消息,則定義消息認(rèn)證碼hK如下:基于MD5算法直接構(gòu)造消息認(rèn)證碼MD5-MACMD5-MAC算法使用96字節(jié)的常數(shù)其中下標(biāo)加法運(yùn)算是模3相加.如果密鑰K的長(zhǎng)度小于128位,則通過(guò)多次自行鏈接,最后截取左邊128位作為以下算法中使用的密鑰K。41消息認(rèn)證碼將密鑰K擴(kuò)展成3個(gè)16字節(jié)的子密鑰K0,K1,K2,其中把K0,K1分成4個(gè)32位的子串Kj[i](j=0,1,i=0,1,2,3)對(duì)MD5進(jìn)行修改:用K0代替MD5的4個(gè)32位寄存器ABCD.把K1[i]與MD5第i+1遍中每個(gè)常數(shù)232sin(j)進(jìn)行模232加法.將512位的分組鏈接到消息x右邊,再按MD5的要求進(jìn)行填充.

將上一步的結(jié)果輸入到修改后的MD5中,取其輸出的前一半(64位)作為消息x的消息認(rèn)證碼MD5-MAC(x).MD5-MAC軟件實(shí)現(xiàn)比較容易,其運(yùn)算速度與MD5大體相近.52HMAC算法

消息認(rèn)證碼HMAC(keyed-hashingformessageauthenticationcode)是Bellare等人于1996年提出,1997年作為RFC2104發(fā)表,成為事實(shí)上的Internet標(biāo)準(zhǔn),包括IPSec協(xié)議在內(nèi)的一些安全協(xié)議都使用了HMAC算法。HMAC算法利用已有的Hash函數(shù),關(guān)鍵問(wèn)題是如何使用密鑰。使用不同的Hash函數(shù),就可以得到不同的HMAC。選用MD5時(shí)的HMAC記為HMAC-MD5,選用SHA-1時(shí)的HMAC記為HMAC-SHA1。62HMAC算法

HMAC算法描述設(shè)HMAC使用的Hash函數(shù)為h,每次處理的輸入分組長(zhǎng)度為b比特(使用MD5與SHA-1時(shí),b=512),最后的輸出長(zhǎng)度為l比特(使用MD5時(shí),l=128;使用SHA-1時(shí),l=160)。如果HMAC的輸入消息為x,則x=x1x2…xL,其中每一個(gè)分組xi(1≤i≤L)的長(zhǎng)度為b比特。令HMAC使用的密鑰為K,密鑰K可以是任意的、長(zhǎng)度不超過(guò)b比特的比特串(HMAC算法推薦密鑰最小長(zhǎng)度為l比特)。當(dāng)密鑰K的長(zhǎng)度超過(guò)b比特時(shí),使用Hash函數(shù)h對(duì)K進(jìn)行壓縮,把K作為h的輸入,并將輸出的l比特作為密鑰K。72HMAC算法

HMAC算法的流程圖

x2

x1

Si

xL…KipadSo

h(Si||x)KopadHMAC(x)Hash函數(shù)hHash函數(shù)h82HMAC算法

HMAC算法具體執(zhí)行步驟(1)如果密鑰K的長(zhǎng)度小于b比特,則在其右邊填充一些“0”,使其成為長(zhǎng)度為b比特的比特串,仍記為K。(2)計(jì)算Si=Kipad,其中ipad是HMAC算法中規(guī)定的一個(gè)長(zhǎng)度為b比特的比特模式串,它等于將00110110重復(fù)b/8次后得到的比特串。(3)把HMAC的輸入消息x=x1x2…xL附加在Si的右端,得到Si||x=Si||x1x2…xL,將該比特串作為Hash函數(shù)h的輸入,得到l比特的輸出h(Si||x)。(4)計(jì)算So=Kopad,其中opad是HMAC算法中規(guī)定的另一個(gè)長(zhǎng)度為b比特的比特模式串,它等于將01011010重復(fù)b/8次后得到的比特串。(5)將第(3)步得到的h(Si||x)附加在So的右端,并以該比特串作為Hash函數(shù)h的輸入,得到l比特的輸出。(6)將第(5)步的輸出作為HMAC算法的最終輸出結(jié)果,即消息x的消息認(rèn)證碼HMAC(x)。92HMAC算法

HMAC的安全性建立在嵌入Hash函數(shù)基礎(chǔ)上的所有MAC,其安全性在某種程度上都依賴(lài)于該Hash函數(shù)的強(qiáng)度。對(duì)于HMAC,可以給出HMAC的強(qiáng)度與所嵌入Hash函數(shù)強(qiáng)度之間的關(guān)系。根據(jù)偽造者在給定時(shí)間內(nèi)偽造成功和用相同密鑰產(chǎn)生給定數(shù)量的消息-MAC對(duì)的概率,可以用于描述MAC的安全性。Bellare等人(1996年)已經(jīng)證明,如果攻擊者已知若干(時(shí)間、消息-MAC)對(duì),則成功攻擊HMAC的概率等價(jià)于對(duì)所嵌入Hash函數(shù)的下列攻擊之一:(1)即使對(duì)于攻擊者而言,IV是隨機(jī)的、秘密的和未知的,攻擊者也能計(jì)算壓縮函數(shù)的輸出。(2)即使IV是隨機(jī)的和秘密的,攻擊者也能找到Hash函數(shù)的碰撞。在目前的計(jì)算水平下,使用MD5和SHA-1等作為HMAC算法所嵌入的Hash函數(shù),HMAC的安全性是可以保證的。103應(yīng)用數(shù)據(jù)完整性數(shù)據(jù)完整性是指數(shù)據(jù)在生成、傳送或存儲(chǔ)過(guò)程中沒(méi)有被非法篡改.使用Hash函數(shù)可以保證數(shù)據(jù)的完整性使用MAC

設(shè)用戶(hù)A將消息x發(fā)送給接收者B,A與B共享秘密的MAC密鑰K,hK是MAC。用戶(hù)A計(jì)算x的MAChK(x),將數(shù)據(jù)C=x||hK(x)發(fā)送給B。B通過(guò)其它方法確定用戶(hù)A的身份,分開(kāi)接收到的數(shù)據(jù)x’,使用共享密鑰K計(jì)算hK(x’),并與接收到的hK(x)相比較。如果hK(x’)=hK(x),則B確定消息x’是來(lái)自于具有密鑰K的用戶(hù)A,在傳輸過(guò)程中未被篡改。C發(fā)送方A接收方B比較x1xx1hK||xhK113應(yīng)用

使用Hash函數(shù)和加密

設(shè)A與B共享分組密碼的密鑰K,EK是加密算法,h是公開(kāi)的Hash函數(shù).用戶(hù)A計(jì)算C=EK(x||h(x)),并將數(shù)據(jù)C發(fā)送給B.B利用密鑰K進(jìn)行解密,得到x’和h(x),然后計(jì)算h(x’),并與接收到的h(x)相比較.如果h(x’)=h(x),則B確定消息x’是真實(shí)的.由于這里對(duì)h(x)進(jìn)行了加密,所以對(duì)Hash函數(shù)h的要求可以適當(dāng)降低.C發(fā)送方A接收方B比較x1xx1hEK||DKxh123應(yīng)用

加密使用MAC和加密

設(shè)A與B共享分組密碼的密鑰K和MAC的密鑰K’,EK是加密算法,hK’是MAC。用戶(hù)A計(jì)算C=EK(x||hK’(x)),并將數(shù)據(jù)C發(fā)送給B.B利用密鑰K進(jìn)行解密,得到x’和hK’(x),然后計(jì)算hK’(x’),并與接收到的hK’(x)相比較.如果hK’(x’)=hK’(x),則B確定消息x’是真實(shí)的.該技術(shù)的優(yōu)點(diǎn)是即使加密算法被攻破,MAC仍然能提供完整性保護(hù)作用.其缺點(diǎn)是需要管理K和K’兩個(gè)密鑰.C發(fā)送方A接收方B比較x1xx1hK’EK||DKxhK’133應(yīng)用

實(shí)現(xiàn)數(shù)據(jù)源認(rèn)證數(shù)據(jù)源認(rèn)證也稱(chēng)為消息認(rèn)證,它是要求證實(shí)一個(gè)實(shí)體在過(guò)去某個(gè)時(shí)刻建立的數(shù)據(jù)源.數(shù)據(jù)源認(rèn)證也包括數(shù)據(jù)完整性.提供數(shù)據(jù)源認(rèn)證的方法有:(1)使用消息認(rèn)證碼MAC;(2)對(duì)附加上散列值的消息進(jìn)行加密.設(shè)用戶(hù)A將消息x發(fā)送給接收者B,A與B共享密鑰K,則用戶(hù)A向B發(fā)送以下數(shù)據(jù)可實(shí)現(xiàn)數(shù)據(jù)源的認(rèn)證.(1)EK(x||h(x)):提供保密(僅雙方共享K)和認(rèn)證(加密保護(hù)散列值);(2)x||EK(h(x)):提供認(rèn)證(加密保護(hù)散列值);(3)x||h(x||S):提供認(rèn)證(僅雙方共享隨機(jī)數(shù)S);(4)EK(x||h(x||S)):提供保密和認(rèn)證(僅雙方共享K、S)。143應(yīng)用

由于加密軟件慢、硬件費(fèi)用高、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論