数据加密后存在数据库敏感数据加密,如何分析

数据库安全_百度百科
清除历史记录关闭
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
数据库安全
包含两层:第一层是指系统运行安全,系统运行安全通常受到的威胁如下,一些网络不法分子通过网络,局域网等途径通过入侵电脑使系统无法正常启动,或超负荷让机子运行大量算法,并关闭cpu风扇,使cpu过热烧坏等破坏性活动; 第二层是指系统信息安全,系统安全通常受到的威胁如下,黑客对数据库入侵,并盗取想要的资料。的主要是针对数据而言的,包括、数据安全性、、、故障恢复等几个方面。
数据库安全安全问题
据Verizon2012年的数据泄露调查分析报告
和对发生的信息安全事件技术分析,总结出信息泄露呈现两个趋势:
(1)黑客通过B/S应用,以Web服务器为跳板,窃取数据库中数据;传统解决方案对应用访问和数据库访问协议没有任何控制能力,比如:SQL注入就是一个典型的数据库黑客攻击手段。
(2)数据泄露常常发生在内部,大量的运维人员直接接触敏感数据,传统以防外为主的网络安全解决方案失去了用武之地。
数据库在这些泄露事件成为了主角,这与我们在传统的安全建设中忽略了数据库安全问题有关,在传统的信息安全防护体系中数据库处于被保护的核心位置,不易被外部黑客攻击,同时数据库自身已经具备强大安全措施,表面上看足够安全,但这种传统安全防御的思路,存在致命的缺陷。
数据库安全防护手段
Xsecure产品系列实现对数据库的全方位防护
,需要覆盖数据库的事前、事中、事后安全;覆盖数据库应用安全、维护安全、使用安全和存储安全;是最全面的数据库防泄露产品。
数据库安全事前诊断
数据库漏洞扫描系统Xsecure-DBScan
,是一款帮助用户对当前的数据库系统进行自动化安全评估的专业软件,能有效暴露当前数据库系统的安全问题,提供对数据库的安全状况进行持续化监控,帮助用户保持数据库的安全健康状态。
发现外部黑客攻击漏洞,防止外部攻击:实现非授权的从外到内的检测;模拟黑客使用的漏洞发现技术,在没有授权的情况下,对目标数据库的安全性作深入的探测分析;收集外部人员可以利用的数据库漏洞的详细信息。  分析内部不安全配置,防止越权访问:通过只读账户,实现由内到外的检测;提供现有数据的漏洞透视图和数据库配置安全评估;避免内外部的非授权访问。
监控数据库安全状况,防止数据库安全状况恶化:对于数据库建立安全基线,对数据库进行定期扫描,对所有安全状况发生的变化进行报告和分析。
数据库安全事中控制
数据库保险箱Xsecure-DBCoffer
,是一款基于透明加密技术的数据库防泄漏系统,该产品能够实现对数据库中的敏感数据加密存储、访问控制增强、应用访问安全、安全审计以及三权分立等功能。BCoffer基于主动防御机制,可以防止明文存储引起的数据泄密、突破边界防护的外部黑客攻击、内部高权限用户的数据窃取、逃开应用系统非法访问数据库,从根源上防止敏感数据泄漏。DBCoffer通过独创的、已获专利的三层视图技术和密文索引等核心技术,突破了传统数据库安全加固产品的技术瓶颈,真正实现了数据高度安全、应用完全透明、密文高效访问。
数据库安全事后分析
数据库防火墙系统Xsecure-DBFirewall
,是一款基于数据库协议分析与控制技术的数据库安全防护系统。DBFirewall基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计;通过SQL协议分析,根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作的主动预防、实时审计;面对来自于外部的入侵行为,提供SQL注入禁止和数据库虚拟补丁包功能;通过虚拟补丁包,数据库系统不用升级、打补丁,即可完成对主要数据库漏洞的防控。
数据库安全特征
数据库系统的安全特性
主要是针对数据而言的,包括数据独立性、数据安全性、数据完整性、并发控制、故障恢复等几个方面。下面分别对其进行介绍
数据库安全数据独立性
包括物理独立性和逻辑独立性两个方面。物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的;逻辑独立性是指用户的应用程序与数据库的是相互独立的。
数据库安全数据安全性
操作系统中的对象一般情况下是文件,而数据库支持的应用要求更为精细。通常比较完整的数据库对数据安全性采取以下措施:
(1)将数据库中需要保护的部分与其他部分相隔。
(2)采用授权规则,如账户、口令和权限控制等访问控制方法。
(3)对数据进行加密后存储于数据库。
数据库安全数据完整性
数据完整性包括数据的正确性、有效性和一致性。正确性是指数据的输入值与数据表对应域的类型一样;有效性是指数据库中的理论数值满足现实应用中对该数值段的约束;一致性是指不同用户使用的同一数据应该是一样的。保证数据的完整性,需要防止合法用户使用数据库时向数据库中加入不合语义的数据。
数据库安全并发控制
如果数据库应用要实现多用户共享数据,就可能在同一时刻多个用户要存取数据,这种事件叫做并发事件。当一个用户取出数据进行修改,在修改存入数据库之前如有其它用户再取此数据,那么读出的数据就是不正确的。这时就需要对这种并发操作施行控制,排除和避免这种错误的发生,保证数据的正确性。
数据库安全故障恢复
由提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。
数据库安全安全策略
数据库的安全配置在进行安全配置之前,首先必须对操作系统进行安全配置,保证操作系统处于。然后对要使用的操作(程序)进行必要的安全审核,比如对ASP、PHP等脚本,这是很多基于数据库的Web应用常出现的安全隐患,对于脚本主要是一个过滤问题,需要过滤一些类似“,; @ /”等字符,防止破坏者构造恶意的SQL语句。接着,安装SQL Server2000后请打上最新SP4
SQL Server的安全配置
1.使用安全的密码策略
我们把密码策略摆在所有安全配置的第一步,请注意,很多数据库账号的密码过于简单,这跟系统密码过于简单是一个道理。对于sa更应该注意,同时不要让sa账号的密码写于应用程序或者脚本中。健壮的密码是安全的第一步,建议密码含有多种数字字母组合并9位以上。SQL Server2000安装的时候,如果是使用混合模式,那么就需要输入sa的密码,除非您确认必须使用空密码,这比以前的版本有所改进。同时养成定期修改密码的好习惯,应该定期查看是否有不符合密码要求的账号。
2.使用安全的账号策略
由于SQL Server不能更改sa用户名称,也不能删除这个,所以,我们必须对这个账号进行最强的保护,当然,包括使用一个非常强壮的密码,最好不要在数据库应用中使用sa账号,只有当没有其他方法登录到 SQL Server 实例(例如,当其他不可用或忘记了密码)时才使用 sa。建议数据库管理员新建立个拥有与sa一样权限的超级用户来管理数据库。安全的账号策略还包括不要让管理员权限的账号泛滥。
SQL Server的认证模式有Windows身份认证和混合身份认证两种。如果不希望操作系统管理员来通过操作系统登录来接触数据库的话,可以在账号管理中把系统账号“BUILTIN\Administrators”删除。不过这样做的结果是一旦sa账号忘记密码的话,就没有办法来恢复了。很多使用数据库应用只是用来做查询、修改等简单功能的,请根据实际需要分配账号,并赋予仅仅能够满足应用要求和需要的权限。比如,只要查询功能的,那么就使用一个简单的public账号能够select就可以了。
3.加强数据库日志的记录
审核数据库登录事件的“失败和成功”,在实例属性中选择“安全性”,将其中的审核级别选定为全部,这样在和操作系统日志里面,就详细记录了所有账号的登录事件。请定期查看SQL Server日志检查是否有可疑的登录事件发生,或者使用DOS命令。
4.管理扩展
对存储过程进行大手术,并且对账号调用扩展存储过程的权限要慎重。其实在多数应用中根本用不到多少系统的存储过程,而SQL Server的这么多系统存储过程只是用来适应广大用户需求的,所以请删除不必要的存储过程,因为有些系统的存储过程能很容易地被人利用起来或进行破坏。如果您不需要扩展存储过程Xp_cmdshell请把它去掉。使用这个SQL语句:
use master
sp_dropextendedproc 'Xp_cmdshell'
Xp_cmdshell是进入操作系统的最佳捷径,是数据库留给操作系统的一个大后门。如果您需要这个,请用这个语句也可以恢复过来。
sp_addextendedproc 'xp_cmdshell', 'xpSQL70.dll'
如果您不需要请丢弃OLE自动存储过程(会造成管理器中的某些特征不能使用)。
这些过程如下: Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop
去掉不需要的注册表访问的,注册表存储过程甚至能够读出操作系统管理员的密码来,命令如下:
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue
Xp_regenumvalues Xp_regread Xp_regremovemultistring
Xp_regwrite
还有一些其他的扩展,也最好检查检查。在处理存储过程的时候,请确认一下,避免造成对数据库或应用程序的伤害。
5.使用协议加密
SQL Server 2000使用的Tabular Data Stream协议来进行网络数据交换,如果不加密的话,所有的网络传输都是明文的,包括密码、数据库内容等,这是一个很大的安全威胁。能被人在网络中截获到他们需要的东西,包括数据库账号和密码。所以,在条件容许情况下,最好使用SSL来加密协议,当然,您需要一个证书来支持。
6.不要让人随便到您的TCP/IP端口
默认情况下,SQL Server使用1433,很多人都说SQL Server配置的时候要把这个端口改变,这样别人就不会轻易地知道使用的什么端口了。可惜,通过微软未公开的1434端口的UDP探测可以很容易知道SQL Server使用的什么TCP/IP端口。不过微软还是考虑到了这个问题,毕竟公开而且开放的端口会引起不必要的麻烦。在实例属性中选择TCP/IP协议的属性。选择隐藏 SQL Server实例。如果隐藏了SQL Server实例,则将禁止对试图枚举网络上现有的 SQL Server实例的客户端所发出的广播作出响应。这样,别人就不能用1434来您的TCP/IP端口了(除非用Port Scan)。
7.修改TCP/IP使用的端口
请在上一步配置的基础上,更改原默认的1433端口。在实例属性中选择网络配置中的TCP/IP协议的属性,将TCP/IP使用的默认端口变为其他端口。
8.拒绝来自1434端口的探测
由于1434端口探测没有限制,能够被别人探测到一些数据库信息,而且还可能遭到DoS攻击让的CPU负荷增大,所以对Windows 2000操作系统来说,在IPSec过滤拒绝掉1434端口的UDP通信,可以尽可能地隐藏您的SQL Server。
9.对网络连接进行IP限制
SQL Server 2000本身没有提供网络连接的安全解决办法,但是Windows 2000提供了这样的安全机制。使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制,只保证自己的IP能够访问,也拒绝其他IP进行的端口连接,对来自网络上的安全威胁进行有效的控制。
上面主要介绍的一些SQL Server的安全配置,经过以上的配置,可以让SQL Server本身具备足够的安全防范能力。当然,更主要的还是要加强内部的安全控制和管理员的安全培训,而且安全性问题是一个长期的解决过程,还需要以后进行更多的安全维护。
数据库安全安全性控制的方法
安全性控制是指要尽可能地杜绝所有可能的数据库非法访问。每种数据库管理系统都会提供一些安全性控制方法供数据库管理员选用,以下是常用的几种方法。
用户标识与鉴别
视图定义与查询修改
数据库安全数据库安全威胁
近两年,拖库现象频发,黑客盗取数据库的技术在不断提升。虽然数据库的防护能力也在提升,但相比黑客的手段来说,单纯的数据库防护还是心有余而力不足。数据库审计已经不是一种新兴的技术手段,但是却在数据库安全事件频发的今天给我们以新的启示。数据库受到的威胁大致有这么几种:
数据库安全内部人员错误
  数据库安全的一个潜在风险就是“非故意的授权用户攻击”和内部人员错误。这种安全事件类型的最常见表现包括:由于不慎而造成意外删除或泄漏,非故意的规避安全策略。在授权用户无意访问敏感数据并错误地修改或删除信息时,就会发生第一种风险。在用户为了备份或“将工作带回家”而作了非授权的备份时,就会发生第二种风险。虽然这并不是一种恶意行为,但很明显,它违反了公司的安全策略,并会造成数据存放到存储设备上,在该设备遭到恶意攻击时,就会导致非故意的安全事件。例如,笔记本电脑就能造成这种风险。
数据库安全社交工程
  由于攻击者使用的高级钓鱼技术,在合法用户不知不觉地将安全机密提供给攻击者时,就会发生大量的严重攻击。这些新型攻击的成功,意味着此趋势在 2012年继续。在这种情况下,用户会通过一个受到损害的网站或通过一个电子邮件响应将信息提供给看似合法的请求。应当通知雇员这种非法的请求,并教育他们不要做出响应。此外,企业还可以通过适时地检测可疑活动,来减轻成功的钓鱼攻击的影响。数据库活动监视和审计可以使这种攻击的影响最小化。
数据库安全内部人员攻击
  很多数据库攻击源自企业内部。当前的经济环境和有关的裁员方法都有可能引起雇员的不满,从而导致内部人员攻击的增加。这些内部人员受到贪欲或报复欲的驱使,且不受防火墙及入侵防御系统等的影响,容易给企业带来风险。
数据库安全错误配置
  黑客可以使用数据库的错误配置控制“肉机”访问点,借以绕过认证方法并访问敏感信息。这种配置缺陷成为攻击者借助特权提升发动某些攻击的主要手段。如果没有正确的重新设置数据库的默认配置,非特权用户就有可能访问未加密的文件,未打补丁的漏洞就有可能导致非授权用户访问敏感数据。
数据库安全未打补丁的漏洞
  如今攻击已经从公开的漏洞利用发展到更精细的方法,并敢于挑战传统的入侵检测机制。漏洞利用的脚本在数据库补丁发布的几小时内就可以被发到网上。当即就可以使用的漏洞利用代码,再加上几十天的补丁周期(在多数企业中如此),实质上几乎把数据库的大门完全打开了。
数据库安全高级持续性威胁
  之所以称其为高级持续性威胁,是因为实施这种威胁的是有组织的专业公司或政府机构,它们掌握了威胁数据库安全的大量技术和技巧,而且是“咬定青山不放松”“立根原在&金钱(有资金支持)&中”,“千磨万击还坚劲,任尔东西南北风”。这是一种正甚嚣尘上的风险:热衷于窃取数据的公司甚至外国政府专门窃取存储在数据库中的大量关键数据,不再满足于获得一些简单的数据。特别是一些个人的私密及金融信息,一旦失窃,这些数据记录就可以在信息黑市上销售或使用,并被其它政府机构操纵。鉴于数据库攻击涉及到成千上万甚至上百万的记录,所以其日益增长和普遍。通过锁定数据库漏洞并密切监视对关键数据存储的访问,数据库的专家们可以及时发现并阻止这些攻击。
.畅享网.[引用日期]
.数据库安全加固网站.2013-2[引用日期]
.数据库安全加固网站.2013-2[引用日期]
.数据库安全加固网站.2013-2[引用日期]
.数据库安全加固.2013-2[引用日期]
高阳主编.数据库技术与应用:电子工业出版社,2003年
中国通信学会是全国通信...
提供资源类型:内容
清除历史记录关闭数据库加密技术的要点分析_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数据库加密技术的要点分析
安华金和专注于数据库安全领域,由长期致力...|
总评分0.0|
&&对数据库存储层核心数据进行加密,可以解决库内明文存储引发的信息泄露风险,也能解决数据库高权限用户不受控制的现状。
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
还剩1页未读,
定制HR最喜欢的简历
你可能喜欢数据库加密研究现状与分析_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数据库加密研究现状与分析
易发表网提供各学科期刊论文下载、毕业论文...|
总评分0.0|
试读已结束,如需继续阅读或下载
享专业文档下载特权
赠共享文档下载特权
10W篇文档免费专享
定制HR最喜欢的简历
你可能喜欢苹果/安卓/wp
积分 6836, 距离下一级还需 3344 积分
权限: 自定义头衔, 签名中使用图片, 隐身, 设置帖子权限, 设置回复可见
道具: 涂鸦板, 彩虹炫, 雷达卡, 热点灯, 显身卡, 匿名卡, 金钱卡, 抢沙发, 变色卡, 提升卡, 沉默卡, 千斤顶下一级可获得
权限: 签名中使用代码
购买后可立即获得
权限: 隐身
道具: 金钱卡, 变色卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
开心签到天数: 187 天连续签到: 1 天[LV.7]常住居民III
一.概要本文主要目的,希望通过分享解密方法引起相关人士对网络安全的重视。数据库安全绝不单只数据库本身的安全,和数据库所处的整个环境都有密切关系。本 文所说的破解oracle9i、oracle10g、oracle11g密码,特指通过对oracle数据库和客户端之间通讯包进行处理破解出 oracle密码明文,这有别于对oracle数据库中存储的16位密码进行破解。截获网络信息往往比登入数据库找到密码密文更易操作、更难防范、隐秘性 更高。本文会说明oracle最常见的3个版本的具体算法,但是不会揭露算法内部细节。 二.背景随 着信息通讯的发展,网络变得越来越复杂,同时也越来越不安全。如下图所示:从客户端到数据库的过程中,攻击者有越来越多的攻击目标选择。无论在哪一环节成 功对网络进行拦截或者监听都会获得oracle数据库和客户端之间的通讯包。如果通讯包中恰好含有用户信息,如果不进行加密处理这将是灾难性的事件。本文 依oracle的3个版本为例(9i 10g11g)。分别说明核心通讯内容加密的方法和发展趋势。三.oracle加密原理当 Oracle发起接后,Oracle客户端向oracle数据库发送自己版本号,包含的加密算法等信息。最终2边确定使用什么加密算法。然后进行 O3logon验证。O3logon验证是一种查询-响应协议,他利用DES加密技术保护这个会话的密钥(sesskey),保证sesskey不会在网 络中传输,所以即使有人监听网络也不会暴露核心密钥。其中O3logon验证的核心是sesskey。首先服务器通过oracle_hash(不同的版本不一样,在9i中是用户名+密码,再进行sha1运算)和sesskey(一个随机数)算出服务器端的S_auth_sesskey.客户端拿到服务器的S_auth_sesskey后通过手上的散列值(这个散列值是用与服务器端一样的方法计算的orcale_hash)算出数据库所选择的随机sesskey。客户端使用sesskey 生成新的散列值,以该值为密钥与明文password进行运算得到秘文 然后将秘文password发送到服务器端。服务器端收到password;通过sesskey生成散列值密钥,对秘文password进行解密得到密码明文,如果与库中存储一致则登陆成功。(参见下图)四.实例上面主要是原理的说明,下面就3个版本的数据库进行分别说明(他们既有相同,也有不同的地方)。oracle9i:本文默认你已经通过某些方式取得了一个含有Oracle登录信息的网络通讯包。省略掉前面和破密关系不大的信息在数据包中寻找到3个相关信息分别是数据库发送给客户端的AUTH_SESSKEY 、用户名明文和AUTH_PASSWORD。客 户端在得到auth_sesskey后,客户端运算出oracle_hash ,首先对orcale_hash做SHA1运算会得到服务器端的散列值。以服务器端散列值为密钥进行3DES解密,可以把服务器端发给客户端的 AUTH_SESSKEY转化成本次回话的sesskey。服务器端在得到auth_password后,把sesskey按照一定的方法做SHA1运算得到客户端散列值。客户端散列值和AUTH_PASSWORD通过3DES可以算出存于数据库中的密码密文。最后客户端散列值和密码密文进行运算可以还原回密码明文。由 于9i是采用把用户名明文和密码明文按照顺序排列在一起对整个字符串做处理生成oracle_hash。由于添加的参数是固定的所以即使不是同一台数据库 只要加入的账号+密码相同则,他们的sesskey是相同的。例如用户名aabbcc密码ccddee和用户名aabbcccc密码ddee是一样的 sesskey。参考代码int ORACLE_Hash (char*username, char *passwd, int passwd_len, unsigned char* oracle_hash){& & char ToEncrypt[256];& & char temp[256];& & DES_cblock iv,iv2;& & DES_key_schedule ks1, ks2;& & int len=0;& & int j,ulen,& & memset (ToEncrypt,0,sizeof(ToEncrypt));& & strupr (username);& & strupr (passwd);& & ulen = strlen(username);& & plen = passwd_& & for (len=1,j=0; j& len++,j++)& & {& && &&&ToEncrypt[len] = username[j];& && &&&len++;& & }& & for (j=0; j& len++,j++)& & {& && &&&ToEncrypt[len] = passwd[j];& && &&&len++;& & }& & len=len-1;& & memset (iv,0,8);& & memset (iv2,0,8);& & DES_set_key((DES_cblock*) deskey_fixed, &ks1);& & DES_ncbc_encrypt((unsigned char*) ToEncrypt, (unsigned char*)temp, len, &ks1, &iv, DES_ENCRYPT);& & DES_set_key((DES_cblock*) &iv, &ks2);& & DES_ncbc_encrypt((unsigned char*) ToEncrypt, (unsigned char*)temp, len, &ks2, &iv2, DES_ENCRYPT);& & memcpy (oracle_hash,iv2,8)& & return TRUE;}注:以上的代码并未使用sha1,而是采用了des,与前文介绍不一致。而且其中deskey_fixed是什么?是下文的fixed31吗?intORACLE_TNS_Decrypt_Password_9i (unsigned char OracleHash[8], unsigned charauth_sesskey[16], unsigned char auth_password[16], char* decrypted){unsigned char fixed31 [] ={0xA2,0xFB,0xE6,0xAD,0x4C,0x7D,0x1E,0x3D,0x6E,0xB0,0xB7,0x6C,0x97,0xEF,0xFF,0x84,0x44,0x71,0x02,0x84,0xAC,0xF1,0x3B,0x29,0x5C,0x0F,0x0C,0xB1,0x87,0x75,0xEF};unsigned chartriple_des_key[64];unsigned char sesskey[16];unsigned char obfuscated[16];int PassLen = 16;ORACLE_TNS_Create_Key_SHA1(OracleHash, 8, fixed31, sizeof(fixed31), 24, triple_des_key);ORACLE_TNS_Decrypt_3DES_CBC(auth_sesskey, 16, triple_des_key, sesskey);ORACLE_TNS_Create_Key_SHA1(sesskey, 16, NULL, 0, 40, triple_des_key);ORACLE_TNS_Decrypt_3DES_CBC(auth_password, 16, triple_des_key, obfuscated);ORACLE_TNS_DeObfuscate(triple_des_key, obfuscated, &PassLen);memcpy (decrypted, obfuscated,PassLen);return PassL}oracle10g10g 在9i的基础上进行了很大的改变。同样还是假设我们已经取得一个含有Oracle登录信息的网络通讯包。省略掉前面和破密关系不大的信息在数据包中寻找到 4个相关信息分别是数据库发送给客户端的S_AUTH_SESSKEY、用户名明文、客户端发送给服务器的C_AUTH_SESSKEY和 AUTH_PASSWORD。
首 先假设取得了oracle_hash,这里不同于9i。9i虽然算了2个不同的散列值。但由于2个散列值都是通过固定数据和oracle_hash算出来 的,所以难免被破解,而且效率不高。从Oracle10g开始,Oracle调整了策略,客户端和数据库分别以oracle_hash为基础生成 S_AUTH_SESSKEY和C_AUTH_SESSKEY。客户端对传过来的S_AUTH_SESSKEY。做AES128解密处理拿到server_sesskey。把server_sesskey和自己的client_sesskey做md5生成combine。用combine生成AUTH_PASSWORD。服务器端最后用combine对AUTH_PASSWORD解密。对比密码,如果一致登陆成功。10g在对于sesskey的处理上取得了长足的改善,但是对oracle_hash的产生上依旧延续了9i的方式。采用用户名和密码进行拼接组成最关键的字符串。对该字符串进行DES处理。参考代码intORACLE_TNS_Decrypt_Password_10g (unsigned char OracleHash[8], unsigned charauth_sesskey[32], unsigned char auth_sesskey_cli[32], unsigned char* auth_password,int auth_password_len, char* decrypted){& & int passlen = 0;& & unsigned char aes_key_bytes[32];& & unsigned char decrypted_server_sesskey[32];& & unsigned char decrypted_client_sesskey[32];& & unsigned char combined_sesskeys[16];& & char decrypted_password[64];& & memset (aes_key_bytes,0,sizeof(aes_key_bytes));& & memcpy (aes_key_bytes,OracleHash,8);& & ORACLE_TNS_Decrypt_AES128_CBC (aes_key_bytes, auth_sesskey, 32,decrypted_server_sesskey);& & ORACLE_TNS_Decrypt_AES128_CBC (aes_key_bytes, auth_sesskey_cli,32, decrypted_client_sesskey);& & ORACLE_TNS_Combine_SessKeys (&decrypted_server_sesskey[16],&decrypted_client_sesskey[16], combined_sesskeys);& & ORACLE_TNS_Decrypt_AES128_CBC (combined_sesskeys, auth_password,auth_password_len, (unsigned char*) decrypted_password);& & passlen = terminate_ascii_string (&decrypted_password[16],auth_password_len-16);& & if (passlen!= -1)& && &&&strncpy (decrypted, &decrypted_password[16], passlen);& &}
oracle11g11g 在10g的基础上进行了一定的改变。同样还是假设我们已经取得一个含有Oracle登录信息的网络通讯包。省略掉前面和破密关系不大的信息在数据包中寻找 到4个相关信息分别是数据库发送给客户端的S_AUTH_SESSKEY、AUTH_VFR_DATA、客户端发送给服务器的 C_AUTH_SESSKEY和AUTH_PASSWORD。
依 旧假设取得了Oracle_hash,11g基本同于10g,客户端和数据库分别以Oracle_hash为基础生成S_AUTH_SESSKEY和 C_AUTH_SESSKEY。客户端对传过来的S_AUTH_SESSKEY。做AES192解密处理拿到server_sesskey。把 server_sesskey和自己的client_sesskey做md5生成combine。用combine生成AUTH_PASSWORD。服务 器端最后用combine对AUTH_PASSWORD解密。对比密码,如果一致登陆成功。11g 最大的变化在生成Oracle_hash上采取了和10g不同的策略。Oracle 11g为了提高Oracle_hash的安全性,多引入了AUTH_VFR_DATA这个随机值。取消了明文用户名。每个会话的 AUTH_VFR_DATA都不同。从根本上避免9i、10g同字符串(用户名+密码组成的字符串)带来的无论哪台机器oracle_hash一致的巨大 安全隐患。参考代码void ORACLE_MixCase_Hash (char*passwd, int passwd_len, unsigned char salt[10], unsigned char*oracle_mixcase_hash) {& &&&unsigned char to_hash[256];& &&&memcpy (to_hash, passwd, passwd_len);& &&&memcpy (to_hash+passwd_len, salt, 10);& &&&SHA_CTX& &&&SHA1_Init (&ctx);& &&&SHA1_Update (&ctx, to_hash, passwd_len+10);& &&&SHA1_Final (oracle_mixcase_hash, &ctx); }
五.总结从 Oracle9i到Oracle11g的变化,我们可以清晰得看出oracle调整的思路,就是更安全。从11g开始,oracle和密码相关登陆信息全 部采用了密文。有效地加大了破解难度。我们身为IT软件从业者和安全行业从业者,应该向Oracle学习,不单单重视软件本身的安全,同时也要对环境有一 定的抵抗力。一定注意防止网络监听,设计SID的时候尽量避免ORCL、TEST等常用名。端口号尽量不要选用1521 和1523来增加扫描难度。使用复杂密码,定期更换密码等都会有助于oracle的安全来源:黑吧安全网&&作者:安华金和
只想做一个勤勤恳恳的搬运工
{:3_57:}{:3_57:}看不懂。
{:2_36:}真的看不懂。
cat.. 发表于
看不懂。没办法。赶紧好好学习写代码去。
请叫我大王 发表于
真的看不懂。没办法。赶紧好好学习写代码去。
初级学术勋章
初级学术勋章
初级热心勋章
初级热心勋章
中级学术勋章
中级学术勋章
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师

我要回帖

更多关于 数据库加密方法 的文章

 

随机推荐