楊 珂
(西南民族大學(xué)計算機科學(xué)與技術(shù)學(xué)院,四川 成都 610041)
云存儲是在云計算概念發(fā)展的基礎(chǔ)上衍生出來的一種在線存儲服務(wù). 云存儲因其彈性容量、按需付費、易于使用和管理等特點得到了廣泛的支持與應(yīng)用,另一方面,云存儲在數(shù)據(jù)安全性方面還存在很多問題有待解決[1-2].2010 年中國云計算調(diào)查報告顯示,數(shù)據(jù)安全性與隱私仍然是廣受各類企業(yè)和用戶關(guān)注的問題,有6 成受訪者表示“十分擔(dān)心”數(shù)據(jù)安全與隱私[3].在云存儲的服務(wù)模式中,用戶的敏感數(shù)據(jù)存儲在不可信的第三方存儲環(huán)境中,在允許已授權(quán)用戶對云端數(shù)據(jù)的共享訪問的同時如何使云端數(shù)據(jù)的機密性受到有效保障是云存儲中安全問題的重要研究焦點.
一方面,云環(huán)境中的用戶不能完全信任云存儲服務(wù)提供商(Cloud Storage Provider,CSP),不愿對包括CSP 在內(nèi)的任意未授權(quán)用戶暴露自己的私密數(shù)據(jù).通常的做法是,用戶首先采用某種加密算法對自己的私密數(shù)據(jù)進行加密,然后再將加密后的密文上傳至云端存儲.這樣,CSP 或其他未授權(quán)用戶即使得到了加密數(shù)據(jù)也無法對密文解密以獲取明文數(shù)據(jù),從而有效保證了用戶隱私數(shù)據(jù)的機密性.
另一方面,云存儲中也普遍涉及到多個用戶間需要共享特定數(shù)據(jù)的場景.由于在云端存儲的是數(shù)據(jù)密文,因此數(shù)據(jù)在多用戶間的共享必然涉及到數(shù)據(jù)解密的操作.由于CSP 處于半可信(Semi -Trust)狀態(tài),因此不可能將解密操作交給云服務(wù)器完成.為保證數(shù)據(jù)的機密性,可行的方案是由數(shù)據(jù)擁有者(Data Owner,DO)用事先與對方協(xié)商好的密鑰(對稱加密)或?qū)Ψ降墓€(非對稱加密)對共享數(shù)據(jù)重新加密后再重新上傳至云端,并由共享用戶下載后解密. 但這樣的方案加重了數(shù)據(jù)擁有者的計算負(fù)擔(dān)和帶寬壓力,同時在數(shù)據(jù)大量共享的時候,也加大了數(shù)據(jù)擁有者的密鑰管理難度.
針對分布式數(shù)據(jù)存儲的代理重加密(Proxy Re -Encryption,PRE)技術(shù)能夠在保證數(shù)據(jù)機密性的同時,使云端數(shù)據(jù)能夠在多個合法用戶之間提供安全共享.
代理重加密是1998 年由Blaze 等[4]在歐洲密碼學(xué)年會上提出的密文間的一種密文轉(zhuǎn)換機制,它允許一個半可信的第三方(Proxy)把使用用戶A 的公鑰加密得到的密文轉(zhuǎn)換得到使用用戶B 的公鑰加密的密文.為了實現(xiàn)密文的轉(zhuǎn)換,用戶A 只需要用自己的私鑰(例如使用自己的個人信息)結(jié)合用戶B 的公鑰采用一定的算法計算一個重加密秘鑰并提供給Proxy,Proxy 就可以完成相當(dāng)于解密用戶A 的密文并用用戶B 的公鑰加密的操作,并且在整個過程中,Proxy 不能獲取和推導(dǎo)出有關(guān)用戶數(shù)據(jù)或私鑰的任何信息.
因為能夠把密文轉(zhuǎn)換的復(fù)雜計算任務(wù)轉(zhuǎn)移給半可信的代理執(zhí)行,在保證私密數(shù)據(jù)機密性的前提下有效緩解客戶端的性能瓶頸,代理重加密機制已經(jīng)廣泛應(yīng)用在加密電子郵件轉(zhuǎn)發(fā)、分布式文件系統(tǒng)等安全管理領(lǐng)域中,最近由于云存儲的安全問題更是引起了業(yè)內(nèi)的廣泛關(guān)注.
云存儲因其自身的架構(gòu)特點,安全已是核心問題,因此各種加密算法和框架成為了云存儲研究中的熱點.近年來,由于能夠在保障數(shù)據(jù)安全的前提下有效降低數(shù)據(jù)擁有者的計算強度和密鑰管理難度,代理重加密框架在云存儲中得到了越來越廣泛的應(yīng)用.
在云存儲環(huán)境中,對云服務(wù)器有不同的考慮. 對于云服務(wù)器,用戶不能給予完全的信任,一般說來,普遍假定云服務(wù)器是一個半信任模型(Honest but Curi-ous),即云服務(wù)器會忠實地執(zhí)行協(xié)議的過程,同時,云服務(wù)器又會根據(jù)存儲的加密數(shù)據(jù)以及用戶的請求盡力獲取文件數(shù)據(jù)和請求間的關(guān)聯(lián)關(guān)系.這也是研究云存儲模型的基本安全環(huán)境假設(shè).因此,一方面,應(yīng)該充分利用云服務(wù)器的Honest 特性為云用戶客戶端有效緩解壓力,另一方面,出于對云服務(wù)器Curious 特性的考慮,必須保證云服務(wù)器不能獲取任何數(shù)據(jù)內(nèi)容.
由于云服務(wù)器所具有的半可信特點,用戶不能直接將數(shù)據(jù)明文上傳至云服務(wù)器存儲,必須首先在本地經(jīng)過加密后,再把數(shù)據(jù)密文上傳至云服務(wù)器. 在需要授權(quán)其他用戶訪問權(quán)限時,必須通過其它安全信道傳輸密鑰,以使得被授權(quán)用戶可以訪問數(shù)據(jù). 一個典型的密文訪問控制系統(tǒng)如圖1 所示.
但在這樣的典型模型中,對授權(quán)用戶的安全數(shù)據(jù)共享僅僅是通過數(shù)據(jù)擁有者(Data Owner,DO)對密鑰的分發(fā)控制來實現(xiàn)的.當(dāng)共享數(shù)據(jù)和共享用戶不斷增多時,數(shù)據(jù)擁有者生成、管理和維護秘鑰的工作量不斷增大,最終成為整個系統(tǒng)的瓶頸.
引入代理重加密技術(shù)后,密鑰重新生成的一部分工作可以轉(zhuǎn)移到云服務(wù)器執(zhí)行,進而有效地緩解了數(shù)據(jù)擁有者客戶端的性能壓力.用戶A 首先用自己的公鑰Papub把要上傳的文件F 加密得到數(shù)據(jù)密文Ca,然后上傳至云服務(wù)器存儲,這樣,密文C 只能用Papriv才能解密,因此云存儲服務(wù)提供商不能得到明文數(shù)據(jù).當(dāng)用戶A 需要向用戶B 共享數(shù)據(jù)時,他可以使用自己的私鑰Papriv并結(jié)合用戶B 的公鑰Pbpub計算得到重加密密鑰Rk,并將重加密密鑰Rk上傳至云端.云服務(wù)器在得到重加密密鑰Rk后,利用Rk對原來的數(shù)據(jù)密文Ca進行代理重加密得到數(shù)據(jù)密文Cb. 用戶B 從云端下載數(shù)據(jù)密文Cb,用自己的私鑰Kbpriv即可解密恢復(fù)為共享文件F,進而實現(xiàn)了云存儲中多用戶間的數(shù)據(jù)共享.
圖1 云存儲的密文訪問控制模型Fig.1 Cryptograpic access control model in cloud storage
在上述過程中,用戶數(shù)據(jù)以加密后的密文的形式上傳到云端存儲,有效保證了云端數(shù)據(jù)的機密性. 同時,借助于代理重加密技術(shù),又把對數(shù)據(jù)的重加密工作部分地轉(zhuǎn)移到了云服務(wù)器,進而大大降低了數(shù)據(jù)擁有者的數(shù)據(jù)加密工作量.
由于非對稱加密算法的效率較低,因此在云存儲環(huán)境中一般才用對稱加密算法加密數(shù)據(jù)文件,用非對稱加密算法加密對稱密鑰,最后再把數(shù)據(jù)密文和密鑰密文一起上傳至云端存儲.數(shù)據(jù)擁有者只對合法授權(quán)用戶提供密鑰密文的解密能力,進而在實現(xiàn)數(shù)據(jù)共享的同時保證了用戶數(shù)據(jù)的私密性.
PRE 代理重加密技術(shù)可以直接運用在云存儲環(huán)境中,用以調(diào)整現(xiàn)有加密框架的資源調(diào)配并適應(yīng)更合理的用戶信任模型;而且,它還可以與其他技術(shù)進一步組合或擴展,以產(chǎn)生更有靶向的精確安全控制. CP-ABE 和CL-PKC 正是組合擴展方面的兩個典型應(yīng)用.
2.3.1 基于CP-ABE 的擴展
由于云服務(wù)器是一個半可信模型,用戶必須首先對自己的數(shù)據(jù)進行加密,之后上傳至云端,然后再通過對密鑰的分發(fā)管理控制其他用戶對數(shù)據(jù)的訪問權(quán)限.引入代理重加密后,數(shù)據(jù)擁有者可以針對特定用戶對密鑰密文生成重加密密鑰并交由云服務(wù)器進行代理重加密以達到數(shù)據(jù)安全共享的目的. 然而,在一個實際的共享云存儲系統(tǒng)中,大量用戶的相關(guān)信息需要相互共享.如果讓每一個數(shù)據(jù)擁有者針對共享文件的每一個共享用戶都單獨生成一個重加密密鑰,這樣的計算代價顯然是難以承受的.為了有效降低密鑰生成、管理和維護的難度,必須引入更加靈活的加密方案,以便為數(shù)據(jù)的隱私保護提供更為有效的細粒度訪問控制.
基于屬性的密碼體制對傳統(tǒng)的基于身份密碼體制中關(guān)于身份的概念進行了擴展,將身份標(biāo)志為若干屬性的集合.Sahai 與Waters 首次提出基于模糊身份加密,將生物學(xué)特性應(yīng)用于基于身份的加密方案中.2006 年,Goyal 等人在基于模糊身份加密方案的基礎(chǔ)上提出了基于屬性的加密方案(Attribute -Based En-cryption,ABE).2007 年,Bethencourt 等人[8]提出了密文策略的基于屬性的加密方案(Ciphertext - policy ABE,CP-ABE).CP -ABE 提供了一種很好的描述密文和授權(quán)用戶之間對應(yīng)關(guān)系的模型,在引入CP -ABE 的系統(tǒng)中,每個用戶都與一組特定的屬性集合關(guān)聯(lián),數(shù)據(jù)擁有者可以為密文指定基于屬性的訪問控制結(jié)構(gòu),使得只有具有特定屬性集合的用戶才能訪問對應(yīng)的數(shù)據(jù).
2009 年,Liang 等人把基于屬性的加密方案與代理重加密技術(shù)相結(jié)合,提出了基于屬性的代理重加密方案(Attribute - Based Proxy Re - Encryption,AB-PRE)[9].該方案使用屬性來控制用戶對數(shù)據(jù)的訪問權(quán)限,如果用戶的屬性沒有出現(xiàn)在訪問結(jié)構(gòu)中而是出現(xiàn)在系統(tǒng)屬性集中,密文數(shù)據(jù)就可以通過代理重加密算法予以重新加密,進而使得對應(yīng)用戶可以解密以獲取明文.Luo 等人[10]在2010 年提出了密文策略的基于屬性的代理重加密,對AB -PRE 進行了進一步的擴展和豐富,允許屬性可以有多個贊成值.同時,該方案中引入了重加密控制的概念,使得數(shù)據(jù)擁有者可以決定密文數(shù)據(jù)是否允許被重加密. 此外,該方案中的訪問策略蘊含于密文數(shù)據(jù)中,并且支持AND 門限、多值屬性、否定屬性和通配符.考慮到CP-ABE 應(yīng)用于實際環(huán)境中存在的一些問題,Yu 等人[11]把CP-ABE和PRE 結(jié)合在一起,減小了因權(quán)限撤銷引起用戶屬性修改的性能負(fù)擔(dān),因此能夠隨時方便地根據(jù)權(quán)限的變化對用戶屬性進行調(diào)整.
為了實現(xiàn)更加靈活的訪問控制,Wang 等人把基于層次身份加密(Hierarchical Identity-Based Encryp-tion,HIBE)和基于屬性加密(CP -ABE)相結(jié)合,提出了基于層次屬性的加密(Hierarchical Attribute -Based Encryption,HABE)模型[12].HABE 模型融合了HIBE 中基于層次結(jié)構(gòu)的密鑰生成方式的優(yōu)點和CP-ABE 中靈活的訪問控制的特點,同時支持基于屬性和基于身份的加密,從而有效降低了加密/解密開銷.并且通過結(jié)合代理重加密技術(shù)和懶惰重加密技術(shù),不但有效降低了用戶端的計算壓力,而且緩解了云服務(wù)器的重加密開銷,提供了一種適用于云計算環(huán)境的更加細粒度的數(shù)據(jù)安全訪問控制方案.
文獻設(shè)計了CP-ABE 的變種算法HCCP-ABE,結(jié)合密鑰分割技術(shù)和代理重加密技術(shù),在保證用戶數(shù)據(jù)安全的前提下,將對稱密鑰的重加密以及新私鑰組件的生成與分發(fā)任務(wù)移到云端執(zhí)行,降低了數(shù)據(jù)擁有者的計算代價[13].
2.3.2 基于CL-PKC 的擴展
對于很多基于公有云的大型網(wǎng)絡(luò)應(yīng)用服務(wù),例如社會性網(wǎng)絡(luò)服務(wù)(Social Network Service,SNS),由于涉及到的用戶數(shù)量眾多,用戶間關(guān)系復(fù)雜,還有海量涉及到個人隱私的數(shù)據(jù)需要根據(jù)用戶的實際需求實現(xiàn)共享,傳統(tǒng)的公鑰基礎(chǔ)設(shè)施管理機制因為缺乏靈活性和擴展性而難以勝任. Xu 等人把基于無證書公鑰密碼體制(Certificateless Public Key Cryptography,CL-PKC)的認(rèn)證引入到代理重加密技術(shù)中,提出了針對公有云環(huán)境中實現(xiàn)數(shù)據(jù)安全共享的有效解決方案CL-PRE(Certificateless Proxy Re-Encryption)[14].
在CL-PRE 中,云不僅用來存儲數(shù)據(jù),也為在多個用戶間共享數(shù)據(jù)行使安全分發(fā)密鑰的職責(zé). CL -PRE 使用數(shù)據(jù)用戶的身份信息作為用戶公鑰的構(gòu)成要素,消除了傳統(tǒng)PKI 繁雜的證書管理和ID - PKC密鑰托管的問題.用戶只需要在生成自己的私鑰時訪問PKG 一次,生成公鑰時已無需再與PKG 進行交互,即使用戶今后需要更新自己的公私鑰對,也不必再與PKG 進行通信,從而大大降低了PKG 的負(fù)擔(dān),提高了運行效率.用戶可以自行管理自己的公鑰,例如SNS用戶可以把公鑰發(fā)布在自己的主頁上以方便其他用戶獲?。黄渌脩舻玫搅嗽撚脩舻墓€后就可以產(chǎn)生重加密密鑰并發(fā)布到云端由云服務(wù)器進行代理重加密,這樣就方便而安全地實現(xiàn)了用戶間的數(shù)據(jù)共享.
考慮到CL -PRE 可能應(yīng)用于公有云環(huán)境,為了增強云存儲服務(wù)的安全性、健壯性并獲得更好的性能,文獻[7]中還提出了多重代理(Multi-Proxy)和隨機會話重加密密鑰(Randomized CL-PRE)的兩套CL-PRE 擴展方案. 在Multi -Proxy CL -PRE 中,假定系統(tǒng)中共有n 個代理,數(shù)據(jù)擁有者可以指定整數(shù)k(1< k < n),只有當(dāng)k 個以上的代理都能夠正確重加密的時候,對應(yīng)的數(shù)據(jù)用戶才能得到有效數(shù)據(jù). 在Randomized CL-PRE 中,數(shù)據(jù)擁有者A 自己保存針對其他共享用戶例如用戶B 的重加密密鑰,當(dāng)每次希望和用戶B 共享新的數(shù)據(jù)時,用戶A 都會根據(jù)到用戶B 的重加密密鑰計算產(chǎn)生一個跟此次會話相關(guān)的一次性隨機重加密密鑰.因為這個一次性重加密密鑰是會話相關(guān)的,因此代理服務(wù)器得到這個密鑰不會給數(shù)據(jù)帶來任何威脅.
云計算因其眾多的優(yōu)越性而飛速發(fā)展,已經(jīng)在社會上引起了日益廣泛的關(guān)注;與此同時,它的安全性問題也逐漸成為制約其健康發(fā)展的關(guān)鍵因素.與傳統(tǒng)的本地存儲相比,云存儲環(huán)境有其自身的特殊性,例如其分布式特點及半可信模型,決定了很多目前已較為成熟的技術(shù),包括代理重加密在內(nèi),并不能只是簡單地移植到云存儲環(huán)境中,還需要有針對性地做出調(diào)整和改進,才能更好地推動云計算的發(fā)展與進步. 因此,在云存儲的數(shù)據(jù)共享領(lǐng)域中,代理重加密技術(shù)還有更多的發(fā)展空間,需要展開更進一步的深入研究.