劉書勇+付義倫
摘 要:為了保證云服務端存儲數(shù)據(jù)的保密性和用戶訪問數(shù)據(jù)的便捷性,應由用戶對自己的數(shù)據(jù)文件進行加密保護,并支持云服務提供商對密文數(shù)據(jù)文件的檢索。設計了基于PKI技術(shù)的可搜索云加密存儲系統(tǒng),采用Curtmola可搜索對稱加密方案實現(xiàn)對密文數(shù)據(jù)的檢索,使用數(shù)字證書和公鑰密碼技術(shù)實現(xiàn)云服務端與用戶之間的身份鑒別、密鑰協(xié)商和通信安全等機制,云服務提供商對用戶的數(shù)據(jù)和索引文件進行加密存儲,防止黑客從服務器上非法獲取文件內(nèi)容。經(jīng)過安全性分析,此系統(tǒng)能夠?qū)崿F(xiàn)身份鑒別、通信加密、存儲安全和密文檢索安全,防止竊聽攻擊、偽造攻擊、重放攻擊等攻擊手段,適用于政府、企業(yè)等單位建立安全可靠的云存儲系統(tǒng)。
關(guān)鍵詞:信息安全;云存儲;密碼技術(shù);可搜索加密;PKI技術(shù)
DOIDOI:10.11907/rjdk.173025
中圖分類號:TP309.7
文獻標識碼:A 文章編號:1672-7800(2018)002-0182-04
0 引言
隨著云計算技術(shù)的飛速發(fā)展,越來越多的政府、企業(yè)以及個人用戶都開始采用云計算或云存儲系統(tǒng),實現(xiàn)信息系統(tǒng)、Web網(wǎng)站、數(shù)據(jù)存儲、大數(shù)據(jù)分析等應用向云端的遷移。 特別是隨著大數(shù)據(jù)時代的來臨,數(shù)據(jù)形式已經(jīng)從原來的結(jié)構(gòu)化數(shù)據(jù)為主(例如關(guān)系型數(shù)據(jù)庫等),逐漸轉(zhuǎn)變?yōu)橐园虢Y(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)作為重要的數(shù)據(jù)格式,例如視頻、音頻、文檔等文件形式。一些著名的存儲服務系統(tǒng),包括Amazon S3、iCloud、DropBox、百度云等,其中某些系統(tǒng)提供了服務端加密或客戶端加密等方式,但是都不支持對密文的搜索功能。
為了保障云端存儲數(shù)據(jù)的保密性,用戶應先把要存儲的數(shù)據(jù)文件進行加密(加密密鑰由用戶產(chǎn)生并安全保存),然后將密文格式文件傳遞到遠程云端服務器進行保存,這樣可以保證黑客或云服務提供商即使讀取了服務器上的文件,也無法解密獲取文件的真實內(nèi)容。一個實際的問題是,如果用戶在云端存儲了大量文件,當某一天用戶想獲取云端的某些文件時(例如包含某個關(guān)鍵詞“信息安全”),如果云端不能對密文文件進行關(guān)鍵詞搜索,就不能查找并返回用戶這些特定的文件。一個直接的方法是,云端把所有的文件發(fā)送給用戶,用戶收到后再進行全部解密、檢索,這樣的效率非常低。
D. Song等[1]最早提出了可搜索加密的概念,可以實現(xiàn)對密文數(shù)據(jù)的關(guān)鍵詞搜索,其缺點是需要對整個密文文件進行遍歷搜索,效率比較低。E.-J. Goh等[2]提出了安全索引文件的方案,實現(xiàn)對密文索引文件的檢索,提高了搜索效率。R. Curtmola等[3]給出了可搜索加密的安全定義,并分別提出了非適應性安全和適應性安全的可搜索加密方案。后來的一些可搜索加密方案,實現(xiàn)了多關(guān)鍵詞、詞組的密文搜索方案[4-7]。這些可搜索加密方案是基本的密碼協(xié)議,在實際的云存儲系統(tǒng)中,必須要考慮云服務端和用戶之間的身份鑒別、通信安全以及密文索引文件安全等問題。
本文采用PKI技術(shù)解決云存儲系統(tǒng)的身份鑒別、密鑰協(xié)商、通信安全等問題,設計了一種實際的可搜索云加密存儲系統(tǒng),采用R. Curtmola的可搜索加密方案實現(xiàn)密文檢索,通過CA數(shù)字證書和數(shù)字簽名實現(xiàn)用戶與云服務端之間的雙向身份鑒別、密鑰協(xié)商和加密通信,可以抵抗竊聽攻擊、身份假冒、中間人攻擊、消息偽造等攻擊方式,保證了云存儲系統(tǒng)的安全性。
1 可搜索加密方案
R. Curtmola等[3]提出的可搜索加密的安全定義,包括非適應性不可區(qū)分安全性和適應性不可區(qū)分安全性,已經(jīng)被多數(shù)研究者作為可搜索加密安全定義的標準。R. Curtmola等提出了兩種可搜索加密方案,筆者采用適應性安全的可搜索加密方案作為云加密存儲系統(tǒng)的密文搜索協(xié)議。
1.1 符號與定義
令D表示文檔集合,w表示關(guān)鍵詞,D(w)表示包含關(guān)鍵詞w的文檔集合,δ(D)表示所有文檔D中關(guān)鍵詞的集合。令s=n*max,其中n是集合D中的文檔數(shù)量,max表示單個文檔中包含的最多不同關(guān)鍵詞的數(shù)量。
令Enc_k()表示用密鑰k進行對稱加密運算,Dec_k()表示用密鑰k進行對稱解密運算。Per_k()表示用密鑰k進行偽隨機置換,可以使用語義安全的對稱密碼算法實現(xiàn)此功能。
1.2 可搜索加密方案
R. Curtmola等提出的適應性安全可搜索加密方案,基本過程描述如下:
2 基于PKI技術(shù)的可搜索云加密存儲系統(tǒng)
在云存儲系統(tǒng)中,必須要解決云服務端與用戶之間的身份鑒別、密鑰協(xié)商、通信安全等問題,防止身份假冒、竊聽攻擊、消息重放、數(shù)據(jù)偽造等安全風險。這些安全問題應使用PKI和數(shù)字認證等公鑰密碼技術(shù)實現(xiàn),公鑰密碼技術(shù)適合于實現(xiàn)身份鑒別、密鑰協(xié)商、數(shù)字簽名等功能,對稱密碼技術(shù)更適合于高速數(shù)據(jù)加解密運算,二者結(jié)合才能實現(xiàn)較好的安全性。
本文設計的可搜索云加密存儲系統(tǒng),采用我國密碼算法標準——高安全強度的SM2橢圓曲線公鑰密碼算法[8-9]、SM3密碼雜湊算法[10-11]和SM4分組對稱密碼算法[12-13]以及雙數(shù)字證書機制,分別實現(xiàn)公鑰加解密、數(shù)字簽名、消息完整性、對稱加解密等功能。采用CA數(shù)字認證和PKI技術(shù)解決云存儲系統(tǒng)的身份鑒別、密鑰協(xié)商、通信安全等問題,采用R. Curtmola的可搜索加密方案實現(xiàn)對密文數(shù)據(jù)的檢索。因此,筆者提出的可搜索云加密存儲系統(tǒng)充分利用了公鑰密碼技術(shù)和對稱密碼技術(shù)的各自優(yōu)點,達到良好的安全性與效率的統(tǒng)一。
2.1 符號與角色定義
為了便于描述,令A表示云服務端,B表示用戶,Cert_A和Cert_B分別表示云服務端和用戶數(shù)字證書。采用雙數(shù)字證書機制,即簽名證書用于數(shù)字簽名和身份鑒別,加密證書用于密鑰協(xié)商和對稱密鑰的加密封裝。
Pub_Enc_A()表示用A的加密證書的公鑰進行加密運算,Pub_Dec_A()表示用A的加密證書的私鑰進行解密運算。Sig_A()表示用A的簽名證書的私鑰進行數(shù)字簽名,Verify_A()表示用A的簽名證書的公鑰進行驗證簽名。Enc_k()表示用密鑰k進行對稱加密運算,Dec_k()表示用密鑰k進行對稱解密運算。endprint
基于PKI技術(shù)的可搜索云加密存儲系統(tǒng),由CA認證中心、云存儲服務提供商、云存儲用戶等角色組成。每一種角色的功能包括:
(1)CA認證中心。實現(xiàn)數(shù)字證書的生成、頒發(fā)、維護、更新、撤銷等全生命周期管理,為云存儲服務提供商、云存儲用戶頒發(fā)代表身份的數(shù)字證書。本系統(tǒng)采用標準的數(shù)字證書格式,可以連接國內(nèi)外CA認證中心,或使用企業(yè)內(nèi)部建立的CA認證中心。
(2)云存儲服務提供商A。為用戶提供可靠穩(wěn)定的云存儲服務,并根據(jù)用戶的檢索需求,提供密文文件的檢索、查找服務,將查找后的密文文件返還給用戶。
(3)用戶B。具有密鑰生成、文件加密、索引文件生成、查找陷門生成等功能,將密文數(shù)據(jù)和密文索引發(fā)給云服務端進行存儲;并能夠產(chǎn)生密文檢索的陷門和需求,發(fā)給云服務端進行密文檢索。
2.2 系統(tǒng)設計與流程
基于PKI技術(shù)的可搜索云加密存儲系統(tǒng)流程,主要包括系統(tǒng)建立、文件加密存儲和密文檢索三個階段,分別詳細描述如下:
2.2.1 系統(tǒng)建立階段
由CA認證中心進行數(shù)字證書的頒發(fā)以及云服務端和用戶的準備工作。
(1)云服務端A向CA認證中心申請數(shù)字證書,CA認證中心審核信息通過后,向云服務端A頒發(fā)數(shù)字證書Cert_A,包括簽名證書和加密證書。
(2)用戶B向CA認證中心申請數(shù)字證書,CA認證中心審核信息通過后,向用戶B頒發(fā)數(shù)字證書Cert_B,包括簽名證書和加密證書。
(3)云服務端A進行系統(tǒng)設置、用戶存儲空間的劃分等準備工作;用戶B進行密碼系統(tǒng)的安裝等準備工作。
2.2.2 文件加密存儲階段
用戶B進行所有文檔和索引文件的加密,并發(fā)送給云服務端A進行存儲。
(1)用戶B隨機生成一個隨機數(shù)x,計算橢圓曲線的點乘PointX=x·G,其中G是SM2橢圓曲線密碼算法參數(shù)中的基點,將PointX作為密鑰協(xié)商的參數(shù)。
(2)用戶B計算Pub_Enc_A(Cert_B, PointX, T_B, Sig_B),并發(fā)送給云服務端A,其中T_B表示對此消息產(chǎn)生的時間戳,Sig_B是對此消息的簽名。該步驟是將用戶B的數(shù)字證書Cert_B、密鑰協(xié)商參數(shù)PointX以及時間戳、簽名信息經(jīng)過加密后,發(fā)給云服務端A。
(3)云服務端A解密消息Pub_Enc_A(Cert_B, PointX, T_B, Sig_B)后,驗證簽名和時間戳的正確性。如果簽名和時間戳都正確,則隨機生成一個隨機數(shù)y,計算橢圓曲線的點乘PointY=y·G。然后計算Pub_Enc_B(Cert_A, Cert_B, PointX, PointY, T_A, Sig_A),并發(fā)送給用戶B,其中T_A表示對此消息產(chǎn)生的時間戳,Sig_A是對此消息的簽名。
(4)用戶B解密后,驗證簽名和時間戳的正確性。如果簽名和時間戳都正確,則計算出協(xié)商的對稱密鑰k=SM3(x·PointY)= SM3(xy·G),即用SM3算法對橢圓曲線點xy·G的比特串進行雜湊運算,取前128比特作為對稱密鑰。用戶B發(fā)送Pub_Enc_A(k, Sig_B)給云服務端A,云服務端A計算k=SM3(y·X)= SM3(xy·G)。雙方擁有相同的對稱密鑰k,完成密鑰協(xié)商過程。
(5)用戶B按照可搜索加密方案,建立密文索引和密文文檔(I,c)后,計算Enc_k(I,c)并發(fā)送給云服務端A。
(6)云服務端A計算解密,(I,c)=Dec_k(Enc_k(I,c)),并將(I,c)進行存儲。
2.2.3 密文檢索階段
用戶B生成查找陷門t,并發(fā)送給云服務端A進行密文檢索。
3 安全性分析
從身份鑒別、密鑰安全、通信安全、存儲安全、密文檢索安全,以及抵抗身份假冒、竊聽攻擊、消息重放、數(shù)據(jù)偽造等方面,分析云加密存儲系統(tǒng)的安全性。
3.1 身份鑒別機制與安全性
云加密存儲系統(tǒng)采用數(shù)字證書和數(shù)字簽名機制,實現(xiàn)云服務端與用戶之間的雙向身份鑒別。
在文件加密存儲階段,用戶B計算Pub_Enc_A(Cert_B, PointX, T_B, Sig_B),其中Cert_B作為用戶B的數(shù)字證書,代表了用戶身份。云服務端A通過驗證Sig_B,可以驗證用戶B的身份,因為只有用戶能夠進行此簽名操作。時間戳T_B保證了此消息的鮮活性,防止消息重放攻擊。
云服務端A發(fā)送Pub_Enc_B(Cert_A, Cert_B, PointX, PointY, T_A, Sig_A),用戶A解密后,通過驗證簽名Sig_A的正確性,驗證云服務端A的身份。時間戳T_A保證了此消息的鮮活性,防止消息重放攻擊。
類似地,密文檢索階段的開始步驟也是先進行身份鑒別和密鑰協(xié)商,因此能夠?qū)崿F(xiàn)云服務端A與用戶B之間的雙向身份鑒別,并抵抗身份假冒、消息重放攻擊。
3.2 密鑰協(xié)商的安全性
云加密存儲系統(tǒng)采用了橢圓曲線點群上的Diffie-Hellman密鑰交換協(xié)議(ECDH),并使用數(shù)字簽名和時間戳防止中間人攻擊、消息偽造和消息重放攻擊。
由于xy·G= x·(y·G)= x·PointY=y·(x·G)=y·PointX,因此云服務端A和用戶B能夠協(xié)商得到相同的對稱密鑰k= SM3(xy·G)。在密鑰協(xié)商過程中,Pub_Enc_A(Cert_B, PointX, T_B, Sig_B)和Pub_Enc_B(Cert_A, Cert_B, PointX, PointY, T_A, Sig_A)中的簽名Sig_B、Sig_A,保證了密鑰參數(shù)PointX、PointY不能被篡改、偽造,公鑰加密保證了兩個消息的保密性。因此,這些安全機制保證了密鑰k是由云服務端A與用戶B之間協(xié)商的密鑰,防止了竊聽攻擊和中間人攻擊。endprint
3.3 通信安全
云服務端A與用戶B之間的通信包括兩個過程,一個是身份鑒別和密鑰協(xié)商過程,另一個是密文文檔傳輸和檢索過程。
在身份鑒別和密鑰協(xié)商過程中,雙方之間的通信都是用對方的公鑰進行加密,只有私鑰擁有者才能夠解密,因此保證了身份鑒別和密鑰協(xié)商過程的通信安全性。
在完成密鑰協(xié)商后,雙方之間的通信用協(xié)商的對稱密鑰k進行加密,因為密鑰k的協(xié)商過程是安全的,因此用密鑰k加密保護的通信過程是安全的,能夠抵抗竊聽攻擊、消息偽造攻擊。
3.4 存儲安全和密文檢索安全
所有的文檔D和索引文件,都是由用戶B自己生成的密鑰進行加密保護,因此除了用戶B之外,其他人(包括云服務端A)都不能解密文檔和索引文件。因此,密文文檔和索引文件保存在云端是安全的。
云加密存儲系統(tǒng)采用了R Curtmola的可搜索加密方案,在對密文索引文件進行檢索時,不泄露文檔和索引文件的信息,能夠達到適應性不可區(qū)分安全性。
4 結(jié)語
云計算和云存儲已經(jīng)在各個領(lǐng)域逐漸成為信息系統(tǒng)的主流計算和存儲模式,而且大數(shù)據(jù)的發(fā)展使得非結(jié)構(gòu)化文件的安全存儲變得日益重要。本文提出的基于PKI技術(shù)的可搜索云加密存儲系統(tǒng),在可搜索對稱加密方案的基礎上,通過CA數(shù)字證書等公鑰密碼技術(shù),實現(xiàn)了云服務端與用戶之間的雙向身份鑒別、密鑰協(xié)商、通信安全等機制,適用于建立云存儲時代的數(shù)據(jù)外包存儲服務系統(tǒng)。
參考文獻:
[1] SONG D, WAGNER D, PERRIG A. Practical techniques for searches on encrypted data [C].In Proceedings of 2000 IEEE Symposium on Security and Privacy, IEEE Computer Society, 2000: 44-55.
[2] GOH E-J. Secure indexes [R]. Technical Report 2003/216, IACR ePrint Cryptography Archive, 2003.
[3] CURTMOLA R, GARAY J, KAMARA S, et al. Searchable symmetric encryption: improved definitions and efficient constructions [J]. Journal of Computer Security, 2011, 19 (5): 895-934.
[4] CAO N, WANG C, LI M, et al. Privacy-preserving multi-keyword ranked search over encrypted cloud data [J]. IEEE Transactions on Parallel and Distributed Systems, 2014, 25(1): 222-233.
[5] TANG Y, GU D, DING N, et al. Phrase search over encrypted data with symmetric encryption scheme [C]. In 32nd International Conference on Distributed Computing Systems Workshops, IEEE Computer Society, 2012: 471-480.
[6] 徐鵬,金海.可搜索加密的研究進展[J].網(wǎng)絡與信息安全學報,2016,2 (10): 8-16.
[7] 馮朝勝,秦志光,袁丁.云數(shù)據(jù)安全存儲技術(shù)[J].計算機學報,2015,38(1): 150-163.
[8] 全國信息安全標準化技術(shù)委員會.信息安全技術(shù) SM2橢圓曲線公鑰密碼算法[P].中國,GB/T 32918-2016,2016-08-29.
[9] 汪朝暉,張振峰. SM2橢圓曲線公鑰密碼算法綜述[J].信息安全研究,2016,2(11): 972-982.
[10] 全國信息安全標準化技術(shù)委員會.信息安全技術(shù) SM3密碼雜湊算法[P].中國,GB/T 32905-2016,2016-08-29.
[11] 王小云,于紅波. SM3密碼雜湊算法[J].信息安全研究, 2016, 2(11): 983-994.
[12] 全國信息安全標準化技術(shù)委員會.信息安全技術(shù) SM4分組密碼算法[P].中國,GB/T 32907-2016,2016-08-29.
[13] 呂述望,蘇波展,王鵬,等.SM4分組密碼算法綜述[J].信息安全研究,2016,2(11):995-1007.endprint