石瑞生, 馮慶玲, 蘭麗娜, 時金橋
1. 北京郵電大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院, 北京100876
2. 北京郵電大學(xué) 可信分布式計算與服務(wù)教育部重點實驗室, 北京100876
3. 北京郵電大學(xué) 網(wǎng)絡(luò)教育學(xué)院, 北京100876
發(fā)布訂閱系統(tǒng)因其異步和去耦合的特性已被廣泛應(yīng)用于大規(guī)模的信息傳輸系統(tǒng)中, 比如谷歌的Thialfi 系統(tǒng)、Facebook 的Wormhole 系統(tǒng)、LinkedIn 的Kafka 系統(tǒng)、面向物聯(lián)網(wǎng)的MQTT、面向?qū)崟r應(yīng)用的DDS, 并應(yīng)用于各種各樣的業(yè)務(wù)場景, 包括智慧樓宇[1]、e-health 電子健康系統(tǒng)[2]、智能交通監(jiān)控系統(tǒng)[3]、智能電網(wǎng)系統(tǒng)[4]、股票報價系統(tǒng)、Blog 訂閱系統(tǒng)、戰(zhàn)場情報分發(fā)系統(tǒng)等. 然而隨著云服務(wù)的普及和發(fā)展, 國內(nèi)外主流的云服務(wù)廠商都開始提供發(fā)布訂閱云服務(wù)[5–7], 發(fā)布訂閱系統(tǒng)的應(yīng)用環(huán)境已經(jīng)從封閉的可信計算環(huán)境轉(zhuǎn)變?yōu)殚_放的不可信計算環(huán)境, 隱私保護(hù)問題開始凸顯.
盡管可以使用SSL 來保證客戶端與云服務(wù)器之間通信的安全性, 但不受信任的云端代理在獲取到事件和訂閱后仍可能會泄露這些信息, 使得事件和訂閱的機密性遭到破壞. 比如在股票市場報價系統(tǒng)中, 一旦代理獲得某個投資者或投資機構(gòu)訂閱的股票信息, 便可以知道他的投資策略, 這些信息可能會被透露給該投資者的對手, 給投資者造成巨大的經(jīng)濟(jì)損失. 因此, 需要研究針對發(fā)布訂閱系統(tǒng)的機密性保護(hù)技術(shù)來保證事件和訂閱的機密性. 其次即使可以使用加密技術(shù)以保證信息的安全傳輸和存儲, 但是攻擊者仍然可以通過竊聽和流量分析等方式通過監(jiān)視一些消息流來獲取發(fā)布者或訂閱者的IP 地址, 進(jìn)而暴露發(fā)布者或訂閱者的身份信息, 使得發(fā)布訂閱系統(tǒng)中發(fā)布者或訂閱者的匿名性遭到破壞.
通過谷歌學(xué)術(shù)等檢索工具,調(diào)研了2001–2020 年安全、網(wǎng)絡(luò)、軟件工程等領(lǐng)域的主流會議與期刊,共檢索到發(fā)布訂閱隱私保護(hù)相關(guān)的文獻(xiàn)57 篇,發(fā)表的地方主要包括USENIX、CCS、NDSS、S&P、Middleware、ICDCS、SRDS、SecureComm、ICC、GLOBECOM、DEBS 及NSS 等主流學(xué)術(shù)會議和TOCS、TKDE、TPDS 及TDSC 等著名學(xué)術(shù)期刊, 發(fā)布訂閱系統(tǒng)中隱私保護(hù)研究文獻(xiàn)變化情況如圖1 所示, 我們發(fā)現(xiàn)該領(lǐng)域早期的研究工作不太活躍, 近年來開始走向活躍.
圖1 發(fā)布訂閱系統(tǒng)中隱私保護(hù)研究文獻(xiàn)變化情況Figure 1 Document changes of privacy protection research in publish-subscribe systems
通過分析, 我們認(rèn)為主要有兩方面的原因: (1) 一方面是早期的應(yīng)用場景大多是企業(yè)內(nèi)部的封閉計算環(huán)境, 發(fā)布訂閱系統(tǒng)的運行環(huán)境被認(rèn)為是可信的, 隱私保護(hù)問題不被重視. (2) 另一方面是發(fā)布訂閱隱私保護(hù)機制的研究在技術(shù)上遇到了瓶頸, 已有的發(fā)布訂閱隱私保護(hù)方法存在計算速度慢、可擴展性不好等問題, 無法支持大規(guī)模訂閱的匹配, 導(dǎo)致其缺乏實際部署和應(yīng)用, 進(jìn)而降低了該領(lǐng)域的活躍程度. 發(fā)布訂閱隱私保護(hù)技術(shù)的早期研究者, 遇到了需求和技術(shù)兩方面的困難, 導(dǎo)致在相當(dāng)長一段時間內(nèi)該領(lǐng)域的研究不太活躍. 近年來, 隨著發(fā)布訂閱云服務(wù)的流行, 發(fā)布訂閱系統(tǒng)隱私保護(hù)問題的重要性日益凸顯, 吸引了更多的研究者的關(guān)注. 同時, SGX 等可信計算技術(shù)的出現(xiàn)、保序加密等密碼技術(shù)的發(fā)展, 也給該領(lǐng)域的研究提供了新的工具和研究思路. 例如, 2016 年P(guān)ires 等人[8]在Middleware 上發(fā)表的文章中第一次從系統(tǒng)安全的角度提出在發(fā)布訂閱云基礎(chǔ)設(shè)施中創(chuàng)建SGX 可信執(zhí)行環(huán)境進(jìn)行事件匹配. 2019 年伯克利分校的研究團(tuán)隊在USENIX 上發(fā)表的文章[1]中著重闡述在資源受限型的物聯(lián)網(wǎng)設(shè)備間實現(xiàn)端到端的加密和密鑰委托(key delegation). 2020 年北京郵電大學(xué)的研究團(tuán)隊在IEEE BigData 上發(fā)表的文章[9]基于保序加密算法提出了針對發(fā)布訂閱云服務(wù)場景的高效密文匹配方法. 圖2 按照時間軸總結(jié)了該領(lǐng)域主要研究工作的貢獻(xiàn).
圖2 發(fā)布訂閱系統(tǒng)隱私保護(hù)技術(shù)的發(fā)展Figure 2 Development of publish-subscribe system privacy protection technology
目前尚缺乏對發(fā)布訂閱隱私保護(hù)技術(shù)近五年研究進(jìn)展的相關(guān)報道, 為彌補這一缺失, 本文從機密性和匿名性兩個方面對現(xiàn)有的發(fā)布訂閱系統(tǒng)隱私保護(hù)研究工作進(jìn)行了總結(jié), 通過分析現(xiàn)有發(fā)布訂閱隱私保護(hù)技術(shù)存在的問題和不足, 對未來的發(fā)展趨勢進(jìn)行了展望. 希望能夠給當(dāng)前發(fā)布訂閱隱私保護(hù)技術(shù)的相關(guān)研究提供一定的參考與幫助.
通用的發(fā)布訂閱系統(tǒng)主要由三個角色組成: (1) 發(fā)布者, 其向系統(tǒng)中發(fā)布事件; (2) 訂閱者, 其向系統(tǒng)中發(fā)送感興趣的訂閱; (3) 代理(broker), 作為連接發(fā)布者和訂閱者的中間節(jié)點, 負(fù)責(zé)存儲訂閱, 匹配事件和訂閱路由表, 并將匹配的事件轉(zhuǎn)發(fā)給對應(yīng)的訂閱者.
根據(jù)訂閱約束模型通常將發(fā)布訂閱系統(tǒng)分為兩種: 基于內(nèi)容的(content-based) 和基于主題的(topicbased). 其中在基于主題的發(fā)布訂閱系統(tǒng)中, 發(fā)布者在特定的主題上發(fā)布事件, 訂閱者在感興趣的主題上發(fā)送訂閱, 其可看作是基于內(nèi)容的發(fā)布訂閱系統(tǒng)的簡單特例, 為此我們主要介紹基于內(nèi)容的發(fā)布訂閱系統(tǒng)(content-based pub/sub system, CBPS) 模型.
如圖3 所示, 在CBPS 中, 事件通常由事件頭(header) 和負(fù)載(payload) 組成, 事件頭可看作一個二元組(屬性名, 屬性值), 也可將其理解成鍵值(key-value) 對. 其中屬性名表示要發(fā)布的事件屬性, 屬性值表示在該屬性上的取值. 比如在圖3 所示的股票報價系統(tǒng)中, 事件Pub 的事件頭為: price = 300,name=“IBM”, date=2020/2/6, 那么在該事件頭中price、name 和date 就是屬性名, 300、“IBM” 和2020/2/6 分別為對應(yīng)屬性上的屬性值, 表示2020 年2 月6 號當(dāng)天IBM 公司發(fā)布的股票價格為300 美元. 在發(fā)布訂閱系統(tǒng)中, 事件頭用于和代理處存儲的訂閱執(zhí)行匹配, 負(fù)載是最終要交付給訂閱者的全部數(shù)據(jù), 負(fù)載一般與事件頭相同, 但也可以比事件頭更豐富完整. 比如在發(fā)送股票信息時, 負(fù)載中除了添加事件頭內(nèi)容, 還可以添加該股票的價格變動圖等信息. 一般事件只用事件頭表示, 負(fù)載是可選的. 當(dāng)事件與訂閱匹配時, 如果沒有負(fù)載, 那么系統(tǒng)直接將事件頭轉(zhuǎn)發(fā)給對應(yīng)的訂閱者; 如果有負(fù)載, 則將事件頭對應(yīng)的負(fù)載轉(zhuǎn)發(fā)給訂閱者, 也可以將事件頭和負(fù)載一塊轉(zhuǎn)發(fā), 在圖3 中僅將負(fù)載發(fā)送給匹配的訂閱者S2.
圖3 基于內(nèi)容的發(fā)布訂閱系統(tǒng)模型Figure 3 System model of content-based publish and subscribe
訂閱由屬性約束集組成, 每個屬性約束可看作一個三元組(屬性名, 操作符, 約束值), 其中屬性名表示對哪個屬性設(shè)置約束, 屬性一般有兩種取值類型, 即數(shù)值型或者字符串型; 操作符, 如果是數(shù)值型的屬性,可以在其上設(shè)置等值(=)、非等值(>, <,≤,≥) 或者區(qū)間類型的約束, 如果是字符串類型的屬性, 則可以在其上設(shè)置等值、前綴、后綴或者其子串類型的約束, 一般等值類型較多; 約束值, 即設(shè)置的感興趣的事件屬性上的取值. 比如圖1 中的訂閱Sub1: price <200, name=IBM, 其中price 和name 就是屬性名, 可以看出, price 為數(shù)值類型, name 為字符串類型, <和= 為操作符, “200” 和“IBM” 為約束值, 表示該訂閱者想獲取IBM 公司股票價格小于200 美元時的股票信息.
事件與訂閱匹配當(dāng)且僅當(dāng)對訂閱中的每個約束在事件中均能找到與其匹配的屬性和屬性值. 比如對訂閱Sub2, 事件Pub 在屬性name 和value 上的取值均滿足該訂閱, 因此Pub 與Sub2匹配. 而對Sub1,雖然Pub 在name 上的取值滿足該訂閱, 但在price 上的取值不滿足, 因此Pub 與Sub1不匹配.
發(fā)布訂閱系統(tǒng)可利用訂閱之間的包含(containment) 關(guān)系來減少用于匹配的訂閱數(shù)量以提高事件匹配的效率.
如果一條訂閱s1比另一條訂閱s2更通用(general), 則認(rèn)為訂閱s1包含訂閱s2. 此時如果任意一個事件匹配s2, 那么該事件也一定匹配s1, 反之, 如果任意一個事件不匹配s1, 那么它一定也不匹配s2. 比如訂閱s1: price <30 包含訂閱s2: price <20, 事件p1: price=15 是匹配訂閱s2的, 可以看出p1也一定是匹配訂閱s1的. 反之事件p2: price=45 不匹配訂閱s1, 可以看出其也一定不匹配s2.
訂閱包含關(guān)系一般在事件明文匹配中用于提高匹配效率[21–23], 在事件和訂閱的密文匹配方面, 也有相關(guān)文獻(xiàn)[13,16,19]利用這種包含關(guān)系, 此時包含關(guān)系的使用雖然縮小了要匹配的訂閱集合但同時也暴露了訂閱之間的關(guān)系, 削弱了訂閱的機密性.
發(fā)布訂閱系統(tǒng)的隱私保護(hù)不僅僅要防止通信內(nèi)容被竊聽, 還要防止通信行為被監(jiān)視. 也就是說, 通信主體的數(shù)據(jù)和身份都需要得到保護(hù). 因此, 發(fā)布訂閱系統(tǒng)的隱私性要包括機密性和匿名性兩個方面.
3.1.1 機密性
發(fā)布訂閱系統(tǒng)的機密性是指保護(hù)發(fā)布者發(fā)布的事件和訂閱者發(fā)送的訂閱不被攻擊者獲取.
發(fā)布訂閱系統(tǒng)中的機密性屬性可被定義為3 類:
(1) 事件機密性. 保護(hù)用來和訂閱匹配的事件頭在系統(tǒng)中傳輸時不被代理、不匹配該事件的訂閱者以及系統(tǒng)中的外部竊聽者所知道;
(2) 負(fù)載機密性. 如果事件帶有消息負(fù)載時, 保護(hù)負(fù)載在傳輸時不被代理、不匹配該事件的訂閱者及外部竊聽者獲取.
(3) 訂閱機密性. 保護(hù)訂閱者發(fā)送的訂閱在傳輸和存儲時不被發(fā)布者、其他訂閱者、代理和系統(tǒng)中的竊聽者所知道.
3.1.2 匿名性
發(fā)布訂閱系統(tǒng)的匿名性是指保護(hù)發(fā)布者和訂閱者的身份不被竊聽者所識別. 文獻(xiàn)[17] 和[18] 分別給出了發(fā)布訂閱系統(tǒng)匿名性的詳細(xì)定義及對發(fā)布訂閱系統(tǒng)匿名性的度量.
(1) 匿名性的定義Vo 等人[17]對基于主題的發(fā)布訂閱系統(tǒng)中的發(fā)布者匿名性、訂閱者匿名性和訂閱匿名性進(jìn)行了定義. 其將系統(tǒng)中的實體分成兩部分, 第一部分是可信實體集, 可信實體集中的參與者在系統(tǒng)中是可信的, 不會與攻擊者或其它參與者共謀; 另一部分是共謀實體集, 是除可信實體集外剩余的參與者, 因為攻擊者有可能與系統(tǒng)中訂閱者、代理或發(fā)布者等節(jié)點共謀, 因此這些實體均是不可信的. 給定一個事件, 發(fā)布者匿名性指攻擊者在可信實體集中識別不出發(fā)布該事件的發(fā)布者. 給定一個主題t, 假設(shè)在系統(tǒng)中對該主題進(jìn)行訂閱的訂閱者總共有s個, 其中共謀實體集中訂閱的有As個, 訂閱者匿名性指攻擊者從剩余的(s-As) 個可信實體集中識別不出哪一個對該主題進(jìn)行了訂閱. 假設(shè)系統(tǒng)中總的主題有T個, 給定訂閱者, 訂閱匿名性指攻擊者無法從這T個主題中識別其訂閱的是哪一個.
(2) 匿名性的度量Daubert 等人[18]用匿名集的大小來衡量發(fā)布訂閱系統(tǒng)所能提供的匿名保護(hù)程度. 匿名集指系統(tǒng)中的一個實體集合, 匿名集越大, 發(fā)布者和訂閱者的匿名性保護(hù)程度越好. 最大的匿名集是系統(tǒng)中所有實體(包括發(fā)布者、訂閱者和代理) 的集合, 此時從攻擊者的角度看, 系統(tǒng)中的每個實體都可能是發(fā)布者或訂閱者.
威脅模型可以說是機密性和匿名性問題研究的起點, 現(xiàn)有相關(guān)算法對機密性和匿名性的實現(xiàn)都是針對特定威脅模型下的, 因此需要在詳細(xì)的介紹隱私保護(hù)方案前給出系統(tǒng)中機密性和匿名性威脅模型的說明.
3.2.1 機密性威脅模型
根據(jù)發(fā)布訂閱系統(tǒng)成員是否可信本文將機密性威脅模型分為2 種:
(1) 節(jié)點是可信的即假設(shè)系統(tǒng)中的發(fā)布者、訂閱者和代理均是受信任的, 他們會遵守協(xié)議的約定, 節(jié)點之間不會共謀、不會惡意執(zhí)行某些操作, 此時系統(tǒng)是最安全的. 就代理來說, 在早期的發(fā)布訂閱系統(tǒng)中, 其主要部署在企業(yè)內(nèi)部的數(shù)據(jù)中心, 是在封閉的可信計算環(huán)境中運行的, 因此代理是可信的. 例如, 谷歌、雅虎、LinkedIn 等互聯(lián)網(wǎng)公司用于自身產(chǎn)品的發(fā)布訂閱系統(tǒng). 在這種情況下, 由于參與的節(jié)點是可信的, 只需保證事件和訂閱在傳輸過程中不被泄露, 可通過在節(jié)點之間建立SSL 安全信道以保證端到端通信的機密性.
(2) 節(jié)點是不可信的隨著云計算的發(fā)展, 越來越多的公司傾向使用發(fā)布訂閱云服務(wù)[5–7]來加速事件的匹配和路由, 而云服務(wù)中的代理往往是不可信的, 發(fā)布訂閱系統(tǒng)的應(yīng)用環(huán)境開始從封閉的可信計算環(huán)境轉(zhuǎn)變?yōu)殚_放的不可信計算環(huán)境.
3.2.2 匿名性威脅模型
本文從活動水平(activity level)、滲透系統(tǒng)程度(infiltrate the system) 和攻擊范圍(attack scope)三個角度來構(gòu)建匿名性威脅模型[18].
(1) 從活動水平的角度來看, 攻擊者可分成被動的(passive) 和主動的(active). 其中被動類型的攻擊者只具有監(jiān)聽網(wǎng)絡(luò)中消息的能力, 而主動類型的攻擊者可以與系統(tǒng)交互, 繼而可以篡改、重放、刪除系統(tǒng)節(jié)點傳輸?shù)南?
(2) 從滲透系統(tǒng)程度的角度來看, 攻擊者可分為內(nèi)部的(internal) 和外部的(external). 內(nèi)部類型的攻擊者可以控制系統(tǒng)中的一個或多個惡意節(jié)點, 能夠獲取到一些秘密和加密密鑰等信息, 相反外部類型的攻擊者不能控制系統(tǒng)中的節(jié)點因而獲取不到系統(tǒng)中任何的秘密信息.
(3) 從攻擊范圍的角度, 攻擊者可分為全局的(global) 和局部的(local), 全局類型的攻擊者具有全局的網(wǎng)絡(luò)拓?fù)? 而局部類型的攻擊者只能利用一個或幾個共謀節(jié)點進(jìn)行攻擊, 獲取不到全局的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu).
目前已有文獻(xiàn)大多僅針對某一種類型的攻擊者實現(xiàn)匿名性保護(hù), 比如Vo 等人[17]的方案能針對被動的局部類型的攻擊者模型為發(fā)布者和訂閱者提供匿名性保護(hù); Daubert 等人[18]的方案能針對被動的全局的外部類型的攻擊者為訂閱者提供匿名性保護(hù).
在發(fā)布訂閱系統(tǒng)中, 當(dāng)前對機密性保護(hù)方案的研究可被劃分為兩種, 一種是采用密碼學(xué)算法構(gòu)建密文匹配方案使得代理在不對事件和訂閱解密的條件下實現(xiàn)事件匹配; 另一種是從系統(tǒng)安全的角度使用Intel提供的可信執(zhí)行環(huán)境SGX (software guard extensions), SGX 將應(yīng)用程序的安全操作封裝在Enclave 容器中, 在這個容器內(nèi)可保證代碼和數(shù)據(jù)的機密性與完整性, 事件和訂閱的匹配被放到創(chuàng)建的Enclave 中執(zhí)行.
無論是基于傳統(tǒng)的密碼學(xué)算法還是基于可信執(zhí)行環(huán)境SGX 構(gòu)造的機密性保護(hù)方案, 在執(zhí)行匹配前,均需要對事件和訂閱加密以保護(hù)事件和訂閱的機密性, 因此在加密前, 需要為發(fā)布者和訂閱者分發(fā)密鑰,給出密鑰分發(fā)方案. 密鑰分發(fā)系統(tǒng)應(yīng)能在發(fā)布者或訂閱者注冊系統(tǒng)的時候及時分發(fā)密鑰, 在發(fā)布者或訂閱者注銷系統(tǒng)的時候及時撤銷和更新密鑰.
當(dāng)前文獻(xiàn)提出的機密性保護(hù)方案大多基于密碼學(xué)算法構(gòu)造, 對基于內(nèi)容的發(fā)布訂閱系統(tǒng), 這些算法在執(zhí)行匹配時由于事件需要和訂閱集合中的訂閱一條條比較, 使得系統(tǒng)不具有可伸縮性, 隨著訂閱數(shù)量的增加, 系統(tǒng)性能會越來越差, 已有方案不適用大規(guī)模訂閱的處理. 在這方面, 2020 年, Feng 等人[9]結(jié)合保序加密算法[24]通過對訂閱密文構(gòu)建索引的方式實現(xiàn)了高效且支持系統(tǒng)可伸縮性的密文匹配方案. 在使用可信執(zhí)行環(huán)境實現(xiàn)機密性保護(hù)的研究上, 2016 年P(guān)ires 等人[8]首次從系統(tǒng)安全的角度構(gòu)造了基于SGX 的機密性保護(hù)方案. 另外, 當(dāng)前文獻(xiàn)給出的機密性保護(hù)算法其密鑰分發(fā)方式均是中心化的, 2019 年伯克利分校的研究團(tuán)隊提出了針對資源受限型的物聯(lián)網(wǎng)設(shè)備的端到端加密方法[1], 并且首次給出了在發(fā)布訂閱系統(tǒng)中實現(xiàn)去中心化的密鑰分發(fā)方案.
以下在4.1 節(jié)和4.2 節(jié)對實現(xiàn)機密性的方案進(jìn)行介紹, 在介紹具體的方案前在表1 給出相關(guān)的符號及含義.
表1 各方案中相關(guān)符號及其所代表的含義Table 1 Related symbols in these schemes and their meanings
Choi 等人[13]提出使用非對稱標(biāo)量積保持加密(asymmetric scalar-product preserving encryption,ASPE) 算法來實現(xiàn)密文匹配. ASPE 由Wong 等人[25]基于加密數(shù)據(jù)庫上的k近鄰查詢算法提出, 其核心思想是將事件和訂閱表示成多維空間上的點, 然后通過比較點之間的距離判斷事件與訂閱是否匹配.
(1) 密鑰分發(fā)系統(tǒng)為所有的發(fā)布者分發(fā)的加密密鑰為可逆矩陣M的逆M-1, 矩陣M的行和列的大小均為(d+1). 對訂閱者, 如果其是可信的, 直接為其分發(fā)密鑰M; 如果其是不可信的, 引入一個安全管理員, 將M分發(fā)給安全管理員, 由安全管理員為所有的訂閱者加密訂閱.
(4) 密文匹配
執(zhí)行事件匹配時, 進(jìn)行以下運算并化簡得到最終結(jié)果;
如圖4 所示, 事件匹配最終變成了判斷s1,s2與e之間的距離. 如果(1)式結(jié)果大于0, 那么Dis(s2,e)>Dis(s1,e), 訂閱約束值s大于事件屬性值e; 反之, Dis(s2,e)<Dis(s1,e), 訂閱約束值s小于事件屬性值e. 而且計算結(jié)果由于引入了隨機值r, 代理也無法知道事件和訂閱的真實距離.
圖4 事件和訂閱在一維空間上的表示Figure 4 Representation of events and subscriptions in one dimension
(5) 方案評價基于ASPE 算法實現(xiàn)的機密性保護(hù)方案雖然能夠?qū)崿F(xiàn)事件和訂閱的機密性并且能夠支持等值、非等值及區(qū)間等復(fù)雜類型(字符串除外) 的訂閱, 但其方案的安全性較低, 其僅能抵抗唯密文攻擊, 而且對屬性和約束為多維的情況, 作者也只是簡單地討論了這個問題, 并沒有給出具體的方案說明, 另外, 文章也沒有給出密鑰分發(fā)方案的設(shè)計.
4.1.2 可搜索數(shù)據(jù)加密方案
總而言之,為了讓臨床細(xì)菌樣本檢驗的準(zhǔn)確性得到提升,進(jìn)行檢驗的時候,對樣本的采集,送檢和保存等操作都應(yīng)該規(guī)范,確保操作的無菌化,這樣能夠讓樣本的質(zhì)量獲得提升,提高檢驗的準(zhǔn)確性。
2012 年, Ion 等人[2]提出利用多用戶可搜索數(shù)據(jù)加密(searchable data encryption, SDE[26,27]) 技術(shù)實現(xiàn)密文匹配. SDE 由Dong 等人[26]提出, 用于在不可信服務(wù)器下實現(xiàn)對密文數(shù)據(jù)或關(guān)鍵詞的搜索,其基于代理加密機制[28]上構(gòu)造, 代理加密技術(shù)依賴代理將用戶A加密的密文轉(zhuǎn)換為用戶B可以解密的密文, 而且整個過程中用戶A發(fā)送的數(shù)據(jù)不會被代理所知道. 在該系統(tǒng)中, 發(fā)布者和訂閱者利用與其直接連接的代理對使用SDE 算法加密后的事件密文和訂閱密文進(jìn)行重加密, 然后對重加密后的事件密文和訂閱密文執(zhí)行匹配.
訂閱加密時, 對等值類型的訂閱約束, 直接用SDE 算法加密即可. 對非等值型的訂閱約束首先對其用Bethencourt 等人[29]給出的訪問樹的形式表示, 比如圖5 給出了訂閱Sub:a <11 的訪問樹結(jié)構(gòu). 訪問樹由葉子節(jié)點和閾值門表示, 葉子節(jié)點代表訂閱中的屬性約束, 閾值門由閾值和其子節(jié)點表示, 閾值表示匹配時需要滿足的子節(jié)點數(shù)量. 對事件, 先用二進(jìn)制表示后再將其分割成只有1 bit 位的屬性集, 比如事件Pub;a=10=(1010)2, 那么其將被表示成{a=1***,a=*0**,a=**1*,a=***0}. 事件和訂閱匹配是否匹配只需判斷事件中1bit 位的屬性集是否滿足訂閱訪問控制樹, 從訪問樹的根節(jié)點開始從上往下遞歸;
圖5 訂閱Sub: a <11 的訪問樹結(jié)構(gòu)Figure 5 Access tree structure of subscription Sub: a <11
(1) 如果是葉子節(jié)點, 判斷事件屬性集中是否有滿足該葉子節(jié)點的元素.
(2) 如果是非葉子節(jié)點, 判斷和事件匹配的子節(jié)點的個數(shù)是否滿足該節(jié)點的閾值; 可以看出此時事件Pub 的屬性集滿足訂閱Sub 的訪問控制樹, 事件和訂閱匹配.
將事件和訂閱表示成上述形式后, 接下來用SDE 算法對事件屬性集中的每個元素和訂閱訪問樹中的每個葉子節(jié)點進(jìn)行加密然后對加密后的事件和訂閱按照上述原則執(zhí)行匹配.
(1) 密鑰分發(fā)由可信權(quán)威機構(gòu)TA 為發(fā)布者和訂閱者以及代理分發(fā)SDE 密鑰. SDE 基于ElGamal 公鑰算法構(gòu)造, 生成的公鑰為PKSDE= (G0,g0,q0,h,H,f), 私鑰為MKSDE= (x,s0), 其中q0是生成的隨機大素數(shù),G0是生成元為g0的循環(huán)群,x是選取的隨機數(shù),h=g0x,H是抗碰撞的哈希函數(shù),f是偽隨機函數(shù),s0是f的隨機密鑰. 對每個用戶(發(fā)布者或訂閱者)i, 分別為其和與其相連的broker 分發(fā)密鑰(s0,xi1), (i,xi2), 其中xi1+xi2=x.
(2) 事件加密
(5) 方案評價基于可搜索數(shù)據(jù)加密算法實現(xiàn)的機密性保護(hù)方案同樣能夠?qū)崿F(xiàn)事件和訂閱的機密性, 能夠支持復(fù)雜的訂閱約束, 并且由于使用CP-ABE 算法來加密負(fù)載, 使得方案可以支持對訂閱者的訪問控制, 方案的安全性也比非對稱標(biāo)量積保持加密更高, 因為使用ElGamal 算法構(gòu)造的可搜索數(shù)據(jù)加密算法被證明能夠抵抗選擇明文攻擊這種強類型的攻擊. 其缺點是對于非等值和區(qū)間類型的訂閱約束, 最壞情況下, 系統(tǒng)匹配時間與事件或訂閱的二進(jìn)制表示位數(shù)m的平方成正比, 匹配理論上比非對稱標(biāo)量積保持加密算法要慢, 因為一個約束子樹最多有m個葉子節(jié)點, 一個事件屬性值被表示為m個元素, 最壞情況下事件屬性值中的每一個元素必需與訂閱約束中的每一個葉子節(jié)點比較.
4.1.3 同態(tài)加密方案
2013 年, Nabeel 等人[3]提出使用修改后的Paillier (modified paillier, MP) 同態(tài)加密方案[30]實現(xiàn)了基于上下文的發(fā)布訂閱系統(tǒng)中的密文匹配. Paillier 同態(tài)算法具有兩個加同態(tài)性質(zhì), 給定要加密的數(shù)x和y, 變量k, 加密算法E, 那么E(x)*E(y)=E(x+y);E(x)k=E(k*x).
方案的核心思想是由上下文管理器(context manager, CM) 為同一上下文的發(fā)布者和訂閱者分發(fā)安全參數(shù), 事件和訂閱分別在安全參數(shù)下加密. 執(zhí)行匹配時, 在代理處對事件密文和訂閱密文相乘再解密, 通過判斷解密的密文值大小判斷事件和訂閱是否匹配, 執(zhí)行加密和匹配時都利用了同態(tài)加密的加同態(tài)性質(zhì)進(jìn)行了化簡.
(1) 密鑰分發(fā)假設(shè)發(fā)布者Pi和訂閱者Si均處于同一上下文Ci, 每一個Ci擁有四元組〈λi,μi,ti,ri〉, 其中μi和λi是針對上下文Ci生成的MP 算法加解密的公私鑰,ri和ti是針對上下文Ci選取的隨機數(shù). 由Ci對應(yīng)的上下文管理器CM 分別為同一上下文的發(fā)布者和訂閱者分發(fā)加密時需要的安全參數(shù)〈E′(ri),E′(1),gti ·E′(ri)〉和〈E′(-ri),E′(-(1),g-ti ·E′(-ri)〉, 其中g(shù)為Paillier 公鑰中的一個參數(shù),E′是MP 的加密算法.
(2) 事件加密
假設(shè)發(fā)布者發(fā)布的事件為a=e, 則對屬性值加密生成的密文為:
上式(4)中的re >0 是發(fā)布者選取的隨機值,E′(ri(e-(1)) 和E′(re) 分別可由E′(e-(1)ri和E′(1)re利用性質(zhì)得出, 然后再對(4)整體使用性質(zhì)得到簡化的結(jié)果, 最終發(fā)布者發(fā)布的事件頭為(a=e′).
(3) 訂閱加密
假設(shè)訂閱者欲發(fā)送非等值的訂閱a ≥s, 對訂閱約束值加密, 得到密文s′;
等式(5)中s′的計算與事件頭密文的計算類似, 最終訂閱者發(fā)送的訂閱為(a,s′,≥).
(4) 密文匹配
代理收到事件頭和訂閱密文后, 進(jìn)行如下處理, 并利用性質(zhì)化簡得;
然后調(diào)用MP 解密算法D′對式(6)解密得到d′=ri(e-s)+re, 該機制假設(shè)事件和訂閱的明文取值空間為[0, 2m],m <<n(Paillier 算法公鑰中的參數(shù)), 如果e ≥s, 那么e-s ∈[0,2m]; 如果e <s, 那么e-s ∈[n-2m,n].ri和re是可控區(qū)間上選取的隨機值, 其“擴展” 了事件和訂閱實際的差值, 假設(shè)通過適當(dāng)?shù)倪x取ri和re的值使得當(dāng)d′≤n/2 時,e >s一定成立; 相反當(dāng)計算出的d′>n/2 時,e <s一定成立, 便可以通過d′的取值判斷事件和訂閱是否匹配.
(5) 方案評價基于修改后的Paillier 算法實現(xiàn)的機密性保護(hù)方案能夠保護(hù)事件和訂閱的機密性, 能夠支持?jǐn)?shù)值型這種復(fù)雜的訂閱約束. 方案的安全性與可搜索數(shù)據(jù)加密一致, 被證明能夠抵抗選擇明文攻擊這種強類型的攻擊, 比基于ASPE 的方案安全性更高. 事件匹配時間與訂閱約束個數(shù)成正比, 匹配性能理論上比可搜索數(shù)據(jù)加密方案要好, 但該方案一個比較重要的限制是無法支持對字符串類型訂閱的匹配, 這極大地限制了它在實際中的使用.
4.1.4 屬性基加密
2014 年, Tariq 等人[16]基于CP-ABE (ciphertext-policy attribute-based encryption) 機制[29]實現(xiàn)了點對點發(fā)布訂閱基礎(chǔ)設(shè)施中的機密性. CP-ABE 允許加密者在加密消息時添加訪問控制策略, 并根據(jù)解密者提供的屬性生成屬性私鑰, 只有當(dāng)解密者的屬性滿足加密者加密時設(shè)置的訪問控制策略時, 解密才可以成功.
不同于傳統(tǒng)的有代理的發(fā)布訂閱系統(tǒng)模型, 此方案中只有發(fā)布者、訂閱者和密鑰服務(wù)器, 其中密鑰服務(wù)器用于分發(fā)事件加密密鑰和訂閱解密密鑰. 事件通過訂閱者組成的發(fā)布訂閱覆蓋網(wǎng)絡(luò)被傳播. 覆蓋網(wǎng)絡(luò)是利用訂閱者注冊的訂閱之間的包含關(guān)系構(gòu)建的一個樹型的網(wǎng)絡(luò). 具有較通用的訂閱對應(yīng)的訂閱者被放置在根附近, 不太通用的訂閱對應(yīng)的訂閱者依次被放在根的下方. 每個訂閱者除了執(zhí)行事件匹配外, 還要根據(jù)樹形網(wǎng)絡(luò)的結(jié)構(gòu)將事件轉(zhuǎn)發(fā)給其父節(jié)點和子節(jié)點.
事件在加密時, 首先生成對稱密鑰K對負(fù)載加密得到負(fù)載密文, 然后對K使用與事件憑據(jù)(credential) 關(guān)聯(lián)的公鑰加密得到密鑰密文. 訂閱者的解密密鑰也與憑據(jù)關(guān)聯(lián), 訂閱者成功解密K當(dāng)且僅當(dāng)解密密鑰關(guān)聯(lián)的憑據(jù)滿足密鑰密文關(guān)聯(lián)的憑據(jù), 解密出K后再對負(fù)載密文解密即可得到事件. 憑據(jù)根據(jù)事件或訂閱在屬性分區(qū)上映射到的位字符串生成.
對多維數(shù)值型屬性, 需對每個維度進(jìn)行分區(qū), 根據(jù)訂閱和事件在每個維度上的取值將其映射到不同的分區(qū), 事件最終被映射到能用最長的位字符串表示的分區(qū)上, 訂閱被映射到包含其約束的最小的分區(qū)上.以二維屬性a和b為例, 假設(shè)其屬性取值范圍均為[0,100], 對其四種不同的分區(qū)如圖6 所示. 假設(shè)事件Pub :a= 20,b= 22, 那么其被映射到的位字符串為000, 訂閱Sub :a <50,b <50, 被映射到的位字符串為00. 為了保證訂閱在不同類型的分區(qū)上映射到的位字符串生成的憑據(jù)能夠成功解密, 需將事件位字符串進(jìn)行拆分, 比如對000, 其將被拆分為0, 00, 000, 然后分別用這三個位字符串生成的憑據(jù)加密對稱密鑰K. 可以看出訂閱Sub 被映射到的位字符串匹配事件被拆分后的位字符串00, 那么根據(jù)訂閱的位字符串生成的憑據(jù)得到的解密密鑰也能成功解密使用事件拆分后的位字符串生成的憑據(jù)加密得到的密鑰密文.
圖6 事件空間的層次分解Figure 6 Hierarchical decomposition of event space
如果解密成功訂閱者將得到K進(jìn)而解密出負(fù)載, 否則解密失敗.
相比前三種方案, 這種無代理的發(fā)布訂閱系統(tǒng)由于利用了訂閱之間的包含關(guān)系, 因此泄露了訂閱的機密性信息, 不能保證訂閱的機密性. 同時方案由于屬性區(qū)間劃分的粒度問題也引入了誤判率, 而前三種方案中并沒有引入誤判率的問題. 其次, 事件加密時, 對每個屬性, 加密后的事件密文個數(shù)與憑據(jù)個數(shù)成正比, 當(dāng)事件或訂閱二進(jìn)制表示的位數(shù)比較大時, 每個訂閱節(jié)點都需要向其父節(jié)點和子節(jié)點傳播大量事件,當(dāng)訂閱節(jié)點非常多時, 會給系統(tǒng)帶來很大的路由負(fù)載.
在使用屬性基CP-ABE 加密數(shù)據(jù)保護(hù)數(shù)據(jù)機密性方面, Yang 等人[31]提出了針對物聯(lián)網(wǎng)環(huán)境下可穿戴設(shè)備服務(wù)提供商向終端用戶發(fā)布數(shù)據(jù)的過程中產(chǎn)生的隱私泄露問題的保護(hù)方法. 與Tariq 等人的方案不同的是, 作者基于CP-ABE 設(shè)計了兩種多云外包方案即并行云ABE (parallel-cloud ABE) 和鏈云ABE(chain-cloud ABE), 這兩個方案旨在將CP-ABE 昂貴的解密操作外包給多個云以緩解資源受限型的物聯(lián)網(wǎng)設(shè)備端解密的壓力. 相對Tariq 等人直接將密鑰密文發(fā)給訂閱者解密的方式, 此種方法的解密效率更高,帶來的延遲更小.
4.1.5 基于WKD-IBE 的加密方案
2019 年, Kumar 等人[1]給出了針對資源受限型的物聯(lián)網(wǎng)設(shè)備的機密性保護(hù)方法, 這些設(shè)備要求算法的性能開銷不能太大. 加密采用比ABE[32]更輕量型的WKD-IBE[33]算法, WKD-IBE (identity-based encryption with wildcard key derivation) 根據(jù)資源(resource) 對消息進(jìn)行加密, 同樣也根據(jù)資源生成的解密密鑰對消息解密,資源用統(tǒng)一資源定位符(uniform resource indicator,URI)表示. 比如圖7 中發(fā)布者P是buildingA 的管理員, 擁有對大樓buildingA 的訪問權(quán)限, 那么其擁有的資源可表示為buildingA/*.
如圖7 所示, 與4.1.4 節(jié)屬性基方案類似, 該方案中對事件加密也采用混合加密的方式, 首先生成對稱密鑰K 用于對事件負(fù)載payload 加密, 得到事件密文c1, 然后用WKD-IBE 對加密密鑰K加密, 得到密鑰密文c2. 然后將加密k時對應(yīng)資源的URI=buildingA/floor1/Reading、時間Time=2021.6、事件密文和密鑰密文作為最終的JEDI 密文發(fā)送到系統(tǒng)中.
圖7 加密過程和密鑰授權(quán)過程Figure 7 Process of encryption and key delegation
訂閱者的解密密鑰通過分散授權(quán)(decentralized delegation) 的方式分發(fā). 分散授權(quán)是指擁有對某個資源訪問權(quán)限的主體可以授權(quán)另一個主體訪問其資源的子集. 授權(quán)訂閱者訪問其資源子集的主體可以結(jié)合資源子集、授權(quán)有效期及主體密鑰庫(key store) 中的私鑰為訂閱者生成訪問其資源子集的授權(quán)密鑰.如上圖7, 發(fā)布者P為訂閱者S授權(quán)對buildingA 下的樓層floor1/的訪問密鑰,S收到后同樣將其存儲在自己的密鑰庫中,S還可為其他訂閱者再授權(quán)密鑰. 解密時, 訂閱者首先根據(jù)事件密文中的URI 和Time 在其密鑰庫中找到對應(yīng)的解密密鑰, 然后用該密鑰解密c2得到加密事件的對稱密鑰K, 然后再用對稱密鑰解密c1便可得到負(fù)載.
相較前四種方案, Kumar 等人實現(xiàn)了一個去中心化的密鑰分發(fā)方案, 使得密鑰分發(fā)不再僅依賴可信第三方這種中心化的方式. 另外, 由于使用了更輕量級的加密方案, 從事件加解密效率上來看, 此種方式要比基于屬性基的方案要好. 但由于其是針對物聯(lián)網(wǎng)這種基于主題的發(fā)布訂閱系統(tǒng)實現(xiàn)的機密性, 從訂閱具備的表達(dá)能力上來說, 沒有前四種要好, 其不能支持復(fù)雜的訂閱約束.
4.1.6 保序加密方案
2020 年Feng 等人[9]針對基于內(nèi)容的發(fā)布訂閱云服務(wù)場景提出了一種可伸縮性好的密文匹配機制盲匹配(scalable blind matching,SBM).SBM 方案首先使用保序加密(order preserving encryption,OPE)算法[24]對事件和訂閱加密. OPE 使得加密后的密文可維持原明文順序, 即給定數(shù)據(jù)x、y, 保序加密算法EOPE, 如果x >y, 那么EOPE(x)>EOPE(y). 因此對有序的事件密文和訂閱密文, 事件的密文匹配便可以看作明文匹配, 換言之, 可用現(xiàn)有的高效的明文匹配方法實現(xiàn)密文匹配.
然后, 利用在密文上建立的索引提高匹配的效率. SBM 方案通過構(gòu)建高效的索引結(jié)構(gòu)[34–36]來存儲和管理訂閱信息, 匹配時每個事件只需要與它在該索引結(jié)構(gòu)上映射到的訂閱進(jìn)行比較, 這樣快速過濾掉大量不匹配加密訂閱, 大大減少了匹配時的訂閱數(shù)量, 降低了匹配時間復(fù)雜度, 使得方案可以適用對大規(guī)模訂閱的處理.
之前的密文匹配方法存在一個共同的不足是事件需要和加密的訂閱逐條比較來檢查是否匹配, 匹配時間會隨著訂閱集合的增加而線性增長, 無法支持大規(guī)模訂閱的事件匹配需求. SBM 方案在可伸縮性方面取得了很大進(jìn)步. 但是, SBM 方案是針對應(yīng)用服務(wù)商對云服務(wù)基礎(chǔ)設(shè)施不信任特定問題的解決方案, 由于其業(yè)務(wù)場景的密鑰管理需求簡單, 該方法并無法直接適用于一般情況下發(fā)布訂閱云服務(wù)的隱私保護(hù).
Pires 等人[8]首次從系統(tǒng)安全的角度提出使用可信執(zhí)行環(huán)境SGX 保護(hù)事件和訂閱的機密性. 事件和訂閱在Enclave 外被加密, 在Enclave 內(nèi)分別被解密后執(zhí)行事件匹配. 如圖8 所示, 系統(tǒng)首先為發(fā)布者生成一對公私鑰PK 和SK, 其中PK 是公開的, SK 只與Enclave 共享. 注冊訂閱時, 訂閱者使用發(fā)布者的公鑰加密訂閱后將其發(fā)送給發(fā)布者(圖8 中的), 發(fā)布者收到后先對訂閱密文進(jìn)行解密, 驗證其有效性, 驗證通過后, 再使用自己的私鑰將訂閱重加密后發(fā)送給路由引擎(圖8 中的). 路由引擎(相當(dāng)于代理) 收到后在其創(chuàng)建的Enclave 內(nèi)部使用與該發(fā)布者共享的私鑰SK 對訂閱解密并將解密后的訂閱存儲到其內(nèi)部創(chuàng)建的索引結(jié)構(gòu)中. 發(fā)布者發(fā)布事件時, 首先使用私鑰SK 加密事件頭, 然后使用與訂閱者共享的組密鑰K 加密負(fù)載, 將加密的事件頭和加密的負(fù)載發(fā)送給路由引擎(圖8 中的). 路由引擎收到后在其Enclave 內(nèi)先對事件頭解密, 然后與存儲的訂閱執(zhí)行匹配(圖8 中的), 最后將匹配的事件頭對應(yīng)的加密負(fù)載轉(zhuǎn)發(fā)給對應(yīng)的訂閱者(圖8 中的), 訂閱者利用K 解密即可得到匹配的事件(圖8 中的).
圖8 實體交互過程Figure 8 Interaction amongst entities
2018 年Arnautov 等人[37]提出了PUBSUB-SGX. 如圖9 所示, 其主要由兩個組件構(gòu)成: Load Balancer/Proxy 和Matcher. 其中Load Balancer 負(fù)責(zé)均衡地將事件和訂閱發(fā)送到Matcher 中. 而Matcher中部署了多個Broker 節(jié)點用于執(zhí)行事件和訂閱的匹配. 注冊訂閱時, 訂閱者首先將訂閱發(fā)送到Load Balancer, 由Load Balancer 均衡地將訂閱發(fā)送到Matcher 中的一個Broker 處存儲(圖9 中的), 然后由Balancer 將該Broker 的ID 發(fā)送給訂閱者(圖9 中的), 訂閱者建立與該Broker 的通信信道(圖9 中的), 用于后續(xù)匹配事件的路由. 發(fā)布者同樣通過Load Balancer 向Matcher 中某個代理節(jié)點發(fā)布事件(圖9 中的), 但事件會被廣播到Matcher 中所有節(jié)點, 因為每個節(jié)點都可能存在匹配的訂閱, 在Broker節(jié)點執(zhí)行完匹配后, 事件被轉(zhuǎn)發(fā)給匹配的訂閱者(圖9 中的). 整個過程中, 事件和訂閱在不同實體之間均是通過SSL 安全信道傳輸?shù)? 在Balancer 和Matcher 中的處理也均是在SGX 的Enclaves 中進(jìn)行的,因此可以在系統(tǒng)中保護(hù)事件和訂閱的機密性.
圖9 PUBSUB-SGX 架構(gòu)Figure 9 Architecture of PUBSUB-SGX
Munster 等人[38]基于SGX 提出了可進(jìn)行秘密共享的混合代理網(wǎng)絡(luò)HyShare,在HyShare 中可保證事件的安全傳輸. HyShare 由兩種類型的代理組成: ISSPS (iterative secret share propagation scheme)代理和啟用SGX 的代理. 其中ISSPS 代理運行著Shamir 秘密共享機制[39], 當(dāng)秘密到達(dá)時, 根據(jù)下一跳節(jié)點是代理還是訂閱者有著不同的處理策略. 如果是代理, 接收到的秘密必須經(jīng)歷Shamir 的秘密共享方案的另一次迭代, 迭代后秘密將被分割成n個新的片段, 分別被轉(zhuǎn)發(fā)給下一跳邏輯代理中的各個代理; 如果下一跳是訂閱者, 則不需要進(jìn)一步的分片, 代理可以直接轉(zhuǎn)發(fā)接收到的秘密. 如果系統(tǒng)中均是ISSPS 類型的代理, 經(jīng)過代理間的多次迭代, 在節(jié)點間傳輸?shù)拿孛軙手笖?shù)級別的增長, 給系統(tǒng)帶來巨大的性能開銷. 為解決這個問題, HyShare 中又引入了SGX 代理, 此時如果下一跳是啟用SGX 的代理, 那么當(dāng)前的代理不需要調(diào)用Shamir 秘密共享方案生成新的片段, 而是使用其和下一跳代理之間的會話密鑰加密傳輸以此降低節(jié)點間迭代的次數(shù), 進(jìn)而減少系統(tǒng)中傳輸?shù)南? 整個過程中, 每個代理只知道自己接收到的秘密, 而原始的秘密需要結(jié)合多個代理節(jié)點處的秘密才能最終計算出來, 對中間任何一個代理, 如果其想知道原始的秘密, 必須和同一迭代過程中被劃分到分段的所有代理共謀才能計算出來, 相對和單個代理共謀這是有難度的.
現(xiàn)有的密鑰分發(fā)機制可以分為兩類;
(1) 中心化
現(xiàn)有的實現(xiàn)發(fā)布訂閱系統(tǒng)機密性的方案中對密鑰的分發(fā)一般都是依賴可信第三方, 比如Ion 等人[2]的方案中引入可信權(quán)威機構(gòu)TA (trusted authority) 為發(fā)布者和訂閱者分發(fā)可搜索加密算法的密鑰以實現(xiàn)對事件和訂閱的加密; Nabeel 等人[3]的方案引入上下文管理器為具有相同上下文的發(fā)布者和訂閱者分發(fā)Paillier 算法加解密時需要的安全參數(shù). 還有一些方案, 雖然作者未給出詳細(xì)的密鑰分發(fā)方式, 但也提到了密鑰分發(fā)機構(gòu), 比如Choi 等人[13]的方案, 其引入了安全管理員為發(fā)布者分發(fā)加密時需要的密鑰信息. 這種依賴可信第三方的密鑰分發(fā)機制將密鑰分發(fā)和管理的負(fù)擔(dān)都集中在了可信的服務(wù)器上, 以保證發(fā)布者和訂閱者通信去耦合的特性, 但這種方式存在一些問題:
(2) 去中心化除了中心化的密鑰分發(fā)方案, Kumar 等人[1]還提出使用分散授權(quán)(decentralized delegation) 即去中心化的方式來分發(fā)密鑰. 分散授權(quán)的含義在4.1.5 節(jié)已有介紹. 此種方式相對密鑰集中分發(fā)方式安全性更強, 因為不需要像可信服務(wù)器那樣需要時刻在線, 在分散授權(quán)中, 授權(quán)方授權(quán)完密鑰后就可以離線了. 而且此方式由于不再依賴于一個可信服務(wù)器來分發(fā)密鑰, 保證了系統(tǒng)的可伸縮性.
表2 分別從以下五個指標(biāo)對現(xiàn)有的機密性保護(hù)方法進(jìn)行了評估, 表3 對單個事件和S 個訂閱的加密及匹配時間復(fù)雜度進(jìn)行了總結(jié)(對基于屬性基和基于WKD-IBE 的方案, 我們用加密密鑰的時間衡量加密事件頭的時間).
表2 機密性保護(hù)方案的性能評價Table 2 Performance evaluation of confidentiality preserving schemes
表3 機密性保護(hù)方案的時間復(fù)雜度Table 3 Time complexity of confidentiality preserving schemes
E1: 能提供機密性保護(hù). 該指標(biāo)要求機密性保護(hù)方案應(yīng)保護(hù)事件機密性、負(fù)載機密性和訂閱機密性.
E2: 不能破壞發(fā)布訂閱系統(tǒng)的去耦合特性. 該指標(biāo)要求發(fā)布者和訂閱者之間不能有直接的聯(lián)系, 比如發(fā)布者和訂閱者之間不能共享密鑰, 不能將訂閱者注冊的訂閱直接發(fā)送給發(fā)布者或者將發(fā)布者發(fā)布的事件直接發(fā)送給訂閱者, 以支持系統(tǒng)的去耦合特性.
E3: 能匹配復(fù)雜的訂閱約束. 該指標(biāo)要求在基于內(nèi)容的發(fā)布訂閱系統(tǒng)中實現(xiàn)的機密性保護(hù)方案除了能對簡單的等值訂閱約束執(zhí)行匹配外, 還能對非等值約束、區(qū)間約束等復(fù)雜類型的約束執(zhí)行匹配. 另外實現(xiàn)的方案除了能對單個約束執(zhí)行匹配外, 還能對多個以合取方式連接的約束執(zhí)行匹配.
E4: 方案不能引入誤判率. 該指標(biāo)要求機密性保護(hù)方案應(yīng)該實現(xiàn)事件和訂閱的精確匹配, 不能把實際不匹配的事件發(fā)送給訂閱者.
E5: 方案具備可伸縮性(scalability). 該指標(biāo)要求給出的機密性保護(hù)方案其事件匹配時間不能隨訂閱數(shù)量增加而線性增加, 應(yīng)滿足實際應(yīng)用系統(tǒng)對大規(guī)模訂閱的處理要求.
由表2 及表3 可以看出, 對使用密碼學(xué)算法實現(xiàn)的機密性保護(hù)方案, 其匹配的時間復(fù)雜度與系統(tǒng)中訂閱的數(shù)量成正比,隨著系統(tǒng)中訂閱數(shù)量的增加,系統(tǒng)的性能會越來越差,匹配不具有可伸縮性(基于WKDIBE 的方案和基于保序加密的方案除外).
基于SGX[8]的方式其執(zhí)行效率明顯高于使用密碼學(xué)算法的方案, 因為在SGX 內(nèi)部執(zhí)行的是明文匹配, 不需要像密文匹配(比如利用ASPE 或者同態(tài)加密) 那樣還需進(jìn)行復(fù)雜的運算. 但是由于其運行內(nèi)存有限, 當(dāng)存儲的數(shù)據(jù)量比較多或者占用內(nèi)存比較大(超過90 MB) 時, 易出現(xiàn)頁面缺失和緩存缺失, 此時Enclave 需要與系統(tǒng)內(nèi)存進(jìn)行交互以調(diào)入調(diào)出緩存或者頁面, 會額外增加開銷. Arnautov 等人[37]提出的PUBSUB-SGX 系統(tǒng)雖然通過Load Balancer 均勻地將訂閱劃分到了單個代理節(jié)點中, 使得每個代理節(jié)點處存儲的訂閱數(shù)量減少了, 進(jìn)而減少了Enclave 內(nèi)存的占用. 但其沒有從根本上解決問題, 當(dāng)系統(tǒng)中出現(xiàn)大規(guī)模的訂閱時, 每個代理節(jié)點仍然會被分配到很多訂閱, 隨著訂閱數(shù)量的增多, 占用內(nèi)存便會超過90 MB, 系統(tǒng)性能開始惡化. 基于SGX 的方案其匹配性能與現(xiàn)有的硬件性能緊密相關(guān), 當(dāng)前還不適用對大規(guī)模訂閱的處理場景.
發(fā)布訂閱系統(tǒng)中的匿名性需求首先是由Wang 等人[40]提出的, 他們指出: 發(fā)布-訂閱路由機制本身可看作一種輕量級的匿名機制. 從發(fā)布者到訂閱者的路徑上, 參與的節(jié)點只知道它的直接前任和后繼, 如果事件從發(fā)布者轉(zhuǎn)發(fā)到訂閱者在網(wǎng)絡(luò)上至少經(jīng)過兩跳, 那么此時針對被動的局部的內(nèi)部類型的攻擊者就可以為發(fā)布者和訂閱者節(jié)點提供匿名性保護(hù). 但Wang 等人未給出匿名性和威脅模型的定義, 而且未提供針對全局類型攻擊者的保護(hù).
Vo 等人[17]提出了兩個可以實現(xiàn)發(fā)布者和訂閱者匿名的方法. 其中第一種方法引入一個中央服務(wù)器來存儲訂閱、路由事件, 中央服務(wù)器只與可信代理proxy 連接, proxy 與發(fā)布者和訂閱者連接用于傳輸發(fā)布者或訂閱者與中央服務(wù)器之間交換的消息, 在發(fā)布者/訂閱者和“誠實但好奇”的中央服務(wù)器之間添加第三方可信代理使得服務(wù)器無法直接與發(fā)布者和訂閱者通信進(jìn)而保護(hù)了發(fā)布者和訂閱者的匿名性, 但由于僅使用一個中央服務(wù)器來路由事件, 當(dāng)系統(tǒng)中發(fā)布者和訂閱者節(jié)點比較多時, 系統(tǒng)的擴展性比較差; 第二種方式在底層為洋蔥匿名通信網(wǎng)絡(luò)的基礎(chǔ)上通過為每個訂閱者構(gòu)建一個以它自己為根節(jié)點的生成樹將發(fā)布者發(fā)布的事件路由給所有訂閱者這種多播的方式來保護(hù)發(fā)布者和訂閱者的匿名性, 這兩種方式僅對被動的局部攻擊者模型提供了匿名性保護(hù).
Daubert 等人[18]提出了概率轉(zhuǎn)發(fā)(probabilistic forwarding, PF) 和SG (shell game) 兩種機制用于實現(xiàn)訂閱者匿名性, PF 通過允許訂閱者將接收到的信息概率轉(zhuǎn)發(fā)給其他非訂閱節(jié)點, 從而阻止了攻擊者通過網(wǎng)絡(luò)中的消息流信息對其位置的推測; SG 通過相鄰節(jié)點的位置交換打亂網(wǎng)絡(luò)拓?fù)鋪肀Wo(hù)訂閱者的匿名性, 這兩種機制對被動的全局外部攻擊者模型提供了匿名性保護(hù).
Daubert 等人[18]給出了匿名性威脅模型的定義, 并且針對被動的全局外部攻擊者模型提出了概率轉(zhuǎn)發(fā)和位置交換兩種機制用于實現(xiàn)訂閱者匿名性.
Daubert 等人的方案在基本覆蓋網(wǎng)的基礎(chǔ)上引入了屬性網(wǎng)的概念, 如果將基本覆蓋網(wǎng)絡(luò)看作一個圖G:= (V,E), 其中E是點, 指發(fā)布訂閱網(wǎng)絡(luò)中的發(fā)布者, 訂閱者和轉(zhuǎn)發(fā)者(代理) 節(jié)點,V是邊, 由兩個節(jié)點相連而成, 那么在G之上, 便可構(gòu)建出一個或多個屬性網(wǎng)Mai:= (Vai,Eai), 其中ai ∈屬性集A. 屬性網(wǎng)Mai中的每個發(fā)布者節(jié)點僅發(fā)布跟該屬性ai相關(guān)的事件, 每個訂閱者節(jié)點也僅發(fā)送與該屬性ai相關(guān)的訂閱. 如圖10 所示便是在基本覆蓋網(wǎng)的基礎(chǔ)上構(gòu)建出的一個屬性網(wǎng)Ma, Ma 通過轉(zhuǎn)發(fā)者連接所有的訂閱者和發(fā)布者, 并且僅對屬性a上的事件和訂閱執(zhí)行匹配及路由, 概率轉(zhuǎn)發(fā)和位置交換兩種機制都是在屬性網(wǎng)的基礎(chǔ)上實現(xiàn)的.
圖10 基本覆蓋網(wǎng)及在其上構(gòu)造的屬性網(wǎng)Figure 10 Basic overlay network and attribute network constructed on it
由圖10 可以看出, 如果將屬性網(wǎng)看作一顆自上而下的樹, 那么樹的根便是發(fā)布者, 中間的非葉子節(jié)點是轉(zhuǎn)發(fā)者, 所有的葉子節(jié)點是訂閱者, 由于事件最終被轉(zhuǎn)發(fā)給訂閱者, 所以從全局攻擊者的視角來看所有的訂閱者節(jié)點沒有出度, 不會再將接收到的事件轉(zhuǎn)發(fā)出去, 因此易推斷出訂閱者節(jié)點. 而接下來介紹的概率轉(zhuǎn)發(fā)和位置交換機制便是阻止攻擊者根據(jù)消息流向識別出訂閱者.
(1) 概率轉(zhuǎn)發(fā)機制
PF 的本質(zhì)是通過允許訂閱者將其接收到的信息再概率轉(zhuǎn)發(fā)給其他非訂閱者節(jié)點, 使得攻擊者無法根據(jù)消息的最終流向找到訂閱者. 具體來說是通過向?qū)傩跃W(wǎng)Ma 中的訂閱者節(jié)點后再添加一個或多個節(jié)點,這些節(jié)點從基礎(chǔ)覆蓋網(wǎng)中非Ma 中的節(jié)點選取并作為轉(zhuǎn)發(fā)節(jié)點, 所有的訂閱者節(jié)點接收到事件后會再被轉(zhuǎn)發(fā)到這些節(jié)點. 如圖11 所示, 通過在訂閱者S1和S3節(jié)點后新添轉(zhuǎn)發(fā)節(jié)點f2,f3, 全局攻擊者便無法根據(jù)消息流特點找到原來的訂閱者S1和S3.
圖11 概率轉(zhuǎn)發(fā)機制Figure 11 Probabilistic forwarding mechanism
(2) 位置交換機制
位置交換即通過將屬性網(wǎng)中相鄰節(jié)點的位置進(jìn)行交換, 進(jìn)而打亂網(wǎng)絡(luò)拓?fù)涫沟霉粽邿o法根據(jù)消息流特點找到訂閱者. 具體工作原理是當(dāng)某個轉(zhuǎn)發(fā)者節(jié)點連接到一個新的訂閱者節(jié)點時, 首先從其出度鄰居節(jié)點中隨機選取一個, 與該節(jié)點進(jìn)行位置交換; 然后向其其它出度節(jié)點發(fā)送通知, 告訴他們有了新的父節(jié)點(選取的交換節(jié)點), 同時向其入度鄰居節(jié)點發(fā)送通知, 告訴他們有了新的子節(jié)點(選取的交換節(jié)點), 然后可以根據(jù)需求對交換節(jié)點的子節(jié)點遞歸執(zhí)行該算法. 以圖12 中f2節(jié)點為例, 假設(shè)此時f2連接了一個新的訂閱者S4,f2會執(zhí)行以下過程:
圖12 位置交換機制Figure 12 Position swap mechanism
通過一輪交換可以發(fā)現(xiàn)原先葉子節(jié)點S4現(xiàn)在變成了非葉子節(jié)點, 然后還可以接著對S4的子節(jié)點f3執(zhí)行位置交換操作進(jìn)一步打亂網(wǎng)絡(luò)拓?fù)鋵崿F(xiàn)隱藏訂閱者節(jié)點的目的.
Daubert 等人的方案針對全局的外部類型的攻擊者能實現(xiàn)訂閱者匿名性, 但其也存在著不足, 它不能實現(xiàn)對內(nèi)部類型攻擊者的匿名性保護(hù), 而現(xiàn)實復(fù)雜的網(wǎng)絡(luò)中, 攻擊者有可能與網(wǎng)絡(luò)中的內(nèi)部節(jié)點共謀進(jìn)而打破訂閱者身份的匿名性.
Vo 等人[17]給出了匿名性的定義, 并結(jié)合匿名通信技術(shù)[41]針對被動的局部的內(nèi)部類型的攻擊者模型提出了基于中央服務(wù)器的匿名保護(hù)機制和基于TOR 的匿名保護(hù)機制.
(1) 基于中央服務(wù)器的匿名機制
該機制通過一個中央服務(wù)器來存儲訂閱、匹配和路由事件, 中央服務(wù)器只與可信代理proxy 連接,proxy 與發(fā)布者和訂閱者連接用于傳輸發(fā)布者或訂閱者與server 之間交換的消息. 如圖13 所示, 此種方式類似匿名通信中的Mix 網(wǎng)絡(luò)[42], 通過在發(fā)布者/訂閱者與“誠實但好奇” 的中央服務(wù)器之間添加若干個第三方可信代理使得服務(wù)器無法直接與發(fā)布者和訂閱者通信進(jìn)而保護(hù)了發(fā)布者和訂閱者的匿名性. 但這種方式由于僅使用一個中央服務(wù)器來路由事件, 當(dāng)需要匹配的訂閱數(shù)過多時, 會使中央服務(wù)器的開銷過大.
圖13 利用中央服務(wù)器的匿名機制Figure 13 Anonymity mechanism using central server
(2) 基于TOR 的匿名通信機制
該機制在底層為洋蔥匿名通信網(wǎng)絡(luò)[43]的基礎(chǔ)上通過為每個訂閱者構(gòu)建一個以它自己為根節(jié)點的生成樹, 然后將發(fā)布者發(fā)布的事件路由給所有訂閱者.
該方法以這種多播的方式來保護(hù)發(fā)布者和訂閱者的匿名性. 由于不是僅通過中央服務(wù)器路由事件, 因此系統(tǒng)擴展性較高, 但這種多播的方式也極大的浪費了網(wǎng)絡(luò)的帶寬.
Vo 等人的方案針對被動的局部類型的攻擊者能實現(xiàn)發(fā)布者和訂閱者匿名性, 但其無法實現(xiàn)對全局類型攻擊者的匿名性保護(hù)
通過對現(xiàn)有研究總結(jié)可以發(fā)現(xiàn)直接構(gòu)建TOR 上的發(fā)布訂閱網(wǎng)絡(luò)雖然能夠?qū)崿F(xiàn)匿名性, 但這種簡單混搭的結(jié)果是系統(tǒng)路由性能顯著降低. 概率轉(zhuǎn)發(fā)和位置交換是一個不錯的思路, 但目前的方案僅是針對全局的外部攻擊者模型提供了匿名性保護(hù). 匿名性保護(hù)方案的總結(jié)如表4 所示.
表4 匿名性保護(hù)方案的對比Table 4 Comparison of anonymity protection schemes
根據(jù)對現(xiàn)有的機密性保護(hù)方案的調(diào)研與總結(jié), 我們發(fā)現(xiàn)現(xiàn)有密文匹配方法在進(jìn)行事件匹配時, 匹配不具有可伸縮性, 而基于SGX 的方式雖然匹配效率高, 但其運行內(nèi)存有限. 在匿名性保護(hù)上現(xiàn)有的研究存在研究方向不明確等問題. 當(dāng)前實現(xiàn)隱私保護(hù)技術(shù)的方法還存在著不足, 在很多方向上亟待深入研究, 存在大量機遇, 本節(jié)指出未來的四個研究方向:
(1) 構(gòu)造可支持伸縮性的機密性保護(hù)方案目前大部分機密性保護(hù)方案往往只關(guān)注與一條訂閱匹配的效率, 而對大規(guī)模訂閱匹配時系統(tǒng)面臨的可伸縮性問題缺乏研究. 基于保序加密的發(fā)布訂閱密文匹配有望解決發(fā)布訂閱密文匹配的可伸縮性問題,目前主要的問題是需要研究適用性強的密鑰管理方案,使得Feng 等人[9]的提出SBM方案能夠適用于更一般發(fā)布訂閱的應(yīng)用場景. 另外, 對發(fā)布訂閱保序加密匹配方法的安全性和性能還缺乏全面系統(tǒng)的分析研究, 還有不少工作需要繼續(xù)深入開展. 因此, 利用保序加密算法構(gòu)造密文匹配方案是一個值得研究的方向.
(2) 基于SGX 構(gòu)造占用內(nèi)存更少的機密性保護(hù)方案現(xiàn)有直接在Enclave 內(nèi)部執(zhí)行匹配的方案由于Enclave 內(nèi)存本身的限制導(dǎo)致不能處理大規(guī)模訂閱的匹配, 接下來需設(shè)計更智能的機密性保護(hù)方法以在執(zhí)行匹配時減少Enclave 內(nèi)存的占用, 比如利用訂閱包含關(guān)系重新組織訂閱以減少訂閱的存儲, 進(jìn)而降低頁面缺失或緩存缺失的出現(xiàn).
(3) 發(fā)布訂閱中的密鑰管理問題密文匹配機制為發(fā)布訂閱系統(tǒng)中的密鑰管理引入兩個需求[44], 第一個需求是給出的密鑰分發(fā)方案不能破壞系統(tǒng)去耦合的特性, 這要求發(fā)布者和訂閱者之間不能進(jìn)行密鑰協(xié)商, 否則會影響系統(tǒng)的可伸縮性; 第二個需求是可以實現(xiàn)對加密密鑰的更新. 已有方案比如Ion 等人[2]和Nabeel 等人[3]的方案可以實現(xiàn)第一個需求, 但幾乎沒有方案能滿足第二個需求. 密鑰更新發(fā)生時, 當(dāng)前所有發(fā)布者發(fā)布的事件都是用新密鑰加密的, 而存儲在代理處的訂閱均是用舊密鑰加密的, 代理無法正確執(zhí)行密文匹配, 因此在執(zhí)行事件匹配之前如何快速對失效的訂閱密文進(jìn)行更新是未來一個值得關(guān)注的問題.
(4) 發(fā)布訂閱系統(tǒng)中的匿名性保護(hù)直接構(gòu)建TOR 上的發(fā)布訂閱網(wǎng)絡(luò)雖然能夠?qū)崿F(xiàn)匿名性, 但這種簡單混搭的結(jié)果是系統(tǒng)路由性能顯著降低. 概率轉(zhuǎn)發(fā)和位置交換是一個好的開始, 但其僅僅是針對全局的外部攻擊者模型提供了匿名性保護(hù). 未來, 對發(fā)布訂閱系統(tǒng)中匿名性威脅模型的系統(tǒng)分析是具有現(xiàn)實意義的研究方向;其次, 應(yīng)結(jié)合發(fā)布訂閱系統(tǒng)不同的應(yīng)用場景, 建立威脅模型, 研究在發(fā)布訂閱系統(tǒng)中實現(xiàn)匿名性的高效機制.
除了機密性和匿名性外, 發(fā)布訂閱系統(tǒng)其它方面的安全需求還包括認(rèn)證性(authentication)、完整性(integrity) 和訪問控制等. 其中認(rèn)證性即如果訂閱者A收到聲稱來自發(fā)布者B的消息, 那么A可以驗證B確實是消息的發(fā)布者. 完整性即保證事件和訂閱沒有被惡意的攻擊者所篡改. 訪問控制即發(fā)布者可以指定哪些訂閱者可以接收到自己的事件, 只有滿足條件的訂閱者才能收到匹配的事件. 在實際系統(tǒng)中, 這些安全特性需要和機密性、匿名性一起考慮.
發(fā)布訂閱系統(tǒng)因其異步和去耦合的特性被廣泛用于大規(guī)模的信息傳輸系統(tǒng)中, 本文從機密性和匿名性兩個方面對發(fā)布訂閱系統(tǒng)中隱私保護(hù)技術(shù)的研究進(jìn)展進(jìn)行了介紹. 首先對現(xiàn)有的機密性保護(hù)方案的兩個研究方向進(jìn)行了總結(jié)并介紹了這兩個方向相關(guān)的文獻(xiàn), 接著介紹了匿名性保護(hù)相關(guān)的實現(xiàn)算法. 最后分析了現(xiàn)有研究存在的不足. 并展望了發(fā)布訂閱系統(tǒng)隱私保護(hù)技術(shù)未來的發(fā)展方向.