佘 維,陳建森,顧志豪,田 釗,徐 力,劉 煒
1.鄭州大學軟件學院,鄭州450001
2.鄭州大學互聯(lián)網(wǎng)醫(yī)療與健康服務河南省協(xié)同創(chuàng)新中心,鄭州450001
智慧醫(yī)療、智慧城市和智能家居等典型的物聯(lián)網(wǎng)應用給人們的生產(chǎn)和生活帶來了極大的便利[1-2].然而,在各類物聯(lián)網(wǎng)應用中潛在的信息安全問題也逐漸暴露出來,并為人們所重視[3].2014年,經(jīng)電子郵件泄露證實:許多國家的情報和調查機構要求一個意大利黑客團隊開發(fā)一套利用物聯(lián)網(wǎng)設備漏洞進行監(jiān)視或檢查的工具[4].2017年,機密文件的主要出版物Vault 7 泄露了維基解密(WikiLeaks)情報機構活動的信息.其中,物聯(lián)網(wǎng)節(jié)點位置信息的使用和保護是一類非常特殊的問題:一方面,位置信息是一種標定數(shù)據(jù),常用作定位與導航、距離測算、周邊服務等應用的基礎數(shù)據(jù),有很高的精度要求;另一方面,位置信息又是一種非常敏感的數(shù)據(jù),在個人出行安全、防騷擾、防惡意偵測等方面都需要保護或混淆化.
在物聯(lián)網(wǎng)節(jié)點位置敏感信息保護方面,文獻[6]提出一種結合區(qū)分節(jié)點、精確聚類、RSA、多簽名和區(qū)塊鏈的物聯(lián)網(wǎng)安全與隱私保護新方法,能有效區(qū)分物聯(lián)網(wǎng)中活動節(jié)點和非活動節(jié)點,增加了攻擊的難度,充分保護了物聯(lián)網(wǎng)節(jié)點和數(shù)據(jù)的安全和隱私;文獻[7]提出一種基于區(qū)塊鏈的分布式k-匿名(k-anonymity)位置隱私保護方案,懲罰具有位置泄露和欺騙行為的用戶使其作為請求者時不能成功構造出匿名區(qū),達到約束其自利性的目的,從而有效保護用戶的位置隱私;文獻[8]提出了一種基于差異隱私策略的工業(yè)物聯(lián)網(wǎng)大數(shù)據(jù)位置隱私保護方法.該方法構建多級位置信息樹模型以滿足差異隱私約束的要求,有效保護位置數(shù)據(jù)隱私,但是攻擊者依然能得到物聯(lián)網(wǎng)中的網(wǎng)絡拓撲結構并根據(jù)網(wǎng)絡中的流量情況攻擊流量薄弱節(jié)點,從而導致整個物聯(lián)網(wǎng)的癱瘓.
以上方法均未涉及IoT 節(jié)點真實位置敏感信息匿名保護,在物聯(lián)網(wǎng)位置服務場景下難以滿足節(jié)點位置敏感信息隱私的需要.本文提出基于區(qū)塊鏈的物聯(lián)網(wǎng)節(jié)點位置隱私保護模型,利用區(qū)塊鏈不可篡改和一致性的特性維護所有節(jié)點中白名單的一致性,借助分布式哈希表的網(wǎng)絡結構特征及其邏輯地址轉換,在保證網(wǎng)絡通信正常的前提下隱藏物聯(lián)網(wǎng)的真實拓撲結構,并基于k-匿名方法泛化位置信息,可在正常提供位置服務的同時實現(xiàn)敏感位置信息匿名化.
區(qū)塊鏈是一個自治節(jié)點的網(wǎng)絡,也稱為分布式事務存儲賬本.區(qū)塊鏈自下而上分為數(shù)據(jù)層、網(wǎng)絡層、共識層、激勵層、合約層和應用層.其中,數(shù)據(jù)層利用哈希算法、數(shù)據(jù)加密和時間戳等技術封裝了區(qū)塊鏈底層區(qū)塊;網(wǎng)絡層則包括P2P 技術、節(jié)點間的交互及廣播協(xié)議和節(jié)點的數(shù)據(jù)驗證機制;共識層能保證各節(jié)點間在沒有信任的前提下達成共識,主要共識算法有工作量證明(proof of work, PoW)和權益證明(proof of stake, PoS)等機制;激勵層通過發(fā)行機制和分配機制激勵節(jié)點積極參與區(qū)塊鏈系統(tǒng)的維護;合約層主要封裝了各類腳本和算法,是區(qū)塊鏈可編程特性的基礎;應用層主要是為用戶提供區(qū)塊鏈服務.
區(qū)塊鏈技術主要有4 個核心功能.首先是一致性,如PoW、PoS 等共識機制驗證網(wǎng)絡的節(jié)點行為使所有節(jié)點保持一致性;其次是分布式賬本,它提供了網(wǎng)絡中完整的交易細節(jié)并保證記錄不可篡改;再次是密碼學,它確保了賬本和網(wǎng)絡中的所有數(shù)據(jù)信息都是加密的,只有授權用戶才能解密信息;最后是智能合約[11],其運行原理如圖1所示,它是區(qū)塊鏈的核心要素,是運行在區(qū)塊鏈數(shù)據(jù)賬本上的一段可執(zhí)行的程序,是通過事件觸發(fā)執(zhí)行的,一旦執(zhí)行便不可更改.
圖1 智能合約運行原理Figure 1 Operation principle of smart contract
分布式哈希表[12](distributed Hash table, DHT)是一種分布式存儲方法,這種網(wǎng)絡不需要中心節(jié)點服務器.每個客戶端負責一個小范圍的路由并存儲了少部分數(shù)據(jù),從而實現(xiàn)整個DHT 網(wǎng)絡的尋址和存儲.在DHT 所采用的算法中,最有名的是Kademlia 算法,其原理和實現(xiàn)簡單,維護網(wǎng)絡拓撲的開銷小,也可用于以太坊網(wǎng)絡.
在Kademlia 算法14]中,兩個節(jié)點之間的距離并不是依靠物理距離和路由跳數(shù)來衡量的,而是通過兩節(jié)點ID 的二進制進行異或運算得到的邏輯地址.異或計算距離滿足4 個特點:1)這個距離是節(jié)點和它本身之間的異或距離;2)異或距離是對稱的,即從A到B的異或距離與從B到A的異或距離是等同的;3)異或距離符合三角形不等式;4)對于一個給定的距離,距離A只存在一個唯一的節(jié)點B,即單向性.在異或計算節(jié)點距離的基礎之上,Kademlia 算法還可以將整個網(wǎng)絡劃分成一個二叉前綴樹,每個節(jié)點映射為二叉樹上的某個葉子,如圖2所示.
圖2 網(wǎng)絡拓撲結構Figure 2 Network topology
為了保證系統(tǒng)的魯棒性,Kademlia 算法又引入了K桶[15](Kbucket)機制.節(jié)點在完成拆分子樹以后需要記錄每個子樹上的K個節(jié)點.K桶實際上就是路由表,每個節(jié)點按照自己的視角進行拆分得到N個子樹,此時需要維護N個路由表來對應N個K桶,如表1所示.
表1 K 桶表結構Table 1 K bucket table structure
Kademlia 協(xié)議[16]包括以下4 種遠程RPC 操作:PING、STORE、FIND_NODE、FIND_VALUE.具體說明如下:
1)PING 操作能夠探測一個節(jié)點,用以判斷其是否仍然在線;STORE 操作可以通知一個節(jié)點存儲一個
k-匿名[17]是一種基于位置服務(location based service, LBS)的隱私保護中最常見的方法,實際上是一種在服務的可用性和用戶信息的隱私性之間相互妥協(xié)的算法.k-匿名首先將數(shù)據(jù)集分成顯示標識符、準標識符、敏感屬性、非敏感屬性.顯示標識符能夠唯一確定一條用戶記錄;準標識符能夠以較高的概率結合一定的外部信息確定一條用戶記錄;敏感屬性是指需要保護的信息;非敏感屬性通常指可以直接發(fā)布的信息.k-匿名[18]即用L(M1,M2,···,Md,N1,N2,···,Nt)來表示物聯(lián)網(wǎng)中一個傳感器所收集的數(shù)據(jù)表,簡稱函數(shù)L(d),其中d為準標識符的數(shù)目,t為敏感屬性的數(shù)目.若表中的任意一個記錄至少與表中的k ?1 條記錄的準標識符一致,則稱數(shù)據(jù)表L(d)符合k-匿名定義.
現(xiàn)有的匿名保護技術主要是泛化和抑制[19],泛化是指對數(shù)據(jù)進行更加概括而抽象的描述,而抑制則是指不發(fā)布某些數(shù)據(jù)項.泛化技術分為全局算法和局部算法.全局算法是在整個屬性列上進行泛化,易造成數(shù)據(jù)表的泛化過度而使信息失真度較大;局部算法是將同屬性列中的元素泛化到不同的等級,并將匿名表中的數(shù)據(jù)損失量控制到最小.
k-匿名[20]能夠保證以下3 點隱私要求:1)攻擊者無法知道某個人是否在公開的數(shù)據(jù)中;2)對于給定的一個人,攻擊者無法確認他是否有某項敏感屬性;3)攻擊者無法確認某條數(shù)據(jù)對應的是哪個人.
基于區(qū)塊鏈的物聯(lián)網(wǎng)位置信息保護模型(location information protection for IoT based on blockchain,BC-LIP)是一個3 元組,即BC-LIP=(N,C,S).其中:N={Nmine,Nrout,Nledger,Napp}是IoT 節(jié)點的集合,包含所有參與節(jié)點的角色;C是基于白名單的DHT 網(wǎng)絡,為BCLIP 模型提供節(jié)點通信安全;S是為IoT 網(wǎng)絡提供相應的應用服務.
BC-LIP 模型架構如圖3所示:在網(wǎng)絡層,本文基于白名單的DHT 網(wǎng)絡構建P2P 網(wǎng)絡以完成區(qū)塊鏈IoT 節(jié)點的通信.在交易層構建雙層區(qū)塊結構,將節(jié)點加入和離開網(wǎng)絡的過程與交易過程共同記錄在區(qū)塊中.然后在合約層針對位置隱私服務制定特定的k-匿名合約,保證用戶的信息隱私安全,并允許用戶根據(jù)自身服務的特點制定特定的合約功能,滿足用戶多樣化需求,保證系統(tǒng)的可擴展性.最后在應用層用戶通過Dapp 應用與其他用戶節(jié)點進行交互.
圖3 BC-LIP 模型架構Figure 3 BC-LIP model architecture
在BC-LIP 模型中,每個IoT 設備都是區(qū)塊鏈網(wǎng)絡中的對等節(jié)點,如圖4所示.對于硬件性能(如CPU 和RAM)足夠好的設備可以進行簡單挖礦完成賬本存儲,將有限硬件資源的物聯(lián)網(wǎng)設備(手機和Pad 等)作為區(qū)塊鏈客戶端通過API 與區(qū)塊鏈節(jié)點進行交互通信.所有節(jié)點實時交互以維護整個物聯(lián)網(wǎng)安全通信.
在BC-LIP 的模型中,每個物聯(lián)網(wǎng)設備都參與到區(qū)塊鏈事務中,節(jié)點總共承載4 個角色:挖礦、路由、數(shù)據(jù)賬本、Application.
1)挖礦功能是指對于硬件性能足夠好的設備,運行本文提出的共識算法,通過算法競爭獲得記賬權,從而維護網(wǎng)絡的一致性.
2)路由功能是所有節(jié)點都必須參與的,這個功能可以保證區(qū)塊鏈物聯(lián)網(wǎng)的節(jié)點正常通信.不具備路由功能的設備是不能加入網(wǎng)絡的.
3)數(shù)據(jù)賬本功能是針對存儲空間足夠的設備,需要保存本文的全部賬本信息.
4)Application 功能對設備硬件需求不高,所有節(jié)點都可以運行輕量級客戶端,便于節(jié)點間數(shù)據(jù)共享的同時提供位置服務接口.
圖4 BC-LIP 節(jié)點Figure 4 BC-LIP nodes
在BC-LIP 模型中,區(qū)塊由區(qū)塊頭和區(qū)塊體構成,其結構如圖5所示.區(qū)塊頭包含區(qū)塊的版本號、前一區(qū)塊的哈希、時間戳以及交易賬本和白名單等信息;區(qū)塊體分兩層數(shù)據(jù)結構,分別是Merkle 樹和字典.交易賬本使用Merkle 樹結構存儲交易信息,將所有交易哈希遞歸存儲到交易賬本根;白名單使用字典存儲
區(qū)塊體的白名單是字典結構,記錄的是所有設備信息的白名單,用于驗證一個設備的可靠性.而區(qū)塊頭的白名單是將設備信息進行Hash 計算得到Hash root,只是記錄一個Hash 值,這樣減小了區(qū)塊頭的存儲空間,使區(qū)塊鏈中的輕節(jié)點方便查詢.所有輕節(jié)點通過校對區(qū)塊頭中的白名單即可驗證白名單是否被篡改或者設備是否存儲在區(qū)塊鏈的白名單中.
圖5 BC-LIP 區(qū)塊結構Figure 5 BC-LIP block structure
IoT-LIP 的網(wǎng)絡拓撲結構以DHT 網(wǎng)絡為基礎通過Kademlia 協(xié)議通信,并使用XOR(異或)運算來計算節(jié)點之間的距離,將節(jié)點位置映射為二叉樹結構,這樣就可以避免真實的物聯(lián)網(wǎng)拓撲結構暴露.每個節(jié)點都可以從自己的視角對二叉樹進行拆分,首先找到距離自己最近的節(jié)點,然后將這些節(jié)點對應的白名單信息維護在自身的K桶中.DHT 網(wǎng)絡運行與維護如圖6所示,當有新節(jié)點加入時,新節(jié)點需要網(wǎng)絡中的種子節(jié)點作為引導進行加入申請,然后種子節(jié)點在網(wǎng)絡中不斷廣播新節(jié)點信息直到廣播至全網(wǎng),最后新節(jié)點通過返回的信息完成自身需要的K桶信息并進行維護,此時新節(jié)點加入網(wǎng)絡成功,其他節(jié)點維護新節(jié)點信息并進行K桶更新.
圖6 DHT 網(wǎng)絡維護與更新Figure 6 DHT network maintenance and update
DHT 網(wǎng)絡運行的具體步驟如下:
步驟1加入網(wǎng)絡
步驟1-1新節(jié)點A首先需要一個種子節(jié)點B作為引導,并把該種子節(jié)點加入到對應的K桶中,之后隨機生成一個節(jié)點ID 和密鑰對.
步驟1-2向節(jié)點B發(fā)起FIND_NODE 請求,請求信息包括自己的ID、公鑰和設備唯一識別號.
步驟1-3節(jié)點B收到該請求后,把A的信息加入自身維護的K桶,然后廣播至全網(wǎng)使挖礦節(jié)點記錄此交易并將節(jié)點A的信息加入白名單,同時在全網(wǎng)中找到K個離A最近的節(jié)點,并返回給節(jié)點A.
步驟1-4節(jié)點A收到這K個節(jié)點的ID 之后,把它們加入自己的K桶.
步驟1-5節(jié)點A繼續(xù)向這K個節(jié)點發(fā)送FIND_NODE 請求,直至建立足夠詳細的路由表.
步驟2定位節(jié)點
步驟2-1首先由發(fā)起者確定目標ID 對應路由表中的K桶位置,然后從自己的K桶中篩選出K個距離目標ID 最近的節(jié)點,并同時向這些節(jié)點發(fā)起FIND_NODE 的查詢請求.
步驟2-2被查詢節(jié)點收到FIND_NODE 請求后,從對應的K桶中找出自己所知道的最近的K個節(jié)點,并返回給發(fā)起者.
步驟2-3發(fā)起者收到這些節(jié)點后更新自己的結果列表,并再次從收到的K個節(jié)點中挑選未發(fā)送請求的節(jié)點重復步驟2-1,直到無法獲取比發(fā)起者當前已知的K個節(jié)點更接近目標節(jié)點ID 的活動節(jié)點為止.
步驟3-1首先發(fā)起者查找自己是否存在
步驟3-2對于收到FIND_VALUE 請求的節(jié)點,首先也要檢查自己是否存儲了
步驟3-3發(fā)起者若收到value,則結束查詢過程;否則發(fā)起者收到這些節(jié)點后更新自己的結果列表,并再次從其中K個距離key 值最近的節(jié)點,挑選未發(fā)送請求的節(jié)點再次發(fā)起FIND_VALUE 請求,直到獲取到value 或者無法獲取比發(fā)起者當前已知的K個節(jié)點更接近key 值的活動節(jié)點為止,此時表示未找到value 值.
步驟4保存資源
步驟4-1發(fā)起者首先定位K個距離目標key 值最近的節(jié)點.
步驟4-2發(fā)起者對這K個節(jié)點發(fā)起STORE 請求操作.
步驟4-3接收到STORE 請求的節(jié)點將保存
步驟4-4執(zhí)行STORE操作的K個節(jié)點每小時重新發(fā)布自己所有的
步驟4-5為了限制失效信息,所有
從不同灌溉模式來看,2016年水稻季W(wǎng)1和W0處理下的灌水量差異不大,而2017年水稻季W(wǎng)0處理比W1處理灌水量平均多210.0 mm。W1和W0處理下2016年水稻季的排水量差異不大,而2017年水稻季W(wǎng)0處理下的排水量是W1處理的2倍,可見W1處理在平水年可減少灌水量及排水量。
步驟5網(wǎng)絡維護
步驟5-1任何節(jié)點都可以發(fā)起FIND_NODE 請求,并根據(jù)最新區(qū)塊的白名單刷新K桶中的節(jié)點信息.
步驟5-2當接收到其他節(jié)點發(fā)送過來的請求(如:FIND_NODE、FIND_VALUE),先驗證該節(jié)點是否在白名單中,如果在則把該節(jié)點ID 加入K桶,如果不在則拒絕請求.
步驟5-3發(fā)起PING 請求,判斷K桶中某個節(jié)點是否在線,然后清理K桶中那些下線的節(jié)點.
為了解決鏈接攻擊所導致的隱私泄露問題,本文基于BC-LIP 模型提出了k-LIP 智能合約.首先,IoT 設備收集數(shù)據(jù)事件觸發(fā)k-LIP 合約,使k-LIP 合約自動執(zhí)行;然后該合約運用泛化技術發(fā)布精度較低的位置信息,使得同一個準標識符至少有k條記錄,這樣攻擊者無法通過準標識符連接記錄輕易獲得用戶位置信息與個體間的關聯(lián)關系;最后該合約根據(jù)匿名數(shù)據(jù)集提供位置服務.
算法 k-LIP=LIP-Contract(data,k)
輸入data 表示IoT 收集的數(shù)據(jù)集;
k表示k-匿名的限制.
輸出k-LIP表示針對data 中的IoT 設備的位置信息泛化后的匿名數(shù)據(jù)集.
算法步驟如下:
LIP-Contract 算法
begin
1)由數(shù)據(jù)集data 中生成初始等價類,使等價類中各個元組在準標識符上值相等
2)循環(huán),直至不存在元組數(shù)目小于k的等價類
①隨機選擇一個小于k的等價類C
②計算C與其他所有等價類的距離
③找到距離C最近的等價類C′
④將C和C′合并為一類,并泛化C和C′
循環(huán)結束
3)返回匿名數(shù)據(jù)集
end;
位置服務過程如圖7所示,具體步驟如下:
步驟1位置信息服務商
本文模型主要研究物聯(lián)網(wǎng)設備安全,不涉及上層服務應用,所以在整個模型中提供位置信息服務接口api,并由第3 方機構進行完善.
步驟2位置信息服務請求
網(wǎng)絡模型中的任何節(jié)點都可以請求位置信息服務,比如統(tǒng)計某區(qū)域發(fā)病率、推薦周邊服務等.當一個節(jié)點發(fā)起位置信息服務請求時,該節(jié)點將設備唯一識別號peerID、服務接口api 和該設備泛化后的數(shù)據(jù)集k-LIP 發(fā)送至自身維護K-桶中的K個節(jié)點并發(fā)起FIND_VALUE 請求,而收到該請求的節(jié)點繼續(xù)將接收到的請求信息發(fā)送至自身維護的K個節(jié)點,直至廣播全網(wǎng).
步驟3請求處理
當節(jié)點接收到請求消息時,首先在自己維護的白名單中查找請求節(jié)點,如果白名單中有該節(jié)點則響應請求,如果白名單沒有該節(jié)點的信息則拒絕該請求.接收節(jié)點檢查自己是否滿足請求節(jié)點的需求,如果滿足則將自身的資源信息返回給請求節(jié)點.此交互在區(qū)塊鏈中記為交易,并記錄在區(qū)塊鏈賬本中.
在IoT 設備收集個人醫(yī)療健康數(shù)據(jù)的場景,構造一個基于區(qū)塊鏈的物聯(lián)網(wǎng)節(jié)點位置隱私模型仿真實驗.在仿真實驗中,首先構建基于白名單的DHT 網(wǎng)絡,該網(wǎng)絡實現(xiàn)節(jié)點加入及白名單權限認證、節(jié)點之間安全共享數(shù)據(jù)的需求;其次搭建了區(qū)塊鏈平臺,使用k-匿名算法實現(xiàn)了區(qū)塊鏈中的k-匿名智能合約,該合約保護了實驗收集的個人敏感數(shù)據(jù)的隱私.實驗使用Java 語言模擬基于白名單的DHT 網(wǎng)絡,并完成k-LIP 合約.
3.2.1 節(jié)點加入網(wǎng)絡并連接
本文首先在網(wǎng)絡中模擬4 個節(jié)點,然后隨機創(chuàng)建一個新節(jié)點加入網(wǎng)絡.新節(jié)點與其他節(jié)點完成連接,并將其他節(jié)點信息加入本身維護的K桶.以其中一個節(jié)點為例,查看其路由表的信息維護過程.如表2所示:桶深度為0 的有1 個節(jié)點,表示自身節(jié)點;深度為2 的有3 個節(jié)點,表示距離自己為2 的3 個節(jié)點.當新節(jié)點加入網(wǎng)絡時,網(wǎng)絡中其他節(jié)點會將新節(jié)點信息添加到自身維護的路由表中,如表3所示.采用異或計算得到新節(jié)點與自身節(jié)點的距離為2,然后在深度為2 的桶中添加新節(jié)點的信息.在該過程中,節(jié)點的ID 是經(jīng)過Hash 處理的,可以保護節(jié)點的信息,同時節(jié)點連接過程是通過異或距離連接的,這樣IoT 設備不需要真實位置信息就可以連接通信,避免了真實路由拓撲結構的暴露.
圖7 位置信息服務流程Figure 7 Location information service process
表2 原始路由表Table 2 Original routing table
表3 新增節(jié)點的路由表Table 3 Routing table for new node
3.2.2 在網(wǎng)絡中共享數(shù)據(jù)
在該仿真階段,如表4所示:首先創(chuàng)建兩個節(jié)點node1 和node2,然后node2 向網(wǎng)絡中共享數(shù)據(jù);node1 通過網(wǎng)絡來檢索資源,不僅檢索到資源目標同時檢索到了資源的來源信息.來源信息中的node2 的ID 是原始ID 進行Hash 加密的匿名ID,這將提高了節(jié)點的隱私信息,同時資源信息也是通過Hash 加密得到資源key,保護了數(shù)據(jù)的隱私.
表4 數(shù)據(jù)共享Table 4 Data sharing
當物聯(lián)網(wǎng)設備向網(wǎng)絡中共享收集的數(shù)據(jù)時,觸發(fā)k-匿名合約.自動執(zhí)行k-LIP 算法,將需要共享的數(shù)據(jù)進行泛化處理,使攻擊者不能從其中任何一條數(shù)據(jù)確定個人的相關信息.表5給出了物聯(lián)網(wǎng)設備收集到的原始數(shù)據(jù),當節(jié)點共享這些數(shù)據(jù)時,自動執(zhí)行k-LIP 合約.根據(jù)數(shù)據(jù)統(tǒng)計的需求對郵編進行泛化處理,從而將郵編泛化至需要統(tǒng)計的地區(qū)范圍,如表6所示.如果要統(tǒng)計某市區(qū)內的患病情況,就需要給出統(tǒng)計的地區(qū)范圍.首先獲得此地區(qū)的郵編,然后將郵編泛化至此范圍內,在不暴露個人數(shù)據(jù)信息的前提下進行數(shù)據(jù)統(tǒng)計分析.
表5 原始數(shù)據(jù)Table 5 Raw data
在BC-LIP 模型中,首先將所有IoT 設備通過DHT 網(wǎng)絡連接到區(qū)塊鏈網(wǎng)絡中.其中所有設備節(jié)點的所有行為,包括節(jié)點加入、節(jié)點請求以及數(shù)據(jù)共享等都記錄在區(qū)塊鏈賬本中,這樣可保證節(jié)點的作惡行為不可篡改.當其他節(jié)點發(fā)現(xiàn)有一個節(jié)點有作惡行為時,在白名單中取消該作惡節(jié)點,并取消該節(jié)點的訪問權限.其次,當設備加入?yún)^(qū)塊鏈網(wǎng)絡時,應將該設備的唯一識別號、注冊賬號和密鑰對記錄在區(qū)塊鏈白名單中,便于區(qū)塊鏈網(wǎng)絡中的所有設備根據(jù)白名單隨時更新自身維護的K桶;當節(jié)點進行通信時,必須根據(jù)白名單進行訪問權限控制以保護網(wǎng)絡.然后當所有設備節(jié)點通過DHT 網(wǎng)絡進行通信時,可以采用節(jié)點ID 的邏輯地址進行通信,這樣避免真實路由拓撲的暴露,防止攻擊者輕易攻擊網(wǎng)絡.最后,采用LIP-Contract 算法實現(xiàn)k-LIP 合約,在不暴露個人數(shù)據(jù)隱私的前提下在應用層提供數(shù)據(jù)統(tǒng)計分析服務.在BC-LIP 模型中的應用層,用戶可以憑借合約制定特定的位置信息服務,保證模型的可擴展性.
表6 數(shù)據(jù)泛化處理Table 6 Data generalization
將本文模型與已有的為解決物聯(lián)網(wǎng)安全問題的模型進行對比分析,如表7所示.文獻[7]提出了構造匿名區(qū)的方法對物聯(lián)網(wǎng)設備位置進行匿名處理,保護了物聯(lián)網(wǎng)設備的位置信息;文獻[8]提出了基于差異隱私策略的工業(yè)物聯(lián)網(wǎng)大數(shù)據(jù)位置隱私保護,該方法構建多級位置信息樹模型以滿足差異隱私約束的需求,從而保護IoT 設備的安全.然而,文獻[7]提出的構造匿名區(qū)的方案只是對IoT 設備的真實位置進行匿名處理,并未針對IoT 設備收集的數(shù)據(jù)以及設備之間的數(shù)據(jù)共享進行保護;文獻[8]基于差異隱私策略對設備收集的敏感數(shù)據(jù)進行安全處理,而未對節(jié)點真實物理位置信息進行匿名化.本文模型首先基于白名單的DHT 實現(xiàn)區(qū)塊鏈網(wǎng)絡保護IoT 設備的真實位置信息,然后以k-LIP 合約對收集的數(shù)據(jù)中的敏感屬性進行匿名保護,最后設置客戶端層與合約層的API 實現(xiàn)模型的服務可擴展性.
表7 本文模型與現(xiàn)有模型對比Table 7 Comparison between proposed model and existing models
現(xiàn)有的物聯(lián)網(wǎng)安全方案并不能有效保護IoT 設備的位置信息隱私,為此本文提出了基于區(qū)塊鏈的物聯(lián)網(wǎng)設備隱私保護方案.本文方案將傳統(tǒng)物聯(lián)網(wǎng)映射成P2P 網(wǎng)絡,借助區(qū)塊鏈技術的匿名方法和白名單的權限控制將物聯(lián)網(wǎng)的真實網(wǎng)絡拓撲實現(xiàn)隱藏,并對IoT 設備進行訪問控制,該方法提高了物聯(lián)網(wǎng)設備的安全性;同時采用k-匿名合約來提高物聯(lián)網(wǎng)設備信息的隱私性,從而在隱藏IoT 設備物理位置及泛化數(shù)據(jù)信息的情況下保證了IoT 設備的位置信息隱私安全.