<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
    數據加載中……

    理論計算機初步:從hash函數到王小云的MD5破解

    密碼學是理論計算機的一個很大的方向。之前準備先寫密碼學概論再提在hash函數破解上做出重大貢獻的王小云教授的工作,不過前兩天王小云獲得求是杰出科學家獎以及100萬獎金,在媒體上又掀起了一輪宣傳狂潮,但是有些報道極端弱智,錯誤百出,所以我趁機糾正一下,并介紹密碼學的一個組成部分——hash函數,以及王小云在這上面的工作。

    王小云的主要工作是關于hash函數的破解工作。她在2005一個密碼學會議上宣布破解了SHA-1,震驚了全世界。所以要介紹和理解她的工作,先看一下hash函數具體是怎么回事。

    簡單的說,hash函數就是把任意長的輸入字符串變化成固定長的輸出字符串的一種函數。通俗得說,hash函數用來生成信息的摘要。輸出字符串的長度稱為hash函數的位數

    目前應用最為廣泛的hash函數是SHA-1MD5,大多是128位和更長。

    hash函數在現實生活中應用十分廣泛。很多下載網站都提供下載文件的MD5碼校驗,可以用來判別文件是否完整。另外,比如在WordPress的數據庫,所有密碼都是保存的MD5碼,這樣即使數據庫的管理員也無法知道用戶的原始密碼,避免隱私泄露(很多人在不同地方都是用的同一個密碼)。

    如果兩個輸入串的hash函數的值一樣,則稱這兩個串是一個碰撞(Collision)。既然是把任意長度的字符串變成固定長度的字符串,所以,必有一個輸出串對應無窮多個輸入串,碰撞是必然存在的。

    一個“優良”的hash函數 f 應當滿足以下三個條件:

    • 任意y,找x,使得f(x)=y,非常困難。
    • 給定x1,找x2,使得f(x1)=f(x2),非常困難。
    • 找x1,x2,使得f(x1)=f(x2),非常困難。

    上面的“非常困難”的意思是除了枚舉外不可能有別的更快的方法。比如第3條,根據生日定理,要想找到這樣的x1,x2,理論上需要大約2^(n/2)的枚舉次數。

    幾乎所有的hash函數的破解,都是指的破壞上面的第三條性質,即找到一個碰撞(前兩條都能被破壞的hash函數也太弱了點,早就被人拋棄了)。在密碼學上還有一個概念是理論破解,指的是提出一個算法,使得可以用低于理論值得枚舉次數找到碰撞。

    王小云的主要工作是給出了MD5,SHA-0的碰撞,以及SHA-1的理論破解,她證明了160位SHA-1,只需要大約2^69次計算就能找出來,而理論值是2^80次。她的尋找MD5碰撞的方法是極端高效的。傳說王小云當時在會議上把碰撞寫出來,結果被下面的人驗證發現不對,原來她把MD5算法的一個步驟弄錯了。但是她立馬聯系她的當時留在中國的學生,修正算法,并找到一個新的碰撞。這一個是對的。

    看到這里,那些認為中國國安局應該將這些結果封存作為秘密武器甚至幻想用這些成果來襲擊美國之徒可以停住你們的YY了。這種形式上的破解,在大多數情況下沒有實際性的作用。更別提MD5早就被美國人拋棄了。

    但是,說這種破解一點實際意義都沒有,那就侮辱了廣大密碼學家的智商,密碼學家不會無緣無故的弄出碰撞這么一個概念來。下面簡單的介紹一下在特定情況下,怎么利用給定的碰撞來做壞事(翻譯自Attacking Hash Functions):

    Caesar給實習生Alice叫寫了一封推薦信(letter)。同一天,Alice叫Caesar在推薦信上數字簽名,并提供了一份推薦信的電子板。Caesar打開文件,發現和原件一模一樣。所以他在文件上簽了名。

    幾個月后,Caesar發現他的秘密文件被非法察看。這到底是怎么回事呢?

    letter order
    (apply MD5 to both documents)
    a25f7f0b 29ee0b39 68c86073 8533a4b9

    事實上,Alice要求Caesar簽名的文件letter已經被Alice做了手腳,準確地說,Alice還準備了另外一個文件order,它們的MD5碼完全一致。而Caesar的數字簽名還依賴于MD5算法,所以Alice用order文件替換Letter文件之后,Caesar的數字簽名依然有效。那封order給Alice提供了察看秘密文件的權限。

    具體的實現方法可見Hash Functions and the Blind Passenger Attack。我在這里簡單的解釋一下(只是大致思路,具體實現方式,需要對文件結構信息有所了解):

    letter文件的內容是:

    if(x1==x1) show "letter" else show "order"

    order文件的內容是:

    if(x2==x1) show "letter" else show "order"

    其中字符串"letter"和"order"代表兩封信實際顯示的內容。x1,x2是一個MD5的碰撞。

    上面的方法,只供參考和學術用途,實際使用所引起的后果概不負責。

    參考:

    PS:我跟王小云老師的接觸很少,上過倆次她的討論班而已,亦感覺到王小云老師的嚴謹和耐心。在去年一個Turing獎獲得者的演講上,王小云提問的時候竟口而出“I ask who”的中式英語,在引起哄笑的同時,我也極端佩服她的勇氣。也許只有這樣才能做出非常好的工作吧。

    PS2: wikipedia在國內可以通過free_door瀏覽。

    http://zhiqiang.org/blog/446.html
    參閱: 理論計算機, MD5, SHA-1, hash函數, 王小云, 密碼學.

    from: http://zhiqiang.org/blog/446.html

    posted on 2006-11-19 11:24 weidagang2046 閱讀(597) 評論(0)  編輯  收藏 所屬分類: Algorithm

    主站蜘蛛池模板: 一级做a爰片性色毛片免费网站 | 亚洲av日韩av永久在线观看| 2021在线永久免费视频| 亚洲国产人成网站在线电影动漫| 丁香花在线视频观看免费| 国产亚洲婷婷香蕉久久精品 | 久久亚洲中文字幕无码| 免费在线观看日韩| 男女啪啪免费体验区| 久久乐国产精品亚洲综合| 国产中文字幕在线免费观看| 亚洲国产一二三精品无码| 久操免费在线观看| 亚洲国产成人综合| 全免费a级毛片免费**视频| 美女视频黄频a免费| 亚洲va久久久噜噜噜久久| 最刺激黄a大片免费网站| 久久亚洲国产最新网站| 四虎精品亚洲一区二区三区| 国产免费A∨在线播放| 精品亚洲成AV人在线观看| 成年美女黄网站18禁免费| 男女作爱免费网站| 国产成A人亚洲精V品无码| 免费黄色福利视频| 国产精品亚洲色婷婷99久久精品| 国产亚洲人成A在线V网站| 蜜桃成人无码区免费视频网站| 国产日本亚洲一区二区三区| 四虎精品亚洲一区二区三区| 性色午夜视频免费男人的天堂| 亚洲特级aaaaaa毛片| 全部免费a级毛片| 国产99视频精品免费专区| 亚洲字幕AV一区二区三区四区| 亚洲av无码成人精品区| 免费无码成人AV在线播放不卡| 亚洲AV无码专区亚洲AV桃| 亚洲AV无码精品无码麻豆| 日韩一级视频免费观看|