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

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

創(chuàng)新互聯(lián)公司是一家專業(yè)提供昌圖企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站制作、HTML5建站、小程序制作等業(yè)務(wù)。10年已為昌圖眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進(jìn)行中。

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

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

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

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

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

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

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

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

下面是一個簡單的例子:

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

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

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

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

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

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

【編輯推薦】

10款Linux系統(tǒng),總有一款適合你 雙系統(tǒng)的日子結(jié)束了:Windows和Linux將合二為一 如何對你的Linux系統(tǒng)進(jìn)行壓力測試 系統(tǒng)管理員要學(xué)習(xí)的五大技能! 華為鴻蒙系統(tǒng)2.0曝光:9月發(fā)布 打通PC、手表、車機等
【責(zé)任編輯:龐桂玉 TEL:(010)68476606】

分享文章:關(guān)于哈希(散列)函數(shù)你應(yīng)該知道的東西
分享鏈接:http://muchs.cn/article0/sdeeio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站網(wǎng)站收錄、電子商務(wù)虛擬主機、手機網(wǎng)站建設(shè)App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)