1 / 30

Md5 算法介绍

Md5 算法介绍. 来历. Md5 ( message-digest algorithm 5 ) 90 年代初由 MIT laboratory for computer science 和 RSA data security inc 的 ronald l. rivest 开发出来,经 md2 、 md3 和 md4 发展而来。 http://www.ietf.org/rfc/rfc1321.txt. 应用. md5 的典型应用是对一段信息( message )产生信息摘要( message-digest ),以防止被篡改 md5 还广泛用于加密和解密技术上

abe
Download Presentation

Md5 算法介绍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Md5算法介绍

  2. 来历 • Md5(message-digest algorithm 5) • 90年代初由MIT laboratory for computer science和RSA data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。 http://www.ietf.org/rfc/rfc1321.txt

  3. 应用 • md5的典型应用是对一段信息(message)产生信息摘要(message-digest),以防止被篡改 • md5还广泛用于加密和解密技术上 • 广泛的应用于unix系统中

  4. 特点 • 输入一个任意长度的字节串,生成一个128位的整数。由于算法的某些不可逆特征,在加密应用上有较好的安全性。并且,MD5算法的使用不需要支付任何版权费用。

  5. 说明 • 唯一性和不可逆性都不是绝对的,从理论上分析是一种多对一的关系,但两个不同的信息产生相同摘要的概率很小。 • 不可逆是指从输出反推输入所需的运算量和计算时间太大,使用穷搜字典的方法又需要太多的存储空间。

  6. 算法描述 • 补位 • 补数据 • 初始化MD5参数 • 处理位操作函数 • 主要变换过程 • 具体过程

  7. 1、补位 MD5算法先对输入的数据进行补位,使得数据位长度LEN对512求余的结果是448。即数据扩展至K*512+448位。即K*64+56个字节,K为整数。 具体补位操作:补一个1,然后补0至满足上述要求 。 447补1位,449补511位.

  8. 补数据 • 用一个64位的数字表示数据的原始长度B,把B用两个32位数表示。这时,数据就被填补成长度为512位的倍数。

  9. 初始化MD5参数 • 四个32位被称作链接变量(chaining variable)的整数参数, • 它们分别为(低字节在前): A=0x01234567 B=0x89abcdef C=0xfedcba98 D=0x76543210

  10. 处理位操作函数 • F(X,Y,Z)=(X&Y)|((~X)&Z) • G(X,Y,Z)=(X&Z)|(Y&(~Z)) • H(X,Y,Z)=X^Y^Z • I(X,Y,Z)=Y^(X|(~Z))(&是与,|是或,~是非,^是异或) • 如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。

  11. 主要变换过程 设Mj表示消息的第j个子分组(从0到15),<<<s表示循环左移s位,则四种操作为:FF(a,b,c,d,Mj,s,ti)表示 a=b+((a+(F(b,c,d)+Mj+ti)<<<s)GG(a,b,c,d,Mj,s,ti)表示 a=b+((a+(G(b,c,d)+Mj+ti)<<<s)HH(a,b,c,d,Mj,s,ti)表示 a=b+((a+(H(b,c,d)+Mj+ti)<<<s)II(a,b,c,d,Mj,s,ti)表示 a=b+((a+(I(b,c,d)+Mj+ti)<<<s)

  12. 第一轮 FF(a,b,c,d,M0,7,0xd76aa478)FF(d,a,b,c,M1,12,0xe8c7b756)FF(c,d,a,b,M2,17,0x242070db)FF(b,c,d,a,M3,22,0xc1bdceee)FF(a,b,c,d,M4,7,0xf57c0faf)FF(d,a,b,c,M5,12,0x4787c62a)FF(c,d,a,b,M6,17,0xa8304613)FF(b,c,d,a,M7,22,0xfd469501)FF(a,b,c,d,M8,7,0x698098d8)FF(d,a,b,c,M9,12,0x8b44f7af)FF(c,d,a,b,M10,17,0xffff5bb1)FF(b,c,d,a,M11,22,0x895cd7be)FF(a,b,c,d,M12,7,0x6b901122)FF(d,a,b,c,M13,12,0xfd987193)FF(c,d,a,b,M14,17,0xa679438e)FF(b,c,d,a,M15,22,0x49b40821)

  13. 第二轮 • GG(a,b,c,d,M1,5,0xf61e2562)GG(d,a,b,c,M6,9,0xc040b340)GG(c,d,a,b,M11,14,0x265e5a51)GG(b,c,d,a,M0,20,0xe9b6c7aa)GG(a,b,c,d,M5,5,0xd62f105d)GG(d,a,b,c,M10,9,0x02441453)GG(c,d,a,b,M15,14,0xd8a1e681)GG(b,c,d,a,M4,20,0xe7d3fbc8)GG(a,b,c,d,M9,5,0x21e1cde6)GG(d,a,b,c,M14,9,0xc33707d6)GG(c,d,a,b,M3,14,0xf4d50d87)GG(b,c,d,a,M8,20,0x455a14ed)GG(a,b,c,d,M13,5,0xa9e3e905)GG(d,a,b,c,M2,9,0xfcefa3f8)GG(c,d,a,b,M7,14,0x676f02d9)GG(b,c,d,a,M12,20,0x8d2a4c8a)

  14. 第三轮 • HH(a,b,c,d,M5,4,0xfffa3942)HH(d,a,b,c,M8,11,0x8771f681)HH(c,d,a,b,M11,16,0x6d9d6122)HH(b,c,d,a,M14,23,0xfde5380c)HH(a,b,c,d,M1,4,0xa4beea44)HH(d,a,b,c,M4,11,0x4bdecfa9)HH(c,d,a,b,M7,16,0xf6bb4b60)HH(b,c,d,a,M10,23,0xbebfbc70)HH(a,b,c,d,M13,4,0x289b7ec6)HH(d,a,b,c,M0,11,0xeaa127fa)HH(c,d,a,b,M3,16,0xd4ef3085)HH(b,c,d,a,M6,23,0x04881d05)HH(a,b,c,d,M9,4,0xd9d4d039)HH(d,a,b,c,M12,11,0xe6db99e5)HH(c,d,a,b,M15,16,0x1fa27cf8)HH(b,c,d,a,M2,23,0xc4ac5665)

  15. 第四轮 • II(a,b,c,d,M0,6,0xf4292244)II(d,a,b,c,M7,10,0x432aff97)II(c,d,a,b,M14,15,0xab9423a7)II(b,c,d,a,M5,21,0xfc93a039)II(a,b,c,d,M12,6,0x655b59c3)II(d,a,b,c,M3,10,0x8f0ccc92)II(c,d,a,b,M10,15,0xffeff47d)II(b,c,d,a,M1,21,0x85845dd1)II(a,b,c,d,M8,6,0x6fa87e4f)II(d,a,b,c,M15,10,0xfe2ce6e0)II(c,d,a,b,M6,15,0xa3014314)II(b,c,d,a,M13,21,0x4e0811a1)II(a,b,c,d,M4,6,0xf7537e82)II(d,a,b,c,M11,10,0xbd3af235)II(c,d,a,b,M2,15,0x2ad7d2bb)II(b,c,d,a,M9,21,0xeb86d391)

  16. 参数选择 • 常数ti可以如下选择:在第i步中,ti是4294967296*abs(sin(i))的整数部分,i的单位是弧度。(2的32次方)所有这些完成之后,将A,B,C,D分别加上a,b,c,d。然后用下一分组数据继续运行算法,最后的输出是A,B,C和D的级联。

  17. MD5的安全性 • MD5相对MD4所作的改进: • 1. 增加了第四轮; • 2. 每一步均有唯一的加法常数; • 3. 为减弱第二轮中函数G的对称性从(X&Y)(X&Z)(Y&Z)变为(X&Z)(Y&(~Z)); • 4. 第一步加上了上一步的结果,这将引起更快的雪崩效应; • 5. 改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似; • 6. 近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应。各轮的位移量互不相同。

  18. SHA(Secure Hash Alg.) The NIST, along with the National Security Agency, designed the SHA for use with the DSA(in 1993). SHA is very similar to MD4. SHA is very much an MD4-variant rather than a redesign, like MD5. Ron Rivest made public the design decisions behind MD5, but SHA’s designers did not. MD5與SHA之差異表

  19. 安全性: SHA優於MD5;因為 160 > 128. • 速度: SHA 慢了約25%; 因為160 > 128 且 80 > 64. • 簡易性: SHA 對每一步驟之操作描述較MD5簡單 . • There are no known cryptographic attacks against SHA. And because it produces a 160-bit hash, it is more resistant to brute-force attacks (including Birthday Attacks) than are the other algorithms covered so far.

  20. 安全散列标准SHS • 概述 由美国NIST提出,SHS (Secure Hash Standard),算法为SHA。 要求输入小于264位,输出为160位(5个寄存器,A, B, C, D, E)。将明文分成若干512位的定长块,每一块与当前的信息摘要值结合,产生信息摘要的下一个中间结果,直到处理完毕。共扫描5遍,效率略低于MD5,强度略高。 • 基本算法 • 初值:A = 67452301; B = EFCDAB89; C = 98BADCFE; D = 10325476; E = C3D2E1F0 • A、B、C、D、E分别被复制到AA、BB、CC、DD、EE,进行四回合迭代,每回合20步运算,每一步运算对A、B、C、D、E中的三个寄存器进行非线性操作,然后移位。每回合有一个常数k。

  21. SHA-1 Compression Function

  22. 每一步基本运算: A, B, C, D, E  (CLS5(A)+ft(B, C, D)+E+wt+kt), A, CLS30(B), C, D 其中,A, B, C, D, E为寄存器 • t:步数 • ft:基本逻辑函数 • CLSx:左循环移位x位 • wt:由输入导出的一个32位字 • kt:常数 • +:模232的加运算 • wt = Mt(输入的相应消息字), 0 <= t <= 15 • wt = wt-3  wt-8  wt-14  wt-16, 16 <= t <= 79 • SHA的安全性 类似MD5,增加扩展变换,160位输出,能对抗穷举攻击。

  23. SHA-1 verses MD5 • Brute force attack is harder (160 vs 128 bits for MD5) • Not vulnerable to any known attacks (compared to MD4/5) • A little slower than MD5 (80 vs 64 steps) • Both designed as simple and compact • Optimised for big endian CPU's (vs MD5 which is optimised for little endian CPU’s) • 对强行攻击的安全性;对密码分析的安全性;速度;简单性和紧凑性;小数在前结构和大数在前结构

  24. Revised Secure Hash Standard • NIST have issued a revision FIPS 180-2 • Adds 3 additional hash algorithms • SHA-256, SHA-384, SHA-512 • Designed for compatibility with increased security provided by the AES cipher • Structure & detail is similar to SHA-1 • Hence analysis should be similar

  25. 2004年8月17日的美國加州聖巴巴拉,正在召開的國際密碼學會議(Crypto’2004)安排了三場關於雜湊函數的特別報告。在國際著名密碼學家Eli Biham和Antoine Joux相繼做了對SHA-1的分析與給出SHA-0的一個碰撞之后,來自山東大學的王小雲教授做了破譯MD5、HAVAL-128、MD4和RIPEMD算法的報告。在會場上,當她公布了MD系列算法的破解結果之后,報告被激動的掌聲打斷。王小雲教授的報告轟動了全場,得到了與會專家的贊嘆。報告結束時,與會者長時間熱烈鼓掌,部分學者起立鼓掌致敬,這在密碼學會議上是少見的盛況。王小雲教授的研究成果證實了利用MD5算法的碰撞可以嚴重威脅信息系統安全,這一發現使目前電子簽名的法律效力和技術體系受到挑戰。MD5的設計者,同時也是國際著名的公鑰加密算法標準RSA的第一設計者R.Rivest在郵件中寫道:“這些結果無疑給人非常深刻的印象,她應當得到我最熱烈的祝賀,當然,我並不希望看到MD5就這樣倒下,但人必須尊崇真理。”

  26. Francois Grieu這樣說:“王小雲、馮登國、來學嘉和於紅波的最新成果表明他們已經成功破譯了MD4、MD5、HAVAL-128、RIPEMD-128。並且有望以更低的復雜度完成對SHA-0的攻擊。一些初步的問題已經解決。他們贏得了非常熱烈的掌聲。” 另一位專家Greg Rose如此評價:“我剛剛聽了Joux和王小雲的報告,王所使用的技術能在任何初始值下用2^40次hash運算找出SHA-0的碰撞。她在報告中對四種HASH函數都給出了碰撞,她贏得了長時間的起立喝彩,(這在我印象中還是第一次)。…… 她是當今密碼學界的巾幗英雄。……(王小雲教授的工作)技術雖然沒有公開,但結果是無庸質疑的,這種技術確實存在。MD5破解專項網站關閉MD5破解工程權威網站http://www.md5crk.com/ 是為了公開征集專門針對MD5的攻擊而設立的,網站於2004年8月17日宣布:“中國研究人員發現了完整MD5算法的碰撞;Wang, Feng, Lai與Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128幾個Hash函數的碰撞。這是近年來密碼學領域最具實質性的研究進展。使用他們的技術,在數個小時內就可以找到MD5碰撞。……由於這個里程碑式的發現,MD5CRK項目將在隨后48小時內結束”。

  27. 加拿大CertainKey公司早前宣布將給予發現MD5算法第一個碰撞人員一定的獎勵,CertainKey的初衷是利用並行計算機通過生日攻擊來尋找碰撞,而王小雲教授等的攻擊相對生日攻擊需要更少的計算時間。著名計算機公司SUN的LINUIX專家Val Henson則說:“以前我們說"SHA-1可以放心用,其他的不是不安全就是未知",現在我們只能這麼總結了:"SHA-1不安全,其他的都完了"。針對王小雲教授等破譯的以MD5為代表的Hash函數算法的報告,美國國家技術與標準局(NIST)於2004年8月24日發表專門評論,評論的主要內容為:“在最近的國際密碼學會議(Crypto 2004)上,研究人員宣布他們發現了破解數種HASH算法的方法,其中包括MD4,MD5,HAVAL-128,RIPEMD還有SHA-0。分析表明,於1994年替代SHA-0成為聯邦信息處理標準的SHA-1的減弱條件的變種算法能夠被破解;但完整的SHA-1並沒有被破解,也沒有找到SHA-1的碰撞。研究結果說明SHA-1的安全性暫時沒有問題,但隨著技術的發展,技術與標準局計划在2010年之前逐步淘汰SHA-1,換用其他更長更安全的算法(如SHA-224、SHA-256、SHA-384和SHA-512)來替代。”

More Related