目 录
摘 要 1
ABSTRACT 2
第1章 绪论 3
1.1 数据库加解密系统开发背景 3
1.2 国内外现状 3
1.3 本文的主要工作 4
1.4 论文的组织结构 4
第2章 数据库加密的基本理论 6
2.1 数据库加密的三种级别 6
2.2 数据库加密的粒度 8
2.2.1 数据库级的数据库加密 8
2.2.2 表(文件)级的的数据库加密 8
2.2.3 记录级的的数据库加密 8
2.2.4 字段级的数据库加密 9
2.2.5 数据项级的数据库加密 9
2.3数据库加密的限制 9
第3章 密码学技术 10
3.1 对称加密 11
3.1.1 对称加密模型 11
3.1.2 AES和DES算法 12
3.2 非对称加密 13
3.2.1 非对称加密基本原理 13
3.2.2 RSA加密算法 14
3.3 加密算法分析 15
第4章 数据加密的密钥管理设计 15
4.1加解密控制模块 16
4.2 存储库 16
4.3 管理器 18
4.3.1 密钥生命周期与密钥更新 18
4.3.2 密钥销毁 19
4.4 对外的密钥列表 19
4.4.1 密钥集合 20
4.4.2 密钥分配 20
第5章 数据库加密的设计与实现 20
5.1 总体框架 21
5.2 加解密控制模块和算法 22
5.2.1加解密控制模块 22
5.2.2 加解密控制模块的实现 22
5.2.3 密码算法 22
5.3 存储库和列表 24
5.3.1 存储库 24
5.3.2 实现数据库中的存储库 25
5.3.3 程序中存储库的实现 25
5.3.4 列表 28
5.3.5 列表的实现 28
5.4 密钥管理器 29
5.5 命令行解析 30
5.6 客户端和服务器 32
5.7系统的运行 33
5.7.1 以管理员的身份登录 34
5.7.2 生成二级密钥 34
5.7.3 新建两个有效的密钥 35
5.7.4 完成注册登录步骤 36
5.7.5 在worker数据库表的两个不同类型的列加密 38
5.7.6 SQL语句 40
5.7.7 更换二级密钥 45
第6章 结论 48
致谢 48
参考文献 50
附录 51
本文讨论的主要问题,是研究、开发可行性好和性能优秀的数据库加密系统。借助Visual Studio、eclipse编程工具和SQL Server 2012数据库,结合数据库安全模型,使用对称和非对称加密算法,并采用合适的密钥管理机制设计并实现了一个基于SQL Server的数据库加解密原型系统。工作内容主要从下面几个方向展开:
数据库加密系统选取对称加密算法。以使数据库加密系统具有较优良加解密速度,数据保密性高的优点,并且通过建立密钥管理机制来使这个数据库加密系统更加安全、更加人性化。
然后对数据库加密的关键技术进行分析与自我调整。实现密钥分配、备份,并对密钥的生命周期和密钥的更改进行研究与设计。
将数据库加密理论加以实践证明,基于C/S模式,设计与实现一个切合理论的数据库加密原型系统,包括在服务器建立密钥管理机制,为客户端提供一系列的加解密指令,使得不同级别的用户存取访问密文数据库,对该理论的可行性做出了肯定的回答。
第3章密码学技术
密码学就是去探讨如何在不被人知道信息的情况下去交流信息。按照人的正常思维去思考,会有两种方法:第一种就是找一个无人的地方,然后再去交流信息;第二种是,用一种只有通信双方才能理解的方式,例如:眼神交流、肢体语言等,即使是别人能发现,也不能理解是什么意思。在计算机的领域,在计算机网络中,我们只要开启抓包的工具,一般都能得到通信报文,再者,不是每个人跟别的人都是专用链路,所以说第一种创造无人环境一般是行不通的。考虑到种种限制,隐藏信息的涵义(专业地说加密)才是应该选择的解决方案
按隐藏信息的涵义的方式来对加密算法进行区分,所有的算法都被分到两个集合中,一个集合叫对称加密和另一个集合叫非对称加密。
3.1 对称加密
对称加密最大的特点应该就是加解密使用相同的密钥,这符合人们的思维惯性,因为同一把锁,就应该用同一种钥匙,所以它也被称为传统密码算法。当然对称加密发展至今,加解密钥也不一定是相同的了,本文转载自http://www.biyezuopin.vip/onews.asp?id=14538但终究是对称加密算法,加解密要之间是可以相互推导,实质还是加解密使用相同的密钥。
分组加密(块加密)和序列加密(流加密)是这种加密的两种主要形式。
对称加密的安全性满足一下两个要求:
(1)随着时间的流逝,总会有一些密文和明文会无意地泄露出去,但即使这些东西被不法分子得到,他也不能通过这些数据来猜到我们的密钥。
(2)密钥和加密算法是关键的两环,一旦这两个环节被窃取,则数据相当于暴露在空气中,随时可以被他人获取,所以要将密钥放在真空的环境下。
3.1.1 对称加密模型
对称加密模型有5个基本成分:
(1)明文:可以通过大脑的识别后可以被人们所理解的数据。
(2)加密算法:能实现给现实生活的信息编上密码,只有知道密码,才能读出正确的信息,达到保密的目的这个功能的准确和完整的描述。
(3)密钥:就是加锁的钥匙,这里被加锁的是明文,锁就是加密算法。但是最为奇特的是这个锁适用多个钥匙,不过不同钥匙,加锁后的情况不相同。
(4)密文:作为算法的返回值,用人的肉眼看是一定看不懂的,即使是能看懂也不是直观的意义,依赖于明文和密钥。
(5)解密算法:就是逆加密算法,反向加密。参数是密文和密钥,返回值为原始明文。
package client;import java.io.*;
import java.net.*;
import java.util.*;import server.Server;/*** 客户端*/
public class Client {public Socket socket = null;public BufferedReader br = null;public PrintWriter pw = null;public Scanner scanner = new Scanner(System.in);// 从键盘读取public ReadServerMessage rsm = null;public Client() {try {// 创建客户端socketsocket = new Socket(Server.HOST, Server.PORT);// 读取从客户端发来的消息br = new BufferedReader(new InputStreamReader(socket.getInputStream()));// 写入信息到服务器端pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));rsm = new ReadServerMessage(this, socket, br);// 从服务器读取消息} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {new Client();}public void close() {try {System.out.println("close......");br.close();br = null;pw.close();pw = null;socket.close();socket = null;} catch (Exception e) {e.printStackTrace();}}
}