您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页利用Java安全体系结构解决数据库安全性问题

利用Java安全体系结构解决数据库安全性问题

来源:华佗小知识
维普资讯 http://www.cqvip.com 2002年6月 第l9卷第2期 沈阳航空工业学院学报 Journal of Shenyang Institute of Aeronautical Engineering Jun.20o2 VoI_l9 No.2 文章编号:1007—1385(2002)02—0046—04 利用Java安全体系结构解决数据库安全性问题 张玉杰 陈晓峰 吴杰宏 李美玉 (1.东北大学信息学院,辽宁沈阳110006;2.沈阳航空工业学院安全工程系,辽宁沈阳110034) 摘要:在wWw的三层结构中,数据库安全是应用程序总体安全的关键。本文分析了通过网络 访问数据库不安全的因素,提出了一个合理的解决方案。 关键词:Java;数据库;安全性;加密;解密 中图分类号:TP393.08 文献标识码:A O 引 言 在wWw三层体系结构中,数据库服务器在 Web服务器或应用服务器上执行。客户端(包括 浏览器)用数据库驱动器向数据库服务器发送 SQL语句,并从服务器接收结果集和其它响应。 比较典型的是Java小程序用JDBC驱动器与数据 (2)黑客可能伪装成合法数据库客户机,猜 测数据库连接口令或拒绝合法客户机访问。 (3)黑客可能占有数据库客户机,恢复存储 的口令,用这个客户机破坏数据库中的数据。 (4)黑客可能占有数据库服务器,披露敏感 信息和口令,修改关键数据或拒绝合法客户机访 问。 库服务器通信。JDBC提供了Java程序的公共数 据库编程API,要使用JDBC连接数据库服务器, 需使用java.sql包中的类DriverManager。此类是 用于管理JDBC驱动程序的实用程序类。具体连 接方法如下: DriverManager.registerDriver(new oraclejdbc. 防止数据库受以上类型的攻击是很难的,以 下结合Java的安全体系结构提出解决方案。 1 Java安全体系结构 图1显示了Java安全体系结构的标准组件。 在示图的下半部分,是Java 2安全体系结构核心 driver.OracleDriver()); DriverManager.getConnection(”jdbc:oracle: 和Java加密体系结构(JCA,Java CryptographyAr- chitecture),两者构成Java 2平台(P1atform)所带 的Java 2安全平台。在上半部分,是于Java 2平台而又与Java 2平台的不同方面相关的标准 Java安全扩展。 oci8@“+”服务名“,”“用户名”,“口令”); 从中可以看出数据库服务器需要用户名和口 令才能建立数据库的连接。但是,即使口令保护 也不太安全。如果客户端和服务器之间的口令不 加密,则很容易被截获和破坏。 一Java安全体系结构核心包括字节码验证器、 类装入器、安全管理器、访问控制器、权限、策略 般来说,JDBC提供的安全只限于连接数据 和保护域。 Java加密体系结构JCA提供了用Java平台 进行基本加密功能的工具。加密功能的范围包括 用基本加密函数与算法保护数据完整性,防止破 坏数据。JCA中还有标识数据与代码源的加密签 名生成算法。 Java加密扩展(JCE,JavaCryptographyExten・ 库服务器的口令。但是,用JDBC生成web应用 程序时,其数据库安全中一个最基本的问题是数 据库客户机与数据库服务器之问的连接的安全 性。通常,客户机通过未加密的TCP/IP连接方 法连接服务器,用明文口令在数据库中验证。这 通常会暴露几个重大安全隐患: (1)第三方可能监视或篡改客户机与服务器 之间的通信,口令和数据在传递时可能暴露。 收稿日期:2002—03—04 sion)是辅助加密工作的Java安全扩展。加密的 英文单词有两个:encryption与cryptography,两者 可以互换使用。但Sun公司指定后者用于提供 JCA支持的基本数据完整性与源标识功能,而前 者用于加密数据块以增加保密性的功能,直到后 作者简介:张玉杰(1968一)女,辽宁抚顺人,讲师 维普资讯 http://www.cqvip.com 第1期 张玉杰等:利用Java安全体系结构解决数据库安全性问题 47 认证 (J从S) l 服务 披全套接扩(JSSE)展II (JcE) l展I Jav~ 一 a始扩展 Java 2.0安全体系 结构核心 Java加密体系 结构(JCA) 图1 Java安全体系结构的标准组件 来由接收者解密数据。 台,提供了根据验证用户标识资源访问的标 准方法。 Java安全套接扩展(JSSE,Java Secure Socket Extension)作为Java安全平台的扩展。 JSSL提供了用安全套接层(SSL,Secure Sock— et Layer是最常用的基于加密的完整性与保密性 协议)建立Java应用程序的标难接口和基础参考 版本。JSSE还提供了支持传输层安全与无线传 输层安全协议等其它安全套接协议的标准接口。 Java验证与授权服务(JAAS,JavaAuthentica— tion and Authorization Service)扩展了Java安全平 用户验证 广——]2数据库的安全措施 数据库的安全问题是大多数公司最关心的问 题。由于数据库可能包含公司经营的敏感信息, 因此一定要以安全方式保证只让可信赖人员访问 这些信息。在www三层结构中采取了如下措 施(如图2)。 数据库客户机验证 JDBc厂] 嚣赢}. 服务器宿主 图2 wWw三层结构模型 2.1保护数据库连接 的协议中操作。这样,可以把SSL看成TCP/IP 与HTFP或11OP等高层通信协议之间的层,提供 安全通信解决方案。 目前,SSL v3是广泛使用的最新SSL标准。 Intemet工程任务小组(IETF,Intemet Engineering— Task Force)开发了TLS协议扩展SSL v3协议,在 保护数据库连接可联合多种方案:对客户机/ 服务器通信使用专用子网、数据库客户机与数据 库之间加密通信、保护数据库客户机和服务器、使 用防火墙、部署侵人探测系统、加固客户机与服务 器平台、验证客户机与服务器等。本文主要介绍 数据库客户机与数据库服务器之间的加密通信。 对数据加密可以防止数据在客户机与服务器 SSL算法的验证方面有所改进。WTLS协议是无 线通信中的TLS协议。SSL v3的基本算法序列 如下: 之间传输时被修改或披露,还可以让客户机向服 务器验证,服务器向客户机验证。SSL是客户机 (1)SLLClient连接SSL Server。 (2)SLL C1ient向SSL Server发送一个客户 端Hello消息,包含SSL版本号、客户端支持的加 密方法和随机字节流。 (3)SLL Server向SSL C1ient发送一个服务 与服务器之间加密通信流的常用方法。JSSE提 供了标准API用来包装SSL客户机与服务器使用 的SSL协议,JSSE可以在JSSE标准API中插入 特定SSL实现方法。SSL在TCP/IP上提供安全 服务,如通过数据加密实现保密性,通过MAC算 法实现完整性,以及可选套接客户机及套接服务 器的验证和非否认。尽管SSL在TCP/IP之上操 作,但也可以在HTFP与IIOP等其它基于TCP/IP 器方Hello消息,包含SSL版本号、所选加密方 法、对话ID和随机字节流。 (4)SSL Server向SSLClient发送一个服务器 X.509证书。 维普资讯 http://www.cqvip.com 沈阳航空工业学院学报 第19卷 (5)(可选客户机验证)SSL Server向SSLCIi— 取出流名和Cipher对象作为变元。 2.2保护用户连接 ent发送一个证书请求。 (6)SSL C1ient用服务器证书验证SSL Serv— 在某些情况下,数据库客户机可以实现为小 程序,在用户浏览器中运行。这对Internet上运 行的Web应用程序很不安全,因为数据库服务器 er,检查证书的有效日期,确定签名证书机构是否 可信,验证签名,并可确定服务器证书域名是否符 合服务器域名。 本身可能受到来自Internet的攻击。用户应当用 不同口令访问Web应用程序。这个口令可以建 立数据库连接,这种方法要求各个用户帐号在数 据库服务器中建立。下面介绍验证用户与访问控 制。 2.2.1 验证用户 (7)SSLClient产生预制秘密密钥,并用服务 器公开密钥将其加密。 (8)SSLClient将加密的预制秘密密钥发给 SSL Server。 (9)(可选客户机验证)SSL C1ient将客户机 X.509证书和另一个签名数据发给SSL Server。 (10)(可选客户机验证)SSL Server用客户机 证书验证SSL C1ient,检查证书的有效日期,确定 向数据库验证用户的方法有多种。最常用的 方法是让用户向Web应用程序验证,Web应用程 序用公用服务器方客户机向数据库验证(如图2 签名证书机构是否可信,并验证签名SSLClient。 (11)SSLClient与SSL Server用预制秘密密 钥产生成主密钥。 (12)SSLClient与SSL Server从主密钥 产生秘密对话密钥。 (13)SSLClient与SSL Server交换密码指定 所示)。数据库连接口令通常在Web或应用程序 服务器上的数据库客户机中保存。这种方法有下 列优点: (1)数据库管理员只需要建立和管理一个 Web应用程序访问数据库的帐号。 (2)用户无权直接访问数据库,只能与Web 服务器交互。服务器上的客户机控制所有数据库 访问。 消息,表示后续消息用秘密对话密钥加密。 (14)SSLClient与SsL Server交换用秘密对 话密钥加密的握手完成(handshake--finished)消 息,表示可以开始SSL对话。 JAAS是一种特殊类型的基于口令的认证系 统,在该系统中用户口令对基于JAAS的服务器 来说是知道的。因为基于JAAS的服务器和客户 机都知道口令,所以它们可以使用口令作为一个 其中所选加密方法主要根据所要传输的数据 的种类,对于数据库记录中的字段,则应选择DES (Date Encryption Standard)算法的ECB(E1ectro— 秘密的对称密钥对在它们之间发送的消息进行加 密和解密。 nie Codebook)方式。ECB方法的好处是密文中 每个8字节块是相互的。如果密文传输过程 中发生错误,则这个错误只影响8个字节。这样, 基于口令的身份验证十分容易实现。但是, 口令类似于一个秘密密钥,这是因为安全会话的 双方都必须有秘密值(即密钥或者口令)的一个 副本。口令必须从数据库客户机的位置传递到 Web认证机的位置,如果数据库客户机和认证机 密文的不同部分可以解密。例如,如果数据 库记录的字段按8字段边界对齐,则可以在其它 字段仍然保持加密的时候解密记录中的某个字 段。 之间的路径不能提供机密性保护的话,口令可能 会被黑客窃取。所以密钥的存储和口令的加密是 十分重要的。 JCE支持DES算法。DES通过jav ̄x.crypto 包导人。SecretKey接口封装DSE密钥。Secret— Key对象由KeyGenerator类产生,将算法名 密钥存储是密钥管理的一个关键方面。产生 秘密密钥(或公开/私有密钥对的私有密钥)之 后,要将密钥放到记忆中或以某种方式存储。由 于大多数人记不住密钥,因此通常应存储密钥。 大多数情况下,密钥存放在磁盘中,这样就很容易 被访问这台计算机的人窃取。如果计算机连接到 (DES)传给static getlnstance()方法。通过将密 码参数(ECB adding)传给Cipher类的static getIn— stance()方法生成的Cipher对象。通过调用init ()方法并指定加密方式(ENCRYPT—MODE与 DECRYfrr—MODE)和SecretKey对象,初始化ci— pher对象。CipherOutputStream对象进行加密并 将密文写入输出流。CipherOutputStream构造器 Internet,则黑客可能访问这台计算机和其中存放 的密钥。 维普资讯 http://www.cqvip.com 第1期 张玉杰等:利用Java安全体系结构解决数据库安全性问题 49 密钥存放在磁盘中的一个保护措施是加密。 许多应用中,PBE还用随机值(称为盐)增加解密 可采用基于口令的加密(PBE,PasswordBased En- 口令加密文件的难度。盐与口令组合,一起加密 cryption),PBE用口令或暗号产生加密密钥。在 文件,如图3所示。 图3用盐值增加解密口令加密文件的难度 JCE支持RSA公司的PKCS#5(Public Key Manager类提供了checkPermission()方法,check. Cryptography Standard#5)版本:PasswordBased En-Permission()方法简单地将调用委托给Access- cryption Standardo用Cipher类指定时,算法名为 Contorller与AccessControllerContext类o Access. PBEWithMD5AndDES,这个算法在CBC(Cipher Controller表示确定允许或拒绝访问的决策者 Block Chaining)方式中操作,支持PKCS5Padding。 (checkPermission),设计那些代码优先运行的管 PBE通过javax.crypto.spec的PBEKeySpec 理者(doPrivileged())和取得当前访问控制上下 与PBEParameterSpec类支持。PBEKeySpec对象 文环境以便在其它上下文环境中使用(getContext 作为变元传人SecretKeyFactory的genemteSecret ())的方式。AccessControllerContext类封装与访 ()方法,生成SecretKey对象。PBEKeySpec()构 问控制有关的上下文环境,如特定堆栈执行状态。 造器取一个char数组作为变元。GetPassword() 这样,上下文环境可以从其它上下文环境取得 方法返回生成的PBEKeySpec对象的口令。 AccessControllerContext对象的句柄,确定该上下 PBEParameterSpec类指定初始化PBEWith- 文环境中是否允许访问。 MD5AndDES Cipher对象的盐和迭代次数值。盐 2.3 审计 作为字节数组传递,迭代次数作为int值传人 任何安全应用程序的主要问题是安全审计。 PBEParameterSpec()的构造器。GetSah()与 对于Web数据库应用程序,审计可以在Web服 gedterationCount()方法返回这些值。 务器上进行。安全审计通常集中在Web服务器 2.2.2访问控制 的访问日志。检查审计数据中可能的安全破坏, 每个用户对数据库具有相同或不同的访问权 一定要生成一系列脚本,搜索审计数据和确定表 限,通过访问控制可确定用户对数据库的访问权 示数据库非法访问的事件。许多情况下,审计数 限。为了开发更可移植的访问控制,可以在数据 据可能包含安全敏感信息,如用户口令、财务事务 库客户机上实现它们。此方法实现访问控制的好 和秘密相关数据。 处是访问控制可以用Java实现,从而保证了平台 Java Security Service中安全关键操作的审计 性。 需要一个审计决策,根据特定审计事件确定是否 核心Java的安全体系结构的安全管理器组 需要审计。如果需要审计,则把审计事件数据、调 件负责确定是否允许某个访问特定重要资源的请 用主体证书和时间都写入审计通道。首先要用在 求。为此,安全管理器要考虑发出请求的源(Java 目标服务器方的Current.audit-decision()方法 类)。由于许多重要的资源的访问首先要从请求 从Current对象取得org.omg.SecurityLevel2.Au一 的Java类传递到核心Java类,因此核心Java类可ditDecision对象。还要从Current对象取得接收 以首先询问安全管理器是否允许这个请求。如果 客户机证书。然后构造org.omg.SecurityAu一 拒绝访问,则抛出java.1ang.SecurityException。否ditEventType对象,包装可以登记特定事件类型。 则调用正常进行。 这个事件类型和一组事件类型选择器一起传人 iava.I ang.SecurityManager类包含在Java,机 AuditDecision.audit-needed()方法。如果Audit- 器中实例化的安全管理器的关键接口。Security—Decision.audit-needed()方法的返(上转4l页) 维普资讯 http://www.cqvip.com 第2期 赵文成等:大时间常数传感器模型的在线辨识与补偿 41 resolution auto—self—calibration capacity meter.1 995,Proceed- 参考文献: [1]Zhao Wencheng,Yan Xuelong,Wang Fengzhu.A discriminate of quasi—direct temperature measuremenL Proceedings of Beijing International Conference on System Simulation and Scientiic fComputing:1989 ings of the 1 st International Symposium on Test and Measure— ment,Aug 10—14 1995,Taiyuan,China [3]Song Minggang,Li Yu ̄hong,Li Chengquan,Zhao Wencheng,Gao Feng.Design of intelligent fuel system,Proceedings of the 1999 3rd International Symposium on Test and Measurement.ISTM一 [2]Zhao Wencheng,Yan Xuelong,Yao Li.Pocket wide range high 99,Jun 2—4 1999,Xihn,China The on・--line identiicatifon and compensation for model of sensor with greater time constant ZHAO Wen——cheng LIN Feng (Shenyang Institute of Aeronautical Engineering,Liaoning Shenyang 1 10034) Abstract:Since the temperature sensor wih greatter time constant makes the real—time control inconveninet, on—time identification and compensation for model of sensor was given in this paper.This method can be used or other kifnds of sensors with greater time constant. Keywords:great time constant;online identification;online compensation (下接49页) 网安全的关键技术。大多数Wed应用程序中要 达到高度安全性很不容易,良好的安全性要求认 真的规划、良好的结构、合理的设计和几乎无缺陷 的实施方法。 参考文献: [1儿美]Paul J,pernne,etr al,张志伟,等译.J2EE构造企业系统. 北京:清华大学出版社,2001.6 3结束语 Internet提供了巨大的机会,但也带来了不小 的风险。作为Wed编程语言,Java是开发安全 Wed应用程序的核心。Java小程序可以将执行程 序的内容传递到Wed浏览器中,JSP和servlet可 以安全地处理浏览器的请求,JDBC提供了让 Wed应用程序安全访问数据库的功能,Java Secu. irty API及其安全相关扩展使完全分布式Wed应 用程序可以安全地实现和执行。如果要开发安全 [2][美]Jamie Jaworski Venkata,et al,邱仲潘译.Java安全手册. 北京:电子工业出版社,2001.8 [3][美]H.M.Deitel P.J.Deitel,袁晓靖,等译.Java语言程序设 计大全.北京:机械工业出版社,1997 Wed应用程序,则Java非常合适。Java的大量 API和集成安全特性使它成为实现外联网与内联 The resolution of database security problems by safety architecture ZHANG Yu—jie CHEN Xiao—ferg WU Jie—hong LI Mei—yu (1.Information Engineering College,Northeast University;Liaoning Shenyang 110006;2.Shenyang Institute of Aeronautical Engineering,Liaoning Shenyang 1 10034) Abstract:In web architecture,database security is the key problem of application program security.This paper analyzes the unsate factors due to accessing database via intemet and brings forward a reasonable solution. Keywords:java;database;security;encrypt;decrypyt 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务