數字化契約如何守護?解析盲簽名的妙用

買賣虛擬貨幣
數字簽名在數字契約中包含不便公開的敏感資訊時,如何進行有效的簽名?簽名時看不到資訊明文,日後出現糾紛該如何追究維權?連簽名者都看不到資料資訊,如何支援有效的監管介入?其背後的盲簽名技術和其他簽名技術相比,有何過人之處?在越來越重視隱私保護的數字化經濟大背景下,對使用者資料的隱私保護要求也日益提高。甚至在一些涉及敏感資料的場景中,使用者向認證者提供待認證的資料,認證者都不能觀其明文。例如,關鍵事務決議相關的電子投票系統可能要求投票認證者在不知道每張選票意向的條件下,對每張選票進行認證,排除未授權投票者的選票。這需要保護選票意向的隱私性,又要驗證選票意向明文的有效性,看起來是一項不可能的任務。經典數字簽名技術,需要獲得資料明文,才能進行簽名和驗證,所以無法直接應用。為解決上述問題,盲簽名技術應運而生。盲簽名究竟如何在盲化資料明文之後,依舊保持數字簽名的可驗證性?盲簽名可以支援哪些典型的應用場景,且看本文一一解析。1. 盲簽名的盲化性盲簽名技術設計的核心在於盲化待簽名的資料,對應的機制在傳統紙質簽名中也有類似的存在。
最典型的示例便是保密信封,其大致原理如下:第一步:將保護敏感資料的檔案放進信封,在待簽名區域上方放入一張複寫紙,而後密封信封。這樣一來,任何人不能透過信封觀察信封內檔案的具體內容。第二步:將密封的信封提交給簽名者簽名,簽名過程中,信封上的簽名可以透過複寫紙簽到檔案上。第三步:使用者開啟信封,取出的已簽名檔案,任意第三方可以認證其簽名的有效性。類似地,在使用盲簽名中,使用者透過技術手段對原始資料進行盲化,然後將盲化後的資料交給簽名者簽名,獲得盲簽名後再解盲,便得到了關於原始資料的有效數字簽名。盲簽名技術的核心機制是盲化和解盲。盲化是指對原始資料新增隨機性資料,隱匿原始資料明文。解盲是指移除隨機性資料,將盲簽名恢復為可驗證的簽名。
由此,盲簽名在經典數字簽名的基礎上,新增了以下重要特性:· 盲化性:簽名者難以透過盲化後的待籤資料,反推出原始資料的明文。· 不可追蹤性:簽名者之前是對盲化後的待籤資料簽名,但使用者獲取該盲簽名後,會進行解盲處理,得到對應原始資料的另一個不同的簽名,因此簽名者無法對這一對簽名進行關聯和追蹤。

回到之前提到的電子投票系統,上述特性可以很好地滿足對應的隱私需求。具體操作時,投票者先對選票進行盲化,投票認證者僅能對盲化後的選票進行簽名認證,無法知曉投票者選票的具體內容;後續投票者將盲簽名解盲,投票認證者也無法追蹤投票者的投票簽名。據此,保護選票意向隱私性和驗證選票意向明文有效性的需求得以同時滿足。

值得注意的是,簽名者對盲化後待籤資料進行簽名獲得盲簽名的過程,與對空白支票先進行簽名,然後允許使用者任意改寫支票內容的過程大不同。一般情況下,盲簽名一旦簽發,其認證的原始資料是不能任意改變的,即解盲之後獲得的簽名,僅對盲化前的原始資料有效。

由此可見,盲化和解盲的構造是盲簽名有效性的關鍵,具體如何設計這兩個關鍵過程,常用的擴充套件有哪些,我們在下一節中繼續展開。

2. 盲簽名的構造和擴充套件

盲簽名的構造

盲簽名的構造過程可以看作是經典數字簽名流程的一類通用擴充套件,透過引入盲化因子和盲化演算法,額外實現了簽名的盲化和解盲步驟,其核心流程如下:

現有的大多數經典數字簽名演算法,都可以較為方便地構造出對應的盲簽名實現,比較典型的實現有RSA盲簽名、Schnorr盲簽名、DSA盲簽名等。

相比上一論中介紹的門限簽名(參見第17論),盲簽名沒有複雜的金鑰生成和協商問題,也不需要多方協同才能完成簽名,其效能與經典數字簽名相比並無太大區別。

盲簽名的擴充套件 

盲簽名的不可追蹤性使得簽名者很大程度上失去了對簽名的控制權,如果出現使用者濫用簽名的情況,簽名者很難追究維權,這在不少業務場景中是難以接受的,因此時常需要對基礎的演算法流程進行擴充套件。

在諸多擴充套件中,最常見的擴充套件之一便是公平盲簽名方案,其主要設計目標是允許簽名者在出現糾紛時,能夠透過以監管為代表的可信第三方還原出請求籤名的使用者身份和其他相關資訊。

具體實現方式是引入一個可信第三方,透過可信第三方建立一種對簽名的追蹤機制。使用者將待簽名的原始資料和盲化後的資料首先發給可信第三方進行認證和登記,然後將盲化的資料和認證的資料傳送給簽名者進行驗證,驗證透過後進行盲簽名,並儲存盲化的資料。

後續如果需要進行簽名追蹤,簽名者傳送盲化的資料給可信第三方進行查詢,獲取使用者的原始簽名資料和身份。

相比直接使用會暴露待簽名原始資料的經典數字簽名,公平盲簽名實現了一定程度上的隱私資料訪問許可權隔離:

· 簽名者只能看到使用者身份,不能看到待簽名的原始資料明文。
· 只有當可信第三方和簽名者聯合之後,才可以將原始資料明文和使用者身份關聯起來。

除了公平盲簽名之外,另一類常見的擴充套件是部分盲簽名,即分離認證資料和隱私資料,只盲化需要保護的隱私資料,其典型的應用是網路流量的欺詐檢測。

總體而言,盲簽名的構造支援較為通用的擴充套件需求。在實際業務應用中,根據具體的隱私保護需求,一般都可以自由選擇資料進行定向盲化,並在必要時引入監管所需的解盲機制,控制盲簽名被濫用的風險。

3. 盲簽名的應用賞析

在盲簽名的諸多應用中,較為知名的莫過於電子現金。現實的電子現金業務會涉及複雜的流程設計,不便於體現盲簽名的作用。所以,下面以一個經典的教科書示例,來展示基於盲簽名的應用設計和使用注意事項。

在本例中,目標是構建一個與傳統紙幣功能相當的電子現金系統E-Cash,其核心需求如下:

· 貨幣價值性:電子現金是代表一定價值的數字符號,需要具備銀行的授權信用,並提供相關實體現金支援。
· 可交換性:電子現金相比實體現金,其優勢在於更方便交換、流動。電子現金與電子現金之間可以流動,電子現金與實體現金之間可以兌換。
· 防偽與不可複製性:每一張電子現金均需要經過銀行認證,不能任意生成,而且要求不能將已有的電子現金複製出多個可用的電子現金,防止重複使用。
· 匿名性:電子現金不能與使用者的身份進行繫結,保護使用者使用電子現金的隱私性。

針對E-Cash電子現金系統的各項業務流程,可以基於盲簽名技術,給出以下應用設計:

· 使用者開戶:在執行E-Cash電子現金系統的銀行,使用者註冊一個傳統的銀行資金賬戶和一個電子現金賬戶,並在銀行資金賬戶中存入一定量的資金。

· 電子現金髮行:使用者在銀行的錢包客戶端生成一個隨機序列號,並設定申請的電子現金面額,這裡為了簡化描述,假定所有任意序列號所代表的的面額相同。而後使用者將隨機序列號進行盲化,再將電子現金髮送給銀行進行盲簽名。

銀行無法知道使用者電子現金的序列號,卻能將簽發的電子現金髮到使用者的電子現金賬戶。

· 電子現金支付:使用者A將一張電子現金支付給使用者B,使用者A在支付前需要解盲電子現金,再傳送給使用者B。使用者B收到電子現金後進行簽名驗證,驗證成功後將電子現金的序列號傳送給銀行。

銀行查詢該序列號,如查詢到該序列號已存在,代表該電子現金已花費,使用者A此次支付失敗。如未查詢到,則將序列號儲存下來,使用者A此次電子現金花費成功,銀行根據之前約定的序列號代表的面額,將收到款項計入使用者B的賬戶中。

以上設計中,盲簽名的使用讓電子現金實現了與傳統紙幣同等的匿名性。使用者只有在經過銀行認證之後才能獲得電子現金,但銀行後續無法將使用解盲後的電子現金的使用者身份與當初發行的盲化電子現金關聯起來。

我們也可以進一步用公平盲簽名替換基礎盲簽名方案,將監管者引入電子現金系統,實現可控匿名的效果,為追究洗錢等犯罪活動提供有力的技術手段。

盲簽名的使用有很強的靈活性,在使用和設計基於盲簽名的應用時,分清角色進行針對性設計是用好盲簽名的重要前提,務必要釐清不同角色的訪問許可權,想清楚盲化的資料是針對哪個角色、對哪些角色展現的資料不能盲化等問題。

正是:業務涉密契約禁明示,盲化簽名可籤不可見!

在隱私保護要求趨嚴,隱私資料保護立法日益完善的商業環境下,盲簽名技術提供了一種獨特的隱私資料保護手段。對於關鍵隱私資料,盲簽名既可以實現簽名認證,又可以對其資料內容進行隱匿保護,還可以選擇性地提供監管追溯支援,在現實業務場景中具有重要的實踐價值。

至此,密碼學數字簽名系列分享已近尾聲,對於之前介紹的數字簽名技術,其驗證過程大多是逐一進行的。然而,對於大資料場景中的海量隱私資料,如果需要對海量的數字簽名進行一一驗證,不免會帶來巨大的系統負擔,有時甚至會影響業務方的決策。

為了滿足高效能要求,校驗資料有效性的數字簽名可能被迫捨棄。有沒有更有效的批次簽名驗證技術,使得僅需一次驗證計算,便可完成多個簽名的效驗?技術上有何挑戰?欲知詳情,敬請關注下文分解。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;