毕业设计论文数据库加密系统的设计与实现.docx
- 文档编号:27804000
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:30
- 大小:377.43KB
毕业设计论文数据库加密系统的设计与实现.docx
《毕业设计论文数据库加密系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计论文数据库加密系统的设计与实现.docx(30页珍藏版)》请在冰豆网上搜索。
毕业设计论文数据库加密系统的设计与实现
1引言
随着计算机信息技术的蓬勃发展,作为信息采集、存储、处理和传输的媒体,计算机及网络应用逐步延伸到社会生活的方方面面。
当人类越来越感受到计算机系统功能的强大,不得不感叹于信息技术带来的方便快捷的同时,各种忧虑也渐渐产生:
已经习惯性依赖于计算机的人们离开它还能生存吗?
信息战将对国防安全、军事领域产生什么影响?
信息诈骗和其他信息犯罪将如何改变人们的日常生活?
这些问题都属于计算机信息安全的范畴。
起初,计算机系统的安全主要是指硬件的安全保护。
随着信息所发挥的价值日益为人们所了解,人们的目光转移到在计算机系统中存储、传输的信息的安全,包括防止信息泄漏和非法慕改等。
数据库集中存放和管理大量信息,其安全性对于整个计算机信息系统至关重要。
为了保证数据安全,人们在不同层面运用了各种安全措施,这些防范措施分别可以在一定程度上防止某种安全威胁。
但是,在操作系统、数据库和网络的层层防护之下,仍然无法保证数据库数据的安全。
因为通常数据库中的数据最终是以文件形式存储在计算机上的,这些文件大部分是多个用户可读可写的,一旦网上黑客通过某种途径进入系统就可以直接读取数据文件或存储介质,从中窃取数据或利用非法软件篡改数据库文件内容。
近几年,类似案件在世界范围内频繁出现。
因此计算机信息安全人员和数据库开发商们不得不求助于另外一种安全措施一一加密技术。
1.1课题现状
密码学是一门古老而深奥的学科,对一般人来说是非常陌生的。
长期以来,只在很小的范围内使用,如军事、外交、情报等部门。
计算机密码学是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。
随着计算机网络和计算机通讯技术的发展,计算机密码学得到前所未有的重视并迅速普及和发展起来。
在国外,它已成为计算机安全主要的研究方向。
数据库系统的安全问题是信息系统安全的一个大问题。
由于数据库系统中集中存储了大量的信息,而且数据库的最大特点是实现数据的共享,其中必然带来数据库的安全性问题。
数据库中放置了组织、企业、个人的大量数据,其中许多数据可能是非常关键的、机密的或者涉及隐私的。
例如军事秘密、国家机密、科研数据、市场分析、营销策略、销售计划、客户档案、医疗档案、银行储蓄数据等。
数据拥有者往往只容许一部分人访问这些数据,如果数据库管理系统不能严格的保护数据库中的数据的数据安全性,就会严重制约数据库的应用。
数据库系统的安全保护措施是否有效是数据库系统主要的性能指标之一。
同时在许多用户之间也因为信息共享而增加了发生错误的机会。
因此,如何才能确保和加强数据库的安全保密性已经成为目前必须要解决的问题。
目前,在信息化发展程度较高的国家和地区,很多资源都可以实现共享,有些数据库中的数据是全部公开的(如图书馆的数据库),但是大多数数据库是无法全部公开的,有些数据库甚至是完全保密的。
例如,就商业部门而言,一般信息可以共享,但是一些敏感信息或者数据(如商业情报、职工工资等)则是保密的。
而对军队等特殊部门的数据库而言,因其存储的全部都是一些机要数据,所以就要求完全保密。
对于这些需要保密的或保密要求较高的数据库及其所存储的数据,如果还仅仅采用一般性的安全措施,那么仍会有一些用户,尤其是一些内部用户仍可能非法获取用户名、口令字,或是利用其他方法越权使用数据库,甚至可以间接打开数据库文件来窃取或篡改信息。
因此,有必要对数据库中存储的重要数据进行加密处理,以强化数据存储的安全保护。
但是很遗憾,现在绝大部分的数据库系统没有较为专业的加密保护。
在现今互联网高度发达的时代,一旦黑客入侵,数据库全部暴露在黑客面前,数据库的信息安全堪忧。
1.2课题作用
随着现代计算机的发展,信息化日趋完善,人们的生活逐步向数字化方向发展。
数据库技术从诞生到现在,在不到半个世纪的时间里,形成了坚实的理论基础、成熟的商业产品和广泛的应用领域吸引越来越多的研究者加入。
数据库的诞生和发展给计算机信息管理带来了一场巨大的革命。
三十多年来,国内外已经开发建设了成千上万个数据库,它已经成为企业、部门乃至个人日常工作、生产和生活的基础设施。
同时,随着应用的扩展与深入,数据库的数量和规模越来越大,数据库的研究领域也大大地拓广和深化。
我们日常生活、工作中所产生的数据更加依附数据库系统这一媒体。
采用具有一定安全性质的软件来实现对于数据库及其所含数据或信息的安全保护,能够在整个数据库系统中,在一定的程度甚至完全可以保证系统在无意或者恶意的软、硬件攻击下仍然能够使得系统内的数据或者信息不增加、丢失、泄漏、不被修改。
往往通过数据加密技术等实现,本课题的作用就体现在此。
1.3课题意义
信息是一种资源,也是一种财富。
在现代社会中,信息处理和通信技术日益发展,保护信息的安全,特别是保护重要信息的安全,已成为国际社会普遍关注的重大问题。
但前由于信息保护措施的不力或失误,世界各国所遭受的损失是巨大的,在商业,交通,工业,科学技术,国防,外交等部门的大量事例已充分说明了这一点。
因此,对于信息的加密保护就显的尤其重要。
数据加密技术已随着计算机技术的迅猛发展,由早期的军事和外交领域,逐步伸展到交通、工业经济、科学技术、社会安全和公共生活的各个领域,成为现代社会中保护信息的重要手段和工具。
信息保护的现实需要,使得数据加密算法和技术迅速进入了现代社会,了解并有效使用数据加密算法技术已成为计算机技术和通信领域的专业技术人员和广大用户的迫切需求,这是信息化社会发展阶段的重要标志,数据库加密也是信息安全必不可少的安全手段。
从六十年代数据库技术的产生到广泛的应用,人类对数据库安全的研究历经了三十多年,已经研究出很多的数据库安全及保密技术,数据库安全及其数据安全日益被重视。
可是又一个问题显现出来,对于数据及信息本身来讲自然是安全级别越高越好,但是过高的安全级别势必会给数据及信息资源的共享和使用带来不便。
这是人们在今后的研究和实际应用中所必须注意和协调的问题。
2系统分析和总体设计
2.1需求分析
现有较多的题库和组卷系统的数据库均不同程度的存在着安全方面的漏洞和隐患,需要对该系统的数据库的安全性进行设计,来满足有关人员的安全要求:
按照不同的部门或者身份划分不同的用户名和密码,比如说管理员、教师、学生等;不同的用户配置相应的操作数据库的权限;对于关键的数据必须加密,只有通过相应的身份验证后才能通过应用程序调用,不能直接通过打开数据库来查看关键数据;在数据库中的数据被破坏后,能及时通过备份数据库进行恢复。
2.2设计思想
本课题以MicrosoftVisualC++6.0为主要语言基础、密码学知识和数据库知识相结合,对该系统数据库进行保护,防止重要甚至机密的的信息数据被恶意盗窃和篡改。
首先要设计好Access数据库,然后利用VC设计整个应用系统,分别设计系统的功能块,包括系统用户管理、教师功能模块以及学生功能模块。
在系统中,直接对数据库记录中的各个数据项加密,即字段加密的方法。
为了更加的安全,也对系统用户的口令字进行了加密。
2.3总体设计
关于数据库安全,美国从七十年代就开始从事安全数据库管理系统的理论研究,到了八十年代,为了适应计算机安全技术飞速发展的需要,美国于1983年发布了“可信任计算机系统评估标准”,1985年又发布了其修订版,桔皮书中对安全系统的评价按照四大类共七个等级划分不同的安全级别。
即分为D、C1、C2、B1、B2、B3、A1七个等级,如下表2.1所示。
其中A1为最高级别,每一级别都必须包含低一级的功能。
表2.1可信任计算机安全评估标准
级别定义
A1设计的形式化验证
B3安全域
B2结构化保护
B1标记安全保护
C2受控制的存放保护
C1自主安全保护
D最小保护
根据数据库安全的有关规范进行题库和组卷系统数据库安全的设计。
良好的信息安全系统必然是分为不同等级的,包括对信息保密程度分级,对用户操作权限分级,对网络安全程度分级(安全子网和安全区域),对系统实现结构的分级(应用层、网络层、链路层等),从而针对不同级别的安全对象,提供全面、可选的安全算法和安全体制,以满足网络中不同层次的各种实际需求。
2.4功能模块设计
本系统要完成以下几个功能:
(1):
用户管理:
本模块需要实现增加、删除用户以及管理用户信息等功能;
(2):
教师功能:
本模块需要实现编辑、添加以及删除数据库中试题等功能;
(3):
学生功能:
本模块需要实现自行生成试卷后,学生能够自由答题的功能。
如图2.1,为整个系统模块结构图:
图2.1系统的功能模块图
2.5开发环境及技术
(1)VisualC++6.0简介
MicrosoftVisualC++(以下简称VC++)是微软公司开发的一个IDE(集成开发环境)。
换句话说,就是使用C++的一个开发平台。
但是,VC++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC(MicrosoftFoundationClasses,以下简称MFC)、ATL、COM等的知识,难度比较大。
Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;微软基础类MFC是Win32API(ApplicationProgrammingInterface,应用程序编程接口,以下简称API)的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。
(2)Access数据库简介
数据库选用Microsoft公司的Access产品作为数据库应用程序。
目前的Access2003是Microsoft强大的桌面数据库平台的第六代产品,是32位Access的第三个版本。
(3)ADO访问数据库
ADO是Microsoft公司提供给Web数据库开发者最有效的开发方案,包含Connection、Command、Recordset三个对象。
它几乎兼容所有的数据库系统,能跨越多种不同的程序语言开发环境,几乎可以在任何支持COM(ComponentObjectModel,组件对象模型)和OLE(对象链接和嵌入)的服务器端操作系统上使用,将原本烦杂的数据库程序开发变成轻松容易的工作,除了具有传统数据库开发环境的优点外,还增加了对数据库修改和维护的功能。
3加密算法分析
数据的加密就是将明文数据经过一定的交换(一般为变换和代替)变成密文数据。
数据脱密是加密的逆过程,即将密文数据变成可见的明文数据。
一个密码系统包含明文集合、密文集合、密钥集合和算法,其中密钥和算法构成了密码系统的基本单元。
算法是一些公式、法则或程序,规定明文与密文之间的变换方法,密钥可以看作算法中的参数。
数据库加密系统要求将明文数据加密成密文数据,数据库中存储密文数据,查询时将密文数据取出脱密得到明文信息。
3.1目前常用的加密算法
现在成熟的加密体制有对称密钥体制(包括流密钥和组密钥)和非对称密钥密码体制两大类。
他们是两种不同的密码体制,有各自的优点和缺点,用于解决不同的问题。
3.1.1对称加密算法
对称算法,又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。
在大多数对称算法中,加解密密钥是相同的。
这些算法也叫秘密密钥算法或单钥算法,它要求发送方和接受方在安全通信之前商定一个密钥。
对称算法的安全性完全依赖于密钥,泄露密钥就意味着任何人都能对消息进行解密。
只要通信需要保密,密钥就必须保密。
对称算法又可分为两类:
一次只对明文中的单个位(或字节)运算的算法称为流密码。
另一类算法是对明文的一组位进行运算,叫分组密码,如IBM的DES算法。
3.1.2非对称加密算法
非对称加密算法又称公开密钥算法,是1976年由Diff和Hellman在其“密码学新方向”一文中提出的。
在公钥密码系统中,加密和解密使用的是不同的密钥,这两个密钥之间存在着相互依存的关系:
即用其中任一个密钥加密的信息只能用另一个密钥进行解密。
非对称加密算法的主要优点是可以适合网络开发性的使用环境,密钥管理问题相对简单。
但是非对称加密算法是基于尖端的数学难题,算法非常复杂,加密解密速度和效率较低。
目前最著名的公开密钥算法是RAS算法和椭圆曲线密码。
3.2系统使用的加密算法
图3.1DES加密算法框图
在进行加解密算法的选择上,一方面要考虑保密的强度,另一方面还必须考虑加解密的执行速度。
在系统中,不应因加解密功能的加入而明显降低系统的执行速率。
数据库中的数据必须以字段为单位进行加密,否则数据库将无法进行操作。
因此,数据库加解密的密钥应该相同,采用对称密码体制是比较合适的,而且对称密码体制在执行速度上一般较非对称密码体制快许多倍。
在本系统的具体应用中,根据数据库加密对密码算法的要求和实际情况,采用DES和MD5分别对数据库中的关键数据和用户登陆时的口令字进行加密。
数据加密算法DES(DataEncrpytionStandard,以下简称DES),是由IBM公司在70年代提出的一种分组密码体制,并经政府的加密标准筛选后,于1976年11月被美国政府采用。
DES算法加密速度快,适合大数据量数据加密。
图3.1是DES加密算法的框图,DES加密时把明文以64比特为单位分块,采用美国国家安全局精心设计的8个S盒和P置换,经过16轮迭代,最终产生64比特密文,每轮迭代使用的48比特子密钥由原始的56比特产生。
DES的加密与解密的密钥和流程完全相同,区别仅仅是加密与解密使用的子密钥序列的施加顺序正好相反。
MD5(Message-DigestAlgorithm5,信息摘要),它的典型应用是对一段信息产生信息摘要,以防止被篡改,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。
对MD5算法简要的叙述可以为:
MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。
因此,信息的字节长度(bitslength)将被扩展至n*512+448,即n*64+56个字节(bytes),n为一个正整数。
填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。
然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。
经过这两步的处理,现在的信息字节长度=n*512+448+64=(n+1)*512,即长度恰好是512的整数倍。
这样做的原因是为满足后面处理中对信息长度的要求。
MD5中有四个32位被称作链接变量(chainingvariable)的整数参数,他们分别为:
a=0x01234567,b=0x89abcdef,c=0xfedcba98,d=0x76543210。
当设置好这四个链接变量后,就开始进入算法的四轮循环运算。
循环的次数是信息中512位信息分组的数目。
将上面四个链接变量复制到另外四个变量中:
a到a,b到b,c到c,d到d。
主循环有四轮(md4只有三轮),每轮循环都很相似。
第一轮进行16次操作。
每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。
再将所得结果向右环移一个不定的数,并加上a、b、c或d中之一。
最后用该结果取代a、b、c或d中之一。
以一下是每次操作中用到的四个非线性函数(每轮一个)。
f(x,y,z)=(x&y)|((~x)&z)
g(x,y,z)=(x&z)|(y&(~z))
h(x,y,z)=x^y^z
i(x,y,z)=y^(x|(~z))
(&是与,|是或,~是非,^是异或)
这四个函数的说明:
如果x、y和z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。
f是一个逐位运算的函数。
即,如果x,那么y,否则z。
函数h是逐位奇偶操作符。
假设mj表示消息的第j个子分组(从0到15),<<
ff(a,b,c,d,mj,s,ti)表示a=b+((a+(f(b,c,d)+mj+ti)< 这四轮(64步)是: 第一轮 ff(a,b,c,d,m0,7,0xd76aa478) ff(d,a,b,c,m1,12,0xe8c7b756) ff(c,d,a,b,m2,17,0x242070db) ff(b,c,d,a,m3,22,0xc1bdceee) ff(a,b,c,d,m4,7,0xf57c0faf) ff(d,a,b,c,m5,12,0x4787c62a) ff(c,d,a,b,m6,17,0xa8304613) ff(b,c,d,a,m7,22,0xfd469501) ff(a,b,c,d,m8,7,0x698098d8) ff(d,a,b,c,m9,12,0x8b44f7af) ff(c,d,a,b,m10,17,0xffff5bb1) ff(b,c,d,a,m11,22,0x895cd7be) ff(a,b,c,d,m12,7,0x6b901122) ff(d,a,b,c,m13,12,0xfd987193) ff(c,d,a,b,m14,17,0xa679438e) ff(b,c,d,a,m15,22,0x49b40821) 第二轮 gg(a,b,c,d,m1,5,0xf61e2562) gg(d,a,b,c,m6,9,0xc040b340) gg(c,d,a,b,m11,14,0x265e5a51) gg(b,c,d,a,m0,20,0xe9b6c7aa) gg(a,b,c,d,m5,5,0xd62f105d) gg(d,a,b,c,m10,9,0x02441453) gg(c,d,a,b,m15,14,0xd8a1e681) gg(b,c,d,a,m4,20,0xe7d3fbc8) gg(a,b,c,d,m9,5,0x21e1cde6) gg(d,a,b,c,m14,9,0xc33707d6) gg(c,d,a,b,m3,14,0xf4d50d87) gg(b,c,d,a,m8,20,0x455a14ed) gg(a,b,c,d,m13,5,0xa9e3e905) gg(d,a,b,c,m2,9,0xfcefa3f8) gg(c,d,a,b,m7,14,0x676f02d9) gg(b,c,d,a,m12,20,0x8d2a4c8a) 第三轮 hh(a,b,c,d,m5,4,0xfffa3942) hh(d,a,b,c,m8,11,0x8771f681) hh(c,d,a,b,m11,16,0x6d9d6122) hh(b,c,d,a,m14,23,0xfde5380c) hh(a,b,c,d,m1,4,0xa4beea44) hh(d,a,b,c,m4,11,0x4bdecfa9) hh(c,d,a,b,m7,16,0xf6bb4b60) hh(b,c,d,a,m10,23,0xbebfbc70) hh(a,b,c,d,m13,4,0x289b7ec6) hh(d,a,b,c,m0,11,0xeaa127fa) hh(c,d,a,b,m3,16,0xd4ef3085) hh(b,c,d,a,m6,23,0x04881d05) hh(a,b,c,d,m9,4,0xd9d4d039) hh(d,a,b,c,m12,11,0xe6db99e5) hh(c,d,a,b,m15,16,0x1fa27cf8) hh(b,c,d,a,m2,23,0xc4ac5665) 第四轮 ii(a,b,c,d,m0,6,0xf4292244) ii(d,a,b,c,m7,10,0x432aff97) ii(c,d,a,b,m14,15,0xab9423a7) ii(b,c,d,a,m5,21,0xfc93a039) ii(a,b,c,d,m12,6,0x655b59c3) ii(d,a,b,c,m3,10,0x8f0ccc92) ii(c,d,a,b,m10,15,0xffeff47d) ii(b,c,d,a,m1,21,0x85845dd1) ii(a,b,c,d,m8,6,0x6fa87e4f) ii(d,a,b,c,m15,10,0xfe2ce6e0) ii(c,d,a,b,m6,15,0xa3014314) ii(b,c,d,a,m13,21,0x4e0811a1) ii(a,b,c,d,m4,6,0xf7537e82) ii(d,a,b,c,m11,10,0xbd3af235) ii(c,d,a,b,m2,15,0x2ad7d2bb) ii(b,c,d,a,m9,21,0xeb86d391) 常数ti可以如下选择: 在第i步中,ti是4294967296*abs(sin(i))的整数部分,i的单位是弧度。 (4294967296等于2的32次方) 所有这些完成之后,将a、b、c、d分别加上a、b、c、d。 然后用下一分组数据继续运行算法,最后的输出是a、b、c和d的级联。 MD5的安全性 MD5相对md4所作的改进: (1)增加了第四轮; (2)每一步均有唯一的加法常数; (3)为减弱第二轮中函数g的对称性从(x&y)|(x&z)|(y&z)变为(x&z)|(y&(~z)); (4)第一步加上了上一步的结果,这将引起更快的雪崩效应; (5)改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似; (6)近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应,各轮的位移量互不相同。 [color=red]简单的说: MD5叫信息-摘要算法,是一种密码的算法,它可以对任何文件产生一个唯一的MD5验证码,每个文件的MD5码就如同每个人的指纹一样,都是不同的,这样,一旦这个文件在传输过程中,其内容被损坏或者被修改的话,那么这个文件的MD5码就会发生变化,通过对文件MD5的验证,可以得知获得的文件是否完整。 MD5算法算法总体流程图如下图3.2所示。 512位 L*512位 Message 100……..0 初始消息 Blockn Block0 Block1 BlockL-1 HMD5 HMD5 HMD5 HMD5 512位 MD Buffer0 MD Buffer1 MD Buffern MD BufferL-1 ········· ········· 128位 图3.2MD5算法算法总体流程图 3.3密钥管理 在对数据加密时,一个至关重要的问题是密钥的管理。 密钥管理是对密钥在其整个生命周期的管理活动,包括密钥的产生、存储、分发、使用、更新、消亡等内容。 设计安全的加密算法虽然不容易,但是可以依据大量的学术研究。 相对来说,对密钥进行保密则更加困难。 由于数据库加密系统的安全依赖于密钥,所以采用一个弱的密钥产生方法,那么整个系统都将是弱的。 如果采用密钥由用户指定的方式,他们通常会指定一个弱密钥。 所以好的密钥通常都是那些自动处理设备产生的随机位串。 密钥串要么从可靠的随机源中产生,要么从安全的伪随机位发生器产生。 在传统的通信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 数据库 加密 系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)