SSL与TLS的区别

SSL(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层,最初是由网景公司(Netscape)研发,后被IETF(The Internet Engineering Task Force - 互联网工程任务组)标准化后写入(RFCRequest For Comments 请求注释),RFC里包含了不少互联网技术的规范!html

起初是由于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)客户端能够支持的密码套件列表.net

密码套件格式:每一个套件都以“SSL”开头,紧跟着的是密钥交换算法。用“With”这个词把密钥交换算法、加密算法、散列算法分开,例如:SSL_DHE_RSA_WITH_DES_CBC_SHA,表示把DHE_RSA(带有RSA数字签名的定义为Diffie-HellMan)密钥交换算法;把DES_CBC定义为加密算法;把SHA定义为散列算法。htm

(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,仅个别须要提交敏感类数据时才建议使用!

相关文章
相关标签/搜索