陳 莊 齊 鋒 葉成蔭
(重慶理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 重慶 400054)(cz@cqut.edu.cn)
近年來云存儲(chǔ)技術(shù)得到蓬勃發(fā)展,2016年《中國云計(jì)算白皮書》指出2015年我國云計(jì)算市場規(guī)模達(dá)到378億元,整體增速31.7%,僅在2015年國務(wù)院就出臺(tái)了3項(xiàng)與云計(jì)算相關(guān)的政策文件.目前越來越多的企業(yè)和個(gè)人將數(shù)據(jù)存放到云端,這種存儲(chǔ)方式可以有效提高數(shù)據(jù)庫的存儲(chǔ)容量、抗故障能力、響應(yīng)速度等.
云存儲(chǔ)在不斷發(fā)展的同時(shí)安全性問題也日益突出[1],尤其是云端數(shù)據(jù)的存儲(chǔ)和隱私問題,例如雅虎在2016年9月公布用戶賬號(hào)信息遭到黑客盜取,至少5億用戶的信息被泄露;Kromtech Security信息專家近期披露,疑似來自 Patient Home Monitoring的醫(yī)療數(shù)據(jù)存儲(chǔ)記錄遭到黑客破解,近47 GB的醫(yī)療數(shù)據(jù)文件在云端被公開訪問,數(shù)據(jù)的安全存儲(chǔ)和隱私問題已經(jīng)成為云計(jì)算發(fā)展的“噩夢”.
基于本文提出了一種全新的云數(shù)據(jù)加密方案,根據(jù)不同的數(shù)據(jù)類型采取不同的加密策略,有效地解決了云存儲(chǔ)加解密目前所面臨的技術(shù)問題.
密碼技術(shù)是確保云數(shù)據(jù)安全的主導(dǎo)力量,可分為對稱加密和非對稱加密2種算法.對稱加密算法使用相同的加解密密鑰,具有運(yùn)算效率高、計(jì)算量小的優(yōu)點(diǎn),非常適用于云存儲(chǔ)環(huán)境下的海量數(shù)據(jù)加解密,常用的對稱加密算法有AES,DES,3DES[2-3]等.非對稱加密算法使用不同的加解密密鑰,具有高安全性的優(yōu)點(diǎn),但是算法復(fù)雜性高計(jì)算消耗時(shí)間量大,不適用大數(shù)據(jù)加解密,常用的非對稱加密算法有 RSA,ECC[4-5]等.目前國際上絕大多數(shù)的密碼技術(shù)標(biāo)準(zhǔn)都是由美國制定和開發(fā)的,為確保我國網(wǎng)絡(luò)安全和社會(huì)公眾利益,國家商用密碼管理局先后發(fā)布了一系列密碼標(biāo)準(zhǔn),例如SM2,SM3,SM4[6-8]等密碼算法,算法公開后國內(nèi)外學(xué)者對其安全性作了全面測試.除了傳統(tǒng)的加密算法以外,目前也出現(xiàn)了一些新的加密技術(shù),例如在文獻(xiàn)[9]中Huang等人提出了一種同態(tài)加密算法,該算法通過矩陣和向量的運(yùn)算來加解密數(shù)據(jù),但是其密文檢索的處理效率很低,離實(shí)際的商業(yè)應(yīng)用還有較大的差距;在文獻(xiàn)[10]中Ateniese等人提出了基于代理重加密的分布式存儲(chǔ)方案,利用半可信服務(wù)器進(jìn)行解密操作,但是無法避免惡意服務(wù)器的攻擊;在文獻(xiàn)[11]中Kamara等人提出了一種面向公有云的加密存儲(chǔ)框架,但是目前該框架還沒有具體的實(shí)施細(xì)節(jié),仍處于理論階段.
關(guān)系型數(shù)據(jù)庫已經(jīng)無法適應(yīng)云數(shù)據(jù)的多源異構(gòu)性,為解決這一問題人們引入了非關(guān)系型數(shù)據(jù)庫,但是在查詢分析方面能力較弱.目前越來越多的云環(huán)境供應(yīng)商開始采用關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫互補(bǔ)的架構(gòu)方式,來解決在處理不同數(shù)據(jù)類型上的缺陷和不足.
云數(shù)據(jù)的多樣化存儲(chǔ)方式,決定了單一的數(shù)據(jù)加密方式很難滿足實(shí)際的應(yīng)用需求.針對以上問題本文提出了數(shù)據(jù)分類分級(jí)的加密方案,在加密算法的選擇上均采用國產(chǎn)密碼算法.針對關(guān)系型數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)只對敏感數(shù)據(jù)進(jìn)行加密并采用多重密鑰管理機(jī)制,即可以有效地提高加解密效率,又可以定期更換主密鑰增強(qiáng)數(shù)據(jù)的安全性;針對非結(jié)構(gòu)化數(shù)據(jù)(文檔、圖片、視頻等)采取客戶端本地加密的方式,同時(shí)采用混合加密算法解決密文共享問題.
根據(jù)目前國內(nèi)外研究現(xiàn)狀,云平臺(tái)的設(shè)計(jì)采用關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫優(yōu)點(diǎn)互補(bǔ)的架構(gòu)方式,同時(shí)采用混合加密算法來克服單一密碼算法的缺點(diǎn)和密文共享問題,敏感明文數(shù)據(jù)的傳輸需要通過SSL加密通道,具體架構(gòu)方案如圖1所示:
圖1 云平臺(tái)加密架構(gòu)方案
客戶端負(fù)責(zé)文檔、圖片等非結(jié)構(gòu)化數(shù)據(jù)的加解密,用戶登錄加密系統(tǒng)后選擇文件.對于需要加密但是無需共享的文件,使用國密SM4算法加密后上傳云端,私鑰本地化存儲(chǔ).當(dāng)云數(shù)據(jù)中的敏感數(shù)據(jù)需要共享給第三方時(shí),采取如下的加密方式:
1)客戶端
客戶端的數(shù)據(jù)加密方案如圖2所示,詳細(xì)加密步驟如下:
①利用SM3算法將信息產(chǎn)生報(bào)文摘要;
②報(bào)文摘要用發(fā)送方SM2的私鑰進(jìn)行加密,生成數(shù)字簽名;
③將數(shù)字簽名和信息使用SM4的私鑰進(jìn)行加密,生成密文;
④使用SM2接收方的公鑰對SM4的私鑰加密生成數(shù)字信封,將密文和數(shù)字信封發(fā)送給接收方.
2)共享端
共享端的數(shù)據(jù)解密方案如圖3所示,詳細(xì)解密步驟如下:
①共享端從云端下載密文和數(shù)字信封,使用SM2的私鑰對數(shù)字信封進(jìn)行解密,生成SM4的私鑰;
②使用SM4的私鑰解密密文,產(chǎn)生信息和數(shù)字簽名;
③使用SM2發(fā)送方的公鑰對數(shù)字簽名解密,得到報(bào)文摘要;同時(shí)對原始信息使用SM3再次生成報(bào)文摘要;
④對比2個(gè)報(bào)文摘要,如果相同說明數(shù)字簽名有效,原始消息沒有被篡改;如果不同說明原始消息被修改或簽名不可信賴,并產(chǎn)生告警.
關(guān)系型數(shù)據(jù)庫中的關(guān)系型數(shù)據(jù),例如登錄信息、個(gè)人信息等內(nèi)容,通過SSL安全通道進(jìn)行傳輸,數(shù)據(jù)到達(dá)服務(wù)器后先經(jīng)過加密系統(tǒng)加密,加密后的數(shù)據(jù)存入數(shù)據(jù)庫中.目前絕大多數(shù)的數(shù)據(jù)庫自帶加解密功能,但是并不支持國產(chǎn)密碼算法,同時(shí)DBA的權(quán)限過大可以獲取所有的密鑰,如果黑客獲取DBA權(quán)限那么所有的數(shù)據(jù)都將會(huì)是透明的.基于此本文設(shè)計(jì)了一種基于DBMS外層的關(guān)系型數(shù)據(jù)庫加密系統(tǒng),該加密系統(tǒng)由密鑰管理模塊、加解密引擎模塊、密鑰管理模塊構(gòu)成,具體架構(gòu)如圖4所示.密鑰管理模塊采用多級(jí)密鑰管理機(jī)制,使用國產(chǎn)密碼算法SM2的公鑰去加密表的密鑰后存儲(chǔ)于加密字典中,而SM2的私鑰存儲(chǔ)于加密系統(tǒng)中,利用表密鑰去保護(hù)數(shù)據(jù)密鑰,這種密鑰管理方式可以定期更換主密鑰而不影響以前加密的數(shù)據(jù).加解密引擎模塊主要負(fù)責(zé)數(shù)據(jù)庫的鏈接和加密算法的選擇,數(shù)據(jù)的加解密采用國產(chǎn)密碼算法SM4,在加密粒度的選擇上采用的是基于字段的加密方法,能夠?qū)δ骋涣忻舾袛?shù)據(jù)進(jìn)行加解密,這種方式避免了數(shù)據(jù)的全表加解密,有效降低了因加解密造成的時(shí)延.加密系統(tǒng)管理模塊主要用來驗(yàn)證用戶身份的合法性,只有合法用戶才能通過該模塊訪問加密字典,修改加密定義參數(shù).
圖4 數(shù)據(jù)庫加密系統(tǒng)架構(gòu)圖
圖2 客戶端加密方案
圖3 共享端解密方案
客戶端加密系統(tǒng)和數(shù)據(jù)庫加密系統(tǒng)使用Java語言編程實(shí)現(xiàn),選用Eclipse作為集成開發(fā)環(huán)境;數(shù)據(jù)庫使用Oracle和MongoDB,其中Oracle數(shù)據(jù)庫用來管理關(guān)系型數(shù)據(jù),MongoDB用來存放文件和文件夾信息;云端存儲(chǔ)平臺(tái)利用hadoop搭建.
非結(jié)構(gòu)化數(shù)據(jù)采用本地加密方式,客戶端首先選擇需要加密的數(shù)據(jù),經(jīng)過加密后的文件統(tǒng)一以WanaCry為后綴名并上傳到云端,為防止云端數(shù)據(jù)被非法修改,采用SM3報(bào)文摘要算法驗(yàn)證數(shù)據(jù)的完整性.
選取1組明文數(shù)據(jù)用于論證方案的正確性,通過對比表1和表2的相關(guān)實(shí)驗(yàn)參數(shù)發(fā)現(xiàn),共享端解密過程中得到的明文、報(bào)文摘要、SM4的私鑰都與客戶端加密時(shí)產(chǎn)生的參數(shù)完全相同.
Oracle數(shù)據(jù)庫用來管理被加密后的關(guān)系型數(shù)據(jù),無論數(shù)據(jù)庫管理員以何種身份進(jìn)入都無法看到明文,即使數(shù)據(jù)庫遭到非法入侵也無法獲取密鑰得到明文信息,具體加密效果如圖5所示.?dāng)?shù)據(jù)庫加密系統(tǒng)的設(shè)計(jì)采用基于字段的加密方法,只對表中的敏感信息進(jìn)行加密,這種方式可以大幅度提高數(shù)據(jù)的加解密效率.實(shí)驗(yàn)過程中分別選取了1萬~4萬條的數(shù)據(jù)量,采取了全表加密和敏感信息加密(選取了其中的1列)的方式,通過對比分析發(fā)現(xiàn)基于字段的加密方式效率更高,具體實(shí)驗(yàn)對比效果如圖6所示.
表1 客戶端加密實(shí)驗(yàn)參數(shù)
表2 共享端解密實(shí)驗(yàn)參數(shù)
圖5 數(shù)據(jù)庫加密效果
圖6 加密效率對比
本文結(jié)合云數(shù)據(jù)多樣化存儲(chǔ)的特點(diǎn),在借鑒傳統(tǒng)加密方案的基礎(chǔ)上,提出了基于國密算法的云數(shù)據(jù)分類分級(jí)加密方案.該方案集終端數(shù)據(jù)安全、網(wǎng)絡(luò)傳輸安全、數(shù)據(jù)存儲(chǔ)安全技術(shù)于一體,有效地確保了云數(shù)據(jù)的完整性、保密性、可用性.