周旭晨 王智慧 王 宇 朱 云 李思勤 汪 衛(wèi)
(復(fù)旦大學計算機科學技術(shù)學院 上海 201203)
(上海市數(shù)據(jù)科學重點實驗室(復(fù)旦大學) 上海 201203)
隨著大數(shù)據(jù)時代的來臨,數(shù)據(jù)的開放需求和使用價值日益提高,數(shù)據(jù)資源的開放和共享也成為熱門的研究方向。然而在現(xiàn)實中,數(shù)據(jù)開放和共享雖然是數(shù)據(jù)資源研究者共同的需求,但對數(shù)據(jù)擁有者而言,其帶來的隱私泄露風險是必須考慮的因素。
以醫(yī)療數(shù)據(jù)為例,醫(yī)院作為醫(yī)療數(shù)據(jù)擁有者,希望能夠開放醫(yī)療數(shù)據(jù)以支持醫(yī)療領(lǐng)域科學研究,也希望能夠共享到其他醫(yī)院或其他機構(gòu)的醫(yī)療數(shù)據(jù)進行研究。但是,醫(yī)療數(shù)據(jù)通常包含較多的隱私信息,包括患者的個人信息、病情病史、就診情況和醫(yī)生的診斷情況等等。出于對隱私的考慮,醫(yī)院作為數(shù)據(jù)擁有者,不可避免地對數(shù)據(jù)開放持保留態(tài)度。
現(xiàn)有的隱私保護研究會對數(shù)據(jù)進行匿名化或其他擾動處理,使得數(shù)據(jù)開放后無法獲得原始數(shù)據(jù),從而對數(shù)據(jù)隱私進行保護。但在當今對數(shù)據(jù)資源要求越來越高的情況下,擾動后的數(shù)據(jù)通常會影響數(shù)據(jù)使用者對數(shù)據(jù)的使用,進而影響相關(guān)研究成果。
數(shù)據(jù)擁有者有時在了解隱私泄露風險的情況下,愿意以一定的代價將數(shù)據(jù)開放。因此就需要研究者提供一套隱私泄露評估的手段,供數(shù)據(jù)擁有者了解數(shù)據(jù)開放可能帶來的隱私泄露風險,以此決定是否開放數(shù)據(jù)或以何種形式開放數(shù)據(jù)。本文將對現(xiàn)有的隱私保護研究進行概括總結(jié),并提出一種基于矩陣計算的隱私泄露評估方法,以適應(yīng)新的數(shù)據(jù)開放系統(tǒng)的需要。
現(xiàn)有的隱私保護研究中有兩類比較重要的研究方向,其一是對數(shù)據(jù)進行匿名化處理,尤其是對其中的標識符等敏感信息。匿名化研究中,比較具有代表性的有文獻[1]提出的匿名化原則——k-匿名,文獻[2]提出的l-多樣性原則和文獻[3]提出的t-臨近原則等。從k-匿名到t-臨近,這些匿名化原則大多是將敏感屬性作為問題處理的關(guān)鍵,對其出現(xiàn)頻率、取值分布和取值多樣性,提出不同的限制,從而提出對應(yīng)的原則來達到使個人隱私不被泄露的目的[4-5]。
基于匿名化的隱私保護模型,均會有不同的漏洞易被攻擊者利用。其原因在于模型的安全性都與攻擊者擁有的背景知識有關(guān),而攻擊者擁有的背景知識很難被形式化地定義。因此,一個匿名化的隱私保護模型只能針對擁有特定假設(shè)下的背景知識的攻擊者。此外,以上的匿名化隱私保護模型沒有嚴格的數(shù)學理論作為依據(jù),以有效地證明并表示隱私保護的強度,從而使得隱私保護的可靠性不夠強。
針對以上問題,Dwork等[6]在2006年首次提出了差分隱私保護模型。該模型具有嚴格的理論依據(jù),并能夠嚴格地以參數(shù)表示隱私保護的強度。差分隱私描述的是一個對個體的承諾,即盡管攻擊者擁有較強的背景知識(主要來自于研究結(jié)果、發(fā)布數(shù)據(jù)集和其他信息來源),個體的信息也不會因為其數(shù)據(jù)被用于研究而泄露。換言之,差分隱私保證了在從數(shù)據(jù)總體中獲得有效信息的同時,個體數(shù)據(jù)(即個人隱私)不會被泄露[7]。差分隱私的基本機制有拉普拉斯機制和指數(shù)機制兩大類,同時具有序列組合性和并行組合性兩大特性[8]。但差分隱私存在對背景知識的假設(shè)過強以及隱私預(yù)算分配比較困難,對專業(yè)知識要求較高等問題[9-11]。
現(xiàn)有的隱私保護研究多致力于對數(shù)據(jù)中的敏感信息進行保護,但或多或少都會影響到數(shù)據(jù)的可用性,這在某些應(yīng)用場景,尤其是要求使用原始數(shù)據(jù)的情形下,是不能被接受的。針對這種情況,本文對數(shù)據(jù)開放過程中的隱私泄露評估進行了研究。
本文提出的隱私泄露評估方法是基于數(shù)據(jù)開放背景的。所謂數(shù)據(jù)開放是指,數(shù)據(jù)擁有者上傳數(shù)據(jù),數(shù)據(jù)使用者通過一定代價獲取自己需要的數(shù)據(jù)集進行使用。
數(shù)據(jù)開放能夠提供便利的數(shù)據(jù)共享服務(wù),但這也引發(fā)了數(shù)據(jù)開放者對隱私問題的擔憂。數(shù)據(jù)開放者在上傳原始數(shù)據(jù)時,一定會考慮數(shù)據(jù)集里的敏感屬性是否會泄露,由此帶來的隱私風險如何。如果存在較大的風險,數(shù)據(jù)開放者會考慮是否開放這部分數(shù)據(jù),或者需要數(shù)據(jù)使用者付出怎樣的代價來換取數(shù)據(jù)的使用權(quán)。
在這一過程中,數(shù)據(jù)開放帶來的隱私泄露風險能否被評估、能否被定量分析,就是數(shù)據(jù)開放者和數(shù)據(jù)擁有者共同關(guān)心的問題。因為只有能夠進行定量評估,才能供數(shù)據(jù)開放者參考,從而根據(jù)不同情況制定相應(yīng)的開放策略。因此,數(shù)據(jù)開放過程中的隱私泄露評估是一個很值得研究的問題。
圖1是隱私泄露評估系統(tǒng)的結(jié)構(gòu)圖。數(shù)據(jù)開放者提供原始數(shù)據(jù)并根據(jù)自身隱私保護需求進行隱私等級標記。原始數(shù)據(jù)是指數(shù)據(jù)開放者希望進行開放共享的未經(jīng)處理過的數(shù)據(jù)集,包含數(shù)據(jù)科學研究者感興趣的多方面內(nèi)容。隱私等級標記f1,f2,…,fn是根據(jù)數(shù)據(jù)開放者自身的隱私保護需求,對開放數(shù)據(jù)集內(nèi)包含的字段的隱私保護需求等級進行的標記,也包括了對字段間關(guān)聯(lián)關(guān)系的隱私等級標記。隱私等級標記可用來評估數(shù)據(jù)開放帶來的隱私泄露風險,等級越高,表示隱私泄露的風險越大。
圖1 隱私泄露風險評估系統(tǒng)
數(shù)據(jù)開放者通過接口上傳原始數(shù)據(jù)和隱私等級標記,系統(tǒng)進行隱私泄露風險等級評估后也將通過接口層將評估結(jié)果反饋給數(shù)據(jù)開放者,為其確定數(shù)據(jù)開放策略提供參考。數(shù)據(jù)使用者通過接口聲明自己的使用需求,包含需要使用的字段和對該字段進行的操作。
隱私泄露評估系統(tǒng)負責進行隱私泄露評估,在獲取數(shù)據(jù)開放者設(shè)定的隱私等級標記和數(shù)據(jù)使用者提出的使用需求后,利用評估算法進行隱私泄露的風險評估。
數(shù)據(jù)開放過程中的隱私泄露評估問題,需要從數(shù)據(jù)開放者和數(shù)據(jù)擁有者兩個角度來綜合考慮,因此本文基于下述兩個前提假設(shè)。
首先,假設(shè)數(shù)據(jù)開放者對自己上傳的數(shù)據(jù)集有較為明確的隱私保護需求,即知道數(shù)據(jù)集中哪些字段是隱私保護等級較高或是哪些字段關(guān)聯(lián)后隱私保護等級較高。
這就是數(shù)據(jù)開放者的隱私等級標記,隱私等級標記可用來評估數(shù)據(jù)開放帶來的隱私風險,等級越高,表示數(shù)據(jù)開放的隱私風險越大。字段間關(guān)聯(lián)關(guān)系的標記被稱為關(guān)聯(lián)字段規(guī)則,用來表示當兩個或多個字段被同時使用時帶來的隱私風險,通常比單字段隱私等級更高。本文參考BNF范式的格式,定義數(shù)據(jù)開放者的標記語言如下:
定義1數(shù)據(jù)開放者的標記語言,是指數(shù)據(jù)開放者用來標記開放數(shù)據(jù)集內(nèi)各字段以及操作隱私等級的語言,描述如下:
<數(shù)據(jù)開放者標記>::=(<對象>,<隱私等級>)
<對象>::=<字段>|<操作>
<字段>::=<單字段>|<多字段集合>
<隱私等級>::=1|2|…|N
這里,數(shù)據(jù)開放者的標記包含兩大類,其一是字段隱私等級標記,又包括兩類,一是單字段隱私等級,即單個字段的隱私等級;二是關(guān)聯(lián)字段規(guī)則。關(guān)聯(lián)字段規(guī)則的形式化定義如下:
定義2關(guān)聯(lián)字段隱私等級,表示兩個或多個字段關(guān)聯(lián)情況下的字段隱私等級,一般格式為:
r={f1,f2,…,fs,level},其中s≥2
上式表示當兩個或多個字段f1,f2,…,fs同時出現(xiàn)在同一使用需求中時,這些字段的隱私等級將變?yōu)閘evel,因為當兩個或多個字段關(guān)聯(lián)時,會暴露除單字段本身外更多的信息,因此level的值都大于或等于(通常是大于)單字段隱私等級。
數(shù)據(jù)開放者標記的第二類是操作隱私等級標記,用來標記不同操作的隱私等級,這一類標記有時也可以使用事先設(shè)定好的缺省值。
下面說明第一類字段隱私等級標記。假設(shè)某醫(yī)院數(shù)據(jù)集有姓名、年齡、性別、診斷結(jié)果四個字段,醫(yī)院對這一數(shù)據(jù)集進行了字段隱私等級標記,如表1所示(這里N=5),其中最后一條為關(guān)聯(lián)字段規(guī)則。使用本文的數(shù)據(jù)開放標記語言可以形式化描述如下:
字段標記1:(姓名,4);
字段標記2:(年齡,3);
字段標記3:(性別,1);
字段標記4:(診斷結(jié)果,4);
字段標記5:({姓名,診斷結(jié)果},5)。
表1 某醫(yī)院數(shù)據(jù)集字段隱私等級標記
下面說明第二類操作隱私等級標記。假設(shè)某醫(yī)院數(shù)據(jù)集支持的操作有取值、求和、計數(shù)、求最值,醫(yī)院對這些操作進行了隱私等級標記,如表2所示(這里N=3)。使用本文的數(shù)據(jù)開放者標記語言可以形式化描述如下:
操作標記1:(取值,3);
操作標記2:(求和,2);
操作標記3:(計數(shù),1);
操作標記4:(求最值,2)。
表2 某醫(yī)院數(shù)據(jù)集操作隱私等級標記
以上,是對數(shù)據(jù)開放者標記的定義。
其次,假設(shè)數(shù)據(jù)使用者有明確的使用需求,即能夠描述對需要的數(shù)據(jù)集內(nèi)每個字段進行什么操作。
數(shù)據(jù)使用者的使用需求語言定義如下:
定義3數(shù)據(jù)使用者的使用需求語言,是指數(shù)據(jù)使用者用來描述具體使用需求的語言,描述如下:
<使用需求>::=<需求元組>|<需求元組列表>
<需求元組>::=(字段,操作集合)
下面結(jié)合表1和表2,說明這一使用需求描述語言。假設(shè)醫(yī)院在開放如表1、表2所示的一個數(shù)據(jù)集后,一位數(shù)據(jù)使用者提出了這樣的使用需求:需要對年齡進行求和、計數(shù)和求最值的操作,需要對性別和診斷結(jié)果進行取值操作??梢孕问交孛枋鲞@個使用需求如下:
需求元組1:(年齡,{求和,計數(shù),求最值});
需求元組2:(性別,{取值});
需求元組3:(診斷結(jié)果,{取值})。
以上是對數(shù)據(jù)使用需求描述的定義。在此基礎(chǔ)上,可以形式化地描述數(shù)據(jù)開放過程中的隱私泄露評估:
所謂隱私泄露評估,就是給定數(shù)據(jù)開放者標記集合R和數(shù)據(jù)使用者需求集合U,求隱私泄露評估等級l=f(R,U),其中映射f就是隱私泄露評估的過程。
隱私泄露評估就是綜合考慮數(shù)據(jù)開放者進行的隱私等級標記和數(shù)據(jù)使用者提出的使用需求,對此次數(shù)據(jù)開放進行評估后得出隱私泄露風險等級,并反饋給數(shù)據(jù)開放者的過程。
例如,某醫(yī)院作為數(shù)據(jù)擁有者,考慮開放一個數(shù)據(jù)集,其中包含患者ID、性別、年齡、病癥和治療方案等若干字段。作為數(shù)據(jù)擁有者,醫(yī)院認為患者ID、治療方案都是隱私保護等級較高的字段,而患者ID和病癥關(guān)聯(lián)后,二者的隱私保護等級還會更高。某科研機構(gòu)作為數(shù)據(jù)使用者,希望研究某種疾病與性別和年齡的相關(guān)性,那么就需要對性別、年齡和病癥三個字段進行取值、計數(shù)等操作。將這些信息作為輸入?yún)?shù)進行隱私泄露評估后得到一個隱私泄露風險等級,并將這個等級反饋給醫(yī)院,為其制定相應(yīng)的數(shù)據(jù)開放策略提供參考。
在數(shù)據(jù)開放的時代背景下,大量數(shù)據(jù)擁有者希望開放共享自己擁有的數(shù)據(jù),供數(shù)據(jù)科學研究者進行研究。但數(shù)據(jù)開放帶來的隱私泄露風險,是困擾數(shù)據(jù)擁有者的重要問題。因此本文基于前述提到的數(shù)據(jù)開放中的隱私泄露評估思想,提出一種數(shù)據(jù)開放模式下的隱私泄露評估方法,以評估數(shù)據(jù)開放過程中可能帶來的隱私泄露風險等級,供數(shù)據(jù)開放者參考,進而制定相應(yīng)的數(shù)據(jù)開放策略。
下面對評估方法進行具體說明:
(1) 評估方法的輸入包含四個部分,首先對數(shù)據(jù)開放過程中所支持的m種操作的隱私等級進行預(yù)標記(例如,1-3級,隱私等級依次提高),記為o1,o2,…,om;其次數(shù)據(jù)開放者對擬開放的n個數(shù)據(jù)字段進行隱私等級標記(例如,1-5級,隱私保護需求依次升高),記為f1,f2,…,fn,如不進行標記則可以使用設(shè)定的缺省值,數(shù)據(jù)開放者同時會提出關(guān)聯(lián)字段規(guī)則集合R;數(shù)據(jù)使用者針對開放數(shù)據(jù)提出使用需求集合U。
(2) 建立一個m×n的矩陣A,并均以最低的隱私等級(例如,1)填充。
(3) 遍歷使用需求集合U中的每一個使用請求u,以操作為行,字段為列,若使用需求中涉及第i種操作和第j個字段,則在矩陣第i行第j列的位置存放oi×fj的值(即aij=oi×fj),其中若某些字段觸發(fā)了關(guān)聯(lián)字段規(guī)則集合R中的某一條r,則將會以關(guān)聯(lián)字段規(guī)則下的隱私等級替換原始的單字段隱私等級。例如,姓名和診斷結(jié)果單字段隱私等級均為4級,而二者關(guān)聯(lián)后隱私等級為5級,若在使用需求中同時用到這兩個字段時,則將這兩個字段的隱私等級均設(shè)為5級。
評估方法的正確性主要由以下三個定理證明:
定理1在字段隱私等級、操作隱私等級相同,針對字段進行的操作數(shù)目相同的情況下,使用者兩次使用請求要求使用的字段數(shù)目分別為t1和t2,若t2>t1,則p2>p1。
證明:由數(shù)據(jù)使用需求定義,使用者要求使用的字段越多,矩陣中就有更多元素由1替換為較大值,由隱私泄露風險等級系數(shù)的計算公式p=(asum-amin)/(amax-amin)可知,asum2>asum1,而amin和amax不變,因此p2>p1。
證畢。
定理2在字段隱私等級、操作隱私等級相同,要求使用字段數(shù)目相同的情況下,使用者兩次使用請求要求對字段進行的操作數(shù)目分別為st1和st2,若st2>st1,則p2>p1。
證明:證明過程類似定理1。
以上兩個定理描述的是只考慮單字段的情況下評估算法的正確性,下述定理考慮關(guān)聯(lián)字段規(guī)則下評估算法的正確性。
定理3在其他條件相同的情況下,加入關(guān)聯(lián)字段規(guī)則集合R,且使用請求觸發(fā)關(guān)聯(lián)字段規(guī)則時,新的隱私泄露風險等級系數(shù)大于或等于原隱私泄露風險等級系數(shù)。
證明:因為前文提到的關(guān)聯(lián)字段規(guī)則中提出,關(guān)聯(lián)字段規(guī)則涉及到的字段隱私等級會提高,加入越多的關(guān)聯(lián)字段規(guī)則會使得隱私泄露風險等級系數(shù)越高,因此不失一般性,考慮加入兩個字段的關(guān)聯(lián)字段規(guī)則時,隱私泄露風險等級的變化情況。
證畢。
以上證明了該評估方法的正確性,能夠根據(jù)隱私等級標記和使用者的使用需求,對數(shù)據(jù)開放的隱私泄露風險進行有效評估。
為了驗證方法的運行效率和正確性,本文進行了一系列實驗。實驗中我們給定操作隱私等級(見表2)、字段隱私等級和關(guān)聯(lián)字段規(guī)則集合,通過改變使用需求集合,根據(jù)上文提出的算法構(gòu)造不同的矩陣,計算相應(yīng)的隱私泄露風險等級系數(shù)來驗證評估方法的正確性。
實驗采用UCI數(shù)據(jù)集Adult作為實驗數(shù)據(jù)集[12],選取了其中“年齡(1)”“受教育時間(3)”“資本收益(4)”“資本損失(4)”“每周工作小時數(shù)(2)”“fnlwgt(5)”總計6個數(shù)值型字段進行實驗,括號中為設(shè)定的字段隱私等級。
實驗環(huán)境如下:CPU配置為Intel(R) Core(TM) i5- 4590 @ 3.30 GHz,內(nèi)存8 GB,該計算機運行Windows 10操作系統(tǒng),所有算法和實驗程序由Python語言開發(fā)實現(xiàn)。
由于在實際運用中,相比數(shù)據(jù)集的字段數(shù)目,通??紤]支持的操作數(shù)目數(shù)量級較小,因此在測試算法運行效率時,不考慮使用需求中涉及到的操作數(shù)目,而將其作為常數(shù),考慮涉及到的字段數(shù)目對算法運行效率的影響。
在實驗過程中發(fā)現(xiàn)算法運行時間與字段數(shù)基本呈線性正相關(guān),算法在Adult數(shù)據(jù)集上運行時間很短,而在我們?nèi)斯ず铣傻陌?00個字段的數(shù)據(jù)集上,算法運行時間也不到1毫秒,實際運用中,數(shù)據(jù)集的字段數(shù)通常達不到100個,因此該算法具有較高的運行效率。
首先對定理1進行驗證,考慮在字段隱私等級、操作隱私等級相同,針對字段進行的操作數(shù)目相同的情況下,使用請求要求使用的字段數(shù)目越多,則隱私泄露風險等級系數(shù)應(yīng)該越高。實驗采用的Adult數(shù)據(jù)集總字段數(shù)為6,只改變每次請求要求使用的字段數(shù)目,要求對使用字段進行的操作均為“取值”和“計數(shù)”(支持操作還包含“求和”、“求最值”,詳見表2),計算隱私泄露風險等級系數(shù)。實驗結(jié)果如圖2所示。
圖2 請求字段數(shù)
圖2表明,在字段隱私等級、操作隱私等級相同,使用請求要求對字段進行的操作數(shù)目相同的情況下,隨著要求使用字段數(shù)目的增多,隱私泄露風險等級系數(shù)也在不斷提高。
下面對定理2進行驗證??紤]在字段隱私等級、操作隱私等級相同,要求使用字段數(shù)目相同的情況下,使用請求要求對字段進行的操作數(shù)目越多,隱私泄露風險等級系數(shù)應(yīng)該越高。實驗依然采用總字段數(shù)為6個的Adult數(shù)據(jù)集,且固定請求使用其中的4個字段(“受教育時間”,“資本收益”,“資本損失”,“每周工作小時數(shù)”),從支持操作集合{“取值”,“求和”,“計數(shù)”,“求最值”}中依次選取包含不同個數(shù)的操作子集作為操作使用請求,計算隱私泄露風險等級系數(shù),實驗結(jié)果如圖3所示。
圖3 請求操作數(shù)
圖3表明,在字段隱私等級、操作隱私等級相同,要求使用字段數(shù)目相同的情況下,隨著使用請求要求對字段進行的操作數(shù)目增多,隱私泄露風險等級系數(shù)在不斷提高。
下面對定理3進行驗證??紤]在其他條件相同的情況下,加入關(guān)聯(lián)字段規(guī)則集合R,且使用請求觸發(fā)關(guān)聯(lián)字段規(guī)則時,應(yīng)當會使隱私泄露風險等級系數(shù)提高。實驗采用若干字段數(shù)不同的數(shù)據(jù)集,且假設(shè)數(shù)據(jù)使用者請求使用所有字段,對每個字段進行的操作固定且一致。然后隨機生成一系列的關(guān)聯(lián)字段規(guī)則,構(gòu)成不同的關(guān)聯(lián)字段規(guī)則集合,因為使用者請求使用全部字段,因此所有規(guī)則會被觸發(fā)。此外,由于原始數(shù)據(jù)集中單字段隱私等級為隨機生成的,為了保證關(guān)聯(lián)字段規(guī)則中隱私等級比單字段隱私等級高,將關(guān)聯(lián)字段規(guī)則中的隱私等級全部設(shè)為最高級,實際應(yīng)用場景中通常會要求數(shù)據(jù)開放者在進行標記時保證關(guān)聯(lián)字段規(guī)則中隱私等級不低于單字段隱私等級。最后,計算關(guān)聯(lián)字段規(guī)則觸發(fā)下的隱私泄露風險等級系數(shù),結(jié)果如圖4所示。
圖4 關(guān)聯(lián)字段規(guī)則
圖4表明,在其他條件相同的情況下,加入關(guān)聯(lián)字段規(guī)則集合R,且使用請求觸發(fā)關(guān)聯(lián)字段規(guī)則時,隱私泄露風險等級系數(shù)均有不同程度的提高。
綜合而言,本文提出的隱私泄露評估方法的效率和正確性驗證結(jié)果均符合預(yù)期。
本文結(jié)合當前數(shù)據(jù)開放的需要,提出了一種基于矩陣計算的數(shù)據(jù)開放隱私泄露評估方法。該方法綜合考慮開放數(shù)據(jù)集中單字段和關(guān)聯(lián)字段的隱私等級所涉及操作的隱私等級以及數(shù)據(jù)使用者的使用需求,采用矩陣計算的方法,對數(shù)據(jù)開放的隱私泄露風險進行評估,為數(shù)據(jù)擁有者決定是否開放數(shù)據(jù)以及開放形式提供參考,為數(shù)據(jù)開放提供了有力保障。
在今后的研究中,我們將會對數(shù)據(jù)使用需求描述語言繼續(xù)進行擴展,以支持更為復(fù)雜的數(shù)據(jù)使用需求描述,進一步提高評估結(jié)果的精細化程度。