密码学课程设计.docx
- 文档编号:28995246
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:11
- 大小:415KB
密码学课程设计.docx
《密码学课程设计.docx》由会员分享,可在线阅读,更多相关《密码学课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
密码学课程设计
信息安全技术应用实践
课程设计报告
设计题目信息的安全传递
专业名称:
班级:
学号:
姓名:
指导教师:
2014年7月
目录
一、引言3
二、设计方案3
1.安全需求3
2.概要设计3
3.详细设计5
三、安全性分析7
四、运行结果8
五、总结13
参考文献13
一、引言
对于信息安全问题,经常出现QQ被盗号骗取财物等案件的出现。
信息的安全性十分重要,尤其是一些个人的隐私。
人们也越来越重视信息的安全传递,所以设计出一个安全传递信息的系统刻不容缓。
所以在此次课程设计我设计了一个信息传递系统,此系统是基于JAVA应用程序开发的,结合密码学的加密算法实现。
其主要特性是安全的完成信息的传递。
二、设计方案
1.安全需求
1).服务器端每一客户口令安全存储(口令保护)
2).对所有通信内容用分组密码以计数器模式进行加密
3).对所有的通信内容用认证码(MAC)进行完整性检验
4).服务器对每个客户进行身份认证
5).服务器端抗重放攻击
2概要设计
1.(BrokerGUI)
发送代理端代替发送者进行内部操作,它设置了与服务端的共享密钥、实现共享口令的加密密钥的加密、随机密钥的加密,、文件的加密、消息的验证。
工作进程:
假设口令“sharedPwd”为代理与授权服务器共享口令
1)用“sharedPwd”生成加密密钥“K-BC”,以及MAC密钥“K-MAC”
2)随机生成一个密钥“K”;并且用“K”生成一个新的加密密钥“K-temp”
和一个新的MAC密钥“K-MAC-temp”。
3)对输入文件内容进行加密和计算MAC
E[K-temp,filecontents]||MAC[K-MAC-temp,E[K-temp,filecontents]]
4)对新的密钥“K”进行加密和计算MAC
E[K-BC,K]||MAC[K-MAC,E[K-BC,K]]
5)输出所有上述信息
2.(BrokerClient)
接收代理端应该设置自己的用户名和密码,且要发防重放的随机数。
与服务器端建立通信通道,向服务器端发送加密后的信息。
对方接收来自服务器的信息。
相对服务器而言,接收端的任务主要就是保证消息的安全性、保密性、完整性等。
1)用“用户口令”生成加密密钥“K-BC-user”,以及MAC密钥“K-MAC-user1”;
2)接收端提供给服务器
R||user1||MAC[K-MAC-user1,R||user1]
这里R是一个随机数,user1为用户名
3)接收端从服务器获得
E[K-BC-user1,K]||MAC[K-MAC-user1,E[K-BC-user1,K]]
解密得“K”,并计算出加密密钥“K-temp”和
一个新的MAC密钥“K-MAC-temp”。
解密和验证“filecontents”。
3.AuthorityServer)
服务端实现发送代理端和接收代理端之间的连接,是一个中转站。
服务器接受和发送的信息都是加密的,保证了消息的安全性。
服务端实现对了发送代理端的消息认证,实现接收代理端的用户身份认证,对密钥的解密和加密,实现了防重放攻击。
工作进程:
1)服务器解密得“K”,并且确认“K”的完整性;
2)检验用户名,解密“R”并验证它们的完整性;
3)选取新的密钥“K”,并且加密“K”及计算“K”的MAC:
E[K-BC-user1,K]||MAC[K-MAC-user1,E[K-BC-user1,K]]
发送给用户
3.详细设计
选择AES加密算法,密钥长度为128位。
随机密钥K的实现方法:
publicstaticbyte[]initKey()throwsException{
//实例化
KeyGeneratorkgen=KeyGenerator.getInstance("AES");
//设置密钥长度
kgen.init(128);
//生成密钥
SecretKeyskey=kgen.generateKey();
//返回密钥的二进制编码
returnskey.getEncoded();
}
共享口令生成密钥的实现方法:
publicstaticbyte[]sharepwd()throwsException{
FileInputStreamf1=newFileInputStream("pwd.txt");
intnum1=f1.available();
byte[]kb1=newbyte[num1];
f1.read(kb1);
returnkb1;
}
用HmacMD5算法计算出加密密钥的实现方法:
SecretKeySpeck1=newSecretKeySpec(k,"HMACMD5");
Macm1=Mac.getInstance("HmacMD5");
m1.init(k1);
Stringx1="yl";
m1.update(x1.getBytes("UTF8"));
bytes1[]=m1.doFinal();
SecretKeySpecKBC=newSecretKeySpec(s1,"AES");
用相同的方法产生加密所使用到的IV。
指定一个字符串比如”ivkey”。
Stringivkey="ivkey";
SecretKeySpeck2=newSecretKeySpec(k,"HMACMD5");
Macm2=Mac.getInstance("HmacMD5");
m2.init(k1);
m2.update(ivkey.getBytes("UTF-8"));
bytes2[]=m2.doFinal();
//生成初始化向量
IvParameterSpeciv=newIvParameterSpec(s2);
验证信息的完整性,传输信息的同时加上消息认证码MAC,防止消息被人串改。
对于MAC的产生使用相同的方法。
指定一个字符串”mackey”。
Stringmackey="mackey";
SecretKeySpeck3=newSecretKeySpec(k,"HMACMD5");
Macm3=Mac.getInstance("HmacMD5");
m3.init(k3);
m3.update(ivkey.getBytes("UTF-8"));
bytemac[]=m3.doFinal();
有了IV和加密消息的密钥。
对消息进行加密。
使用AES/CTR/NoPadding模式。
Ciphercipher=Cipher.getInstance("AES/CTR/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE,KBC,iv);
byte[]bytOut=cipher.doFinal(bytIn);
byte[]bytOut2=m3.doFinal();
用同样的方法生成同样的iv去解密:
Ciphercipher=Cipher.getInstance("AES/CTR/NoPadding");
cipher.init(Cipher.DECRYPT_MODE,KBC,iv);
//写文件
byte[]bytOut=cipher.doFinal(bytIn);
byte[]bytOut2=m3.doFinal();
3、安全性分析
口令和密钥都进行加密,以及MAC进行消息验证与身份认证。
对接收端,用随机数的方法,验证接收端的完整性,检查其用户名、解密其R只有服务器认证了接收端才发送加密的随机密钥材料(K)给接收端。
然后接收端通过自己的密钥解密K,并生成K-temp然后去解密密文。
攻击的复杂度依赖于分组长度和密钥长度,AES算法的密钥长度最小是128比特,因此,Rijndael算法对强力攻击是免疫的。
对口令加密保存、用分组密码以计数器模式进行加密、对所有的通信内容用认证码(MAC)进行完整性检验、服务器对每个接收端进行身份认证、服务器端抗重放攻击等安全需求。
四、设计成果
1、BrokerGUI
图1
图2
2.AuthorityServer
图4
3.BrokerClient
图7
4.BrokerClient(解密)
图10
图11
六、总结
在刚开始课程设计时,对于题目不是很了解,通过老师的讲解,对题目开始有初步的认识。
之后查找资料,对于题目有了整体的认识,建立一个传递信息的平台,主要的要求是安全性。
有3个端口,实现信息的加密解密,消息完整性检查,消息的抗重放。
平台设计时最主要的是把信息加密从发送端传入服务器,服务器再传到接收端。
在原有的框架上,实现对信息的安全性要求。
首先是加密算法,寻找符合要求的算法,并把这些算法加入到程序中。
最难的就是把算法与原有程序代码结合调试的过程。
通过此次课程设计,我熟悉了java是如何实现通讯的。
还加深了对密码学的加密解密算法以及认证与验证过程的理解。
经过查阅资料、询问老师还有同学的讨论,最终可以实现简单的消息安全传递。
这个简单的平台还有许多不足之处,希望在以后能够去完善它。
参考文献
[1]《Java课程设计案例精编(第二版)》
[2]《《Java加密与解密的艺术》
[3]《Java程序设计(第二版)》
序号
评分内容
满分
实际得分
1
学习态度
10
2
方案设计合理,满足安全需求,具有可操作性
15
3
系统功能完善、与方案一致、运行无误
35
4
报告撰写思路清晰、论证充分,行文流畅,书写规范
15
5
答辩时思路清晰,重点突出,准确无误
20
6
设计有独到见解
5
总分
100
等级
五级制
评语:
指导教师签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 密码学 课程设计