張夢嬌,曹彥,尹小花,陶靈靈
(南京航空航天大學 計算機科學與技術學院,江蘇南京 211100)
伴隨著互聯網的興起,社交應用對人們的交流方式產生了巨大的影響。而隨著智能手機、平板電腦等移動終端的普及,社交應用也變得更加靈活多樣,在線社交應用迅速發展起來[1]。用戶信息的可靠性是社交應用的基礎,發布消息跟其他用戶進行分享是社交應用的前提,但由此帶來的隱私泄露問題也給社交應用的發展帶來了很大的挑戰。當用戶在在線社交應用中發布了一條消息,消息中涉及到自身的一些隱私,而用戶在發布完消息之后并不知道自己的信息將會被什么人看到,被誰以何種方式使用,這就很容易造成隱私泄露。人們利用移動在線社交應用(微信、QQ、微博等)這些平臺互相交流,建立和維護自己的社交圈。而且用戶還可以在自己發布的消息下面進行定位,這樣自己的好友就會知道自己所在的位置[2]。但是,用戶發布的消息經常會涉及到個人的隱私,而目前的在線社交應用基本上都是只有簡單的粗粒度的訪問控制,這就對用戶隱私信息的泄露造成了極大的威脅。如果被第三方用來謀取利益甚至被不法人員拿來詐騙或者做其它危害社會安全的事情都將帶來很大的困擾[3]。
由于分享的信息存在潛在的私密性,所以需要對用戶的隱私進行保護[4]。為了保護用戶的隱私信息,訪問控制策略幫助控制對用戶信息的訪問,它描述了一些規則,即,誰可以訪問用戶的信息,在什么條件下可以訪問用戶的信息[5]。工業界提出的訪問控制策略語言,例如,可擴展訪問控制標記語言(XACML)和企業隱私授權語言(EPAL),這些語言把義務處理成抽象的符號而不是具體的元素,因此它們并不能直接將隱私法律法規轉換成訪問控制策略[6]。傳統的基于身份的訪問控制模型不支持隱私需求而且是不靈活的[7]?;诮巧脑L問控制(RBAC)的中心思想就是用戶不可以直接訪問目標信息,而是被分成不同的角色,對應不同的訪問權限水平,訪問權限水平越高,權限越大,可訪問到的信息就越詳細[8]。提出對不同的用戶進行分類,根據分類不同在訪問其他用戶發布的消息時會得到不同的結果也是受基于角色的訪問控制的啟發。
基于上述問題,提出了一個隱私驅動的細粒度的訪問控制機制。首先,根據不同類型信息的粒度與訪問該信息的用戶的類型(陌生人、朋友、家人)對用戶的隱私需求進行定義。當用戶在社交應用上發布消息以后,社交應用自動的對用戶發布的內容進行分析,找出可能泄露用戶隱私的敏感詞進行標注。然后根據訪問該內容的用戶的類型對可能泄露用戶隱私的敏感詞進行不同程度的模糊化,最終不同類型的用戶看到的是跟原來用戶發布的內容語義一致的不同消息。
本文第1節介紹國內外的相關工作;第2節提出了隱私驅動的細粒度的訪問控制機制,并對該機制的不同的組成部分進行詳細的描述;第3節通過一個例子來證明該訪問控制機制的可行性;最后,在第4節對全文進行總結并提出了一些未來的研究方向。
目前,國內外很多學者都在隱私保護的問題上做出了貢獻。Shih-Chien Chou等人通過一個擴展的XACML模型即EXACML模型來確保Web服務中信息訪問的安全性,這個模型主要是運用信息流控制來實現隱私保護[9]。這篇文章雖然實現了細粒度的訪問控制,但是僅僅對請求者和Web服務的信息進行保護,沒有對信息擁有者的隱私進行有效地保護。
Dinh Tien Tuan Anh等人設計并評估了一款運行在Google App Engine上的中間件,叫做Mosco,能有效地管理分享的移動信息,保護用戶的隱私[10]。這篇文章給我們在細粒度的訪問控制上一些啟發,當需要訪問信息的時候,如果請求者不是信息擁有者的朋友,或者親密程度不夠的話,文章中的處理方式是拒絕訪問,太過生硬,可能違背用戶最初分享信息的初衷。
Linke Guo等人為在線社交網絡提出了一種基于信任度的隱私保護的好友推薦的方法,用戶根據自己的隱私偏好找到匹配的好友并與之建立社交關系[11]。文章通過為用戶選擇信任度高的好友進行社交來避免用戶隱私泄露,但是不能靈活的控制用戶發布消息的暴露程度。
Yuan Cheng等人針對在線社交網絡中用戶之間的關系進行訪問控制建模,提出了利用正則表達式符號來對隱私策略進行描述的方法,用戶和資源的訪問控制策略由訪問請求、多種關系類型、評估的出發點和路徑中的跳數組成,并提出了兩種路徑檢測方法來確認用戶之間是否存在訪問關系路徑[12]。文章主要還是關注于用戶是否有訪問權限,而并不能對信息的暴露程度進行靈活的控制。
Leila Bahri等人提出了一個基于標簽的訪問控制方法,用戶可以給他的朋友自定義訪問水平標簽,給自己發布的不同類型的信息自定義敏感度標簽,當用戶需要請求訪問信息的時候需要對他的訪問水平和所要請求的信息的敏感度進行評估,只有訪問水平高于信息的敏感度時才能訪問該信息[13]。
而本文提出的方法是對用戶發布的消息中的敏感信息進行模糊化,相比于現有的訪問控制機制要么可以訪問要么完全不能訪問的情況,本文中用戶的所有好友都可以訪問到消息,但是他們所得到的消息的敏感程度是不一樣的,在保證好友都可以訪問到消息的前提下有效地保護了用戶的隱私。
圖1是用戶通過在線社交應用發布消息的系統。整個系統分為三個部分:消息發布者、消息請求者和在線社交應用。整個處理過程在在線社交應用內部處理,對用戶是透明的,社交應用通過兩個步驟控制整個過程:(1)對消息發布者提交的內容進行語義標注(2)根據請求者的隱私權限,將發布者提交的內容中涉及隱私的詞匯進行模糊化,產生與消息發布者提交的內容語義一致的消息發送給請求者。為了實現這兩個功能,在線社交應用需要兩個模塊:標注模塊和訪問控制模塊。

圖1 系統架構圖
在開始使用在線社交應用時,用戶需要先向在線社交應用提交自己的隱私需求,即,對不同類型的請求者,他們最后看到的隱私信息的詳細程度。這些不同的需求以隱私規則的方式存儲在數據庫中,由在線社交應用進行管理。用戶只要定義好自己的隱私需求,在以后的使用過程中系統會將他的需求應用到他所有發布的消息中,不需要用戶自身來管理各種權限的請求者可以得到什么樣的內容,簡化了用戶的工作。
當User1發布一條消息m,m會發送到標注模塊進行詞性標注和語義分析得到m0,并存儲在在線社交應用中。然后,User2向訪問控制模塊提交訪問m的請求,訪問控制模塊對該請求進行評估,并評定經過詞性標注的消息m0的敏感度。最后,根據User2親密程度的不同運用相應的隱私規則得到新的消息m1,發送給User2。
當用戶通過在線社交應用發布消息時,應用會調用標注模塊。消息的內容經過標注模塊的處理,標注過的內容將用于評估隱私敏感度。
名詞作為用戶發布的消息的一部分含有豐富的語義,通常會帶有一些隱私敏感信息[14]。所以,我們的系統中標注模塊自動的從發布的內容中找出名詞,并對這些名詞進行標注,然后將這些名詞與它們的概念聯系起來。因為一個名詞可能會有不同的意思,例如,蘋果可能指的是我們平常吃的水果,也可能指的是蘋果公司的產品,所以在處理一個名詞的時候要根據發布的信息中真實的語義來消除歧義,選擇最合適的詞義。標注模塊的工作流程如圖2所示。

圖2 標注模塊工作流
把可能泄露用戶隱私的名詞分成兩大類:一類是專有名詞,比如,名字、地點等,一類是普通名詞,比如,一些隱私敏感的疾病、職業等。 ICTCLAS 2016[15]可以自動的對消息中的名詞進行標注,然后利用CN-Dbpedia[16](提供開放API)的資源,把標注的名詞的概念跟 CN-Dbpedia中的資源進行關聯,借助SPARQL查詢語言[17]和語義Web[18]來實現標注名詞的語義分析。
經過之前的語義分析,每個名詞的分類范疇和可能的概念都被找出。然后需要根據發布的消息來確定最合適的詞義,這個過程叫做詞義消歧[19]。在經過詞義消歧以后的結果存儲在標注模塊的數據庫里,下面就對得到的結果進行隱私敏感度分析并執行隱私訪問控制。
在這一部分,提出了一個訪問控制機制,對用戶發布到在線社交應用上的消息進行處理。隱私策略和請求訪問消息的用戶等級由消息發布者自己定義。用戶對自己社交應用中好友的分類類似于基于角色訪問控制中角色的分類,不同類型的好友對發布的消息有不同的訪問權限。
訪問控制機制對可以發布消息的社交應用都是可行的,依賴于現有的社交應用,幫助控制隱私消息的訪問。在線社交應用需要開發一個控制模塊對請求訪問的用戶進行隱私訪問授權,訪問控制模塊在處理訪問請求時需要三類資源:請求訪問的消息;訪問請求者的類型;消息發布者的隱私需求。在處理訪問請求時,訪問控制模塊從標注模塊的數據庫中調出經過標注的消息,消息由三個標簽標注:消息發布者、消息的合作發布者,即,消息發布者在自己的消息里提到的其他人,語義標注。
2.2.1 訪問控制規則
系統根據用戶的需求定義了一系列的訪問控制規則,下面我們就詳細闡述一下訪問控制規則。訪問控制規則包括三個元素:敏感話題(ST)、請求者的類型(RC)、訪問水平(AL)。用戶可以根據自己的隱私偏好選擇他想保護的敏感話題,敏感話題列表由在線社交應用提供,用戶在使用前對自己想要保護的話題進行選擇就可以。用戶還需要將自己社交應用上的好友根據親密程度或者信任程度進行分類,然后根據好友的親密程度將每個敏感話題的訪問水平與請求者類型進行對應。通過這種方式,用戶就可以對自己的隱私信息進行控制,不同類型的請求者訪問到的隱私消息的水平不同。下面的三元組就是一個訪問控制規則:
rulei=
rulei∈Rules(訪問規則)有三個組成元素:敏感話題(sti)、請求者類型(rci),訪問水平(ali)。
定義1(敏感話題(ST))系統提供的可能涉及到個人隱私的話題,這些內容是關于用戶個人信息的,當被他人得到將有可能會濫用并影響到用戶。
例如,涉及用戶個人信息的敏感話題有職業、收入、健康狀況、信仰、家庭住址等等。
定義2(請求者的類型(RC))用戶根據自己與消息請求訪問者的親密程度來對請求者進行分類,在社交應用中可以把請求者分成家人、朋友、陌生人等。
定義3(訪問水平(AL))用戶根據自己隱私偏好對自己發布的敏感話題定義不同的暴露程度,并與不同類型的請求者進行匹配。
例1用戶Alice的其中一個隱私敏感話題是職業,定義的訪問水平是AL=(社會角色,教育工作者,教師),對社交應用的請求訪問者的分類是RC=(陌生人,朋友,家人),所以,當Alice發布了一條消息中含有“教師”這兩個字的時候,陌生人看到的是“社會角色”,她的朋友看到的是“教育工作者”,而她的家人看到的是“教師”。下面是隱私規則:
rule1=<職業,陌生人,社會角色>
rule2=<職業,朋友,教育工作者>
rule3=<職業,家人,職業名稱>
接下來介紹隱私規則的定義過程和系統是如何執行的。
rule4=<定位,陌生人,空>
rule5=<定位,朋友,區屬>
rule6=<定位,家人,具體地點>
rule7=<人名,陌生人,空>
rule8=<人名,朋友,姓名>
rule4禁止陌生人得到用戶定位信息,rule5允許用戶的朋友看到用戶的定位在某個區但是更詳細的位置看不到,rule6允許用戶的家人看到用戶定位的具體地點。rule7禁止陌生人看到用戶發布的消息中的人名,rule8允許朋友得到消息中的人名。
rule9=<健康狀況,陌生人,空>
rule10=<健康狀況,朋友,生病>
rule11=<健康狀況,家人,病名>
在rule中用戶給陌生人設定的訪問水平是“空”,這就意味著陌生人不會得到任何有關該用戶健康狀況的信息。rule10中我們可以看到用戶給自己的朋友設定的訪問水平是“生病”,但是除了這個,朋友并不知道更詳細的信息。rule11中用戶的家人可以看到用戶是感冒了或者胃炎等具體的病名,因為給家人的訪問水平是“病名”。
定義4(概念語義樹)用層次化的樹狀結構來表達概念之間的邏輯關系。
(1)N={n1,n2,…,nn}為概念樹的節點,表示不同的敏感詞。
(2)若一個節點含有子節點,則這個節點稱為其子節點的父節點,父節點的詞匯敏感度低于子節點。
(3)一個節點含有的子樹的根節點稱為該節點的子節點,子節點的詞匯敏感度高于父節點。
(4)當nj節點是ni節點的下層節點時,表示nj節點中的詞匯敏感度高于ni節點中的詞匯。
系統通過比較訪問者的訪問水平和經過語義處理的消息來度量消息中詞匯的敏感度。在語義描述中,本體[20,21]作為知識庫角色,利用它描述客觀事物的概念和關系。本體作為知識庫的特點在實現信息檢索,智能搜索方面提供了一種完善的解決方案[22]。本文本體構建采取的是 Protégé[23,24],Protege是生成和編輯本體與知識庫的可擴展、跨平臺且開放源碼的開發環境,目前已經在30多個國家得到廣泛的推廣和使用。我們利用本體從CN-DBpedia中得到與不同訪問水平對應的概念語義樹,樹中一個節點對應一個訪問水平,對于此節點下層的所有節點對這個訪問水平都是敏感的,即,這個訪問水平不能訪問到下面的節點。如圖3所示,是一棵概念語義樹。

圖3 概念語義樹
例2Alice在社交應用上發布了一條消息,消息中有“教師”這個詞匯,她的朋友Bob(在Alice的社交應用中屬于“朋友”這一訪問者類型)要訪問這條消息。首先,社交應用中的訪問控制模塊會對Bob的請求進行攔截,然后檢查分配給“朋友”這一訪問者類型的隱私規則,以確定Bob的訪問水平(教育工作者),然后調出含有“教育工作者”的這一支(圖3),“教師”節點在“教育工作者”節點下面,最終,訪問控制模塊將消息中的“教師”替換成“教育工作者”(Bob的訪問水平)發送給Bob。
2.2.2 處理策略沖突
在對敏感信息進行處理時,訪問控制模塊也需要處理潛在的策略沖突。當用戶在發布一條消息時提到了他的一個朋友,或者這條消息跟他的朋友相關,這時他的這個朋友就屬于間接消息發布者,而他們兩個人的隱私需求一般來說是不一樣的,這個時候就可能產生隱私策略沖突。為了滿足這兩個人(或更多人)的隱私需求,訪問控制模塊需要處理隱私策略沖突,對兩個(或多個)訪問水平進行比較,在語義樹上選擇靠根節點近的節點,因為越靠近根節點詞義越廣,可以很好地保護隱私信息。
例3Alice在社交應用發布了一條消息,里面提到了Tom,Tom就是這條消息的間接發布者,下面是描述Alice和Tom隱私需求的訪問規則。
rule1-Alice=<職業,陌生人,社會角色>
rule2-Alice=<職業,朋友,教育工作者>
rule3-Tom=<職業,朋友,職業名稱>
我們分兩種情況來討論隱私策略沖突問題:
(1)Bob在Alice社交應用中被分在“陌生人”一組,在在Tom的應用中是“朋友”這一組,根據Alice和Tom各自的隱私訪問規則,Bob得到的信息分別是“社會角色”和“職業名稱”,這時候就產生了隱私策略沖突,社交應用中的訪問控制模塊對“社會角色”和“職業名稱”這兩個訪問水平進行比較,選擇詞義更廣的“社會角色”返回給Bob,最終Bob在Alice發布的消息中看到的是“社會角色”。
(2)Bob在Alice社交應用中被分在“朋友”一組,在Tom的應用中也是“朋友”這一組,但是Alice和Bob給自己朋友定義的隱私訪問水平是不同的。根據Alice和Tom各自的隱私訪問規則,Bob得到的信息分別是“教育工作者”和“職業名稱”,這時候就產生了隱私策略沖突,社交應用中的訪問控制模塊對“教育工作者”和“職業名稱”這兩個訪問水平進行比較,選擇詞義更廣的“教育工作者”返回給Bob,最終Bob在Alice發布的消息中看到的是“教育工作者”。
2.2.3 執行訪問控制
用戶根據好友親密程度的不同,分配給其不同的隱私訪問水平。為了滿足不同的訪問者執行對應的訪問水平,當用戶發布一條消息后,需要根據訪問者的不同類型對該消息進行敏感度評估。敏感度根據下述幾個元素來定義:訪問者的類型、訪問者對應的訪問水平、訪問水平對應的詞,消息中的語義標注。設用戶b請求訪問用戶a發布的消息,首先我們要判斷用戶b的類型rcb,然后根據b的類型從社交應用的庫中調出相應的隱私規則ruleb,然后分配給b相應的隱私訪問水平alb,得到相應訪問水平對應的詞,最后,b得到跟自己訪問水平一致的消息mb。
定義5(訪問請求(IR))用戶a和用戶b是好友,用戶b請求訪問用戶a發布的消息,我們用如下三元組來表示:irba=(b,m,a)。
下述算法定義了系統中訪問控制是如何執行的:
1.Input:An IR,irba=(b,m,a,),T;
//輸入一個訪問請求和概念語義樹
2.Output:al;//輸出訪問水平對應的敏感詞匯
3.request(b,m);//用戶 b 請求訪問用戶 a發布的消息;
4.rcba=JudgeUserType(b);//判斷用戶 b 在 a中的類型;
5.rr1=GetRules(rcba);//b在 a中對應的隱私規則;
6.alba=GetUserAL(rr1);//b 在 a中所對應的訪問水平;
7.al1=DFS(T,alba);
//對概念語義樹進行深度優先遍歷,找到b在a中的訪問水平對應的敏感詞匯;
8.judge=Co-publisher(m);
//判斷用戶a發布的消息是否有間接發布者c,如果有,返回true,如果沒有,返回false;
9.if judge=false;
10.return al=al1;
11.else
12.rcbc=JudgeUserType(b);//判斷用戶 b 的類型;
13.rr2=GetRule(rcbc);//得到 b 對應的隱私規則;
14.albc=GetUserAL(rr2);//得到 b 的訪問水平;
15.al2=DFS(T,albc);//對概念語義樹進行深度優先遍歷,找到b在c中的訪問水平對應的敏感詞匯;
16.al=Choose(al1,al2);//從 al1和al2中選擇更靠近根節點的一個;
17.return al;//返回用戶b訪問水平對應的敏感詞匯;

圖4 算法運行時間
上述算法的時間復雜度為O(n2),空間復雜度為O(n),n為概念語義樹的節點個數。如圖4,隨著概念語義樹節點個數的增加,運行時間也在增加,雖然本文的訪問控制方法需要一定的時間開銷,但是運行時間是很短的,當節點個數增加到100個的時候,運行時間也只有3.2毫秒,完全在我們接受的等待時間的范圍內。
考慮在線社交應用的一個用戶Alice發布了一條消息如下:今天天氣很好,我跟我的好朋友Bob一起去了幼兒園看望小朋友,因為Bob是一個教師,所以他跟孩子們相處的很融洽。消息最后有一個定位是南京航空航天大學。
如圖5所示,是Alice發布的消息,當Alice將這條消息發布到自己的社交應用上之后,社交應用開始對這條消息進行處理,首先,對發布的消息進行名詞標注,結果如下圖6所示。

圖5 Alice在移動社交應用上發布的消息

圖6 經過詞性標注的消息
圖6對消息中的名詞進行了標注,后面有/n、/nr、/ns、/ng的都是名詞,已經被標注出來,nr是人名,ns是地名,ng是名詞性語素。
Alice設置的敏感話題(ST)中包括職業和具體位置,所以經過語義分析和消歧之后,篩選出教師和南京航空航天大學屬于敏感話題,接下來需要對它們進行處理。
首先,我們先來看Alice給她的不同類型的訪問者定義的隱私規則,
rule1-Alice=<職業,陌生人,社會角色>
rule2-Alice=<職業,朋友,教育工作者>
rule3-Alice=<職業,家人,職業名稱>
rule4-Alice=<定位,陌生人,定位>
rule5-Alice=<定位,朋友,區屬>
rule6-Alice=<定位,家人,具體位置>
由于Alice在自己發布的消息中提到了Bob,所以Bob就是這條消息的間接發布者,他的隱私也需要保護,Bob給他的不同的請求訪問者定義的隱私規則如下,
rule7-Bob=<職業,陌生人,社會角色>
rule8-Bob=<職業,朋友,教育工作者>
rule9-Bob=<職業,家人,職業名稱>
rule10-Bob=<定位,陌生人,市屬>
rule11-Bob=<定位,朋友,區屬>
rule12-Bob=<定位,家人,具體位置>
當Alice的朋友Ted想要訪問她發布的這條消息時,Ted向移動在線社交應用發出請求,社交應用對Ted的訪問水平進行評估,在這里,Ted是Alice的朋友,但是對Bob來說,他是一個陌生人,如圖7、圖8所示,是Alice和Bob對不同的敏感詞的隱私訪問水平。

圖7 Alice和Bob的訪問水平

圖8 Alice和Bob的訪問水平
我們可以看到Alice和Bob的隱私策略是沖突的,根據之前策略沖突的處理方法,最終Ted得到的消息中,“教師”由“社會角色”代替,定位中的“江寧區”由“南京”代替,所以最后Ted在他自己的移動在線社交應用上看到的Alice發布的消息內容是這樣的:今天天氣很好,我跟我的好朋友Bob一起去了幼兒園看望小朋友,因為Bob是社會角色,所以他跟孩子們相處的很融洽。消息最后有一個定位是南京。這樣就很好的保護了Alice跟Bob的隱私。
提出了一個隱私驅動的細粒度的訪問控制機制,可以對在線社交應用中的隱私泄露問題進行有效地保護。相比之前的相關工作,本文的主要貢獻在于在線社交應用可以自動的對用戶發布的消息進行語義分析,把涉及到的敏感話題進行標注,然后根據訪問者的不同對該敏感詞進行處理,最后不同的訪問者得到的消息是不同的,而且該訪問控制機制對用戶是透明的,用戶在使用起來簡單便捷。并相應的進行了案例分析,證明了該訪問控制機制的可行性。本文的下一步工作是,將該訪問控制機制應用到現有的在線社交應用中同時提出一種根據不同用戶隱私偏好自動生成用戶的隱私規則的方法。