◆羅云鋒 熊 偉 許慶光
(92723部隊 北京 100841)
一種基于屬性加密的數據保護與訪問控制模型
◆羅云鋒 熊 偉 許慶光
(92723部隊 北京 100841)
本文構建了一種基于屬性加密技術的數據保護和訪問控制模型,設計了基于屬性的密碼服務系統架構,以FTP文件服務器、數據庫系統和網絡存儲系統為實例,描述了詳細的加解密和訪問控制流程。該模型較好地解決了數據安全共享和細粒度訪問控制問題。
基于屬性加密;數據保護;訪問控制
在信息系統中,訪問控制是在身份鑒別之后保護系統資源安全的第二道屏障,是信息系統安全的重要功能構件。其任務是在為用戶對系統資源提供最大限度共享的基礎上,對用戶的訪問權限進行管理,防止對信息越權篡改和濫用,訪問控制的基本模型如圖1所示。
圖1 訪問控制模型
其中引用監(jiān)視器是核心,必須具有自我保護能力且總是處于活躍狀態(tài)。在實際應用中,攻擊者可能繞過引用監(jiān)視器,從操作系統或者數據庫管理系統層面直接獲取應用層的數據,甚至直接修改引用監(jiān)視器以達到越權訪問的目的。為了彌補引用監(jiān)視器實現機制的不足,最常用的一種方法是采用數據加密。數據被加密后,只有擁有解密密鑰的用戶才能獲取明文數據。隨之帶來的問題是當數據需要在一定范圍內根據一定的策略進行共享的時候,密鑰的分發(fā)變得非常困難。利用密鑰分割等方法實現秘密共享,在一定程度上可實現粗粒度的訪問控制。但從已有研究進展來看,傳統的加密方法不適合實現數據安全共享和細粒度的訪問控制。
基于屬性的加密算法是在Shamir于1984年提出的基于身份的加密體制的基礎上發(fā)展起來的[1],2005年,Sahai等人提出了模糊匹配的基于身份的加密方案[2],在此方案中首次提出了將用戶身份細分為若干可描述的屬性集合,被定義為最早的基于屬性的加密算法。此后,基于屬性的加密算法研究的越來越多。從模糊匹配的基于身份的加密算法開始,基于屬性的密鑰開始引起越來越多的人的重視,2006年,Goyal等人在基于模糊身份加密方案的基礎上提出了基于屬性的加密方案(ABE)[3],2007年,Bethencourt等人提出了密文策略的基于屬性加密方案(CP-ABE)[4],將密文與一個訪問結構樹相關聯,而將用戶密鑰與一系列的屬性相關聯。當用戶擁有的屬性滿足密文的訪問控制結構時,用戶即可解密密文?;谠撍枷耄群筇岢瞿軌蛑С指呒壴L問結構[5]、具有完全表達能力[6]的基于屬性的密文策略加密方案。圍繞屬性撤銷的難點問題[7],文獻[8] 提出了一種支持完全細粒度屬性撤銷的模型。文獻[9-11]在云存儲中敏感數據的機密性保護、氣象云數據訪問控制、無線傳感器網絡簽名加密等方面提出了應用方案。
一般情況下,一個基于屬性的密文策略加密方案包括由以下四個過程。
(1)系統初始化:以一個隱含的安全參數為輸入,而不需要其它輸入參數,輸出系統公共參數PK和系統主密鑰MK 。
(2)消息的加密:以加密消息M,系統的公共參數PK和訪問結構A為算法的輸入參數,其中A是在全局屬性集合上構建的。算法輸出用A對消息M加密后的密文CT 。
(3)密鑰的生成:以一個屬性集合S,系統的公共參數PK和系統的主密鑰MK乍為算法的輸入參數。算法輸出私鑰SK。
(4)密文的解密:以密文CT ,系統的公共參數PK和解密密鑰SK作為算法的輸入參數,其屮密文CT包含訪問結構A, SK是S的解密密鑰。如果屬性集合S滿足訪問結構A,則解密密文。
基于屬性加密體制適用于解密方不固定的情形,加密方可以采用靈活的訪問結構,通過賦予解密方不同的安全屬性,實現基于密碼算法的訪問控制策略。
基于屬性加密的服務系統(Attributed-based Encryption System,ABES)結構如圖2所示,ABES分別授予用戶不同的安全屬性,從而控制對數據的權限?;趯傩缘募用荏w制將密碼與訪問控制結合在一起,判斷一個用戶是否能夠訪問數據過程,直接蘊含在密文信息的解密過程中,用戶的安全屬性能夠支配客體的安全標記,則解密成功,即可以訪問明文;否則解密失敗,不能訪問明文信息。訪問規(guī)則與加密算法緊密結合在一起,防止安全策略被篡改或旁路。
圖2 基于屬性的密碼服務系統結構圖
ABES包括安全屬性管理、密鑰管理、屬性加密服務和屬性加密客戶端四個模塊,提供與屬性加解密相關的管理功能和外部調用接口。ABES提供與索引加解密相關的管理功能和外部調用接口,應用實例通過調用屬性加密客戶端提供的API接口訪問ABES提供的加解密服務,屬性加密客戶端和屬性加密服務之間通過內部網絡接口協議進行通信。
2.1 安全屬性管理
安全屬性管理包括主體安全屬性管理和客體安全策略管理兩部分。主體是指所有具有解密需求的實體,例如用戶、終端、中間層服務器等,主體安全屬性管理通過定義主體的安全屬性,為主體的私鑰分發(fā)提供依據,主體的安全屬性決定了主體私鑰的解密范圍和能力??腕w是指所有需要加密保護和訪問控制的實體,例如文件、數據流、數據庫中的數據項等,客體的安全策略是對客體實施加密的依據,客體的安全策略由能訪問該客體的主體的安全屬性的邏輯運算組成,客體的安全策略決定了哪些主體對該客體具有解密能力。
主體的安全屬性主要包括主體標識(ID)、密級(SL)、業(yè)務范圍(WR),也可以增加一些自定義的內容來詳細描述主體的安全屬性。安全屬性支持三種數據類型:字符串類型、整型、集合類型,屬性名和屬性值之間用“=”號連接,通配符“*”用來表示“所有”的概念。例如,假設某用戶A為部門長1,其所在的單位具有如圖3所示的組織機構。
圖3 用戶組織機構圖
用戶A主管部門1有兩名員工,用戶A的密級為1(假設員工密級為0,部門長密級為1,總經理密級為2),那么用戶A的安全屬性可以描述為“ID=A;SL=1;WR=總經理.部門長”。其中,符號“.”用來表示樹狀組織機構中的上下級關系。在制定安全策略時,三種數據類型中,字符串類型必須完全匹配,整型可以用“>”、“>=”、“<”、“<=”或者“=”進行匹配,集合類型可以用通配符匹配。多個策略之間可以用“and”和“or”進行關系運算。如果有一批數據,希望密級為1以上或者部門1及上級部門的用戶可以查看,那么應該對客體定義如下的加密策略“SL>1 or WR=*.部門1”,則只有總經理、部門長1、部門1的所有員工可以解密。
2.2 密鑰管理
密鑰管理是指管理員為主體分發(fā)私鑰,分發(fā)私鑰是一個離線的工作過程,包括注冊、生成私鑰、導出私鑰三個步驟。
(1)注冊。管理員在密鑰管理系統中對主體進行注冊,對其屬性進行審核。為了保持與屬性管理服務器的一致,通常是從屬性管理中離線導入主體屬性,然后進行審核。
(2)生成私鑰。根據主體屬性生成用戶私鑰。
(3)導出私鑰。將主體私鑰導出至指定的安全存儲設備。通常主體私鑰保存在主體所在主機的密碼模塊中,受密碼模塊的保護。由于主體私鑰可以根據主體屬性重新生成,因此系統不需要對主體私鑰進行備份。
2.3 屬性加密服務
屬性加密服務為客戶端提供網絡服務接口,包括會話服務、加密服務和索引服務。
(1)會話服務
會話服務是指屬性加密客戶端與屬性加密服務器建立會話連接并協商相關參數。會話采用TCP長連接的方式,遵循系統定義的屬性加密網絡接口協議。屬性加密客戶端分為兩類,一類是主體式客戶端,這類客戶端可以對加密的數據進行解密,有自己的私鑰;另一類是非主體式客戶端,這類客戶端僅僅調用屬性加密服務對數據進行加密,沒有私鑰。一個客戶端也可以同時屬于以上兩類情形。
主體式客戶端與屬性加密服務器建立會話主要完成二級密鑰更新的功能。系統中的密鑰類型包括公私鑰、會話密鑰、二級密鑰、初級密鑰。公私鑰用于屬性加解密的公開密鑰,整個系統在一定時期僅有一個,由系統初始化的時候生成。會話密鑰用來臨時保護初級密鑰,在非主體式客戶端會話初始化時生成。二級密鑰用于加密保護初級密鑰,在非主體式客戶端會話初始化時建立。初級密鑰用于加密保護數據,在加密數據時隨機生成。其中公鑰和私鑰使用屬性加解密算法,會話密鑰、二級密鑰和初級密鑰使用對稱加解密算法。
主體式客戶端在建立會話時,首先向屬性加密服務器提交主體的ID,會話服務查詢該ID的屬性,確定該ID可以解密的所有二級密鑰,并將這些二級密鑰發(fā)送給客戶端。由于二級密鑰是加密存放的,因此,即使會話結束,仍然可以保存在客戶端的硬盤中,下次建立會話時僅需要更新新增的二級密鑰。在會話期間,如果屬性加密服務器上新增了該客戶端可以解密的二級密鑰,客戶端可以根據需要(例如解密某數據時所需的二級密鑰不在本地緩存中)直接向屬性加密服務器申請該二級密鑰。
非主體式客戶端建立會話主要是與屬性加密服務器間建立一個有效的TCP連接,同時協商一個臨時的會話密鑰。
(2)加密服務
屬性加密客戶端提交客體數據、加密策略和加密方式,加密服務返回加密結果。
①客戶端提交客體數據x、加密策略y和加密方式z,請求加密。其中,加密方式是指是否為索引加密。由于有些客體是結構化的數據,原始存儲位置在存儲空間或者存儲類型上有一定的限制,導致密文數據無法存儲,因此ABES提出一種索引加密的方式來滿足這種應用要求。索引加密是指在原始存儲位置僅存儲客體的密文索引,而真正的密文則存儲在屬性加密服務器中。在需要解密的時候,客戶端通過索引在屬性加密服務器中獲取真正的密文再進行解密。
②判斷加密策略y是否已經存在,若y已經存在,則一定存在用策略y加密的二級密鑰SK;若y不存在,則新生成一個用策略y加密的二級密鑰SK。用y加密的二級密鑰SK在會話服務期間會上傳到滿足策略y的客戶端。
③隨機生成一個用于數據加密的初級密鑰DK,用SK加密DK,用DK加密客體x,得到密文:ESK(DK)EDK(x)。
④如果不是索引加密,則直接返回密文ESK(DK)EDK(x),如果是索引加密,則在屬性加密服務器中存儲一條索引記錄(索引號,密文,二級密鑰標號),將索引號返回給客戶端。
⑤如果客戶端請求的客體為空,表示客戶端希望在本地用DK加密x,屬性加密服務利用會話時建立的KS加密DK,返回給客戶端,客戶端調用本地的密碼模塊加密數據后,仍然可以得到ESK(DK)EDK(x)。這樣做的好處是,一方面可以減輕屬性加密服務器的加解密壓力,另一方面可以避免在網絡上傳輸明文。
(3)索引服務
索引服務是指根據索引獲取對應密文的服務,或者向屬性加密服務器中添加一條索引記錄。索引的功能是能夠替換密文進行存儲和傳輸,為了能對索引、密文和明文進行區(qū)分,系統將索引的結構定義為:“~~”+8字節(jié)+“~~”。其中“~~”為前導和結束符,字節(jié)1~7,用以惟一標識該密文數據的序號,含0到9, A到Z,a到z等字符,字節(jié)8為校驗和。特殊索引“~~00000000~~”表示其后緊跟密文。除此以外,若無法從屬性加密服務器上檢索到索引對應的密文,或者無法解密密文則該索引當作明文看待。
2.4 屬性加密客戶端
屬性加密客戶端由一組API接口組成,是ABES與應用實例的連接紐帶。主體型客戶端的主要功能是解密,非主體型客戶端的主要功能是加密。其中加密策略和加密方式都是由上層應用實例決定,如果不在本地加密,屬性加密客戶端只需要將這些參數通過網絡接口協議轉發(fā)給屬性加密服務器,并獲取加密結果即可;如果需要調用本地的密碼模塊加密數據,則將數據置為空,屬性加密服務器返回用于加密數據的密鑰DK,利用DK可以在本地的密碼模塊中加密數據;如果是索引加密,則還需要將本地加密的密文及其對應的索引更新到屬性加密服務器上,以便以后查找。
主體型客戶端實施解密流程如下:
①主體型客戶端首先與屬性加密服務器建立會話,在建立會話過程中,從屬性加密服務器上獲取該主體所能解密的所有二級密鑰,并緩存在本地。
②應用實例提供索引,以解密獲得明文。如果索引是特殊索引“~~00000000~~”,則應用實例應將密文數據直接連接在該特殊索引之后,否則,表示該索引對應的密文在屬性加密服務器上,須要調用屬性加密服務器提供的索引服務功能進行查詢。
③密文的組成結構為 ESK(DK)EDK(x),可以依次用私鑰解密SK,用SK解密DK,最后用DK解密x,得到明文。
從用戶層、協議層和服務層構建驗證實例,驗證實例通過解析該應用中的數據對象,調用ABPKI的加密接口對數據進行加密保護,根據數據對象的安全標記在需要且能夠解密的位置還原成明文。
3.1 用戶層驗證實例
以用戶層應用建立驗證實例,作為ABES為基礎的具體應用,驗證實例通過解析該應用中的數據對象,調用ABES的加密接口對數據進行加密保護,根據數據對象的安全標記在需要且能夠解密的位置還原成明文。由數據的提供者在數據提交前調用ABES,自主地實現數據的加密與授權,一般在客戶端的應用程序中實現,適合于客戶端應用程序可二次開發(fā)的情況。以FTP文件服務器為例,用戶層應用實例的工作原理如圖4所示。
首先,假定FTP客戶端是可二次開發(fā)的應用程序,基于ABES的FTP在FTP客戶端中調用ABES的客戶端API進行加密,通過客戶端解密代理對數據進行自動解密。
(1)確定上傳文件的加密策略,即確定文件的訪問控制策略。加密策略可以由用戶在提交時指定,例如若自主授權給某人可以用“ID=uname”,如果不指定則使用管理員定義的默認策略,默認策略保存在屬性加密服務器中,在安全屬性管理時制定。
(2)調用ABES的客戶端API對文件進行加密,FTP服務器中存儲的是文件,因此對數據大小和類型均不敏感,可以采用非索引加密方式,即由特殊索引“~~00000000~~”+密文組成。FTP服務器中存儲的是文件的加密形式。
(3)用戶在訪問文件時,客戶端首先在數據報文中搜索加密索引,如果找到加密索引,則調用ABES的客戶端API對索引進行解密,本例中,由于使用特殊索引,因此直接在“~~00000000~~”后找到密文進行解密即可。
在客戶端的數據報文中搜索加密索引,然后調用ABES的API進行解密的過程是與具體的應用實例無關的,因此可以將其做成一個專門的插件,并命名為客戶端解密代理,它將自動完成數據的解密工作。
圖4 基于ABES的FTP服務工作原理
3.2 協議層驗證實例
協議層應用實例是指通過對網絡訪問協議的分析,提取數據對象,自動地對待存儲的數據實施加密與授權,一般通過攔截網絡通信實現,適合于客戶端和服務器端程序均不能更改的情況。以Oracle數據庫的訪問控制為例,闡述協議層應用實例的工作原理,如圖5所示。
圖5 基于ABPKI的Oracle服務工作原理
通過在Oracle服務器前攔截網絡通信,截獲Oracle的數據通道,數據存儲時,通過對Oracle的透明網絡底層協議(Transparent Network Substrate,TNS)進行解析,加密其中包含的數據。在客戶端或者應用服務器等需要解密的主機上,通過客戶端解密代理對數據進行自動解密。
(1)截獲Oracle的TNS協議,解析TNS協議獲取數據對象;
(2)調用ABPKI,利用事先定義的加密策略對數據對象進行加密;
(3)數據以密文或者索引的形式保存在數據庫中。
數據到達客戶端或者應用服務器時,利用客戶端解密代理自動解密。
3.3 服務層驗證實例
服務層應用實例是指在服務端數據存儲時調用ABPKI,對待存儲的數據實施加密與授權,主要針對數據存儲服務可以定制開發(fā)的應用情況,以iSCSI網絡存儲為例,闡述服務層應用實例的工作原理,如圖6所示。
圖6 基于ABPKI的iSCSI服務工作原理
iSCSI服務中的訪問控制一般是粗粒度的,可以定義到哪些用戶可以訪問某個存儲設備,通過為存儲設備對象定義加密策略,該設備上的數據只有指定的用戶能夠訪問。
(1)為存儲設備對象定義加密策略;
(2)獲取存儲設備的數據塊,調用ABPKI進行加密;
(3)具有對應解密能力的客戶端可以通過客戶端解密代理解密數據。
構建了一種數據保護和訪問控制模型,基于屬性加密技術,將密文與訪問結構樹相關聯,將用戶密鑰與系列屬性相關聯,當用戶擁有的屬性滿足密文的訪問控制結構時,即可得到明文,較好地解決了數據安全共享和細粒度訪問控制的問題。以FTP文件服務器、數據庫系統、網絡存儲系統為實例,描述了具體的應用流程。
[1]Shamir A. Identity based cryptosystems and signature schemes[C]- Advances in Cryptology (CRYPTO 1984). Lecture Notes in Computer Science(196), Berlin: Springer-Verlag, 1984.
[2]Sahai A, Waters B. Fuzzy identity based encryption[C]. Advances in Cryptology (EUROCRYPT 2005). Lecture Notes in Computer Science(3494), Berlin: Springer -Verlag, 2005.
[3]Goyal V, Pandey O, Sahai A, Waters B. Attribute-based encryption for fine grained access control of encrypted data[C]. Proceedings of the ACM Conference on Computer and Communications Security (CCS 2006). ACM Press, 2006.
[4]Bethencourt J, Sahai A, Waters B. Ciphertext-pol icy attribute-based encryption[C]. Proceedings of IEEE Symposium on Security and Privacy. 2007.
[5]Goyal V, Jain A, Pandey 0. Sahai A. Bounded ciphertext policy attribute based encryption[C]. Proceedings of International Colloquium on Automata, Languages and Programming(ICALP 2008). Lecture Notes in Computer Science(5125), Heidelberg.-Springer-Verlag, 2008.
[6]Waters B. Ciphertext-policy attribute-based encryption: An expressive, efficient, and provably secure realization[J/OL]. Cryptology ePrint archive.(2008, 06, 27) [2010-04-05]. http://eprint. iacr. org/2008/290.
[7]蘇金樹,曹丹,王小峰,孫一品,胡喬林.屬性基加密機制[J]軟件學報,2011.
[8]王鵬翩, 馮登國, 張立武.一種支持完全細粒度屬性撤銷的CP-ABE 方案[J].軟件學報, 2012.
[9]洪澄,張敏,馮登國.面向云存儲的高效動態(tài)密文訪問控制方法[J].通信學報,2011.
[10]方忠進,夏志華,周舒.基于屬性加密的氣象云數據訪問控制策略研究[J].計算機科學,2013.
[11]祁正華,楊庚,任勛益,王卉.基于ABE-IBS 的無線傳感器網絡簽名加密一體化方法[J].通信學報,2010.