




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
云南大学软件学院期末课程报告Final Course ReportSchool of Software, Yunnan University序号学号姓名120141120183朱梓瑞220141120167刘裕兴学期: 2016秋季学期 课程名称: 网络安全技术及实践 任课教师: 姚绍文 实践题目: SSL协议及三次握手分析和实践 小 组 长: 朱梓瑞 联系电话:电子邮件: 2485503600 完成提交时间: 2016年12月29日作业截止时间: 2016年12月29日2016年秋季学期 网络安全技术及实践 成绩考核表年级: 2014级 专业: 网络工程 学号: 20141120183 姓名: 朱梓瑞 本人所做工作: 系统功能加密算法部分实现,报告编写 指标内容分值指标内涵及评估标准得分技术路线的可行程度15合理可行,具体且有创新合理可行,具体基本合理可行不够合理或不够具体程序或系统设计思路15程序或系统思路非常清晰、运行正确程序或系统思路基本清晰、运行正确程序或系统思路清晰、环境配置错误无法运行程序或系统思路不清晰,程序无法运行业务流程理解及角色、权限、资源分配15业务理解深刻,角色、权限、资源分配正确业务理解基本正确,角色、权限、资源分配基本合理业务理解较为混乱,角色、权限、资源分配尚可业务理解混乱,角色、权限、资源分配混乱理论知识应用水平15用理论知识对程序设计方法、思路和代码进行详尽、准确地分析和总结用理论知识对程序设计方法、思路和代码进行较准确地分析和总结理论知识应用一般理论知识差达到预期目标的程度10完全达到基本达到无法预见未能达到报告撰写质量(30分)5报告非常完整报告比较完整完整程度一般报告不完整5逻辑结构清晰逻辑组织较好逻辑组织一般逻辑不清5内容非常丰富内容较丰富内容一般内容欠缺5文字表达非常好文字表达较好文字表达一般文字表达差,意思不明了5图表制作非常专业化图件制作良好图件制作一般图件制作效果差5整体效果很好整体效果良好整体效果一般整体效果差综合得分(满分100分)评语2016年秋季学期 网络安全技术及实践 成绩考核表年级: 2014级 专业: 网络工程 学号: 20141120167 姓名: 刘裕兴 本人所做工作: 项目程序三次握手模拟程序部分实现 指标内容分值指标内涵及评估标准得分技术路线的可行程度15合理可行,具体且有创新合理可行,具体基本合理可行不够合理或不够具体程序或系统设计思路15程序或系统思路非常清晰、运行正确程序或系统思路基本清晰、运行正确程序或系统思路清晰、环境配置错误无法运行程序或系统思路不清晰,程序无法运行业务流程理解及角色、权限、资源分配15业务理解深刻,角色、权限、资源分配正确业务理解基本正确,角色、权限、资源分配基本合理业务理解较为混乱,角色、权限、资源分配尚可业务理解混乱,角色、权限、资源分配混乱理论知识应用水平15用理论知识对程序设计方法、思路和代码进行详尽、准确地分析和总结用理论知识对程序设计方法、思路和代码进行较准确地分析和总结理论知识应用一般理论知识差达到预期目标的程度10完全达到基本达到无法预见未能达到报告撰写质量(30分)5报告非常完整报告比较完整完整程度一般报告不完整5逻辑结构清晰逻辑组织较好逻辑组织一般逻辑不清5内容非常丰富内容较丰富内容一般内容欠缺5文字表达非常好文字表达较好文字表达一般文字表达差,意思不明了5图表制作非常专业化图件制作良好图件制作一般图件制作效果差5整体效果很好整体效果良好整体效果一般整体效果差综合得分(满分100分)评语摘 要(XXX完成) 随着计算机网络技术的飞速发展,网络安全的重要性日益突出,作为TCP/IP上的SSL安全协议应用越来越广泛。本学期学习了关于SSL协议三次握手的内容,在理解SSL协议三次握手的过程和原理的基础上打算自己编程模拟实现SSL三次握手的过程以便于更好的理解三次握手的交互过程。在本次课题中也对加密算法进行了解和学习,同样打算编程实现简单的加密算法,并尝试把加密程序和模拟SSL三次握手的程序结合起来。关键词:SSL协议,加密算法目录一、【项目构思(Conceive)】51.1引言51.2需求分析7二、【项目设计(Design)】92.1 功能结构图92.2 模拟三次握手过程的程序设计92.3 RSA实现程序设计102.4 程序整体设计流程图10三、具体实现情况121. ssl加密算法研究和实现122. ssl三次握手交互过程研究和实现13四、项目总结14一、【项目构思(Conceive)】1.1引言1.1.1背景及意义随着信息技术的高速发展和广泛应用,因特网(Internet)己渗透到了社会生活的各个领域和各个环节,因特网的触角已经遍及全球的各个角落。网络安全显得越来越重要,计算机安全加密、安全协议、网络防火墙、安全检测预防等,都是在各个方面提高网络的安全性。 基于客户服务器模型的传统 TCP/IP1应用,通过建立客户端到服务器的 TCP 连接来传输数据。通常,由于传统 TCP/IP 的开放性,这种应用是不安全的,主要表现在2: 1) 不具备鉴别通信对方的能力,攻击者可以盗用客户或服务器身份以骗取机密信息。 2)TCP 连接中传输的数据是处于明文状态的,攻击者可以轻易读取。 3)攻击者可以成功修改 TCP 连接中传输的数据而不被通信双方发现。 要解决以上的安全问题,需要在系统中加入如下安全机制3,4: 1)身份认证 使用身份认证技术可以防止身份盗用的发生。可以通过使用证书来实现身份认证。通信的一方通过要求通信对方提供证书,可以对通信对方的身份进行鉴别。 2)信息机密性 对信息进行加密保护可以防止信息在传输过程中被攻击者成功读取。通常使用对称加密技术来保护传输的数据。 3)信息完整性 对信息进行完整性保护可以防止信息在传输过程中被篡改而不被发现。通常使用消息认证码MAC技术来提供信息完整性保护。 通常我们可以通过重写应用系统来加入以上的安全机制。但是,在某些情况下,由于资金困难或其它原因,我们可能不愿仅仅为了增加安全机制而重新设计开发原有应用系统。即使要重新开发应用的安全版本,在新的版本可供使用之前,现有的应用也需继续运行,在过度期间我们希望能保证现有系统的安全性。因此,我们希望有一种不需修改现有应用却能为现有应用提供足够的安全性的方法。 SSL是一个完整而开放的通讯协议5,6,它概括了使用对称密钥算法、公开密钥算法、数字证书等来获取数据保密、数据完整性和身份认证的标准方法,通过对传输层中的数据保护确保了应用数据的安全。SSL协议的优势在于它是与应用层协议独立无关的,该协议可给任何TCP/IP应用提供SSL功能。因此,应用层协议(SMTP, HTTP, FTP 等)可以透明地置于SSL/TLS 之上。 1.1.2 SSL 协议概述1994年,Netscape公司为了保护Web通讯协议HTTP,开发了SSL(Secure Socket Layer)协议,该协议的第一个成熟版本是SSL2.0协议。1995年,发布了SSL3.0,SSL3.0 解决了 SSL2.0中的许多缺陷。在SSL3.0中,客户或者服务器可以在任何时候请求重新握手以重新协商密码算法和密钥。1996年,Netscape将SSL3.0规范11提交给IETF的传输层安全(TLS,Transport Layer Security)工作组进行标准化。TLS工作组于1999 年发布了TLS 1.012。 TLS 1.0(可看作SSL3.1)与SSL3.0非常相似,仅仅有一些细微的协议修改。 TLS工作组目前己发布的RFC (Request for Comments)有: RFC2246:The TLS Protocol Version 1.0 RFC2712:Addition of Kerberos Cipher Suites to Transport Layer Security (TLS) RFC2817:Upgrading to TLS Within HTTP1.1 RFC2818:HTTP Over TLS TLS 工作组目前主要的工作目标是继续推进 TLS 协议的 Internet 标准化进程,同时,为 TLS 定义新的密码组。目前,SSL2.0 已基本上不再使用,SSL3.0 是主要的版本,TLS 1.0 正得到越来越多的支持。 SSL 协议的优势在于它是与应用层协议独立无关的,该协议可给任何 TCP/ IP 应用提供 SSL 功能。现在已有许多用 TLS/SSL 来提供安全性的产品。已有多种开发工具可供那些希望将 TLS/SSL 集成到它们的应用中的开发者使用。如 RSA 公司的SSL-C/J 和 Open Source 软件 OpenSSL,可以在各种各样的软件和硬件产品中发现 TLS/SSL。随着电子商务时代的来临,TLS/SSL13成为目前为止应用最为广泛的安全协议。TLS/SSL 广泛使用的一个原因是它已被集成到了当前可用的每一个 Netscape 和 Internet Explorer 中,使用最多的 Web 服务器 Apache 也支持 TLS/SSL,在各种各样的操作系统中也可找到 TLS/SSL。许多 Linux 厂商已经将 TLS/SSL 包括到他们的操作系统中,不仅用于为 HTTP 通信提供安全性,同时也用来为其它协议(如 FTP, SMTP, TELNET 等)提供安全性。 SSL/TLS最初考虑作为安全Web协议14,现在已经成为运行于Internet的 TCP 协议之上的全新协议层,可用于保护正常运行于 TCP 上的任何应用协议,如 HTTP、FTP 等。1.1.3 SSL协议相关算法理论在 SSL 协议实现中,涉及到多种相关算法,在此概括介绍几种算法: 1. 对称密钥算法 对称密码体制16,17是从传统的简单换位、代替密码发展而来的,有时又叫传统密码学。在大多数对称算法中,其加、解密密钥是相同的,是加密大量数据的一种行之有效的方法。自1977年美国颁布DES密码算法作为美国数据加密标准以来,对称密钥密码体制得到了迅猛地发展,在世界各国得到了广泛关注和应用。 对称密钥算法从加密模式上可分为序列密码和分组密码两种。比较常见的分组密码算法有18-21:DES、IDEA、RC2、RC5等。 2. 公钥加密算法 1976年Diffie和Hellman以及Merkle分别提出了公开密钥密码体制16,17的思想,它要求密钥成对出现,一个为加密密钥,另一个为解密密钥,且不可能从其中一个推导出另一个,因此公钥加密有时也叫做不对称密钥加密。 公钥算法主要有以下两种形式的应用:与散列算法结合来提供数字签名服务22,23;为对称加密应用提供密钥交换服务。常用的公钥算法有以下几种24-26:RSA、DSA、ECC等。3. 单向散列算法(hash算法) 散列也称为散列值或消息摘要,是采用单向散列函数16,17将任意长度的数据块转换为一个定长的、不可逆转的数字,主要用于生成消息体的摘要信息(也称指纹信息)。 目前常用的散列算法所产生的散列值长度都比较长(一般在128位以上),常见的散列算法有27,28:MD5及SHA。1.1.4 开发环境和工具1. linux操作系统2. python语言编程1.2需求分析1.2.1 研究目的 1. 学习并分析SSL协议及三次握手过程,编程实现SSL三次握手的过程 2. 学习并分析加密算法的原理,编程实现简单的加密程序1.2.2可行性分析1. 经济可行性本次课题项目“SSL协议及三次握手分析和实践”使用的工具为虚拟界机,其中liunx操作系统属于开源软件,本次项目不涉及到经济的花费。 2. 时间可行性本次课题预计前半段时间学习理论知识,后3周完成程序的设计和功能的实现3. 技术可行性本次课题中使用到的加密算法都可以简单的实现4. 应用可行性SSL协议当前应用广泛,对通信双方的交互过程实现了认证和加密功能,我们自己编写的程序在功能实现上和完整的SSL协议三次握手过程还有一定的差距,应用可行性一般;加密程序简单实现了加密功能,但还有很多不足的地方,应用可行性一般1.2.5对功能的需求1. 模拟实现SSL协议三次握手的交互过程2. 根据rsa算法原理实现简单的加密程序3. 把加密程序和三次握手的交互过程结合起来,实现完整的SSL协议模拟过程二、【项目设计(Design)】2.1 功能结构图2.2 模拟三次握手过程的程序设计1.客户端和服务器端通过Socket实现交互和会话2.客户端第一步,客户端先生成一个随机数,和客户端支持的加密算法,发送给服务器端3.服务器端进行算法选择,并将包括公钥的ca证书和新的随机数(用ca证书中的公钥加密),发送给客户端4.客户端对ca证书进行验证,在用ca中的秘钥对随机数进行解密,并生成一个新随机数,使用ca中的公钥在进行加密发送给客户端5.客户端在获取这个随机数,用3个随机数计算会话秘钥6.服务器端用这个3个随机数独立计算会话秘钥7.整个通信过程中用hash函数对报文进行摘要,验证报文完整性2.3 RSA实现程序设计1. 生成两个不同的素数 def gen_prime_num(max_num):在这个程序模块中生成一个素数的数组,用来保存生成的素数2. 提示用户选择两个素数,进行生成密钥计算def gen_rsa_key():当用户选择素数之后对两个素数进行计算处理,生成N,e, d,返回(N,e)和(N,d)分别作为公钥pub_key和密钥pri_key3.在主函数里面调用上面的参数进行加密过程,对用户输入的字符串进行加密操作2.4 程序整体设计流程图1. 三次握手过程流程图2. RSA加密算法流程图三、具体实现情况1. ssl加密算法研究和实现1. 凯撒算法原理:它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E实现:采用python编程,实现输入字符串的时候,程序提示用户输入想要移动的位数,成功对输入的字符加密程序运行结果截图:2. rsa算法原理:. 选取两个大素数p,q。. 计算n=pq,(n)=(p-1)(q-1)。. 随机选取正整数e, 1e(n), 满足gcd(e,(n) = 1。. 计算d,满足de1(mod(n)。p,q,(n), d是保密的,丢弃p,q,(n);只保留d,则n,d为私钥;n,e是公开,为公钥。. 加密变换:对明文m, 1mn, 加密后的密文为 c = me(mod n)。. 解密变换:对密文c, 1cn, 解密后的明文为 m = cd(mod n)。程序运行截图:2. ssl三次握手交互过程研究和实现实现过程:(1)对ssl协议的源代码进行学习和理解,然后配合原理进行简单调用,并用python语言编写程序实现客户端和服务器之间的交互过程,使用客户端写入数据到ssl.txt文件里面,服务器端读取ssl.txt文件里的数据来模拟客户端和服务器之间的数据传输交互过程(2)先启动客户端,这时候客户端生成一个随机数1,将随机数1和支持的算法合并为一个字符串,使用hash()函数对其进行处理,把生成的报文摘要和支持的算法和随机数1一起写入ssl.txt文件里 (3)启动服务器,服务器读取ssl.txt文件里面的前三行数据,进行hash()处理之后生成另一个报文摘要,将其与客户端的报文摘要进行对比,验证数据完整性,如果两个数据相同,则说明报文是完整的,完成第一次握手。然后,服务器端生成随机数2和CA证书(CA证书及CA的公钥使用固定的参数),并写入到ssl.txt文件中(4) 客户端读取ssl.txt文件里的第4、5两行数据,和服务器端生成的随机数2、CA证书进行对比,验证身份,如果两个数据相同则说明身份验证成功,完成第二次握手。然后客户端生成第三个随机数,使用3个随机数计算之后生成会话密钥,把会话密钥写入ssl.txt文件里(5) 服务器端使用三个随机数生成会话密钥,读取ssl.txt里面的第6行数据,与自己生成的会话进行比较,如果两个值相同,则会话密钥正确且安全,将服务器端的会话密钥写入到ssl.txt文件里面,服务器端的第三次握手结束(6)客户端读取ssl.txt第7行数据,将其和自己的会话密钥比较,如果相同,则会话密钥正确且安全,将服务器端的会话密钥写入到ssl.txt文件里面,客户端的第三次握手结束四、项目总结1. 本次项目并没有全部完成,最后的功能集成没有成功,这里算是本次项目的一个遗憾之处,在总体设计思想上我觉得我们的项目还不错,但功能上还比较简单,在以后的项目中对功能的开发能力还有待提高2. 虽然本次项目的功能比较简单,但是功能上却是我们自己编写代码完成的,通过自己一行一行的写代码让我们学到了很多东西,即更加深入了了解三次握手的过程,也对自己的编程水平有了客观的认识和提高3. 在本次项目的完成中我们也感受到了自己的不足之处,处理代码的能力还需要大大提高,对于功能集成和界面设计制作的能力还不够4. 本学期在课堂上和课下都学到了很多东西附录:代码RSA:# -*- coding:utf-8 -*- import math import random def gen_prime_num(max_num): prime_num= for i in xrange(2,max_num): temp=0 sqrt_max_num=int(math.sqrt(i)+1 for j in xrange(2,sqrt_max_num): if i%j=0: temp=j break if temp=0: prime_num.append(i) return prime_num def gen_rsa_key(): prime=gen_prime_num(500) print prime-80:-1 while 1: prime_str=raw_input(n please choose two prime number from above: ).split(,) p,q=int(x) for x in prime_str if (p in prime) and (q in prime): break else: print the number you enter is not prime number. N=p*q r=(p-1)*(q-1) r_prime=gen_prime_num(r) r_len=len(r_prime) e=r_primeint(random.uniform(0,r_len) d=0 for n in xrange(2,r): if (e*n)%r=1: d=n break return (N,e),(N,d) def encrypt(pub_key,origal): N,e=pub_key return (origal*e)%N def decrypt(pri_key,encry): N,d=pri_key return (encry*d)%N if _name_=_main_: pub_key,pri_key=gen_rsa_key() print public key ,pub_key print private key,pri_key origal_text=raw_input(n please input the origal text: ) encrypt_text=encrypt(pub_key,ord(x) for x in origal_text decrypt_text=chr(decrypt(pri_key,x) for x in encrypt_text encrypt_show=,.join(str(x) for x in encrypt_text) decrypt_show=.join(decrypt_text) print encrypt text: ,encrypt_show print decrypt text: ,decrypt_showclient:import reimport sys reload(sys) import randomimport math sys.setdefaultencoding(utf8)def sourse(list):slist=random.sample(list,1)a=slist0return adef gen_prime_num():max_num=500 prime_num= for i in xrange(2,max_num): temp=0 sqrt_max_num=int(math.sqrt(i)+1 for j in xrange(2,sqrt_max_num): if i%j=0: temp=j break if temp=0: prime_num.append(i) print prime_numreturn prime_numif _name_=_main_:a=input(whitch encryption algorithm?n:1.rsa,2.*n)if (a=1):print first handshanke begin:f= open(ssl.txt,a)a=sourse(gen_prime_num()firstsecret= ab= nrsan+str(a)c=str(hash(b)+bf.write(c)print cf.close()if (a=2):print servce only support * algorithmb=input(already second handshanke?ok?n)if (b=1):print second handshanke begin:i=2f= open(ssl.txt,r)for i in range(5):A = f.readline()if (i=3):secondsecret=Aprint secondsecret:,secondsecretif (i=4):str1=servce.ca20141120167 *if (A=str1):print Authentication successelse:print identifiy errorf.close()f= open(ssl.txt,a)a= random.randint(0,99)print a#pre_master_secret=encrypte(pre_master_secret)#use secondRandomepre_master_secret=str(a)print pre_master_secret,pre_master_secret#f.write(pre_master_secret) open(ssl.txt,r)#MAC_secret=str(secondsecret)+str(firstsecret)+str(pre_master_secret)#a= MAC_secret#b= n+astr1=123a=str1b=n+af.write(b)printClient mac :,af.close()b=input(already finall handshanke?ok?n)if (b= 1):print finally handshanke begin:i=6f= open(ssl.txt,r)for i in range(7):s=f.readline()if (i=6):chsecret=sprint hsecert:,sstr1=123str2=str(s)if (str2=str1):print servce compliteelse:print errorexit()print finally handshanke endf.close()servce:import reimport sys reload(sys)import random sys.setdefaultencoding(utf8)import mathdef sourse(list):slist=random.sample(list,1)a=slist0return adef gen_prime_num():max_num=500 prim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机场领导面试题及答案
- 导播岗位考试题及答案
- 中学语文课程实习总结模版
- 人生的目标班会课件
- 农村电能储存承包协议书
- 乡村公路严禁超载协议书
- 政府养老服务委托协议书
- 夫妻协议离婚房子协议书
- 教育行业合同终止协议书
- 房子购房合同转让协议书
- 重症监护室感染管理制度
- T-CNFIA 208-2024 花胶干鱼鳔标准
- 2025年中央一号文件参考试题库100题(含答案)
- 《GIS实践教学》课件
- 中国糖尿病防治指南(2024版)图文完整版
- 《糖尿病酮症酸中毒》课件
- 2023-2024学年天津市和平区八年级(下)期末数学试卷(含答案)
- 2021去远方上海研学旅行方案申请及综合反思表
- 新闻记者职业资格《新闻采编实务》考试题库(含答案)
- 【MOOC】人工智能:模型与算法-浙江大学 中国大学慕课MOOC答案
- 《物理化学》第二章-热力学第一定律课件
评论
0/150
提交评论