动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   数据库 → 阅读文章
  

 Oracle如何操作数据的加密

作者来源:51CTO.COM整理  
阅读 数 562 人次 , 2006-3-18 11:52:00 

Oracle 应用服务器应用程序使用 Sec_Manager.Secure_Package 程序包中的例程存储加密格式的私人数据(如使用 Secure_Package.Secure_Data 存储 CARD_NO 数据)。根据create_packages.sql中描述的定制加密程序包的定义,对 CARD_NO 列的访问已被函数调用所取代,该函数调用的参数是要存储在列中的值以及用于数据解密的密钥。

例如,要将“a1b2c3d4”用作加密密钥,必须将最初如下所示的典型 INSERT 语句

insert into CUSTOMER (NAME, CARD_NO) 
values ('Jane Doe', '1234123412341234'); 
转换为:
insert into CUSTOMER (NAME, CARD_NO) 
values ('Jane Doe', Sec_Manager.Secure_Package.Secure_Data('1234123412341234','a1b2c3d4')); 
同样,Oracle 应用服务器应用程序还使用 Sec_Manager.Secure_Package 中的例程读取加密格式的数据,如 CARD_NO 数据的 Secure_Package.Clear_Data。然后利用插入值时使用的加密密钥来以明文格式取回受保护信息。这种情况下,必须将最初为如下所示的典型 SELECT 语句
select NAME, CARD_NO 
from CUSTOMER;
修改为:
select NAME, Sec_Manager.Secure_Package.Clear_Data(CARD_NO,'a1b2c3d4') 
from CUSTOMER;

当完成所有开发(希望由值得信任的人员完成)后,还可以将升级后的代码加密,以便甚至连升级脚本的数据库管理员都无法确切了解安全性的实现方法。通过 Oracle 提供的实用程序实现加密,可以使用如下所示命令

wrap iname=Secure_Package.sql oname=Secure_Package.sec
打包后,可以在 SQL*Plus 提示符后象执行任何明文脚本一样执行 Secure_Package.sec,且 Oracle 引擎还将对其进行解释。同一概念也可应用于任何其他与安全性相关的 PL*SQL 脚本。此方法不但禁止了参与代码升级的人员(数据库管理员、开发人员、支持和管理人员)查看程序包内容,而且程序包内容还以加密格式部署到数据库中,因此以后要尝试破解这些程序包内容是很难的。

即使具有数据库管理员权限的入侵者将 CONNECT 权限授予安全对象所有者 Sec_Manager 以查看保护和加密程序包的内容,也不会有任何明文会存储在这些对象的数据库中。由于 Oracle 未提供任何“解包”实用程序,因此入侵者将必须破解 Oracle 的加密算法才能够查看程序包内容。

即使所有安全措施都已经到位了,了解是否对机密数据进行了未授权访问仍很重要。最简单的方法是使用内置的数据库审计功能在表级别监视对受保护数据的访问(SELECTINSERTUPDATEDELETE),而不管请求事务的数据库连接如何,命令如下:
audit insert, update, select on SHIP2004.CUSTOMER;
但使用 Oracle Fine Grained Auditing (FGA),您可以进一步改进访问监视以最小化处理开销并提供有意义的信息。enable_fga.sql 中提供的示例使用 DBMS_FGA 程序包启用基本的审计策略。数据库中的内置审计机制禁止用户绕过审计,从而确保了它的精确性。可以在 DBA_FGA_AUDIT_TRAIL 视图以及 DBA_COMMON_AUDIT_TRAIL 视图中查看审计记录,在策略指定 audit_trail = DBMS_FGA.DB_EXTENDED 的情况下,审计记录甚至可以包含 SQLBINDSQLTEXT 信息。

可以使用 Oracle 提供的功能轻松地增强此处提供的示例,从而加入电子邮件或寻呼机通知和激活条件,以只生成特定事件的审计记录。

 本文Tagsoracle  md5  加密  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:在linux上单机模拟Oracle 10g RAC集群(1)
· 下一篇:在Linux x86上安装Oracle数据库10g(1)
· Oracle更新应用服务器和Java工具
· SQL Server数据库技术(14)
· Access数据库技术(32)
· 在服务器上安装、使用MySQL的注意事项(2)
· 一个批量删除临时表的sh用于informix


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077