SSL,TLS

今天忽然收到邮件说SSL不能用了,基于SSL的HTTPS协议不通了,怎么办? java/android 的网络编程简直一窍不通,平时都是用到了问百度。只能恶补有关网络的知识了。html

传输协议:java

传输协议中各层都为上一层提供业务功能。为了提供这种业务功能,下一层将上一层中的数据并入到本层的数据域中,而后经过加入报头或报尾来实现该层业务功能,该过程叫作数据封装。用户的数据要通过一次次包装,最后转化成能够在网络上传输的信号,发送到网络上。当到达目标计算机后,再执行相反的拆包过程。这相似于平常生活中写信,把本身要表达的意思写到纸上,有兴趣的话还要把纸折叠成特殊的形状,而后放到信封里并封好口,写好收信人的地址、邮政编码和姓名,再贴上邮票,邮局的工做人员再盖上邮戳送到收信人所在邮局,邮递员按信上的地址把信交给收信人,收信人再拆信,阅读其内容。android

下层可以向上层提供的服务有两种形式:面向链接的服务(TCP)和无链接的服务(UDP)。
TCP:传输控制协议,当传输出现错误时能自动予以纠正;
UDP:用户数据包协议,当传输出现错误时会将错误信息丢弃;
UDP方式比TCP方式有更强大的容错性,采用UDP的话,它的缓冲速度比TCP快45%,并且能够大大的节省网络共享带宽,当网络出现不稳定时,不会常常出现缓冲,因此很多影视节目采用UDP方式传送。

 

 SSL协议:web

SSL协议位于TCP/IP协议与各类应用层协议之间,为数据通信提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它创建在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它创建在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。算法

 

SSL协议提供的服务主要有:编程

  1)认证用户和服务器,确保数据发送到正确的客户机和服务器;浏览器

  2)加密数据以防止数据中途被窃取;安全

  3)维护数据的完整性,确保数据在传输过程当中不被改变。服务器

SSL协议的工做流程:网络

  服务器认证阶段:1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话链接;2)服务器根据客户的信息肯定是否须要生成新的主密钥,如须要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

  用户认证阶段:在此以前,服务器已经经过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。

  从SSL 协议所提供的服务及其工做流程能够看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,因为运做电子商务的企业大可能是信誉较高的大公司,所以这问题尚未充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程当中的单一认证问题就愈来愈突出。虽然在SSL3.0中经过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证,可是SSL协议仍存在一些问题,好比,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。在这种状况下,Visa和 MasterCard两大信用卡公组织制定了SET协议,为网上信用卡支付提供了全球性的标准。

 TLS:安全传输层协议  

Short for Transport Layer Security, a protocol that guarantees privacy and data integrity between client/server applicationscommunicating over the Internet.

The TLS protocol is made up of two layers:

  • The TLS Record Protocol -- layered on top of a reliable transport protocol, such as TCP, it ensures that the connection is private by using symmetric data encryption and it ensures that the connection is reliable. The TLS Record Protocol also is used forencapsulationof higher-level protocols, such as the TLS Handshake Protocol.
  • The TLS Handshake Protocol -- allows authentication between the server and client and the negotiation of an encryption algorithm and cryptographic keys before the application protocol transmits or receives any data.

TLS is application protocol-independent. Higher-level protocols can layer on top of the TLS protocol transparently.

 

 

 https介绍

  HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议

  它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操做,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的彻底套接字层(SSL)做为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通讯。)SSL使用40 位关键字做为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,若是须要的话用户能够确认发送者是谁。。

  https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,所以加密的详细内容请看SSL。

  它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL代表它使用了HTTP,但HTTPS存在不一样于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通信方法,如今它被普遍用于万维网上安全敏感的通信,例如交易支付方面。

 

最新版本的TLS(Transport Layer Security,传输层安全协议)是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它创建在SSL 3.0协议规范之上,是SSL 3.0的后续版本。在TLS与SSL3.0之间存在着显著的差异,主要是它们所支持的加密算法不一样,因此TLS与SSL3.0不能互操做。
1.TLS与SSL的差别
1)版本号:TLS记录格式与SSL记录格式相同,但版本号的值不一样,TLS的版本1.0使用的版本号为SSLv3.1。
2)报文鉴别码:SSLv3.0和TLS的MAC算法及MAC计算的范围不一样。TLS使用了RFC-2104定义的HMAC算法。SSLv3.0使用了类似的算法,二者差异在于SSLv3.0中,填充字节与密钥之间采用的是链接运算,而HMAC算法采用的是异或运算。可是二者的安全程度是相同的。
3)伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的方式。
4)报警代码:TLS支持几乎全部的SSLv3.0报警代码,并且TLS还补充定义了不少报警代码,如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)等。
5)密文族和客户证书:SSLv3.0和TLS存在少许差异,即TLS不支持Fortezza密钥交换、加密算法和客户证书。
6)certificate_verify和finished消息:SSLv3.0和TLS在用certificate_verify和finished消息计算MD5和SHA-1散列码时,计算的输入有少量差异,但安全性至关。
7)加密计算:TLS与SSLv3.0在计算主密值(master secret)时采用的方式不一样。
8)填充:用户数据加密以前须要增长的填充字节。在SSL中,填充后的数据长度要达到密文块长度的最小整数倍。而在TLS中,填充后的数据长度能够是密文块长度的任意整数倍(但填充的最大长度为255字节),这种方式能够防止基于对报文长度进行分析的攻击。
2.TLS的主要加强内容
TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS 在SSL v3.0 的基础上,提供了如下加强内容:
1)更安全的MAC算法;
2)更严密的警报;
3)“灰色区域”规范的更明确的定义;
3.TLS对于安全性的改进
1)对于消息认证使用密钥散列法:TLS 使用“消息认证代码的密钥散列法”(HMAC),当记录在开放的网络(如因特网)上传送时,该代码确保记录不会被变动。SSLv3.0还提供键控消息认证,但HMAC比SSLv3.0使用的(消息认证代码)MAC 功能更安全。
2)加强的伪随机功能(PRF):PRF生成密钥数据。在TLS中,HMAC定义PRF。PRF使用两种散列算法保证其安全性。若是任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。
3)改进的已完成消息验证:TLS和SSLv3.0都对两个端点提供已完成的消息,该消息认证交换的消息没有被变动。然而,TLS将此已完成消息基于PRF和HMAC值之上,这也比SSLv3.0更安全。
4)一致证书处理:与SSLv3.0不一样,TLS试图指定必须在TLS之间实现交换的证书类型。
5)特定警报消息:TLS提供更多的特定和附加警报,以指示任一会话端点检测到的问题。TLS还对什么时候应该发送某些警报进行记录。

 

 

参考:http://www.webopedia.com/TERM/T/TLS.html

http://hengstart.iteye.com/blog/840561

百度百科

相关文章
相关标签/搜索