散列函數的應用及其安全性(信息安全技術作業5)
一、給出散列函數的具體應用。
1)文件校驗
MD5 Hash算法的"數字指紋"特性,使它成為目前應用最廣泛的一種文件完整性校驗算法。
2)數字簽名
因為非對稱算法的運算速度比較慢,所以在數字簽名協議中應用單向散列函數。對 Hash 值進行的數字簽名,在統計上可以認為與對文件本身進行數字簽名是等效的。通過HASH處理我們可以使其僅僅作用於HASH摘要上,從而提高效率。
3)鑒權協議
如下的鑒權協議又被稱作"挑戰--認證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。
4)安全數據的安全存儲
由於HASH函數的單向性,我們可以實現口令,密碼等安全數據的安全存儲。
5)數據 的校驗
HASH函數有類似數據冗余校驗的功能,但是它比簡單的冗余校驗碰撞的概率要小得多,所以用HASH來做關鍵數據的驗證。
6)關鍵數據的衍生
因為HASH算法能夠最大限度的保證其唯一性(從一個隨機的種子數產生,並且不暴露種子本身秘密)。
二、結合生日攻擊、以及2004、2005年王曉雲教授有關MD5安全性和2017年google公司SHA-1的安全性,說明散列函數的安全性以及目前安全散列函數的發展。
生日問題:
在n個人中隨機選取k個人,問當k為多大時能保證k個人中有兩個人的生日是相同的?只要k=70,這其中兩個人有相同生日的可能性就是99.9%。
2004、2005年王曉雲教授有關MD5安全性:
王小雲教授發現,可以很快的找到
2017年google公司SHA-1的安全性:
希值可與 PDF 文件內容沖突 SHA-1破壞性攻擊的速度仍然較暴力破解攻擊快10萬倍,這意味著前者確實具有可行性。
散列函數的安全性:
什麽樣的散列函數可以說是安全的呢?
第一、尋找兩個輸入得到相同的輸出值在計算上是不可行的,這就是我們通常所說的抗碰撞的。
第二、找一個輸入,能得到給定的輸出在計算上是不可行的,即不可從結果推導出它的初始狀態
目前安全散列函數的發展:
SHA-2:2002年,NIST分別發布了SHA-256、SHA-384、SHA-512,這些算法統稱SHA-2。2008年又新增了SHA-224。這些目前算是比較安全的
三、結合md5算法中的選擇前綴碰撞以及第二個鏈接中的helloworld.exe和goodbyworld.exe兩個可執行文件的md5消息摘要值和兩個文件的執行結果說明md5算法在驗證軟件完整性時可能出現的問題。
什麽是md5算法中的選擇前綴碰撞:
以同一個給定的前綴程序A為基礎,在尾部添加不同的附加數據,得到兩個具有相同MD5的樣本B和C,前綴構造法碰撞後的兩個樣本只有尾部少量字節不同,而程序代碼是相同的。通過判斷尾部數據的差異,兩個樣本可以執行不同的程序流程。由於這種碰撞手法是通過同一前綴程序碰撞生成的兩個樣本,如果其中有惡意代碼流程則兩個樣本均包含惡意代碼,所以比較容易被安全軟件識別,隱蔽性較差。
可能出現的問題:
1、不同程序的MD5可能是一樣的。比如說HelloWorld.exe和GoodbyeWorld.exe這兩個程序,他們會在屏幕上打印出不同的字符,但是它們的MD5都是一致的。
2、容易對MD5進行沖撞攻擊,普通的計算機可以在短時間內找到沖撞對。
3、可以利用MD5的這個漏洞來偽造數字簽名
4、不能通過校驗MD5從而確保軟件安全性。
散列函數的應用及其安全性(信息安全技術作業5)