陳琳韋婭
(中國農業銀行湖南省分行科技與產品管理部,湖南 長沙 410000)
區塊鏈系統中使用哈希函數輸出的散列來表示區塊鏈的狀態,它為區塊鏈的不可篡改性提供了密碼學上的保障。該文設計了基于同態變色龍哈希的陷門分配和恢復方案。它使用變色龍哈希函數取代區塊鏈中的普通哈希函數(sha256),既可以利用哈希函數的特性保障區塊鏈的安全,又可以利用陷門對區塊鏈進行編輯。而加入了同態性的變色龍哈希函數使數據的處理者在對陷門進行管理時只能接觸到加密處理后的數據,無法訪問數據本身,實現了分離處理權和所有權的目標,保護了數據隱私,提高了數據的安全性。
代數領域的同態性可以為4種,加法同態、乘法同態、減法同態和除法同態。Ron Rivest和Leonard Adleman在1978年率先提出了同態加密的概念。
要滿足加法同態加密函數就需要滿足()+()=(+)。其中,()、()為自變量函數;(+)為自變量和的函數。
基于復合剩余類困難問題的Paillier 算法是對加法同態的。滿足乘法同態的加密函數需要滿足()×()=(×)。其中,(×)為自變量積的函數。
基于大素數的分解因子難題的RSA算法對乘法操作是同態的。一個同時滿足加法同態和乘法同態的同態加密算法稱為代數同態,也叫全同態。
可以將變色龍哈希函數的安全性規約到密碼學體系的數學難題,解決算法有基于離散對數困難性的算法、基于大整數分解困難性的算法。密碼學中的離散對數問題如下:限定循環群={g|=0,1,2,…}及其生成元和階=||(為次方,為整數);給定整數,計算元素=很容易(為次方,為整數);給定元素,計算整數使=非常困難,不存在多項式時間算法。
選擇系統安全參數,根據系統安全參數選取素數、,令素數如公式(1)所示。

選取1個階為、生成元為的GDH群。GDH群對DDH問題是簡單的,對CDH問題是困難的。


基于系統的公開參數,計算消息的變色龍哈希值,如公式(3)所示。

式中:為信息,∈Z



其中,滿足公式(5)。

該算法滿足以下4個性質:1) 有效計算。對給定的公鑰、私鑰、消息以及隨機值對(,)來說,在多項式時間內可以計算哈希值H(,)。2) 抗碰撞性。沒有一個有效的多項式時間算法在僅輸入公鑰后就可以找到消息和隨機數對(,)和(,)((),使公式(6)成立)。3) 陷門沖突。能找到一個有效的概率多項式算法,在輸入陷門密鑰時,任何一對消息、隨機數對(,)和任意的消息都能找到隨機數,使公式(6)成立且滿足公式(7)。4) 一致性。從隨機選擇的中無法得到任何關于的信息。

普通區塊鏈的區塊鏈接方式通常由1個三元組<,,>組成(為父區塊的交易哈希值,∈{0,1};為交易根哈希值,∈{0,1};為算法計數器,∈)。當礦工成功地計算出解密該區塊相關數學題的答案后,便根據相應的路由分配算法通過廣播的形式在全網廣播新的區塊。每個收到新區塊的節點都會根據哈希算法:{0,1}{0,1}(變色龍哈希函數)對區塊的有效性進行驗證,有效的區塊須滿足條件((,,)<)(<)=1。
不同于普通區塊鏈是固定的哈希依賴關系,可編輯區塊鏈的每個區塊單元之間有1把可以打開的“鎖”。如果沒有對應的“鑰匙”很難找到哈希沖突,那么該區塊鏈是不可變的。但是擁有“鑰匙”就可以有效地找到任意內容的哈希沖突,從而替換區塊的內容。可編輯區塊鏈的區塊鏈接由1個四元組<,,(,)>組成((為哈希值;為對比字符)。
可編輯區塊鏈一共包括4個算法(CH=(HGen,Hash,HVer,HCol)):1) 密鑰生成算法HGen。輸入安全參數,輸出公鑰h、陷門t。該過程如公式(8)所示。2) 哈希生成算法Hash。輸入公鑰h、消息,輸出哈希值、對比字符串。該過程如公式(9)所示。3) 有效性驗證算法HVer。輸入公鑰h、消息、哈希值以及對比字符串,輸出驗證結果。該過程如公式(10)所示。4) 哈希碰撞算法HCol。輸入陷門t、哈希值、消息、對比字符串以及消息,輸出對比字符串。該過程如公式(11)所示且滿足公式(12)。

可編輯區塊鏈的交易和出塊過程與普通區塊鏈一樣,當礦工利用哈希生成算法挖到礦后,就在全網廣播新的區塊。每個收到新區塊的節點都會根據有效性驗證算法對區塊的有效性進行驗證。驗證結果是一個布爾值,當=1時,表示區塊有效;當=0時,表示區塊無效。此時的變色龍哈希算法對沒有陷門的節點來說,與傳統的哈希算法并沒有區別,仍然是抗碰撞的。此時,有效區塊須滿足公式(13)。

式中::{0,1}*{0,1}為變色龍哈希函數,∈,∈。
當可編輯區塊鏈有編輯需求時,陷門持有者利用密鑰生成算法生成的陷門可以對區塊進行操作。這時從問題區塊到其父區塊之間的“鎖”是可以打開的,那么任何編輯操作都是可能的(刪除、修改和插入任意數量的區塊)。當編輯者利用哈希碰撞算法人為地制造出哈希沖突后,在全網廣播新的區塊,每個收到新區塊的節點都會對新的區塊進行驗證。此時,有效的區塊除了滿足公式(13)以外,還需要滿足公式(12)。
如果陷門丟失或破壞,那么可編輯的區塊鏈將失去可編輯的特性,還原為不可變的普通區塊鏈。
為了提高實際生產環境內容管理的能力,解決當前區塊鏈系統中內容缺乏監管的問題,突破普通區塊鏈錯誤數據不可變的局限性,提高系統應對復雜環境的靈活性,該文設計了基于雙鏈的可編輯區塊鏈系統。采用普通區塊鏈和可編輯區塊鏈相結合的方式對陷門進行驗證,避免出現陷門持有者故意給出錯誤的分片破壞陷門恢復、信道傳輸過程中惡意節點篡改陷門分片等現象。同時,各個陷門分片的持有者線下生成隨機數作為陷門分片,避免出現中心化分發者權利過大的現象,并且該方案減少了因建立安全信道和安全多方計算而產生的計算開銷過大的問題。
首先設置了2條不斷增長的鏈:其中一條是區塊內容不可改的監管鏈BC,另外一條是區塊內容可修改的交易鏈RBC。普通區塊鏈使用普通哈希函數,可編輯區塊鏈使用公鑰動態更新的變色龍哈希函數。
普通節點的權限如下:1) 擁有自身區塊鏈地址的公私鑰對可以在區塊鏈上發起交易、觸發普通交易相關的智能合約。2) 知道自身所在區塊鏈的哈希公鑰可以通過區塊鏈的哈希函數驗證區塊內容,也可以競爭礦工角色并打包區塊。這類節點分別獨立存在于監管鏈BC和交易鏈RBC中,2條鏈的普通節點相互之間并不存在關聯。
特權節點是系統的管理員節點,在初始化時從特權節點池中預選出個特權節點。特權節點可以對監管鏈BC和交易鏈RBC進行操作,而特權節點池中暫時沒有當選為特權節點的其他節點則成為監管鏈BC上的普通節點。特權節點的主要工作如下:1) 每個特權節點P負責管理交易鏈RBC的變色龍哈希陷門的分片x,包括陷門分片x的生成和陷門的恢復。2) 特權節點P需要參與交易鏈RBC的區塊內容編輯共識,在認可新的區塊內容后,通過變色龍哈希函數H計算區塊哈希值所對應的哈希沖突,達到編輯區塊鏈內容的目的。3) 特權節點在身份驗證智能合約SC上可以發起并參與仲裁投票,從而在系統中剔除存在惡意操作的可疑特權節點。
交易鏈RBC上的創世區塊RB由特權節點初始化,并且規定交易鏈上有且僅有創世區塊RB是不可更改的。RB區塊體中包括鏈接到監管鏈BC上的中心管理智能合約SC的地址。該合約上包括監管鏈BC上所有涉及交易鏈RBC區塊編輯操作的合約地址,包括身份驗證智能合約SC、密鑰管理智能合約SC以及陷門驗證智能合約SC的地址。交易鏈RBC上每個區塊RB的變色龍哈希函數H的公鑰y以密鑰管理智能合約SC所發布最新的哈希公鑰為準。
監管鏈BC的密鑰管理智能合約SC上生成交易鏈RBC的變色龍哈希公鑰以及陷門私鑰。具體的變色龍陷門生成方法如下:首先,根據系統安全參數選取滿足=+1的2個大素數、(為任意整數)和變色龍哈希函數的基數(∈Z)在全網公開。每個特權節點P私下選取隨機數x(x∈Z)作為陷門的分片,并按公式(14)~公式(15)計算公鑰分片y。

為了保證陷門分片x不暴露,公鑰的具體生成過程如下:第一個特權節點在密鑰管理智能合約SC上發布第一個公鑰分片,如公式(16)所示。第二個特權節點根據密鑰管理智能合約SC上最新的公鑰分片計算,如公式(17)所示。
根據該方法類推,第個特權節點根據公鑰分片y來計算得到最新的公鑰分片y,直至所有特權節點完成公鑰的合成操作,如公式(18)所示。

由離散對數難題的難解性可知,節點在公網上已知公鑰和參數、以及,并不能由此算出任意陷門的分片x和陷門,因此可以保證陷門的保密性。。
在監管鏈BC的密鑰管理智能合約SC公布了交易鏈RBC的最新變色龍哈希函數的公鑰后,交易鏈RBC里的普通節點就可以配合隨機數對區塊的交易內容(∈Z*)進行打包,計算得到滿足計算難度的區塊的哈希值。所用到的哈希算法為變色龍哈希函數H,如公式(19)所示。

交易鏈RBC上的礦工計算出區塊內容、對應的哈希值之后,根據哈希函數的抗碰撞性可知,沒有一個有效的方法可以在僅輸入公鑰后就找到消息和隨機數對(,)、(,)。其中,使公式(20)成立。

首先,交易鏈RBC上的某個區塊RB通過投票共識確定需要將內容修改為。其次,每個特權節點需要在線下廣播該區塊的陷門分片。由于區塊鏈具有公開透明性,因此根據觸發密鑰管理智能合約SC生成公鑰分片y的記錄可知,其觸發節點對應的身份為P。于是當廣播收到特權節點P的陷門分片后,將其記為x。
當特權節點收到-1個陷門分片后,就可以利用同態變色龍哈希函數的同態性對陷門的正確性進行驗證。當滿足公式(21)時,就可以認為節點收到的分片正確。




合約根據密鑰管理智能合約SC中記錄的公鑰分片y的值來計算公式(21)右式的值,如公式(27)所示。

根據y的值計算得出公式(28)。


驗證通過后,特權節點按照公式(2)合成的正確陷門,利用陷門來計算哈希沖突,從而將編輯區塊鏈內容為。其基本原理如公式(27)所示。

根據公式(27)可以得到公式(28)。

因此,特權節點可以計算出變色龍哈希的沖突值,如公式(29)所示。

最后,特權節點需要在監管鏈BC的中心管理智能合約SC上公布交易鏈RBC當前所修正的區塊RB最新的隨機數以及內容的哈希值作為存證。使交易鏈RBC能夠確定最新的區塊內容為目標內容??紤]不斷增長的區塊鏈存在性能問題,實際內容只在交易鏈RBC廣播,監管鏈BC上只保存的哈希值,以節省區塊鏈的存儲空間,優化查詢和管理效率。在完成一次完整的交易鏈RBC上區塊編輯交易過程之后,特權節點需要重復一次監管鏈BC上交易鏈RBC的公鑰和陷門生成過程,以及時更新可編輯鏈的公鑰及陷門。
作為一個有效的解決方案,可編輯的區塊鏈技術可以讓用戶修改區塊鏈的數據。然而,由于存在可信第三方的要求、管理費用高或缺乏問責機制等問題,因此現有的可編輯區塊鏈不能保障數據安全。該文從銀行業的實際業務需求出發,提供了一個可編輯區塊鏈系統方案。為了避免增加系統的額外負擔,該文設計的區塊鏈基于雙鏈結構,從普通區塊鏈和可編輯區塊鏈的區塊結構、變色龍哈希算法的特點(優勢)2個方面解釋了可編輯區塊鏈的編輯原理,并描述了具體的方案。該方案利用變色龍哈希解決可能出現的安全問題。區塊鏈將在陷門管理過程中記錄各種信息,并在出現爭議時將其作為問責的證據。分析表明,該方法成本不高,且能有效處理惡意行為。