徐毅
摘 要:信息系統在經濟活動和社會活動中的地位和作用越來越重要,信息安全問題成為不可忽視的問題,數據加密能有效防止數據庫中敏感數據泄漏。Oracle數據庫透明數據加密(TDE)使用主密鑰和表密鑰對敏感數據字段進行加解密。本文結合“煤粉燃燒特性管理信息系統”項目開發,使用透明數據加密(TDE)對敏感數據字段進行了加密應用研究。
關鍵詞:敏感數據;主密鑰;表密鑰;透明數據加密
中圖分類號:TP392 文獻標識碼:A
Research on the Application of Sensitive Data Encryption Based on Oracle Database
XU Yi
(Business School of Northwest University of Politics and Law,Xi'an 710122,China)
Abstract:At present,the problem of information security in economic activities and social activities is becoming increasingly prominent,data encryption can effectively prevent sensitive data leakage in the database.Oracle database transparent data encryption(TDE)algorithm using the master key and table key to encrypt the sensitive data fields.Combined with"pulverized coal combustion characteristics management information system"project,paper used TDE to encrypt sensitive data fields.
Keywords:sensitive data;master key;table key;transparent data encryption
1 引言(Introduction)
數據庫安全目標是為了維護存儲于數據庫管理系統(DBMS)中數據的三個安全特性,即機密性、完整性和可用性[1]。一般地,數據庫的安全性控制措施主要通過用戶標識與鑒別、訪問控制、視圖機制、數據加密、安全審計等機制來完成,然而這些安全機制只能滿足一般的數據庫安全應用,而對于高度敏感性數據,數據庫系統所提供的安全性措施難以保證其安全。
造成數據庫安全隱患的一個主要原因是因為原始數據以可讀(明文)形式存放在數據庫中。只要避開系統身份鑒別認證,進入到數據庫系統中,就可以竊取或篡改數據庫中的任何數據。因此,為了保證數據庫中的數據安全,限制用戶非法訪問,必須對數據庫中存儲的重要敏感數據進行保護處理。數據庫加密技術能有效彌補傳統數據庫安全手段的不足。
數據加密(Data Encryption)是防止數據庫中數據存儲和傳輸過程中失密的有效手段。加密的基本思想是根據一定的算法將原始數據(明文plaintext)加密成為不可直接識別的格式(密文,ciphertext),數據則以密文的方式存儲和傳播,從而保證敏感數據訪問和傳輸的安全[2]。
2 數據加密技術(Data encryption technology)
數據加密是保證用戶與數據隔離,防止敏感數據泄漏的重要手段。數據加密后,對于不知道密鑰的攻擊者,即使利用系統漏洞或其他方法非法訪問到數據,也無法獲取真正的數據內容;而經過系統驗證確認其合法性和權限的用戶擁有正確的密鑰,可以從系統獲得可識別的數據。
2.1 加密層次
一般地,數據存儲加密可在三個層次實現數據庫加密工作,即操作系統(OS)層、DBMS內核層和DBMS外層[3]。
(1)操作系統層加密:應用程序通過操作系統提供的API調用數據庫文件,直接解密整個數據庫文件,然后訪問這個完全解密的文件,而在應用程序關閉時,再將已解密的文件進行加密。
(2)DBMS內核層加密:數據在物理存取之前完成加解密工作。這種加密方式功能強大、完全透明,應用程序不需要做任何修改可以直接訪問數據庫系統。
(3)DBMS外層加密:數據庫中存儲密文數據,應用程序和外層工具交互,對數據庫的每一次操作都由加密系統轉化后再交給數據庫處理,然后再將數據庫返回的結果解密后返回給應用程序。
2.2 加密粒度
加密粒度是指加密的最小數據單位,可分為數據庫級、表級、記錄級、字段級和數據項級。總體來說,加密的粒度越小,靈活度越高且安全性越好,但實現技術難度就越大,越不易實現。因此,選擇合適的加密粒度是保證數據庫靈活性、安全性和執行效率的重要因素。
數據庫級加密的弊端是每查詢一條記錄,需要對整個數據庫文件解密,極大地增加了系統時空開銷;表級加密對包含敏感數據的表與表密鑰運算,形成密文后存儲,非敏感表則保持明文存儲;記錄級加密對記錄統一進行加密和解密處理;記錄級加密加解密鑰數量非常龐大,密鑰管理變得困難。
2.3 加密算法
密碼算法的優劣決定敏感信息保護的有效性。密碼學中有三大加密算法類型:對稱密鑰加密算法、公開密鑰加密算法以及哈希函數[4]。
(1)對稱加密算法的加解密過程釆用同一個密鑰。可以分為流密碼加密和分組密碼加密兩種。
(2)公開密鑰加密算法中,每一個公開密鑰都對應一個私鑰。公鑰和私鑰構成密鑰對,加密和解密過程使用不同密鑰,所以也成為非對稱加密算法。
(3)哈希函數的特點是能夠應用在任意長度的數據上,并且生成大小固定的輸出,計算相對簡單,易于軟硬件實現。
3 透明數據加密(TDE)
Oracle提供兩種數據加密方法:使用程序包DBMS_CRYPTO和透明數據加密(TDE)。
(1)DBMS_CRYPTO可以生成私有密鑰,也可以自己指定并存儲密鑰。在Oracle Database 11g中,DBMS_CRYPTO甚至可以加密內部大對象,例如BLOB和CLOB類型。
(2)透明數據加密(TDE)是基于密鑰的訪問控制,依賴于外部模塊實施授權。“透明”的意思是當訪問表中或加密表空間中的加密字段時,授權用戶不必指定密碼或密鑰[4]。
透明數據加密(TDE)的優點在于可以隨時地對表中的一個或多個字段加密,只需將加密字段指定加密算法即可,不必編寫代碼。
4 TDE應用實例(TDE application examples)
“煤粉燃燒特性管理信息系統”基于Oracle 11g R2數據庫,使用透明數據加密(TDE)對敏感數據進行了加密機制應用研究。現將加解密過程闡述如下。
數據庫為每個包含加密列的表創建一個私密的安全加密密鑰,采用指定的加密算法加密指定的明文數據。主密鑰對表密鑰加密,主密鑰保存在“錢夾(wallet)”中,加密的表密鑰保存在數據字典中。
當寫入數據到加密的列中時,數據庫首先從wallet中獲取主密鑰,用主密鑰解密數據字典中的表密鑰,然后用解密的表密鑰加密輸入的明文數據,再將加密后的數據保存在數據庫。
當用戶查詢加密列的時候,數據庫首先將加密的表密鑰從數據字典取出,然后從wallet中取出主密鑰,解密表密鑰,再用解密的表密鑰解密磁盤上的加密數據。
以數據庫中煤粉燃燒特性工業分析表為例,表中C_No字段為試驗編號字段(Primary Key,Not Null),C_Code字段為樣品編號字段(Not Null),C_Mt、C_Mad、C_Aar、C_Vdaf和C_Qnetar等五個字段均為試驗數據字段。由于涉及商業機密和知識產權等問題,這些試驗數據均屬于敏感數據,因此需要對五個試驗數據字段進行加密保護,試驗編號字段作為主鍵、索引字段,樣品編號字段作為外鍵,不需要加密。
(1)創建主密鑰的默認存放目錄,在sqlnet.ora文件中添加wallet文件夾的絕對路徑。
NAMES.DIRECTORY_PATH=(TNSNAMES,EZCONNECT)ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)
(METHOD_DATA=(DIRECTORY=G:\APP\ADMINISTRATOR\
PRODUCT\11.2.0\WALLET)))
然后,在SQL*Plus中創建Wallet密鑰,如圖1所示。
(2)創建數據庫表結構,并為需要加密的字段指定加密算法。為了兼顧效率和時空開銷,系統中選用了AES128加密算法。如圖2所示。
(3)打開Wallet的情況下,即使用主密鑰解密表密鑰,再用解密的表密鑰解密磁盤上的加密數據,就可以正常瀏覽表數據。如圖4所示。
可以看到,通過透明數據加密(TDE)可以最大限度的加密敏感數據字段,防止數據庫被非法訪問。透明數據加密(TDE)將密鑰管理的復雜性交給數據庫引擎來處理,同時允許數據庫管理員(DBA)在不必實際看到數據的情況下管理數據庫。
5 結論(Conclusion)
透明數據加密(TDE)方法基于wallet機制,當數據庫表中的一個或多個字段被加密時,只需要為當前表分配一個表密鑰(即一個表只需要一個密鑰)。系統中所有的密鑰再經過服務器中的一個主密鑰加密后存儲在數據字典中,即密鑰本身也是加密存儲的。而服務器主密鑰則存儲在數據庫外部,使用外部安全機制來保證主密鑰的安全。這種加密方法更加安全高效、易于實現。
參考文獻(References)
[1] (美)Mark Stamp著.張戈,譯.信息安全原理與實踐(第2版)[M].北京:清華大學出版社,2013.5:2-5.
[2] 吳世忠,等.信息安全技術[M].北京:機械工業出版社,2014,4:2-5.
[3] 李光華.基于Oracle對象的數據庫加密應用研究[D].碩士學位論文,河南:鄭州大學,2011.
[4] 莊海燕.數據庫加密技術及其在Oracle中的應用[D]碩士學位論文,河南:鄭州大學,2006.