版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 江苏大学 JIANGSU UNIVERSITY 课程设计报告 题目:一种简易的文件安全传输系统的设计与实现 学 院: 专业班级: 学 号: 姓 名: 指导老师: 目 录第一部分 课程设计准备 1.1 课程设计题目.11.2 小组成员及分工.11.3 课题背景及意义.1第二部分 课程设计过程2.1 课题需求分析.4 2.1.1 需求分析.42.2 概要设计.9 2.2.1 系统功能描述.5 2.2.2 系统功能流程图.62.3 具体
2、功能的实现.9 2.3.1预备知识.9 2.3.2算法原理.9.2.4 运行结果.11 2.4.1 程序界面截图.112.5 待改进问题.12第三部分 课程设计体会3.1课程设计心得体会.123.2源程序清单.13第一部分 课程设计准备 1.1课程设计题目 题目:一种简易的文件安全传输系统的设计与实现简介:进入信息时代以来,人类的生活发生了翻天覆地的变化。保护网络系统中的数据不受偶然或恶意原因而遭到破坏、更改、泄露,是网络安全的主要内容之一。目前比较实用的方法是对网络中传输的数据进行加密,而数据加密要依赖于成熟的数据加密算法。 本
3、文详细论述了对称密码体制和公钥密码体制的典型代表AES(Advanced Encryption Standard )算法和RSA算法的原理和安全性能,并结合这两种算法在windows平台上设计实现了基于网络数据加解密的文件传输系统。详细论述了总体设计思想、功能模块设计。该系统采用python语言编写,软件分为发送端和接收端。发送端的功能主要为提取文件摘要,文件加密,密钥加密,文件发送;接受端的功能是接受文件,解密密钥,解密内容,验证文件完整性。1.2小组成员及分工xx:md5算法计算文件哈希值,实现文件的完整性检查xx:AES算法加解密文件xx:安全协议以及总体功能架构设计1.3课题背景及意义
4、 随着计算机技术的迅速发展,在计算机的应用领域中软件系统的应用越来越广泛。而文件传输是其中重要的一个方面,现在人们对传输系统的性能和功能要求也越来越高,但文件传输系统尤其是在文件传输的安全性上却存在着巨大的缺陷。大多数的安全文件传输系统的安全性体现在了算法的改良或者使用更高级的算法。这个实用程序的要求是安全的主机之间传输大文件,我们需要一个强大的密码加密数据发送机制。为了防止密钥泄露问题,我们通常使用公钥加密加密数据。但是,权衡使用公钥加密大文件是加密和解密数据的性能瓶颈。所以很明显,我们需要一个对称密钥加密这些大文件传输机制。解决这两个性能问题和密钥分发问题,我用AES(高级加密标准)256
5、位加密加密文件和RSA公钥加密对称的AES加密密钥。第二部分 课程设计过程2.1 课题需求分析 2.1.1 需求分析 随着信息技术的迅速发展与大规模的普及应用,社会已经进入一个信息时代,网络通信成为至关重要的环节,给政府和企业带来了极大的劳动效率的提高。行业信息化建设多年来,许多公司的核心资产和数据都已经电子化,更具体地说,就是传统的技术、档案、资料都已经变成电子数据的形式保存并传递。随着这些硬件、软件、系统的广泛应用的同时也给网络安全管理人员增加很多问题,其中,最重要的就是文件传输中的信息安全问题。信息安全也是网络安全中最重要的一部分,其它的东西在
6、遭破坏后还可以重新回复或补救,而信息一旦丢失或者遭盗窃,那带来的损失就是无法估量的。不用共享的信息平时在做好信息备份即可,但如果涉及到网络文件的传输,那就必须要使用网络文件传输软件,一个好的网络文件传输软件不仅有海量的传输功能,最为重要的还是必须具有强大的安全性。这样能有效的防范因为操作不当或者被攻击而导致的数据丢失。 文件网络传输的安全保障问题已经成为一个关注的焦点。文件的安全传输问题在当代社会引起了很多人的关注。在这种严峻的形势下,一个简单的实用功能,而且还可以运行于Windows操作系统,具有可移植性一定程度上,网络安全的文件传输工具可二次开发势在必行。 文件传输是各企事业及国家核心机构
7、管理中必不可少的一部分,对文件传输进行规范化、制度化、科学化管理,对工作效率和工作质量有很大的提高,有利于促进企业向着高效,快速的方向发展。然而,文件传输管理也是日常管理工作中容易被忽视的一项工作,也是不容易做好的一项工作。稍有不慎,可能造成重要文件的丢失,后果严重。一个好的文件传输系统应该是稳定可靠的,并且适用于各类企事业、机关单位、学校、医院等。系统对传输的各个环节进行科学管理,完成对日常文件传输的规范化、制度化、科学化,帮助企业更有效、更可靠的进行文件传输的管理。 2.1.2 设计目的与要求文件安全传输系统的实现目标 安全文件传输系统以文件的安全传输为核心,以网络为
8、支撑,是一个功能齐全的系统,方便了用户对文件传输的使用,同时用户在不了解该软件的加解密算法的情况下,依然可以对该软件进行使用。既保证了文件传输的安全性和完整性,也保证了用户的可操作性,便于信息的交流及共享。具体设计目标 该软件要具有两种状态,一种为发送端状态,一种为接收端状态。该软件的发送端可以把要传输的文件用AES加密算法进行加密,并且能够完整的将加完密的文件、被加密的AES密钥、文件的MD5值等安全地传送到接收端。而接收端,可以接收发送端传来的文件和密钥,并且根据密钥将传来的文件进行解密。通过比较计算出的解密后文件的MD5值与接收到的Md5值检查文件的完整性。同时,软件操作界面简洁大方、操
9、作容易,功能强大,符合文件传输的完整性和安全性的要求。2.2 概要设计 2.2.1 系统功能描述计算待发送文件的MD5哈希值。这将用来验证文件的完整性。使用一个随机数生成器生成一个32字节的密钥,用作AES的密钥。用这个密钥和初始化向量加密待发送文件形成密文。用RSA公钥加密32位的AES密钥,形成被加密的AES密钥。服务器功能服务器运行作为一个FTP服务器监听默认FTP端口。一旦文件接收到服务器,服务器触发解密()函数来解密接收到的文件。在解密的过程中,服务器提取前32个字节为原始文件哈希,第二个512字节的AES加密对称密钥和其他文件加密的文件数据。收到内容后分别读取
10、被加密的AES密钥,通过RSA私钥解密得到AES密钥。读取初始化向量,与解得的AES密钥一起解密得到的密文,得到原始文件。用户端通过解密文件计算Md5值,与服务器端发送过来的MD5值比较,看两者是否相等, 如果两个散列值是相等的,完整性验证通过。否则,服务器识别文件完整性和删除文件失败。服务器的目的是接受匿名登录。以及匿名用户有足够的权限来传输文件到服务器使用原始的FTP操作。 2.2.2 系统功能流程图最终文件被转移的结构将如下:初始化向量使用AES CBC模式操作客户端流程图:服务端流程图:2.2.3模块设计加密AES 256位加密是使用32字节密钥(256位)对称密钥。文件发送分成固定大
11、小的块的大小的倍数16因为AES块密码标准使用16字节块。当分块,任何块不符合尺寸16字节的倍数的适当空间。CBC(密码块链接)是用作AES的操作模式。 解密一旦服务器从客户端接收的文件,从文件服务器提取不同部分,包括文件的MD5哈希,AES加密对称密钥和实际的加密文件。然后用OAEP恢复服务器使用RSA加密对称密钥加密。使用AES对称密钥恢复,服务器使用AES加密解密加密文件。然而,解密的文件比客户端实际加密不同,因为它填补了空间为AES加密。然后服务器截断解密文件到原来的大小。验证完整性MD5散列用于验证收到的文件的完整性。服务器计算MD5哈希的解密和截断文件并与MD5哈希客户发送附加到文
12、件。Python的hashlib库中使用这个程序来计算MD5哈希文件。如果两个MD5散列值是相等的,完整性保护。FTP服务器发送的结果完整性验证通过一个单独的套接字连接到服务器端在特定端口上运行。当客户端接收到完整的验证结果,客户端显示结果,并终止与成功的文件传输客户端程序。性能分析我用AES 256位加密加密文件在客户端。然而,因为这个工具是用来传输大文件,之间有一个权衡的性能和安全加密。尽管AES - 256比AES - 128加密提供了更好的加密,加密大文件256 AES加密可以影响效用自256位加密的性能更先进的比128位加密。但这是可以预防的,如果一个16字节的密钥用于加密。我用CB
13、C(密码块链接)AES的操作模式。一个问题是,在CBC模式下,一块用来加密的密码文本文件的下一个块。所以不能并行加密。但在解密,明文块可以从两个相邻块的密文中恢复过来。所以可以并行加密和性能可以提高在解密。安全协议AES密钥使用RSA公钥加密,保障密钥安全分配。2.3 具体功能的实现2.3.1预备知识l TCP/IP网络编程l Windows平台下程序开发l Python语言编程l 对对称与非对称加密算法的理解2.3.2算法原理在安全协议的实现中,我用到了RSA算法1 RSA算法简介RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由
14、已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方
15、式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。2 RSA安全性RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数 的算法,那它肯定可以修改成为大数分解算法。 RSA 的一些变种算法已被证明等价于大数分解。不管
16、怎样,分解n是最显然的攻击方法。人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用 情况而定。三算法实现过程-算法实现描述1选择两个不同的大素数p、q2. 计算n = p*q。 3. 计算n的欧拉函数(n)=(p-1)(q-1)。 4. 选择整数e作为公钥,使e与(n)互素,且1<e<(n)。 5. 用欧几里得算法计算d作为私钥,使d*e=1 mod(n)。6. 加密:C=Me mod n 7. 解密:MCd mod n=(Me)d mod n= Med mod n 。2.4 运行结果
17、2.4.1 程序界面截图2.5 待改进问题界面不够友好,只实现了基本功能,实际中会遇到的很多因素没有考虑周全。第三部分 课程设计体会3.1课程设计心得体会心得总结: 我们大概地将整个课程设计分为三个阶段,第一阶段主要通过查找资料,研究信息安全领域的近期热点与难点,并做必要的需求分析,确定课程设计的目标、题目,提出粗略的设计方案。第二阶段主要任务是设计程序,完成相应的功能。第三阶段主要是调试程序、做必要的修改、编辑报告的公共部分。 我在第二阶段担任组长,主要是给各组员分配相应的编程任务,实现该系统相应的安全功能。让季雨量用Md5算法实现文件的完整性检查。刘帅主要负责用AES
18、算法实现文件的加解密。最后我将组员们的代码组合到一起,加上安全协议功能形成集成性相对较高的系统。3.2源程序清单Client functionality:def startClient():_x000D_from ftplib import FTP_x000D_thread.start_new_thread(validation_server, (TCP_CON_PORT,)_x000D_hostname = sys.argv2_x000D_ftp = FTP(hostname)_x000D_ftp.login()_x000D_filepath = sys.argv3_x000D_encFil
19、epath = encrypt(filepath)_x000D_x000D_localfile = open(encFilepath,"rb")_x000D_try:_x000D_print "! File Transfer in Progress."_x000D_result = ftp.storbinary("STOR "+str(os.path.basename(encFilepath),localfile)_x000D_except Exception as e:_x000D_print e _x000D_else:_x000
20、D_print str(result)_x000D_x000D_os.system("rm "+encFilepath)_x000D_print "! Waiting for integrity validation."_x000D_while True:_x000D_passServer Functionalitydef startServer():_x000D_authorizer = DummyAuthorizer()_x000D_x000D_authorizer.add_anonymous(USER_HOME + "/anonymous
21、", perm='elradfmwM') _x000D_handler = MyHandler _x000D_handler.authorizer = authorizer _x000D_handler.banner = "Server Ready."_x000D_hostname = ""_x000D_address = (hostname,21)_x000D_server = FTPServer(address, handler)_x000D_server.max_cons = 10 _x000D_server.serve_
22、forever()# start the serverEncryptiondef encrypt(filepath):_x000D_print "! Starting Encryption."_x000D_aes_key = os.urandom(32)_x000D_out_filename = filepath + ".enc"_x000D_filehash = hashlib.md5(open(filepath).read().hexdigest()_x000D_x000D_public_key_loc = PUB_KEY_LOC_x000D_x00
23、0D_pubkey = open(public_key_loc, "r").read()_x000D_rsakey = RSA.importKey(pubkey)_x000D_rsakey = PKCS1_OAEP.new(rsakey)_x000D_encKey = rsakey.encrypt(aes_key)_x000D_outFile = open(out_filename,"w+")_x000D_x000D_outFile.write(filehash)_x000D_x000D_outFile.write(encKey)_x000D_x000D
24、_iv = ''.join(chr(random.randint(0, 0xFF) for i in range(16)_x000D_encryptor = AES.new(aes_key, AES.MODE_CBC, iv)_x000D_filesize = os.path.getsize(filepath)_x000D_chunksize=64*1024_x000D_x000D_with open(filepath, 'rb') as infile:_x000D_outFile.write(struct.pack('<Q', files
25、ize) _x000D_outFile.write(iv)_x000D_x000D_while True:_x000D_chunk = infile.read(chunksize)_x000D_if len(chunk) = 0:_x000D_break_x000D_elif len(chunk) % 16 != 0:_x000D_chunk += ' ' * (16 - len(chunk) % 16)_x000D_outFile.write(encryptor.encrypt(chunk)_x000D_x000D_outFile.close()_x000D_print &q
26、uot;+ Encryption successful!"_x000D_return out_filenameDecryptiondef decrypt(filepath):_x000D_print "! Starting decryption."_x000D_dec_filename = ANONYMOUS_FILEPATH + os.path.basename(filepath).strip(".enc")_x000D_inFile = open(filepath,"r")_x000D_chunksize=64*1024_x000D_hash = inFile.read(32)_x000D_encAESKey = inFile.read(512)_x000D_x000D_private_key_loc = PRIV_KEY_LOC_x000D_privkey = open(private_key_loc, "r").read()_x000D_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年招标代理服务协议
- 2024教育培训费用协议协议
- 2024年车展参展商协议范本
- 保健食品区域代理协议(2024年)
- DB11∕T 1602-2018 生物防治产品应用技术规程 白蜡吉丁肿腿蜂
- 2024装饰监理服务化协议
- 2024年专业物流服务协议全书修订
- 2024年度电力工程技术合作协议
- 2024年企业万股股权融资合作协议
- 文书模板-《承重架使用协议书》
- 小学绘本阅读《白雪公主》
- 2024届新结构“8+3+3”选填限时训练1~10(学生版)
- JTT791-2010 公路涵洞通道用波纹钢管(板)
- 2024年航空职业技能鉴定考试-无人机AOPA驾驶证考试(视距内驾驶员视距内驾驶员)笔试历年真题荟萃含答案
- 科研的思路与方法
- 山东联通公司招聘笔试题
- 2024年新智认知数字科技股份有限公司招聘笔试参考题库含答案解析
- 金属探测器检测记录
- 安全教育记录范文(25篇)
- 2024年供应链管理竞赛考试题库
- 三年级语文下册第二单元群文阅读教学设计
评论
0/150
提交评论