您好,欢迎访问三七文档
信息安全综合实践设计报告题目:安全数据库系统姓名:班级学号:指导教师:完成日期:一、设计任务与要求功能要求:(1)数据库的数据要进行加密;(2)数据库的完整性要进行保护;(3)保证密钥的安全性。课程设计按指导书要求,综合应用所学的网络安全知识解决实际问题,并进行理论分析,依据合理关系进行设计。功能实用性、界面友好、方便用户操作。本次课程设计是设计实现一个安全的数据库系统,对数据库进行数字签名保证完整性,数据加密保证隐秘性。主要功能:(1)数据库的数据要进行加密;(2)对数据库的完整性进行保护;(3)防止用户根据部分密文明文对,恢复数据库总密钥;(4)数据采用一个密钥以某种形式衍生子密钥进行加密;(5)保证密钥的安全性。二、可行性研究报告主要内容:1.全面深入地进行市场分析、预测。调查和预测拟建项目产品在国内、国际市场的供需情况和销售价格;研究产品的目标市场,分析市场占有率;研究确定市场,主要是产品竞争对手和自身竞争力的优势、劣势,以及产品的营销策略,并研究确定主要市场风险和风险程度。2.对资源开发项目要深入研究确定资源的可利用量,资源的自然品质,资源的赋存条件和开发利用价值。3.深入进行项目建设方案设计,包括:项目的建设规模与产品方案、工程选址、工艺技术方案和主要设备方案、主要原/辅助材料、环境影响问题、项目建成投产及生产经营的组织机构与人力资源配置、项目进度计划、所需投资进行详细估算、融资分析、财务分析、国民经济评价、社会评价、项目不确定性分析、风险分析、综合评价等等。三、系统设计数据库的建表:创建了两个数据库,分别放在两个不同的服务器。一个为存放在本地主机的数据库simple,该库里存放着六个表:activity,customer,emp,note,opertunity,product。用以管理员工,客户,产品,销售情况和活动等信息。Tableactivity:记录了为了某个销售事件所做的一系列活动,包获了活动的日期,活动的内容。Tablecustomer:公司客户的详细资料,如客户名称,客户经理,客户所在地址以及电话。Tableemp:记录了公司员工的具体信息,如员工用户名,员工职位,员工薪酬,员工提成,员工权限(与职位有关),员工用户密码,员工生日,员工性别和员工电话。Tablenote:记录员工的日志内容,加密后存放在数据库,只有掌握了密钥的用户才能解密,同时用了MD5算法保证了数据完整性,假如数据被人篡改,可以马上发现。表里记录了员工ID,日志日期,日志内容和每次对该日志加密后的MD5。Tableopertunity:记录了某位员工给某位客户销售某个产品期间的事件记录,包括有产品的名字,这次销售出该产品的销售额,赢率,花费的时间的开始和结束。Tableproduct:记录了公司的产品名称,类型以及它的竞争产品。另外一个数据库为密钥数据库,存放着每个用户的初始密码。Tablemikey:记录了用户的ID号和密钥。本地数据库的主键和外键Tableactivity:主键为actID,外键为optID,Tablecustomer:主键为cusIDTableemp:主键为empIDTablenote:主键为id,外键为empIDableopertunity:主键为optID,外键为cusID,empID,proIDTableproduct:主键为proID虚拟机数据库的主键和外键Tablemikey:主键为id,外键为empID.四、系统实现AES加密模块算法简述最常用的对称密码算法是数据加密标准(DES)算法,但其主要问题是密钥长度较短,已不适合于当今分布式开放网络对数据加密安全性的要求。故我们选择了新的对称加密算法AES来作为我们数据安全性的保障。AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)。AES加密有很多轮的重复和变换。大致步骤如下:1、密钥扩展(KeyExpansion),2、初始轮(InitialRound),3、重复轮(Rounds),每一轮又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,4、最终轮(FinalRound),最终轮没有MixColumns。本次我们设计的系统采用256位ECB模式的AES算法。1.AES加密ECB模式的优点ECB模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。相对来说,它1.简单;2.有利于并行计算;3.误差不会被传送;数据完整性保证模块1.本系统利用MD5机制实现数据完整性保证。2.原理客户端用户名和口令日志内容MD5散列值比较结果随机数数据库中的散列值散列值上传的散列值一个MD5校验和(checksum)通过对接收的传输数据执行散列运算来检查数据的正确性。计算出的散列值拿来和随数据传输的散列值比较。如果两个值相同,说明传输的数据完整无误、没有被窜改过(前提是散列值没有被窜改),从而可以放心使用。3.作用如用户在我们的系统数据中心存放了个文件,该文件使用MD5校验,校验码存储在数据库中,待用户下次需要查看该文件的数据时,再次用MD5生成校验摘要,并取之与原校验码比较,若相同,则认为数据未被篡改;若不同,则说明数据已被破坏。密钥管理模块1)本系统参考kerberos认证协议,采用其变形,引入第三方身份认证方来管理密钥的安全分配。2)原理结构图3)密钥分配步骤说明用户向身份认证中心发送身份认证凭证,包括其注册的用户名和口令,以请求设定日志密钥的权限。身份认证中心在其数据库中核对用户身份后,将相应的获取密钥凭证发给密钥中心。密钥中心收录用户的隐私日志设定凭证后,返回确认给用户。数据中心身份证明中心用户密钥中心用户收到密钥中心的确认后将自己设定的新密钥发给密钥中心,密钥中心的key数据库存储其新密码。用户用新密钥获得访问数据中心的权限,并提交数据访问请求。数据中心提供用户所需数据给用户。4)第三方设计说明由于本系统设计资源条件的限制,没有配给完整密钥设定凭证加载服务功能,所以,需要有管理员人工操作。管理员在得到数据中心的新注册人员名单后,人工将分配的凭证加载到密钥中心数据库中。5)优势说明首先,根据第三方证明身份后获取修改密钥日志的权限能保证密钥中心的访问安全。其次,我们的管理机制保证了后台管理员本身并不知道用户的真实日志密钥,保障了用户的阴私。同时,管理员在一定的许可下,可以访问密钥库。这样如果用户忘记自己的密钥,本系统还提供了通过管理员查询密钥的功能。界面设计超级用户界面:标题栏设置六个按钮,分别是“业务信息”,“员工管理”,“产品管理”,“客户管理”,“退出”。业务信息:可以看到每次订单事件的具体信息,包括客户名,产品,业务员,订单名称,订单金额,赢率,签单日期,活动。员工管理:可以看到所有员工的具体信息,包括员工姓名,职位,基本工资,奖金,生日,性别,电话和编辑,点击编辑按钮可以编辑职位,基本工资,奖金等信息。产品管理:可以看到产品名字,产品介绍,竞争对手产品,同时可以新建产品。客户管理:可以看到客户名字,客户经理,客户地址,客户电话,同时可以新建客户资料。退出:从当前用户退出。普通用户界面:标题栏设置六个按钮,分别是“查看个人信息”,“编辑个人信息”,“编辑业务”,“个人日志”,“密钥管理”,“退出”。查看个人信息:可以看到用户的名字,性别,出生日期,联系方式,基本工资,奖金和职位。对于刚注册的新用户,基本工资,奖金和职位都没有记录,必须通过超级用户的经理进行编辑录入,其他个人信息可以通过按钮“编辑个人信息”跳到合适页面进行修改。编辑个人信息:对个人的性别,出生日期,联系方式进行修改。编辑业务:对之前个人做的订单事件进行查看,如发现错误可以对单子金额,签单时间,赢率等信息进行修改。同时可以新建业务信息。个人日志:用户的个人日志,以密文显示,每次需要解密查看。同时可以通过MD5查看数据有没有被篡改。密钥管理:每个用户都会得到一个初始密钥,用户可以对此进行修改。退出:从当前用户退出。详细设计本系统采用XAMPP软件包开发的。它是一个功能强大的Apache+MySQL+PHP+PERL软件站集成软件包。它可以在Windows、Linux、Solaris三种操作系统下安装使用。本系统是在Windows下使用的。具体采用PHP语言编写功能和界面,用mysql构基础数据库。AES加解密模块AES加密模块先要获得AES加密的密钥,密钥放在虚拟机的服务器的数据库。if(isset($_POST['submit'])){//post接收传来的数据//连接密钥数据库,得到密钥key$dbc1=mysqli_connect(DB_HOST1,DB_USER1,DB_PASSWORD1,DB_NAME1);mysqli_query($dbc1,'setnamesutf-8');$query=select`key`from`key`whereempId='.$_SESSION['empId'].';$data=mysqli_query($dbc1,$query);if(mysqli_num_rows($data)==1){$row=mysqli_fetch_array($data);$key=$row['key'];}elseecho'密钥获取失败';mysqli_close($dbc1);//连接存放日志的本地数据库,对明文进行加密$dbc=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);mysqli_query($dbc,'setnamesutf-8');$NoteEvent=trim($_POST['NoteEvent']);$NoteDate=mysqli_real_escape_string($dbc,trim($_POST['NoteDate']));$iv_size=mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);$iv=mcrypt_create_iv($iv_size,MCRYPT_RAND);$crypttext=mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key,$NoteEvent,MCRYPT_MODE_ECB,$iv);//加密明文;$MD5=md5($crypttext)$error=false;//更新数据库里的数据if(!$error){if(!empty($NoteEvent)&&!empty($NoteDate)&&!empty($MD5)){$query=insertintonote(empId,note,noteday,md5)values('.$_SESSION['empId'].','$crypttext','$NoteDate','$MD5');$data=mysqli_query($dbc,$query);//确认更新成功echo'p你的日志信息更新成功.你是否想ahref=viewnote.php查看你的日志/a?/p';mysqli_close($dbc);exit();}else{echo'pclass=error你必须完整填完数据!ahref=editactive.php返回/p';mysqli_close($dbc);exit();}}}AES解密模块//从数据库获取密钥信息的数据$iv_size=mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);$iv=mcrypt_create_iv($iv_size,MCRYPT_RAND);//连接密
本文标题:安全数据库系统
链接地址:https://www.777doc.com/doc-2492218 .html