單向雜湊的選型可以參考業務部署的地域性要求,建議在SM3和SHA-3之間做出選擇,如果需要與現有系統進行相容,也可酌情選用SHA-2系列中的SHA-256。
2. 鏈式雜湊結構
單向雜湊的用途很廣泛,最直接的應用就是構造鏈式雜湊結構,即大家所熟知的區塊鏈,提供難以篡改的可信資料來源。
由於單向雜湊的單向性,從結構上可以看出,從前一個資料塊原文,很容易計算下一個資料塊所用的雜湊值輸入,但已知一個雜湊值輸入,難以反推出所有可能的資料塊原文。
區塊鏈技術結合單向雜湊和共識演算法,當某一區塊的資料共識確認後,下一區塊將會記錄前一區塊資料的雜湊值,從而實現整條鏈上所有資料塊的難以篡改。
在隱私保護方案設計中,以區塊鏈為代表的基於鏈式雜湊結構的可信資料來源,可以起到簡化協議設計的作用,尤其對於第4論中提到的惡意模型特別有效。惡意模型下的密碼學協議,為了防範內部參與者不遵守協議、隨意篡改資料,不得不引入複雜的多方互動驗證過程。
透過鏈式雜湊結構,在現實系統中引入一個可信資料來源,可以對關鍵的中間流程資料進行存證和溯源,一旦有參與方作惡,便能在第一時間檢測出,且定位到對應責任方,有效保障隱私保護方案全流程的正確性。
3. 雜湊樹
單向雜湊不僅僅能構造簡單的鏈式雜湊結構,還能根據業務需要擴充套件為更復雜的資料結構,其經典的形態之一便是雜湊樹。
雜湊樹常稱為Merkle Tree,最早由Ralph Merkle在1979年的專利申請中提出,為大資料量的完整性驗證提供了高效靈活的解決方案。
這裡的完整性驗證是指,核實原始資料在使用和傳輸的過程中沒有被篡改。
在真實的隱私保護業務中,隱私資料多為高價值資料,而且多以密文的形態儲存和使用,一旦被篡改,在不知道明文的前提下,難以透過常規技術手段來有效識別真偽。
對於涉及多方協作、聯合計算的隱私保護業務,隱私資料密文交換和共享通常是其中的核心流程。所以當這些隱私資料密文跨越系統邊界時,資料接收方會有兩方面資料檢驗需求:
· 整體完整:驗證隱私資料中任意部分都未被篡改。
· 篡改定位:如果存在攻擊,能夠有效定位被篡改的資料位置,便於開展應對流程。
為了體現雜湊樹的設計優越性,我們以舉例的形式展示其效果。
為了簡化說明,以下分析假定:
· 傳送方與接收方之間存在一個頻寬有限的可信通道,如區塊鏈上經過共識的資料,可以將簡短的雜湊值安全地傳遞給對方。
· 隱私資料相關的原始檔案由於資料量過大,不得不透過低成本低密級通道傳輸,如公共網路,因此可能被攻擊者篡改。
方案1:整體單次雜湊
本方案中,傳送方在傳送原始檔案之前,將所有的原始檔案資料作為雜湊演算法的輸入,計算雜湊值,然後將雜湊值與原始檔案均傳送給接收方。
當接收方收到雜湊值和原始檔案後,重複傳送方計算雜湊值的操作,然後將新計算得到的雜湊值與從網路上接收到的雜湊值進行比較,如果相同,就可以判斷原始檔案在傳輸過程中未被篡改。
方案2:分塊多次雜湊 + 雜湊樹
方案1對於滿足整體完整需求十分有效,但對於第二條篡改定位需求就無能為力了。
基於雜湊演算法的輸入敏感性,接收方可以知道至少有一個位元的資料被篡改了,但不知道具體在哪裡。傳送方不得不對所有資料進行重發,在這種情況下,攻擊者很容易對隱私保護方案實施拒絕服務攻擊。
為了解決這一點,本改進方案中,將原始檔案分成一系列資料塊,為每一個資料塊分別計算雜湊值。接收方驗證的過程與方案1相似,區別在於可以對具體的資料塊進行驗證,一個資料塊被篡改,導致的雜湊值不匹配不會影響到其他資料塊的驗證,由此實現了篡改定位需求。
這裡中間缺了關鍵的一步,即如何高效靈活地傳輸這些雜湊值,並在原始檔案很大時,靈活支援部分資料的獲取和驗證?
解決這些問題的要點,在於利用好雜湊樹的特性。
雜湊樹中,最底層的葉子層是各個資料塊的雜湊值,往樹根的方向迭代雜湊計算。即把相鄰的兩個節點的雜湊值串連之後,再進行雜湊運算,這樣每兩個雜湊值就生成一個新的雜湊值,重複以上計算過程,直到僅剩下一個雜湊值(根雜湊),最終形成一棵倒掛的樹。
在雜湊值傳輸方面,接收方只需要透過可信通道下載一個根雜湊,其他資料都可以透過低成本低密級通道傳輸。
在支援部分資料的獲取和驗證方面,接收方只需要獲取所需的部分資料塊、根雜湊,途經分支節點的雜湊值,以O(log(n))的時間複雜度便可完成資料的驗證,並實現被篡改資料塊的快速定位。
除了雜湊樹之外,根據業務需求的差異,單向雜湊還能用於構造有向無環圖等更復雜的資料結構。一般而言,其作用相當於連線各個資料點的鎖釦,為相關資料建立公開可驗證的密碼學約束,使之難以被篡改,以此保障資料的正確性。
正是:隱私資料真假難分辨,單向雜湊守正不輕撓!
單向雜湊是密碼學中處於核心地位的密碼學原語,可用於構建難以篡改的可信資料來源、高效靈活的資料完整性驗證機制等,以此來保障隱私保護方案中隱私資料的正確性。
本論中,我們介紹了單向雜湊的基礎應用,在往後的文章中,我們還會進一步介紹單向雜湊的高階應用,包括構造密碼學承諾、零知識證明等。
同時,作為密碼學中久經考驗的基本元件,除了單向雜湊,密碼學原語還包括資料編解碼、對稱加密、非對稱加密、數字簽名等,基礎密碼學原語還能進一步組成更高階的密碼學元件。在這一系列中,我們將逐一展開與隱私保護密切相關的密碼學原語的分享,欲知詳情,敬請關注下文分解。