1. 程式人生 > >2016012072+張濟噸+散列函數的應用及其安全性

2016012072+張濟噸+散列函數的應用及其安全性

是否 包括 也不能 sha-1 隨機數 size 獲取 認證 基本

一、散列函數的具體應用

1.消息認證

消息認證是用來驗證消息完整性的一種機制或服務。消息認證確保收到的數據確實和發送時的一樣(及沒有修改、插入、刪除或重放)。此外,還要求消息認證機制確保發送方的身份是真實有效的。當散列函數用於提供消息認證功能時,散列函數值通常稱為消息摘要。

消息認證中使用散列函數的本質:發送者根據待發送的消息使用函數計算一組Hash值,然後將Hash值和消息一同發送過去。接受者收到後對於消息執行同樣的Hash計算,並將計算的結果與收到的Hash值比較,如果不匹配,則可推斷出消息或者Hash值遭到更改。

2.數字簽名

在進行數字簽名的過程使用用戶的私鑰加密消息的Hash值,其他任何知道該用戶的公鑰的人都能通過數字簽名來驗證消息的完整性。在這種情況下,攻擊者需要知道用戶的私鑰才能修改數據。數字簽名的應用比消息認證更廣泛。

使用方案:(a)使用發送方的私鑰,利用公鑰密碼算法進隊Hash碼進行加密。這個方法可以提供認證;由於只有發送方可以產生加密後的Hash碼,所以還提供了數字簽名,這個就是數字簽名的本質。(b)若希望既有保密性,又有數字簽名,可現用發送方的私鑰對Hash碼加密,再用對稱密碼中對消息和公鑰算法加密結果進行加密,這個技術更常用。

3.用於產生單向口令文件

操作系統存儲的是口令的Hash值,而不是口令本身。因為黑客即使能訪問口令文件,也不能獲取到真正的口令(口令文件存的是Hash值)。當用戶輸入口令時,操作系統將比對輸入口令的Hash值和存儲在口令文件中的Hash值。大多數操作系統都采用這種口令保護機制。

4.用於入侵檢測和病毒檢測

將每個文件的Hash值H(F)存儲在安全系統中,隨後就能通過重新計算H(F)來判斷文件是否被修改,因為入侵者只能改變文件F,卻無法改變H(F)(不知道Hash函數)。

5.用於構建隨機函數(PRF)或者用做偽隨機數發生器(PRNG)

二、散列函數的安全性以及目前安全散列函數的發展

1.安全性

(1)抗原像攻擊(單向性):對任意給定的Hash值h,找到滿足H(y)=h的y在計算上不可行。

(2)抗第二原像攻擊(抗弱碰撞性):對任何給定的分塊x,找到滿足y!=x且H(x)=H(y)的y在計算上是不可行的

(3)抗碰撞性攻擊:找到任何滿足H(x)=H(y)的偶對(x,y)在計算上是不可行的

(4)偽隨機性

2.生日攻擊

在n個人中隨機選取k個人,當k為多大時能保證k個人中有兩個人的生日是相同的?用概率的方法來考慮生日問題,只要k=70,隨機選取70個人,這其中兩個人有相同生日的可能性就是99.9%。假設至少有兩個人同一天生日的概率為P,那麽P的否定(我們寫做1-P)就是沒有任何兩個人在同一天過生日的概率。假設我們有k個人,那麽這k個人中沒有任何兩個人在同一天過生日的概率就是:1-P=(365*364*363*...*(36-k+1))/(365^k),算得k=70。

3.MD5的安全性

抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。

強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。

簡述:MD5就是把不論什麽長度的文字內容,給精簡成128位散列數。不論文字內容只有一個字母a,還是1w多字的長篇論文,都精簡(或填充)成128位散列數。MD5的弱點被不斷發現以及計算機能力不斷的提升,通過碰撞的方法有可能構造兩個具有相同MD5的信息,使MD5算法在目前的安全環境下有一點落伍。從實踐角度,不同信息具有相同MD5的可能性還是非常低的,通常認為是不可能的,通過碰撞的方法也很難碰撞出復雜信息的MD5數值。

4.SHA-1的安全性

該算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。

單向散列函數的安全性在於其產生散列值的操作過程具有較強的單向性。如果在輸入序列中嵌入密碼,那麽任何人在不知道密碼的情況下都不能產生正確的散列值,從而保證了其安全性。SHA將輸入流按照每塊512位(64個字節)進行分塊,並產生20個字節的被稱為信息認證代碼或信息摘要的輸出。

該算法輸入報文的長度不限,產生的輸出是一個160位的報文摘要。輸入是按512 位的分組進行處理的。SHA-1是不可逆的、防沖突,並具有良好的雪崩效應。 安全哈希算法SHA-1是在1993年提出並在1995年完成修訂,如今已經在許多加密安全協議中廣泛使用,包括TLS和SSL、PGP 、SSH、S/MIME和IPsec等,被視為是MD5(散列函數)的後繼者。然而從2005年開始,SHA-1的安全性就開始被密碼學家質疑,他們認為隨著計算機性能的提升,破解SHA-1算法將不成問題。 5.發展 王小雲教授的成果集中在加速構造碰撞對。原來理論上構造出一個MD5碰撞對需要2^64次嘗試,而現在只需要2^39次,其算法大大加速了這一過程。2009年,馮登國、謝濤二人利用差分攻擊,將MD5的碰撞算法復雜度進一步降低到2^21,極端情況下甚至可以降低至2^10。僅僅2^21的復雜度意味著即便是在2008年的計算機上,也只要幾秒便可以找到一對碰撞。 2013年,Marc Stevens發表了一篇論文,概述了創建SHA-1碰撞的理論方法。他說兩份不一樣的pdf文件,可以散列到相同的SHA-1摘要。破解難度:總計900萬兆(即百萬的五次冪,具體為9,223,372,036,854,775,808)次SHA1計算。要完成攻擊的首個階段需要單一CPU計算6500年。要完成攻擊的第二階段需要單一GPU計算110年。這是利用谷歌的技術專長與雲基礎設施計算碰撞情況,這也是我們截至目前已完成的規模最大的計算任務之一。 但是,SHA到目前為止,還有SHA-224、SHA-256、SHA-384和SHA-512,並稱SHA-2。至今尚未出現對SHA-2有效的攻擊。但是,它的算法跟SHA-1基本上仍然相似。因此我們仍然需要不斷發展新的算法。

三、md5算法在驗證軟件完整性時可能出現的問題。

首先兩個完全不同的EXE軟件(A和B),Hash值也不一樣。然後使用選擇性前綴碰撞法進行攻擊,得到兩個軟件(a和b),A和a的功能一樣,B和b的功能一樣,a和b完全不一樣。但是a和b的Hash值一樣。通過選擇前綴碰撞法,在不知道Hash函數的情況下,可以修改產生一個能和Hash函數匹配的軟件。

後果:按照MD5的原理,發送方發送A軟件和A軟件的Hash值給接收方,假如出現中間人攻擊,中間人收到A,並使用選擇前綴碰撞法,中間人自己寫一個木馬軟件B,對A和B進行攻擊,產生a和b,然後把b和b的Hash值發送給真正的接收方,接收方比對b和b的Hash值,比對成功,以為就是發送方發的軟件A,於是中木馬。

2016012072+張濟噸+散列函數的應用及其安全性