简介
本文将介绍在Oracle高级安全性选项中所实施的,Oracle所固有的网络加密和数据整合性保护。它检验相关的安全性威胁,解释加密和整合性检查处理的细节,并说明所需要的安装和配置工作。
除本文将介绍的加密和整合性功能之外,Oracle高级安全性还利用加密套接字协议层(SSL)保证网络安全,并利用为OracleSSLInternet Inter-ORB PRotocol (IIOP)提供保证。这些实施(它们不在本文涉及的范围之内)可以使用户在公共的要害性基础设施(PKI)中运转。这种选择余地意味着安全的网络遵循用于实施SSL的互联网工程工作小组(IETF)标准。而且,Oracle高级安全性可利用加密和数据整合性检查来维护瘦java 数据库连接性(JDBC)客户端的通讯。本文并不涉及这些特点,它只限于介绍在Oracle高级安全性中检验Oracle所固有的网络加密和整合性检查的内容。
安全性威胁
在当今互联网的计算时代,许多有价值的和敏感的数据通常是通过不安全的方式和渠道在传播。任何时候,当信息不论是互联网还是在一个组织的内联网等网络中传输时,它们都是易于受到攻击的。对数据的非法窃取正以加速的速率展开。一个可以通过以太网插口或一个布线室访问网络的个体可以监视和获得数据。硬件数据嗅探器不再是粗笨和昂贵的了。PC卡插到PC机中可以有效地监视网络的通信量和信息包的内容。
然而更轻易做到的,因此也是更具威胁的是基于软件的嗅探器。数据嗅探软件可以从互联网上下载,它可以把网络的通信量和个人信息包的内容暴露给网络中的任何人。在网络中任何人都可免费使用的一些软件中就有网络嗅探器,它可在几乎所有的协议中非法获得通讯信息。网络中不怀好意的用户可以将这种软件下载到他/她的PC中,然后马上就能把它转化成信息包的嗅探器。一旦取得这种访问,攻击者可以偷窃敏感的归私人所有的信息,它甚至可以破坏一个企业的运转。
所有的数据都面临着被攻击的风险:所有的信息包都可被读,修正或删除。Oracle高级安全性的网络安全性特性注重了这些方面,并保证在网络中传输的所有数据的隐私性和整合性。Oracle高级安全性通过使用加密和数据整合性检查,保卫着所有通讯量和信息内容的安全。
第一部分:加密和钥匙键治理
Oracle高级安全性中的加密功能将所有的明码文本数据转化为密码文本。一旦被加密,密码文本将以密码的方式在网络中传递,在这种方式中,假如没有正确的钥匙键就几乎不可能把密码文本转换回相应的纯文本。这些加密服务可以防止那些能够访问你的网络的人偷窥你的数据。Oracle高级安全性提供了三种闻名的,经过验证的计算方法可以加密Oracle的网络通讯量:
*数据加密标准()DES
*Triple DES (3DES, 2Key 和3Key)
*RC4 ( 40-, 56-, 128-, 256-)
每一种计算方法都答应选择钥匙键的长度。钥匙键的长度越长,将会产生更强大的加密。Oracle高级安全性提供了56位钥匙键的标准DES和40位钥匙键的DES。它也支持带有112位钥匙键的2-key Triple DES和168位钥匙键的3-key Triple DES。最后,它提供带有256-, 128-, 56- 和40-位钥匙键的RSA Dat的。a Security Inc. RC4
美国出口治理条例(EAR)已经做出变更,答应Oracle公司将Oracle高级安全性的一个版本在全球范围内销售。该产品的早期版本只提供较短钥匙键长度的版本,而且根据用户所在国家的不同而不同。目前版本包括了所有计算方法和钥匙键长度,以前该版本只适用于美国本土。而且,现在使用该产品早期版本的用户可以升级到该产品的国内版。
对Oracle高级安全性的正式评估已经开始实施,着重于它固有的加密实施。它可以在遵守U.S. Federal Information Processing Standard (FIPS) 140-1 Level 2(美国联邦信息处理标准(FIPS)140-1 第二级)的模式下进行配置。遵守FIPS 140-1标准表示该软件已经通过了独立专家的评估,可以保证加密技术运用适当。Level 2是一个软件产品所能获得的最高级别。
钥匙键的生成
加密技术是建立在产生加密钥匙键的基础之上的。“秘密”钥匙键只有发送方和接收方把握。这些“秘密钥匙键”在网络事物处理的一端对信息加密,而在另一端解密信息。这种加密处理的安全性高度依靠于所生成的秘密钥匙键。
The process of key prodUCtion and data encryption consist of the following steps:
钥匙键的生成过程和数据加密过程由以下步骤组成:
1. 计算方法的交流
2. 在客户端和服务器端产生充足的随机数
3. 利用Diffie-Hellman公共钥匙键交换技术生成第一话路钥匙键
4. 利用密码协议和OracleDiffie-Hellman钥匙键重叠,验证用户并生成第二话路钥匙键
5. 全数据流的加密
计算方法的交流
处理的第一阶段是客户端和服务器端计算方法的交流。
在客户端和服务器端的初始连接阶段,客户端将把所支持的计算方法的清单传递给服务器端,并通过交流决定将采用的计算方法。在初始配置系统时预先选定的计算方法将取代该处理。然后发生交流,以保证客户端和服务器端安装有相同的计算方法。系统对安装的计算方法和在客户端与服务器端的配置文件中SQLNET.ORA系统治理员所配置的顺序进行交涉。Oracle建议的配置是(i) 首先是用户选择的计算方法,(ii) 第二是由高到低钥匙键的顺序。Oracle高级安全性提供了下列的加密计算方法:
RC4 256
RC4 128
RC4 56
RC4 40
3DES 168
3DES 112
DES 56
DES 40
例如,考虑一个客户端/服务器连接,其中没有任何一方指定了必须使用的计算方法。假如客户端具有RC4 256,RC4 128和RC4 56,而服务器端只有RC4 56和DES,交流将缺省使用对两个处理所共同拥有的计算方法和钥匙键的长度。在本例中,它们将使用RC4 56。这种方法可以使具有不同计算方法集的各方,只要他们能共享一个公用的计算方法就能实现连接。
一旦计算方法被商定,Oracle高级安全性将产生秘密钥匙键以便对数据进行加密和解密。在生成足够的密码的过程中,钥匙键的产生过程是极为重要的。钥匙键越安全,破解密码的难度就越大。钥匙键强度的一个因素是用于生成钥匙键的随机数。
随机数的产生
Oracle高级安全性使用Diffie-Hellman的交换方法产生话路钥匙键。该处理由客户端和服务器端双方生成随机数开始。根据重复的序列,随机性可有助于免遭攻击。用户定义的SQLNET.ORA配置文件参数“sqlnet.crypto_seed=n8xi6svxlsu3bc”就是生成随机数的种子之一。其他的种子包括系统时间和一个基于操作系统(OSD)的变量。
图2. 生成随机数的种子
OSD的值可能基于操作系统中有效的硬件生成器。一旦这些种子有效,随机数生成器将产生一个最终的随机数。由于硬件随机数生成器缺乏统一的标准,包括在内的ORACLE许多加密系统都依靠于PRNG生成加密钥匙键。该过程在相互连接的双方产生,从而使客户端和服务器端都可以生成它们自己独特的随机数。
生成Diffie-话路钥匙键Hellman
一旦随机数被生成,Diffie-Hellman计算方法将产生话路钥匙键。该钥匙键将在客户端和服务器端同时产生,无需通过网络传递。话路钥匙键可利用方程式gc mod p, gs mod p and gsc mod 来p产生,其中
c 客户端生成的随机数=
s = 服务器端生成的随机数
g = 已经在服务器端表示的数量级在300-512 位的一个基数
p = 已经在服务器端表示的数量级在300-512 位的一个模数
值s 和c 是通过三个种子,在客户端和服务器端分别产生的随机数。值g 和p是已在服务器端存在的值,但可以通过命令naegen进行选择。
图3. Diffie-Hellman公共钥匙键交换
钥匙键生成的传输顺序通过图3所示客户端/服务器端方框中的小数字来确定,如下所示:
1. 客户端根据所支持的计算方法的清单传输一个连接请求。
2. 服务器端根据第一符合的计算方法和客户端的钥匙键大小决定将采用的计算方法。
3. 服务器利用服务器端的随机数s计算值gs 。mod p
4. 服务器向客户端传输值g,p,gs mod p,即将采用的计算方法,以及初始向量IV。
5. 客户端利用随机数c 计算gc ,mod p 该值将被传递到服务器。
6. 现在双方都已经获得了值g,p,gs mod p,和gc ,mod p因此可以计算mod p。
7. 客户端和服务器端都对gcs mod p应用一个函数以生成话路钥匙键。该函数根据所选择的计算方法的不同而不同。选择Triple DES与选择RC4将导致不同的计算方法。
8. 话路钥匙键在客户端和服务器端被建立起来。
钥匙键交换的最终结果是主话路钥匙键。主话路钥匙键可被用于加密所有的网络通信。但是,该钥匙键轻易受到网络中人的攻击,从而威胁到系统的安全性。
网络中人的攻击
假如有人正在监听网络通讯,他/她不可能捕捉话路钥匙键,因为它不会通过导线来传送。
但是,在钥匙键交换设计中存在一个缺陷,即易受到“网络中人”的攻击的薄弱环节。在网络中的人唯一可以得到的信息是交换的元素:g,p,gs mod p,和gc mod p。假如拥有Diffie-Hellman计算方法,他/她就能利用这些值去生成两个钥匙键,一个用于客户端另一个用于服务器端。尽管这两个钥匙键可能不同,但第三方仍然可以伪装成好似客户端之于服务器端或服务器端之于客户端。第三方可以侵入通讯中,并愚弄客户端和服务器端以获得需要继续交流的信息。
假如第三方能够仿效客户端和客户端并拥有Diffie-Hellman计算方法,它就能生成两个钥匙键,一个用于客户端另一个用于服务器端。尽管这两个钥匙键不同,第三方仍可愚弄客户端和