陳麗燕,芮廷先,呂光金
(上海財經大學浙江學院 經濟與信息管理系,浙江 金華 321013)
隨著信息技術的不斷發展,我國數字政府建設取得明顯進步,正朝著智能化、平臺化的方向快速邁進。在2018年,浙江省委省政府就已做出了建設數字化政府的重大戰略部署,其中很重要的一個方面就是社會信用體系的建設,通過加快構建以信用為核心的社會信用評價體系,推進政府數字化辦公,營造良好信用環境。政府數字化轉型的過程中需要形成數據共享,整合跨部門、跨區域的數據建立健全的社會信用體系[1],但在社會信用體系的建設過程中存在個人隱私泄露的情況,因此個人信息的隱私保護是亟需解決的問題[2]。
近年來,區塊鏈技術得到快速發展,由于其使用多種密碼學核心技術,如橢圓曲線加密算法、抗量子加密算法[3]等,具有相對安全、去中心化等特性,因此將其應用到隱私保護方面的研究越來越多[4-6]。文獻[7-8]提出將區塊鏈技術應用到個人征信制度中。文獻[9]提出結合區塊鏈和大數據來構建信用體系,通過整合各類地方數據克服傳統信用體系的弊端。文獻[10]將區塊鏈技術應用到知識產權保護領域,利用區塊鏈共識機制提出一個知識產權隱私保護模型。文獻[11]將區塊鏈技術用于電子健康記錄隱私方面,提出一個電子健康記錄隱私保護方案。文獻[12]將區塊鏈技術應用到醫療數據中,實現各醫療機構間的數據共享。但由于目前數字化政府建設仍處于起步階段,社會信用體系建設也在籌備過程中并未投入使用,因此針對社會信用體系建設的個人征信隱私保護方面的研究相對較少,而將區塊鏈技術應用到個人征信隱私保護這一領域的研究則具有非常高的研究價值及實用性。為此,本文基于區塊鏈智能合約提出個人征信隱私保護方案。
區塊鏈起源于比特幣[13],其是一種按照時間順序將數據消息以區塊的形式組織處理并以密碼學方式保證數據不可篡改、不可偽造的分布式賬本(數據庫)技術。區塊鏈主要的底層技術包括密碼學相關技術、共識機制、智能合約、分布式存儲等。區塊鏈技術是多種計算機技術相結合的產物[14],本質上是一種去中心化的分布式賬本數據庫技術,其將數據區塊以順序相連的方式組合成一種鏈式數據結構,通過點對點網絡共享數據賬本,底層是由密碼學方法產生的一串串相關聯的數據塊。所有的參與節點共同維護區塊鏈,其中每個節點會與相鄰節點定期交換信息,從而保證全局賬本信息的同步性。因此,區塊鏈技術具有去中心化、去信任化、規則透明、集體維護、不可篡改等特性[15]。為使各節點的隱私數據不被竊取,區塊鏈技術使用數據簽名算法保護隱私,如橢圓曲線簽名算法、抗量子密碼算法、環簽名算法等。
1.1.1 共識機制
區塊鏈技術采用共識機制來確保每個節點都有一個唯一公認的全局賬本[16],共識機制主要負責選取并驗證相關節點。共識機制保障了區塊鏈信任建立的去中心化,常見的共識機制包括Proof of Work[17-18]、Proof of Stake[19-21]、Proof of Space[22]、Proof of Luck[23]、Proof of Elapsed Time[24]、Delegated Proof of Stake[25]、Proof of Useful Work[26]、聯盟鏈Quorum[27]等。本文方案利用區塊鏈技術共識機制中的聯盟鏈Quorum共識算法建立信任方案。該算法基于投票機制,規定部分節點具有投票權,并要求節點要達到一定的投票量才能夠被添加到區塊鏈中。
1.1.2 以太坊
以太坊是一個可以執行智能合約的去中心化應用平臺。以太坊虛擬機(Environment Virtual Machine,EVM)是以太坊中智能合約的運行環境,支持復雜的邏輯控制,其實質是交易消息轉移系統。在智能合約調用過程中,由于每個節點都會進行信息交易,因此全節點進行信息交易會付出巨大的合約執行代價,該代價以gas作為單位計數,上限為gas limit,只有當消耗總數小于gas limit時,交易才會被執行,否則交易失敗。
1.1.3 智能合約
目前,業界對智能合約沒有統一的定義,BUTERIN[28]指出智能合約是一套以數字形式定義的承諾,包括合約參與方可以在上面執行這些承諾的協議,以太坊的智能合約是以區塊鏈技術為支撐的數字信息程序。SZABO[29]指出智能合約是一種可以執行合約條款的計算機交易協議,由于智能合約的本質是程序代碼,其中涉及到一些算法和商業邏輯,其將現實應用過程中的復雜關系程序化,只要投入使用即可實現自動化執行,而區塊鏈技術為實現智能合約提供了必備條件[30]。
1.2.1 同態加密
同態加密是一種允許直接對密文進行操作的加密變換技術[31]。例如,兩個密文M(x)、M(y)滿足M(x)?M(y)=M(x?y)計算公式,其中?表示加減乘除運算,因此將同時滿足加減乘除的同態運算稱為全同態加密。
1.2.2 Paillier同態加密
PAILLIER于1999年提出概率公鑰加密系統,稱為Paillier加密[32]。Paillier加密是一種同態加密算法,其基于復合剩余類的困難問題,滿足加法和數乘同態。該算法的具體過程如下:


3)接收者對收到的密文c進行解密,計算m=D(c)=L(cλmodn2)·μmodn得到明文。
本節介紹基于區塊鏈智能合約的個人征信隱私保護方案,具體包括征信系統模型和智能合約,同時介紹本文方案涉及的訪問節點添加、節點權限設置和條件匹配等具體操作。
本文征信系統模型如圖1所示,其中主要包括征信個人、區塊鏈征信系統、征信訪問用戶和征信信息提供商。

圖1 征信系統模型
1)征信個人
在社會信用體系的建設過程中,現已對企業、自然人、社會組織、事業單位、政府機構這5類主體的信用信息完成歸集,建立信用檔案并集合數據特征開展公共信用評價,本文中統一將這5類主體稱為征信個人。征信個人可以通過智能合約查看自己的征信信息,對于部分符合權限的信息,征信個人可以更改其他用戶對這些信息的訪問權限,實現征信個人對自己征信信息的訪問控制權。
2)區塊鏈征信系統
在一個完整的社會信用體系中,除了征信個人,還應包含征信平臺,即社會信用體系中整合數據的系統,在此使用區塊鏈技術進行數據整合,其中投票節點是征信系統內部節點,用于驗證節點的合法性。
3)征信信息提供商
在整合各方數據的過程中,將這些數據的提供者稱為征信信息提供商,主要包括事業單位、社會組織、政府機構這3類主體,在此征信信息提供商不是特定的某個節點而是一批節點,其需要接入政府征信系統的各部門,如交管部門提供的交通違章信息、銀行系統提供的個人信貸信息、通信部門提供的個人通信信息、稅務部門提供的個人稅務信息、公安系統提供的個人信息等。征信信息提供商向征信系統提供個人征信信息。
4)征信訪問用戶
征信訪問用戶是指由于某種原因需要通過征信系統查詢個人征信信息的主體,征信訪問用戶包含和征信個人一樣的5類主體。
在該征信系統模型中,所有個人征信信息都存在征信系統的數據庫中,征信系統會將對稱加密秘鑰和征信個人的部分信息存到區塊鏈中以供訪問,征信個人可以通過區塊鏈的智能合約技術獲取征信信息的訪問權限,利用智能合約技術獲取加密秘鑰對征信信息進行解密。投票節點使用聯盟鏈Quorum算法判斷新節點的合法性。
政府在征信系統的建設過程中完成數據的歸集,征信信息提供商通過數據接口將數據歸集到區塊鏈征信系統中。人們在生活中也經常會用到征信系統的數據,如用戶A需要向銀行B提出貸款申請,此時銀行B只需向征信系統查詢用戶A的征信信息即可判斷是否批準這筆貸款申請。在這一過程中,用戶A就是征信個人、銀行B就是征信訪問用戶。
本文方案中涉及的智能合約主要具有共識判斷、節點分類、歷史信息記錄、所有權判斷、權限設置和條件匹配等功能,具體如下:
1)共識判斷合約。共識判斷合約中包含投票節點的以太坊地址,其利用聯盟鏈Quorum算法進行共識判斷。Quorum算法是在區塊鏈上對節點進行投票以判斷合法性的算法,一旦發現有新節點加入,投票節點就會驗證注冊節點的合法性,因此該功能可以減少惡意注冊攻擊,有效避免重復注冊的情況。
2)節點分類合約。節點分類合約中包含所有節點的類別信息,在本文方案中節點類型包括征信個人、征信系統、征信訪問用戶3種,因此共識合約可以驗證節點的合法性,而分類合約可以區分節點類型,合約中包含類型標志和節點以太坊地址。
3)歷史信息記錄合約。歷史信息記錄合約中包含與該節點有關的其他節點信息,還包含所有權合約的地址。
4)所有權判斷合約。所有權判斷合約中存放了征信個人的身份信息和征信信息,同時存放了權限合約的地址。所有權合約可以跟蹤到征信系統中的征信信息,還可以通過查詢鏈和征信個人的哈希值建立數據的完整性映射。
5)權限設置合約。權限設置合約中存放了節點權限有關的信息,根據節點類型及具體信息定義相關權限。本文方案將征信系統與實際使用情況相結合劃分4個級別的權限:
(1)讀取權限,征信個人和征信系統具有征信個人征信信息讀取權限。
(2)所有權權限,征信個人和征信系統具有征信個人征信信息的所有權權限,該權限級別最高。
(3)寫入權限,征信信息供應商具有征信信息的寫入權限。
(4)盲讀取權限,征信訪問用戶只能讀取征信個人征信信息的密文。
6)條件匹配合約。條件匹配合約中包含征信個人的部分征信信息和征信訪問用戶的條件表,并且能根據條件表實現自動條件匹配功能。其中征信個人的信息包括以太坊地址、條件匹配的計算結果、征信消息的哈希值、加密后的征信個人信息等。
該智能合約的功能類似于征信個人向銀行提出貸款申請,銀行需要對貸款用戶的條件進行審核,此時銀行為征信訪問用戶,銀行通過訪問條件匹配合約中的計算結果并將其發送給條件匹配合約,若符合條件,則銀行會得到條件匹配成功的結果,批準貸款申請;若條件不符合,則拒絕申請。在此銀行方無法得知申請個人的征信具體明文信息。
添加征信訪問用戶的具體步驟如下:
1)征信訪問用戶向征信個人提出訪問請求,同時將自己的以太坊地址發送給征信個人。
2)征信個人批準請求,將以太坊地址發送給節點分類合約。
3)節點分類合約在數據庫中查找該地址,如果已經存在且類別一樣,則操作完成;否則節點分類合約將該地址發送給共識判斷合約,共識判斷合約會對此進行投票驗證。
4)若投票驗證成功,則訪問節點添加完成,否則添加失敗。
為保護征信個人的征信信息隱私權,征信訪問用戶不能獲取征信個人的征信信息明文,只能具有讀取征信信息密文的權限,即盲權限。在一般情況下,征信個人具有征信信息的所有權,任何形式的權限授權都需要經過征信個人的同意。
授權過程如圖2所示,具體步驟如下:
1)征信訪問用戶先向征信個人發起授權請求。
2)征信個人收到申請后向歷史信息記錄合約查詢訪問節點的權限。
3)歷史信息記錄合約將所有權判斷合約信息發送給征信個人。
4)征信個人向所有權判斷合約申請權限設置合約地址。
5)所有權判斷合約將權限設置合約地址發送給征信個人。
6)征信個人向權限設置合約發起更改權限請求。
7)權限設置合約在收到修改權限請求后,先查詢節點信息:如果不存在該節點信息,則在合約中保存該征信訪問用戶的相關信息,包括地址和權限;如果節點已經存在,則比較權限是否與請求權限相同,權限不同更新權限,否則無需操作。更改權限的申請者可以是征信系統,但對于某些征信信息,征信系統需要先詢問征信個人的意愿才能更改征信訪問用戶權限。

圖2 授權過程
為解決傳統征信信息核實過程中征信訪問用戶需查看征信個人的征信信息明文問題,本文提出一種基于區塊鏈的條件自動匹配方案。該方案利用Paillier同態加密算法使得征信訪問用戶持有密鑰對。在該方案中,征信訪問用戶會根據征信個人的申請情況創建特有的征信條件申請表,為保證合約信息的不可篡改性,征信條件申請表一旦創建就無法改變,如果要調用條件匹配合約,則需要知道合約地址。
在條件匹配過程中,征信訪問用戶僅與征信系統、條件匹配合約進行交互。下文以征信個人向銀行提出申請為例解釋條件匹配過程,其中,征信個人為貸款申請人,銀行為征信訪問用戶,并且假設政府征信平臺已經建設完成,所有個人用戶的征信信息已匯總于征信系統,具體匹配步驟如下:
1)貸款申請人向銀行提出貸款申請,銀行根據申請人申請的貸款金額生成貸款申請條件表。
2)銀行向征信系統提出訪問個人征信信息的請求。
3)征信系統向征信個人確認銀行訪問權限,在得到征信個人授權后,征信系統響應請求。
4)銀行將貸款申請條件表加密為密文E(M1),E(M2),…,E(Mn)的形式,再將密文發送給征信系統。
5)征信系統創建條件匹配合約,計算由對稱加密密鑰加密的征信信息的哈希值,通過E(M1)×E(M)-1,E(M2)×E(M)-1,…,E(Mn)×E(M)-1計算密文匹配結果,并將結果亂序放入數組A[n]中,將征信個人的以太坊地址、計算的哈希值和數組A[n]存入條件匹配合約中。
當條件匹配合約建立完成后,銀行訪問條件匹配合約獲取數組A[n]中的計算結果,使用私鑰進行解密,如果解密結果為0,則表示兩個明文相同,符合貸款條件,同意貸款申請;否則表示貸款申請人不符合貸款條件,拒絕貸款申請。由于計算結果是亂序存放于數組A[n]中,因此銀行無法得知哪些條件匹配與失配,保護了征信個人的征信信息隱私。
當征信訪問用戶從條件匹配合約中獲取數組A[n]后,可使用私鑰對數組內的數據進行解密以驗證數據的正確性。
由于本文方案中使用的是同態加密算法,因此征信訪問用戶使用私鑰可以解密成功,具體證明過程如下:E(M)×E(M1)=(gm×rn1)×(gm1×rn2)-1
modn2=(gm-m1×gn1-n2)modn2=E(M-M1),因此,若M=M1,則D(E(M)×E(M1)-1)=D(M-M1)=0,從而驗證了本文方案的正確性。
由于征信訪問用戶無法得知征信個人條件表上的征信信息,其原因為征信系統是將征信訪問用戶所訪問的計算結果亂序發回給征信訪問用戶,若要得到明文是非常困難的,再加上結果為亂序存儲于數組A[n]中,即使能獲得明文的概率也只有1/n(n為征信個人申請表上的征信信息條數),因此本文方案的安全性非常高。
由于Paillier加密算法是安全的,若沒有私鑰則無法從E(Mi)中獲取關于Mi中的任何一條明文信息,否則合數剩余類困難問題可解將與之相矛盾,因此征信系統無法利用E(M1),E(M2),…,E(Mn)推斷出征信訪問用戶設置的條件申請表中的明文信息M1,M2,…,Mn。
在本文方案中征信個人的征信信息只有存儲方已知,征信系統中的所有明文消息其他任何一方都無法得知。對于征信個人無權限的征信信息,征信個人無法得知。對于征信訪問用戶,只有在征信個人同意授權的情況下,才具有訪問權限,并且在訪問相對應征信信息的過程中,只能得到征信個人相對應征信信息的一個比對結果,無法得知具體的征信信息,因此保護了征信個人的征信信息隱私。此外,征信系統無法通過征信訪問用戶的訪問申請表推斷出征信訪問用戶所查詢的征信信息內容,也無法得知征信個人出于何種目的查詢征信信息,因此保護了征信個人的隱私。綜上所述,本文方案可以從多個角度保護征信個人的征信信息隱私。
本文方案在建立自動條件匹配合約時,在區塊鏈外的主要操作是征信訪問用戶申請,征信平臺使用同態加密計算,其運行成本較低。在區塊鏈上的操作主要是合約數據存儲與檢索,而數據的合約執行代價gas由所操作的數據大小決定,其代價小于gas limit的一半,因此合約交易能夠執行,驗證了本文方案具有較低的運行成本。
本文基于區塊鏈的智能合約技術,提出個人征信隱私保護方案,具體包括征信系統模型和智能合約設計,同時分析本文方案所涉及的訪問節點添加、節點權限設置等具體操作。通過對征信個人隱私的多方保護,實現征信訪問用戶條件的自動匹配。由于本文方案涉及合約較多,因此后續將通過加強消息轉移過程中的隱私保護以及提高同態加密算法的執行效率,進一步優化該方案的整體運行效率。