电子商务系统是基于互联网平台的,从技术角度来说,互联网是存在许多不安全因素的全球性网络。电子商务本身的特点包括一开放性、虚拟性、网络化,这就对电子商务系统的安全性提出了严格的要求,就是要合理地解决网络开放性与安全性之间的矛盾口数据库是电子商务系统的一个基础平台,其中保存有大量重要数据,而且为许多用户所共享,因而数据库的安全问题也是开发电子商务系统时非常重要的问题。
一、加密数据库模型的框架设计
模型采用典型的Client/Server结构。在客户端,我们要实现一个加密字典管理程序和一个测试平台。加密字典管理程序的功能是:根据加密需要对加密字典中的数据进行管理,例如对加密字段描述信息进行维护、对授权用户信息进行维护、以及对数据密钥进行维护,客户平台则完成对加密数据库授权用户的身份验证、数据库用户私钥的解密,加密字段数据密钥的解密,以及提出查询需求。在服务器端,我们要实现一个加解密引擎,处理从客户靖发来的对加密数据库的访问请求并将结果返回给客户端,模型的总体框架如下图:
应用系统创建数据库应用表之后,用户通过运行图形化界面一加密字典管理程序,定义哪些应用表中的哪些字段的数据需要加密。加密字典管理程序将把这些用户定义信息存入加密字典中,应用表加密后,用户还可以使用加密字典管理程序修改加密定义,重新指定加密表或加密字段。数据库加密、解密引擎是该系统的核心部件,负责在后台完成数据的加密、解密处理。当应用程序向数据库插入或更新数据时,加解密引擎根据加密字典中的信息,确定当前数据是否需要加密,如果需要加密,则对数据加密后再写入数据库中。同样当应用从数据库中检索数据时,加密系统根据加密字典中的信息判定是否需要解密,如果需要解密,对数据进行解密以后再交给应用,存储在数据库中的数据仍然是密文。加密字典管理程序是一个特殊的数据库应用。加密字典管理程序需要对数据字典进行读操作,对加密字典进行写操作。数据字典和加密字典存储在数据库中并且是不加密的,为了加快执行速度。
加密字典管理程序执行这些操作时不通过加密、解密引擎直接与客户端平台通信。另一面,当用户提交数据加密的定义要求时,加密字典管理程序通过加密、解密引擎,实现数据明文与密文之间转换的功能。
当用户通过测试平台登录到加密数据库并成功后,测试平台会与加密字典进行交互,从加密字典中找到该用户的加密形式私钥,并解密得到用户私钥。当要访问到某个加密字段的时候,测试平台也会从加密字典中找到相关的数据加密拷贝,并解密得到数据密钥。当在客户端的测试平台上执行涉及到加密字段内容的SQL语句时,测试平台会与加密解密引擎交互,将查询需求转由加解密引擎去处理。然后,加密解密引擎与加密字典以及DBMS核心交互,完成对数据的加解密,并将正确的结果返回到客户端。
当在测试平台上提出的数据库访问请求不涉及到加密字段时,客户端测试平台会跨过加密解密引擎,直接与DBNIS交互,完成对普通数据的访问。以下对各个设计模块分别进行描述。
二、加密字典管理
(一)结构设计
加密字典管理是管理员定义加密字段的工具,它提供了用户管理、加密字典配置、信息检索、加密字典权限管理等功能,利用数据库加密解密引擎完成对数据的加解密处理。数据库加密系统对加密数据的所有操作均需要加密字典的支持,都需要以加密字典为基础。在加密字段的添加和删除过程中,需要调用加密字典配置、信息检索以及加解密引擎模块来实现。其流程如图2.1所示。
(二)用户登录
用户登录是数据库管理员启动加密字典管理程序质必须通过的身份验证模块,该模块防止未授权人员使用加密字典管理程序,确保加密字典的安全。它主要包括用户登录、身份验证、口令加密功能。用户身份认证的流程如图2.2所示,以提高系统用户访问的安全性和可靠性。
(三)加密字典配置
管理员首先通过加密字典配置划分应用程序的用户类、数据类以及每个用户类所拥有的数据类的权限信息,并给合法用户授权;然后按照配置调用密钥管理模块完成用户密钥、用户类密钥以及数据类密钥的生成分配以及存储。加密信息配置表存放由管理员根据用户需求定义的加密配置,实现向加密字典表中添加,更改或删除加密字段的功能。它调用表信息检索模块和加密解密引擎,完成一个表的加密定义修改任务。该模块是加密字典管理程序的主要功能模块。
(四)信息检索
该模块从系统的数据字典中检索出与某个表有关的各种信息,放入结构变量,这些信息包括表名、表标识、主键定义、字段定义等,供其他模块使用。信息检索函数的输入是字段名称和表名称,输出是满足条件的表信息结构体,该模块被加密字典配置模块调用,共同完成加密字段定义的变更。
三、数据加密解密引擎客户端测试平台的设计
在客户端设定一个测试程序,来完成访问加密数据库中数据的功能。在向服务器端发送真正的查询或其它操作的请求之前,客户端必须先完成用户登录等一系列工作。在我们的设计中,当一个用户输入登录信息(包括加密数据库的信息,用户名,口令)之后,程序会做以下工作。
(1)输入的信息去与数据库建立连接,若建立连接成功,则说明用户的用户名与口令相符,用户输入的口令有效;如果建立连接失败,则用户名与口令不相符,终止并退出程序。
(2)输入的口令进行加密,执行ldD5加密算法,生成口令的MD5加密值。
(3)根据用户名生成一个SQL查询语句:
“SELECT encrypted_private_key master. dbo. Authorized User FrOm WHERE authorized_login_name=‘"&username&”’ ”
在应用程序中执行该SQL语句,就可以从加密字典中的Authorized User表取出用户的密文形式私钥。当数据库用户还不是加密数据库合法用户时,就不具有公钥/私钥对。此时,客户端程序会给出提示。
(4)针对上一步骤取到密文形式私钥,执行DES算法进行解密,解密密钥是步骤2得到的口令MD5加密值。得到用户的私钥,存入应用程序的全局变量private_key中。
在客户端程序中要访问到某个加密字段时。首先客户端程序会先生成一个SQL语句,去查询加密字典中的Encrypted_Table表、Encrypted_Column表、Authorized User表中的Encrypted_Key表。该SQL语句形式为:
“ SELECT k.encrypted_data_key Frommaster. dbo. Encrypted_Table t, llaster. dbo. Encrypted._ Columnc, master. dbo. Encrypted_Key kWHFRE
k. authorized_login_ID=I. authorized_login_ID and
k. encrypted_column_ID=c. encrypted—column ID and
t. encryptcd_table_ID=c* encrypted_table_ID and
t.original_table_name=川&tabkename&"’and
1.authorized_login_name=i一&username&”’
这样,根据要查询的表的表名,以及用户名,就可以得到该表中针对加密字段的数据密钥(密文形式)。要申明的一点是,如果数据库用户不是加密字段的授权用户,则取到的将是空值。
在客户端程序中执行RSA算法,对取得的密文形式数据密钥进行解密,解密密钥就是存储在全局变量private_key中的用户私钥,得到数据密钥,存入全局变景data_key中。
执行用户的访问要求。当涉及到加密字段的访问时,服务器就会利用视图机制去执行查询操作,或者是执行执行插入/修改操作。当视图或触发器中需要用到数据密钥对密文数据进行加密解密的时候,可以从应用程序上下文中取得。
小知识之电子商务系统
电子商务通常是指是在全球各地广泛的商业贸易活动中,在因特网开放的网络环境下,基于浏览器/服务器应用方式,买卖双方不谋面地进行各种商贸活动,实现消费者的网上购物、商户之间的网上交易和在线电子支付以及各种商务活动、交易活动、金融活动和相关的综合服务活动的一种新型的商业运营模式。