SSL与TLS的区别
SSL(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层,最初是由网景公司(Netscape)研发,后被IETF(The Internet Engineering Task Force - 互联网工程任务组)标准化后写入(RFCRequest For Comments 请求注释),RFC里包含了很多互联网技术的规范!
起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于HTTP之下TCP之上的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以HPPTS是HTTP+SSL/TCP的简称。
由于HTTPS的推出受到了很多人的欢迎,在SSL更新到3.0时,IETF对SSL3.0进行了标准化,并添加了少数机制(但是几乎和SSL3.0无差异),标准化后的IETF更名为TLS1.0(Transport Layer Security 安全传输层协议),可以说TLS就是SSL的新版本3.1,并同时发布“RFC2246-TLS加密协议详解”,如果想更深层次的了解TLS的工作原理可以去RFC的官方网站:www.rfc-editor.org,搜索RFC2246即可找到RFC文档!
SSL连接过程
SSL在通信时会先发送一段内容:
(1)客户端可以支持的SSL最高版本号
(2)用于生成主秘密的32字节的随机数
(3)确定会话的会话ID
(4)客户端可以支持的密码套件列表
密码套件格式:每个套件都以“SSL”开头,紧跟着的是密钥交换算法。用“With”这个词把密钥交换算法、加密算法、散列算法分开,例如:SSL_DHE_RSA_WITH_DES_CBC_SHA,表示把DHE_RSA(带有RSA数字签名的定义为Diffie-HellMan)密钥交换算法;把DES_CBC定义为加密算法;把SHA定义为散列算法。
(5)客户端可以支持的压缩算法列表
选择密钥过程:
SSL客户端(也是TCP的客户端)在TCP连接建立之后,发出一个ClientHello来发起握手,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL的服务器端会回应一个ServerHello,这里面确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。Client在收到这个消息后会生成一个秘密消息,用SSL服务器的公钥加密后传过去,SSL服务器端用自己的私钥解密后,会话密钥协商成功,双方可以用同一份会话密钥来通信了。(转自:http://blog.csdn.net/misslong/article/details/9698657)
当服务器收到客户端发来的请求通信消息后会作出回应消息
回应消息如下
(1)一个SSL版本号。取客户端支持的最高版本号和服务端支持的最高版本号中的较低者。
(2)一个用于生成主秘密的32字节的随机数。(客户端一个、服务端一个)
(3)会话ID
(4)从客户端的密码套件列表中选择的一个密码套件
(5)从客户端的压缩方法的列表中选择的压缩方法
这个阶段之后,客户端服务端知道了下列内容:
(1)SSL版本
(2)密钥交换、信息验证和加密算法
(3)压缩方法
(4)有关密钥生成的两个随机数。
(5)颁发证书机构,过期时间!
随机数是用来验证通信双方在连接过程中的准确性!
以上SSL连接过程转自:http://www.cnblogs.com/zhuqil/archive/2012/10/06/2712768.html
TLS与SSL连接过程无任何差异
SSL与TLS两者所使用的算法是不同的,SSL使用的是MAC哈希算法,TLS使用的是RFC-2104定义的HMAC算法,两者差异是在填充字节与密钥之间一个使用的是连接运算,一个使用的是异或运算,MAC和HMAC在取值范围也是不同的,但是安全度是相同的!
SSL可以分为两个协议,SSL记录协议(SSL Record Protocol)为TCP协议在通信提交数据时提供数据封装、压缩、加密等基本操作!
SSL握手协议(SSL Handshake Protocol)它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
TLS与SSL的两个协议工作方式与SSL一样!
SSL所使用的版本为3.0,版本号也为3.0.x(x代表未知数因为SSL还在更新),而TLS版本为1.0,但版本号却为SSL3.1.0!
TLS增加了许多新的报警代码,比如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)等,但同时也支持SSL协议上所有的报警代码!
TLS和SSL不能共用,因为在认证证书时TLS指定必须与TLS之间交换证书,因为TLS与SSL所使用的加密算法是不同的,所以不能把TLS与SSL一并使用!
在加密数据前会额外填充一部分在SSL中,填充后的数据长度要达到密文块长度的最小整数倍,而在TLS中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为255字节),并和公开密钥拼接,随后在跟着密文,这种方式可以防止基于对报文长度进行分析的攻击!
TLS对随机数算法也进行了增强,TLS所使用的随机数算法是HMAC中定义的PRF来完成的,PRF使用两种散列算法保证其安全性。如果任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的,而SSL则使用的是MAC算法生成的随机只是用了一种散列算法!
使用与不使用SSL/TLS加密会带来的威胁与好处(转自:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html)
不使用SSL与TLS加密会带来的威胁:
(1) 窃听风险(eavesdropping):第三方可以获知通信内容。
(2) 篡改风险(tampering):第三方可以修改通信内容。
(3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。
使用SS;和TLS加密所带来的好处
(1) 所有信息都是加密传播,第三方无法窃听。
(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
(3) 配备身份证书,防止身份被冒充。
下面来解释一下加密中“对称加密”和“非对称加密”的区别
对称加密:
在对称加密中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,也可以不使用算法加密!
非对称加密:
甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密
另一方面,甲方可以使用乙方的公钥对机密信息进行加密后在发送给乙方;乙方在使用自己的四要对数据进行解密在验证!
甲/乙方只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。
客户端/服务器在交换密钥时可以从中所使用的两把密钥中随便选择一把作为公钥发送给目标方!
双方优点:
对称加密不需要经过过多的数学计算,不会影响速率,而非对称加密需要经过复杂的数学计算,需要CPU ALT运算单元进行大量算数运算,会提高耗电量,降低性能,影响速率,降低网页访问速率,不过根据现在的电脑配置这些问题都不算什么,所以为什么在使用HTTP和HTTPS时感觉没用差别一样!
但是服务器只承载一个HTTPS的网站还好如果承载过多的话再好的配置也会吃不消,正所谓三个臭皮匠 胜过诸葛亮,所以不是所有网站都要用HTTPS,仅个别需要提交敏感类数据时才建议使用!
SSL与TLS的区别的更多相关文章
- 斐迅面试记录—SSL和TLS的区别
SSL 是洋文“Secure Sockets Layer”的缩写,中文叫做“安全套接层”.它是在上世纪90年代中期,由网景公司设计的.(顺便插一句,网景公司不光发明了 SSL,还发明了很多 Web 的 ...
- http、https、SSL、TLS的区别
一.HTTP和HTTPS之间的区别 HTTP是一种协议,全称叫作:超文本传输协议(HTTP,HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议.所有的WWW ...
- SSL与TLS的区别以及介绍
转载 :http://kb.cnblogs.com/page/197396/ SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议 ...
- SSL与TLS的区别以及介绍(转)
SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层.SSL通过互相认证.使用数字签名确保完整性.使用加密确保私密性,以实现客户 ...
- SSL与TLS有什么区别
SSL与TLS有什么区别(最全面的知识点都在这) 发布日期:2018-10-12SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协 ...
- 浅谈HTTPS协议和SSL、TLS之间的区别与关系
HTTP可能是我们见到过最多的一个字符串了,应该没有之一,而对于HTTPS到来和趋势,我们又开始看到SSL/TLS,所以对于一般不只做技术的人来说这或许还是一个疑问,那么子凡就趁最近在折腾这方面来给大 ...
- JavaMail: SSL vs TLS vs STARTTLS
SSL vs TLS vs STARTTLS There's often quite a bit of confusion around the different terms SSL, TLS an ...
- 安全协议系列(四)----SSL与TLS
当今社会,电子商务大行其道,作为网络安全 infrastructure 之一的 -- SSL/TLS 协议的重要性已不用多说.OpenSSL 则是基于该协议的目前应用最广泛的开源实现,其影响之大,以至 ...
- Fiddler如何抓取使用了SSL或TLS传输的Android App流量
上篇文章介绍了Burpsuite如何抓取使用了SSL或TLS传输的Android App流量, 那么使用Fiddler的时候其实 也会出现与burpsuite同样的情况,解决方案同样是需要将Fiddl ...
随机推荐
- MongoDB的Find详解(一)
1.指定返回的键 db.[documentName].find ({条件},{键指定}) 数据准备persons.json var persons = [{name:"jim",a ...
- Git常见命令整理
Git常见命令整理 + 注释 git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 gi ...
- R语言的输出函数cat,sink,writeLines,write.table
根据输出的方向分为输出到屏幕和输出到文件. 1.cat函数即能输出到屏幕,也能输出到文件. 使用方式:cat(... , file = "", sep = " " ...
- QT线程
一.QObject子类 说明:以串口线程传输文件为例子,使用的是MoveTothread函数. void QObject::moveToThread(QThread *targetThread)可以将 ...
- 教你在windows10环境下如何安装minepy并成功运行!
在学习使用sklearn做单机特征工程这篇文章时,发现在计算互信息时from minepy import MINE代码运行出错ModuleNotFoundError: No module named ...
- mysqldump 的常用操作
以下是 mysqldump 的一些使用参数 备份数据库#mysqldump 数据库名 >数据库备份名 #mysqldump -A -u用户名 -p密码 数据库名>数据库备份名 #mysql ...
- 16个tomcat面试题
1)解释什么是Jasper? Jasper是Tomcat的JSP引擎 它解析JSP文件,将它们编译成JAVA代码作为servlet 在运行时,Jasper允许自动检测JSP文件的更改并重新编译它们 2 ...
- 关于Hystrix
RPC远程调用过程中如何防止服务雪崩效用 微服务中如何保护服务 Hystrix是一个微服务中关于服务保护框架,在分布式中能够实现对服务容错.出错之后的预备方案 背景 在今天,基于SOA的架构已经大行其 ...
- UOJ12 猜数
这一天,小Y.小D.小C正在愉快地玩耍. 小Y是个数学家,他一拍脑袋冒出了一个神奇的完全平方数 nn. 小D是个机灵鬼,很快从小Y嘴里套出了 nn 的值.然后在脑内把 nn 写成了 a×ba×b的形式 ...
- JDBC批量插入blob数据
图片从接口读取后是base64的字符串,所以转成byte数组进行保存. 我们一般保存数据的话,都是基本数据,对于这些图片数据大部分会将图片保存成Blob,Clob等. Blob存储的是二进制对象数据( ...