密码学原语如何应用?解析单向哈希的妙用|第9论
?作者:廖飛強(qiáng)
來(lái)源:微眾銀行區(qū)塊鏈
?隱私數(shù)據(jù)如何驗(yàn)明真?zhèn)?#xff1f;區(qū)塊鏈數(shù)據(jù)何以可信?如何快速檢驗(yàn)海量數(shù)據(jù)是否被篡改?單向哈希在其中起到了什么作用?
隱私數(shù)據(jù)的價(jià)值很大程度上源自其真實(shí)性,如何防止數(shù)據(jù)被惡意篡改,是隱私保護(hù)方案設(shè)計(jì)中不可忽視的關(guān)鍵目標(biāo)之一。為此,密碼學(xué)領(lǐng)域提出了一系列基本組件,即密碼學(xué)原語(yǔ)(Cryptographic Primitive)來(lái)實(shí)現(xiàn)這一目標(biāo),其中最常用的便是單向哈希。
在區(qū)塊鏈中,單向哈希能夠鏈接多個(gè)區(qū)塊數(shù)據(jù),形成可信的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),在弱信任環(huán)境下,提供防篡改且經(jīng)過多方共識(shí)的可信數(shù)據(jù)源。
這一特性對(duì)隱私保護(hù)方案的設(shè)計(jì)意義重大。隱私數(shù)據(jù)往往以密文形式表達(dá),需要快速檢驗(yàn)海量隱私數(shù)據(jù)的真?zhèn)?#xff0c;查驗(yàn)是否被惡意篡改。此時(shí),單向哈希作為一項(xiàng)關(guān)鍵技術(shù),大有用武之地。
為何單向哈希如此神奇?其常見的用法有哪些?又能具體解決哪些問題?以下將據(jù)此一一展開。
1.單向的哈希算法
哈希算法是信息科學(xué)中的基礎(chǔ)算法組件,“快速實(shí)現(xiàn)數(shù)據(jù)比較和效驗(yàn)”是其設(shè)計(jì)初衷之一。
現(xiàn)實(shí)業(yè)務(wù)場(chǎng)景中,可能會(huì)涉及海量隱私數(shù)據(jù),逐一比對(duì)數(shù)據(jù)原文,在很多場(chǎng)景中非常不現(xiàn)實(shí),尤其是需要通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),會(huì)大大增加網(wǎng)絡(luò)帶寬的負(fù)擔(dān)。
哈希算法的出現(xiàn),使得高效的數(shù)據(jù)驗(yàn)證成為了可能。
哈希算法的核心功能為,將任意長(zhǎng)度的輸入m映射為固定長(zhǎng)度的輸出H(m),H(m)常稱為哈希值、散列值或消息摘要。
一個(gè)精心設(shè)計(jì)的哈希算法具有以下特征:
- 輸出確定性:同一種哈希算法,相同的輸入,其輸出固定不變。
- 輸出長(zhǎng)度不變性:同一種哈希算法,針對(duì)任意長(zhǎng)度的輸入,其輸出長(zhǎng)度不變。
- 輸入敏感性:同一種哈希算法,即便輸入數(shù)據(jù)有微小的改變,其輸出哈希值也會(huì)發(fā)生巨大變化。
因此,只要比較數(shù)據(jù)的哈希值是否與預(yù)期的一致,就能大概率地判別隱私數(shù)據(jù)原文是否被篡改。其典型的實(shí)現(xiàn)有:各大主流編程語(yǔ)言中,HashMap數(shù)據(jù)結(jié)構(gòu)所使用的哈希算法。
然而,只是大概率,在密碼學(xué)協(xié)議中是不夠的。我們需要更強(qiáng)的哈希算法,將實(shí)際的檢驗(yàn)概率提升至接近100%。
與之對(duì)應(yīng)的一個(gè)重要概念是『哈希碰撞』。哈希碰撞是指,存在兩個(gè)不同的數(shù)據(jù)原文m1和m2,其哈希值完全相同,即H(m1) = H(m2)。
容易出現(xiàn)哈希碰撞的哈希算法在密碼學(xué)協(xié)議中不安全,同時(shí),密碼學(xué)還進(jìn)一步引入了單向性的要求。
一個(gè)密碼學(xué)安全的哈希算法,在傳統(tǒng)哈希算法的基礎(chǔ)上,還需滿足以下特性:
- 單向性:根據(jù)數(shù)據(jù)原文計(jì)算哈希值很容易,但要求難以根據(jù)哈希值計(jì)算數(shù)據(jù)原文,提供計(jì)算上的不對(duì)稱性,以此防止攻擊者輕易地從哈希值反推出可能的隱私數(shù)據(jù)原文,保護(hù)哈希值的機(jī)密性。
- 抗碰撞性:給定任意兩個(gè)不同的數(shù)據(jù)原文,要求它們經(jīng)哈希算法計(jì)算后得到相同哈希值的概率極低,以此防止攻擊者輕易地為篡改之后的隱私數(shù)據(jù)原文構(gòu)造出合法的哈希值,確保數(shù)據(jù)檢驗(yàn)的有效性。
以上兩個(gè)特性,賦予了密碼學(xué)安全的哈希算法對(duì)數(shù)據(jù)內(nèi)容公開可驗(yàn)證的約束能力。這一約束能力使得經(jīng)過單向性轉(zhuǎn)換獲得哈希值,在一定程度上可以作為隱私數(shù)據(jù)原文的等價(jià)信息。
在隱私保護(hù)方案設(shè)計(jì)中,哈希算法的單向性是最常用的特性之一。相應(yīng)地,密碼學(xué)安全的哈希算法也常被稱之為單向哈希。
目前主流的單向哈希有如下算法標(biāo)準(zhǔn):
- NIST標(biāo)準(zhǔn):SHA(Secure Hash Algorithm)系列是由美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究院(NIST)制定的SHA哈希算法系列,主要包括SHA-1、SHA-2和SHA-3三個(gè)系列。SHA-1由于安全問題已不再使用。
SHA-2系列包括SHA-224(表示哈希值長(zhǎng)度為224位)、SHA-256、SHA-384、SHA-512等算法,其中SHA-256是目前使用最廣泛的單向哈希。
SHA-3是最新算法標(biāo)準(zhǔn),源自參與SHA-3競(jìng)賽的keccak算法。2015年,NIST在完成SHA-3的標(biāo)準(zhǔn)化時(shí),調(diào)整了keccak的填充流程,因此,標(biāo)準(zhǔn)的SHA-3算法與原始的keccak算法并不兼容。 - 國(guó)密標(biāo)準(zhǔn):國(guó)密哈希算法SM3,是我國(guó)制定的單向哈希算法標(biāo)準(zhǔn),由國(guó)家密碼管理局于2010年12月17日發(fā)布,其安全性和效率與SHA-2系列的SHA-256相當(dāng)。
單向哈希的選型可以參考業(yè)務(wù)部署的地域性要求,建議在SM3和SHA-3之間做出選擇,如果需要與現(xiàn)有系統(tǒng)進(jìn)行兼容,也可酌情選用SHA-2系列中的SHA-256。
2.鏈?zhǔn)焦=Y(jié)構(gòu)
單向哈希的用途很廣泛,最直接的應(yīng)用就是構(gòu)造鏈?zhǔn)焦=Y(jié)構(gòu),即大家所熟知的區(qū)塊鏈,提供難以篡改的可信數(shù)據(jù)源。
由于單向哈希的單向性,從結(jié)構(gòu)上可以看出,從前一個(gè)數(shù)據(jù)塊原文,很容易計(jì)算下一個(gè)數(shù)據(jù)塊所用的哈希值輸入,但已知一個(gè)哈希值輸入,難以反推出所有可能的數(shù)據(jù)塊原文。
區(qū)塊鏈技術(shù)結(jié)合單向哈希和共識(shí)算法,當(dāng)某一區(qū)塊的數(shù)據(jù)共識(shí)確認(rèn)后,下一區(qū)塊將會(huì)記錄前一區(qū)塊數(shù)據(jù)的哈希值,從而實(shí)現(xiàn)整條鏈上所有數(shù)據(jù)塊的難以篡改。
在隱私保護(hù)方案設(shè)計(jì)中,以區(qū)塊鏈為代表的基于鏈?zhǔn)焦=Y(jié)構(gòu)的可信數(shù)據(jù)源,可以起到簡(jiǎn)化協(xié)議設(shè)計(jì)的作用,尤其對(duì)于第4論中提到的惡意模型特別有效。惡意模型下的密碼學(xué)協(xié)議,為了防范內(nèi)部參與者不遵守協(xié)議、隨意篡改數(shù)據(jù),不得不引入復(fù)雜的多方交互驗(yàn)證過程。
通過鏈?zhǔn)焦=Y(jié)構(gòu),在現(xiàn)實(shí)系統(tǒng)中引入一個(gè)可信數(shù)據(jù)源,可以對(duì)關(guān)鍵的中間流程數(shù)據(jù)進(jìn)行存證和溯源,一旦有參與方作惡,便能在第一時(shí)間檢測(cè)出,且定位到對(duì)應(yīng)責(zé)任方,有效保障隱私保護(hù)方案全流程的正確性。
3.哈希樹
單向哈希不僅僅能構(gòu)造簡(jiǎn)單的鏈?zhǔn)焦=Y(jié)構(gòu),還能根據(jù)業(yè)務(wù)需要擴(kuò)展為更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),其經(jīng)典的形態(tài)之一便是哈希樹。
哈希樹常稱為Merkle Tree,最早由Ralph Merkle在1979年的專利申請(qǐng)中提出,為大數(shù)據(jù)量的完整性驗(yàn)證提供了高效靈活的解決方案。
這里的完整性驗(yàn)證是指,核實(shí)原始數(shù)據(jù)在使用和傳輸?shù)倪^程中沒有被篡改。
在真實(shí)的隱私保護(hù)業(yè)務(wù)中,隱私數(shù)據(jù)多為高價(jià)值數(shù)據(jù),而且多以密文的形態(tài)保存和使用,一旦被篡改,在不知道明文的前提下,難以通過常規(guī)技術(shù)手段來(lái)有效識(shí)別真?zhèn)?/strong>。
對(duì)于涉及多方協(xié)作、聯(lián)合計(jì)算的隱私保護(hù)業(yè)務(wù),隱私數(shù)據(jù)密文交換和共享通常是其中的核心流程。所以當(dāng)這些隱私數(shù)據(jù)密文跨越系統(tǒng)邊界時(shí),數(shù)據(jù)接收方會(huì)有兩方面數(shù)據(jù)檢驗(yàn)需求:
- 整體完整:驗(yàn)證隱私數(shù)據(jù)中任意部分都未被篡改。
- 篡改定位:如果存在攻擊,能夠有效定位被篡改的數(shù)據(jù)位置,便于開展應(yīng)對(duì)流程。
為了體現(xiàn)哈希樹的設(shè)計(jì)優(yōu)越性,我們以舉例的形式展示其效果。
為了簡(jiǎn)化說明,以下分析假定:
- 發(fā)送方與接收方之間存在一個(gè)帶寬有限的可信信道,如區(qū)塊鏈上經(jīng)過共識(shí)的數(shù)據(jù),可以將簡(jiǎn)短的哈希值安全地傳遞給對(duì)方。
- 隱私數(shù)據(jù)相關(guān)的原始文件由于數(shù)據(jù)量過大,不得不通過低成本低密級(jí)信道傳輸,如公共網(wǎng)絡(luò),因此可能被攻擊者篡改。
方案1:整體單次哈希
本方案中,發(fā)送方在發(fā)送原始文件之前,將所有的原始文件數(shù)據(jù)作為哈希算法的輸入,計(jì)算哈希值,然后將哈希值與原始文件均發(fā)送給接收方。
當(dāng)接收方收到哈希值和原始文件后,重復(fù)發(fā)送方計(jì)算哈希值的操作,然后將新計(jì)算得到的哈希值與從網(wǎng)絡(luò)上接收到的哈希值進(jìn)行比較,如果相同,就可以判斷原始文件在傳輸過程中未被篡改。
方案2:分塊多次哈希 + 哈希樹
方案1對(duì)于滿足整體完整需求十分有效,但對(duì)于第二條篡改定位需求就無(wú)能為力了。
基于哈希算法的輸入敏感性,接收方可以知道至少有一個(gè)比特的數(shù)據(jù)被篡改了,但不知道具體在哪里。發(fā)送方不得不對(duì)所有數(shù)據(jù)進(jìn)行重發(fā),在這種情況下,攻擊者很容易對(duì)隱私保護(hù)方案實(shí)施拒絕服務(wù)攻擊。
為了解決這一點(diǎn),本改進(jìn)方案中,將原始文件分成一系列數(shù)據(jù)塊,為每一個(gè)數(shù)據(jù)塊分別計(jì)算哈希值。接收方驗(yàn)證的過程與方案1相似,區(qū)別在于可以對(duì)具體的數(shù)據(jù)塊進(jìn)行驗(yàn)證,一個(gè)數(shù)據(jù)塊被篡改,導(dǎo)致的哈希值不匹配不會(huì)影響到其他數(shù)據(jù)塊的驗(yàn)證,由此實(shí)現(xiàn)了篡改定位需求。
這里中間缺了關(guān)鍵的一步,即如何高效靈活地傳輸這些哈希值,并在原始文件很大時(shí),靈活支持部分?jǐn)?shù)據(jù)的獲取和驗(yàn)證?
解決這些問題的要點(diǎn),在于利用好哈希樹的特性。
哈希樹中,最底層的葉子層是各個(gè)數(shù)據(jù)塊的哈希值,往樹根的方向迭代哈希計(jì)算。即把相鄰的兩個(gè)節(jié)點(diǎn)的哈希值串連之后,再進(jìn)行哈希運(yùn)算,這樣每?jī)蓚€(gè)哈希值就生成一個(gè)新的哈希值,重復(fù)以上計(jì)算過程,直到僅剩下一個(gè)哈希值(根哈希),最終形成一棵倒掛的樹。
在哈希值傳輸方面,接收方只需要通過可信信道下載一個(gè)根哈希,其他數(shù)據(jù)都可以通過低成本低密級(jí)信道傳輸。
在支持部分?jǐn)?shù)據(jù)的獲取和驗(yàn)證方面,接收方只需要獲取所需的部分?jǐn)?shù)據(jù)塊、根哈希,途經(jīng)分支節(jié)點(diǎn)的哈希值,以O(shè)(log(n))的時(shí)間復(fù)雜度便可完成數(shù)據(jù)的驗(yàn)證,并實(shí)現(xiàn)被篡改數(shù)據(jù)塊的快速定位。
除了哈希樹之外,根據(jù)業(yè)務(wù)需求的差異,單向哈希還能用于構(gòu)造有向無(wú)環(huán)圖等更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。一般而言,其作用相當(dāng)于連接各個(gè)數(shù)據(jù)點(diǎn)的鎖扣,為相關(guān)數(shù)據(jù)建立公開可驗(yàn)證的密碼學(xué)約束,使之難以被篡改,以此保障數(shù)據(jù)的正確性。
正是:隱私數(shù)據(jù)真假難分辨,單向哈希守正不輕撓!
單向哈希是密碼學(xué)中處于核心地位的密碼學(xué)原語(yǔ),可用于構(gòu)建難以篡改的可信數(shù)據(jù)源、高效靈活的數(shù)據(jù)完整性驗(yàn)證機(jī)制等,以此來(lái)保障隱私保護(hù)方案中隱私數(shù)據(jù)的正確性。
本論中,我們介紹了單向哈希的基礎(chǔ)應(yīng)用,在往后的文章中,我們還會(huì)進(jìn)一步介紹單向哈希的高級(jí)應(yīng)用,包括構(gòu)造密碼學(xué)承諾、零知識(shí)證明等。
同時(shí),作為密碼學(xué)中久經(jīng)考驗(yàn)的基本組件,除了單向哈希,密碼學(xué)原語(yǔ)還包括數(shù)據(jù)編解碼、對(duì)稱加密、非對(duì)稱加密、數(shù)字簽名等,基礎(chǔ)密碼學(xué)原語(yǔ)還能進(jìn)一步組成更高級(jí)的密碼學(xué)組件。在這一系列中,我們將逐一展開與隱私保護(hù)密切相關(guān)的密碼學(xué)原語(yǔ)的分享,欲知詳情,敬請(qǐng)關(guān)注下文分解。
《隱私保護(hù)周三見》
“科技聚焦人性,隱私回歸屬主”,這是微眾銀行區(qū)塊鏈團(tuán)隊(duì)推出《隱私保護(hù)周三見》深度欄目的愿景與初衷。每周三晚8點(diǎn),專家團(tuán)隊(duì)將透過欄目和各位一起探尋隱私保護(hù)的發(fā)展之道。
欄目?jī)?nèi)容含括以下五大模塊:關(guān)鍵概念、法律法規(guī)、理論基礎(chǔ)、技術(shù)剖析和案例分享,如您有好的建議或者想學(xué)習(xí)的內(nèi)容,歡迎隨時(shí)提出。
欄目支持單位:零壹財(cái)經(jīng)、陀螺財(cái)經(jīng)、巴比特、火訊財(cái)經(jīng)、火星財(cái)經(jīng)、價(jià)值在線
總結(jié)
以上是生活随笔為你收集整理的密码学原语如何应用?解析单向哈希的妙用|第9论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信令服务和媒体服务
- 下一篇: centos7通过startx后进入图形