邢 偉,耿 琦
(江蘇金盾檢測技術有限公司,江蘇 南京 210042)
隨著萬物互聯的飛速發展及在社會中的廣泛運用,網絡邊緣設備數量迅猛增長,預估到2021年年底將有800億臺設備連入互聯網,使得這類設備運行所產生的數據量到達澤字節(ZB)級別。但是有限的計算能力和存儲空間使邊緣設備難以高效處理海量數據,同時邊緣設備正在從單一的數據使用者轉變為數據生產和數據使用的雙重角色,逐漸具有利用收集實時數據、執行預測分析和智能處理等功能,對設備提出了更高的要求。
云計算接受了由本地用戶產生的大批量數據文件和巨大的計算任務,在早期確實創造了有效的規模經濟效益。然而,云計算的集中式處理模式已經無法滿足當下的任務,主要還是集中式的云計算能力無法匹配指數級增長的邊緣數據,從邊緣設備到云計算服務中心的海量數據增加了傳輸帶寬的負載率,并且在傳輸數據途中個人的隱私數據會被竊取造成安全問題。
許多新的計算模型被相繼提出,霧計算[1]、Cloudlet[2]、海云計算[3]等。一種新的分布式計算概念—邊緣計算[4]也被引入互聯網,它是以網絡邊緣設備為核心的新型計算模式,將云計算中心的計算任務向網絡邊緣設備遷移,簡單說就是讓云服務器和本地用戶之間的邊緣節點合作完成計算任務,降低中心服務器計算壓力,減緩網絡傳輸負載,提高處理效率。邊緣計算數據安全與隱私保護體系結構如圖1所示。

圖1 邊緣計算數據安全與隱私保護體系結構
邊緣計算在解決了許多問題的同時,也面臨著各種安全和隱私威脅。邊緣節點有著對用戶數據的控制權,這時很難保證數據的隱私和完整,同時未經授權的節點可能會利用用戶的各項數據用作他途,且邊緣計算設備比起云計算中心更靠近數據源,可以更容易收集到用戶的敏感信息。在現今的大數據時代,如何保證分享信息的同時保護自身的隱私,是一個至關重要的問題。
目前,對于邊緣計算的隱私保護研究在國內外都取得了一定的進展。
Lu等[5]利用同態加密為邊緣計算中的計算設備開發了一種輕量級的數據聚合方案,從而保證數據的隱私性和完整性,但是該方案沒有考慮拓展性和移動性。
Khan等[6]針對身份認證過程中的憑證泄露問題,提出了一種基于動態憑證的身份隱私保護方案,通過網絡中的分組交換機對終端設備的身份憑證實時更新,以阻止憑證泄露。
Wang等[7]提出了一種在邊緣計算場景中使用假名技術的匿名數據聚合方案,在保證邊緣計算實體的真實性的同時考慮了本地設備的身份隱私。
Guan等[8]提出了一種將假名證書與Paillier同態加密相結合的方案。
Lin等[9]搭建了一個保護隱私的內核k均值聚類外包方案,對數據進行擾動運算來保護數據。
數據假名化是維護數據結構和信息保密的一種方法和技術,可以對敏感信息進行保密,例如個人位置、個人地址、郵政編碼等。在《通用數據保護條例》的標準文件中定義了數據假名化的概念,即是對個人的數據的處理方式,在不使用附加信息的情況下,不再將個人數據歸因于特定的數據主體[10]。
目前,實現數據假名化的基本技術都已經較為成熟并且都得到了廣泛的使用。具體包括以下幾種:(1)計數器技術是最簡單的假名化方法,真實數據的標識符會由一個單調計數器計算出的數字來代替。該技術最大的優勢就是簡單易用,這也使得它成為一些不復雜數據集的合適選擇。(2)隨機數生成器是一種與計數器類似的方法,不同的地方是它產生一個隨機數給對應的標識符,由于其隨機性,所以很難取出關于原來標識符的信息,這提供了一種可靠的數據保護。它的缺點也很明顯,很容易產生隨機數的沖突。(3)加密散列函數[11]是一種直接作用于標識符以獲得假名的方法,特點是單向性和無沖突性,保證了數據的完整性,但也容易遭受暴力破解的風險。消息認證碼[12]與加密散列函數相似,在散列函數的基礎上引入了密鑰來生成假名,通過這個密鑰來獲取假名與原標識符的映射,是一種較為穩健的假名化技術。它有多個不同變體,HMAC是互聯網協議中最流行的消息認證碼設計。(4)對稱加密技術,使用秘密密鑰來加密標識符,是加密假名和恢復假名的密鑰,例如DES技術,也是一種較為穩健的假名化技術。
本文從一個實際的假名化案例來分析。用戶在終端機器上產生的數據通過互聯網被傳輸到不同的邊緣節點進行處理和存儲,不同的邊緣節點在功能或業務上會存在較大的不同,有的專門負責存儲用戶的相關數據,還有只負責計算用戶需要的數據信息的節點。不同節點可能是不同的數據處理中心,也可能是不同的服務系統,如果要完成用戶的數據處理任務,則這些節點之間的互相配合也是必不可少的(如圖2所示)。這里的問題就是不同節點之間所需要的數據并不相同,對于所有節點來說完整訪問用戶所有記錄是沒有必要的,即個人隱私及部分非必要數據應該對單一節點進行隱藏。

圖2 邊緣用戶數據計算案例
用戶的完整數據可以分為用戶的個人基本信息(如姓名、地址、性別等)、用戶的位置信息、用戶的操作記錄、用戶發送的數據等部分。對這些數據信息分別進行假名化。本文以加密哈希函數技術來進行假名化操作為例,數據經過哈希再被傳送到節點后,該節點只能使用和看到必要的數據,個人隱私數據則被隱藏起來,因為不同的數據產生了不同的哈希值,節點只能處理自己的數據。
使用哈希函數對各部分數據第一次假名化可以稱為1級假名化,被1級假名化的數據叫作1級假名。對1級假名再次哈希加密后得到的數據為2級假名數據。假設用戶數據被分為四大部分,每一個部分又通過幾個小部分組成,將這些不同組的數據進行加密哈希計算也就完成了整個用戶信息的假名化(見圖3)。

圖3 基于樹狀的用戶數據哈希化方法
基于樹狀的用戶數據哈希化方法,每個用戶的數據都會被分為不同的組,通過哈希函數產生許多組哈希值,即假名。通過這種模式的假名化后,數據之間的關聯性將會被削弱,每一塊數據與特定的個人之間的綁定關系將消失,例如用戶的瀏覽行為將與任何特定主體無關。在不同的邊緣節點上就可以對同一用戶的不同數據部分進行單獨的處理。
雖然對于邊緣節點來說,當用戶數據被假名化后無法看到用戶的個人隱私信息,但是單純地使用加密哈希函數來對數據假名化仍然存在不少問題,主要有以下3個方面。
(1)假設某個用戶頻繁地通過某個邊緣節點接入,那么Hash的個人信息會被邊緣節點收集存儲,而邊緣節點可以通過收集的Hash形成專門的Hash庫,通過對比與判斷,可以知道某些數據是屬于一個確定的用戶,再結合訪問的時間,訪問的接口以及提交的公開數據,邊緣節點仍然可以獲取某個特定用戶的部分隱私信息。
(2)在哈希加密的基礎上進行加鹽(Add Salt),即進行哈希加密前在原標識符的特定位置,可以是頭部或是尾部加上一串字符,也可以是一次性隨機字符串。例如對用戶的位置信息進行加鹽加密,aS&kv*(G+南京。顯然每次加鹽后的數據Hash值都不一樣,如果沒有一個機制來控制,每次加鹽的個人隱私信息都不一樣,又不可恢復。這就造成了不可追溯,變成了匿名化。
(3)通過加密標識符生成的假名方式,通常又會額外生成一張假名與原始標識的映射表用來還原標識符。為了安全性,這張映射表和假名化的數據是分開保存的。但是攻擊者只要一旦獲得這張映射表,則用戶的個人信息將會無可避免地被泄露。
給定一個數字序列,它既是可以預先確定并可重復出現的,又是具有某種隨機特性的序列,則可以稱為偽隨機序列。檢驗一個數學序列是否為隨機序列的方法有很多,具體有卡方檢驗、KS檢驗和頻率測試等。偽隨機數都是通過計算機再選取隨機種子并根據一定的計算方法得到的,所以只要確定種子和計算方法,那么就可以復現隨機數。可以把種子看作是控制隨機序列的密鑰。
線性同余法是最早的偽隨機數生成算法之一,并且被廣泛使用。通過遞推關系可實現隨機關系的復現,也就是只需要輸入種子就可以生成特定的隨機序列。公式如下:
Xn+1=(aXn+c),mod(m)
其中,X為偽隨機數列,m為模數(m>0),它是生成序列的最大周期,a是乘數(0<a<m),c為增量(0≤c<m),且當c=0時稱為乘同余法,c≠0時稱為混合同余法,X0為種子點(0≤X0<m),即起始值。這里的m,a,c是設定的常數。
如果使用隨機字符串作為鹽值進行加密,則會產生數據的不可控性等問題。所以采用偽隨機序列來作為鹽值生成器則可以解決這一問題。偽隨機生成器會生成可控的隨機數據作為Hash加密使用的鹽值,再把偽隨機數加入原標識符,最后對整個數據進行Hash假名化。
本文提出了一個采用偽隨機序列生成鹽值的方法實現哈希假名化,即這個鹽值是由偽隨機生成算法獲得的,這個鹽值作為密鑰加入原標識符,再通過Hash對用戶隱私數據進行Hash加密。
邊緣節點與用戶數據流時序如圖4所示。整個方案的實現過程如下。

圖4 邊緣節點與用戶數據流時序
(1)Step1:約定隨機種子。用戶首先需要在邊緣計算平臺進行注冊,然后提交自己的一個隨機數,接著平臺需要驗證用戶的隨機數是否符合基本標準,如確定無誤后通知用戶注冊成功,不成功則要求用戶重新提交。這個隨機數將作為隨機種子為后來的數據解析作準備。
(2)Step2:存儲種子。邊緣節點會收集來自各方用戶大量的隨機數,這時需要建立一個專門的數據庫來存儲這些隨機數種子,這些種子在數據庫中會被重新打亂以便隱藏與建立時間有關的信息。
(3)Step3:數據假名化。用戶在提交數據到邊緣節點時,先隨機生成一個整數N,再通過隨機序列種子與偽隨機生成器生成隨機數列,然后選擇該序列中的第N個整數作為Hash key來對用戶隱私數據進行Hash加密,從而實現假名化。
(4)Step4:數據發送。當用戶數據被提交到邊緣節點的同時,整數N將作為公開的信息附加到提交的數據中。
有時,邊緣計算服務平臺需要追溯某個用戶的身份,則可以通過隨機數N來確定某次所服務的用戶,具體過程如下。
(1)在邊緣計算平臺上,如果需要追溯某次服務的用戶對象,則首先需要從用戶數據中取出隨機數N。
(2)邊緣平臺上已經事先存儲了每個用戶注冊時提交的種子,這時候將它取出,然后再使用它生成隨機數序列,取出對應的第N個數據。
(3)以該數據作為Hash key對平臺上的每個用戶信息進行Hash,然后將兩者比對即可確定某次邊緣計算服務的用戶。
本文針對邊緣計算節點可能收集或利用用戶隱私帶來的安全問題提出了一個基于偽隨機函數的可追溯假名化隱私保護方法。利用偽隨機生成器生成隨機數學序列,并通過隨機種子來控制產生的隨機數,以這個隨機數據作為哈希的密鑰加入原標識符再進行哈希操作從而完成假名化。在用戶提交數據到邊緣節點時附加一個隨機整數作為追溯參數,邊緣計算節點使用這個參數即可完成用戶的追溯。