資訊科學中也有類似的承諾技術存在。例如,某些網站在提供下載檔案時,也會提供對應檔案的單向雜湊值(單向雜湊演算法相關內容可以參考第9論)。這裡,單向雜湊值便是一種對檔案資料的承諾,以下稱之為雜湊承諾。基於下載的雜湊承諾,使用者可以對下載檔案資料進行校驗,檢測接收到的檔案資料是否有丟失或變化,如果校驗透過,相當於網站兌現了關於檔案資料完整性的承諾。
密碼學承諾是一類重要的密碼學原語,其中雜湊承諾又是諸多技術中最簡單的一種實現方式。
一般而言,密碼學承諾的應用涉及承諾方、驗證方兩個參與方,以及以下兩個使用階段。
第一階段為承諾生成(Commit)階段,承諾方選擇一個敏感資料v,計算出對應的承諾c,然後將承諾c傳送給驗證方。透過承諾c,驗證方確定承諾方對於還未解密的敏感資料v只能有唯一的解讀方式,無法違約。
第二階段為承諾披露(Reveal)階段,學術界通常也稱之為承諾開啟-驗證(Open-Verify)階段。承諾方公佈敏感資料v的明文和其他的相關引數,驗證方重複承諾生成的計算過程,比較新生成的承諾與之前接收到的承諾c是否一致,一致則表示驗證成功,否則失敗。
一個設計良好的密碼學承諾具備如下特性:
· 隱匿性:在開啟關於v的承諾c之前,驗證方不知道承諾方選擇的敏感資料v。
· 繫結性:在關於v的承諾c生成之後,承諾方難以將已承諾的敏感資料解釋成另一個不同的資料v'。
所以,密碼學承諾可以起到與日常生活中的承諾行為類似的效果,一旦做出承諾,就必須在披露階段使用之前已經承諾的敏感資料。
對應地,在業務系統中,承諾生成階段通常被用來生成密文形式的業務資料,而承諾披露階段則多被用於在特定業務流程中進行資料校驗。
除了直接公佈敏感資料明文之外,承諾披露階段所需的資料校驗,也可以在不公佈敏感資料明文的前提下,構造零知識證明來完成。相關內容將在後續零知識證明專題中展開。
具體回到雜湊承諾,使用者可以透過以下公式計算關於敏感資料v的承諾,其中H是一個密碼學安全的單向雜湊演算法。
基於單向雜湊的單向性,難以透過雜湊值H(v)反推出敏感資料v,以此提供了一定的隱匿性;基於單向雜湊的抗碰撞性,難以找到不同的敏感資料v'產生相同的雜湊值H(v),以此提供了一定的繫結性。
雜湊承諾的構造簡單、使用方便,滿足密碼學承諾基本的特性,適用於對隱私資料機密性要求不高的應用場景。
對隱私資料機密性要求高的應用,需要注意雜湊承諾提供的隱匿性比較有限,不具備隨機性。對於同一個敏感資料v,H(v)值總是固定的,因此可以透過暴力窮舉,列舉所有可能的v值,來反推出H(v)中實際承諾的v。
相比其他密碼學承諾技術,雜湊承諾不具有便於業務系統在密文形式對其處理的附加功能,例如,多個相關的承諾值之間密文運算和交叉驗證,對於構造複雜密碼學協議和安全多方計算方案的作用比較有限。
Pedersen承諾
Pedersen承諾是目前隱私保護方案中使用廣泛的密碼學承諾,相比雜湊承諾,構造略微複雜,但提供了一系列優異的特性:
· 資訊理論安全(參見第4論)的理論最強隱匿性。
· 基於離散對數困難問題(參見第3論)的強繫結性。
· 具有同態加法特性的密文形式。
其具體構造如下:
有別於雜湊承諾,對於同一個v會產生相同的承諾H(v),Pedersen承諾透過引入隨機致盲因子r,即便隱私資料v不變,最終的承諾c也會隨著r的變化而變化,以此提供了資訊理論安全的隱匿性。
Pedersen承諾在構造中採用了離散對數運算,因此也賦予其加法同態性。可以透過兩個分別關於v1和v2的Pedersen承諾c1和c2“相加”,得到的新承諾便是關於v1+v2的Pedersen承諾。
除了能夠構造關於v1+v2的Pedersen承諾之外,Pedersen承諾還可以用來構造v1*v2、v1 || v2等更復雜的Pedersen承諾,透過基於離散對數的通用零知識證明系統,來證明新產生的承諾滿足與原始承諾c1和c2之間存在指定的約束關係。
在實際業務中,Pedersen承諾自帶的加法同態性,配合零知識證明獲得約束關係證明功能,在區塊鏈中可以有廣泛的應用,目前主要以隱匿賬本的形式,提供靈活的隱私資料的密文上鍊存證和交易密文數值關聯性的第三方驗證。
具體方案設計中,相關業務方在鏈下完成業務互動之後,將對應的數值變化表達成Pedersen承諾,再將對應的承諾資料上鍊,這個過程中無需披露任何隱私資料明文。
上鍊之後,非相關的第三方雖然難以透過Pedersen承諾的密文形式反推出隱私資料明文,但可以驗證承諾之間的約束關係,核實業務互動的合法性,例如,驗證隱匿轉賬發生之後,依舊滿足會計平衡、外匯交易中使用了正確匯率進行跨行對賬等。
值得注意的是,Pedersen承諾產生的密文形式,與透過普通加解密演算法生成的資料密文有一定相似性,在計算過程中都使用敏感資料v,致盲因子r的作用和金鑰的作用也有一些相似,均用以混淆最後的密文輸出。
但不同的是,密碼學承諾不提供解密演算法,如果只有r,無法有效地提取出敏感資料v的明文,只能透過暴力窮舉所有可能的v值的方法逐一驗證,試圖透過匹配的承諾值來破解v的明文。
所以,Pedersen承諾重在“承諾”,適用於資料屬主向第三方證明承諾中的敏感資料滿足一定的約束關係,由於不直接提供解密功能,不能直接支援需要互不透露敏感資料明文的多方協同計算,這一點與密碼學領域的同態加解密演算法有很大區別,切勿混淆概念。
量子承諾
為了應對量子計算可能帶來的風險,尋求經典密碼學承諾技術的替代品,後量子密碼學承諾也是重要的研究方向之一。比較典型的方案有量子位元承諾。
量子位元承諾(Quantum Bit Commitment)是基於量子力學原理構造的位元承諾方案,具體實現可以抽象為一個帶隨機輸入的單向雜湊演算法。
根據單向函式的單向性,承諾方向驗證方傳送r1和c後,驗證方不知道v,滿足對v的隱匿性。另外,由單向雜湊的抗碰撞性可知承諾方難以找到r2′和v’,使H(r1 , r2 , v) = H (r1 , r2′, v′),因此承諾方難以違約,滿足對v的繫結性。
量子位元承諾的構造看似簡單,但實際實現需要藉助量子協議完成計算,同時也有一定的理論侷限性。
早在1996年,Hoi-Kwong Lo和Hoi Fung Chau團隊、Dominic Mayers團隊分別獨立地證明了不存在滿足資訊理論安全的理論最強繫結性的量子位元承諾方案。這個不存在性被稱為MLC no-go定理。其主要原因是,如果驗證方完全沒有任何承諾的資訊,那麼承諾方可以透過量子糾纏隨意地改變承諾內容,而驗證方既不能阻止也不能發現承諾方的違約行為。
總體而言,後量子密碼學承諾的研究尚處於早期階段,充滿了各類挑戰,目前難以直接應用到實際業務系統中。除了量子位元承諾之外,基於模糊演算法的量子模糊承諾也是一類熱門研究方向,目標應用領域為生物特徵識別相關的隱私安全系統。將來不排除有更實用的方案面世,以此消解量子計算可能帶來的衝擊,我們將持續保持關注。
正是:業務資料精確至毫釐,密碼承諾隱匿遁無形!
密碼學承諾的隱匿性和繫結性是隱私保護方案設計中常用的關鍵特性,在保障隱私資料機密性的同時,也保證了密文形式隱私資料解讀的唯一性。對於業務系統設計而言,密碼學承諾為隱私資料提供了另一種高效的密文表達方式。
本論中,我們重點介紹了雜湊承諾和Pedersen承諾,在往後的文章中,我們還會進一步介紹其他重要的密碼學承諾,例如zk-SNARKs零知識證明系統中使用的多項式承諾、向量承諾等。
對於需要在資料的密文形式上直接進行運算和交叉驗證的業務,只要不涉及互不透露資料明文的多方協同計算,相比現有同態加密演算法,以Pedersen承諾為代表的密碼學承諾往往可以提供更好的效能。這一優勢與密碼學承諾的同態性密不可分,如何構造和應用同態性,敬請關注下文分解。