◆王國(guó)峰 雷琦 唐云 王遠(yuǎn)輝
(中電科第三十研究所 中國(guó)電子科學(xué)研究院 中電科網(wǎng)絡(luò)空間安全研究院有限公司 北京 100041)
在大數(shù)據(jù)時(shí)代,大量數(shù)據(jù)存儲(chǔ)在云服務(wù)器上,需要借助云計(jì)算平臺(tái)對(duì)數(shù)據(jù)進(jìn)行管理,導(dǎo)致數(shù)據(jù)的所有權(quán)和管理權(quán)分離。這種情況下,由于用戶數(shù)據(jù)托管在云服務(wù)端,依賴云計(jì)算平臺(tái)保障用戶數(shù)據(jù)私密性,數(shù)據(jù)的安全很大程度取決于大數(shù)據(jù)平臺(tái)的可信性。然而,大數(shù)據(jù)平臺(tái)運(yùn)維人員有可能濫用或誤用自己的權(quán)限泄露用戶隱私數(shù)據(jù),損害用戶信息或信息系統(tǒng)的保密性、完整性及可用性[1-3]。為保護(hù)用戶數(shù)據(jù),本文設(shè)計(jì)大數(shù)據(jù)加密方案在客戶端對(duì)數(shù)據(jù)加密,并控制數(shù)據(jù)加密過(guò)程和安全存儲(chǔ)加密密鑰。用戶隱私數(shù)據(jù)加密以后再傳到大數(shù)據(jù)平臺(tái)上,而大數(shù)據(jù)平臺(tái)服務(wù)商只能看到密文,數(shù)據(jù)控制權(quán)完全在用戶手中。此外,加密密鑰妥善保管和存儲(chǔ),避免大數(shù)據(jù)平臺(tái)管理員利用特權(quán)得到密鑰進(jìn)而竊取用戶數(shù)據(jù)[4-5]。本文在已有大數(shù)據(jù)安全保護(hù)技術(shù)的基礎(chǔ)上,實(shí)現(xiàn)了大數(shù)據(jù)環(huán)境不同場(chǎng)景下的大數(shù)據(jù)加密方案,具有很強(qiáng)的可適用性。
在大數(shù)據(jù)時(shí)代,用戶將數(shù)據(jù)遷移到云上,如何保障用戶的權(quán)益,是一個(gè)極具挑戰(zhàn)的問(wèn)題,也是近年來(lái)學(xué)術(shù)界和工業(yè)界共同關(guān)注的熱點(diǎn)。如表1 所示,CryptDB[6]在數(shù)據(jù)存入數(shù)據(jù)庫(kù)前,利用數(shù)據(jù)庫(kù)代理對(duì)數(shù)據(jù)作特定加密,可有效防范惡意的數(shù)據(jù)庫(kù)管理人員;Mylar[7]在應(yīng)用數(shù)據(jù)傳送到服務(wù)器前對(duì)數(shù)據(jù)作加密,以保證數(shù)據(jù)的隱私性和安全性,可有效防范惡意的應(yīng)用服務(wù)管理人員;ShadowCrypt[8]通過(guò)瀏覽器插件,在數(shù)據(jù)到達(dá)客戶段應(yīng)用程序之前對(duì)數(shù)據(jù)加密,從而可預(yù)防客戶端及服務(wù)器端的數(shù)據(jù)隱私泄露。Over-encryption[9]把數(shù)據(jù)保護(hù)與權(quán)限訪問(wèn)控制相結(jié)合,在客戶端加密的同時(shí)又可在云服務(wù)端對(duì)用戶數(shù)據(jù)作訪問(wèn)控制,用戶不必每次在權(quán)限訪問(wèn)改變時(shí)下載并重新對(duì)數(shù)據(jù)加密。PasS(Privacy as a Service)[10]系統(tǒng)利用密碼協(xié)處理器芯片在服務(wù)端加解密數(shù)據(jù),使數(shù)據(jù)被用戶密鑰加密后存儲(chǔ)到云服務(wù)端,可有效保護(hù)用戶數(shù)據(jù)隱私。近年來(lái),工業(yè)界也提出使用云訪問(wèn)安全代理(CASB,Cloud Access Security Broker)[11]技術(shù),透明地在云應(yīng)用程序和用戶之間對(duì)數(shù)據(jù)加解密。然而,目前大多數(shù)CASB 解決方案技術(shù)細(xì)節(jié)是不公開的。本文在已有大數(shù)據(jù)安全保護(hù)技術(shù)的基礎(chǔ)上,實(shí)現(xiàn)了大數(shù)據(jù)環(huán)境不同場(chǎng)景下的大數(shù)據(jù)加密方案。

表1 典型數(shù)據(jù)加密系統(tǒng)對(duì)比
大數(shù)據(jù)環(huán)境下加密方案設(shè)計(jì)架構(gòu)如圖1 所示,包括分布式文件加密、分布式數(shù)據(jù)庫(kù)加密和關(guān)系數(shù)據(jù)庫(kù)加密,其中重要服務(wù)介紹如下。

圖1 數(shù)據(jù)加密方案架構(gòu)
(1)安全認(rèn)證服務(wù):認(rèn)證客戶端向認(rèn)證服務(wù)端認(rèn)證,驗(yàn)證自己的身份是可信的,沒(méi)有被冒充,可利用Kerberos 或LDAP 組件實(shí)現(xiàn)安全認(rèn)證功能。
(2)密鑰管理服務(wù)器(KMS):提供密鑰訪問(wèn)服務(wù),管理密鑰的訪問(wèn)權(quán)限。
(3)密鑰存儲(chǔ)服務(wù)(Keystore):生成和/存儲(chǔ)密鑰,確保密鑰的安全。
(4)權(quán)限管控服務(wù):在權(quán)限管控服務(wù)中,所有的權(quán)限都只能授予角色,當(dāng)角色被掛載到用戶組的時(shí)候,該組內(nèi)的用戶才具有相應(yīng)的權(quán)限。授權(quán)對(duì)象為服務(wù)器、數(shù)據(jù)庫(kù)、表、視圖、列、URI 等,授權(quán)級(jí)別包括select、insert 和all,可利用Sentry 組件對(duì)權(quán)限作管控。
(5)分布式文件加密:對(duì)存儲(chǔ)在分布式文件系統(tǒng)中的文件進(jìn)行加密,本文借助Hadoop 分布式文件系統(tǒng)(HDFS)分布式文件加密技術(shù),實(shí)現(xiàn)大數(shù)據(jù)環(huán)境下HDFS 分布式文件系統(tǒng)文件加密及解密功能。
(6)分布式數(shù)據(jù)庫(kù)加密:對(duì)分布式數(shù)據(jù)庫(kù)(如Hive 或Kudu)作數(shù)據(jù)加密,本文借助UDF 技術(shù)實(shí)現(xiàn)數(shù)據(jù)表加解密功能,粒度可達(dá)到數(shù)據(jù)表列級(jí)別。UDF 已變成大數(shù)據(jù)生態(tài)圈查詢引擎的必備功能之一。
(7)關(guān)系數(shù)據(jù)庫(kù)加密:支持表加密和表空間加密的特性,避免數(shù)據(jù)文件被竊取后破解出關(guān)鍵數(shù)據(jù),本文借助MariaDB 關(guān)系數(shù)據(jù)庫(kù)對(duì)表數(shù)據(jù)進(jìn)行加解密處理。
分布式文件加密可實(shí)現(xiàn)透明、端到端的加密。透明加密意味著終端用戶無(wú)須感知加解密過(guò)程,而端到端意味數(shù)據(jù)在靜態(tài)和傳輸過(guò)程中都是加密的。這里以HDFS 分布式文件系統(tǒng)為例來(lái)作詳細(xì)介紹。配置分布式文件加密完成后,用戶無(wú)須做任何程序代碼的更改,就可以往HDFS 上存儲(chǔ)并加密數(shù)據(jù),數(shù)據(jù)加密和解密由客戶端完成。同時(shí)加密密鑰由KMS 管理,HDFS 不會(huì)存儲(chǔ)或訪問(wèn)未加密的數(shù)據(jù)或數(shù)據(jù)加密密鑰,其中KMS 是一個(gè)Web 服務(wù),本身提供了一系列API 來(lái)創(chuàng)建、獲取和維護(hù)密鑰。
圖2 展示了分布式文件加密過(guò)程中encryption zone keys(EZ keys),data encryption keys(DEKs)和encrypted data encryption keys(EDEKs)之間的關(guān)系,其中EZ key 加密DEK 得到EDEK,EZ key解密EDEK 得到DEK;DEK 加密File 得到Encrypted File,DEK 解密Encrypted File 得到File,其中:

圖2 分布式文件加密
(1)Encryption Zones(EZ)是HDFS 上面的一個(gè)需要加密的目錄,拷貝到這個(gè)目錄的文件和子目錄都會(huì)被加密。
(2)每一個(gè)EZ 對(duì)應(yīng)有一個(gè) EZ key,這個(gè)key 是由密鑰管理員在創(chuàng)建zone 的時(shí)候指定的,EZ key 存儲(chǔ)在后端的keystore 中,獨(dú)立于HDFS 存儲(chǔ)。
(3)EZ 里面的每一個(gè)文件都擁有自己對(duì)應(yīng)的encryption key,稱之為Data Encryption Key(DEK)。
(4)DEK 使用對(duì)應(yīng)的EK key 加密,生成Encrypted Data Encryption Key(EDEK)。
EDEK 持久化存儲(chǔ)在HDFS 分布式文件系統(tǒng)中,EZ keys 在KMS 和Keystore 中存儲(chǔ)管理,由于HDFS 用戶沒(méi)有權(quán)限獲取EDEK’s encryption keys(EZ keys),即使HDFS 失陷(比如攻擊者獲取到HDFS 超級(jí)用戶),攻擊者也只能獲取到加密文件和EDEKS,無(wú)法解密文件。客戶端經(jīng)過(guò)權(quán)限驗(yàn)證向KMS 服務(wù)請(qǐng)求密鑰,沒(méi)有權(quán)限的客戶端將不會(huì)得到解密文件對(duì)應(yīng)的DEK 密鑰。
綜上所述,分布式文件加密過(guò)程如下:
1) 用戶首先經(jīng)過(guò)權(quán)限認(rèn)證,確認(rèn)自己的身份;
2) 用戶向HDFS Client 發(fā)送寫入數(shù)據(jù)請(qǐng)求;
3) HDFS Client 和HDFS 集群交互,得到EDEK;
4) HDFS Client 和 KMS 交互,得到加密數(shù)據(jù)所使用的DEK;
5) HDFS Client 使用DEK 加密數(shù)據(jù),將密文存到HDFS 集群中。
分布式文件解密過(guò)程如下:
1) 用戶首先經(jīng)過(guò)權(quán)限認(rèn)證,確認(rèn)自己的身份;
2) 用戶向HDFS Client 發(fā)送讀取數(shù)據(jù)請(qǐng)求;
3) HDFS Client 和HDFS 集群交互,得到EDEK;
4) HDFS Client 和 KMS 交互,得到解密數(shù)據(jù)所使用的DEK;
5) HDFS Client 使用DEK 解密數(shù)據(jù),將明文返回給用戶。
分布式文件加密粒度太粗,有時(shí)并非要對(duì)分布式文件數(shù)據(jù)加密,而是對(duì)要存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中的數(shù)據(jù)作加密處理。本文設(shè)計(jì)分布式數(shù)據(jù)庫(kù)加密方案,使用KMS 做密鑰管理。
分布式數(shù)據(jù)庫(kù)加密過(guò)程如下:
1) 用戶首先經(jīng)過(guò)權(quán)限認(rèn)證,確認(rèn)自己的身份;
2) 用戶向KMS 發(fā)送請(qǐng)求,獲取要插入的表對(duì)應(yīng)的密鑰參數(shù);
3) 得到密鑰參數(shù)后,用戶調(diào)用SQL UDF,傳入獲得的密鑰參數(shù);
4) 數(shù)據(jù)庫(kù)引擎接收到請(qǐng)求,調(diào)用權(quán)限管控服務(wù)判斷用戶的請(qǐng)求是否符合權(quán)限規(guī)則;
5) 若符合權(quán)限規(guī)則,UDF 使用自身的固定參數(shù)結(jié)合傳進(jìn)來(lái)的密鑰參數(shù)形成數(shù)據(jù)密鑰,加密數(shù)據(jù),將密文存儲(chǔ)到分布式數(shù)據(jù)庫(kù)中。
分布式數(shù)據(jù)庫(kù)解密過(guò)程如下:
1) 用戶首先經(jīng)過(guò)權(quán)限認(rèn)證,確認(rèn)自己的身份;
2) 用戶向KMS 發(fā)送請(qǐng)求,獲取要查詢的表對(duì)應(yīng)的密鑰參數(shù);
3) 得到密鑰參數(shù)后,用戶調(diào)用SQL UDF,傳入獲得的密鑰參數(shù);
4) 數(shù)據(jù)庫(kù)引擎接收到請(qǐng)求,調(diào)用權(quán)限管控服務(wù)判斷用戶的請(qǐng)求是否符合權(quán)限規(guī)則;
5) 若符合權(quán)限規(guī)則,UDF 使用自身的固定參數(shù)結(jié)合傳進(jìn)來(lái)的密鑰參數(shù)形成數(shù)據(jù)密鑰,解密分布式數(shù)據(jù)庫(kù)中的密文數(shù)據(jù),將明文返回給用戶。
為了支持多用戶多會(huì)話,往往需要一個(gè)獨(dú)立的關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)元數(shù)據(jù),這里以MariaDB 作為元數(shù)據(jù)庫(kù)。另外,一些密鑰的元數(shù)據(jù)信息也存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中。
為了保證關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)安全,需使數(shù)據(jù)在靜態(tài)和傳輸過(guò)程中都是加密的。MariaDB 對(duì)表數(shù)據(jù)加密,可保證元數(shù)據(jù)是密文存儲(chǔ)的,并配置TLS 確保傳輸過(guò)程安全性。
關(guān)系數(shù)據(jù)庫(kù)加密過(guò)程如下:
1) 數(shù)據(jù)經(jīng)TLS 傳到MariaDB 數(shù)據(jù)庫(kù);
2) MariaDB 數(shù)據(jù)庫(kù)從KMS 中獲得對(duì)應(yīng)的密鑰,加密數(shù)據(jù),存到數(shù)據(jù)庫(kù)中。
關(guān)系數(shù)據(jù)庫(kù)解密過(guò)程如下:
1) 程序向MariaDB 數(shù)據(jù)庫(kù)發(fā)送讀取數(shù)據(jù)請(qǐng)求;
2) MariaDB 數(shù)據(jù)庫(kù)從KMS 中獲得對(duì)應(yīng)的密鑰,解密數(shù)據(jù),將解密后的數(shù)據(jù)以TLS 方式返回給相關(guān)程序。

圖3 關(guān)系數(shù)據(jù)庫(kù)加密
針對(duì)大數(shù)據(jù)平臺(tái)下數(shù)據(jù)安全問(wèn)題,本文分別設(shè)計(jì)分布式文件加密、分布式數(shù)據(jù)庫(kù)加密和關(guān)系數(shù)據(jù)庫(kù)加密方案,在客戶端對(duì)數(shù)據(jù)加密,并控制數(shù)據(jù)加密過(guò)程和安全存儲(chǔ)加密密鑰,大數(shù)據(jù)平臺(tái)服務(wù)商只能看到密文,從而數(shù)據(jù)控制權(quán)完全在用戶手中。
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2021年7期