小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

HMAC算法安全性淺析 | FEITIAN

 lifei_szdz 2017-09-22

HMAC算法安全性淺析

        1 引言

        2004年8月17日在美國加州圣巴巴拉召開的國際密碼學(xué)會議(Crypto’2004)上,來自中國山東大學(xué)的王小云教授做了破譯MD5、HAVAL-128、 MD4和RIPEMD算法的報告。報告結(jié)束時,與會者長時間起立鼓掌致敬,這在密碼學(xué)會議上是少見的盛況。

        然而,更讓密碼學(xué)界震驚的是,2005年2月15日,在美國召開的國際信息安全RSA研討會上,國際著名密碼學(xué)專家Adi Shamir宣布,他收到了王小云、尹依群、于紅波等三人的論文,論文證明SHA-1在理論上也被破解。這是繼王小云破譯MD5之后,國際密碼學(xué)領(lǐng)域的又一突破性研究成果,而破譯只用了兩個多月的時間。

        王小云教授的研究成果作為密碼學(xué)領(lǐng)域的重大發(fā)現(xiàn)宣告了固若金湯的世界通行密碼標(biāo)準(zhǔn)MD5和SHA-1的堡壘轟然倒塌,引發(fā)了密碼學(xué)界關(guān)于MD5和SHA-1產(chǎn)品是否還能夠使用的大辯論。那么,使用MD5和SHA-1的HMAC算法是不是也已經(jīng)不安全,應(yīng)該被淘汰了?本文對HMAC算法安全性進(jìn)行簡單分析。

        2 HASH函數(shù)

        MD5和SHA-1是一種HASH函數(shù),又稱雜湊函數(shù),類似于指紋的應(yīng)用。在網(wǎng)絡(luò)安全協(xié)議中,雜湊函數(shù)用來處理電子簽名,將冗長的簽名文件壓縮為一段獨(dú)特的數(shù)字信息,像指紋鑒別身份一樣保證原來數(shù)字簽名文件的合法性和安全性。經(jīng)過這些算法的處理,原始信息即使只更動一個字母,對應(yīng)的壓縮信息也會變?yōu)榻厝徊煌摹爸讣y”,這就保證了經(jīng)過處理信息的唯一性。為電子商務(wù)等提供了數(shù)字認(rèn)證的可能性。

        安全的雜湊函數(shù)在設(shè)計時必須滿足兩個要求:

?    尋找兩個輸入得到相同的輸出值在計算上是不可行的,這就是我們通常所說的抗碰撞的;

?    找一個輸入,能得到給定的輸出在計算上是不可行的,即不可從結(jié)果推導(dǎo)出它的初始狀態(tài)。

  王教授的研究成果是在已知輸出時,可以較容易地構(gòu)造出一個輸入,使輸入經(jīng)過HASH后,與已知的輸出一致。這個成果,從理論上證明了MD5和SHA-1不是安全的HASH函數(shù)。

        3 HMAC算法

        3.1 定義[2]

        定義HMAC需要一個加密用散列函數(shù)(表示為H,可以是MD5或者SHA-1)和一個密鑰K。我們用B來表示數(shù)據(jù)塊的字節(jié)數(shù)。(以上所提到的散列函數(shù)的分割數(shù)據(jù)塊字長B=64),用L來表示散列函數(shù)的輸出數(shù)據(jù)字節(jié)數(shù)(MD5中L=16,SHA-1中L=20)。鑒別密鑰的長度可以是小于等于數(shù)據(jù)塊字長的任何正整數(shù)值。應(yīng)用程序中使用的密鑰長度若是比B大,則首先用使用散列函數(shù)H作用于它,然后用H輸出的L長度字符串作為在HMAC中實(shí)際使用的密鑰。一般情況下,推薦的最小密鑰K長度是L個字節(jié)。

        我們將定義兩個固定且不同的字符串ipad,opad:(‘i','o'標(biāo)志內(nèi)部與外部)

        ipad = the byte 0x36 重復(fù) B 次

        opad = the byte 0x5C 重復(fù) B 次.

        計算‘text'的HMAC:

        HMAC = H( K XOR opad, H(K XOR ipad, text))

        即為以下步驟:

        (1) 在密鑰K后面添加0來創(chuàng)建一個字長為B的字符串。(例如,如果K的字長是20字節(jié),B=64字節(jié),則K后會加入44個零字節(jié)0x00)

        (2) 將上一步生成的B字長的字符串與ipad做異或運(yùn)算。

        (3) 將數(shù)據(jù)流text填充至第二步的結(jié)果字符串中。

        (4) 用H作用于第三步生成的數(shù)據(jù)流。

        (5) 將第一步生成的B字長字符串與opad做異或運(yùn)算。

        (6) 再將第四步的結(jié)果填充進(jìn)第五步的結(jié)果中。

        (7) 用H作用于第六步生成的數(shù)據(jù)流,輸出最終結(jié)果

        3.2 HMAC的典型應(yīng)用

  HMAC的一個典型應(yīng)用是用在“挑戰(zhàn)/響應(yīng)”(Challenge/Response)身份認(rèn)證中,認(rèn)證流程如下[3]:

        (1) 先由客戶端向服務(wù)器發(fā)出一個驗證請求。

        (2) 服務(wù)器接到此請求后生成一個隨機(jī)數(shù)并通過網(wǎng)絡(luò)傳輸給客戶端(此為挑戰(zhàn))。

        (3) 客戶端將收到的隨機(jī)數(shù)提供給ePass,由ePass使用該隨機(jī)數(shù)與存儲在ePass中的密鑰進(jìn)行HMAC-MD5運(yùn)算并得到一個結(jié)果作為認(rèn)證證據(jù)傳給服務(wù)器(此為響應(yīng))。

        (4) 與此同時,服務(wù)器也使用該隨機(jī)數(shù)與存儲在服務(wù)器數(shù)據(jù)庫中的該客戶密鑰進(jìn)行HMAC-MD5運(yùn)算,如果服務(wù)器的運(yùn)算結(jié)果與客戶端傳回的響應(yīng)結(jié)果相同,則認(rèn)為客戶端是一個合法用戶

        3.3 安全性淺析

        由上面的介紹,我們可以看出,HMAC算法更象是一種加密算法,它引入了密鑰,其安全性已經(jīng)不完全依賴于所使用的HASH算法,安全性主要有以下幾點(diǎn)保證:

        (1) 使用的密鑰是雙方事先約定的,第三方不可能知道。由3.2介紹的應(yīng)用流程可以看出,作為非法截獲信息的第三方,能夠得到的信息只有作為“挑戰(zhàn)”的隨機(jī)數(shù)和作為“響應(yīng)”的HMAC結(jié)果,無法根據(jù)這兩個數(shù)據(jù)推算出密鑰。由于不知道密鑰,所以無法仿造出一致的響應(yīng)。

        (2) 王教授的研究成果不適用。王教授的研究成果是在已知輸出時,可以較容易地構(gòu)造出一個輸入,使輸入經(jīng)過HASH后,與已知的輸出一致。而在HMAC應(yīng)用中,第三方不可能事先知道輸出(如果知道,不用構(gòu)造輸入,直接將輸出送給服務(wù)器即可)。

        (3) HMAC與一般的加密重要的區(qū)別在于它具有“瞬時”性,即認(rèn)證只在當(dāng)時有效,而加密算法被破解后,以前的加密結(jié)果就可能被解密。

        4 結(jié)論

  綜上所述,MD5和SHA-1被破解,對實(shí)際應(yīng)用的沖擊要遠(yuǎn)遠(yuǎn)小于它的理論意義[1]。而且,它的沖擊集中在PKI和數(shù)字簽名體系中,對使用MD5和SHA-1的HMAC算法并不構(gòu)成威脅。特別是象“挑戰(zhàn)/響應(yīng)”身份認(rèn)證應(yīng)用中,由于攻擊者無法事先獲得HMAC的計算結(jié)果,對系統(tǒng)的攻擊只能使用窮舉或“生日攻擊”的方法,但計算量巨大,基本不可行。所以,在目前的計算能力下,可以認(rèn)為HMAC算法在“挑戰(zhàn)/響應(yīng)”身份認(rèn)證應(yīng)用中是安全的。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多