2016012075 谢月月 散列函数的应用及其安全性
散列函數的應用及其安全性
一、散列函數的應用
1、消息認證:?????? (1)、消息認證的定義:消息認證是用來驗證消息完整性的一項機制或服務。消息認證確保收到的數據確實和發送時的一樣(即沒有修改、插入、刪除和重放)。此外,通常還要求消息認證機制確保發送方聲稱的消息是有效的。當Hash函數用于提供消息認證功能時,Hash函數值通常稱為消息摘要。
????? (2)、消息認證中使用Hash函數的本質:發送者根據待發送的消息使用該函數計算一組Hash值,然后將Hash值和消息一起發送過去。接收方收到消息后對于消息執行同樣的Hash計算,并將結果與收到的Hash值進行比對。如果比對不匹配,則接收者推斷出消息(當然也可能是Hash值)遭受了篡改。
???? (3)Hash碼用于消息認證的方式(如下圖所示):
????? (a)、使用對稱密碼算法加密信息和Hash碼。因為只有A和B共享密鑰,所以消息必然發自A處。
?? ?? (b)、使用對稱密碼算法只對Hash碼進行加密。對于無需保存性的應用,這種方法減少了加解密操作的負擔。
????? (c)、不使用加密算法,僅使用Hash函數也能夠實現消息認證。該方案假設通信雙方共享相同的消息值S。發送方A將消息M和秘密值S串聯后計算其Hash值,并將得到的Hash值附在消息M后發送。因為接收方B同時掌握S,所以能夠計算改Hash值進行驗證。
????? (d)、通過將整個消息和Hash值加密,能夠在方案(c)的基礎上提供保密性。
?
?2、數字簽名:
????? (1)、數字簽名的定義:數字簽名的操作與MAC相似,在進行數字簽名的過程中使用用戶的私鑰加密消息的Hash值,其他任何知道該用戶公鑰的人都能夠通過數字簽名來驗證消息的完整性。在這種情況下,攻擊者要想篡改消息,則需要知道用戶的私鑰。
?????? (2)、數字簽名的方案(如下圖所示):
??????? (a)、使用發送方的私鑰,利用公鑰密碼算法僅對Hash碼進行加密。與圖(b)一樣,這種方法可提供認證;由于只有發送方可以產生加密后的Hash碼,所以這種方法也提供了數字簽名,事實上,這就是數字簽名技術的本質所在。
??????? (b)、若即希望保證保密性又希望有數字簽名,則先用發送方的私鑰對Hash碼加密,再用對稱密碼中的密鑰對消息和公鑰算法加密的結果進行加密,這種技術比較常用。
3、其他應用:
????? (1)、用于產生單向口令文件。
????? (2)、Hash函數能用于入侵檢測和病毒檢測。將每個文件的Hash值H(F)存儲在安全系統中(CD-R中),隨后就能夠通過重新計算H(F)來判斷文件是否被修改過。入侵者只能夠改變F,而不能夠改變H(F)。
????? (3)、密碼學Hash函數能夠用于構建隨機函數(PRF)或用做偽隨機數發生器(PRNG)。
二、散列函數的安全性以及目前安全散列函數的發展
1、散列函數的安全性:
(1)、生日攻擊:
?????? 舉例: A對一個合同文件進行簽名,然后把合同文件和簽名一起發送給接收方。攻擊者B想要偽造假的合同文件發給接收方。B先準備2^m/2個有效合同文件(集合X),每個文件包含與原合同文件相同的意思。B再準備2^m/2個偽造合同文件(集合Y),每個文件也都是希望的偽造合同的意思。然后比較集合X和Y,找到Hash值相同的兩個文件,分別是有效合同和偽造合同B成功的概率會大于0.5,如果沒有找到匹配的文件,就準備更多的有效文件和偽造文件,直到找到一對匹配的文件。
?????? 防范方法:①、使用安全的Hash算法:安全的Hash算法產生成的Hash值足夠多的位數。這樣攻擊者尋找相同Hash值得文件就非常困難。②、加鹽:在為文件簽名之前,先向文件添加一個隨機值,然后計算Hash值,再將文件、簽名和隨機值一起發送給接收方。③、改動文件:在為文件簽名之前,對消息或文件做少許改動。
(2)、MD5安全性:
??????? 用于確保信息傳輸完整一致。將數據運算為另一固定長度值,是湊雜算法的基礎原理。從2004年利用MD5的碰撞的方法就能將MD5攻破開始,MD5就已經不安全。MD5攻擊方法有①通過暴力破解②網上有MD5對應的數據庫,比較簡單的密碼都可以從數據庫中找到。
(3)、SHA-1的安全性:
?????? 2005年,Rijmen和Oswald發表了對SHA-1較弱版的攻擊,2005年2月,王小云、殷益群以及于洪波發表了對完整版SHA-1的攻擊,在2017年Google公司宣布實現了對SHA-1算法的攻擊,SHA-1徹底被攻破。
(4)、散列函數的安全性:
?????? ①、散列函數的攻擊方法有:窮舉攻擊和密碼分析法
?????? ②、散列函數的安全需求:a、輸入長度可變,H可應用于任意大小的數據塊;b、輸出長度固定,H產生定長的攻擊;c、效率,對任意給定的x,計算H(x)比較容易,用硬件和軟件均可實現;d、抗原像攻擊(單向性),對任意給定的Hash碼h,找到滿足H(y)=h的y在計算上是不可行的。e、抗第二原像攻擊(抗弱碰撞性),對任意給定分塊x,找到滿足y≠x,且H(x)=H(y)的y在計算上是不可行的;f、抗碰撞攻擊(抗強碰撞性),找到任何滿足H(x)=H(y)的偶對(x,y)在計算上是不可行的。g、偽隨機性,H的書櫥滿足偽隨機性測試標準。
(5)安全散列函數的發展:
?????? ①、SHA由美國標準與技術研究所(NIST)設計,并于1993年作為聯邦信息處理標準(FIPS 180)發布;
?????? ②、隨后該版本的SHA-0被發現存在缺陷,修訂版于1995年發布(FIPS 180-1),通常稱為SHA-1;
?????? ③、2002年,NIST發布了修訂版FIPS 180-2,其中給出了三種新的SHA版本,Hash值長度依次為256位、384位和512位,分別稱為SHA-256、SHA-384和SHA-512。這些統稱為SHA-2;
?????? ④、在2008年發布的修訂版FIP PUB 180-3中,增加了224位版本。
三、MD5算法來驗證軟件完整性出現的問題
????? 1、不同的兩個程序有可能有相同的MD5;
????? 2、不能通過校驗MD5來判斷軟件是否被入侵或者中病毒等;
???? 3、無法確定文件的來源可靠性;
???? 4、當MD5驗證時間較長時,會增加安全風險,被攻擊的幾率會大大增加。
?
轉載于:https://www.cnblogs.com/xieyy127/p/9029603.html
總結
以上是生活随笔為你收集整理的2016012075 谢月月 散列函数的应用及其安全性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JQuery之ajax异步请求Djang
- 下一篇: 接收列表