李明
摘 要:地震解釋系統(tǒng)是石油上游公司的關(guān)鍵信息系統(tǒng)數(shù)據(jù)庫,也是渤海油田研究院勘探開發(fā)一體化流程的研究平臺之一,為由多學科科研人員組成的一體化團隊做數(shù)據(jù)解釋和分析研究。OpenWorks 軟件是基于Oracle數(shù)據(jù)庫開發(fā)的一款地學解釋數(shù)據(jù)庫支撐運行在其上的DSG系列勘探開發(fā)應用軟件。R5000版本OpenWorks之前版本R2003的升級產(chǎn)品,在產(chǎn)品功能變化的同時,數(shù)據(jù)庫安全機制(Security Model Change)是其中眾多變化的部分。論文集中討論從R2003到R5000升級后,采用Oracle Wallet認證方式所帶來的安全認證變化。
但是,隨著OpenWorks一體化軟件應用范圍的擴大,R5000版本的應用程DSG的應用環(huán)境,已經(jīng)傳統(tǒng)的登錄單點工作站拓展到了遠程、異地等多點登錄情形。登錄數(shù)據(jù)庫的用戶也不再僅僅局限于來自局域網(wǎng)內(nèi)的用戶,最新釋放的運行在微軟云平臺Azuer上的DSG365應用程序,可以實現(xiàn)在全球任意點登錄。由于應用程序適用范圍的變化,基于操作系統(tǒng)認證的適用條件受到了挑戰(zhàn)。遠程登錄的用戶,即使他們是合法的操作系統(tǒng)用戶,也不一定是合法的數(shù)據(jù)庫用戶。繼續(xù)使用基于操作系統(tǒng)認證的方式登錄數(shù)據(jù)庫,對用戶寶貴的數(shù)據(jù)安全構(gòu)成了嚴重的威脅,并存在著重大的安全隱患。
論文分析了使用基于Oracle錢包的機制和為什么用它來代替操作系統(tǒng)認證可以改善安全性的原因,幫助用戶消除原有的安全顧慮。
關(guān)鍵詞:Oracle錢包;OpenWorks/DSG,安全模型;共鑰;私鑰;SSL傳輸
中圖分類號: TP393 文獻標識碼:A
Apply Oracle Wallet for Landmark database Authentication in R5000 Release
Li Ming
(Bohai Petroleum Institute, Tianjing Brach of CNOOC, Tianjin300452)
Abstract: Seismic data interpretation system is one of the most key information systems for the upstream petroleum industry; OpenWorks software is part of the system, which is based on Oracle database to support the decision space for geosciences (DSG) application, it serves as an integrated platform for Geology and Geophysical data interpretation and intergradations for multidisciplinary team in the Bohai petroleum institute.
The R5000 release is the latest version of OpenWorks software which replaced the previous R2003 release, a huge change has been made in the R5000 version, from the application functionality to the data model. This paper focus on how and why Oracle data wallet technology is employee to make the security model change in term of the user authentication .The major driver for the security model change is driven by the cloud commuting. The R5000 release has extend the application from the traditional stand alone or client server to cloud environment running on the Microsoft Azure platform , this change enable users to access the system from single point to remote or muti-point login to the system. This make the application access much easier globally but increased the concern of the data security. This paper Try to answer the concern why and how the oracle wallet technology employed in R5000 help to keep the data in a secure environment by replace the operation authentication in R2003 version.
Key words: Oracle Wallet; OpenWorks/DSG; Security Model; Public Key; Private Key; SSL
1 引言
地震解釋系統(tǒng)是石油公司的關(guān)鍵信息系統(tǒng),也是渤海油田研究院勘探開發(fā)一體化流程的研究平臺之一,供一體化的科研團隊做數(shù)據(jù)解釋和分析研究。OpenWorks 軟件是基于Oracle數(shù)據(jù)庫開發(fā)的一款地學數(shù)據(jù)庫、為運行在其上的DSG系列勘探開發(fā)應用軟件提供數(shù)據(jù)支撐。R5000版本是之前R2003版本的升級換代產(chǎn)品。在產(chǎn)品功能變化的同時,數(shù)據(jù)庫安全機制(Security Model Change)的變化是其中眾多變化的一部分。本文集中討論了從R2003到R5000升級后,采用Oracle Wallet認證方式代替原來基于操作系統(tǒng)認證所帶來安全認證方式的變化,對信息安全和用戶體驗所帶來的影響。endprint
2 登錄數(shù)據(jù)庫的認證機制回顧(R2003版本)
為了防止未經(jīng)授權(quán)的用戶非法使用數(shù)據(jù)庫,每個用戶在連接到數(shù)據(jù)庫時都需要進行身份認證。基于口令字(Password Authentication)和基于操作系統(tǒng)認證(OS Authentication)是登錄Oracle數(shù)據(jù)庫的兩種不同認證方式。
基于口令字的認證在登錄數(shù)據(jù)庫的時候必須同時提供用戶名和口令,由Oracle完成對戶名和口令的認證,用戶的口令存放在數(shù)據(jù)庫中;基于操作系統(tǒng)認證的數(shù)據(jù)庫登錄方式,是數(shù)據(jù)庫委托和授信給操作系統(tǒng)來完成登錄數(shù)據(jù)庫的認證,用戶的密碼是存放在操作系統(tǒng)的Shadow文件中。也就是說,只要是合法的操作系統(tǒng)用戶,也就是合法數(shù)據(jù)庫的用戶,Oracle不再做單獨認證。
OpenWorks軟件R2003版采用的就是基于操作系統(tǒng)認證的方式來訪問數(shù)據(jù)庫。
3 為什么操作系統(tǒng)認證的安全性不高
早期的解釋系統(tǒng)是單機版的用戶(Stand-alone),后來逐步發(fā)展成為客戶機/服務器架構(gòu)。其基本功能都是作為一個信息系統(tǒng)為項目團隊提供地學研究和數(shù)據(jù)存儲服務??傮w而言,無論是在單機版還是在一個小型的網(wǎng)絡環(huán)境內(nèi),勘探開發(fā)研究團隊的成員都是工作在一個相對獨立和封閉的環(huán)境中,或者說他們都使用同一種操作系統(tǒng)來登錄數(shù)據(jù)庫和使用應用程序。在這種情況下,使用基于操作系統(tǒng)認證的方式來訪問數(shù)據(jù)庫,數(shù)據(jù)的安全性不是主要的顧慮。相反,由于用戶需要頻繁地在不同的應用程序之間切換來和數(shù)據(jù)庫做讀寫交互,基于操作系統(tǒng)認證的方式避免了每次和數(shù)據(jù)庫交互的時候都需要提供認證服務的繁瑣,實現(xiàn)了用戶一旦登錄操作系統(tǒng),就可以無密碼地訪問數(shù)據(jù)庫的便捷性。
但是,隨著OpenWorks一體化軟件應用范圍的擴大,R5000版本下的應用程序的應用環(huán)境已經(jīng)由傳統(tǒng)的單點工作站登錄拓展到了遠程、異地等多點登錄的情形,登錄數(shù)據(jù)庫的用戶也不再僅僅局限于來自局域網(wǎng)內(nèi)的用戶。最新釋放的運行在微軟云平臺上的DSG365應用程序可以實現(xiàn)在全球任意點登錄。由于應用程序適用范圍的變化,基于操作系統(tǒng)認證的適用條件受到了挑戰(zhàn)。同時,傳統(tǒng)的物理服務器日益被虛擬機所取代,遠程登錄的用戶,即使他們是操作系統(tǒng)合法的用戶,也不一定是合法的數(shù)據(jù)庫用戶。在新的情況下,繼續(xù)使用基于Oracle操作系統(tǒng)認證的模式登錄數(shù)據(jù)庫的方式,風險大于便利,用戶的數(shù)據(jù)處于不安全的狀態(tài)。
4 用Oracle Wallet代替操作系統(tǒng)認證
為了解決這個問題,從Oracle10gR2開始,用戶的口令存放在一個被稱為Oracle Wallet的容器之中。Oracle Wallet是一個數(shù)據(jù)結(jié)構(gòu),其功能是作為一個容器為每一個需要訪問數(shù)據(jù)庫的實體提供存儲各種口令、密碼和安全證書,同時也為數(shù)據(jù)庫的各種認證和加密提供檢索服務。
當用戶訪問數(shù)據(jù)庫的時候,Oracle自動打開Oracle Wallet來提取用戶的密碼提交服務器。如果Oracle拿到了密碼,就可以直接登錄數(shù)據(jù)庫,完成登錄認證。如果是非授權(quán)用戶,則無法登錄,如圖1所示。
在最大限度地不影響用戶體驗的情況下,Oracle Wallet機制成功地將操作系統(tǒng)用戶做了區(qū)分和過濾。從用戶的體驗看,使用這個機制登錄數(shù)據(jù)庫,除了在第一次訪問數(shù)據(jù)庫時需要自己設(shè)定密碼外,以后用戶只要登錄操作系統(tǒng)后,就可以直接訪問數(shù)據(jù)庫,似乎和以前的操作系統(tǒng)認證沒有什么區(qū)別。但是,在表象的背后,卻是完全不一樣的安全機制。
5 Oracle Wallet安全機制分析
本文就Oracle Wallet管理用戶口令的這三個環(huán)節(jié)做一具體的分析,理解為什么Oracle Wallet提供了比操作系統(tǒng)認證更加安全的口令保護機制。
5.1 Oracle wallet自身安全的保護機制
第一層保護:用戶自己制定Oracle Wallet的存放位置和密碼保護。
我們知道,基于口令的數(shù)據(jù)登錄方式,其口令是存儲在數(shù)據(jù)庫中;基于操作系統(tǒng)認證的登錄方式,口令是存放在操作系統(tǒng)的Shadow文件中。Oracle Wallet提供了一個新的容器,這個容器代替Shadow文件來存放用戶的口令,提供了Oracle和用戶共同管理登錄口令的新機制。
這個被稱為Oracle Wallet的容器是一個獨立于數(shù)據(jù)庫、建立在操作系統(tǒng)上的加密文件,這個文件的位置和密碼都是由用戶自己來設(shè)定的, Oracle通過參數(shù)配置來找到這個文件并讀取其中的內(nèi)容。
第一次建立Oracle Wallet使用mkstore命令和 -create 選項來創(chuàng)建,并要輸入和確認以后訪問wallet的口令。
$ mkstore -wrl "/home/myuser/wallet" -create
Enter password:
Enter password again:
$
第二層保護:受操作系統(tǒng)文件讀寫屬性保護。
執(zhí)行完這條命令后,存放外部口令文件夾的Oracle Wallet就建立好了。這個兩個文件在初始生成的時候只有創(chuàng)立者自己具有讀/寫權(quán)限(600),其他任何人無權(quán)訪問和修改。如果用戶修改了文件的屬性,Oracle隨后把被修改的文件屬性的強制改回初始狀態(tài)。
$ ls -l /home/myuser/wallet
total 48
-rw------- 1 oracle myuser 3973 Jul 20 22:55 cwallet.sso
-rw------- 1 oracle myuser 3896 Jul 20 22:55 ewallet.p12
$
第三層保護:屬地保護(不可移動性)。endprint
文件的讀寫屬性提供了保護Oracle Wallet的必要功能。但是Oracle Wallet有可能被用戶拷貝到不同的機器上,為了避免這種現(xiàn)象發(fā)生,保證Oracle Wallet只在建立的當?shù)赜行?,?1g Release 2版本中,使用了一條新的命令"orapki"代替"mkstore"命令來生成Oracle Wallet文件夾,增加了選項-auto_login_local。
$ orapki wallet create -wallet "/home/myuser/wallet" -pwd "MyPassword1" -auto_login_local
這樣用戶一旦創(chuàng)立了這個Oracle wallet,它就只能在初始創(chuàng)立的位置生效,增新加了不可移動的特性,就像一臺根植于用戶屬地的保險柜一樣安全。
5.2 錢包中存放物的安全:用3DES算法加密用戶口令
Oracle使用三重DES加密算法確保證保存放在這里的口令處于安全狀態(tài)。DES算法又被稱為數(shù)據(jù)加密標準(Data Encryption Standard),是1972年美國IBM公司研制的對稱密碼體制加密算法(Symmetric Encryption),如圖2所示。
到目前為止,除了用窮舉搜索法對DES算法進行強制破解外,還沒有發(fā)現(xiàn)更有效的破解辦法。DES算法是對稱密碼算法,也就是加密和解密使用同一套密鑰。密鑰的安全性和密鑰的長度相關(guān),其加密的安全性隨著密鑰的位數(shù)的提高而提高。DES算法使用56位密鑰。DES算法的基本原理簡述如下:
設(shè)P代表明文,K代表用于加密和解密的56位密鑰,C代表加密后的密文;Ek()和Dk()代表加密和解密函數(shù)。這樣,
DES加密過程為:C=E(P,K);
DES解密過程為:P=D(C,K)。
三重DES算法通過使用三組不同的密鑰來提高DES算法的安全性和復雜性。理論上這三組密鑰可以彼此不同,相當于用一個長為168(3×56)位的密鑰進行加密。在平衡安全和效率的情況下,令第一個和第三個密鑰相同(K1 = K3),采用兩個不同的密鑰加密。在這種情況下,密鑰的有效長度為112位(3×56)。三重DES算法把密鑰的長度由初始的56為提高到了112位的高級加密標準(AES)。
DES加密過程為:C=E(D(E(P,K1),K2),K1);
DES解密過程為:P=D(E(D(C,K2),K1),K2)。
對稱加密算法的特點是非常高效,用戶提供口令后感覺不到由于對口令做加密和解密運算帶來的時延效果。
以上兩個機制確保了Oracle Wallet自身的安全和存放其中口令的安全。下面這個措施保證了當用戶的口令在提交服務器做登錄認證時, 傳輸過程也是安全的。
5.3 傳輸環(huán)境的安全機制:使用SSL協(xié)議傳輸口令
Oracle Wallet在把口令字傳輸給服務器的時候,使用Oracle提供的SSL安全傳輸通道。
SSL(Secure Sockets Layer 安全套接層)是為網(wǎng)絡通信提供安全及 數(shù)據(jù)完整性的一種安全協(xié)議。
在TCP/IP網(wǎng)絡傳輸協(xié)議中SSL是運行在傳輸層之上、應用層之下的一種傳輸模式。SSL安全確保傳輸過程中數(shù)據(jù)的安全和完整,如圖3所示。
(1)傳輸過程使用公鑰加密算法
SSL支持強公鑰加密算法(Strong Public Key Encryption),公鑰加密標準算法是一種不對稱加密算法(Asymmetric Encryption),公加密和解密使用的的密鑰不一樣。在生成密鑰的時候同時生成一對密鑰。只有生成密鑰這自己知道的密鑰稱為私鑰,私鑰來解密信息。對外廣泛散布的密鑰稱為公鑰,公鑰用來加密信息。在公鑰加密算法中,任何人都可以使用公鑰來機密信息,但是被加密的信息只有擁有私鑰的人才能解密。因此,一個完整的加密和解密過程需要一對密鑰共同完成。缺少其中任何一方,流程都無法完成。
在對稱加密算法中,算法的安全性取決于密鑰的位數(shù)長度;在向不對稱加密算法中,如公鑰加密加密算法,私鑰的安全程度就是整個算法的安全程度。
(2)SSL傳輸步驟
SSL的傳輸過程分兩步完成,握手階段和信息傳輸階段。 在傳輸數(shù)據(jù)之前,客戶機和服務器先建立連接,協(xié)商在傳輸過程中,需要使用的用于在信息傳輸階段對信息做加密和解密的密鑰。這個過程被稱為“握手”過程?!拔帐帧苯Y(jié)束后,加密數(shù)據(jù)、在安全傳輸通道內(nèi)傳輸數(shù)據(jù),服務器收到密文后,使用在私鑰解密數(shù)據(jù),完成對用戶口令的安全傳輸。
6 結(jié)束語
通過以上分析,可以看到,Oracle Wallet 提供了一種全新的安全機制:首先,用戶的密碼由用戶和Oracle來共同管理,而不再是委托操作系統(tǒng)來管理;其次,存放在Oracle Wallet中的用戶密碼是加密的;第三,在向服務器提供密碼驗證時是通過安全通道SSL協(xié)議傳輸?shù)?。這三個環(huán)節(jié)從機制上保證了用戶口令在整個環(huán)節(jié)的所有流程中始終處于安全狀態(tài)。
今天的聯(lián)網(wǎng)設(shè)備的運行環(huán)境面臨更多的來自數(shù)據(jù)安全方面的挑戰(zhàn)。一個是傳統(tǒng)的單一操作系統(tǒng)的物理服務器日益被虛擬機所取代,或者至少是一個混合的工作環(huán)境。部署虛擬機后,在不同的服務器內(nèi)部可以調(diào)用相同的業(yè)務,這就為業(yè)務帶來了風險。另外,應用程序應用范圍的擴大導致登錄數(shù)據(jù)庫的用戶,不再局限于來自NIS網(wǎng)段的小規(guī)模用戶,大量的遠程用戶從異地登錄數(shù)據(jù)庫,良莠難辨。來自網(wǎng)絡的黑客攻擊,由簡單粗暴的傳統(tǒng)拒絕服務攻擊,正被更加復雜的釣魚式攻擊取代。以殺毒軟件和防火墻為手段的數(shù)據(jù)保護措施,并不能阻擋來自惡意登錄用戶破壞數(shù)據(jù)的威脅。從這個角度看,登錄認證比傳統(tǒng)的數(shù)據(jù)防護措施更加重要。提高了訪問數(shù)據(jù)庫登錄認證的安全級別,就提高了數(shù)據(jù)的安全等級。因此,Oracle Wallet帶來的登錄機制變化,消除了基于操作系統(tǒng)認證時存在的安全隱患;帶來了安全機制的根本改善,是DSG應用軟件在向云平臺拓展時,保證數(shù)據(jù)安全的有利措施和工具。
參考文獻
[1] 1. OSH SHAUL. ORACLE安全實踐[M].科學出版社,2009.
[2] Roger, Jennings, Cloud Computing with the windows Azure platform, Mark Stamp(張戈翻譯).信息安全原理與實踐[M].北京:清華大學.
[3] 王昭.信息安全原理與應用[M].北京:電子工業(yè)出版社。
[4] 郭涌,金月恒. Oracle數(shù)據(jù)庫在賬務管理系統(tǒng)中的安全策略研究[J].信息技術(shù)與信息化 2010.
[5] http://www.oracle.com/technetwork/database/security/twp-db-security-secure-ext-pwd-stor-133399.pdf.
[6] https://www.rsa.com/en-us/resources.
[7] Oracle? Database Security Guide, 11g Release 1 (11.1),
[8] http://docs.oracle.com/cd/B28359_01/network.111/b28531.pdf.
[9] https://docs.oracle.com/middleware/1221/core/ASADM/wallets.htm#ASADM10224.
[10] Using SSL Combined with Other Oracle Authentication Methods
[11] http://docs.oracle.com/cd/A84870_01/doc/network.816/a76932/09_ssl.htm.
[12] Oracle Database 10g Release 2 Security.
[13] https://oraclenz.files.wordpress.com/2008/06/security_database_10gr21.pdf.endprint