有效的數字籤名機制是否一定會透露籤名方的身份?在不知道籤名方身份的前提下,如何驗證數字籤名的有效性?匿名的籤名方案如何支持監管仲裁有效介入?其背後的群籤名和環籤名技術之間有何區別?
在現代商業活動中,籤名機制的字面解釋是:為表示同意、認可、承擔責任或義務而寫下名字,同時驗證方可以查驗字跡的真實性,以核實籤名的有效性。這個過程中,驗證方往往可以從「名字」獲知籤名方的身份。在傳統籤名機制中,能夠獲知籤名方的身份,是驗證籤名有效性的必要條件。
這同時也帶來了一個問題:如果參與商業活動的協作方,不願意或者不方便透露自己的身份,那我們還能不能與之籤訂有效的契約呢?
舉個具體的例子,在典型的暗標採購場景中,投標方需要對自己投出的標書進行籤名承諾,確保標書的有效性,並體現自己符合一定的資質。與此同時,招標方、招標平臺、其他投標方不能通過籤名識別出該投標方身份,避免出現圍標、串標等潛在不法行為。
解決以上問題的關鍵,在於將數字籤名的可驗證性和籤名方的身份信息解耦,這裡就會用到群籤名和環籤名技術。這兩類技術為何能夠實現這樣反常理的效果?且隨本文一探究竟。
群籤名與環籤名的匿名性
在實現籤名方身份隱匿上,群籤名和環籤名是最常見的兩類數字籤名技術,其主要效果為籤名的驗證方只能驗證籤名來自於一個群體,但無法準確推斷出籤名具體來自哪一個個體籤名方。
回到之前的暗標採購場景,投標方可以通過群籤名或環籤名對自己的標書進行籤名承諾,招標方和招標平臺可以驗證該標書是來自一個具備資質的群體,但無法獲知其身份信息。
一般而言,一個有效的群籤名或環籤名算法,除了上一論提到的密碼學數字籤名的基本特性之外,還具有以下特性:籤名:同一群體中的個體成員使用各自不同的私鑰對契約內容進行籤名。驗籤:驗證方使用該群體的公鑰對籤名進行驗證。
以上過程與經典數字籤名最大的不同在於,儘管籤名時可以使用多個不同私鑰中的任意一個,但驗籤使用的卻是同一個公鑰,以此實現了一定的匿名性。
進一步細分,群籤名有一個群管理員的設定,該管理員可以通過自己的管理員私鑰識別進行籤名的個體成員的身份,而且對於任一個成員,在同一群體內的其他成員不能冒充其進行籤名,從而也使得監管仲裁成為了可能。
相比之下,環籤名不需要引入群管理員,每一個個體都可以自由選擇其他個體,像建立聊天群一樣,自由組建隱匿自身身份的群體。有趣的是,Ron Rivest、Adi Shamir和Yael Tauman Kalai最初提出這一概念的論文標題為《How to leak a secret》,可見環籤名最初的設計用途是用於安全匿名地洩露敏感信息。
在實際業務中,對於有監管需求或者上下級從屬結構比較穩定的場景,可以優先使用群籤名,邀請主管部門擔任管理員的角色,為所轄範圍內的個體成員籤發對應的籤名私鑰,在必要時可以介入進行監管調解。
對於組織結構比較靈活,且對匿名性要求比較高、不希望引入管理員的場景,環籤名可能是更好的選擇,個體成員可以自由選擇群體中成員,並對外將自己展現成該群體的一員。
值得注意的是,群籤名和環籤名實現的匿名性並不是無條件的。使用時具體需要注意哪些事項,我們在以下兩個小節中具體展開。
群籤名的使用注意事項
一個典型的群籤名算法會涉及三類角色,其核心使用流程如下:可以注意到,群籤名諸多操作過程中的核心輸入——群公鑰是所有群成員共用的,也就是說,當群成員關係發生變更時,當前的群公鑰可能會因此作廢。
正如上一論所提到的,可信地作廢一個舊公鑰並分發一個新公鑰,是一個相當有挑戰的過程,現有階段的主流解決方案不得不依賴中心化的公鑰基礎設施,即便如此也不能保證撤銷的公鑰證書能夠及時地反映到公鑰黑名單列表中。
在現代商業環境中,動態的業務往來比比皆是,如果每一次群成員關係發生變更之後,都需要更新群公鑰,那麼群籤名的實用性將大打折扣。
目前經典的群籤名算法,對這一挑戰提供了部分解決方案,以經典的BBS04群籤名算法為例,增加新的群成員並不需要更新群公鑰,群管理員可以使用群管理私鑰增加任意多個群成員。
但BBS04核心算法並沒有提供對刪除群成員的直接支持,難以有效地支持被刪除群成員籤名私鑰的撤銷操作。為此,原論文和後續論文提出了一系列協議層面的擴展,來緩解這一問題,常見思路有:無論哪一類擴展,都引入了撤銷列表的設計,在實際業務中,如果需要支持高頻的群成員關係變更,如何保證其實時性和完整性都是不小的挑戰。
對於現實業務系統,通常會傾向於保持當前群公鑰的整體方案,減少密鑰分發過程中帶來的風險。以可信硬體執行環境TEE(參見第14論)背後的EPID協議為例,其本質上是一個群籤名,用於核實當前硬體設備是否為已註冊且未被加入黑名單的TEE模塊。硬體廠商和平臺服務商可以通過提供一個遠程硬體認證服務,實時對TEE模塊的有效性進行驗證,控制群成員撤銷(即TEE硬體被破解)的相關風險。
環籤名的使用注意事項
一個典型的環籤名算法會涉及兩類角色,其核心使用流程如下:· 初始化自己的籤名公鑰和私鑰對,並公開廣播自己的公鑰
· 監聽廣播,收集其他潛在環成員的公鑰
· 自主選擇一組環成員,將自己的公鑰混入其公鑰列表中,生成本次環公鑰
· 結合環公鑰和自己的籤名私鑰對契約內容進行環籤名
· 公布環籤名結果和對應的環公鑰
· 使用環籤名對應的環公鑰,對收到的環籤名進行驗證,驗證結果為籤名方屬於環成員之一
很多情況下,環籤名算法每一次使用都會公布新的環公鑰(附加在籤名數據中),所以不涉及群籤名中群成員關係變更後需要更新群公鑰的問題。
但這一特點作為設計上的取捨,也影響了環籤名的匿名性。環籤名提供匿名性的強度,取決於收集到的其他潛在環成員公鑰的數量和質量。環籤名的驗證方可以通過環公鑰中的公鑰列表,相對容易地推斷出籤名方的身份必然為其中之一。
如果可以通過PKI等公鑰服務獲得當前環成員公鑰對應的身份,那更容易排除可能性低的籤名方,從而進一步削弱環籤名的匿名性。相比之下,群籤名提供的匿名性,除了群管理員之外,驗證方無法準確地獲知當前群中到底有多少個成員,以及這些成員是誰。
所以環籤名在使用時,需要引入足夠數量不記名的環成員公鑰,保證其匿名性得到落實。以近年來比較知名的環籤名應用CryptoNote為例,在其使用過程中,環成員會產生一定數量的假帳戶,並為此分別生成隨機公鑰,以此來滿足環成員數量和質量的要求,達成難以追溯的匿名性。
對於涉計n個環成員的環籤名,其完整籤名數據的大小一般至少為O(n),作為去除群管理員的設計取捨,環籤名的數據大小和計算複雜度通常會比群籤名高。所以,如果不介意群管理員的設定,群籤名通常是更優選擇。
儘管核心設計目標都是隱匿籤名方的身份,群籤名和環籤名在設計上各有取捨,一般情況下,可以參照下圖進行基本的技術選型。
正是:身份涉密契約難籤訂,群環籤名可隱亦可現!
數位化經濟中,隱匿協作方的身份,對於開展涉及敏感隱私數據的高價值業務,或者需要基於匿名性保證流程公正有效的公共服務等,是不可或缺的前提。基於是否需要監管介入,以及協作方關係是否穩定等具體需求,酌情選用群籤名或者環籤名算法,可以在協作方不透露自己身份的前提下,實現有效契約的籤訂。
目前,群籤名和環籤名主要應用在投票、競標、競拍等場景,以保障參與者身份隱私,在聯盟鏈治理中也有廣泛應用。以微眾銀行牽頭聯合金鍊盟開源工作組開源的FISCO BCOS聯盟鏈底層平臺為例,平臺通過集成群、環籤名方案,為用戶提供能夠保證身份匿名性的工具。應用詳情可參考《FISCO BCOS隱私特性:群/環籤名技術實現》。
根據業務需求,群籤名或者環籤名的基礎算法可以做進一步擴展,例如,增加門限特性,使得只有在多數協作方同意的前提下才能完成籤名等。
門限特性也是密碼學數字籤名高頻使用的高級特性之一,對保障多方協作中公平、對等的合作關係至關重要,技術上究竟如何實現,欲知詳情,敬請關注下文分解。
《隱私保護周三見》
「科技聚焦人性,隱私回歸屬主」,這是微眾銀行區塊鏈團隊推出《隱私保護周三見》深度欄目的願景與初衷。每周三晚8點,專家團隊將透過欄目,圍繞即時可用場景式隱私保護高效解決方案WeDPR的核心技術點,和各位一起探尋隱私保護的發展之道。
欄目內容含括以下五大模塊:關鍵概念、法律法規、理論基礎、技術剖析和案例分享,如您有好的建議或者想學習的內容,歡迎隨時提出。
欄目支持單位:零壹財經、陀螺財經、巴比特、火訊財經、火星財經、價值在線、鏈客社區、IFTNews
往期集錦