认证篇——单向散列函数
目錄
一、單向散列函數簡介
單向散列函數的性質:
二、單向散列函數的應用:
三、單向散列函數種類:
1)MD4、MD5
2)SHA(安全散列算法)
3)RIPEMD-160
單向散列函數SHA-1介紹(可忽略):
四、對單向散列函數的攻擊:
五、單向散列函數無法解決的問題:
一、單向散列函數簡介
單向散列函:又稱為消息摘要函數、哈希(hash)函數或雜湊函數。有一個輸入和一個輸出,輸入稱為消息(原像),輸出稱為散列值(消息摘要、指紋);單向散列函數可通過消息計算出散列值,而散列值可用于檢測消息的完整性
散列值與消息的長度無關,其長度永遠為160bit(20字節);單向散列函數不需要知道消息代表的含義,只將其單純
作為比特序列來處理
用于確認完整性,不需要比對消息本身,只需要比對計算出的散列值即可
單向散列函數的性質:
1)根據任意長度消息計算出固定長度的散列值
2)能快速計算出散列值(消息越長計算時間越長)
3)消息不同散列值也不同(只有1比特的改變,也會很高概率的產生散列值)
4)具備單向性(可根據消息計算散列值,但不能通過散列值反算消息)
?
碰撞:兩個不同消息產生同一個散列值稱為碰撞
抗碰撞性:指難以發現碰撞的性質
- 弱抗碰撞性(找到與該消息有相同散列值的一條消息是很困難的)
- 強抗碰撞性(找到與該消息有相同散列值的兩條消息是很困難的)
二、單向散列函數的應用:
1)檢測軟件是否被篡改(用于驗證散列值必須通過和軟件包獲取不同的、可信任的渠道去獲取)
2)基于口令的加密(PBE,將口令和偽隨機數生成器產生的隨機值混合后計算器散列值,然后將這個散列值作為加密的密鑰;使用該方法可抵御針對口令的字典攻擊)
3)消息認證碼(將發送者和接受者之間的共享密鑰和消息進行混合或計算出的散列值;使用該方法可用于防止通信過程中的錯誤、篡改及偽裝)
4)數字簽名(計算消息的散列值,在對這個散列值進行數字簽名;非常耗時)
5)偽隨機數生成器(構造偽隨機數生成器,并需要具備“不肯能根據過去的隨機數列預測未來的隨機數列”)
6)一次性口令(用于服務端對客戶端的合法認證,并保證口令只在通信鏈路上傳一次)
?
三、單向散列函數種類:
1)MD4、MD5
Message Digest:消息-摘要算法
MD4:于1990年設計,可產生128位的散列值。現已不安全
MD5:于1991年設計,可產生128位的散列值?,F已不安全
2)SHA(安全散列算法)
SHA-1:于1993年設計,消息長度存在上限接近264比特,可產生160比特的散列值
SHA-2:包含SHA-256,SHA-384,SHA-512;其散列值長度分別為256、384、512,這些消息長度也存在上限分別為SHA-256接近2^64,SHA-384接近2^128
注:SHA-1的強抗碰撞性已于2005年被攻破
3)RIPEMD-160
于1996設計產生的能產生160比特的單向散列函數。RIPEMD-160是RIPEMD的修訂版
注:RIPEMD的強碰撞性已于2004年被攻破
?
單向散列函數SHA-1介紹(可忽略):
SHA-1是一種能根據上限為2^64比特的消息計算出160比特的散列值的單向散列函數
1)填充
對消息進行填充處理,以512比特為一輸入分組,使其長度為512比特的整數倍。輸入SHA-1的消息應大于0小于2^64比特,在末尾添加多余的數據,是消息成為512比特的整數倍
2)計算W0~W79
根據輸入分組的512比特計算出80個32比特的值(W0~W79)
3)分組處理
對輸入分組依次進行80步驟的處理,計算5個32比特的值(A~E)作為SHA-1內部狀態。對所有分組都進行的這一操作
4)單步處理
?
四、對單向散列函數的攻擊:
1)暴力破解:尋找與原消息產生同一散列值的不同消息(一種試圖破解單向散列函數的弱抗碰撞性的攻擊)
2)生日攻擊:并非尋找生成特定散列值的消息,而是找到散列值相同的兩條消息,而散列值可為任意(一種試圖破解單向散列函數的強抗碰撞性的攻擊)
?
五、單向散列函數無法解決的問題:
單向散列函數只能識別出消息是否被篡改,無法識別發送消息的人是否偽裝
?
總結
以上是生活随笔為你收集整理的认证篇——单向散列函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何搭建MGRE——实验
- 下一篇: 认证篇——消息认证码