RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

區(qū)塊鏈科普:哈希函數(shù)算法

如意 ? 來(lái)源:以太坊愛(ài)好者 ? 作者:zhiachong ? 2020-06-28 09:25 ? 次閱讀

哈希值和哈希函數(shù)的概念是初次入門區(qū)塊鏈的人常聽到的兩個(gè)關(guān)鍵詞,而且似乎對(duì)安全性來(lái)說(shuō)特別關(guān)鍵。(實(shí)際上也確實(shí)是。)對(duì)于像比特幣和以太坊這樣由成千上萬(wàn)的節(jié)點(diǎn)通過(guò) P2P 方法組成的去中心網(wǎng)絡(luò)來(lái)說(shuō),“免信任性” 和驗(yàn)證效率無(wú)疑是關(guān)鍵。也就是說(shuō),這些系統(tǒng)需要找到方法把信息編碼成緊湊的形式,同時(shí)讓參與者能夠安全快速地進(jìn)行驗(yàn)證。

比特幣和以太坊網(wǎng)絡(luò)所處理的主要內(nèi)容叫做“區(qū)塊”,指的是由交易、時(shí)間戳和其他重要元數(shù)據(jù)所組成的數(shù)據(jù)結(jié)構(gòu)。比特幣和以太坊網(wǎng)絡(luò)的安全性的關(guān)鍵一環(huán)是:它能將表達(dá)網(wǎng)絡(luò)全局狀態(tài)的大塊信息壓縮成一個(gè)簡(jiǎn)短的消息。在有需要之時(shí),我們可以高效地驗(yàn)證這個(gè)消息的真實(shí)性。這個(gè)過(guò)程就是用哈希函數(shù)來(lái)完成的,而得到的結(jié)果(消息)就是哈希值。

即使只更改輸入中的一個(gè)字符,最后得出的哈希值也會(huì)完全不同

密碼學(xué)哈希廣泛應(yīng)用于口令存儲(chǔ)和文件驗(yàn)證系統(tǒng)。簡(jiǎn)單來(lái)說(shuō),密碼學(xué)哈希函數(shù)是一種確定性的算法,不論輸入什么值,都能得到一個(gè)固定長(zhǎng)度的字符串。也就是說(shuō),同一個(gè)輸入值始終對(duì)應(yīng)同一個(gè)輸出值。

對(duì)哈希函數(shù)來(lái)說(shuō),重要的不僅是確定性(還有結(jié)果的隨機(jī)性):即使只更改輸入中的一個(gè)比特位,也會(huì)導(dǎo)致最終得到的哈希值截然不同。

哈希算法有一個(gè)無(wú)可回避的問(wèn)題叫碰撞可能性。因?yàn)楣V凳枪潭ㄩL(zhǎng)度的字符串,同一個(gè)輸出哈希值有可能對(duì)應(yīng)多個(gè)輸入。碰撞會(huì)造成很嚴(yán)重的后果。如果有人能夠按需要發(fā)起碰撞攻擊,他就可以用恰當(dāng)?shù)墓V祵阂馕募驍?shù)據(jù)偽裝成合法的、能夠通過(guò)驗(yàn)證的文件。好的哈希函數(shù)的設(shè)計(jì)目標(biāo)是讓攻擊者極難找到方法來(lái)找出對(duì)應(yīng)同一個(gè)哈希的不同輸入。

哈希計(jì)算的效率不應(yīng)過(guò)高,以免讓攻擊者可以更簡(jiǎn)單地人為計(jì)算出碰撞。哈希算法必須能夠抵御“原像攻擊(pre-image attack)”。也就是說(shuō),對(duì)于特定哈希值,攻擊者很難通過(guò)確定性計(jì)算步驟倒推出輸入值(即,原像)。

假設(shè) s = hash(x),倒推 x 應(yīng)該是近乎不可能的。

總的來(lái)說(shuō),“好的” 哈希算法需要具備以下 3 個(gè)特性:

更改輸入中的一個(gè)比特位會(huì)產(chǎn)生雪崩效應(yīng),導(dǎo)致最后得出的哈希值截然不同

出現(xiàn)哈希碰撞的概率非常低

在無(wú)需犧牲抗碰撞性的前提下計(jì)算效率過(guò)得去

破解哈希算法

哈希算法的初始標(biāo)準(zhǔn)之一是 MD5 哈希。MD5 哈希廣泛應(yīng)用于文件完整性驗(yàn)證(校驗(yàn)和),以及在網(wǎng)絡(luò)應(yīng)用數(shù)據(jù)庫(kù)中存儲(chǔ)經(jīng)過(guò)哈希計(jì)算的賬號(hào)口令。MD5 的功能非常簡(jiǎn)單,因?yàn)樗鼤?huì)將每個(gè)輸入轉(zhuǎn)換成一個(gè)固定的 128 位字符串輸出,并通過(guò)多輪簡(jiǎn)單的單向操作來(lái)計(jì)算確定性輸出。由于輸出值長(zhǎng)度較短,操作又較為簡(jiǎn)單,MD5 很容易被破解,一種常見的攻擊方法叫生日攻擊。

什么是生日攻擊?你有沒(méi)有聽說(shuō)過(guò)這樣一個(gè)事實(shí)?如果你將 23 個(gè)人放到一個(gè)房間里,其中兩個(gè)人生日相同的概率為 50% 。如果將 70 個(gè)人放到一個(gè)房間里,其中兩個(gè)人生日相同的概率高達(dá) 99.9% 。這就是我們所說(shuō)的鴿籠原理(pigeonhole principle),即將 100 只鴿子裝進(jìn) 99 個(gè)鴿籠,必然有兩只鴿子分享同一個(gè)鴿籠。也就是說(shuō),固定長(zhǎng)度的輸出意味著所有輸入輸出組合中一定存在碰撞。

籠子不夠時(shí),鴿子就會(huì)湊對(duì)

事實(shí)上,MD5 的抗碰撞性太差,以至于一臺(tái)家用 2.4 GHz 奔騰處理器都能在幾秒內(nèi)計(jì)算出哈希碰撞。此外,由于 MD5 在互聯(lián)網(wǎng)早期階段得到了廣泛應(yīng)用,網(wǎng)絡(luò)上有大量 MD5 原像遭到泄漏,通過(guò)谷歌搜索它們的哈希值就能找到。

哈希算法的多樣性發(fā)展

NSA (沒(méi)錯(cuò),就是美國(guó)國(guó)家安全保障局)是哈希算法標(biāo)準(zhǔn)的先驅(qū)。安全哈希算法(Secure Hashing Algorithm,SHA1)是最早提出的標(biāo)準(zhǔn),將輸出值的長(zhǎng)度固定在 160 位。遺憾的是,SHA1 只是在 MD5 的基礎(chǔ)上增加了輸出值長(zhǎng)度、單向操作的次數(shù)和復(fù)雜度,但是并沒(méi)有作出能夠抵御更強(qiáng)大機(jī)器攻擊的根本性改進(jìn)。

我們?nèi)绾尾拍茏龅酶茫?/p>

在 2006 年,美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所(NIST)舉辦了一場(chǎng)競(jìng)賽,旨在找到一個(gè)本質(zhì)上不同于 SHA2 的替代標(biāo)準(zhǔn)。因此,SHA3 應(yīng)運(yùn)而生,它是 KECCAK 哈希算法的一種方案。

雖然 SHA 3 在名稱上與 SHA1 和 SHA2 一脈相承,但是在本質(zhì)上差異很大,因?yàn)樗捎昧艘环N名為海綿結(jié)構(gòu)(sponge construct)的機(jī)制。該機(jī)制使用隨機(jī)排列來(lái)吸收并輸出數(shù)據(jù),同時(shí)為將來(lái)用于哈希算法的輸入值提供隨機(jī)性。

KECCAK256 海綿結(jié)構(gòu)是如何進(jìn)行輸入操作的

SHA3 的內(nèi)部狀態(tài)相較于輸出值擁有更多信息,突破了以往算法的局限性。NIST 于 2015 年正式認(rèn)可了 SHA3 標(biāo)準(zhǔn)。

哈希計(jì)算和工作量證明

就整合進(jìn)區(qū)塊鏈協(xié)議的哈希算法而言,比較早的比特幣選擇了 SHA256 ,而以太坊采用了改進(jìn)后的 SHA3 (KECCAK256)作為工作量證明算法。對(duì)于采用工作量證明的區(qū)塊鏈來(lái)說(shuō),選擇哈希函數(shù)的一大重要標(biāo)準(zhǔn)是哈希運(yùn)算效率。

使用一類名為專用集成電路ASIC)的硬件,我們可以大幅提高比特幣 SHA256 算法的哈希運(yùn)算的效率。有很多文章已經(jīng)闡述了礦池是如何利用 ASIC 的,以及 ASIC 是如何讓協(xié)議趨向于計(jì)算中心化的。也就是說(shuō),工作量證明會(huì)激勵(lì)計(jì)算效率較高的機(jī)器聚集成礦池,從而形成較大的哈希算力(算力大小的衡量標(biāo)準(zhǔn)就是礦機(jī)在每個(gè)時(shí)間間隔內(nèi)可以完成多少次哈希運(yùn)算)。

以太坊選擇的是改進(jìn)后的 SHA3 算法(叫做 KECCAK256 )。此外,以太坊的工作量證明算法 Dagger-Hashimoto 被設(shè)計(jì)成了內(nèi)存密集型模式,計(jì)算硬件需要加大內(nèi)存才能提高計(jì)算效率。

那么,為什么比特幣采用雙重 SHA256 ?有趣的是,比特幣協(xié)議(的工作量證明)需要重復(fù)運(yùn)行兩遍 SHA256 算法。請(qǐng)注意,這不是為了抵御生日攻擊,畢竟在 hash(x) = hash(y) 的情況下,hash(hash(x)) = hash(hash(y)) 。雙重 SHA256 旨在抵御長(zhǎng)度擴(kuò)展攻擊。

從本質(zhì)上來(lái)說(shuō),所謂的長(zhǎng)度擴(kuò)展攻擊,指的是如果惡意攻擊者知道了某個(gè)哈希輸入的長(zhǎng)度,就可以在哈希值上添加一個(gè)秘密的字符串、欺騙哈希函數(shù)從其內(nèi)部狀態(tài)的一個(gè)特定部分開始計(jì)算。作為 SHA2 算法家族的一員,SHA256 也存在這一缺陷。因此,比特幣采取執(zhí)行兩遍哈希計(jì)算的方式來(lái)解決這一缺陷。

SHA3 并非哈希算法競(jìng)賽取得的唯一突破。雖然最終勝出的是 SHA3 ,但是 BLAKE 算法緊隨其后,位居第二。對(duì)于以太坊 2.0 的分片實(shí)現(xiàn)來(lái)說(shuō),更高效的哈希算法可以說(shuō)是一項(xiàng)功能性要求,研究團(tuán)隊(duì)對(duì)此非常重視。BLAKE2b 哈希算法是 BLAKE 算法的高度升級(jí)版本。與 KECCAK256 相比,BLAKE2b 哈希算法在保持高度安全性的同時(shí),在提升效率方面也進(jìn)行了深入探索。

使用一臺(tái)現(xiàn)代 CPU 計(jì)算 BLAKE2b 的速度比計(jì)算 KECCAK 快了 3 倍。

哈希算法的前景展望

這么看來(lái),無(wú)論我們做了什么,無(wú)非就是(1)增加內(nèi)部哈希操作的復(fù)雜度,或者(2)增加哈希輸出值的長(zhǎng)度,讓攻擊者的計(jì)算機(jī)無(wú)法足夠快地有效計(jì)算出碰撞。

我們依靠單向操作的原像模糊性來(lái)保護(hù)網(wǎng)絡(luò)的安全性。也就是說(shuō),哈希算法的安全性目標(biāo)是在有無(wú)限多可能的沖突的情況下,讓找出哈希碰撞的難度盡可能高。

如果量子計(jì)算時(shí)代到來(lái),哈希算法依然安全嗎?

就目前來(lái)看,答案是肯定的,哈希算法將經(jīng)受時(shí)間的考驗(yàn),抵御量子計(jì)算。量子計(jì)算能夠解決的是那些嚴(yán)格按照某些小技巧或 RSA 加密理論打造底層結(jié)構(gòu)的數(shù)學(xué)問(wèn)題。另一方面,哈希算法的內(nèi)部構(gòu)造沒(méi)那么形式化。

量子計(jì)算機(jī)確實(shí)能夠提高哈希等非結(jié)構(gòu)化問(wèn)題的計(jì)算速度,但它們最終還是會(huì)像如今的計(jì)算機(jī)一樣采取暴力破解手段。

無(wú)論我們?yōu)閰f(xié)議選擇了哪種算法,我們顯然都在邁向計(jì)算高效化的未來(lái)。為此,我們必須慎重選擇最合適的工具,使之經(jīng)受住時(shí)間的檢驗(yàn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 哈希函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    9446
  • 區(qū)塊鏈
    +關(guān)注

    關(guān)注

    111

    文章

    15562

    瀏覽量

    105922
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    dap協(xié)議的基本概念 dap協(xié)議在區(qū)塊中的應(yīng)用

    DAP協(xié)議,即分布式應(yīng)用協(xié)議(Distributed Application Protocol),是一種旨在促進(jìn)去中心化應(yīng)用(DApps)在區(qū)塊網(wǎng)絡(luò)上的構(gòu)建和運(yùn)行的框架。DAP協(xié)議的核心目標(biāo)是提供
    的頭像 發(fā)表于 11-22 15:39 ?233次閱讀

    YOGO ROBO智能機(jī)器人助力區(qū)塊行業(yè)發(fā)展

    日前,上海靜安區(qū)成功舉辦了全國(guó)首個(gè)區(qū)塊主題的場(chǎng)景集市——“數(shù)通谷”區(qū)塊+醫(yī)療場(chǎng)景集市。本次活動(dòng)匯聚了來(lái)自
    的頭像 發(fā)表于 11-22 11:33 ?273次閱讀

    華納云:Chord算法如何管理節(jié)點(diǎn)間的聯(lián)系?

    Chord算法是一種分布式哈希表(DHT)協(xié)議,它通過(guò)構(gòu)建一個(gè)環(huán)狀結(jié)構(gòu)來(lái)管理節(jié)點(diǎn)間的聯(lián)系。以下是Chord算法如何管理節(jié)點(diǎn)間聯(lián)系的具體方式: 環(huán)狀結(jié)構(gòu): Chord算法將所有節(jié)點(diǎn)和鍵
    發(fā)表于 11-08 16:03

    華為云、上海鈞達(dá)數(shù)科 發(fā)布區(qū)塊數(shù)據(jù)要素聯(lián)合解決方案

    【摘要】 9 月 19 日,在華為全聯(lián)接大會(huì) 2024 期間,華為云與上海鈞達(dá)數(shù)科在上海世博展覽館聯(lián)合發(fā)布了基于華為云區(qū)塊打造“區(qū)塊數(shù)據(jù)要素解決方案”。 9 月 19 日,在華為全
    的頭像 發(fā)表于 10-09 20:16 ?441次閱讀
    華為云、上海鈞達(dá)數(shù)科 發(fā)布<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b>數(shù)據(jù)要素聯(lián)合解決方案

    科技少年夢(mèng) 科普粵海行|芯海科技科普基地啟迪智慧未來(lái)

    9月28日,由深圳市南山區(qū)粵海街道辦事處主辦,深圳市高科技協(xié)同創(chuàng)新促進(jìn)會(huì)、深愛(ài)人才館策劃執(zhí)行的“科技少年夢(mèng)科普粵海行”系列活動(dòng)之“芯片探秘啟未來(lái)”芯??萍籍a(chǎn)品體驗(yàn)日成功舉行,吸引了眾多青少年及家長(zhǎng)
    的頭像 發(fā)表于 10-01 08:07 ?278次閱讀
    科技少年夢(mèng) <b class='flag-5'>科普</b>粵海行|芯??萍?b class='flag-5'>科普</b>基地啟迪智慧未來(lái)

    京準(zhǔn)電鐘:GPS北斗衛(wèi)星校時(shí)服務(wù)器助力區(qū)塊數(shù)據(jù)網(wǎng)

    京準(zhǔn)電鐘:GPS北斗衛(wèi)星校時(shí)服務(wù)器助力區(qū)塊數(shù)據(jù)網(wǎng)
    的頭像 發(fā)表于 09-27 10:43 ?278次閱讀
    京準(zhǔn)電鐘:GPS北斗衛(wèi)星校時(shí)服務(wù)器助力<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b>數(shù)據(jù)網(wǎng)

    開源物聯(lián)網(wǎng)技術(shù)--哈希算法MD5加密功能技術(shù)分享

    MD5(Message-Digest Algorithm 5)是一種常用的哈希函數(shù),通常用于數(shù)據(jù)加密和安全校驗(yàn)等場(chǎng)合。MD5 算法可以將任意長(zhǎng)度的消息輸入計(jì)算出一個(gè)固定長(zhǎng)度的摘要,其生成的摘要具有
    的頭像 發(fā)表于 09-21 09:57 ?1659次閱讀
    開源物聯(lián)網(wǎng)技術(shù)--<b class='flag-5'>哈希</b><b class='flag-5'>算法</b>MD5加密功能技術(shù)分享

    探索無(wú)限可能:華為云區(qū)塊 +X,創(chuàng)新融合新篇章

    ? 6 月 23 日,華為開發(fā)者大會(huì) 2024(HDC 2024)期間,?“「區(qū)塊+X」多元行業(yè)場(chǎng)景下的創(chuàng)新應(yīng)用”分論壇在東莞松山湖舉行,區(qū)塊技術(shù)再次成為焦點(diǎn)。本次論壇以"
    的頭像 發(fā)表于 07-09 12:27 ?3962次閱讀
    探索無(wú)限可能:華為云<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b> +X,創(chuàng)新融合新篇章

    科普EEPROM 科普 EVASH Ultra EEPROM?科普存儲(chǔ)芯片

    科普EEPROM 科普 EVASH Ultra EEPROM?科普存儲(chǔ)芯片
    的頭像 發(fā)表于 06-25 17:14 ?560次閱讀

    區(qū)塊互操作標(biāo)準(zhǔn)化應(yīng)用及經(jīng)驗(yàn),華為云 BCS 獲評(píng)團(tuán)體標(biāo)準(zhǔn)示范項(xiàng)目

    區(qū)塊技術(shù)發(fā)展的關(guān)鍵 區(qū)塊作為一種分布式賬本技術(shù),具多方共識(shí)、分布式存儲(chǔ)、難以篡改等 特點(diǎn),在金融科技、政務(wù)民生、司法存證、供應(yīng)協(xié)同、稅
    的頭像 發(fā)表于 02-23 22:00 ?661次閱讀
    <b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b>互操作標(biāo)準(zhǔn)化應(yīng)用及經(jīng)驗(yàn),華為云 BCS 獲評(píng)團(tuán)體標(biāo)準(zhǔn)示范項(xiàng)目

    如何使用Rust從零開發(fā)區(qū)塊

    區(qū)塊的Body部分是一個(gè)普通的字符串向量,而頭部看起來(lái)更有趣。在所有的字段中,prev_hash 是最有趣的,它存儲(chǔ)了前一個(gè)區(qū)塊哈希字段值,我們將在這篇文章后面的部分討論它。
    的頭像 發(fā)表于 01-22 13:58 ?1264次閱讀
    如何使用Rust從零開發(fā)<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b>

    區(qū)塊是什么樣的數(shù)據(jù)結(jié)構(gòu)組織

    區(qū)塊是一種特殊的數(shù)據(jù)結(jié)構(gòu),它以分布式、去中心化的方式組織和存儲(chǔ)數(shù)據(jù)。區(qū)塊的核心原理是將數(shù)據(jù)分布在網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)上,通過(guò)密碼學(xué)算法保證數(shù)據(jù)
    的頭像 發(fā)表于 01-11 10:57 ?2206次閱讀

    區(qū)塊技術(shù)發(fā)展現(xiàn)狀和趨勢(shì)

    進(jìn)行詳盡的分析。 一、區(qū)塊技術(shù)的起源和原理 區(qū)塊技術(shù)最早在2008年由中本聰提出,而該技術(shù)的最著名應(yīng)用就是比特幣。比特幣是基于去中心化的區(qū)塊
    的頭像 發(fā)表于 01-11 10:31 ?2306次閱讀

    區(qū)塊系統(tǒng)軟件開發(fā)與應(yīng)用

    區(qū)塊技術(shù)是近年來(lái)備受矚目的創(chuàng)新技術(shù),被廣泛應(yīng)用于金融、供應(yīng)管理、物聯(lián)網(wǎng)等領(lǐng)域。區(qū)塊系統(tǒng)軟件開發(fā)是實(shí)現(xiàn)
    的頭像 發(fā)表于 01-10 18:18 ?2508次閱讀

    基于區(qū)塊的自動(dòng)駕駛車輛電池壽命預(yù)測(cè)方法

    基于區(qū)塊的自動(dòng)駕駛車輛電池壽命預(yù)測(cè)方法
    的頭像 發(fā)表于 01-05 10:27 ?441次閱讀
    基于<b class='flag-5'>區(qū)塊</b><b class='flag-5'>鏈</b>的自動(dòng)駕駛車輛電池壽命預(yù)測(cè)方法
    RM新时代网站-首页