<nav id="w0g0m"><code id="w0g0m"></code></nav>
  • <xmp id="w0g0m">
    <xmp id="w0g0m"><nav id="w0g0m"></nav><menu id="w0g0m"><strong id="w0g0m"></strong></menu>
  • <xmp id="w0g0m">
  • <nav id="w0g0m"></nav>
    <menu id="w0g0m"><menu id="w0g0m"></menu></menu>
    1. 網站地圖
    2. 設為首頁
    3. 關于我們
    ?

    基于區塊鏈的個人信息管理方法研究

    發布時間:2023-07-13 09:51
    目 錄
    摘 要 I
    Abstract III
    第1 章 緒論 1
    1.1研究目的和意義 1
    1.2國內外研究現狀 2
    1.2.1個人信息管理保護方法研究現狀 2
    1.2.2第三方授權研究現狀 4
    1.2.3基于區塊鏈的個人信息保護研究現狀 4
    1.3論文內容與章節安排 5
    第2 章 相關基礎知識 7
    2.1對稱加密與非對稱加密 7
    2.2區塊鏈技術相關知識 8
    2.2.1Merkle 哈希樹 9
    2.2.2區塊鏈基本結構 9
    2.2.3共識算法 10
    2.2.4智能合約 12
    2.3BAN 類邏輯 12
    2.4本章小結 13
    第3 章 基于可信認證中心的個人信息管理方法 15
    3.1總體設計 15
    3.1.1應用場景 15
    3.1.2設計目標 16
    3.1.3基本思想 16
    3.2協議步驟 18
    3.2.1準備階段 19
    3.2.2交易備案階段 20
    3.2.3數據密鑰生成 20
    3.2.4數據發送階段 21
    3.2.5交易記錄階段 22
    3.2.6核驗解密階段 22
    3.2.7設計說明 24
    3.3區塊結構設計 26
    3.4共識算法與區塊生成 26
    3.5方法分析 28
    3.5.1特性分析 28
    3.5.2可追究性證明 29
    3.6本章小結 33
    第4 章 基于智能合約的個人信息管理方法 35
    4.1總體設計 35
    4.1.1設計目標 35
    4.2.2基本思想 35
    4.2智能合約的部署和執行 37
    4.3數據存儲結構 38
    4.4智能合約設計 39
    4.4.1交易創建類智能合約 39
    4.4.2交易失效類智能合約 42
    4.4.3交易修改類智能合約 44
    4.5區塊結構 48
    4.6本章小結 48
    第5 章 仿真實驗及結果 49
    5.1實驗環境 49
    5.1.1NS-3 網絡模擬器簡介 49
    5.1.2仿真環境搭建 50
    5.2性能實驗 50
    5.2.1實驗一 50
    5.2.2實驗二 52
    5.2.3實驗三 53
    5.2.4實驗結果分析 56
    5.3 本章小結 56
    結 論 59
    參考文獻 61
    攻讀碩士學位期間取得的學術成果 65
    致謝 67
    第1 章 緒論
    1.1研究目的和意義
    隨著信息時代的到來,越來越豐富的數字服務為我們的生活提供了諸多便捷。 只需要一臺智能手機就可以享受網上購物、生活繳費、電子支付等等過去難以想 象的便捷服務。截止 2019 年底,我國移動電話用戶規模已達 16 億戶,其中 4G 用戶規模為12.8億戶,占移動電話用戶的80.1%[1]。截至2019年12月末,我國 市場上監測到的移動應用多達367 萬款,第三方應用商店在架應用分發總量達到 9502 億次,其中音樂視頻類、社交通訊類、游戲類、日常工具類和系統工具類應 用下載量均已超過千億次[2]。各類數字服務已深深的影響了我們的生活方式,成 為人們生活中不可或缺的一部分。
    然而與此同時,我們的個人信息在不經意間被眾多服務提供商所收集,給我 們的個人信息安全帶來隱患。雅虎公司曾于 2013年遭遇數據盜竊,全部 30億個 賬戶的姓名、住址、電話號碼和弱散列口令全部遭到泄露。2014年5月,eBay 報告了一起網絡攻擊,造成1.45億用戶的姓名、地址、出生日期和密碼等信息被 泄露[3]。2019年9月,Facebook證實存儲了 4.19億條與Facebook賬戶關聯的電 話號碼數據庫被曝光[4]。黑客將盜竊得來的個人信息數據在暗網上出售,以此為 自己謀得利益[5]。這些不法行為輕則導致垃圾郵件和短信、騷擾電話的泛濫,使 用戶不勝其擾,重則導致受害者遭到身份盜竊,被無辜牽扯進犯罪案件[6]。據統 計,僅2019年上半年,就有24%的網民遭遇過個人信息泄露I",個人信息保護 問題日益成為人們關注的焦點。
    信息技術興起伊始,各國政府就已經出臺了相應的法律法規致力于保護個人 信息安全。1970年,German federal state of Hessen頒布了第一部用于個人數據隱 私保護的法案[8],隨后,美國政府于1973年頒布了 Fair Information Practices[9]。 我國也有《通信網絡安全防護管理辦法》《電信和互聯網用戶個人信息保護規定》 等相關法規對網絡環境下的個人信息保護問題做出相關規定[10]。而這些法律法規 也隨著信息技術的快速發展而不斷推陳出新。歐盟于2016年4月頒布并實施了 General Data Protection Regulation[11],這是目前世界范圍內最完善、最嚴格的隱 私保護規定。我國也于 2016 年出臺了第一部全面規范網絡空間安全管理方面問 題的基礎性法律——《中華人民共和國網絡安全法》[12]。 2019年 1 月 1 日開始 實施的《電子商務法》也針對個人信息保護方面的進行了相關規定的強化[13]。
    盡管已有眾多法律致力于個人信息保護,個人信息泄露的情況依然嚴峻。造 成這一狀況的原因之一是,目前在個人信息保護領域的相關法律中,沒有實施舉 證責任倒置,即用戶需要自己承擔個人信息被泄露的舉證責任。但多數情況下, 用戶很難取證[14],許多犯罪分子利用這一漏洞,肆無忌憚的販賣用戶個人信息, 侵犯了用戶的隱私權。
    區塊鏈是一種包含分布式數據存儲、點對點傳輸、共識機制、加密算法等技 術的新型應用模式。這一概念最早從中本聰在 2008 年發表的論文《比特幣:一 種點對點的電子現金系統》中提出[15]。區塊鏈天然具有的不可篡改、可溯源、去 信任化等特點十分適合應用于個人信息管理保護領域,并且它的去中心化特性也 為個人信息管理保護提供了安全性保障。
    我們從造成個人信息泄露的法律根源出發,以提供舉證手段的方式進行個人 信息保護。本文提出了一種基于區塊鏈的個人信息管理方法。該方法將用戶和服 務提供商之間的個人信息交易記錄存儲在區塊鏈上,用戶可以區分服務提供商是 合法還是非法獲取用戶個人信息。存儲在區塊鏈上的交易記錄無法被篡改,可以 作為交易存在性的可信法律憑證。應用該方法后,如果犯罪者通過非法途徑獲取 并使用了用戶的個人信息,則用戶可以很容易地獲取到相關證據,并進行維權。
    1.2國內外研究現狀
    隨著人們對隱私問題的不斷重視,學者們提出了眾多方法對個人信息進行管 理與保護。本節中,我們將從個人信息管理保護方法研究現狀、第三方授權研究 現狀、基于區塊鏈的個人信息保護研究現狀三個方面,對近年來的研究成果進行 介紹。
    1.2.1個人信息管理保護方法研究現狀
    傳統的個人信息管理保護方法分為兩種。一種是對個人信息的原始數據進行 保密,另一種是設置個性化的隱私保護策略。隨后又誕生了匿名化、數據脫敏等 方法用于個人信息管理保護。我們將對這些個人信息管理保護方法的研究現狀進 行介紹。
    傳統方法中的第一種方法是通過保密個人信息的原始數據來達到個人信息 保護的目的。這一類方法是使服務提供商在不直接獲得用戶的個人信息原始數據 的前提下為用戶提供服務。
    Seong-Hee Bae等人提出了一種基于移動代理的個人信息保護模型[16]。這種 個人信息保護模型允許用戶管理自己的個人信息和隱私保護政策,以接受服務提 供商提供的服務,而不能以用戶反對的方式透露個人信息。所提出的模型利用從 用戶的個人空間發送的移動代理,為用戶提供對其隱私保護的完全控制,且移動 代理本身就是一個自毀程序,可以消除個人信息泄露的可能性。
    Yves-Alexandre de Montjoye 等人提出了通過 SafeAnswers 保護元數據的 openPDS 框架[17]。 openPDS 是一個個人元數據管理框架,該框架允許個人收集, 存儲并向第三方提供對其元數據的細粒度訪問。同時他們還提出了一種在個人層 面上保護元數據隱私的新實用方法 SafeAnswers。SafeAnswers將棘手的匿名
    問題變成了更易于處理的安全問題。它允許服務提出針對元數據計算答案的問題, 而不是嘗試匿名個人的元數據。與服務共享的數據的維數從高維元數據減少為低 維答案,而低維答案則不太可能被重新識別并包含敏感信息。
    傳統方法中的另一種方法為用戶的個人信息設置個性化的隱私保護策略。著 名的 P3P ( Privacy Preferences Platform ) [18] 、 EPAL [19] ( Enterprise Privacy Authorization Language,企業隱私授權語言)和 XACML[20] (extensible Access Control Markup Language,可擴展訪問控制標記語言)就屬于這種類型的方法。 它使用隱私策略描述語言來設置隱私保護策略,設置了隱私保護策略之后,服務 提供商使用個人信息需要滿足隱私政策的要求。
    這類方法也存在一些問題。首先,不了解隱私策略以及使用方法的用戶很難 設置隱私策略。其次,進行隱私策略設置時要考慮到所有情況是幾乎不可能的。 并且,在不考慮隱私相關后果的情況下設置隱私策略可能會導致侵犯隱私。針對 這些問題,許多研究學者對這類方法進行了一些改進。
    Han-Gyu Ko 等人提出了一種利用用戶響應來衡量和反映用戶隱私偏好的隱 私保護系統,當用戶允許提供敏感的個人信息時,系統會考量相關數據的敏感度, 以提示用戶可能造成的與隱私相關的后果[21]。
    Kheira Bekara等人為用戶設備設計了一個中間件形式的隱私模塊,它可以為 用戶提供一種能夠在身份管理環境下控制其個人數據的工具,來幫助用戶實現其 隱私的保護[22]。
    S. Arunkumar等人提出了一個安全框架,著眼于移動環境中數據訪問控制的 不同策略。該框架首先針對P3P策略進行了適用于移動設備的修改,使用戶可以 控制在使用移動設備的過程中對包括用戶偏好和身份映射在內的數據實現控制。 進一步的,該框架針對XACML策略中存在的授權實體的隱私問題進行了改進, 提供了一種逐步建立信任的機制[23]。
    隨后又誕生了匿名化、數據脫敏等方法用于個人信息管理保護。匿名化是指 通過特定的技術處理使數據失去可識別的功能。徐雅斌等人提出了一種匿名化隱 私保護模型,該模型不僅可以選擇最適合的隱私保護方法,還可以優選對應的隱 私保護參數[24]。數據脫敏是一種通過將數據變形從而降低數據敏感程度的技術。 劉振鵬等人提出了一種名為 PDMP 的個性化數據脫敏保護方法,根據數據不同 的敏感程度使用相應的約束方法對數據進行泛化[25]。
    1.2.2第三方授權研究現狀
    2007 年 5 月, Facebook 最早提出了開放平臺的概念[26]。開放平臺可以將網 站服務封裝成供第三方開發者使用的數據接口,這種行為稱為Open API。通過這 種開放API,各個網站和服務之間可以實現數據交互,互聯網服務之間也逐漸變 得開放共享。
    開放平臺也帶來了一個用戶信息的驗證授權問題。為了避免使用該開放平臺 的服務提供商直接使用用戶的賬號密碼來驗證身份,OAuth協議應運而生。
    2010年,OAuth協議1.0版本誕生,它提供了一種無需接觸用戶賬號密碼的 授權方式,是一種安全可靠的標準[27]。
    2012年,OAuth協議2.0版本誕生[28]。OAuth2.0協議比起前代版本簡化了 簽名機制和授權流程,同時提供了更多樣的授權模式,目前仍在被廣泛使用。我 們經常在各類網站中見到的諸如微信、支付寶等平臺的第三方登錄方式就是這類 協議的典型應用。
    OAuth2.0協議的授權流程大致有如下幾個步驟[29]:
    (1) 服務提供商通過授權登錄頁面向用戶請求權限。
    (2) 用戶同意授權后,服務提供商會收到一個來自用戶的用于訪問資源服 務器的許可。
    (3) 服務提供商使用該許可和自己的私有證書向授權服務器請求獲取訪問 令牌。
    (4) 授權服務器驗證其許可和私有證書有效后,向其發送訪問令牌。
    (5) 服務提供商使用訪問令牌向資源服務器請求所需的用戶信息。
    (6) 資源服務器檢查令牌并發送所需內容。
    第三方授權省去了用戶反復輸入個人信息的麻煩。但是,第三方授權的便捷 性使得用戶的個人信息傳播成本更低。眾多的開放平臺及其不統一的授權管理系 統,使得用戶更加難以掌握個人信息的擴散和泄露程度。這可能會導致犯罪者利 用這個機會非法交易個人信息。
    1.2.3基于區塊鏈的個人信息保護研究現狀
    區塊鏈技術誕生至今,已經應用在諸多領域。區塊鏈所具有的特性使其十分 適合于應用在個人信息保護方面,目前已有許多相關研究。
    Zyskind 等人設計了一種基于區塊鏈的個人信息保護平臺。該平臺將權限控 制信息和個人信息的指針存于區塊鏈上,并將個人信息數據脫鏈存儲。在此平臺 中,用戶無需信任任何第三方,并且始終了解被收集的關于他們的數據及其使用 方式。區塊鏈會將用戶識別為個人信息數據的所有者。同時,應用此系統的公司 也可以專注于利用數據,而不必過于擔心數據的保護和隔離工作[30]。這種將個人 信息數據集中存儲的方式,一旦發生數據泄露,后果將不堪設想。同時,在參與 服務商實體多、交易數量大的情況下,也可能會出現性能問題。
    Rahmadika等人提出了一種管理個人健康信息(PHI)數據的概念模型,用 于解決個人健康信息數據管理分散且患者無權管理自己信息的問題。該模型利用 區塊鏈技術管理來自于多個醫療服務提供商的數據,并且可以在保證數據完整性 的同時,使患者和提供者將個人健康信息數據有效地收集到單個視圖中[31]。這種 方法雖然有效地解決了個人健康信息分散的問題,但其思想只能用于整合具有集 成的數據源的個人信息。對于更加分散的、存儲于每個用戶手中的信息,則不具 有可行性。
    Ji等人提出了一個基于區塊鏈的個人信息管理系統,該系統可以在區塊鏈上 對個人信息進行生成、修改、刪除和讀取操作。在該系統中,只有受信任的機構 才能參與區塊鏈的構建,個人信息的操作由受信任的超級節點完成,并使用共識 算法驗證交易[32]。該系統只是簡單的實現了用區塊鏈存取個人信息,并未提供與 個人信息交易相關的可信存證手段,對個人信息只具有管理功能,不能實現對個 人信息的保護。
    紀露生等人設計并實現了一種基于區塊鏈的鏈下個人數據保護方案。該方案 通過將個人數據的地址利用資源服務進行加密,從而避免在授權第三方服務時個 人數據的地址在用戶撤銷權限后依然有效的問題,同時提供了該方案基于以太坊 的實現[33]。該方法中,用戶的個人數據地址雖然可以加密,但不誠實的服務提供 商在第一次獲取數據地址后,可能會對數據進行保存,此后對數據地址的操作就 會變得失去意義,達不到保護個人信息的目的。
    1.3論文內容與章節安排
    本文提出了一種基于區塊鏈的個人信息管理方法。該方法將用戶和服務提供 商之間的個人信息交易記錄存儲在區塊鏈上,用戶可以清楚地了解哪些個人信息 曾被交付給哪些服務提供商,并可以區分服務提供商是合法還是非法獲取用戶個 人信息。應用該方法后,如果犯罪者通過非法途徑獲取并使用了用戶的個人信息, 則用戶可以很容易地獲取到相關證據。
    第1章是緒論。這一章的內容包括基于區塊鏈的個人信息管理方法的研究目 的和意義、國內外的研究現狀以及本文的結構安排。
    第2章是相關基礎知識。這一章中主要對本文涉及到的相關基礎知識進行介 紹,包括對稱加密與非對稱加密、區塊鏈技術相關知識以及BAN類邏輯。
    第3 章是基于可信認證中心的個人信息管理方法。這一章介紹了一種基于可 信認證中心的個人管理方法,并從總體設計、協議詳細步驟、區塊結構設計以及 共識算法與區塊生成幾方面對其進行詳述。在這一章的最后,我們還對該方法進 行了分析評估,并用Kailar邏輯證明了其可追究性。
    第4章是基于智能合約的個人信息管理方法。這一章中設計了另一種無需可 信認證中心,而是基于智能合約實現的個人信息管理方法,并闡述了包括總體設 計、智能合約的部署和執行、數據存儲結構、三類智能合約設計細節以及區塊結 構等方面的設計。
    第5章是性能實驗及結果。這一章中,我們利用 NS-3 網絡模擬器分別針對 共識機制的性能和智能合約的應用效果進行了仿真實驗。
    在結論部分中,我們對本文的主要研究內容進行了總結。
    第 2 章 相關基礎知識
    為了更好的理解本文將要介紹的個人信息管理方法,本章將簡單介紹本方法 設計的相關基礎知識,主要包括對稱加密與非對稱加密、區塊鏈技術相關知識、 BAN類邏輯三個方面。
    2.1對稱加密與非對稱加密
    密碼學是一門研究信息的保密傳遞的學科。它將不希望被無關方知曉的明文 信息使用加密密鑰加密為密文,然后將密文傳遞給目標,再使用解密密鑰還原出 明文信息。密文在傳遞過程中即使被竊取,沒有相應的解密密鑰也難以獲得明文 內容。
    常見的密碼體制根據密鑰的不同可以分為對稱加密和非對稱加密兩種類型。 對稱加密是指加密密鑰和解密密鑰相同,即從一個可以容易地推導出另一個的密 碼體制。常見的對稱加密算法有:DES (Data Encryption Standard)[34]、AES ( Advanced Encryption Standard) [35]等。
    在本文中,我們約定使用K代表密鑰,Ek(X)代表使用密鑰K加密明文數據 x,Dk (X)代表使用密鑰K解密密文數據X。那么對稱加密就可以表示為 x = Dk (Ek (X))。
    非對稱加密又稱公鑰加密,是一種加密密鑰和解密密鑰不相同,即從一個難 以推導出另一個的密碼體制。非對稱加密的思想最早在 1976 年由 Diffie 和 Hellman提出[36]。此后,根據不同的計算問題,產生了一些不同的公鑰密碼體制。 其中比較經典的有:基于分解大整數的困難性的RSA加密算法[37]、基于離散對 數問題的 ElGamal 加密算法[38]、橢圓加密算法[39]等。在公鑰密碼體制中,密鑰成 對生成,私鑰由擁有者保存,公鑰公布于眾。公鑰與私鑰數學相關,通過公鑰加 密的信息只能由私鑰解密,可以用于與私鑰擁有者安全通信。通過私鑰加密的信 息也可以由公開的公鑰進行解密,用于證明發送者是私鑰擁有者,數字簽名也由 此而來。在本文中,我們約定使用Kpub代表公鑰,Kpriv代表私鑰,則非對稱加密 可以表示為x = D護(EKPUb (X))。我們使用SK”” (x)代表使用私鑰Kpriv對數據x 簽名,并且能夠使用VKpub進行驗證,即x = VKp“ (SKPr„ (x))。
    對稱加密擁有加密效率高、計算量小的優點,但由于一方密鑰泄露即可導致 信息失去安全性,如果對密鑰進行安全的管理和傳遞是對稱加密不可規避的問題。 相比而言非對稱加密更具有安全性,但它的加密速度遠不及對稱加密。兩種加密 方式各有所長,在實際應用中均有其各自的用武之地。
    2.2區塊鏈技術相關知識
    區塊鏈是一種新興的分布式數據庫技術。它所產生的數據塊使用密碼學方法 相串聯,每一個數據塊包含一次區塊鏈網絡交易的信息,這些信息可以用于驗證 其有效性,也用于生成下一個區塊。區塊鏈由 Satoshi Nakamoto 于《比特幣:一 種點對點的電子現金系統》中提出[15],比特幣率先運用了區塊鏈的思想,實現了 一種點對點的電子現金系統,具有去中心化、不可篡改等特點,如今已在世界范 圍內流行。
    比特幣與區塊鏈誕生之后,許多基于區塊鏈技術的類比特幣的數字貨幣也相 繼問世,如: litecoin[40]、dogecoin[41]、Zcash[42]等。除了數字貨幣相關的應用之外, 還產生了一些其他的區塊鏈應用,如文件存儲系統storj[43]、預測市場系統 Augur[44]、電子商務系統 OpenBazaar[45]等。
    區塊鏈的發展主要經歷了 3 個階段[46]:
    (1) 在區塊鏈系統 1.0 架構時期,區塊鏈系統是一個純面向數字貨幣的的 系統,典型的應用有 bitcoin、 litecoin 等。
    (2) 之后以以太坊(Ethereum)為代表的區塊鏈系統2.0架構時期到來,這 時的區塊鏈支持了自定義智能合約,使得區塊鏈系統的應用更加廣泛靈活。作為 其代表作的以太坊由Vitalik Buterin提出[47],是一個基于區塊鏈的開源的分布式 計算平臺,其中支持了智能合約功能,并且擁有自己的編程語言。作為1.0架構 的擴展,以太坊依然內置了對數字貨幣的支持,延續了 1.0時代的金融特征,這 也使得以太坊更多的面向金融領域發展應用。
    (3) 再之后,區塊鏈的發展進入了 3.0架構時代,這一時期的區塊鏈超越了 金融范疇的應用,將其擴展到了各個領域。這一階段的代表就是超級賬本
    (Hyperledger)項目[48]。超級賬本項目是由Linux基金會主導推廣的區塊鏈開源 項目,其中匯集了金融、銀行、物聯網、供應鏈、制造等各界開發人員的努力支 持,其目的是打造一個跨領域的區塊鏈應用[49]。Fabric項目是其中較為知名和成 熟的一支。
    根據節點的準入資格的不同,區塊鏈可分為許可鏈和非許可鏈兩種。節點加 入不需要許可的區塊鏈稱為非許可鏈,比特幣就屬于非許可鏈的類型。節點需要 經過許可才能加入的區塊鏈成為許可鏈,本文中所設計的區塊鏈就屬于許可鏈的 類型。
    接下來我們將重點介紹本文中涉及到的幾個區塊鏈的重要技術點,包括 Merkle 哈希樹、區塊鏈基本結構、共識算法以及智能合約。
    2.2.1Merkle 哈希樹
    Merkle樹(又稱梅克爾樹)由Ralph Merkle在1980年發明[50]。當Merkle樹 的葉節點存放的是哈希值時,它又被稱作 Merkle 哈希樹。 Merkle 哈希樹是組成 區塊鏈的重要數據結構,在區塊鏈中使用的 Merkle 哈希樹多為二叉樹形式,它 的作用是對區塊數據的存在性和完整性進行快速歸納和校驗。
     
    圖 2-1 Merkle 哈希樹結構 Fig. 2-1 Merkle hash tree structure
     
    如圖2-1所示,在Merkle哈希樹中,每個葉節點的值為單元數據的哈希,非 葉節點的值是它的兩個孩子節點內容的哈希值。由葉節點兩兩哈希生成它們的雙 親節點,雙親節點再兩兩哈希生成上層雙親節點,以此類推生成的根節點稱為 Merkle根。任何一個孩子節點的數據變化都會最終導致Merkle根變化,對Merkle 根的校驗可以快速驗證數據的完整性。
    2.2.2區塊鏈基本結構
    區塊鏈顧名思義,其基本結構就是若干個區塊串聯成鏈。如圖 2-2所示,在 區塊鏈的基本結構中,每個區塊由區塊頭和區塊體兩部分組成。
    區塊體用于存放每一筆具體的交易數據,每個區塊體中可以存放若干筆交易 數據。這些交易數據會如圖2-1的方式生成一棵Merkle哈希樹,將Merkle根的 值存儲在區塊頭中。不同的區塊鏈根據其功能設計的不同,每個區塊頭的結構也 不完全相同。除了 Merkle 根之外,區塊頭中必定有的還有前一個區塊頭的哈希 值。在新的區塊生成時,會將前一個區塊頭的內容做一次哈希運算,將得到的哈 希值存入新區塊的區塊頭中,這個區塊頭的內容也會以哈希值的形式存儲在下一 個區塊的區塊頭中,各個區塊以此串聯起來。如果攻擊者想要篡改區塊鏈中的一 個交易數據,則需要對其之后的所有區塊進行改寫,代價十分昂貴。這樣的設計 和區塊鏈的去中心化存儲特性共同保障了區塊鏈不可篡改性。
    區塊N-l \ 區塊N \ 區塊N+1 \
    區塊頭 區塊頭 區塊頭
    前一區塊哈希 1 前一區塊哈希 —< ? 前一區塊哈希
    梅克爾根 梅克爾根 -1 梅克爾根
    區塊體 區塊體 區塊體
    交易1 交易1 交易1
    交易 交易... 交易.“
    圖 2-2 區塊鏈基本結構
     
    Fig. 2-2 Blockchain basic structure
    2.2.3共識算法
    共識機制在區塊鏈中是一個十分重要的核心組成部分。由于區塊鏈的各個節 點共同維護數據,每個節點都有一份完整的數據副本,且要求數據內容必須完全 一致。在去中心化的前提下,要完成這個協作,區塊鏈就必須有一個共識機制, 來解決數據寫入權的分配和數據同步的問題。
    對于節點可以自由加入的非許可類區塊鏈,多使用概率一致性算法作為共識, 如 PoW(Proof of Work)算法、PoS(Proof of Stake)算法、DPoS(Delegated Proof of Stake)算法等。
    PoW 也被稱作工作量證明,它的核心思想是通過遍歷計算出一個滿足要求 的隨機數以獲得當前區塊的記賬資格。在計算出滿足要求的隨機數后,節點會將 該區塊打包并廣播出去,其他的節點對其進行驗證并通過后,會將該區塊的內容 記錄下來,然后開啟下一個區塊記賬資格的爭奪。比特幣所運用的就是這種共識 算法°PoW算法的優點是能夠實現完全的去中心化,并且允許節點自由出入,能 夠承受網絡總算力的50%以內的網絡破壞者的攻擊。但PoW也有一些缺點,比 如其共識達成的周期較長,并且其進行的大量計算會造成嚴重的資源浪費。目前 比特幣已經吸引了全球大部分的算力,其他的區塊鏈應用如果也采用同樣的共識 算法,將很難獲得足夠的算力來保障其自身的安全性。
    PoS也叫權益證明,是一種針對PoW資源浪費的缺點進行了改進的共識算 法。它要求參與者將一些代幣放在鏈上,根據付出代幣的數量等比例地降低計算 的難度條件,加快找到滿足要求的隨機數的速度。PoS算法在一定程度上縮短了 共識達成的時間,降低了 PoW算法造成的資源浪費現象。但它采用的代幣數量 越多獲得記賬權概率越大的機制長久運作起來,會使得網絡的共識逐漸只受到少 數的富裕節點的支配,從而失去公平性。
    DPoS又稱委托權益證明,是在PoS的基礎上,針對PoS的缺點發展出來的 新的共識算法。在 DPoS 中,每一位持幣的“股東”會票選出一定數量的代幣, 來負責生產區塊。DPoS算法解決了 PoS中富裕節點可能造成的公平性問題,并 且大幅度縮減了參與驗證和節點的數量,縮短了出塊時間,大幅提高了效率。但 DPoS 也有一些缺點,比如不適合于完全去中心化或是網絡節點數量較少的應用 場景。
    對于不需要貨幣體系,且節點可信的許可類區塊鏈而言,多使用效率更高的 傳統一致性算法,如 PBFT(Practical Byzantine Fault Tolerance)[51]、 PAXOS[52][53]、 RAFT[54 ]等。
    PBFT又稱實用拜占庭容錯算法,是一種可以容忍小于三分之一惡意節點的 共識算法。其中的作惡節點是指除了對其他節點的請求不做回應之外,還有可能 故意發送錯誤的數據的惡意節點。它解決了原始拜占庭容錯算法效率不高的問題, 但其通信復雜度較高,節點數量過多時性能下降十分明顯。
    對于一些不需要考慮拜占庭故障的應用場景,還可以使用Paxos、Raft等共 識算法。Paxos是Lamport設計的保持分布式系統一致性的協議,但由于其復雜 而難以理解,隨后又出現了許多不同的改進和變種。Raft算法就是其中一種,它 相比 Paxos 算法更易理解。本文所設計的方法就是采用了 Raft 共識算法進行設 計。
    2.2.4智能合約
    智能合約這一概念是由密碼學家 Nick Szabo 提出[55],他將傳統的合約轉化 為數字化的計算機協議,可以在沒有第三方的情況下自動執行,達成可信交易的 目的。智能合約提出伊始,由于缺乏可行的執行環境,并沒有得到實際應用。區 塊鏈技術的出現,為智能合約提供了天生的執行環境,使得智能合約這一概念活 躍起來,成為應用在區塊鏈技術上的一個熱門技術。
    在與區塊鏈結合后,智能合約被定義為一種由事件驅動的、具有狀態的、運 行在一個可復制和共享的賬本上、且能夠保管賬本上資產的程序[56]。智能合約在 區塊鏈上以腳本的形式駐留,區塊鏈有能力執行它們。智能合約由值、地址、功 能和狀態組成,它以交易作為輸入,執行相應的代碼并觸發輸出事件。智能合約 一經部署在區塊鏈上就無法改變其代碼內容,不需要第三方即可進行可信的交易, 將交易數據寫入區塊鏈中進行保存也可以保障其安全性和不可篡改性。
    2.3BAN 類邏輯
    安全協議是一種以密碼學為基礎的信息交換協議,其目的是在網絡環境中提 供各種安全服務[57]。信息交換常采用各種不同的密碼體制進行巧妙的相互制約的 設計,這種情況常導致安全漏洞的出現。因此,對安全協議進行分析顯得至關重 要。
    在形形色色的安全協議分析方法中,由Burrows、Abadi及Needham提出的 BAN邏輯是安全協議分析的一個里程碑[58]。BAN邏輯是一種基于信仰的形式化 邏輯分析方法,它將協議的目標和初始狀態形式化描述出來,再通過協議運行中 消息的收發,運用推導規則來得到目標的最終信仰。如果最終推導不出目標,就 表明協議中存在著安全漏洞。提出者運用BAN邏輯對包括NS協議、Kerberos協 議在內的幾個著名的協議進行了分析,并成功找到了其中一些已知和未知的安全 缺陷。
    隨后,為了彌補 BAN 邏輯存在的一些缺陷,或是擴展 BAN 邏輯的適用場 景,又有各種類BAN邏輯被陸續提出,如GNY邏輯[59]、MB邏輯[60]、AT邏輯 [61]、VO邏輯[62]、SVO邏輯[63]、Kailar邏輯[64]等,它們從不同方面對BAN邏輯 進行了擴展和改進,使得BAN類邏輯進一步得到完善。
    使用BAN類邏輯進行協議分析主要分為四個步驟:1)將協議的步驟用邏輯 語言形式化地描述出來。 2) 用邏輯語言形式化地描述協議的預期目標。 3) 形式 化地描述協議的初始化假設。 4) 運用邏輯公理和推導規則,從初始化協議假設 開始對協議的每一步進行邏輯推導,看是否能夠達成協議的預期目標。
    在本文中,我們使用到了 Kailar邏輯對所設計的協議進行了分析。Kailar邏 輯可以分析電子商務協議中所需的不可抵賴性和可追究性。不可抵賴性是指協議 參與者不能否認或抵賴自己發送信息的行為或其信息的內容。可追究性是指參與 交易的各方在交易執行完畢后能夠獲得充足的交易相關證據,以解決未來可能發 生的糾紛。
    2.4本章小結
    本章主要對論文中設計的相關基礎知識進行了介紹,主要包括對稱加密與非 對稱加密、區塊鏈技術相關知識、BAN類邏輯三個方面。同時,在區塊鏈技術相 關知識部分,對 Merkle 哈希樹、區塊鏈基本結構、共識算法、智能合約四部分 的內容進行了重點介紹。
     
     
     
    第 3 章 基于可信認證中心的個人信息管理方法
    在這一章中,我們將介紹一種基于可信認證中心的個人管理方法。首先,我 們將從總體設計出發,對應用場景、設計目標以及設計的基本思想進行介紹。然 后,我們將對所設計的個人信息交易協議進行分步驟的詳細介紹與說明。之后, 我們將介紹該方法的區塊結構、共識算法以及區塊生成的設計。在這一章的最后, 我們還將對該方法進行特性分析,并用Kailar邏輯證明其可追究性。
    3.1總體設計
    3.1.1應用場景
    在我們的日常生活中,經常會遇到服務提供商向用戶獲取個人信息的情況, 比如在用戶在進行注冊時被要求填寫姓名、電話號碼、身份證號碼等信息,或者 在定外賣或網上購物時需要填寫住址和電話等信息。服務提供商由此收集了用戶 的個人信息。在本文中,我們將服務提供商獲取用戶的個人信息的過程稱作“個 人信息交易”。
    我們將個人信息交易分為兩種場景。第一種場景我們將其稱為“直接交易” 場景,如圖 3-1 所示。在直接交易場景中,服務提供商直接向用戶獲取所需的個 人信息。
     
    另一種場景稱為“第三方交易”場景,如圖3-2 所示。當服務提供商所需的 個人信息已經被其他平臺或服務提供商獲取過時,也可以采取這種第三方交易的 方式獲取用戶的個人信息。在第三方交易場景中,服務提供商需要獲取用戶的授 權,再以此授權證書向第三方獲取其個人信息。我們平時使用到的第三方登錄就
     
     
    本章提出的基于可信認證中心的個人信息管理方法將在這兩種不同的場景 下進行設計。
    3.1.2設計目標
    在本章中,我們的目標是設計出一種基于可信認證中心的個人信息管理方法, 使得使用者能夠掌握自己個人信息交易情況的可信記錄及憑證,令個人信息的交 易規范記錄、有據可查。所提出的基于可信認證中心的個人信息管理方法應具有 以下幾個特點:
    安全性:所設計的方法在交易過程中不應泄露使用者的個人信息。 可靠性:個人信息交易記錄不可被篡改或抵賴。
    可追究性:參與交易的各個實體均可獲得足夠的交易相關證據,以解決交易 執行后可能出現的糾紛。
    可用性:所設計的方法應滿足實際應用場景下的實時性和吞吐量需求。
    3.1.3基本思想
    所設計的個人信息管理方法網絡拓撲圖如圖3-3所示。本方法包含三個實體: 服務提供商、認證中心、用戶。
    服務提供商負責為用戶提供網絡服務。在直接交易場景中,服務提供商是個 人信息的請求方。在第三方交易場景中,服務提供商也可能擔任個人信息提供方 的角色。
    認證中心負責在用戶首次使用該系統時為用戶生成區塊鏈上的身份信息,同 時在個人信息交易過程中協助交易雙方或多方進行信息核驗。在交易過程中,認 證中心接觸實際的個人信息數據。
    用戶是信息的提供方。在直接交易場景中,用戶負責提供個人信息數據。在 第三方交易場景中,用戶負責提供授權證書。用戶并不參與區塊鏈的維持工作, 僅僅是該系統的使用者。
    需要說明的是,在本文中,個人信息有“條目”和“數據”兩類。個人信息 條目指所需個人信息的字段名。個人信息數據指所需個人信息的實際內容。例如, 服務提供商向用戶“小明”請求獲取其姓名,那么本次交易的個人信息條目為“姓 名”,個人信息內容為“小明”。
     
     
    當用戶收到來自服務提供商的個人信息獲取請求時,用戶首先將個人信息交 易記錄發送到認證中心進行備案。然后,認證中心生成一個隨機的數據密鑰并將 其發送給用戶。用戶根據交易場景生成個人信息數據或授權證書,使用接收到的 數據密鑰對其進行加密,然后將其發送給服務提供商。
    服務提供商生成一個隨機的記錄密鑰,在接收到加密的個人信息數據后,將 個人信息交易記錄使用記錄密鑰加密并提交至區塊鏈,然后將記錄密鑰發送至認 證中心。認證中心接收到新的區塊鏈數據同步后,由接收到的記錄密鑰解密將區 塊鏈上的記錄解密,并與用戶之前提供的備案進行比較。這種比較可以確保交易 雙方對交易的相關事項達成一致,不存在欺詐或篡改。在確認比較結果一致后, 認證中心將數據密鑰發送給服務提供商,服務提供商根據交易場景使用接收到的 數據密鑰來解密個人信息數據或授權證書。同時,認證中心會將記錄密鑰發送給 用戶保存,用戶可以用此記錄密鑰查詢區塊鏈上的相關交易記錄。
    在直接交易場景中,一次交易到此即為完成。在第三方交易場景中,服務提 供商之后會將解密出的授權證書發送至第三方,以換取所需的個人信息數據。
    在該系統中,認證中心和服務提供商參與區塊鏈的維護和交易,鏈上存儲了 用戶與服務提供商的之間的個人信息交易記錄,包括交易參與方的身份,交易的 個人信息條目、交易的時間等,不包含實際交易的個人信息數據。交易記錄存儲 在區塊鏈上,由密碼學方式保證其不可篡改性、不可抵賴性和可追溯性,與交易 過程中各方留存的交易信息共同為本次交易提供交易存在的可信憑證。
    3.2協議步驟
    在本節中,我們將對協議的具體步驟進行詳細設計。我們假設認證中心和服 務提供商已經成功組建了一個正常運行的區塊鏈網絡。兩種交易場景下的協議步 驟可歸納總結為以下六個步驟。
    (1) 準備階段:認證中心協助用戶在區塊鏈中注冊并生成身份信息。
    (2) 交易備案階段:用戶收到來自服務提供商的個人信息獲取請求后,向 認證中心提交交易備案包。交易備案包由包含個人信息條目在內的交易相關信息 組成。
    (3) 數據密鑰生成:認證中心生成一個隨機對稱數據密鑰,并在收到交易 備份包后將其發送給用戶。
    (4) 數據發送階段:用戶使用數據密鑰加密所需的數據(個人信息數據或 授權證書),并將其發送給服務提供商。
    (5) 交易記錄階段:服務提供商生成一個隨機的對稱記錄密鑰和交易記錄 包,并使用記錄密鑰加密交易記錄包。然后,將加密的交易記錄包提交給區塊鏈, 并將記錄密鑰發送給認證中心。交易記錄包同樣由包含個人信息條目在內的交易 相關信息組成。
    (6) 核驗解密階段:認證中心接收到區塊鏈數據同步和對應的記錄密鑰后, 使用接收到的記錄密鑰對區塊鏈上的交易記錄包進行解密,并將記錄密鑰發送給 用戶保存。然后,認證中心核驗交易記錄包的內容是否與留存的交易備案包的內 容相匹配,核驗無誤后將數據密鑰發送給服務提供商。服務提供商可以使用接收 到的數據密鑰對所需的數據進行解密。
    接下來我們將對這六個階段進行逐一說明。所有使用到的符號及其含義如表 3-1 所示。
    需要說明的是,在本方法中,認證中心具有普通公鑰基礎設施的作用。我們 假設參與的服務提供商和認證中心已經獲得自己的公私鑰對。
    表 3-1 本章符號及其含義解釋
    Tab. 3-1 Symbols in Chapter 3 and their explanation
    符號 解釋 符號 解釋
    U 用戶 TBA 用戶A與服務提供商B的交易備案包
    SP 服務提供商 TRAB 用戶A與服務提供商B的交易記錄包
    TSP 第三方服務提供商 RPA 用戶 A 的身份注冊包
    T 認證中心 UIA 用戶 A 的身份標識
    B 區塊鏈 UI list sets 所有用戶的身份標識集合
    KApub A 的公鑰 K priv A 的私鑰
    £ 個人信息條目 K ran 隨機對稱密鑰
    1 個人信息數據 DCA 數字證書
    H(x) 哈希函數 I 包含個人信息條目和數據對的個人信
    tm 當前時間 r 隨機值
    Y 交易類型 X 授權證書
     
    3.2.1準備階段
    a.U生成一個身份注冊包,其中包含用戶的公鑰和U的身份標識。這里的身 份標識是指手機號碼或郵箱地址等可以確定用戶身份的標識信息。獲取標識信息 可以采用驗證碼等方式。在本方法中,我們假設所獲取的身份標識是可靠的。
    U Generate :RPU= (KUpub ,UIU)
    b.U將身份注冊包發送給To
    U -Snd-^ T: 'RpU = EKpub (RPu )
    c.T收到身份注冊包后,需要檢查其中的身份標識是否被注冊過。為了保 護用戶個人信息的隱私性,T不會存儲身份標識與用戶公鑰之間的對應關系。 此處使用到的身份標識僅為了防止重復或惡意注冊行為。
    T Decrypt: RPV = 0曾(RPV )
    T Verify : UIV g UI list sets ?
    T Add: UIu —I list sets
    d.T為U生成一個數字證書并將其發送給Uo U對其進行驗證,驗證無誤 后保存。
    T Generate: DCU
    T -Snd^ U : EKpu (DCu )
    U Decrypt : DCU = DKpriv (EKpub (DCU ))
    U Verify : VKpub (DCU ) valid ?
    T Save: DCU
    3.2.2交易備案階段
    a.SP向U發送個人信息獲取請求。
    SP -Snd^ U: Ek嚴(Y, £, SKp『(H&)), r tm, DCsp )
    b.U對獲取請求進行核驗后,生成一個交易備案包。交易備案包的結構如圖 3-4所示。其中當交易場景為直接交易時,交易類型Y置0,Kpp以零值填充。 當交易場景為第三方交易時,交易類型Y置1。
    U Vef > T: DCSP belongs to SP ?
    U Save: r, tm
    U Generate : TB^ = (Y, KSP, K嚴,K#;;, RedundantData, s)
    Y K票 K儼 LT pub
    4 TSP 冗余數據 £
    圖 3-4 交易備案包結構圖
    Fig. 3-4 Transaction backup package structure
     
    c.U將交易備案包加密后發送給T。
    U T : TB; = (Ek嚴(TBUS, SKp” (H (TBU )), r, tm), DCV )
    3.2.3數據密鑰生成
    a.T收到加密后的交易備案包后,對其進行解密和核驗。
    T Verify: DCU belongs to U?
    T Decrypt:附,SK器(H (砒)),r, tm) = D^” 麗)
    T Verify:H(TBUSP)?=VKpub(SKpriv(H(TBUSP)))
    T Save : TBUSP , r, tm
    b.T生成一個隨機的對稱密鑰作為數據密鑰,并將其發給U。數據密鑰用于
    對個人信息數據進行加密。
    T Generate :儘
    T U : KZ = EK^b (SKr 陀°), r,如
    c.U接受并保存數據密鑰。
    U Verify :(r,tm) in DKpriv (Kdraatna)? = prestored(r,tm)
    U Decrypt:Kdraatna =VKpub(DKpriv(Kdraatna))
     
    3.2.4數據發送階段
    數據發送階段根據交易場景的不同而有所區別。
    (1)直接交易場景
    a.U生成所要求的包含個人信息條目和數據對的個人信息包。
    U Generate: I = {(£, |) |1 < i < n}
    b.U使用接收到的數據密鑰對個人信息包進行加密后發送給SPo
    U -Snd^SP: I = (EKpu (Ek (I)), SKp”v (H(Ek (I))), r, tm)
    KSP Kdata KU Kdata
    c.SP接收到加密的個人信息包后,對其進行驗證并保存。
    SP Verify : (r, tm) in D p濟(I)? = presented (r, tm)
    KSP
    SPVerify:H(EKran(I))?=VKpub(SKpriv(H(EKran(I))))
    Kdata KUKU Kdata
    SP Decrypt: (I)=。加(I)
    Kdata KSP
    SP Save : EKra„ (I), 了
    Kdata
    (2)第三方交易場景
    a.U生成一個授權證書。
    U Generate: X = ((K瀘,Kp, K薦,£, SK^ (H (Kpub, Kp, K薦,£), DC)
    b.U使用接收到的數據密鑰對授權證書進行加密后發送給SPo
    U -Snd^ SP: X = (Ek (Ek (X)), SKprv (H(Ek (X))), r, tm)
    KSP Kdata KU Kdata
    c.SP接收到加密的授權證書后,對其進行驗證并保存。
    SP Verify : (r, tm) in D priv (X) ? = presented (r, tm)
    KSP
    SPVerify:H(EKran(X))?=VKpub(SKpriv(H(EKran(X)))) data KUKU data
    SP Decrypt: (X) = 0加(X)
    Kdata KSP
    SP Save : E嚴(X), X
    Kdata
    3.2.5交易記錄階段
    a.SP 生成一個交易記錄包。交易記錄包的結構與交易備案包類似,如圖 3-5 所示。和交易備案包相同,當交易場景為直接交易時,交易類型Y置0, K需以 零值填充。當交易場景為第三方交易時,交易類型Y置1。
    SPGenerate:TRUSP = (Y , KSpPub, KUpub, KTpSuPb ,s)
    Y K驊 “SP 8
    圖 3-5 交易記錄包結構圖 Fig. 3-5 Transaction record package structure
     
    b.SP 生成一個隨機的對稱密鑰作為記錄密鑰,用于加密存于區塊鏈上的交 易記錄。
    SP Generate : Krreacn
    c.SP 將交易記錄用記錄密鑰加密后,上傳至區塊鏈,并將記錄密鑰發送給 T。
     
    SP -Snd^ T: K;a = E呼(SKpiv (K;e;), r, tm)
    盡管交易記錄包中沒有用戶的個人信息數據,但參與交易的個人信息條目一 定程度上也可認為是用戶的隱私信息,因此我們將其加密存儲在區塊鏈上,只有 擁有記錄密鑰的交易相關者才有查看的權限。
    3.2.6核驗解密階段
    a.在收到記錄密鑰和區塊鏈的新數據同步后,T使用記錄密鑰解密區塊鏈上 的交易記錄包,并對比該交易記錄包的內容與之前留存的交易備案包的內容是否
    一致。
    TVerify:(r,tm)inDKpriv(Krreacn)?= prestored(r,tm)
     
    T Decrypt:Krreacn=VKpub(DKpriv(Krreacn))
     
    T Decrypt :TRUSP = DKran(EKran(TRUSP))
    Krec Krec
    TVerify:(Y,KSpPub,KUpub,KTpSuPb,£)inTBUSP?=(Y,KSpPub,KUpub,KTpSuPb,£)inprestoredTRUSP
    b.如果交易記錄包和交易備案包的每一項內容都一致,T就會將記錄密鑰發 送給U,同時將數據密鑰發送給SPo
    T U : K;rc = EK.b (SKr KC ), r, tm)
    T亠^SP : K^'=已増(S^riv (K- ), r, tm)
    c.SP利用接收到的數據密鑰解密之前留存的數據包。此處根據交易場景的 不同分為兩種情況。
    (1)直接交易場景
    SP Verify : (r, tm) in '? = presented (r, tm)
    SP Decrypt: K^ =旨(D^” (蕊,))
    SP Decrypt : I = DKran (EKran (I))
    Kdata Kdata
    (2)第三方交易場景
    SP Verify : (r, tm) in Kdnf ? = presented (r, tm)
    SP Decrypt: K^ = » (D^” (K蔦,))
    SP Decrypt : X = DKran (EKran (X))
    Kdata Kdata
    SP -SnL^ TSP :戈'=E^pub (X, r')
    KTSP
    TSP Verify :(X, r') = (X)valid ?
    KTSP
    TSP —Sen^ SP : I'=已吶(I, r')
    KSP
    SP Decrypt: I =。礙” (了')
    d.U接受到記錄密鑰后將其保存留證。
    U Verify :(r,tm) in Krreacn ?=presented(r,tm)
    U Decrypt: K^ =旨心應'))
    U Save : Krreacn
    3.2.7設計說明
    以下我們將對交易步驟設計的一些細節進行解釋說明。
    我們令服務提供商在接收到個人信息數據之前就向區塊鏈提交交易記錄包。 如果交易過程中出現意外,例如步驟 3.2.6-b 中的交易記錄包和交易備案包的對 比結果并不一致,或是用戶提供的個人信息數據不符合服務提供商的要求,區塊 鏈中存儲的交易記錄也不會產生負面影響。這是因為這種方法的可追究性(將在
    3.5.2中進行分析)保證了參與交易的實體能夠獲得足夠的與交易相關的證據來 解決未來可能發生的爭端。交易的存在性不僅由區塊鏈上的記錄證明,交易過程 中由私鑰簽名過的所有信息都是交易證據的一部分。用戶不能否認用戶發送的個 人信息數據,也不能誣告服務提供商擁有用戶未發送的數據。解決爭端后,用戶 和服務提供商可以重新進行個人信息交易。
    o
    i
    用戶
    I
    獲取個人信息
    I
     
     
     
    [使用傲據密鑰加密數據
    V 發送加密后的;個人信息數據
    牛.成交易記錄包和
    記錄密鑰 使用記錄密飭加密
    交易記錄包
    將加密后的交易記 」錄包提交至區塊鏈
    「解密交易記錄包
    核驗交易記錄包和交易備!
    J案包的內容是否•致 I
    發送數據密鑰
    ―]用數據密鑰解密個
    Q人信息數據
    圖 3-6 直接交易時序圖
    Fig. 3-6 Direct transaction timing diagram
    我們使用r和tm來防止重放攻擊。其中r是服務提供商生成的一個隨機值, tm是消息發送的時間。在一筆交易中,r應當始終保持一致,tm應當保持在一個 預先設定好的較短的時間間隔內。如果消息接受者在有效時間間隔內收到一個包 含重復的r值的數據包,則判斷發生了重放攻擊,需將該數據包丟棄。
    為了更直觀的展示交易步驟,我們將兩種交易場景下的交易步驟繪制成時序 圖。直接交易場景下的交易步驟時序圖如圖3-6所示。第三方交易場景下的交易 時序圖如圖3-7所示。
    i
    用戶 認證屮心 服務提供商 第三方
     
    I
    申請從第三為獲取個人信息
    丄生成交易備案包
    發送交易備案包
     
    圖 3-7 第三方交易時序圖
    Fig. 3-7 Third-party transaction timing diagram
     
    3.3區塊結構設計
    在該方法中,服務提供商生成的交易記錄包保存在區塊鏈上。區塊鏈結構如
    圖 3-8 所示。每個區塊包含一個區塊頭和一個區塊體。
    區塊頭由以下部分組成:前一區塊哈希、交易量、時間戳和梅克爾根。前一 區塊哈希表示前一區塊頭的哈希值;交易數量表示當前區塊體中保存的交易的數 量,即一個區塊體可以存儲多筆交易的信息;時間戳是當前區塊中的最后一個交 易被打包到區塊中的時間;梅克爾根由當前區塊中的所有交易數據生成。這四個 部分的哈希又被寫入下一個區塊頭,區塊之間以這種方式連接。
    區塊體用于存儲交易記錄包的內容,它由多個交易記錄組成。每個交易記錄
    包括交易編號、交易類型、服務提供商身份、用戶身份、第三方平臺身份和交易
     
    3.4共識算法與區塊生成
    在此方法中,所有的服務提供商和認證中心都是參與維持區塊鏈運行的節點, 節點的加入需要許可。同時,我們的設計目標要求交易區塊鏈具有較低的延遲和 較高的吞吐量。因此,作為一個許可鏈,我們基于Raft算法設計了該個人信息管 理方法的共識機制。
    在我們的共識機制中,節點有三種可能的狀態:Leader、Follower、Candidateo 時間被分割成任意長度的任期,每一段任期從一次選舉開始。Candidate節點通 過選舉決定出這段任期內的Leader節點,除了 Leader外的其余節點成為Follower 節點。Leader節點負責接收各個智能合約執行產生的交易記錄,并生成新的區塊 同步至Follower節點。如果Leader節點出現問題,則會開啟下一個任期,選出 新的Leader節點。
    區塊鏈運作前需要根據實際應用的情況設定好兩個參數:區塊打包間隔和區 塊打包數量。區塊打包間隔指生成新區塊的最長時間間隔。區塊打包數量指一個 區塊中能存儲的最大交易數量o Leader節點會根據這兩個參數進行區塊的打包工 作。Leader節點觸發區塊打包工作的條件有兩個:達到區塊打包間隔的時間或者 收到的交易數量達到區塊打包數量,兩個條件有任意一個達成都會觸發區塊打包。 新區塊打包后,兩個條件的計時或計數都會重新開始。
    認證中心和所有服務提供商共同作為維持區塊鏈系統的節點,每個節點都擁 有一份全部交易記錄的副本。依據共識機制從所有節點中選舉出Leader節點后, 其他的Follower節點們會根據Leader節點發來的消息更新自己所保存的交易記 錄副本。這樣的存儲方式可以保證交易記錄難以被篡改。
    我們在這里選取了一種非拜占庭容錯的共識算法是基于如下理由。B作為一 個許可鏈,所有參與其中的服務提供商的身份都是經過審核與備案的。我們假設 其中惡意的服務提供商在進行惡意活動時不想暴露自己。如果惡意服務提供商成 為Follower節點,則不會對區塊鏈的運作造成影響。如果惡意服務提供商成為 Leader節點,根據圖3-9的推理,它進行惡意活動的后果有三種:重選Leader節 點、提交的數據無效、身份暴露。無論哪種結果對惡意服務提供商都是有百害而 無一利。
     
    圖 3-9 采用非拜占庭容錯共識算法的原因
    Fig. 3-9 Reasons for adopting non-Byzantine fault-tolerant consensus algorithms
     
    3.5方法分析
    在本節,我們將對該基于可信認證中心的個人信息管理方法進行評估。評估 將從定性的分析和基于Kailar邏輯的可追究性證明兩方面展開。
    3.5.1特性分析
    在隱私性方面,本方法中用戶的個人信息數據不會存儲在區塊鏈上,也不會 通過區塊鏈傳輸。交易記錄以加密的形式存儲在區塊鏈上,只有擁有記錄密鑰的 交易相關方才能解密交易記錄。因此,不存在額外的信息泄露風險。
    在可靠性方面,交易記錄存儲在區塊鏈上。區塊鏈的每個節點都有所有交易 記錄的副本。區塊結構的特殊設計使得交易記錄一旦存儲于區塊鏈上,就很難被 篡改或抵賴。
    在我們的方法中,用戶與所有服務提供商的個人信息交易都存儲在區塊鏈中。 因此,用戶可以清楚地了解哪些個人信息曾交給哪些服務提供商。如圖 3-10 所 示,用戶將自己的個人信息提供給了許多服務提供商,其中極有可能會存在將信 息泄露給犯罪者的服務提供商。犯罪者得到用戶的個人信息后,可能會非法使用 或在黑市上售賣。應用我們的方法后,如果犯罪者通過非法途徑獲取用戶的個人 信息并使用,區塊鏈上不會有相應的交易記錄,很容易證明信息的使用者是未經 
    授權的犯罪者,用戶可以得到用于起訴犯罪者的證據。這樣的方法可以遏制因舉
     
     
    3.5.2可追究性證明
    我們使用Kailar邏輯來分析該方法的可追究性。可追究性可以確保參與交易 的各方在交易執行完畢后能夠獲得充足的交易相關證據,以解決未來可能發生的 糾紛。由于交易備案包和交易記錄包的有效內容是一致的,所以在下面的分析中, 我們使用TP來表示它們。
    (1) 協議分析目標
    要完成可追究性證明需要達成的目標有以下7個。
    U CanProve (SP Says TP) (G1)
    在交易備案階段中,用戶U需要確保收到的交易備案包TP是由服務提供商 SP發送的。
    U CanProve(T Says Kdraatna) (G2)
    在數據發送階段,用戶U需要確保收到的數據密鑰砒是由認證中心T發 送的。
    SP CanProve (U Says{I}Kran ) (G3)
    Kdata
    在交易記錄階段,服務提供商SP需要確保收到的由數據密鑰Kd2加密的個 人信息{/}Kw是由用戶U發送的。
    Kdata
    T CanProve(SPSaysKrreacnord) (G4)
    在交易記錄階段,認證中心T需要確保收到的記錄密鑰K;Xrd是由服務提供 商 SP 發送的。
    T CanProve (U Says TP a SP Says TP) (G5)
    在核驗解密階段,認證中心T需要確保用戶U和服務提供商SP均對TP所 描述的交易內容無異議。
    U CanProve(T Says K rreacnord ) (G6)
    在核驗解密階段,用戶U需要確保收到的記錄密鑰K;爲d是由認證中心T發 送的。
    SP CanProve (T Says Kd;aatna ) (G7)
    在核驗解密階段,服務提供商SP需要確保收到的記錄密鑰KZ是由認證中 心T發送的。
    (2) 協議形式化描述 這一步中我們要用邏輯語言形式化地描述協議步驟。為了簡潔起見,下面只 描述與協議分析目標的推理相關的步驟。
    T Receives (TP, H(TP)) SignedWith KU-1 (I1)
    在交易備案階段中,認證中心T收到了用戶U發送的(TP, H(TP))。
    U Receives K d;aatna SignedWith KT-1 (I2)
    在數據密鑰生成階段,用戶U收到了認證中心T發送的KZ。
    SP Receives H({I}K;an ) SignedWith KU-1 (I3)
    Kdata
    在數據發送階段,服務提供商SP收到了用戶U發送的H({I* )。
    Kdata
    SPSaysTP (I4)
     
     
    在交易記錄階段,
    服務提供商SP將TP提交至區塊鏈。
     
     
     
    T Receives K rreacnord SignedWith KS-P1
     
     
    在交易記錄階段,
    認證中心T收到了服務提供商SP發送的K;爲
     
     
     
    U Receives K rreacnord SignedWith KT-1
     
     
    在核驗解密階段,
    用戶U收到了認證中心T發送的K;爲d
     
     
     
    SP Receives Kdraatna SignedWith KT-1
     
     
    在核驗解密階段,
    服務提供商SP收到了認證中心T發送的KZ
    3) 初始假設
    我們假設交易的三方均信任Ksp屬于服務提供商、Ku屬于用戶、
    KT 屬于認
    證中心。
    T,U CanProve(KSP Authenticates SP)
    (A1)
    T,SP CanProve (KU AuthenticatesU)
    (A2)
    SP,U CanProve (KT Authenticates T )
    (A3)
    (4) 協議分析
    現在我們用形式化描述的協議、初始假設和Kailar邏輯的邏輯公式進行協議 分析目標的推理。如果所有協議分析目標都可以被推導出,則可證明該協議具有 可追究性。
    在此次分析中,我們需要用到的邏輯公式有兩個:連接規則和簽名規則。
    A CanProve x; A CanProve y
    A CanProve ( xa y)
    (連接規則)
    A Receives (m SignedWith K); x in m; A CanProve (K Authenticates B)(簽名規貝y)
    A CanProve (B Says x)
    (G1)推導:
    根據區塊鏈的性質,(14)可以推導出U CanProve (SP Says TP),(G1)得證。
    (G2)推導:
    (A3)可以推導出:
    U CanProve (KT Authenticates T)
    (D1)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    (12)與(D1)代入簽名規則:
    (12); Kj 阻;(D1)
    (G2)
    (G3)推導:
    (A2)可以推導出:
    SP CanProve (KU AuthenticatesU)
    (13)與(D2)代入簽名規則:
    (I3);{I}Kran in H({I}Kran );(D2)
    ^data ^data
    (G3)
    (G4)推導:
    (A1)可以推導出:
    T CanProve (KSP Authenticates SP)
    (I3)與(D2)代入簽名規則:
    (15);K;n K;爲°;(D3)
    (G4)
    (G5)推導:
    (A1)可以推導出:
    T CanProve (KU AuthenticatesU)
    (I1)與(D4)代入簽名規則:
    (11); TP in (TP, H(TP)); (D 4)
    T CanProve (U Says TP)
    根據區塊鏈性質,(14)可以推導出:
    T CanProve (SP Says TP)
    (D5)與(D6 )代入連接規則:
    (D5);(D6)
    (G5)
    (G6)推導:
    (I6 )與(D1)代入簽名規則:
    (16);K;g爲 in K;爲d;(D1)
    (G6)
    (G7)推導:
    (A3)可以推導出:
    SP CanProve (KT Authenticates T ) (D7)
    (I7)與(D7)代入簽名規則:
    (17);緜 in 阻;(D7)
    (G7)
    至此,我們成功推導出了所有的協議目標,即證明該方法具有可追究性。因 此,個人信息的交易完成后,各方所發送的消息均可以得到可信的證明,可以作 為有效的法律維權證據。
    3.6本章小結
    本章介紹了一種基于可信認證中心的個人管理方法。首先從包括應用場景、 設計目標以及基本思想在內的總體設計上對該方法進行概覽;然后,對協議的六 個步驟進行了詳細介紹,并給出了設計說明;之后,介紹了區塊結構以及共識算 法與區塊生成的詳細設計。在這一章的最后,我們還對該方法進行了分析,并用 Kailar邏輯證明了其可追究性。
    第 4 章 基于智能合約的個人信息管理方法
    在本章中,我們將設計一種基于智能合約的個人信息管理方法。不同于第 3 章中的方法,該方法不需要可信認證中心的參與,而是由智能合約來完成個人信 息交易中的操作處理。我們將首先從設計目標和基本思想兩方面,對該方法的總 體設計進行介紹。之后,我們將從智能合約的部署和執行、數據存儲結構、三種 類型的智能合約設計、區塊結構四方面對其進行詳細介紹。需要說明的是,該方 法的共識機制與區塊生成與基于可信認證中心的個人信息管理方法相同(同 3.4 節),本章中不再贅述。
    4.1總體設計
    4.1.1設計目標
    在本章中,我們的設計目標是設計一種基于智能合約的個人信息管理方法。 該方法利用智能合約技術,無需可信認證中心參與,同時,除了新交易的創建功 能外,還提供了對交易進行失效和修改的操作。所提出的基于智能合約的個人信 息管理方法應具有以下幾個特點:
    安全性:所設計的方法不應泄露使用者的個人信息。 可靠性:個人信息交易記錄不可被篡改或抵賴,可作為有效憑證。 可追溯性:交易記錄一經存儲在區塊鏈上即永久具有追溯效力,對交易進行 失效和修改操作不會導致舊的交易記錄丟失。
    4.1.2基本思想
    所設計的個人信息管理方法網絡拓撲圖如圖 4-1 所示。本方法包含服務提供 商與用戶兩個實體。
    服務提供商是為用戶提供服務的一方,也是個人信息的需求者和使用者。在 本方法中,服務提供商如果需要獲取個人信息,則需要先在區塊鏈上部署相應的 智能合約。
    用戶是信息的提供方和服務的使用者。與第 3 章中相同,用戶同樣不參與區 塊鏈的維持工作。
     
    Fig. 4-1 Personal information protection based on smart contracts
     
    本方法的流程如下:服務提供商首先根據自己對所需個人信息的需求,部署 相應的智能合約在區塊鏈上,在向用戶發起個人信息交易請求后,用戶會將相關 信息發送給區塊鏈上相應的智能合約,由智能合約負責完成信息的傳遞和交易在 區塊鏈上的記錄。
    本方法設計的智能合約分為三種類型:交易創建類、交易失效類、交易修改 類。想要發起新交易時,需要使用交易創建類智能合約在區塊鏈上產生新的記錄。 當需要對舊的交易進行失效處理時,可以使用交易失效類智能合約進行操作。如 果需要對舊交易的某部分進行修改的操作,則可以使用交易修改類智能合約。當 使用交易失效類或交易修改類智能合約對舊交易進行操作后,舊交易的內容不會 丟失,只是處于一種失效狀態。交易的失效和修改不會對影響舊交易記錄作為交 易存在性的憑證效力。
    智能合約在區塊鏈上部署后,任何人都有權限對其進行查看。由于區塊鏈具 有不可篡改性,智能合約一旦上鏈就無法被抵賴或篡改。惡意或不公平的智能合 約將很容易地被發現,存儲在區塊鏈上的智能合約記錄也將直接作為用戶對部署 此類智能合約的服務提供商進行法律維權的證據。因此我們假設服務提供商所部 署的智能合約均符合合約設計的安全性和公平性要求。
    用戶的個人信息交易記錄以鍵值對的格式分布式存儲在數據庫中。維持區塊 鏈運作的每個服務提供商節點都存有一份數據庫的副本,并根據由 Raft 共識算 法同步的新區塊內容對存儲在本節點上的數據庫進行更新,保證各個節點的數據
    一致性。
    4.2智能合約的部署和執行
    當服務提供商需要獲取用戶的個人信息時,需要使用提前部署好的智能合約。 服務提供商往往需要在設計其所提供的服務時,就對智能合約進行設計和部署, 其大致流程如圖 4-2 所示。
    當服務提供商的服務內容涉及到需要獲取用戶個人信息的操作時,它需要將 個人信息交易的相關內容設計成智能合約。智能合約中需要預置服務提供商的公 鑰和私鑰,以及該交易所涉及的個人信息條目。所有具有相同交易條目和性質的 交易都可以使用這一智能合約進行。智能合約設計完成后,由服務提供商將其上 傳至區塊鏈,并同步至其他節點,即為智能合約的部署。智能合約一經部署后就 無法刪除,即刻具有法律效益。在智能合約部署成功后,每一份智能合約會擁有 一個唯一的合約地址。
     
    圖 4-2 智能合約的設計和部署
    Fig. 4-2 Smart contracts design and deploy
     
    智能合約部署完成后,當服務提供商向用戶申請獲取個人信息時,就需要執 行智能合約,執行流程如圖 4-3所示。服務提供商需要將對應的智能合約地址及 交易的相關信息發送給用戶。用戶如同意交易,則將所需的個人信息及其他智能 合約要求的輔助信息發送給智能合約。智能合約在收到信息后,根據合約的設計 進行信息的核驗。信息核驗無誤后,智能合約會將本次交易的記錄提交至區塊鏈, 隨后將個人信息內容發送至服務提供商,至此完成交易。
     
     
    4.3數據存儲結構
    個人信息在數據庫中以鍵值對的形式存儲,如圖 4-4 所示。其中,數據的鍵 為“用戶的公鑰+完成該交易的時間”,這樣的設計可以確保鍵值的唯一性和易查 性。數據的值包含“交易狀態”、“交易內容”、“下一筆交易”。
     
    “交易狀態”指該交易目前是否為有效狀態, 0 代表有效狀態, 1 代表無效 狀態,交易失效類智能合約和交易修改類智能合約都可能對“交易狀態”產生修 改。
    “交易內容”包括該交易所涉及的智能合約地址addr,用公鑰代表的用戶身 份Kpub和服務提供商身份KP,用戶所提交的個人信息條目£"刊,用戶提交的個 
    人信息內容的哈希值H(^neew),所有的交易內容由用戶的公鑰KUpb加密后存儲。
    “下一筆交易”用于存放相關聯的下一筆交易的鍵值,交易修改類智能合約 會將新交易的鍵值存儲在“下一筆交易”中,形成一個交易修改路徑的鏈式結構。 當該交易不涉及修改操作時,“下一筆交易”置0值。
    4.4智能合約設計
    服務提供商在設計其所提供的服務時,每設計一個需要獲取個人信息的服務, 需要針對其設計并部署三種類型的智能合約,分別為:交易創建類、交易失效類、 交易修改類。服務提供商根據自己服務需求的信息條目的不同,部署多個不同的 智能合約在區塊鏈上。每個智能合約在設計時需要寫明該合約涉及的個人信息條 目以及交易的條約內容。
    4.4.1交易創建類智能合約
    交易創建類是最常用的一種類型。服務提供商在向用戶申請獲取個人信息時, 都需要使用到這類智能合約。交易創建類智能合約的內部邏輯如下所示。
    Init: Kp, KP, add嚴,£neew
    new pub pub new new new
    Input: XKpr» (KU ,KSp ,s ,tmsp ) ,Ek哆(i ),
     
     
    1: if !check(XK易(K腭,Kp,嚴,tm;p)) then
    2: return TransactionError
    3: end if
    4: if !check((Kpub,Kp,H(嚴”),尹”,呼),(嚴”))then
    5: return TransactionError
    6: end if
    7: if all_check_pass then
    8: NewTransaction(Key: KUpub + tmUnew , Value[0]: 0, Value[1]:
    add嚴耳護(Kp,Kp,嚴H(嚴)),Vaiue[2], 0)
    9: Send(EKpub(inew,KUpub+tmUnew,tmSnpew),Sp)
    10: else
    11: return TransactionError
    12: end if
    以下對其進行詳細解釋。
    交易創建類智能合約具有四個預置的初始信息:服務提供商的公鑰Kp、服 務提供商的私鑰Kpv、合約的地址add嚴、合約涉及的交易條目&"ew。
    交易創建類智能合約觸發需要三個輸入項:服務提供商交易發起憑證X臥、 個人信息內容已増(嚴)、用戶交易同意憑證。
    其中,服務提供商交易發起憑證XKewv中包含用公鑰代表的用戶身份Kpub和 服務提供商身份Kp、個人信息條目£new、發起交易的時間tmSP,并用服務提供 商的私鑰Kppv對其簽名。個人信息內容EKub (inew)使用服務提供商公鑰KSUb加密。 由于服務提供商設計智能合約時已將其私鑰KPv預置于其中,交易創建類智能 合約擁有用服務提供商的私鑰解密個人信息內容的能力。用戶交易同意憑證 包含用公鑰代表的用戶身份Kpub和服務提供商身份Kp、個人信息內容的 哈希值H lnew )、個人信息條目£"旳、用戶同意交易的時間tmf,并用用戶的私 鑰Kpriv對其進行簽名。
    交易創建類智能合約首先需要對服務提供商發起交易憑證 XKnepwriv 進行核驗 (行 1—2)。核驗主要包括以下內容:
    (1) 智能合約用服務提供商的公鑰Kp對該憑證進行簽名驗證,確保該憑 證是由服務提供商生成的。
    (2) 智能合約保存憑證中用戶的公鑰KUub用于之后用戶憑證的核驗。
    (3) 智能合約對比憑證中的服務提供商公鑰Kp和智能合約記錄中的是否 一致。
    (4) 智能合約對比憑證中的個人信息條目£"ew和智能合約設計中所需的是 否一致。
    (5)憑證中發起交易的時間mp與當前時間的誤差是否在設定范圍內,且 是否有含有相同交易時間的憑證被重復發送給智能合約,以此來防止重放攻擊。
    如果以上各核驗步驟中有任何一步核驗失敗,智能合約會返回交易失敗的結 果。
    隨后,智能合約要對用戶發送的用戶交易同意憑證xkw及個人信息內容 已哮(inew)進行核驗(行3—4)。核驗主要包括以下內容:
    (1) 智能合約用先前中保存的用戶公鑰Kpub對該憑證進行簽名驗證,確保 該憑證是由用戶生成的。
    (2) 智能合約對比憑證中的用戶公鑰Kpub與上一步中保存的是否一致。
    (3) 智能合約對比憑證中的服務提供商公鑰Kp與智能合約記錄中的是否 一致。
    (4) 智能合約使用服務提供商在設計智能合約時預存的私鑰Kpv對加密后 的個人信息內容已哮(inew)進行解密。
    (5) 計算解密后的個人信息內容的哈希值和憑證中保存的哈希值Hlnew)是 否一致,以確保個人信息內容沒有被篡改。
    (6) 智能合約對比憑證中的個人信息條目£"ew和智能合約設計中所需的是 否一致。
    (7) 智能合約對比憑證中發起交易的時間吩與當前時間的誤差是否在設 定范圍內,且是否有含有相同交易時間的憑證被重復發送給智能合約,以此來防 止重放攻擊。
    (8) 對比當前憑證中用戶同意交易時間吩與服務提供商發起交易憑證中
    的發起交易時間tmSp的先后順序和誤差是否在設定范圍內。 如果以上各核驗步驟中有任何一步核驗失敗,智能合約會返回交易失敗的結 果。
    如果以上兩個核驗步驟都順利通過,智能合約會在區塊鏈上記錄一筆新的交 易(行5—9)。使用保存的用戶公鑰Kf和用戶交易同意憑證中用戶同意交易的 時間tm帶連接在一起作為該交易記錄的鍵值。數據值中交易狀態Vaiue[0]設置為 0,表示該交易處于有效狀態。數據值中交易內容Value[1]設置為交易相關信息, 包括交易所涉及的智能合約地址addrnew、用公鑰代表的用戶身份Kpub和服務提 供商身份Kp、個人信息條目£"ew、個人信息內容的哈希值H(inew),其中除第一 項外均用用戶公鑰Kpub加密。使用用戶公鑰加密后存儲可以避免個人信息條目在 區塊鏈上明文記錄可能對用戶造成的隱私泄露,加密后只有交易相關方可以知道 該交易的相關內容。數據值中下一筆交易Vaiue[2]設置為0,表示該交易目前沒 有下一筆相關交易。
    交易在區塊鏈上創建成功后,智能合約會向服務提供商發送一個用其公鑰加 密的數據包EKpb (inew,KUub + tmUew,吩)。數據包中包括用戶發送的個人信息內容 inew,服務提供商收到之后就達到了該筆交易的目的。數據包中同時包括該交易 在區塊鏈上的記錄的鍵值KpUb + tm帶以及服務提供商交易發起憑證中的發 起交易時間tm^,這兩個輔助信息可以幫助服務提供商快速定位該數據包的用 途,同時可以對該交易在區塊鏈上的記錄狀態進行跟蹤。如果以上兩個步驟成功 完成,則該智能合約執行成功;如果以上步驟未能順利執行,智能合約會返回交 易失敗的結果。
    4.4.2交易失效類智能合約
    交易失效類智能合約用于將區塊鏈上已經存在的交易記錄置為無效狀態。執 行交易失效類智能合約并不會使區塊鏈中關于這筆交易的記錄被徹底刪除,留存 的記錄依舊可以作為交易存在性的憑證。交易失效類智能合約的內部邏輯如下所 示。
    Init: Kp, Kpv, addrdel, gnew
    Input: XKp”v(KUu + tmUew, H (嚴)),X^„ (KUub + tm『add嚴)
    1: if !check( 乂第”任磐 + tm帶,H (inew))) then
    2: return TransactionError
    3: end if
    4: if !check(XKdep[以下對其進行詳細解釋。
    交易失效類智能合約具有四個預置的初始信息:服務提供商的公鑰Kp、服 務提供商的私鑰Kpv、合約的地址addrdel、合約失效的舊交易的交易條目£new。
    交易失效類智能合約觸發需要兩個輸入項:用戶交易失效憑證X^,、服務 提供商交易失效憑證X冷。
    其中,用戶交易失效憑證X^„包含將要被失效的個人信息記錄的鍵值 Kpub + tmf和個人信息內容的哈希值H (嚴”),并用用戶的私鑰Kprv對其進行簽 名。服務提供商交易失效憑證XK^r,中包含將要被失效的個人信息記錄的鍵值 Kpub + tm^,相應交易創建類智能合約的地址add嚴,并用服務提供商的私鑰 Kppv對其簽名。
    交易失效類智能合約需要先對用戶交易失效憑證X^,進行核驗(行1)。核 驗主要包括以下內容:] [ 智能合約用用戶的公鑰Kpub對該憑證進行簽名驗證,確保該憑證是由 用戶生成的。] [ 智能合約根據憑證中的鍵值Kpub + tmnw查詢區塊鏈中是否有相應記錄。] [ 智能合約檢查記錄中數據值中的交易狀態Value[0]是否為有效狀態。] [ 智能合約使用智能合約設計時預留的服務提供商公鑰Kp和個人信息
    Init: Kp, Kppv, addrchg ,schg
    Input: X答(Kpub + tm帶,嚴,tmcp)工増(lhg), X^ (H(lhg),嚴,tm^)
    1: if !check(X^ (Kpub + tm帶,嚴兄))then
    以下對其進行詳細解釋。
    交易修改類智能合約具有四個預置的初始信息:服務提供商的公鑰Kp、服 務提供商的私鑰Kpv、合約的地址addrchg、修改后交易條目£呢。
    交易修改類智能合約觸發需要三個輸入項:服務提供商交易修改憑證X?gv、
    KSp
    修改后的個人信息內容£噂(lh)、用戶修改同意憑證。
    其中,服務提供商交易修改憑證X陰中包含原交易記錄的鍵值Kpub + tm帶、
    KSp
    要修改的個人信息條目£呢、發起交易修改的時間tmp,并用服務提供商的私鑰 Kppiv對其簽名。修改后的個人信息內容Ek賠I)使用服務提供商公鑰Kp加密。 由于服務提供商設計智能合約時將其私鑰Kpv預置于其中,交易修改類智能合 約擁有用服務提供商的私鑰解密個人信息內容的能力。用戶修改同意憑證Xc^ 包含修改后的個人信息內容的哈希值H(I)、要修改的個人信息條目£呢、用戶 同意修改的時間tm常,并用用戶的私鑰Kpriv對其進行簽名。]riv(KUpub+tmUnew)) then
    5: return TransactionError
    6: end if
    7: if all_check_pass then
    8: DeleteTransaction(Key: KUpub + tmUnew )
    9: else
    10: return TransactionError
    11: end if 條目£"e",以及憑證中的用戶公鑰Kpub、個人信息內容的哈希值H(嚴”)和相應 交易創建類智能合約的地址add嚴,可以重組出數據值中的交易內容部分,并且 與區塊鏈中的相應記錄Value[1]進行對比。
    如果以上各核驗步驟中有任何一步核驗失敗,智能合約會返回交易失敗的結 果。
    隨后,智能合約要對服務提供商交易失效憑證X^„進行核驗(行2)。核驗 主要包括以下內容:
    (1) 智能合約用服務提供商的公鑰Kp對該憑證進行簽名驗證,確保該憑 證是由服務提供商生成的。
    (2) 智能合約檢查該憑證中的鍵值Kpub + tm,和上一步中憑證內的是否一 致。
    如果以上各核驗步驟中有任何一步核驗失敗,智能合約會返回交易失敗的結 果。
    如果以上兩個核驗步驟都順利通過,智能合約會開始進行交易失效操作(行 3—6)。智能合約會將鍵值Kpub + tmnw對應的交易記錄的交易狀態Value[0]設置 為 1,即無效狀態,同時將記錄中的智能合約地址更新為該交易失效類智能合約 的地址add嚴。此時即為交易失效類智能合約執行成功。如果以上步驟未能順利 執行,智能合約會返回交易失敗的結果。
    4.4.3交易修改類智能合約
    交易修改類智能合約用于修改區塊鏈上已經存在的交易記錄。執行交易修改 類智能合約后,舊的交易記錄將被置為失效狀態,但舊的交易記錄中的交易內容 不會被修改。智能合約將創建一個新的交易記錄,將修改后的新交易內容存在新 的交易記錄中,并且在舊交易記錄的下一筆交易中寫入新交易記錄的鍵值。交易 修改類智能合約的內部邏輯如下所示。
    2: return TransactionError
    3: end if
    4: if !check(X:g (H (I),嚴,tm常),(ichg)) then
    5: return TransactionError
    6: end if
    7: if all_check_pass then
    8: NewTransaction(Key: KUpub + tmUchg , Value[0]: 0, Value[1]:
    addrchg上冊(Kpub,Kp,嚴,H(l)), Value[2]: 0)
    9: ChangeTransaction(Key: KUpub + tmUnew , Value[0]: 1, Value[2]: KUpub + tmUchg )
    10: Send(EK繆(lh,Kpub + tm^g,tm^),SP)
    11: else
    12: return TransactionError
    13: end if
    交易修改類智能合約首先需要對服務提供商交易修改憑證 XKchpgri, 進行核驗 (行 1)。核驗主要包括以下內容:
    (1) 智能合約用服務提供商的公鑰Kp對該憑證進行簽名驗證,確保該憑 證是由服務提供商生成的。
    (2) 智能合約根據憑證中的鍵值Kpub + tmUw查詢區塊鏈中是否有相應記錄; 檢查記錄中數據值中的交易狀態Value[0]是否為有效狀態0。
    (3) 對比憑證中的要修改的個人信息條目£呢與智能合約設計中的是否一 致。
    (4) 智能合約對比憑證中發起交易修改的時間tmp與當前時間的誤差是否 在設定范圍內,且是否有含有相同交易時間的憑證被重復發送給智能合約,以此 來防止重放攻擊。
    如果以上各核驗步驟中有任何一步核驗失敗,智能合約會返回交易失敗的結 果。
    隨后,智能合約要對用戶發送的用戶修改同意憑證Xc^及修改后的個人信 息內容進行核驗EKpub (ichg)(行2)。核驗主要包括以下內容:
    (1) 智能合約用上一步中保存的用戶公鑰Kpub對該憑證進行簽名驗證,確 保該憑證是由用戶生成的。
    (2) 智能合約使用服務提供商在設計智能合約時預存的私鑰Kprv對加密的 修改后的個人信息內容EKSb (ichg)進行解密。
    (3) 智能合約計算解密后的個人信息內容的哈希值和憑證中保存的哈希值 H (ichg)是否一致,以確保個人信息內容沒有被篡改。
    (4) 智能合約對比憑證中的要修改的個人信息條目£chg與智能合約設計中 的是否一致。
    (5) 智能合約憑證中用戶同意修改的時間m與當前時間的誤差是否在設 定范圍內,且是否有含有相同交易時間的憑證被重復發送給智能合約,以此來防 止重放攻擊。
    (6) 智能合約對比當前憑證中用戶同意修改時間tmUh與服務提供商交易修 改憑證X^l”中的發起交易修改時間tmSp的先后順序和誤差是否在設定范圍內。
    如果以上各核驗步驟中有任何一步核驗失敗,智能合約會返回交易失敗的結 果。
    如果以上兩個核驗步驟都順利通過,智能合約會在區塊鏈上開始交易的修改 步驟(行 3—8)。首先智能合約會在區塊鏈上提交一筆修改后的新交易,使用保 存的用戶公鑰Kpub和用戶修改同意憑證中用戶同意修改的時間tmUhg連接在一起 作為該新交易記錄的鍵值。數據值中交易狀態Vaiue[0]設置為0,表示該交易處 于有效狀態。數據值中交易內容Value[1]設置為交易相關信息,包括該交易修改 類智能合約地址addrchg、用公鑰代表的用戶身份K嚴和服務提供商身份Kp、個 人信息條目£迦、修改后的個人信息內容的哈希值H(ichg),其中除第一項外均用 用戶公鑰Kpub加密。使用用戶公鑰加密后存儲可以避免個人信息條目在區塊鏈上 明文記錄可能對用戶造成的隱私泄露,加密后只有交易相關方可以知道該交易的 相關內容。數據值中下一筆交易Value[2]設置為0,表示該交易目前沒有下一筆 相關交易。
    然后智能合約會對修改前的舊交易記錄的內容進行更新。智能合約會將舊鍵 值Kpub + tmUw對應的交易記錄的交易狀態Value[0]設置為1,即無效狀態,同時 數據值中下一筆交易Value[2]設置為新交易的鍵值Kpub +代,以此將新舊兩筆 交易鏈接起來。
    交易修改操作后,智能合約會向服務提供商發送一個用其公鑰加密的數據包 Eku? (ichg,K腭+伽常,tmcp)。數據包中包括用戶發送的修改后的個人信息內容 ichg ,服務提供商收到之后就達到了該筆交易的目的。數據包中同時包括新交易 在區塊鏈上的記錄的鍵值Kpub +代以及服務提供商交易修改憑證X備中的交 易修改時間tmdpl,這兩個輔助信息可以幫助服務提供商快速定位該數據包的用途, 同時可以對該交易在區塊鏈上的記錄狀態進行跟蹤。如果以上兩個步驟成功完成, 則該智能合約執行成功;如果以上步驟未能順利執行,智能合約會返回交易失敗 的結果。
    4.5區塊結構
    交易信息以區塊為單位存儲在區塊鏈上。區塊結構如圖4-5 所示。每個區塊 由區塊頭和區塊體組成。
     
    圖 4-5 區塊結構圖 Fig. 4-5 Block structure
     
    區塊頭由五部分組成:前一區塊哈希值、時間戳、梅克爾根、交易數量、數 據庫哈希值。前一區塊哈希值指當前區塊的上一個區塊的區塊頭的哈希值,這樣 的設計可以使區塊之間相互串聯,難以被篡改。時間戳指當前區塊生成的時間, 可作為該區塊中的交易信息的存在性憑證。梅克爾根由當前區塊體中的所有數據 兩兩哈希而成的樹結構所得,可以確保當前區塊體中的交易數據沒有被篡改。交 易數量指當前區塊體中所包含的交易的數量。數據庫哈希值指將當前區塊中的交 易全部更新至數據庫中后,數據庫當前狀態下全部數據的哈希值。
    區塊體用于存放由智能合約執行產生的每一筆具體的交易。各節點在接收到 新的區塊同步后,會將區塊體中的每一筆交易依次在自己的數據庫中更新。所有 交易都更新入數據庫后,節點會對計算當前數據庫的哈希值,再與區塊頭中的數 據庫哈希值進行對比,以確保各節點間數據庫的一致性。
    4.6本章小結
    本章中設計了一種無需可信認證中心,而是基于智能合約實現的個人信息管 理方法,從總體設計開始,從智能合約的部署和執行、數據存儲結構,到包括交 易創建類、交易失效類和交易修改類在內的三類智能合約的設計細節,以及區塊 結構設計,對該方法進行了詳細描述。
    第5 章 仿真實驗及結果
    在本章中,我們將使用NS-3網絡模擬器對所提出的個人信息管理方法進行 仿真實驗。在對 NS-3 網絡模擬器和其仿真環境的搭建流程進行簡單介紹后,我 們將針對共識機制的性能和智能合約的應用效果進行三個仿真實驗,并根據實驗 結果進行分析。
    5.1實驗環境
    5.1.1NS-3 網絡模擬器簡介
    NS-3 是 2006 年由美國華盛頓大學 Thomas R.Henderson 教授帶領其研究小 組開發的開源網絡模擬工具,基于Linux平臺使用C++語言開發。它可以在一段 模擬時間中,定時調度離散時間進行網絡模擬-NS-3汲取了之前諸如NS-2、Yans、 GTNetS 等網絡模擬器的成果經驗,且彌補了它們的一些缺點。目前 NS-3 正于 科研與教育方面被廣泛使用,是一種目前較為年輕和優質的網絡模擬器[65]。
    使用 NS-3 進行網絡模擬通常需要如下幾個步驟:
    (1) 選擇或開發所需的模塊
    根據仿真對象和場景,選擇所需的仿真模塊;如果現有的模塊不能滿足使用 者的要求,還可以自己進行相應模塊的設計開發。
    (2) 編寫仿真腳本
    相應的模塊準備完成后,使用者需要編寫相應的仿真腳本來構建仿真環境。 編寫仿真腳本一般需要如下幾個步驟:節點生成、網絡設備安裝、協議棧安裝、 應用層協議安裝、其他配置、啟動仿真。
    (3) 實驗仿真
    運行仿真腳本,進行網絡模擬實驗。
    (4) 數據采集與分析
    采集并分析實驗仿真中產生的數據。
    (5) 根據分析結果調整參數或代碼。
    使用者往往需要根據仿真的分析結果,對實驗的參數或源代碼進行反復修改 調試,以期達到滿意的結果。
    5.1.2仿真環境搭建
    在我們所提出的方法中,區塊鏈的性能是制約該方法是否能在實際應用場景 下運作的關鍵。為了驗證我們的方法是否能滿足實際應用場景下的交易性能要求, 我們首先進行了性能仿真模擬。隨后,我們又針對智能合約的應用效果進行了仿 真實驗。
    本次仿真在PC機上使用NS-3網絡模擬器進行,使用的系統為Ubuntu 16.04。 在安裝完NS-3所依賴的GCC/G++、Python和其他相關的軟件包之后,在官網下 載發行版的tar壓縮包,并在合適的目錄下解壓。解壓完成后,使用其中的build.py 腳本進行配置和編譯,隨后可以使用waf命令進行定制的配置和重新編譯。編譯 安裝完成后,可以運行test.py腳本對系統進行測試。
    為本次仿真所涉及的模塊使用C++編寫,模塊相關的頭文件和源文件存放 在./src/network/model路徑下。模塊代碼包含了節點的行為以及包括交易速度、 仿真的交易總量、區塊打包間隔、區塊打包數量在內的參數設置。
    仿真腳本同樣適用C++編寫,存放在./scratch路徑下。仿真腳本對整個網絡 環境進行了構建,網絡的傳輸速率、延遲以及節點的數量都在仿真腳本中進行了 設置。
    模塊和腳本都開發完畢并放置在正確路徑后,使用./waf -run scratch/blockchain-simulator 命令進行編譯執行。執行產生的實驗數據直接輸出在 控制臺中。
    5.2性能實驗
    我們根據實際應用場景設置了如下的模擬參數: 在我們所模擬的實驗環境中,我們假設有 51 個節點參與共識,其中, 1 個 節點為認證中心節點,不提交交易,另外 50 個節點為服務提供商節點。各節點 之間的數據傳輸速率為1000Mps,數據傳輸有0-5ms的隨機延遲,節點間均為點 對點連接,采用Raft共識算法進行數據同步。區塊的最高打包間隔為0.5秒。所 有的交易都以恒定的速度發送。
    5.2.1實驗一
    我們首先針對不同的區塊打包數量和不同的交易速度進行了最大共識時間 的實驗。如圖5-1所示。圖中橫軸為交易速度,即每秒鐘Leader節點從各個節點 收到的交易數量,我們選取了 10 交易每秒到100 000交易每秒之間的共 11 種不
    同速度。縱軸為最大共識時間,在本例中為一筆交易從服務提供者節點開始向區 塊鏈提交到成功在區塊鏈上得到確認的最大時間,即每個區塊中最早提交的第一 筆交易被成功確認的時間。
    在區塊打包數量方面,我們選擇了 10和50進行模擬,分別用藍色和黃色表 示。以區塊打包數量10為例,Leader節點如果在最高打包間隔0.5秒內接收到 超過10 個交易包,則會直接進行區塊打包并同步到其他節點,并重置打包間隔 的計時。如果沒有,則新區塊會在上一個區塊生成0.5秒之后生成。
    0.6 | | | | | | | | | | |
    區塊打包數量訶 區塊打包數量50
    0.5
     
    10 20 50 100 500 1000 2000 5000 10000 50000 代5
    交易速度(交易/秒)
    圖 5-1 不同交易速度下的最大共識時間
    Fig. 5-1 Maximum consensus time at different transaction speed
    從圖5-1 中可以看到,當區塊打包數量為10且交易速度在20以下,和區塊 打包數量為 50 交易速度在 100 以下時,最大共識時間都在 0.5 秒左右,與區塊 打包間隔相等。可以看出,在交易速度較低,即每個打包間隔的交易數量不超過 區塊打包數量時,最大共識時間主要取決于區塊打包間隔。隨著交易速度的增加, 最大共識時間逐漸減少,最終穩定在0.022秒左右,達到極限。
    同時還可以看出,隨著區塊打包數量的增加,在相同的交易速度下,最大交
    易時間變長。但這并不意味著區塊打包數量越少越好。我們可以得知,在相同的 交易總量下,區塊打包數量越大,每個區塊所保存的交易數量就越多,所生成的 區塊數量也就越少,這樣可以提高區塊鏈網絡的效率。與此同時,更高的區塊打 包數量可以使得在更高的交易速度下才會達到極限共識時間,適合交易量更大的 應用場景。因此,在實際應用環境中,應根據交易的具體情況進行適當的參數設
    5.2.2實驗二
    為了對比了不同節點數量對共識效率的影響,我們進行了不同節點數量下,
     
     
    Fig. 5-2 Consensus time comparison of different node numbers
    其中,橫軸為交易包的序號。在本例中,我們使用 100 個交易進行測試。縱
    軸為單筆交易從發出到成功在區塊鏈上得到確認的用時。在本例中,區塊打包數 量為10,交易速度為500筆交易每秒,區塊打包間隔仍然是0.5秒。
    計算可知,根據本例中設定的交易速度, 0.5 秒有250筆交易產生(500 交 易/秒 寧0.5秒=250交易),遠超過區塊打包數量10。因此,Leader節點會每 收到10筆交易立即生成一個區塊。因此,可以看到圖中的折線呈鋸齒狀,每10 次交易產生一個低谷。在低谷的位置 Leader 節點完成一個區塊的打包,因此每 筆交易的交易用時根據在當前區塊中交易的時間先后逐漸下降。在本例中,我們 設置的節點數為 11/31/51/101/201,其中有 1 個節點為認證中心節點,認證中心 節點不提交交易。不同節點數量中,每筆交易的交易時間在21-48ms之間,可以 看出節點數量的增加會使交易時間產生微小的增加,但不會對區塊鏈效率產生明 顯影響。
    5.2.3實驗三
    我們針對基于智能合約的個人信息管理方法進行了仿真實驗。本次仿真采用
    了 10個節點,區塊打包間隔依然為0.5秒,區塊打包數量設置為1。
    我們設計了 4筆交易來測試三類智能合約的可行性。第一、二筆交易為交易 創建類,第三筆交易為交易失效類,第四筆交易為交易修改類。實驗結果如圖 5- 3至圖5-6所示。為了方便展示,我們用###KEY###ENCRYPTED===>»(X)代 表使用KEY對X進行加密后的數據。在實際應用中,這部分數據會以密文方式 顯示。
    Node 2 start election: 22 at time: 0.177s
    Node 2 become leader at time 0.191091s
    Node 7 start election: 27A[I?]at tine: 0.192s
    KEY=============I ISTATE=|fCONTENT======================================================================================| |NEXT=== ul_pub_keyl |jo 11###ul_pub_key###ENCR¥PTED===»>(lul_pub_keyspl_pub_keyname,idl603168262) |j 9
    Node 7 recleved transaction No. 1 at t ine 1.201s
    Node 8 recleved transaction No. 1 at t ine 1.201s
    Node 3 recieved transaction No. 1 at tine 1.202s
    Node 4 recleved transaction No. 1 at t ine 1.202s
    Node 2 recieved transaction No. 1 at t ine 1.203s
    Node 1 recieved transaction No. 1 at tine 1.205s
    Node 5 recieved transaction No. 1 at t ine 1.205s
    Node 6 recieved transaction No. 1 at tine 1.205s
    Node 9 recieved transactlon No. 1 at tine 1.205s
    Smart contract start send transaction No. 1 at t5e: 1.196s
    圖 5-3 Leader 節點選舉及第一筆交易結果
    Fig. 5-3 Result of Leader node election and transaction NO. 1
    圖5-3為Leader節點選舉及第一筆交易的結果。可以看到,2號節點在0.19 秒成為了 Leader節點,7號節點競選Leader節點失敗,成為了 Follower節點。 我們設計在第 1 秒時發送第一筆交易,第一筆交易為交易創建類,所涉及的智能 合約地址為1,交易雙方為用戶u1和服務提供商sp1,交易的條目為姓名和ID 編號。可以看到,在數據庫中存儲的該交易的鍵值為u1_pub_key1,為u1的公鑰 +交易生成時間 1 的組合;交易的當前狀態為 0,表示處于有效狀態;交易的內 容為使用 u1 的公鑰加密后的信息,被加密的信息內容依次為:智能合約地址 1、 用戶身份u1_pub_key、服務提供商身份sp1_pub_key、交易條目name與id、以 及由用戶個人信息內容生成的哈希值;下一筆交易為0,表示目前暫無下一筆交 易。
    在本例中使用的用戶具體個人信息為姓名 Tom, ID 編號 001。可以看到用戶 的具體個人信息不會在數據庫中展現出來,但該信息的哈希值 1603168262 被加 密存儲在數據庫中,可以作為存證使用,且不會泄露用戶隱私。
    交易在區塊鏈網絡中第1.196 秒開始執行共識,在第 1.214 秒全部節點共識 完成,共用時 0.018 秒。
    KEY=============||STATE=||CONTENT--------------------------------------------------------------------------------------||NEXT=== ul_pub_keyl ||9 ||###ul_pub_key###ENCRYPTED===>»(lul_pub_keyspl_pub_keynane,tdl603168262) ||9
    u2_pub_key2 |j 9 ||###u2_pub_key###ENCR¥PTED===»>(2u2_pub_keysp2_pub_keyname,phone-numbe rl!65279095) |j 9
    Smart contract start send transaction No. 2 at time
    Node 2 recieved transaction No* 2 at tine 2.291s
    Node 8 recieved transaction No. 2 at tine 2.202s
    Node 7 recieved transaction No* 2 at tine 2.203s
    Node 1 recieved transaction No. 2 at tine 2.294s
    Node 9 recieved transaction No* 2 at tine 2.294s
    Node 3 recieved transaction No. 2 at tine 2.295s
    Node 4 recieved transaction No. 2 at tine 2.205s
    Node 5 recieved transaction No* 2 at tine 2.205s
    Node 6 recieved transaction No. 2 at tine 2.205s
     
    Transaction NO. 2 has 1 nodes recieved at tine 2 .297s
    Transaction NO. 2 has 2 nodes recieved at tine 2 .209s
    Transaction NO. 2 has 3 nodes recieved at tine 2 .21S
    Transaction NO. 2 has 4 nodes recieved at tine 2 .21S
    Transaction NO. 2 has 5 nodes recieved at tine 2 .21S
    Transaction NO. 2 has 6 nodes recieved at tine 2 .212s
    Transaction NO. 2 has 7 nodes recieved at tine 2 .213s
    Transaction NO. 2 has 8 nodes recieved at tine 2 .213s
    Transaction NO. 2 has 9 nodes recieved at tine 2 .214s
    At t5e 2.214s leader successfully send transaction NO. 2
     
    圖 5-4 第二筆交易結果
    Fig. 5-4 Result of transaction NO. 2
    圖 5-4 為第二筆交易的結果。第二筆交易同第一筆交易類似,也是交易創建 類,我們設計在第2秒發送此交易。所涉及的智能合約地址為 2,交易雙方為用 戶u2和服務提供商sp2,交易的條目為姓名和電話號碼。可以看到,在數據庫中 存儲的該交易的鍵值為u2_pub_key1,為u2的公鑰+交易生成時間2的組合;交 易的當前狀態為 0,表示處于有效狀態;交易的內容為使用 u2 的公鑰加密后的 信息,被加密的信息內容依次為:智能合約地址2、用戶身份u2_pub_key、服務 提供商身份sp2_pub_key、交易條目name與phone-number、以及由用戶個人信 息內容生成的哈希值;下一筆交易為0,表示目前暫無下一筆交易。
    在本例中使用的用戶具體個人信息為姓名John,電話號碼為12345678901, 該信息的哈希,1165279095 被加密存儲在數據庫中。交易在區塊鏈網絡中第2.196 秒開始執行共識,在第2.214 秒全部節點共識完成,共用時 0.018 秒。
    KEY=============|ISTATE=||CONTENT======================================================================================||NEXT=== ul_pub_keyl |j1 |j ###ul_pub_key###ENCR¥PTED===»>(3ul_pub_keyspl_pub_keyname,tdl603168262) |19
    u2_pub_key2 j j 9 j j ###u2_pub_key###ENCRYPTED===>»(2u2_pub_keysp2_pub_keynane,phone-nunber1165279095) 110
    Smart contract start send transaction No. 3 at tine:
    Node 9 recieved transactlon No. 3 at tine 3.291s
    Node 2 recieved transaction No* 3 at tine 3.202s
    Node 7 recieved transaction No. 3 at tine 3.202s
    Node 3 recieved transaction No* 3 at tine 3.203s
    Node 1 recieved transaction No. 3 at tine 3.294s
    Node 4 recieved transaction No. 3 at tine 3.294s
    Node 6 recieved transaction No* 3 at tine 3.294s
    Node 8 recieved transaction No. 3 at tine 3.294s
    Node 5 recieved transaction No* 3 at tine 3.205s
     
    Transaction NO. 3 has 1 nodes recieved at tine 3.206s
    Transaction NO. 3 has 2 nodes recieved at tine 3.207s
    Transaction NO. 3 has 3 nodes recieved at tine 3.298s
    Transaction NO. 3 has 4 nodes recieved at tine 3.209s
    Transaction NO. 3 has 5 nodes recieved at tine 3.21S
    Transaction NO. 3 has 6 nodes recieved at tine 5.211S
    Transaction NO. 3 has 7 nodes recieved at tine 3.211S
    Transaction NO. 3 has 8 nodes recieved at tine 5.212s
    Transaction NO. 3 has 9 nodes recieved at tine 5.212s
    At t5e 3.212s leader successfully send transaction NO. 3
     
    圖 5-5 第三筆交易結果
    Fig. 5-5 Result of transaction NO. 3
    圖5-5為第三筆交易的結果。第三筆交易為交易失效類,我們設計在第3秒 時發送。該交易涉及的智能合約地址為3,主要目的為使第一筆交易產生的鍵值 為 u1_pub_key1 的交易記錄失效。可以看到,在交易執行后,該記錄的交易狀態 變更為1,即無效狀態,交易內容中加密保存的智能合約地址也變更為3。
    該交易在區塊鏈網絡中第 3.196秒開始執行共識,在第 3.212秒全部節點完 成共識,共用時0.016秒。
    KEY=============||STATE=||CONTFNT--------------------------------------------------------------------------------------||NEXT=== ul_pub_keyl j j1 ||###ul_pub_key###ENCRYPTED===>»(3ul_pub_keyspl_pub_keynane,tdl603168262) ||&
    u2_pub_key2 j j1 ||###u2_pub_key###ENCRYPTED===»>(2u2_pub_keysp2_pub_keynane,phone-nunberll65279095) 11u2_pub_key4
    u2_pub_key4 |jo ||###u2_pub_key###ENCRYPTED===»>(4u2_pub_keysp2_pub_keynane,phone-number,tdl8446744073699483182) ||9
    Snart contract start send transaction No* 4 at time: 4.196s
    Node 7 recieved transaction No. 4 at time 4.281s
    Node 6 recieved ansaetion No. 4 at t ime 4.202s
    Node 1 recieved transaction No. 4 at t ime 4.203s
    Node 3 recieved transaction No. 4 at t ime 4.203s
    Node 8 recieved transaetton No* 4 at t ine 4.203s
    Node 9 recieved transaetton No* 4 at t ime 4.203s
    Node 2 recieved transaction No* 4 at tine 4.294s
    Node 4 recieved transaction No* 4 at t ine 4.205s
    Node S recieved transaction No. 4 at t ime 4.205s
     
    Transaction NO.4 has 1 nodes recieved at t ime 4.208s
    Transaction NO.4 has 2 nodes recieved at time 4.208S
    Transaction NO.4 has 3 nodes recieved at time 4.209s
    Transaction NO.4 has 4 nodes recieved at t tme 4.21S
    Transaction NO. 4 has 5 nodes recieved at time 4.21S
    Transaction NO. 4 has 6 nodes recieved at t5e 4.211S
    Transaction NO. 4 has 1 nodes recieved at t tme 4.212s
    Transaction NO. 4 has 8 nodes recieved at time 4.212s
    Transaction NO.4 has 9 nodes recieved at time 4.213s
    At time 4.213s leader successfully send transaction NO. 4
     
    圖 5-6 第四筆交易結果
    Fig. 5-6 Result of transaction NO. 4
    圖5-6為第四筆交易的結果。第四筆交易為交易修改類,我們設計在第4秒 時發送。該交易涉及的智能合約地址為4,主要目的是修改第二筆交易產生的鍵 值為u2_pub_key2的交易記錄,追加一個ID編號的交易個人信息條目。
    可以看到,在交易執行后,首先鍵值為u2_pub_key2的舊交易記錄的交易狀 態變為1,即無效狀態,同時下一筆交易的部分顯示為u2_pub_key4,指向該交 易的下一個版本。同時可以看到,出現了一筆鍵值為u2_pub_key4的新交易,這 筆新交易就是該交易修改后的最新記錄。新交易的交易狀態為0,即處于有效狀 態。被加密的交易內容中,相比舊交易,交易地址變更為該交易修改類智能合約 的地址 4,交易條目追加了 ID 編號,個人信息內容的哈希值也由于交易的變更 產生了變化。
    該交易在區塊鏈網絡中第4.196 秒開始執行共識,在第 4.213 秒全部節點完 成共識,共用時 0.017秒。
    5.2.4實驗結果分析
    在本章進行的三個實驗中,前兩個實驗主要為測試該個人信息管理方法的共 識機制能否滿足實際應用場景下的交易性能要求,第三個實驗則模擬了基于智能 合約的個人信息管理方法的應用效果和可行性。
    在交易性能要求方面,由于缺乏有關用戶注冊行為的權威的統計數據,我們 采用估算的方法對目標性能進行設定。我們調查了中國目前使用人數最多的社交 App微信公布的用戶研究數據,微信用戶增速最快的2013年至2016年期間,月 活躍用戶量平均每年增長 1.77 億[66]。我們把這些增加的月活躍用戶作為這一年 時間內的新用戶注冊量來估算,平均每秒鐘有 5.61 位用戶注冊。我們假設每天 有三分之一的時間是它的注冊高峰期,因此我們使用它的 3 倍作為交易的需求 量,即每秒 16.83 個交易。在實驗一的仿真環境中,橫軸交易速度的數據顯示, 該方案可以輕易地容納數千個具有微信相同體量的服務提供商同時注冊用戶,并 且達到不超過0.51 秒的交易時間。同時,實驗二向我們展示了加入其中的節點, 即服務提供商數量的增加,不會顯著地影響共識的性能。因此,該方法能夠滿足 實際應用場景中的交易性能要求,具有一定的實用性。
    在實驗三中,我們包含三種智能合約類型的四筆交易結果顯示,該方法能夠 很好地將用戶與服務提供商之間的個人信息交易記錄在區塊鏈中,記錄不會因失 效或修改而丟失,用戶的個人隱私不會在區塊鏈上被泄露,該方法具有可行性。 同時,在 10 個節點的環境下進行的共識平均時長約為 17.25 毫秒,符合實驗二 中體現的共識時長的規律。
    5.3本章小結
    這一章中,我們進行了仿真實驗及其結果分析。首先,對實驗使用的 NS-3 網絡模擬器進行了簡介,并介紹了仿真環境搭建的細節。隨后,我們進行了兩個 針對共識機制的性能實驗,包括不同交易速度下的最大共識時間和不同節點數量 下的共識時間對比兩個實驗。之后,我們又針對智能合約的應用效果和其可行性 進行了仿真實驗。最后,經過對實驗結果結合實際進行的分析,證明本方法在性
    能上能夠滿足實際應用場景中的交易性能要求,具有一定的實用性。同時,應用 智能合約能夠在無需可信認證中心的前提下將用戶與服務提供商之間的個人信 息交易記錄在區塊鏈中,記錄不會因失效或修改而丟失,用戶的個人隱私不會在 區塊鏈上被泄露,具有可行性。
    結 論
    隨著信息時代的到來,越來越豐富的數字服務在便捷我們的生活的同時,也 使得個人信息在不經意間被眾多服務商所收集。諸如垃圾短信、騷擾電話等個人 信息濫用、盜用事件,使得個人信息保護問題逐漸成為人們關注的焦點。
    本文提出了一種基于區塊鏈的個人信息管理方法。不同于以往以防止信息泄 露為手段的信息保護方式,我們利用區塊鏈天然具有的不可篡改性,將用戶與服 務提供商的個人信息交易記錄在區塊鏈上。應用此方法后,用戶可以輕易地區分 使用了自己信息的服務提供商是合法的還是非法的,并能夠提供相關證據,有效 地遏制利用用戶舉證困難這一法律漏洞而盜用個人信息的犯罪行為。
    本文的主要創新性工作如下:
    (1)本文提出了一種基于可信認證中心的個人信息管理方法。該方法覆蓋 直接交易和第三方交易兩種應用場景,通過共計六個步驟的協議,完成了用戶與 服務提供商之間的個人信息交易,并將相關交易信息加密存儲在區塊鏈上。在本 方法中,包含用戶隱私的個人信息內容不會在區塊鏈上存儲或傳輸,加密存儲在 區塊鏈上交易信息只有擁有密鑰的交易相關方有權限查看,不會造成額外的信息 泄露風險。同時該方法也避免了個人信息中心化存儲可能造成的讀取性能問題。 該方法經過Kailar邏輯證明,交易完成后能夠留存足夠的證據來解決未來可能發 生的糾紛。該方法能夠滿足設計所需的安全性、可靠性、可追究性以及可用性, 實現個人信息管理保護的目的。
    (2) 進一步的,本文又提出了一種基于智能合約的個人信息管理方法。該 方法利用智能合約技術實現個人信息交易的創建、失效與修改,無需可信認證中 心的參與。由于區塊鏈具有不可篡改性,智能合約在區塊鏈上一經部署便無法修 改,部署在區塊鏈上的智能合約通過交易觸發并自動執行,公開透明地完成交易 過程。該方法中,個人信息以鍵值對的形式加密存儲在各個節點,交易的失效和 修改不會覆蓋完成過的交易信息,能夠保證個人信息交易記錄一經存儲在區塊鏈 上,不會被篡改或丟失,能夠有效地作為舉證憑證。
    (3) 本文首先利用 NS-3 模擬器進行了該方法的性能仿真,進行了兩個實 驗。實驗一測試了11種不同交易速度下的最大共識時間,實驗二進行了 5種不 同節點數量下的共識時間對比實驗。經過我們對需求的交易性能的調查和估算, 實驗結果證明了本方法能夠滿足實際應用場景中的交易性能要求,具有可用性。 隨后,我們又針對智能合約的應用效果和其可行性進行了仿真實驗。實驗結果顯 示,應用智能合約能夠在無需可信認證中心的前提下將用戶與服務提供商之間的 個人信息交易記錄在區塊鏈中,記錄不會因失效或修改而丟失,用戶的個人隱私 不會在區塊鏈上被泄露,具有可行性。
    未來的研究工作可以從以下幾個方面展開:
    (1) 本文提出的方法中,所有的服務提供商節點均參與共識。在大規模的 實際應用中,是選擇為了提升效率減少參與共識的節點數量,還是為了安全性保 持更多節點參與共識的設計,還有待進一步研究。
    (2) 本文提出了一種基于區塊鏈的個人信息保護方法。區塊鏈作為一個新 興技術,其在個人信息保護方面的應用還有待更多發掘。
    參考文獻
    [1]運行監測協調局.2019年通信業統計公報[R].北京:中華人民共和國工業和信息化部, 2020.
    [2]運行監測協調局.2019年互聯網和相關服務業運行情況[R].北京:中華人民共和國工 業和信息化部, 2020.
    [3]Armerding T.The 17 biggest data breaches of the 21st century[J].CSO online, 2018, 26.
    [4]Winder D . Unsecured Facebook databases leak data of 419 million users[EB/OL].Forbes.http://www.forbes.com/sites/daveywinder/2019/09/05/facebook-security- snafu-exposes-419-million-user-phone, 2019.
    [5]Patterson D, Kates G . We found our personal data on the dark web. Is yours there, too?[EB/OL] . https://www.cbsnews.com/news/we-found-our-personal-data-on-thedark-web-is- yours-there-too, 2019.
    [6]Armstrong D.My three years in identity theft hell[EB/OL].https://www.bloomberg.com /news/articles/2017-09-13/my-three-years-in-identity-theft-hell, 2017.
    [7]第44次中國互聯網絡發展狀況統計報告[R].中國互聯網絡信息中心(CNNIC), 2019: 67.
    [8]Zimmermann S . The Legal Framework of Data Protection in Israel: A European Perspective[J].Eur. Data Prot. L. Rev., 2019, 5: 246.
    [9]Libaque-Saenz C F, Wong S F, Chang Y, et al. The effect of Fair information practices and data collection methods on privacy-related behaviors: A study of Mobile apps[J].Information & Management, 2020: 103284.
    [10]王昕.我國個人數據保護立法問題初探[D].山東大學,2018.
    [11]General Data Protection Regulation[Z]. European Union, 2016.
    [12] 靳煒鈺.我國大數據背景下個人信息保護的法律研究[D].浙江大學,2018.
    [13]高富平.從電子商務法到網絡商務法一一關于我國電子商務立法定位的思考[J].法學, 2014(10): 138-148.
    [14]王雪琦.3?15晚會曝光手機APP泄露個人隱私信息,這只是冰山一角[N].中國企業家, 2019.3.
    [15]S. Nakamoto.Bitcoin: a peer-to-peer electronic cash system[J].2008.
    [16]Bae S H, Kim J.Personal Information Protection Model Based on Mobile Agent[C]//2010 Seventh International Conference on Information Technology: New Generations.IEEE, 2010: 719-724.
    [17]De Montjoye Y A, Shmueli E, Wang S S, et al.openPDS: Protecting the privacy of metadata through safeanswers[J].PloS one, 2014, 9(7).
    [18]Reagle J, Cranor L F.The platform for privacy preferences[J].Communications of the ACM, 1999, 42(2): 48-55.
    [19]Ashley P, Hada S, Karjoth G, et al.Enterprise privacy authorization language (EPAL)[J].IBM Research, 2003, 30-31.
    [20]Anderson A, Nadalin A, Parducci B, et al.extensible access control markup language (xacml) version 1.0[J].OASIS, 2003.
    [21]Ko H G, Kim S H, Jin S H.Usability enhanced privacy protection system based on users responses[C]//2007 IEEE International Symposium on Consumer Electronics.IEEE, 2007: 1-6.
    [22]Bekara K, Laurent M.Enabling user privacy in identity management systems[C]//2010 IEEE International Conference on Information Theory and Information Security.IEEE, 2010: 514-520.
    [23]Arunkumar S, Raghavendra A, Weerasinghe D, et al.Policy extension for data access control[C]//2010 6th IEEE Workshop on Secure Network Protocols.IEEE, 2010: 55-60.
    [24]徐雅斌,郭昊.面向數據發布的隱私保護模型及參數優選[J/OL].計算機工程:1-9[2020- 05-26].https://doi.org/10.19678/j.issn.1000-3428.0056305.
    [25] 劉振鵬,孫靜薇,王爍,王文勝,尹文召,張彬.PDMP:色個性化數據脫敏保護方法 [J/OL].計算 機應用 研究:1-4[2020-05-26] . https://doi.Org/10.19734/j.issn.1001- 3695.2019.06.0238
    [26]Cheng M H, Wu Y C, Chen M C. Television meets facebook: The correlation between tv ratings and social media[J]. American Journal of Industrial and Business Management, 2016, 6(03): 282.
    [27]Hammer-Lahav E, Recordon D, Hardt D. The oauth 1.0 protocol[R]. RFC 5849, 2010.
    [28]Hardt D. The OAuth 2.0 authorization framework[R]. RFC 6749, 2012.
    [29]Yang R, Li G, Lau W C, et al. Model-based security testing: An empirical study on oauth 2.0 implementations[C]//Proceedings of the 11th ACM on Asia Conference on Computer and Communications Security. 2016: 651-662.
    [30]Zyskind G, Nathan O. Decentralizing privacy: Using blockchain to protect personal data[C]//2015 IEEE Security and Privacy Workshops. IEEE, 2015: 180-184.
    [31]Rahmadika S, Rhee K H. Blockchain technology for providing an architecture model of decentralized personal health information[J] . International Journal of Engineering Business Management, 2018, 10: 1847979018790589.
    [32]Ji Y, Bae S, Shin Y. A personal information management using blockchain[C]//2019 International Conference on Information Networking (ICOIN). IEEE, 2019: 489-493.
    [33]紀露生,張桂玲,楊佳潤.基于區塊鏈的鏈下個人數據保護方案[J/OL].計算機工程: 1-10[2020-03-31]. https://doi.org/10.19678/j.issn.1000-3428.00.EC0057024.
    [34]Soe T,Mon S S,Thu K A.Performance Analysis of Data Encryption Standard (DES)[J].2019.
    [35]Mukhopadhyay D. Cryptography: Advanced Encryption Standard (AES)[J]. Encyclope dia of Computer Science and Technology, 2017, 279.
    [36]Naher N, Haque M M. Authentication of Diffie-Hellman protocol against man-in-the-middle attack using cryptographically secure CRC[C]//Proceedings of International Ethical Hacking Conference 2018. Springer, Singapore, 2019: 139-150.
    [37]Garg S, Rana M K. A Review on RSA Encryption Algorithm[J]. International Journal of Engineering and Computer Science, 2016, 5(7).
    [38]Thu K M, Hlaing K S, Aung N A. Time Performance Analysis of RSA and Elgamal PublicKey Cryptosystems[J]. 2019.
    [39]Gupta K, Silakari S. Ecc over rsa for asymmetric encryption: A review[J]. International Journal of Computer Science Issues (IJCSI), 2011, 8(3): 370.
    [40]Charlie Lee. litecoin[EB/OL]. https://litecoin.org/, 2011.
    [41]Jackson Palmer, Billy Markus. dogecoin[EB/OL]. https://dogecoin.com/, 2013.
    [42]Zooko Wilcox-OHearn . Zcash[EB/OL]. https://z.cash/, 2016.
    [43]Storj Labs, Inc. Storj: A Decentralized Cloud Storage Network Framework[R]. 2018.
    [44]Augur Inc. Augur[EB/OL]. https://www.augur.net/, 2015.
    [45]Amir Taaki. OpenBazaar[EB/OL]. https://openbazaar.org/about/, 2016.
    [46]SWAN M. Blockchain: blueprint for a new economy[M]. USA: O'Reilly Media Inc, 2015.
    [47]Buterin V. A next-generation smart contract and decentralized application platform[J]. white paper, 2014.
    [48]HYPERLEDGER. About the hyperledger project[EB/OL]. https://www.hyperledger.org/ about.
    [49]蔣勇.白話區塊鏈[M].機械工業出版社,2017.
    [50]Merkle R C. Protocols for public key cryptosystems[C]//1980 IEEE Symposium on Security and Privacy. IEEE, 1980: 122-122.
    [51]Castro M, Liskov B. Practical Byzantine fault tolerance and proactive recovery[J]. ACM Transactions on Computer Systems (TOCS), 2002, 20(4): 398-461.
    [52]Lamport L. The part-time parliament[M]//Concurrency: the Works of Leslie Lamport. 2019: 277-317.
    [53]Lamport L. Paxos made simple[J]. ACM Sigact News, 2001, 32(4): 18-25.
    [54]Ongaro D, Ousterhout J. In search of an understandable consensus algorithm[C]//2014 {USENIX} Annual Technical Conference ({USENIX}{ATC} 14). 2014: 305-319.
    [55]Szabo N. Smart contracts: building blocks for digital markets[J]. EXTROPY: The Journal of Transhumanist Thought, (16), 1996, 18: 2.
    [56]RICHARD G BROWN. A SIMPLE MODEL FOR SMART CONTRACTS[EB/OL]. h ttps://gendal.me/2015/02/10/a-simple-model-for-smart-contracts/, 2015.
    [57]https://baike.baidu.com/item/%E5%AE%89%E5%85%A8%E5%8D%8F%E8%AE%AE/23 1526?fr=aladdin
    [58]Burrows M, Abadi M, Needham R M. A logic of authentication[J]. Proceedings of the Royal Society of London. A. Mathematical and Physical Sciences, 1989, 426(1871):
    233-271.
    [59]Gong L , Needham R M , Yahalom R . Reasoning about Belief in Cryptographic Protocols[C]//IEEE Symposium on Security and Privacy.1990:234-248.
    [60]Mao W, Boyd C. Towards formal analysis of security protocols[C]//[1993] Proceedings Computer Security Foundations Workshop VI.IEEE,1993:147-158.
    [61]Abadi M,Tuttle M R.A semantics for a logic of authentication[C]//Proceedings of the tenth annual ACM symposium on Principles of distributed computing.1991:201-216.
    [62]Van Oorschot P . Extending cryptographic logics of belief to key agreement protocols[C]//Proceedings of the 1st ACM Conference on Computer and Communications Security.1993:232-243.
    [63]Syverson P F , Van Oorschot P C . On unifying some cryptographic protocol logics[C]//Proceedings of 1994 IEEE Computer Society Symposium on Research in Security and Privacy.IEEE,1994:14-28.
    [64]Kailar R.Accountability in electronic commerce protocols[J].IEEE Transactions on software engineering,1996,22(5):313-328.
    [65]馬春光,姚建盛.ns-3網絡模擬器基礎及應用[M].人民郵電出版社,2014.
    [66]企鵝智酷.微信2017用戶研究和商業機會洞察[EB/OL]. https://tech.qq.Com/a/2017042 4/004233.htm#p=1, 2017.
    【本文地址:http://www.bzhlmm.com//guanlilei/gongshangguanli/xixinguanli/8843.html

    上一篇:基于區塊鏈的商品混凝土 供應鏈信息管理研究

    下一篇:沒有了

    相關標簽: