成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于哈希(散列)函數你應該知道的東西

系統
無論安全從業人員用計算機做什么,有一種工具對他們每個人都很有用:加密哈希(散列)函數。這聽起來很神秘、很專業,甚至可能有點乏味,但是, 在這里,關于什么是哈希函數以及它們為什么對你很重要,我會作出一個簡潔的解釋。

[[333409]]

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

無論安全從業人員用計算機做什么,有一種工具對他們每個人都很有用:加密哈希(散列)hash函數。這聽起來很神秘、很專業,甚至可能有點乏味,但是, 在這里,關于什么是哈希函數以及它們為什么對你很重要,我會作出一個簡潔的解釋。

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

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

唯一的輸出

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

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

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

驗證二進制數據

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

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

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

下面是一個簡單的例子:

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

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

  1. 87227baf4e1e78f6499e4905e8640c1f36720ae5f2bd167de325fd0d4ebc791c

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

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

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

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

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

  1. 你必須確保自己所擁有的哈希值副本也沒有被篡改。
  2. 你必須確保執行哈希算法的實體能夠正確執行并報告了結果。
  3. 你必須確保對比兩個哈希值的實體確實報告了這個對比的正確結果。

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

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-10-27 08:28:06

哈希散列算法

2022-11-04 08:22:14

編譯代碼C語言

2022-08-29 08:00:11

哈希表數組存儲桶

2013-05-23 11:11:58

Sailfish OSJolla手機操作系統

2015-11-05 18:03:15

虛擬化云計算資源池

2013-05-13 01:16:15

Mobile Web webapp

2015-03-20 09:22:01

網絡安全授權用戶身份訪問管理

2021-12-07 13:45:38

WOT技術峰會技術

2017-11-03 13:43:24

云計算Saas信息化

2022-03-11 07:47:56

防御性編程互聯網

2019-10-29 15:12:01

產業互聯網消費

2017-07-06 09:20:51

2024-10-08 15:06:28

數字化轉型大數據數據資產化

2022-10-11 23:18:28

散列表函數數組

2019-07-08 10:40:03

線程池策略CPU

2013-08-02 10:34:33

移動創業移動應用市場Evernote CE

2018-05-30 12:04:36

LinuxUbuntu 18.0

2013-01-09 13:55:43

2020-04-29 14:30:35

HTTPHTTPS前端

2012-02-07 13:29:35

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人性生交大片 | 国产日韩欧美 | 亚洲欧美一区二区三区国产精品 | 欧美日韩在线免费观看 | 国产精品99999| 中文字幕亚洲一区二区va在线 | xx性欧美肥妇精品久久久久久 | 福利久久 | 日韩三级一区 | 999国产精品视频免费 | 国产成人艳妇aa视频在线 | 蜜月va乱码一区二区三区 | 亚洲精品自拍 | 一级网站 | 中文字幕免费在线 | 综合亚洲视频 | 国产一区在线免费观看 | 日韩欧美视频网站 | 日本人爽p大片免费看 | 羞羞视频在线观看网站 | 成人av网站在线观看 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 国产精品视频一区二区三区不卡 | 精品国产精品 | 欧美视频 亚洲视频 | 精品视频在线免费观看 | 免费爱爱视频 | 爱爱视频日本 | 精精国产xxxx视频在线播放 | 中文字幕在线一区二区三区 | 亚洲激情综合 | 久久99精品久久久久蜜桃tv | 国产在线精品一区 | 81精品国产乱码久久久久久 | 国产成人综合在线 | 久久精品视频99 | 婷婷五月色综合 | 欧美一级久久 | 91亚洲精华国产 | 精品日韩 | 日本一区不卡 |