Oracle网络传输的加密和完整性验证

转自 http://blog.itpub.net/24052272/viewspace-2129175/

测试环境:

11.2.0.4 winodows  单机

应用场景:

对oracle服务器和客户端之间的网络传输数据进行加密和完整性校验。

默认是使用明文方式传输数据,举例可以通过wireshark、sniffer等网络抓包工具抓取到传输的具体信息。

对于敏感信息是很不安全的。

举例:

对于汉字可以通过很多在线转换工具将HEX编码转换成可读汉字。

对于了解业务的人来说,这些信息是很有价值的。

客户端存在两种模式:

1、通过oracle客户端软件连接数据库

2、通过jdbc驱动连接oracle数据库

通过oracle客户端的情况:

启用传输加密和校验的主要方法是通过服务器端和客户端的sqlnet.ora文件实现。

配置方法:
理论上需要在数据库server端和oracle客户端都修改sqlnet.ora文件,但因为client端默认传输加密级别是ACCEPTED,默认一致性校验级别是ACCEPTED,所以只需要在服务器端设置如下参数就可以打开传输加密和一致性校验功能,而不需要再对client端的sqlnet.ora进行设置(知识拓展部分介绍)。

在oracle服务器端编辑sqlnet.ora文件,添加参数:
SQLNET.ENCRYPTION_SERVER = REQUIRED               ----加密级别
SQLNET.ENCRYPTION_TYPES_SERVER = RC4_256      ----加密算法
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED     --- 一致性能校验

设置参数后对新建立的session起作用。

加密后抓取的包不再是明文的:

对于jdbc连接的情况:
需要写代码,不是很懂,不做验证,大体格式如下:
For example:

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Properties props = new Properties();
props.put("oracle.net.encryption_client", "accepted");
props.put("oracle.net.encryption_types_client", "RC4_128");
props.put("oracle.net.crypto_checksum_client", "REQUIRED");                //此行根据官方文档写,未作验证
props.put("oracle.net.crypto_checksum_types_client","MD5");             //此行根据官方文档格式写,未作验证
props.put("user", "XXX"); props.put("password", "YYY"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@myhost:1521:mySID", props);

知识拓展:
server端和client端的加密级别参数SQLNET.ENCRYPTION_SERVER|CLIENT
级别分

  • REQUESTED
  • REQUIRED
  • ACCEPTED
  • REJECTED

server和client  要配合使用才能确保进行传输加密,简单概括如下表格:

Table 4-2 Encryption and Data Integrity Negotiations

Client Setting Server Setting Encryption and Data Negotiation

REJECTED


REJECTED


OFF


ACCEPTED


REJECTED


OFF


REQUESTED


REJECTED


OFF


REQUIRED


REJECTED


Connection fails


REJECTED


ACCEPTED


OFF


ACCEPTED


ACCEPTED


OFFFoot 1 


REQUESTED


ACCEPTED


ON


REQUIRED


ACCEPTED


ON


REJECTED


REQUESTED


OFF


ACCEPTED


REQUESTED


ON


REQUESTED


REQUESTED


ON


REQUIRED


REQUESTED


ON


REJECTED


REQUIRED


Connection fails


ACCEPTED


REQUIRED


ON


REQUESTED


REQUIRED


ON


REQUIRED


REQUIRED


ON

一致性校验也分四中级别:
 SQLNET.CRYPTO_CHECKSUM_SERVER|CLIENT

  • REQUESTED
  • REQUIRED
  • ACCEPTED
  • REJECTED

同样需要配合使用。

参数解释:
SQLNET.CRYPTO_CHECKSUM_CLIENT。默认设置为ACCEPTED。

参数

ACCEPTED - 客户端不请求使用校验和,但是如果服务器请求校验和,则请求。兼容的服务器参数为REJECTED,REQUESTED和REQUIRED。
    REJECTED - 客户端不支持使用校验和。兼容的服务器参数为REJECTED,ACCEPTED和REQUESTED。
    REQUESTED - 客户端喜欢使用校验和,但是如果服务器拒绝它们的使用,则不强制该问题。兼容的服务器参数是ACCEPTED,REQUESTED和REQUIRED。
    REQUIRED - 客户端要求使用校验和,否则不连接。兼容的服务器参数是ACCEPTED,REQUESTED和REQUIRED。

SQLNET.CRYPTO_CHECKSUM_SERVER。默认设置为ACCEPTED。

参数

ACCEPTED - 服务器不请求使用校验和,但如果客户端请求它们,请继续。兼容的服务器参数有:REJECTED,REQUESTED和REQUIRED。
    REJECTED - 服务器根本不支持使用校验和。兼容的客户端参数为REJECTED,ACCEPTED和REQUESTED。
    REQUESTED - 服务器更喜欢使用校验和,但是如果客户端拒绝它们的使用,则不强制该问题。兼容的客户端参数是ACCEPTED,REQUESTED和REQUIRED。
    REQUIRED - 服务器要求使用校验和,否则不连接。兼容的客户端参数是ACCEPTED,REQUESTED和REQUIRED。

对性能的影响:

既然要 加密和解密就势必会占用一定的性能资源,但影响不大,下图是一个测试结果,摘自http://www.orafaq.com/wiki/Network_Encryption

Algorithm None MD5 SHA-1
Time %None Time %None Time %None
None 79.6 s   80.5 s 101% 82.4 s 104%
DES 104.7 s 132% 107.1 s 135% 108.2 s 136%
3DES168 151.8 s 191% 153.9 s 193% 155.6 s 196%
AES128 88.8 s 112% 90.5 s 114% 92.1 s 116%
AES256 91.8 s 115% 93.5 s 117% 94.2 s 118%
RC4_128 81.6 s 103% 82.5 s 104% 85.0 s 107%
RC4_256 81.7 s 103% 82.8 s 104% 85.0 s 107%

参考文档:
http://docs.oracle.com/cd/B19306_01/network.102/b14268/asoconfg.htm#BBJBIECD

http://docs.oracle.com/cd/B19306_01/network.102/b14268/asojbdc.htm#i1006209

http://www.orafaq.com/wiki/Network_Encryption

http://www.toadworld.com/platforms/oracle/w/wiki/1719.sqlnet-ora-parameters

原文地址:https://www.cnblogs.com/KQNLL/p/8626435.html

时间: 2024-08-10 11:22:48

Oracle网络传输的加密和完整性验证的相关文章

网络传输的加密与解密(不是很难理解的一个版本)

--网络传输的加密与解密--    由于互联网早期并没有考虑到数据报文安全的问题,早期的理念都是基于进行通信的.现在随着网络兴起,互联网上慢慢有很多"犯罪团体",用较低的犯罪成本通常是基于一个网络通信协议的一个小的漏洞来完成窃取.篡改.重播其他人的数据报文. 而往往计算机网络安全维护者和那些恶意攻击者玩的就是一个类似猫鼠游戏,网络安全维护者处处考虑对计算机的安全负责,而恶意攻击者处处找安全的漏洞.而对于那些恶意攻击方式大体分两种. 一种叫被动攻击,大体上来说就是窃听,攻击者获得传输信息

网络传输与加密 (2)

网络传输与加密 让我们先回顾一下上次的验证过程,如下图 有了"原信息"和它对应的"md5签名字符串",我们就可以做最基本的信息验证:通过md5签名字符串的一致性,来保障我们收到的信息没有受到更改. P.S.:由于签名signature在后续文章中会另有所指,为区分md5签名字符串,我们将md5签名字符串的叫法,更改为md5指纹字符串.意思同签名是一样的,就是A之所以是A的证据.特征,可以用签名来表示,也可以用指纹来表示.这里,我们开始将md5字符串对应的这个特征,称

网络传输与加密

谈到网络,就必然会涉及网络安全.但"安全"这个事情, 一下子就会让人联想到黑客,进而把"安全"这个事情无限放大为各种高大上.神秘莫测.不可知.这不是一个engineer应有的态度(<一次艰难debug的反思>). 要讨论网络安全,可以从最核心的"加密"谈起. 加密,英文叫encryption.显然,无论中.英文,都不太能够从字面文法上,给人以直观的联想和理解(这是典型的"装X亮词"的特性).那更接地气的直观说法是什

Android 密钥保护和 C/S 网络传输安全理论指南

注:本文将着重讲解 Android KeyStore.so 库保护 app key / secret.HTTPS 原理及其防中间人***措施. 谈到 Android 安全性话题,Android Developers 官方网站给出了许多很好的建议和讲解,涵盖了存储数据.权限.网络.处理凭据.输入验证.处理用户数据.加密等方方面面,甚至对于动态加载代码也提供了建议,具体可以看看 training 的?security tips?章节.而今天,我想特别来讲一讲在 Android 密钥保护和 C/S 网

使用加密解密技术和CA认证解决网络传输中的安全隐患

服务端:xuegod63.cn   IP:192.168.1.63 客户端:xuegod64.cn   IP:192.168.1.64   网络安全: 网络传输中的安全隐患-.   中间人攻击 全隐患:        解决方法 1.窃听-- >  加密 2.篡改 ->  哈西算法:MD5,sha1 (检查数据完整性) 3.伪装(钩鱼网站,伪装WIFI)  ->  身份认证(用户名/密码.数字证书) 4.网络中断 (内网冒冲网关,DDOS )  –>绑定静态arp地址: 加大服务器和

Oracle工具之--ASM与文件系统及跨网络传输文件

Oracle工具之--ASM与文件系统及跨网络传输文件   Oracle DBMS_FILE_TRANSFER可以实现文件系统和ASM磁盘组之间实现文件传输及ASM磁盘组之间跨网络的传输. DBMS_FILE_TRANSFER:   The DBMS_FILE_TRANSFER package provides procedures to copy a binary file within a database or to transfer a binary file between datab

网络传输基本协议

介绍 定义 在配置管理中,终端服务特性提供了设备配置的管理接入接口和交互界面,为用户提供操作场所. 主要包括: Console口登录 Telnet Server/Client SSH登录,支持Password.RSA验证.DSA验证 支持定制User-interface,提供对登录用户多种方式的认证和授权功能 文件传输特性可以提供系统文件.配置文件的传输控制和文件系统的远程简单管理. 主要包括: FTP Server/Client TFTP Client 基于SSH协议的文件传输SFTP Cli

DICOM医学图像处理:fo-dicom网络传输之 C-Echo and C-Store

背景: 上一篇博文对DICOM中的网络传输进行了介绍.主要參照DCMTK Wiki中的英文原文.通过对照DCMTK与fo-dicom两个开源库对DICOM标准的详细实现,对理解DICOM标准有一个更直观的认识.此篇博文是对上一篇博文的补充.由于专栏前面的演示样例大多是利用DCMTK工具包来进行的,此次借着分析fo-dicom源代码结构的机会,參照fo-dicom的README.md,给出C-ECHO 和C-STORE服务的详细实现.在实现的同一时候给出DICOM3.0标准中的相关介绍,帮助我们理

SSL加密基本身份验证

SSL加密基本身份验证 u 案例需求 如何通过SSL方式加密基本身份验证? u 知识提示 在IIS 7.0中提供了多种用户身份验证方式,如果启用基本身份验证方式,在网络上传输的是弱加密的密码,很容易被窃取.所以可以使用SSL方式进行加密,这样用户密码的安全性就得到了保障. 具体实现步骤入戏所述. (1)在IIS中更改Web站点的用户身份验证方式为"基本身份验证",如图5.1所示. 图5.1 更改身份验证方式 (2)为Web服务器申请证书,如图5.2所示. 图5.2 完成证书申请 (3)