Oracle钱包在R5000软件登录数据库的应用

2018-01-20 13:39李明
网络空间安全 2017年12期

李明

摘 要:地震解释系统是石油上游公司的关键信息系统数据库,也是渤海油田研究院勘探开发一体化流程的研究平台之一,为由多学科科研人员组成的一体化团队做数据解释和分析研究。OpenWorks 软件是基于Oracle数据库开发的一款地学解释数据库支撑运行在其上的DSG系列勘探开发应用软件。R5000版本OpenWorks之前版本R2003的升级产品,在产品功能变化的同时,数据库安全机制(Security Model Change)是其中众多变化的部分。论文集中讨论从R2003到R5000升级后,采用Oracle Wallet认证方式所带来的安全认证变化。

但是,随着OpenWorks一体化软件应用范围的扩大,R5000版本的应用程DSG的应用环境,已经传统的登录单点工作站拓展到了远程、异地等多点登录情形。登录数据库的用户也不再仅仅局限于来自局域网内的用户,最新释放的运行在微软云平台Azuer上的DSG365应用程序,可以实现在全球任意点登录。由于应用程序适用范围的变化,基于操作系统认证的适用条件受到了挑战。远程登录的用户,即使他们是合法的操作系统用户,也不一定是合法的数据库用户。继续使用基于操作系统认证的方式登录数据库,对用户宝贵的数据安全构成了严重的威胁,并存在着重大的安全隐患。

论文分析了使用基于Oracle钱包的机制和为什么用它来代替操作系统认证可以改善安全性的原因,帮助用户消除原有的安全顾虑。

关键词: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 引言

地震解釋系统是石油公司的关键信息系统,也是渤海油田研究院勘探开发一体化流程的研究平台之一,供一体化的科研团队做数据解释和分析研究。OpenWorks 软件是基于Oracle数据库开发的一款地学数据库、为运行在其上的DSG系列勘探开发应用软件提供数据支撑。R5000版本是之前R2003版本的升级换代产品。在产品功能变化的同时,数据库安全机制(Security Model Change)的变化是其中众多变化的一部分。本文集中讨论了从R2003到R5000升级后,采用Oracle Wallet认证方式代替原来基于操作系统认证所带来安全认证方式的变化,对信息安全和用户体验所带来的影响。endprint

2 登录数据库的认证机制回顾(R2003版本)

为了防止未经授权的用户非法使用数据库,每个用户在连接到数据库时都需要进行身份认证。基于口令字(Password Authentication)和基于操作系统认证(OS Authentication)是登录Oracle数据库的两种不同认证方式。

基于口令字的认证在登录数据库的时候必须同时提供用户名和口令,由Oracle完成对户名和口令的认证,用户的口令存放在数据库中;基于操作系统认证的数据库登录方式,是数据库委托和授信给操作系统来完成登录数据库的认证,用户的密码是存放在操作系统的Shadow文件中。也就是说,只要是合法的操作系统用户,也就是合法数据库的用户,Oracle不再做单独认证。

OpenWorks软件R2003版采用的就是基于操作系统认证的方式来访问数据库。

3 为什么操作系统认证的安全性不高

早期的解释系统是单机版的用户(Stand-alone),后来逐步发展成为客户机/服务器架构。其基本功能都是作为一个信息系统为项目团队提供地学研究和数据存储服务。总体而言,无论是在单机版还是在一个小型的网络环境内,勘探开发研究团队的成员都是工作在一个相对独立和封闭的环境中,或者说他们都使用同一种操作系统来登录数据库和使用应用程序。在这种情况下,使用基于操作系统认证的方式来访问数据库,数据的安全性不是主要的顾虑。相反,由于用户需要频繁地在不同的应用程序之间切换来和数据库做读写交互,基于操作系统认证的方式避免了每次和数据库交互的时候都需要提供认证服务的繁琐,实现了用户一旦登录操作系统,就可以无密码地访问数据库的便捷性。

但是,随着OpenWorks一体化软件应用范围的扩大,R5000版本下的应用程序的应用环境已经由传统的单点工作站登录拓展到了远程、异地等多点登录的情形,登录数据库的用户也不再仅仅局限于来自局域网内的用戶。最新释放的运行在微软云平台上的DSG365应用程序可以实现在全球任意点登录。由于应用程序适用范围的变化,基于操作系统认证的适用条件受到了挑战。同时,传统的物理服务器日益被虚拟机所取代,远程登录的用户,即使他们是操作系统合法的用户,也不一定是合法的数据库用户。在新的情况下,继续使用基于Oracle操作系统认证的模式登录数据库的方式,风险大于便利,用户的数据处于不安全的状态。

4 用Oracle Wallet代替操作系统认证

为了解决这个问题,从Oracle10gR2开始,用户的口令存放在一个被称为Oracle Wallet的容器之中。Oracle Wallet是一个数据结构,其功能是作为一个容器为每一个需要访问数据库的实体提供存储各种口令、密码和安全证书,同时也为数据库的各种认证和加密提供检索服务。

当用户访问数据库的时候,Oracle自动打开Oracle Wallet来提取用户的密码提交服务器。如果Oracle拿到了密码,就可以直接登录数据库,完成登录认证。如果是非授权用户,则无法登录,如图1所示。

在最大限度地不影响用户体验的情况下,Oracle Wallet机制成功地将操作系统用户做了区分和过滤。从用户的体验看,使用这个机制登录数据库,除了在第一次访问数据库时需要自己设定密码外,以后用户只要登录操作系统后,就可以直接访问数据库,似乎和以前的操作系统认证没有什么区别。但是,在表象的背后,却是完全不一样的安全机制。

5 Oracle Wallet安全机制分析

本文就Oracle Wallet管理用户口令的这三个环节做一具体的分析,理解为什么Oracle Wallet提供了比操作系统认证更加安全的口令保护机制。

5.1 Oracle wallet自身安全的保护机制

第一层保护:用户自己制定Oracle Wallet的存放位置和密码保护。

我们知道,基于口令的数据登录方式,其口令是存储在数据库中;基于操作系统认证的登录方式,口令是存放在操作系统的Shadow文件中。Oracle Wallet提供了一个新的容器,这个容器代替Shadow文件来存放用户的口令,提供了Oracle和用户共同管理登录口令的新机制。

这个被称为Oracle Wallet的容器是一个独立于数据库、建立在操作系统上的加密文件,这个文件的位置和密码都是由用户自己来设定的, Oracle通过参数配置来找到这个文件并读取其中的内容。

第一次建立Oracle Wallet使用mkstore命令和 -create 选项来创建,并要输入和确认以后访问wallet的口令。

$ mkstore -wrl "/home/myuser/wallet" -create

Enter password:

Enter password again:

$

第二层保护:受操作系统文件读写属性保护。

执行完这条命令后,存放外部口令文件夹的Oracle Wallet就建立好了。这个两个文件在初始生成的时候只有创立者自己具有读/写权限(600),其他任何人无权访问和修改。如果用户修改了文件的属性,Oracle随后把被修改的文件属性的强制改回初始状态。

$ 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有可能被用户拷贝到不同的机器上,为了避免这种现象发生,保证Oracle Wallet只在建立的当地有效,在11g Release 2版本中,使用了一条新的命令"orapki"代替"mkstore"命令来生成Oracle Wallet文件夹,增加了选项-auto_login_local。

$ orapki wallet create -wallet "/home/myuser/wallet" -pwd "MyPassword1" -auto_login_local

这样用户一旦创立了这个Oracle wallet,它就只能在初始创立的位置生效,增新加了不可移动的特性,就像一台根植于用户属地的保险柜一样安全。

5.2 钱包中存放物的安全:用3DES算法加密用户口令

Oracle使用三重DES加密算法确保证保存放在这里的口令处于安全状态。DES算法又被称为数据加密标准(Data Encryption Standard),是1972年美国IBM公司研制的对称密码体制加密算法(Symmetric Encryption),如图2所示。

到目前为止,除了用穷举搜索法对DES算法进行强制破解外,还没有发现更有效的破解办法。DES算法是对称密码算法,也就是加密和解密使用同一套密鑰。密钥的安全性和密钥的长度相关,其加密的安全性随着密钥的位数的提高而提高。DES算法使用56位密钥。DES算法的基本原理简述如下:

设P代表明文,K代表用于加密和解密的56位密钥,C代表加密后的密文;Ek()和Dk()代表加密和解密函数。这样,

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 传输环境的安全机制:使用SSL协议传输口令

Oracle Wallet在把口令字传输给服务器的时候,使用Oracle提供的SSL安全传输通道。

SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及 数据完整性的一种安全协议。

在TCP/IP网络传输协议中SSL是运行在传输层之上、应用层之下的一种传输模式。SSL安全确保传输过程中数据的安全和完整,如图3所示。

(1)传输过程使用公钥加密算法

SSL支持强公钥加密算法(Strong Public Key Encryption),公钥加密标准算法是一种不对称加密算法(Asymmetric Encryption),公加密和解密使用的的密钥不一样。在生成密钥的时候同时生成一对密钥。只有生成密钥这自己知道的密钥称为私钥,私钥来解密信息。对外广泛散布的密钥称为公钥,公钥用来加密信息。在公钥加密算法中,任何人都可以使用公钥来机密信息,但是被加密的信息只有拥有私钥的人才能解密。因此,一个完整的加密和解密过程需要一对密钥共同完成。缺少其中任何一方,流程都无法完成。

在对称加密算法中,算法的安全性取决于密钥的位数长度;在向不对称加密算法中,如公钥加密加密算法,私钥的安全程度就是整个算法的安全程度。

(2)SSL传输步骤

SSL的传输过程分两步完成,握手阶段和信息传输阶段。 在传输数据之前,客户机和服务器先建立连接,协商在传输过程中,需要使用的用于在信息传输阶段对信息做加密和解密的密钥。这个过程被称为“握手”过程。“握手”结束后,加密数据、在安全传输通道内传输数据,服务器收到密文后,使用在私钥解密数据,完成对用户口令的安全传输。

6 结束语

通过以上分析,可以看到,Oracle Wallet 提供了一种全新的安全机制:首先,用户的密码由用户和Oracle来共同管理,而不再是委托操作系统来管理;其次,存放在Oracle Wallet中的用户密码是加密的;第三,在向服务器提供密码验证时是通过安全通道SSL协议传输的。这三个环节从机制上保证了用户口令在整个环节的所有流程中始终处于安全状态。

今天的联网设备的运行环境面临更多的来自数据安全方面的挑战。一个是传统的单一操作系统的物理服务器日益被虚拟机所取代,或者至少是一个混合的工作环境。部署虚拟机后,在不同的服务器内部可以调用相同的业务,这就为业务带来了风险。另外,应用程序应用范围的扩大导致登录数据库的用户,不再局限于来自NIS网段的小规模用户,大量的远程用户从异地登录数据库,良莠难辨。来自网络的黑客攻击,由简单粗暴的传统拒绝服务攻击,正被更加复杂的钓鱼式攻击取代。以杀毒软件和防火墙为手段的数据保护措施,并不能阻挡来自恶意登录用户破坏数据的威胁。从这个角度看,登录认证比传统的数据防护措施更加重要。提高了访问数据库登录认证的安全级别,就提高了数据的安全等级。因此,Oracle Wallet带来的登录机制变化,消除了基于操作系统认证时存在的安全隐患;带来了安全机制的根本改善,是DSG应用软件在向云平台拓展时,保证数据安全的有利措施和工具。

参考文献

[1] 1. OSH SHAUL. ORACLE安全实践[M].科学出版社,2009.

[2] Roger, Jennings, Cloud Computing with the windows Azure platform, Mark Stamp(张戈翻译).信息安全原理与实践[M].北京:清华大学.

[3] 王昭.信息安全原理与应用[M].北京:电子工业出版社。

[4] 郭涌,金月恒. Oracle数据库在账务管理系统中的安全策略研究[J].信息技术与信息化 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