基於區塊鏈的隱私保護數據共享

2022-01-30 06:01:30

摘要:

區塊鏈是近年來出現了一項分布式共識技術,基於區塊鏈共識協議結合智能合約技術可實現去中心化的數據共享。隱私保護是數據共享中的關鍵特性,原生區塊鏈沒有解決隱私保護問題。利用數字摘要匹配算法提出了一種數據共享協議,該協議通過數字摘要空間的信息匹配,可在保護數據隱私的情況下實現數據的受控共享。基於協議的運行邏輯,分析了協議執行的正確性,參與雙方可實現數據交換共享。針對數據共享中的面臨的安全威脅,給出了安全性分析。

內容目錄

1 預備知識

1.1 區塊鏈及其安全特性

1.2 智能合約

2 協議設計

2.1 身份注冊與管理

2.2 區塊鏈數據訪問接口

2.3 隱私數據共享協議

3 協議安全性分析

3.1 正確性

3.2 安全性

區塊鏈技術是以比特幣為代表的加密數字貨幣系統中的底層技術。由於區塊鏈具有去中心化、公开透明等特點,受到了研究者的廣泛關注。其主要解決了在沒有引入可信第三方的基礎上,相互不信任的節點之間達成共識的問題。抽象來看,區塊鏈可以看作是一個無中心化的可信第三方,進而消除了中心化可信第三方的不可靠性。借助區塊鏈這種虛擬的可信第三方,參與者可以實現雙方數據的共享訪問。尤其在开放性的網絡環境中,基於區塊鏈的數據共享能夠消除用戶對可信中心節點的依賴。

在比特幣之後,又出現了多種改進的區塊鏈協議f需要強調的是,區塊鏈技術本身並不提供隱私保護功能。雖然在比特幣系統中,通過隨機账戶的引入,可以在一定程度上保護用戶的身份信息,但是區塊鏈上所有的交易數據本身依然是明文保存於交換的。

在後續的加密數字貨幣中引入了更強的隱私保護功能也但是為了保護區塊鏈上一般數據的私密性,需要採用更多的密碼技術。在特定的場景下,如金融企業雙方需要共享用戶的違約等信用信息又不愿意泄露自己的用戶信息情況下,隱私保護的數據共享尤為重要。近年來,利用區塊鏈在不同行業實現數據共享的應用也廣泛得到研究。

本文基於區塊鏈技術設計了一套新的數據共享協議。在滿足多方數據共享的前提下,避免對非授權者泄露數據提供者擁有的數據信息與隱私,數據請求者也只能正確獲取在其權限範圍內的數據。

01

預備知識

1.1  區塊鏈及其安全特性

區塊鏈由區塊+鏈構成。以比特幣為例,所有交易信息在數字籤名後存儲在區塊上,每個節點在本地維護一份账本副本。區塊鏈通過數字籤名等密碼學知識實現數據的防篡改、防抵賴等安全保護,解決了拜佔庭將軍問題四與雙花問題。Juan等人於2015年證明了區塊鏈理論的安全性。區塊鏈作為一種新型的分布式多方記账系統,正逐漸由單純記錄數字貨幣的交易信息發展至承載產權、合約等價值存儲,並在各大金融機構的努力下衍生出了聯盟鏈與私有鏈。

區塊鏈所能提供的安全性特性包括:

(1)一致性:在分布式環境中,所有的參與節點都能夠得到一致的數據結果。(2)存活性:即便有惡意節點存在,區塊鏈仍然能持續不斷地記錄新的數據。(3)公平性:因為有誠實節點的存在,所有用戶的信息都能得到記錄和存儲。

但是區塊鏈協議並不能提供數據的隱私保護,區塊鏈中所承載的數據所有參與節點均能接收,因此在需要隱私保護的場景應疊加其他密碼技術。

1.2  智能合約

20多年前著名密碼學專家Nick Szabo提出智能合約這一概念。智能合約用計算機編程語言來實現傳統合約,它通過代碼來制定合約,執行協議實現合約雙方的權利與義務。智能合約可以較好的控制價值的存儲與管理,與狀態機相似,通過定義多種狀態與規則,制定合約被觸發時所需的條件與相應響應邏輯自動完成交易流程。

然而,在區塊鏈技術出現以前,智能合約一直未能落地,因為執行智能合約需要靠可信的第三方來監督合約不被篡改並被雙方可靠執行,但傳統計算機程序無法保障這一點。將智能合約代碼與狀態通過共識存放在區塊鏈上,保障了代碼執行、資產轉移過程的安全性以及存儲記錄的永久性。智能合約提高了自動化交易水平,降低了交易成本,同時也保障了交易的安全性。基於區塊鏈的智能合約可以在金融等領域提供更多的應用場景,這其實相當於基於區塊鏈的安全多方計算。

02

協議設計

為了簡化討論,假設數據共享參與者為A、B兩方。數據提供者為A,數據請求者為B。數據提供者負責存儲數據索引與提供真實數據,並對數據共享請求作權限校驗;數據請求者向數據提供者請求讀取數據的權限。

應用場景為,當B知道數據的索引信息,則A向B提供該索引信息的數據查詢服務,當B不知道數據的索引信息,則B不能獲取A的任何數據信息。該場景適合於當A、B有共同的客戶注冊信息時(如用戶名、身份證號等),雙方可共享信用數據。而一方不能主動查詢另一方的用戶信息。

2.1  身份注冊與管理

本協議中,參與者的身份由公鑰密碼基礎設施(PKI)加以保護,注冊中心CA向外提供注冊與身份校驗服務。區塊鏈的共識節點在加入共識前先進行注冊,並由CA籤發包含其公鑰的證書,通過CA校驗身份後才可加入共識網絡環境。普通參與者採用同樣的機制獲得公鑰證書,並參與後續的數據共享協議。

2.2  區塊鏈數據訪問接口

區塊鏈作為一種數字化的、安全的總账账簿,具有防篡改的特性。用於共享交換的數據存放在區塊鏈上,協議定義三類與區塊鏈進行交互的接口,分別為Tdata與Taccess與Tdeploy。

Tdeploy:每個應用為了提供特定的服務與功能都需要在上次部署智能合約,所以本系統在進行數據共享時需要通過deploy命令部署智能合約,即鏈碼Chaincode 。

Tdata:存儲數據協議。當系統希望區塊鏈通過BuildBlock構建區塊存儲數據時,首先將數據打包成交易,並將列作為關鍵信息寫入交易,籤名後進行廣播,Peer收到交易後傳遞給共識插件進行全網共識。

Taccess:查找數據協議。以V作為關鍵信息遍歷區塊鏈中的區塊,找到其中所有的Transactions信息。再遍歷Transactions以key為索引找到對應的交易,校驗其智能合約ID和操作類型,並驗證其完整性後得到內部payLoad數據。

2.3  隱私數據共享協議

假設數據提供者為A節點,數據請求者為B節點。CA節點啓動並進行預注冊後,協議的具體流程如圖1所示。


      基於區塊鏈的隱私保護數據共享

圖1  隱私數據共享協議流程圖

協議執行流程為:

(1)A用戶計算數據索引,該數據索引可根據不同的數據類型變化,例如,金融企業可以通過用戶名及身份證號來作為數據索引。A將數據索引通過哈希算法計算哈希值Hash(index)。以該哈希值作為Key,{userld,peerld}打包成一對參數作為data通過Tdata協議進行存儲,存儲的數據類型為STORE_JNDEX,同時將數據索引與真正數據之間的映射關系存儲在本地數據庫中。

(2)B用戶通過數據索引查詢數據,對該索引同樣計算哈希Hash(index),通過Taccess協議在區塊鏈中找到對應的完整數據擁有者,查找類型為STORE_INDEX。

(3)B節點將數據索引與自己的身份信息做Hash計算摘要後,通過區塊鏈底層P2P網絡作為請求信息單播給提供者A。同時將之前的哈希值一同發送。可通過參數設置是否需要TLS/SSL安全信道進行傳輸。這一步的目的是通知數據提供者本節點具有獲取共享數據的權限,是數據的合法使用者。

(4)A節點接受請求,對B的身份信息與數據索引的正確性進行校驗。校驗通過後,通過數據索引從本地數據庫中找到真正數據,並為B請求的數據隨機生成對稱密鑰Key。使用B的公鑰通過


      基於區塊鏈的隱私保護數據共享

加密後,利用Tdata協議將加密後的對稱密鑰存儲在區塊鏈上,存儲類型為STORE_KEY。同時將使用


      基於區塊鏈的隱私保護數據共享

即對稱加密後的數據也通過Tdata協議存放在區塊鏈上,存儲類型為STORE_DATA。

(5)B節點以hash(index+id)作為key通過Taccess獲取加密後的對稱密鑰後,使用私鑰


      基於區塊鏈的隱私保護數據共享

解密,並使用key對從區塊鏈上獲取的完整數據進行對稱解密即可完成數據共享過程。

03

協議安全性分析

本節我們將對前一小節設計的協議進行簡單的正確性與安全性的分析,並在協議中引入仲裁機制,當數據提供者與請求者在數據共享的過程中發生爭議時提供相應的解決方案。依舊假設數據提供者為A,數據請求者為B,真實數據用出表示,數據索引用index表示。

3.1  正確性

在本系統中,每個真實數據都會擁有一個對應的數據索引。節點之間預先溝通或通過某種手段對這個映射關系達成一致。只有獲取提供正確的數據索引才有權利共享數據提供者擁有的真實數據。

(1)根據協議,A的本地數據庫中會存儲data與index之間的映射關系。A對index進行哈希計算,並將計算結果hash(index)與自己的身份信息存儲在鏈上,那么若B通過某種途徑獲取


      基於區塊鏈的隱私保護數據共享

;則它計算


      基於區塊鏈的隱私保護數據共享

後,如果index與index'相同,則hash(index)等於


      基於區塊鏈的隱私保護數據共享

,即B可以成功在鏈上找到對應的區塊,並獲取A的身份信息。

(2)B將hash(index')+id(B)+hash(index+id(B))發送給A後,A計算本地是否有對應的索引,並通過計算hash(index+id(B))是否與B傳過來的一致來檢測B身份標識的有效性。若索引存在並且身份檢查通過,則說明需要向B提供真實數據。A在本地生成隨機對稱密鑰後,使用B的公鑰對對稱密鑰初進行加密,並將


      基於區塊鏈的隱私保護數據共享

放在區塊上,由於B擁有index,則它在本地計算hash(index+id(B)),即可在區塊鏈上找到對應的區塊。B使用自己的私鑰即可成功解密獲取對稱密鑰key。

(3)A在本地生成對稱密鑰key後,從本地數據庫中根據index查詢到真正的數據,並將data使用加密,將


      基於區塊鏈的隱私保護數據共享

放在區塊上。同樣,B可以在區塊鏈上根據hash(index+id(B))找到對應的區塊,由於B之前已經獲取了對稱密鑰key,那它就使用key進行解密,成功拿到需要的最終數據。

根據以上三步看到整個過程具有可行性與正確性,在雙方均配合的情況下,擁有數據索引的數據請求者可以成功從數據提供者中獲取數據。

3.2  安全性

現在分析協議的安全性,假設系統中存在攻擊者C,C可能已經經過CA的授權,並且通過登錄成為了網絡中合法的成員。C試圖在沒有獲取索引的前提下,根據區塊鏈上的已有信息或者通過竊聽節點之間的通信流來嘗試得到真實數據。首先分析本協議如何抵抗被動攻擊:

(1)C無法獲知A擁有的數據索引信息。區塊鏈中存儲了hash(index+id(A)),該類信息為數據索引的散列值。對於該類信息,因為本節开始已分析了SHA-256算法的單向性與抗強碰撞的能力,C是無法根據已有信息反推得到index,C需要耗費大量資源去隨機找到一個


      基於區塊鏈的隱私保護數據共享

使得


      基於區塊鏈的隱私保護數據共享

等於hash(index),可知C沒有能力得到關於index的任何信息。

(2)C無法得到與B有關的對稱密鑰key的任何信息。根據設計的協議,鏈上存儲了


      基於區塊鏈的隱私保護數據共享

,該類信息存儲之後對真實數據加密的對稱密鑰。因為本系統底層有可信PKI基礎設施的支撐,並且節點或用戶在生成私鑰後一直保存在本地從未對外公开或傳遞過。因此C無法獲得B的私鑰,即他無法通過解密得到對稱密鑰key的任何信息。

(3)無法獲得真實數據。A將真實數據以


      基於區塊鏈的隱私保護數據共享

的形式存儲在鏈上,即真實數據已經被對稱密鑰key加密。在(2)中我們有了C無法獲得對稱密鑰key的前提,因此C無法對其進行解密,即它無法得到真實數據的任何消息。

C還可以通過監聽網絡信息進行主動攻擊,可能存在兩種主動攻擊方式。第一通過模擬B的身份信息來假裝自己是B,誘騙A認為自己擁有數據索引,有權利獲取真實數據;第二種情況是嘗試將獲取的身份信息由B改成C。但下面將證明這兩點依舊是不可行的。

對於第一點,雖然通過模擬B,A會受騙並把加密後的對稱密鑰和真實數據存放在區塊鏈上,但由於C沒有B對應的私鑰,因此它依舊無法進行解密。而為了實現第二點,即使C可以將id(B)改為id(C),但C同時需要構造hash(index'+id(C)),即它需要重新計算{index+id(C)}的散列值。前面分析過,C無法根據hash(index)得到index,即它無法計算得到hash(index'+id(C))。因此,C通過嗅探網絡上的數據包進行主動攻擊仍然 無法得到關於真實數據的任何信息。

同時,節點B在於A的通信過程中,也只能獲取它擁有的index對應的真實數據data,無法獲得A擁有的其他數據的任何信息。

04

結  語

本文針對用戶間數據共享的場景,基於區塊鏈以及智能合約技術給出了一種隱私保護的數據共享協議。該協議可以允許用戶實現具有共同索引的數據交換共享,避免單方面的數據流動。同時協議過程由數據的擁有者主動授權,並且協議執行過程可實現公平仲裁。

引用本文:郭乃網,倪瑋棟.基於區塊鏈的隱私保護數據共享[J].通信技術,2019,52(08):1982-1986.

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

btc日內再次下跌 短线應當如何處理?

盡管以太坊現貨ETF獲批是個好消息,但市場反應卻不如預期。在消息公布後,以太坊價格出現了小幅下跌,...

加密蓮
182 4個月前

7月23日、BTC(合約)ETH(合約)行情分析及操作策略

昨日收益還是不錯的,日內給出的現價空單分別止盈我們目標點位,恭喜跟上的朋友喫肉。時間一晃到月底了,...

倪老師
181 4個月前

幣圈院士:血與淚的教訓!交易者為何總是撞死在同一棵樹上?

幣圈院士談。交易市場中的幾種“死法” 在幣圈市場鱗次櫛比的海洋,風起雲湧,時常讓人感到驚手不及。在...

幣圈院士
189 4個月前

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...

168超神
186 4個月前

悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤

一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...

我是周悅盈
161 4個月前

btc完美盈利 晚間波動較大注意

昨日btc空單完美給到,最大化走出一千七百點空間~ btc: 日內开盤下跌繼續測試66000一线,...

加密蓮
170 4個月前