單向散列函數(shù)→獲取消息的指紋

在刑事偵查中叨恨,偵查員會用到指紋,在計(jì)算機(jī)中挖垛,使用單向散列函數(shù)就可以獲取消息的指紋痒钝,通過對比指紋,就能夠知道兩條消息是否一致


什么是單向散列函數(shù)

單向散列函數(shù)有一個輸入和一個輸出痢毒,其中輸入稱為消息送矩,輸出稱為散列值,單向散列函數(shù)可以根據(jù)消息的內(nèi)容計(jì)算出散列值哪替,而散列值就可以被用來檢查消息的完整性栋荸。


單向散列函數(shù)根據(jù)消息的內(nèi)容計(jì)算出散列值

這里的消息可以是文字、圖像文件或者聲音文件凭舶。單向散列函數(shù)不需要知道消息實(shí)際代表的含義晌块,任何消息,單向散列函數(shù)都會將它作為單純的比特序列來處理帅霜,即根據(jù)比特序列計(jì)算出散列值匆背。

散列值長度和消息的長度無關(guān),1比特身冀、100GB钝尸,單向散列函數(shù)都會計(jì)算出固定長度的散列值。 SHA-256所計(jì)算出的散列值的長度永遠(yuǎn)是256比特(32字節(jié))


單向散列函數(shù)的性質(zhì)

兩個不同的消息產(chǎn)生同一個散列值的情況稱為碰撞搂根,如果要將單向散列函數(shù)用于完整性的檢查蝶怔,則需要確保在事實(shí)上不可能被人為地發(fā)現(xiàn)碰撞。

難以發(fā)現(xiàn)碰撞的性質(zhì)稱為抗碰撞性兄墅,密碼技術(shù)中所使用的單向散列函數(shù)踢星,都需要具備抗碰撞性。

單向散列函數(shù)必須確保要找到和該條消息具有相同散列值的另外一條消息是非常困難的隙咸。這一性質(zhì)稱為弱抗碰撞性沐悦。單向散列函數(shù)都必須具備弱抗碰撞性。

要找到散列值相同的兩條不同的消息使非常困難的 這一性質(zhì)稱為強(qiáng)抗碰撞性五督,在這里藏否,散列值可以是任意值。單向散列函數(shù)都必須具備強(qiáng)抗碰撞性充包。

單向散列函數(shù)必須具備單向性副签,單向散列函數(shù)并不是一種加密遥椿,因此無法通過解密將散列值還原為原來的消息。

單向散列函數(shù)也稱為消息摘要函數(shù)淆储、哈希函數(shù)冠场、雜湊函數(shù)


單向散列函數(shù)的實(shí)際應(yīng)用

檢測軟件是否被篡改

很多軟件都會通過單向散列函數(shù)計(jì)算出的散列值公布在自己的官方網(wǎng)站上,用戶在下載到軟件之后本砰,可以自行計(jì)算散列值碴裙,然后與官方網(wǎng)站上公布的散列值進(jìn)行對比。

基于口令的加密

單向散列函數(shù)也被用于基于口令的加密(PBE)
PBE的原理是將口令和鹽(salt 通過偽隨機(jī)數(shù)生成器產(chǎn)生的隨機(jī)數(shù))混合后計(jì)算其散列值点额,然后將這個散列值用作加密的秘鑰舔株。

消息認(rèn)證碼

使用單向散列函數(shù)可以構(gòu)造消息認(rèn)證碼

消息認(rèn)證碼是將“發(fā)送者和接受者之間的共享密鑰”和“消息”進(jìn)行混合后計(jì)算出的散列值。使用消息認(rèn)證碼可以檢測并防止通信過程中的錯誤还棱、篡改以及偽裝载慈。

數(shù)字簽名

在進(jìn)行數(shù)字簽名時也會使用單向散列函數(shù)

數(shù)字簽名是現(xiàn)實(shí)社會中的簽名和蓋章這樣的行為在數(shù)字世界中的實(shí)現(xiàn)。數(shù)字簽名的處理過程非常耗時珍手,因此一般不會對整個消息內(nèi)容直接施加數(shù)字簽名办铡,而是先通過單向散列函數(shù)計(jì)算出消息的散列值,然后再對整個散列值施加數(shù)字簽名珠十。

偽隨機(jī)數(shù)生成器

使用單向散列函數(shù)可以構(gòu)造偽隨機(jī)數(shù)生成器

密碼技術(shù)中所使用的隨機(jī)數(shù)需要具備“事實(shí)上不可能根據(jù)過去的隨機(jī)數(shù)預(yù)測未來的隨機(jī)數(shù)列”這樣的性質(zhì)料扰。為了保證不可預(yù)測性,可以利用單向散列函數(shù)的單向性焙蹭。

一次性口令

使用單向散列函數(shù)可以構(gòu)造一次性口令一次性口令經(jīng)常被用于服務(wù)器對客戶端的合法性認(rèn)證晒杈。在這種方式中,通過使用單向散列函數(shù)可以保證口令只在通信鏈路上傳送一次孔厉,因此即使竊聽者竊取了口令拯钻,也無法使用。


單向散列函數(shù)的具體例子

MD4撰豺、MD5

MD4現(xiàn)在已經(jīng)不安全了粪般。
MD5的強(qiáng)抗碰撞性已經(jīng)被攻破,也就是說污桦,現(xiàn)在已經(jīng)能夠產(chǎn)生具備相同散列值的兩條不同的消息亩歹,因此它也已經(jīng)不安全了
MD4和MD5中的MD是消息摘要(Message Digest)的縮寫

SHA-1、SHA-256凡橱、SHA-384小作、SHA-512

SHA-1能夠產(chǎn)生160比特的散列值的單向散列函數(shù),不過它已經(jīng)被列入“可謹(jǐn)慎運(yùn)用的密碼清單”稼钩,即除了用于保持兼容性的目的以外顾稀,其他情況下都不推薦使用。

SHA-256坝撑、SHA-384静秆、SHA-512的散列長度分別為256比特粮揉、384比特和512比特,這些單向散列函數(shù)合起來統(tǒng)稱SHA-2,它們的消息長度也存在上限(SHA-256的上限接近于264比特抚笔,SHA-384和SHA-512的上限接近于2128比特)
SHA-1的強(qiáng)抗碰撞性已于2005年被攻破也就是說扶认,現(xiàn)在已經(jīng)能夠產(chǎn)生具備相同散列值的兩條不同的消息,不過SHA-2還尚未被攻破塔沃。

image.png
RIPEMD-160

RIPEMD-160已經(jīng)被列入“可謹(jǐn)慎運(yùn)用的密碼清單”即除了用于保持兼容性的目的以外蝠引,其他情況下都不推薦使用阳谍。

RIPEMD的強(qiáng)抗碰撞性已經(jīng)與2004年被攻破蛀柴,但RIPEMD-160還尚未被攻破,比特幣使用的就是RIPEMD-160

SHA-3

SHA-3是一種作為新標(biāo)準(zhǔn)發(fā)布的單向散列函數(shù)算法矫夯,用來替代在理論上已被找出攻擊方法的SHA-1算法鸽疾,于2012年正式確定將Keccak算法作為SHA-3標(biāo)準(zhǔn)。

Keccak最終被選為SHA-3的理由如下

  • 采用了與SHA-2完全不同的結(jié)構(gòu)
  • 結(jié)構(gòu)清晰训貌,易于分析
  • 能夠適用于各種設(shè)備制肮,也適用于嵌入式應(yīng)用
  • 在硬件上的實(shí)現(xiàn)顯示出了很高的性能
  • 比其他最終候選算法安全性邊際更大

Keccak采用了海綿結(jié)構(gòu),輸入的數(shù)據(jù)在進(jìn)行填充之后递沪,要經(jīng)過吸收階段基礎(chǔ)階段豺鼻,最終生成輸出的散列值。

海綿結(jié)構(gòu)

Keccak可以生成任意長度的散列值款慨,但為了配合SHA-2的散列值長度儒飒,SHA-3標(biāo)準(zhǔn)中共規(guī)定了SHA3-224、SHA3-256檩奠、SHA3-384桩了、SHA3-512這4種版本。在輸入數(shù)據(jù)的長度上限方面埠戳,SHA-1為264-1比特井誉,SHA-2為2128-1比特,而SHA-3則沒有長度限制整胃。

對Keccak的攻擊

Keccak之前的單向散列函數(shù)都是通過循環(huán)執(zhí)行壓縮函數(shù)的方式來生成散列值的颗圣,這種方式稱為MD結(jié)構(gòu),MD4屁使、MD5在岂、RIPEMD、RIPEMD-160屋灌、SHA-1洁段、SHA-2等幾乎所有的傳統(tǒng)單向散列函數(shù)算法都是基于MD結(jié)構(gòu)的。

Keccak采用了和MD結(jié)構(gòu)完全不同的海綿結(jié)構(gòu)共郭,因此針對SHA-1的攻擊方法對Keccak是無效的疾呻。目前還沒有出現(xiàn)能夠?qū)?shí)際應(yīng)用中的Keccak算法形成威脅的攻擊方法。


應(yīng)該怎么選擇單向散列函數(shù)

MD5是不安全的写半,因此不應(yīng)該使用岸蜗。

SHA-1除了用于對過去生成的散列值進(jìn)行校驗(yàn)之外,不應(yīng)該被用于新的用途叠蝇,而是應(yīng)該遷移到SHA-2

SHA-2有效應(yīng)對了針對SHA-1的攻擊方法璃岳,因此是安全的,可以使用

SHA-3是安全的悔捶,可以使用

SHA-2(SHA-256铃慷、SHA-384、SHA-512)被列入了“電子政府推薦使用的密碼清單”中蜕该。


對單項(xiàng)散列函數(shù)的攻擊

暴力破解

利用文件的冗余性生成具有相同散列值的另一個文件犁柜,這就是一種針對單向散列函數(shù)的攻擊。
尋找和"100萬元合同"具備相同散列值的另一條不同的消息堂淡,這相當(dāng)于一種視圖破解單向散列函數(shù)的”弱抗碰撞性“的攻擊這種情況下馋缅,暴力破解的次數(shù)根據(jù)散列值的長度計(jì)算出來,以SHA3-512為例绢淀,長度為512比特萤悴,最多需要嘗試2512次就能夠找到目標(biāo)消息了,如此多的嘗試次數(shù)在現(xiàn)實(shí)中是不可能完成的皆的。

找出具有指定散列值的消息的攻擊分為兩種覆履,即原像攻擊第二原像攻擊,原像攻擊是指給定一個散列值祭务,找出具有該散列值的任意消息内狗,第二原像攻擊是指給定一條消息1, 找出另外一條消息2义锥,消息2的散列值和消息1相同柳沙。

生日攻擊

生日攻擊的原理來自生日悖論,也就是利用了任意散列值一致的概率比想象中要高

注意
N 個人中拌倍,保證至少有兩個人生日一樣的概率大于二分之一赂鲤,那么 N 至少是多少?
先計(jì)算 N 個人生日全都不一樣的概率柱恤,然后再用1減去這個值就可以了数初,最后發(fā)現(xiàn)當(dāng) N 取23時,概率為0.507297梗顺,大于二分之一泡孩。

Mallory所進(jìn)行的生日攻擊的步驟如下:
1、Mallory生成 N 個100萬元合同
2寺谤、Mallory生成 N 個1億元合同
3仑鸥、Mallory將1的 N 個散列值和2的 N 個散列值進(jìn)行對比吮播,尋找其中是否有一致的情況
4、如果找出了一致的情況眼俊,則利用這一組100萬元合同和1億元合同來欺騙Alice

以512比特的散列值為例意狠,對單向散列函數(shù)進(jìn)行暴力破解所需要的嘗試次數(shù)為2512次,而對同一單向散列函數(shù)進(jìn)行生日攻擊所需的嘗試次數(shù)為2256次疮胖,因此和暴力破解相比环戈,生日攻擊所需的嘗試次數(shù)要少的多。


單項(xiàng)散列函數(shù)無法解決的問題

單項(xiàng)散列函數(shù)能夠辨別出“篡改”澎灸,但無法辨別出“偽裝”

注意:此處的偽裝例如:主動攻擊者M(jìn)allory偽裝成Alice院塞,向Bob同時發(fā)送了消息和散列值,這時Bob能夠通過單向散列函數(shù)檢查消息的完整性击孩,但是這只是針對發(fā)送的消息進(jìn)行檢查迫悠,而無法檢查出發(fā)送者的身份是否被Mallory進(jìn)行了偽裝鹏漆。

用于認(rèn)證的技術(shù)包括消息認(rèn)證碼數(shù)字簽名消息認(rèn)證碼能夠向通信對象保證消息沒有被篡改巩梢,而數(shù)字簽名不僅能夠向通信對象保證消息沒有被篡改,還能夠向所有第三方做出這樣的保證艺玲。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末括蝠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子饭聚,更是在濱河造成了極大的恐慌忌警,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秒梳,死亡現(xiàn)場離奇詭異法绵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)酪碘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門朋譬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人兴垦,你說我怎么就攤上這事徙赢。” “怎么了探越?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵狡赐,是天一觀的道長。 經(jīng)常有香客問我钦幔,道長枕屉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任鲤氢,我火速辦了婚禮搀擂,結(jié)果婚禮上拐纱,老公的妹妹穿的比我還像新娘。我一直安慰自己哥倔,他們只是感情好秸架,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著咆蒿,像睡著了一般东抹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沃测,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天缭黔,我揣著相機(jī)與錄音,去河邊找鬼蒂破。 笑死馏谨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的附迷。 我是一名探鬼主播惧互,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼喇伯!你這毒婦竟也來了喊儡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤稻据,失蹤者是張志新(化名)和其女友劉穎艾猜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捻悯,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匆赃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了今缚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片算柳。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖荚斯,靈堂內(nèi)的尸體忽然破棺而出埠居,到底是詐尸還是另有隱情,我是刑警寧澤事期,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布滥壕,位于F島的核電站,受9級特大地震影響兽泣,放射性物質(zhì)發(fā)生泄漏绎橘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望称鳞。 院中可真熱鬧涮较,春花似錦、人聲如沸冈止。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熙暴。三九已至闺属,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間周霉,已是汗流浹背掂器。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俱箱,地道東北人国瓮。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像狞谱,于是被迫代替她去往敵國和親乃摹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容