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