《2918.B密钥分散管理系统——密钥确认算法实现 软件说明书.doc》由会员分享,可在线阅读,更多相关《2918.B密钥分散管理系统——密钥确认算法实现 软件说明书.doc(15页珍藏版)》请在三一办公上搜索。
1、 大 学 毕 业 设 计 软 件 说 明 书 题目: 密钥分散管理系统专 业: 信息安全 姓 名: 学 号: 指导老师: 密钥分散管理系统软件说明书一. 软件概述随着人类社会步入信息时代,信息的产生、处理及安全保密已成为大家都关心的事情。为了实现信息的安全保密,人们可以采用密钥加密信息,从而使不拥有密钥的非法人员无法窃获信息。这使得信息的安全保密主要维系于秘密钥的安全,而不是对加密算法的保密。所以保证秘密钥的安全及如何有效地管理密钥成了密码学中十分重要的课题。原始的将密钥存放于某人的记忆中,或者存放于某个特殊的保险柜中等方法已均不能保证密钥的安全。并且也不便于对密钥的管理。在一个系统中,若每一
2、个用户都掌握了进入系统的密码,那么系统将变得不再安全,有可能会产生许多少不清道不明的东西,任何一个用户都可以进入系统并进行查询、修改等操作,使得系统的使用不再安全,内部重要数据容易向外界泄露。这种情况在一些部门将显得尤为敏感,如银行、军事系统、政府系统等部门。如何解决这种问题已经成了一个重要的课题。由于网络的开放性,互连性等特性,致使网络易受到黑客,恶意软件或者其他方法(如暴力穷尽)破解主密钥。由于系统的复杂性,不可能完全阻止新安全漏洞的产生。只要他们某次攻击获得成功,便可能获得主密钥,而且内部管理人员在不经意的情况下可以泄露甚至篡改主密钥,内部非管理人员可以利用管理漏洞窃取主密钥。密钥管理是
3、数据加密技术中的重要一环,密钥管理的目的是确保密钥的安全性(真实性和有效性)。密钥既可以作为一个整体保存,也可以分散保存。整体保存的方法有人工记忆、外部记忆装置、密钥恢复、系统内部保存;分散保存的目的是尽量降低由于某个保管人或保管装置的问题而导致密钥的泄漏。一个好的密钥管理系统应该做到:(1)密钥难以被窃取;(2)在一定条件下窃取了密钥也没有用,密钥有使用范围和时间的限制;(3)密钥的分配和更换过程对用户透明,用户不一定要亲自掌管密钥。所以我们提出密钥管理这一个概念,将一个主密钥分成若干个子密钥交于若干人分别管理,只有一定人数输入正确的子密钥后,由系统内部通过一个算法生成主密钥,将生成的主密钥
4、与系统中的进行比较,如果相同才能进入系统,这样可以保证没有人可以独自进入系统,在进入系统时至少要有两个人或者两人以上,减少了擅自查阅,修改系统内部数据的机会,使得系统内部数据的安全,保密性得到了极大程度的提高,加强系统的安全性并且可以更加有效地管理密钥,使系统的受攻击的可能性大大降低。二 系统运行环境1设备CPU:奔腾 800处理器(及其兼容系列)以上内存:128M 以上硬盘:2 GB 以上打印机:Canon 系列打印机显示卡:SVGA 显示卡2. 支持软件系统开发平台:Win XPMicrosoft Visual C+ 6.0系统运行平台:Win2000, Win XP 系统开发工具:Mic
5、rosoft Visual C+ 6.0三 软件安装Microsoft Visual C+6.0 的安装1. 首先选择Microsoft Visual C+6.0的安装文件AUTORUN.EXE,在窗口弹出选择中文版。 2. 选择并点击下一步。3. 仔细阅读协议,选择接受协议并点击下一步。4. 输入产品的ID号,用户的姓名和单位,并点击下一步。5. 选择安装Visual C+6.0 中文企业版,并点击下一步。6. 选择安装路径,如果想更换,请点击浏览并找到想要的路径,然后点击下一步。7. 出现安装界面,点击继续8. 出现您的product ID,点击确定。9. 选择安装类型,建议选择Typic
6、al,并点击。10. 出现正在安装界面,请等待。11. 安装完毕,点击确定四 该系统的使用1.用户界面:(1) 登录和注册界面:安装好必须的软件环境后运行该程序可以出现上面这个界面,即图(1),用户首先要输入所用系统总人数和进入系统的必要人数。输入过后,各个用户分别输入自己的用户名和密码,并记住。全部输入完毕后,按确认,系统会自动生成主密码,但是用户并不知道生成的主密码。在进入系统时,要求至少有必要人数来输入自己的用户名和密码。当输入的用户名和密码正确的时候,会进入系统并可以正常使用系统。当其中一人输入错误时,界面会显示您输入的密码错误,请重新输入。当连续输入错误3次时,界面会显示五 算法流程
7、图加密部分:开始提示输入k ,n生成随机数a0, a1,ak-1生成多项式y= a0+ a1x+ ak-1xk-1输入x1,x2,xn(子密钥)得到y1,y2,yn(用户ID)结束构造函数key=f(a0, a1,ak-1)即为主密钥f注释:1. 在开始之后,根据界面提示,输入总体人数n和必要人数k,总体人数n和必要人数k都是有一定的大小限制,以防止下面生成的y过于庞大,影响计算速度。所输入的k用于生成随机数以及多项数,n用来确定具体有多少人在使用系统。2. 系统根据用户输入的必要数k,由系统生成随机数a0, a1,ak-1,在这里,系统生成的随机数因为先前输入的k与n不相同而会有所不同,若用
8、户输入的k与n相同,也会由于在生成时所选用的随机种子(一般以系统时间为随机种子)不同而产生不同的随机数,避免了两部分用户在相同的条件下会生成相同的随机数而导致密码容易破解。3. 根据上一步系统所生成的随机数a0, a1,ak-1系统会生成多项式y= a0+ a1x+ ak-1xk-1,多项式中的x表示用户即将输入的用户密码,y表示用户的用户ID,这两者由用户输入,系统中保留用户ID也就是y,并不保留用户密码也就是x,使得用户的密码安全性得到提高。4. 由所有用户输入自己的用户名和密码,所输入的密码即x1,x2,xn通过第三步生成的多项式y= a0+ a1x+ ak-1xk-1,可以得到和用户密
9、码x相对应的用户IDy,即y1,y2,yn在这里要注意,用户所输入的密码位数不能超过六位,若超过六位,则会由于密码长度过长而导致用户ID多长,不知会占用大量内存,同时也会使得运算速度大大降低。还有另外一点要注意,在所有用户输入的用户名和密码中,不能有任何两个是相同的,如果相同,将会导致在解密码的时候出现无法解除具体值的情况,导致系统无法正常进入,请用户注意。5. 系统中构造一个函数:key=f(),f位一种简单的算法(如加法、乘法等方法)key为系统的主密钥,将第二部生成的随机数代入函数key=f()机即key=f(a0, a1,ak-1)可以通过函数f可到主密钥key,主密钥key是进入系统
10、的唯一凭证,key将保留在系统中,但是系统用户并不知道主密钥key,而且在进入系统时,用户不能直接输入主密钥key,所以若有已经进入系统的用户查找到主密钥key也没有办法单单通过主密钥key而直接进入系统,使得系统的安全性大大增强。开始等待k个用户来输入子密钥x1,x2,xk-1根据子密钥解多项式方程组求出a0,a1,ak-1代入key=f(a0, a1,ak-1)与主密钥进行比对两密钥是否相同?设置计数器counter=0counter3counter+锁定10分钟进入系统,并记录上机时间结束注释:1. 在准备进入系统时,系统内的计数器counter会预置为0,计数器counter的作用是在
11、用户输入密码后计数器的数字+1,并记录,当用户输入错误三次,也就是计数器counter的数字达到3的时候,系统将会屏蔽所有用户登陆10分钟,保证了非法用户或者合法用户用非法手段进入系统,对系统的安全性有了很好的保障,若用户正确进入系统后,计数器counter会重置为0。2. 在计数器counter预置为0以后,系统将等待用户来输入密码,输入密码的用户数必须为在加密中所输入的k个用户来输入,若输入的人数少于k个,则系统将会等待其他用户来输入他们的密码,直到人数达到k个为止。k各用户输入的子密钥将会被系统分配为x1,x2,xk-1,以便下面进行解密运算。3. 在k个用户输入子密钥x1,x2,xk-
12、1之后,系统会根据用户输入的自己的用户名即y1,y2,yk-1和用户的子密钥x1,x2,xk-1,使用在加密中生成的多项式y= a0+ a1x+ ak-1xk-1可以解出在加密算法中生成的随机数a0,a1,ak-1,生成的随机数与先前加密算法中生成的随机数是完全一样的。这也就是为什么在加密时用户所输入的密码中不能有相同的密码出现,因为如果出现了相同的密码,那么在解密的时候,如果两个有相同密码的人进行输入,则无法准确解出随机数a0,a1,ak-1,也就无法得到最后的主密钥key,造成无法正常解密。4. 上一步已经正确解出了随机数a0,a1,ak-1,这一步就简单一点,把加密时生成的函数f()用解
13、出的随机数a0,a1,ak-1代入,会生成主密钥(我们暂时称之为key1),这时候将生成的主密钥key1与加密时产生的主密钥key进行比较,如果与加密时产生的主密钥key相同,那么说明用户输入的子密钥都是正确的,系统可以进入,如果key1与key不一样,则说明在输入子密钥的用户中至少有一个输入错误,不能进入系统,并且将计数器counter的数目+1,再返回第二步,由用户重新输入子密钥。若连续三次密码不正确,则会屏蔽10分钟。5. 最后,在用户正确输入了k个子密钥后,用户们进入了系统,这个时候,系统将记录下登陆系统的用户ID以及上网时间,这样可以对使用系统的用户进行掌握,对于恶意修改系统信息的情况有了较好的监控。