范勛峰,楊文梯,關志濤
(華北電力大學 控制與計算機工程學院,北京102206)
2020 年,新冠疫情的爆發不但造成了全球范圍內的公共衛生危機,也給全球經濟造成了嚴重的損失。盡管當前疫情已經得到有效控制,但如何適應疫情下新常態的生活、防止疫情再次爆發并為下次突發的公共衛生危機做好準備,仍是當前面臨的主要難題[1]。因此,政府機構以及相關的領域的專家學者都在積極地尋找相關的解決方案以管理傳染病傳播的風險。
疫情爆發時,傳染病風險管理中最主要的工作是確定傳染病風險區域。當出現感染者時,防控人員需要獲取感染者及其密切接觸者的行程信息以確定被調查群體到訪過的地點并標記這些地點為風險區域進行預警。當前,確定風險區域主要采用的是接觸者追蹤策略。醫務人員通過感染者的自述以及監控設備確認的方式獲取風險區域。該策略雖然在疫情期間發揮了巨大的作用,但卻嚴重依賴感染者的記憶力或者其是否誠實,并且具有極大的滯后性。為提升獲取風險區域的效率,科研人員利用移動設備設計了更加信息化、智能化的傳染病風險管理方案。信息化的傳染病風險管理方案優化了當前的接觸者追蹤策略,實時收集用戶信息并利用收集的數據確定風險區域。但是,當前的風險管理方案缺乏安全性與透明性。應用程序需要收集用戶的敏感信息,在信息存儲與信息處理過程中隱私信息存在被竊取或者被篡改的可能,嚴重威脅用戶人身財產安全與社會公共安全。同時,當前設計的智能化的應用程序專注于檢測接觸感染,忽略了聚集性人群的傳染風險,且由于計算開銷較大,無法大規模應用,尤其是無法應用到對物品的監測。
區塊鏈技術[2]由于其去中心化、防篡改、可追溯[3]等特點可以有效解決在信息收集、信息存儲過程中出現的隱私安全問題。在信息處理過程中,同樣會出現隱私泄露等問題。為解決此類問題,本文引入了隱私集合計算技術(Private Set Operation,PSO)。隱私集合計算技術是一種針對集合運算的保密計算方案,主要包括隱私集合求交(Private Set Intersection,PSI)以及隱私集合求并(Private Set Union,PSU),利用隱私集合計算技術解決在信息處理過程中出現的隱私數據泄露、效率低下等問題。因此,本文設計了一種基于區塊鏈技術的傳染病風險管理方案,該方案主要有以下三點創新:
(1)提出一種多方參與、適用于輕量級節點執行的隱私集合計算方法,對隱私數據進行處理,以實現對傳染病風險的管理。在集合運算過程中,參與計算的輕量級節點只需進行簡單的計算并反饋給云平臺,由云平臺對信息進行處理。提出的集合運算方法既能夠進行交集運算也可以進行并集運算,并降低了計算的開銷。
(2)方案利用Pedersen 承諾設計一種可以保護用戶隱私的數據存儲方式,并降低了存儲的開銷。同時,利用Pedersen 承諾記錄數據可以在不暴露用戶隱私的情況下對風險區域進行分析。
(3)基于聯盟區塊鏈提出一種能夠高效執行的區塊鏈共識算法,并根據記錄信息的不同對區塊進行標識。
新冠疫情的爆發為社會帶來了巨大的損失,同時也考驗著一個城市、國家的治理水平[4]。許多研究機構和相關科研人員在疫情爆發后一直在研究如何更好地防控疫情,以將損失降到最低。文獻[5]對疫情防控過程中使用的接觸者追蹤技術以及當前面臨的挑戰進行了全面總結,并指出了未來工作的方向。當前針對傳染病的風險管理方法面臨的主要難題是無法有效保證用戶的隱私,文獻[6]明確指出了當前主流的風險管理方案在隱私保護上的缺陷:新加坡政府提出了基于藍牙技術的集中式的接觸者追蹤應用程序——TraceTogether[7],該方案在信息存儲以及信息處理過程中無法保證數據的隱私,易遭受攻擊并產生錯誤的信息。Google 以及蘋果公司共同開發的Contact Tracing[8]以及英國政府提出的NHS Contact Tracing[9]應用程序也采用了藍牙技術,雖然沒有采用中心化的數據存儲方式,但仍需中心化的服務器來處理數據,中心化的服務器可以獲取到用戶的隱私信息,這增加了隱私泄露的風險。中國的醫療體系[10]采用的是二維碼技術來應對疫情,整個系統采用的是中心化的信息處理方法,無法有效地保護用戶隱私。
當前,疫情防控中產生的用戶隱私安全問題已經得到科研人員的關注,尤其是大數據的廣泛應用[11],導致用戶的隱私安全難以得到保證。為防止應用程序在收集、存儲以及處理數據的過程中造成用戶隱私泄露,科研人員在原有防控策略的基礎上進行改進。文獻[12]采用霧計算技術以及中心化信息處理方法設計了一個追蹤并阻止疫情傳播的框架。文獻[13]利用通話明細記錄以及接觸風險通知系統對接觸者進行追蹤。基于區塊鏈技術去中心化、不可篡改、可追蹤的特性,部分科研人員將區塊鏈技術融入到疫情防控系統中[14],并設計出了可以保護隱私的接觸者追蹤框架[15]以及風險管理方案[16]。但是,當前的傳染病風險管理方案仍沒有解決如何在保護用戶隱私的情況下快速獲取風險區域,尤其是在出現物傳人的情況下如何降低計算開銷使得輕量級設備能夠大規模應用,以實現對移動物品進行監測[17]。
本文基于區塊鏈技術設計了一種傳染病風險管理方案。方案設計了一種隱私集合計算方法對隱私信息進行處理,并利用存儲承諾的方式對數據進行存儲,在保護用戶隱私的前提下快速獲取風險區域。
為保護用戶隱私數據安全,本文利用區塊鏈技術構建傳染病風險管理方案。同時,為解決移動設備存儲空間有限,信息處理效率低下等問題,在方案中融入了云計算技術。本文提出的框架如圖1 所示,包括管理層、區塊鏈層、云服務層以及數據收集層。

圖1 方案框架圖
(1)管理層:對整個系統進行維護并參與區塊鏈共識。當出現感染患者或者疑似感染者時,管理員發起計算并分析區域風險狀況。
(2)區塊鏈層:負責對收集的數據以及公布的信息進行存證,防止用戶對數據進行惡意篡改,保障隱私數據安全。
(3)云服務層:提供空間用以存儲收集到的海量數據,并處理上傳到云中的數據。
(4)數據收集層:包括手機、運動手環、傳感器等移動設備。移動設備實時記錄用戶行程信息并對數據進行簡單的處理。
本文提出的方案通過移動設備收集行程信息,使用云平臺存儲數據并進行信息處理。為保證數據的安全性,本文采用乘法同態加密算法對數據進行加密,以最常用的乘法同態算法ElGamal 為例。由于云平臺存在信息泄露、數據被篡改的風險,本文利用區塊鏈技術保證數據的安全。接下來,將對所提出的方案進行詳細說明:
(1)初始化:系統管理員輸入安全參數λ,使用ElGamal 同態加密算法的密鑰生成算法KeyGen,得到系統公共參數以及公私鑰對(pk,sk)。管理員保管私鑰,并公布系統參數以及公鑰。根據防控細粒度的需要,管理員們協商確定地點的范圍大小,確定地點全集中的元素,最終可以得到關于地點的全集U={u1,…,um}(m是全集中元素的個數)。
(2)數據收集:數據收集是方案實施的基礎。移動設備實時收集用戶的行程信息,包括用戶到達的地點、時間等。移動設備在收集的信息后,將信息存儲在本地。為方便介紹,設定在某一被調查群體中有n個成員,每個成員Pi(i=1,…,n)根據收集到的信息以及全集U,得到自己的行程地點集合Ui(i=1,…,n)。同時,移動設備根據收集到的數據生成相應的承諾,并定期上傳到云端。
(3)發起計算:當出現感染者時,管理員為獲取密切接觸者群體訪問過的地點發起計算。管理員使用公共參數、隨機數以及公鑰pk 對明文空間中的單位元e進行加密,得到Enc(e),由于選擇的隨機數不同,每次加密得到的Enc(e)也是不同的。管理員將計算請求和加密后的結果Enc(e)直接發送到被調查群體的移動終端。
(4)請求應答:管理員發起計算請求后,移動設備根據收集到的數據返回相應的結果。移動設備接收到管理員的計算請求后對請求進行驗證,如果計算請求驗證違法則計算直接結束。移動設備根據自己的行程集合Ui以及接收到的Enc(e)構造自己的響應向量Ri。全集U的元ul(l=1,…,m)屬于行程集合Ul時,Pi選擇密文空間中的隨機數加入到響應向量Ri中。當元素ul不屬于集合Ui時,Pi將Enc(e)添加到響應向量Ri中,最終Pi得到響應向量Ri。響應向量的編碼方法如圖2 所示。

圖2 編碼流程圖
移動設備無法直接將生成的應答向量發送給管理員或者上傳到云中,其他參與計算的用戶可以通過應答向量直接推測出某一用戶的行程。方案通過拆分應答向量的方法保護用戶隱私。移動設備將應答向量拆分成s(s≤n)份。Pi將應答向量Ri中的每一個分量ril拆分成s份。Pi選擇s個隨機數r1,…,rs,保證:

其中,p為ElGamal 同態加密算法選取的大素數。Pi隨機選擇某一個隨機數(以r1為例)與應答向量中的分量ril相乘得到拆分后的一份(ril)1=r1·ril,其他隨機數分別代表其他份數。最終,Pi將分量ril拆分成s份,得到(ril)1,…,(ril)s。移動設備將所有的分量進行拆分,對于不同的分量,Pi可以選擇s個不同的隨機數以防止惡意攻擊。
應答向量中的每一個分量都被拆分成s份。Pi每次從每個分量中取出不同的一份,一共執行s次。最終,Pi得到s個新的向量Ri1,…,Ris。Pi將s個新生成的向量發送給不同的參與者,也可以自己保留其中的一份。每個參與者都無法獲取完整的向量信息,即使其擁有私鑰也無法解讀到任何信息。
一個移動設備向其他參與者發送向量的同時,其也在接收其他參與者發來的信息。每個參與者收到的向量數量是不同的。參與者Pi將所用接收到向量對應的分量分別相乘,得到混淆處理后的向量到云中進行下一步處理。
(5)信息處理:信息處理是集合計算開銷最大的階段。計算開銷將隨著參與者數量以及向量長度的增加而大幅提高,選擇利用云平臺強大的信息處理能力對這些數據進行處理。

云平臺計算得到向量R=(r1,…,rm)并將計算結果返回給管理員。
(6)結果解密:從云平臺接收到結果向量R后,管理員使用私鑰對向量中的每個分量進行解密,并獲得解密后的向量R′。通過解密后的向量R′,管理員可以獲取到密切接觸者群體訪問地點的并集。當向量R′中的分量等于e時,則并集中不包括該分量對應的地點;當R′中的分量不等于e時,則并集包括該分量對應的地點。得到計算結果后,管理員可以對風險區域進行進一步分析并進行預警。
本文提出的隱私集合計算方法不但能夠計算集合的并集,同樣也能計算集合的交集。當需要計算集合的交集時,則改變應答向量的編碼方式:全集U中的元素ul屬于行程集合Ui時,Pi將Enc(e)添加到響應向量中;元素ul不屬于集合Ui時,Pi選擇密文空間中的隨機數加入到響應向量Ri中。此時,解密后向量R′中的分量等于e時,則交集中包括該分量對應的地點; 當R′中的分量不等于e時,則交集不包括該分量對應的地點。
在執行風險管理時,移動設備需要實時采集數據并進行存儲。收集到的數據可以存儲在本地,但本地存儲的數據存在以下問題:
(1)移動設備存儲空間有限。移動設備中可能包括大量的輕量級節點或者存儲空間有限的設備。這些設備不能存儲大量的數據,或者用戶不想浪費大量的存儲空間。
(2)存儲在本地的數據可能被篡改。參與者之間可能存在惡意節點。惡意節點會篡改本地存儲的數據,以避免調查。
(3)一些攻擊者將試圖攻擊其他設備。一旦攻擊成功,攻擊者將控制該設備。在消息響應過程中,攻擊者會修改存儲的數據或提交虛假信息。
基于上述缺點,應避免將采集到的數據存儲在本地。方案設計將收集到的數據存儲在云端。由于收集的數據涉及用戶的隱私,為避免隱私泄露,可以通過存儲承諾來記錄數據。移動設備只需要記錄關鍵信息就可對承諾進行驗證。
方案對Pedersen 承諾進行了改進以存儲收集到的數據。改進后的Pedersen 承諾可以在保護數據隱私的同時減少存儲開銷。即使云平臺受到了攻擊,攻擊者也無法通過承諾信息獲取到任何隱私信息。數據存儲的方法如下:
管理員協商在循環群G中選擇m個不同的生成元<g1,…,gm>,這m個生成元與地點全集中m個不同的位置一一對應。當用戶拜訪過某一地點時,承諾值vi(i=1,…,m)取值為1;當用戶未拜訪過某一地點時,vi取值為0。因此,得到改進后的Pedersen 承諾的計算方法如下:

移動設備需要定期將一段時間內收集到的信息形成承諾并上傳到云端。即使用戶沒有移動,也有必要定期生成承諾并上傳,防止惡意用戶通過上傳承諾的時間分析用戶是否在移動。移動設備每次產生承諾時,所選的隨機數r是不同的。即使用戶的行程沒有變化,產生的承諾也是不同的,攻擊者無法從上傳的承諾中獲取到任何有用信息。
當某一用戶被確診時,管理員可以利用存儲的承諾對用戶的行程進行快速驗證并進一步分析風險區域。管理員收集感染者在一段時間內的承諾,并計算承諾的乘積。計算結果如下:

患者根據本地存儲的關鍵數據上傳被調查時間段內地點的訪問次數以及r之和。管理員根據上傳的數據對承諾進行驗證。管理員計算承諾乘積,計算結果如下:

管理員對比式(4)和式(5)的計算結果。當C和C′相等時,驗證通過。管理員可以快速獲取用戶在某一時間段內拜訪過的地點的次數,同時確保用戶的詳細行程不會被泄露。當管理員需要獲取用戶更詳細的行程信息時,可以選取特定的時間段進行驗證。當C和C′不相等時則驗證失敗,此時,該用戶是一個不誠實的節點。管理員可以上訴到仲裁機構,對惡意用戶進行懲罰。
存儲在云平臺中的數據也存在著被攻擊者篡改的可能,采用區塊鏈技術對數據進行存證,防止數據被篡改。在進行傳染病風險管理時,會產生海量數據,方案需要確保區塊鏈框架能夠迅速達成共識。快速的共識能夠保證收集到的數據可以快速上鏈。
由于區塊鏈存儲空間的限制,難以直接在區塊鏈上存儲收集到的數據。方案把區塊鏈記錄的數據分成兩種類型:第一種是用戶定期上傳到云端的承諾,管理員根據存儲在云中的承諾生成Merkle 根,將生成的Merkle 根作為存儲到區塊鏈中的數據上傳到區塊鏈網絡等待上鏈。第二種是管理員執行計算和發布結果時需要記錄的公共信息。公共信息由管理員直接上傳到區塊鏈網絡中。區塊鏈網絡的具體共識方法如下:
(1)管理員作為區塊鏈網絡的共識節點參與共識。在進行共識前,所有管理員按順序進行編碼。根據記錄數據的類型不同,區塊分為兩類:記錄承諾的區塊和記錄公共信息的區塊。不同類型的區塊由塊頭中的標識符進行標記。在初始化階段,系統設置閾值為m,閾值m是一個區塊可以存儲的公共信息數量的最大值。
(2)在每一輪共識前,方案根據共識節點的序號順序選擇一個節點生成區塊。所選節點收集信息,形成一個新的塊。當未上鏈的公共信息數量大于閾值m時,節點收集公共信息,形成新的塊。當公共信息量小于閾值m時,節點收集一段時間內上傳到云端的承諾,并計算其Merkle 根。共識節點使用得到的Merkle 根形成一個新的塊。
(3)選定的節點生成新的區塊后,該節點會將新生成的區塊廣播給其他共識節點。如果所選節點不能按時廣播新塊,則此輪共識將失敗。方案將直接進入下一輪,重新選擇共識節點。

圖3 共識過程
共識節點收到該塊后,對該塊進行校驗。如果投贊成票的節點超過2/3 時,則驗證通過,區塊上鏈;否則該塊將被丟棄,直接進入下一輪。共識過程如圖3 所示。通過將數據存儲在區塊鏈中,可以有效地保護數據的真實性。在發生糾紛或數據遭到篡改時,可以通過追溯區塊鏈中的數據進行仲裁。
隱私計算存在參與計算的節點合謀攻擊以獲取某一用戶的隱私信息。假定合謀攻擊是為了獲取節點Pi的集合信息。由于Pi將其生成的應答向量Ri進行了拆分并發送給不同的計算參與方,攻擊者無法確定他們是否接收到了所有的份額,因此,攻擊者無法獲取到編碼向量Ri。當除被攻擊者Pi外,其余節點均參與了合謀攻擊,此時攻擊者可能推測出Pi更多的信息。但此時絕大部分節點皆為惡意節點,分布式網絡已無法正常運行。因此,只要保證至少有兩個誠實的參與者,協議的安全性就可以得到保證。
為了確保參與者不會篡改自己的出行數據,需要實時收集數據并上傳更新。實時上傳數據可能會導致隱私泄露:通過檢測數據是否正在上傳,每個人都可以推測出該用戶是否在移動。為了保護用戶隱私,移動設備收集行程數據,并在生成承諾后定期上傳至云平臺。如果用戶的行程信息沒有發生變化,移動設備將重新生成承諾進行上傳。由于每次生成的承諾所選擇的r是不同的,即使行程沒有發生變化,生成的承諾也是不同的。因此,攻擊者無法通過上傳的承諾獲取到任何信息。
為了保證數據的真實性,該方案將采集到數據的Merkle 根存儲在區塊鏈中,以防止惡意用戶對數據進行篡改。當攻擊者嘗試對存儲到云平臺的數據進行篡改時,通過存儲到區塊鏈中的Merkle 根可以快速發現被篡改的數據。一旦Merkle 根被記錄到區塊鏈中,將無法修改承諾信息。
信息處理過程是由云平臺完成的,當云平臺被攻擊者控制,攻擊者將嘗試利用云平臺獲取用戶的隱私信息。由于移動設備上傳到云中的向量是混淆后的信息,云平臺無法通過上傳的向量獲取到任何用戶的隱私信息。當云平臺完成信息處理后,由于攻擊者無法獲取管理員的密鑰,無法對計算結果進行解密,除了管理員公布的信息,攻擊者無法獲取更多的信息。因此,信息處理過程是安全的。
本文提出了一種基于區塊鏈的傳染病風險管理方案,方案采用隱私集合運算的方法實現風險區域管理。文獻[18]通過向量與同態加密算法實現了隱私集合計算。文獻[19]通過布谷鳥哈希與同態加密算法實現了隱私集合求交。通過與當前主流的隱私集合運算方法進行比較,來分析本文設計的隱私集合運算的效率。
本文利用Python 語言對隱私集合計算過程進行模擬。在傳染病風險管理方案中,影響計算開銷的主要因素包括全集元素的個數以及參與計算的節點個數。當參與計算的節點數量一定時(設定為20 個參與者),執行一次計算所用的時間與全集元素個數的關系如表1 所示。

表1 計算時間與元素個數的關系(ms)
當全集元素的個數一定時(設定為50 個),執行一次計算所用的時間與參與計算的節點數量之間的關系如表2 所示。

表2 計算時間與節點個數的關系(ms)
在隱私集合計算中,計算開銷最大的是同態加密算法的加密過程。文獻[18]與文獻[19]中需要執行大量的加密運算,這大大增加了隱私計算的時間開銷。尤其是當參與計算的節點中存在大量的輕量級節點時,文獻[18]與文獻[19]中的隱私計算方法無法有效執行。由表1 以及表2 可以看出,相較于當前主流的隱私集合計算方法,本文提出的算法可以大幅降低隱私計算的開銷,適用于輕量級節點執行。
本文介紹了在疫情期間應用的風險防控策略所面臨的安全性以及應用性問題,并根據上述問題設計了一種基于區塊鏈技術的適用于輕量級節點的傳染病風險管理方案。利用區塊鏈技術有效保護了用戶隱私安全,并結合隱私集合計算技術,在保護隱私數據不被泄露的同時降低了方案的計算開銷。最后,通過實驗驗證了本文提出的方案適用于輕量級節點參與的傳染病風險管理。