自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于哈希(散列)函數(shù)你應(yīng)該知道的東西

系統(tǒng)
無論安全從業(yè)人員用計(jì)算機(jī)做什么,有一種工具對(duì)他們每個(gè)人都很有用:加密哈希(散列)函數(shù)。這聽起來很神秘、很專業(yè),甚至可能有點(diǎn)乏味,但是, 在這里,關(guān)于什么是哈希函數(shù)以及它們?yōu)槭裁磳?duì)你很重要,我會(huì)作出一個(gè)簡(jiǎn)潔的解釋。

[[333409]]

從輸出的哈希值反推回輸入,這從計(jì)算的角度是不可行的。

無論安全從業(yè)人員用計(jì)算機(jī)做什么,有一種工具對(duì)他們每個(gè)人都很有用:加密哈希(散列)hash函數(shù)。這聽起來很神秘、很專業(yè),甚至可能有點(diǎn)乏味,但是, 在這里,關(guān)于什么是哈希函數(shù)以及它們?yōu)槭裁磳?duì)你很重要,我會(huì)作出一個(gè)簡(jiǎn)潔的解釋。

加密哈希函數(shù),比如 SHA-256 或者 MD5,接受一組二進(jìn)制數(shù)據(jù)(通常是字節(jié))作為輸入,并且對(duì)每個(gè)可能的輸入集給出一個(gè)希望唯一hopefully unique的輸出。對(duì)于任意模式的輸入,給定的哈希函數(shù)的輸出(“哈希值”)的長(zhǎng)度都是一樣的(對(duì)于 SHA-256,是 32 字節(jié)或者 256 比特,這從名字中就能看出來)。最重要的是:從輸出的哈希值反推回輸入,這從計(jì)算的角度是不可行的implausible(密碼學(xué)家討厭 “不可能impossible” 這個(gè)詞)。這就是為什么它們有時(shí)候被稱作單向哈希函數(shù)one-way hash function

但是哈希函數(shù)是用來做什么的呢?為什么“唯一”的屬性如此重要?

唯一的輸出

在描述哈希函數(shù)的輸出時(shí),“希望唯一hopefully unique”這個(gè)短語是至關(guān)重要的,因?yàn)楣:瘮?shù)就是用來呈現(xiàn)完全唯一的輸出。比如,哈希函數(shù)可以用于驗(yàn)證  下載的文件副本的每一個(gè)字節(jié)是否和  下載的文件一樣。你下載一個(gè) Linux 的 ISO 文件或者從 Linux 的倉庫中下載軟件時(shí),你會(huì)看到使用這個(gè)驗(yàn)證過程。沒有了唯一性,這個(gè)技術(shù)就沒用了,至少就通常的目的而言是這樣的。

如果兩個(gè)不同的輸入產(chǎn)生了相同的輸出,那么這樣的哈希過程就稱作“碰撞collision”。事實(shí)上,MD5 算法已經(jīng)被棄用,因?yàn)殡m然可能性微乎其微,但它現(xiàn)在可以用市面上的硬件和軟件系統(tǒng)找到碰撞。

另外一個(gè)重要的特性是,消息中的一個(gè)微小變化,甚至只是改變一個(gè)比特位,都可能會(huì)在輸出中產(chǎn)生一個(gè)明顯的變化(這就是“雪崩效應(yīng)avalanche effect”)。

驗(yàn)證二進(jìn)制數(shù)據(jù)

哈希函數(shù)的典型用途是當(dāng)有人給你一段二進(jìn)制數(shù)據(jù),確保這些數(shù)據(jù)是你所期望的。無論是文本、可執(zhí)行文件、視頻、圖像或者一個(gè)完整的數(shù)據(jù)庫數(shù)據(jù),在計(jì)算世界中,所有的數(shù)據(jù)都可以用二進(jìn)制的形式進(jìn)行描述,所以至少可以這么說,哈希是廣泛適用的。直接比較二進(jìn)制數(shù)據(jù)是非常緩慢的且計(jì)算量巨大,但是哈希函數(shù)在設(shè)計(jì)上非常快。給定兩個(gè)大小為幾 M 或者幾 G 的文件,你可以事先生成它們的哈希值,然后在需要的時(shí)候再進(jìn)行比較。

通常,對(duì)哈希值進(jìn)行簽名比對(duì)大型數(shù)據(jù)集本身進(jìn)行簽名更容易。這個(gè)特性太重要了,以至于密碼學(xué)中對(duì)哈希值最常見的應(yīng)用就是生成“數(shù)字”簽名。

由于生成數(shù)據(jù)的哈希值很容易,所以通常不需要有兩套數(shù)據(jù)。假設(shè)你想在你的電腦上運(yùn)行一個(gè)可執(zhí)行文件。但是在你運(yùn)行之前,你需要檢查這個(gè)文件就是你要的文件,沒有被黑客篡改。你可以方便快捷的對(duì)文件生成哈希值,只要你有一個(gè)這個(gè)哈希值的副本,你就可以相當(dāng)肯定這就是你想要的文件。

下面是一個(gè)簡(jiǎn)單的例子:

  1. $ shasum -a256 ~/bin/fop
  2. 87227baf4e1e78f6499e4905e8640c1f36720ae5f2bd167de325fd0d4ebc791c  /home/bob/bin/fop

如果我知道 fop 這個(gè)可執(zhí)行文件的 SHA-256 校驗(yàn)和,這是由供應(yīng)商(這個(gè)例子中是 Apache 基金會(huì))提供的:

  1. 87227baf4e1e78f6499e4905e8640c1f36720ae5f2bd167de325fd0d4ebc791c

然后我就可以確信,我驅(qū)動(dòng)器上的這個(gè)可執(zhí)行文件和 Apache 基金會(huì)網(wǎng)站上發(fā)布的文件是一模一樣的。這就是哈希函數(shù)難以發(fā)生碰撞(或者至少是 很難通過計(jì)算得到碰撞)這個(gè)性質(zhì)的重要之處。如果黑客能將真實(shí)文件用哈希值相同的文件輕易的進(jìn)行替換,那么這個(gè)驗(yàn)證過程就毫無用處。

事實(shí)上,這些性質(zhì)還有更技術(shù)性的名稱,我上面所描述的將三個(gè)重要的屬性混在了一起。更準(zhǔn)確地說,這些技術(shù)名稱是:

  1. 抗原像性pre-image resistance:給定一個(gè)哈希值,即使知道用了什么哈希函數(shù),也很難得到用于創(chuàng)建它的消息。
  2. 抗次原像性second pre-image resistance:給定一個(gè)消息,很難找到另一個(gè)消息,使得這個(gè)消息可以產(chǎn)生相同的哈希值。
  3. 抗碰撞性collision resistance:很難得到任意兩個(gè)可以產(chǎn)生相同哈希值的消息。

抗碰撞性 和 抗次原像性 也許聽上去是同樣的性質(zhì),但它們具有細(xì)微而顯著的不同。抗次原像性 說的是如果 已經(jīng) 有了一個(gè)消息,你也很難得到另一個(gè)與之哈希值相匹配的消息。抗碰撞性 使你很難找到兩個(gè)可以生成相同哈希值的消息,并且要在哈希函數(shù)中實(shí)現(xiàn)這一性質(zhì)則更加困難。

讓我回到黑客試圖替換文件(可以通過哈希值進(jìn)行校驗(yàn))的場(chǎng)景。現(xiàn)在,要在“外面”使用加密哈希算法(除了使用那些在現(xiàn)實(shí)世界中由獨(dú)角獸公司開發(fā)的完全無 Bug 且安全的實(shí)現(xiàn)之外),還有一些重要且困難的附加條件需要滿足。認(rèn)真的讀者可能已經(jīng)想到了其中一些,特別需要指出的是:

  1. 你必須確保自己所擁有的哈希值副本也沒有被篡改。
  2. 你必須確保執(zhí)行哈希算法的實(shí)體能夠正確執(zhí)行并報(bào)告了結(jié)果。
  3. 你必須確保對(duì)比兩個(gè)哈希值的實(shí)體確實(shí)報(bào)告了這個(gè)對(duì)比的正確結(jié)果。

確保你能滿足這些條件絕對(duì)不是一件容易的事。這就是可信平臺(tái)模塊Trusted Platform Modules(TPM)成為許多計(jì)算系統(tǒng)一部分的原因之一。它們扮演著信任的硬件基礎(chǔ),可以為驗(yàn)證重要二進(jìn)制數(shù)據(jù)真實(shí)性的加密工具提供保證。TPM 對(duì)于現(xiàn)實(shí)中的系統(tǒng)來說是有用且重要的工具,我也打算將來寫一篇關(guān)于 TPM 的文章。

 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2022-10-27 08:28:06

哈希散列算法

2022-11-04 08:22:14

編譯代碼C語言

2022-08-29 08:00:11

哈希表數(shù)組存儲(chǔ)桶

2013-05-23 11:11:58

Sailfish OSJolla手機(jī)操作系統(tǒng)

2021-12-07 13:45:38

WOT技術(shù)峰會(huì)技術(shù)

2015-03-20 09:22:01

網(wǎng)絡(luò)安全授權(quán)用戶身份訪問管理

2015-11-05 18:03:15

虛擬化云計(jì)算資源池

2013-05-13 01:16:15

Mobile Web webapp

2022-10-11 23:18:28

散列表函數(shù)數(shù)組

2017-11-03 13:43:24

云計(jì)算Saas信息化

2019-10-29 15:12:01

產(chǎn)業(yè)互聯(lián)網(wǎng)消費(fèi)

2022-03-11 07:47:56

防御性編程互聯(lián)網(wǎng)

2017-07-06 09:20:51

2024-10-08 15:06:28

數(shù)字化轉(zhuǎn)型大數(shù)據(jù)數(shù)據(jù)資產(chǎn)化

2019-07-08 10:40:03

線程池策略CPU

2013-08-02 10:34:33

移動(dòng)創(chuàng)業(yè)移動(dòng)應(yīng)用市場(chǎng)Evernote CE

2018-05-30 12:04:36

LinuxUbuntu 18.0

2017-05-17 17:23:00

2011-03-25 15:56:58

2019-06-03 08:04:43

Apache服務(wù)器命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)