计算机和网络技术的广泛应用,给信息安全提出了更高的要求,在信息系统开发设计过程中,安全性能总是被放在首要的位置,成为信息系统生存的关键。为此我们在数据库加密基础上,设计了一种基于B/S结构四层次的敷椐库加密应用系统。
一、数据库加密的要求
数据库系统能够快捷和有效地完成各种数据操作是网络信息系统正确运行的前提。因此,对数据库进行加密处理应满足如下某本要求:
(1)由于效据库效据保存的时限相对较长,数据能加密存放在数据库中,数据库数据的加密技术对加密算法强度的要求是第一位的;
(2)数据库中数据最大量的使用方式是随机访问,因此加解密效率要求较高,不能引起效据库系统的性能大幅度下降;
(3)数据库组织结构对于数据库管理系统而言不能有大的变动,应尽可能做到明文和密文长度相等或至少相当;
(4)用户授权机制和密钥管理机制要保证用户限的完整性和一致性;
密文数据库在增加安全性的同时,降低了数据的效率。这主要是由于加解密操作要占用额外的间,以及难以对加密后的数据建立索引。这些问题密文数据库的设计提出了更高的要求。
二、加密系统的设计
在传统的三层B/S结构的数据库应用系统中,浏览器与Web服务器之间及Web服务器与数据库服务器之间没有专门的体系与机制来保证效据的安全性。针对该问题,提出了四层体系结构,通过在传统三层B/S结构的应用系统基础上的扩展,引人加,解密模块和安全认证模块来实现系统的总体加密。
1、系统的总体设计
基于B/S结构的网络系统,其应用程序都在服务器靖,客户端只需要Web浏览器,不需开发专用的应用程序,用户通过浏览嚣实现与服务器的信息传递和访问。因此数据加密在Web服务器与后台效据库之间实现,加密系统结构如图l所示。
图1给出了基于B/S结构的数据库四层体系结构。如图l所示,系统被面为四层,即表示层,功能层,数据层,安全层。各模块的主要功能和实现描述如下。
(l)表示层的功能定义
在采用B/S模式的系统中,客户请求(User Request)经IntemeL上传至服务器(Sewer),服务器接收到用户请求后启动系统程序进行处理,再将结果数据封装为HTML文档返回给客户。
(2)功能层的功能定义
与传统三层B/S结构数据库系统的体系结构类似,功能层完成系统的基本业务处理。本系统的1PVeb编程采用JSP编程,JSP的脚本语言是Java语育,JSP很方便地存取可重用的JavaBean组件,可以很方便地将JSP页面的表现和逻辑处理完全分开。
为满足安全性的要求,新的功能层对外的接口包括:VVeb接口、安全认证接口以及敷据接口。 Web服务器通过CGI、ISAPI或直接的Java程序实现用户请求和数据响应。
数据库连接模块由JavaBean构成,主要任务是和数据库进行连接,并读取和存人数据,将用户数据请求转换为相应的SQL语句,对数据库进行查询、添加、删除和修改等操作。
加/解密模块包括SQL语句的语法分析、数据加,解密、加密字典和密钥管理四个子模块,数据字典子模块是将初始化时的一些参数在加,解密时提供给加,解密子模块使用,这些参数一般是单独保存在数据字典表中.数据内容主要包括待加密表内行列信息、待加密字段、效据类型、是否加密等。为了保证加密数据有更高的安全性,选择加密强度比较高的AES加密算法。SQL语句分析子模块是根据数据字典的内容对用户提交的SQL语句进行分析。加,解密子模块是整个功能层的核心部件,通过它来保障敏感数据的加,解密操作。
(3)数据层的功能定义
本系统中数据层包括数据数据库和密钥数据库。数据数据库专门用来存放明文和密文数据:密钥数据库中存放有用户的基本信息.比如用户名、口令、数据密钥、用户密钥对(公钥和私钥)以及用户的权限、待加密字段等,其中口令(MD5加密)、数据密钥、用户私钥均以加密形式存放在密钥数据库中。数据密钥是被用户公钥加密过的密文形式,此时只有用户私钥才能解开获得数据库密钥,为了保证用户私钥的安全。通过用户口令加密私钥,并且用户口令也通过MD5加密算法进行加密,这样密钥的安全性可以得到有效保证。从而保障了整个系统的安全性。在安全性上,数据层提供了与JavaBean连接模块进行数据交换的普通数据接口和与安全认证模块进行用户身份认证信息和密钥交换的安全接口。
(4)安全认证层的功能定义
安全认证层在整个B/S结构的数据库系统的业务处理过程中,处于重要的地位。安全认证模块与9Veb服务器和数据库通过安全接口连接,提供安全服务。该模块通过Intemet直接与客户进行对话。其功能是对用户身份进行验证,防止未授权人员使用系统。如果用户注册成功,则从密钥数据库中获得该用户密钥Key,做为全局变量供后续数据库操作使用。该模块另一功能是对合法用户的数据库操作进行识别,决定哪些数据需要进行加密处理。
2、系统工作流程
(1)用户在浏览器上发出数据存取请求,这些请求通过HTTP协议送到Web服务器上。
(2)Web服务器收到请求后,对请求用户的身份和类型进行验证。若用户请求合法,则自动从认证模块(第一次登录)下载公钥证书,对于非常重要的数据,用户可使用私钥对数据进行签名,然后用公钥加密,密文传送到XVeb服务器,确保敏感数据在客户端浏览器和Web服务器之间传递的安全。
(3)Web服务器在接受到用户请求后,将请求交给加,解密模块进行处理。
(4)SQL语句的语法分析子模块对Web服务器传过来的SQL语句进行分析,对照数据字典子模块中的信息分析该语句中是否涉及到待加密字段。如果有,则执行加密操作,加密的密钥通过安全认证模块从密钥数据库中下载,并通过安全认证模块和加/解密模块之问的安全接口进行密钥传输:如果没有,则将数据通过JavaBean连接模块直接存入数据数据库。
(5)加,解密子模块对数据加密完之后,通过JavaBean连接数据库存入数据数据库。
(6)对于需要解密的数据,解密的密钥也需要通过安全认证模块从密钥数据库中下载,并通过安全认证模块和加,解密模块之间的安全接口进行密钥传输。加,解密子模块对数据通过数据密钥解密之后,将数据传递给Web服务器。Web服务器通过安全认证模块下载用户的公钥和私钥,并通过它们之间的安全接口传递,先用私钥对数据进行解密。然后再用公钥进行核实签名,最后,Web服务器将明文数据传递给客户端浏览器显示。
(7)对于不需要解密的数据,加,解密子模块直接将数据传递给Web服务器。Web服务器通过安全认证模块下载用户的公钥和私钥,并通过它们之间的安全接口传递。先用私钥对数据进行解密然后再用公钥进行核实签名,最后,Web服务器将明文数据传递给客户端浏览器显示。
小知识之B/S结构
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser英 ['braʊzə]美 ['braʊzɚ]),如Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。