数据库加密设计.docVIP

  • 15
  • 1
  • 约1.12万字
  • 约 15页
  • 2016-02-01 发布于江苏
  • 举报
数据库加密设计.doc

第一章 加密数据库解决方案 加密数据库整体框架 数据库输入模块 2.1 数据输入模块流程图 数据库输入模块的加密过程主要把输入的数据按照要求加密成密文然后存储到服务器数据中,流程如下: 2.2 数据的增删改问题 加密数据库上的数据增删改流程如下: 如上图所示:在客户程序中隐藏一个密文数据窗口(或存储对象),明文数据窗口缓冲区中的数据要经过加密后保存到密文数据窗口缓冲区中。只要明文数据窗口做了任何改动,密文数据窗口都要跟着做相应的改动,所以应该在明文数据窗口变化事件中做相应的变换程序。 当用户提交数据时,明文数据窗口把数据提交到本地数据库中,密文数据窗口把密文数据提交到服务器数据库中,保证用户数据的一致性。 数据库查询模块解密过程 数据库查询模块的解密过程主要按照用户给定的查询要求,从服务器数据库中提取用户指定的表,在本地解密恢复成明文,然后导入到本地服务器数据库中,让用户的查询作用于本地的明文,返回查询结果,流程如下: 查询模块在做任何查询之前,必须把服务器端的密文数据导入到本地数据库中并且恢复成明文。导入数据有如下几种方式: 使用临时文件。利用Sybase提供的BCP工具,把服务器端的加密数据下载到客户机上的一个文本文件中,然后利用解密程序解密该文本文件,并且生成一个新的明文的文本文件。把明文文本文件的数据利用BCP导入到本地库中。该方法的优点是传输、解密、入库速度非常快;缺点是安全性差,因为明文文本文件非常容易受到攻击。 使用客户端数据库游标。在PB程序中,利用客户端游标把服务器数据库中的数据一条一条下载到本地,并且逐个字段进行解密,然后把解密的记录插入到本地库中。该方法的优点是安全性好,因为明文数据仅在应用程序和本地库中存在,不会在操作系统中留下痕迹;缺点是速度太慢。 使用数据窗口缓冲区。需要做程序测试。 密钥的管理 数据库加密算法分为两类。一类算法是用来加密数据库数据的,考虑到数据库中信息量比较大,另外用户要求的响应时间很短,所以这类算法既要保证安全又要保证加/解密数据的速度,我们选用对称加密算法,例如DES,IDEA算法;另一类算法是用来加/解密密钥的算法,这类算法要有高度的安全性,加解密速度要求并不是很强,因为密钥串通常很短,我们选用较为安全的公/私钥算法RSA。 加/解密数据库数据的密钥记为DBK, RSA公钥记为PUBK,RSA私钥记为PEAK。 其中DBK,PUBK保存在服务器中,DBK用PUBK加密成密文,而PUBK自身保存成为明文;PEAK存于钥匙盘当中,用户妥善保管。 4.1 操作用户修改自己的口令 操作用户修改自己的口令只需用该操作用户的公钥重新加密新口令,然后替换原有的口令。 4.2 操作用户修改密钥 操作用户修改加密公钥,分如下几步: 需要原有的私钥盘,解密口令恢复成口令明文; 接受新的公钥,生成相应的私钥匙; 生成新的私钥盘; 用新的公钥加密口令明文生成新的密文 4.3 系统管理员修改服务器数据库加密密钥 考虑到服务器数据库的安全性,系统管理员必须按照一定的期限需要修改服务器数据库加密密钥,步骤如下: 超级用户备份已有数据库的所有密文数据到磁带上,包括用户口令,权限表; 在相应的数据库中创建相应明文表以及密文表的备份; 用原有的密钥解密相应的密文,把解密后的明文输入到相应的明文表中; 清空所有的密文表; 使用新密钥加密明文表中的数据,把加密后的新密文输入到相应的密文表中; 分别使用所有用户的公钥加密新的密钥,然后替换已有的密钥; 保管好数据库的磁带备份; 4.4 超级用户申请自己的公钥和私钥 系统初始化时,服务器超级用户为sa, sa的口令为空。系统管理员可以通过系统界面申请另外一个超级用户账号比如说superadm,使用新的口令,并且申请超级用户superadm的公钥和私钥,使用sa身份把superadm的信息写入到操作用户表中;然后使用superadm身份登录,取消sa超级用户的角色。操作用户表的操作应该通过存储过程来实现,避免用户直接访问数据字典表。 超级用户创建数据库用户账号和口令时,需要对数据库用户口令用超级用户公钥进行加密。 5. 本地数据库的安全管理 由于服务器数据库中的数据为加密后的数据,有很多复杂查询难于实现,例如非等值选择,非等值连接等,必须把加密后的数据解密成明文然后在做查询。解密过程如果在服务器端实现有三点不利因素: 服务器大量时间用于解密数据,使得服务器响应并发请求的处理能力大为下降; 用户的查询请求不同,必须为每个查询请求恢复相应的明文; 查询结果在网络传输过程中需重新加密,并且在客户机上还需重新解密,增加了系统的复杂性; 基于上述考虑,解密过程应该在客户机上进行,相应地用户的查询需要在客户机上进行,这就需要在客户机上建立一个本地数据库。本地库必须妥善处理否则

文档评论(0)

1亿VIP精品文档

相关文档