HTTPS加密

传输层安全

安全套接层(Secure Socket Layer)协议,简称SSL,还有一个传输层安全(Transport Layer Security)协议, 简称TLS.

这里主要讲这个SSL,这些协议的目标之一是提供服务器和客户之间的认证、数据机密性和数据完整性。利用TCP服务的应用层的客户/服务器程序,可以将它们的数据封装在SSL报文(HTTPS)中。如果服务器和客户机具有运行SSL或者TLS程序的能力,那么客户机可以使用URLhttps://代替http://,以允许HTTP消息封装在SSL或者TLS报文中。安全传输

SSL结构

服务

SSL为从应用层接收到的数据提供多种服务。

  • 分段。首先,SSL把数据划分为等于或小于2的14次方个字节的块。
  • 压缩。客户和服务器之间协商一种无损压缩方法,同时利用该方法对每数据的每个分段压缩。这种服务时可选的。
  • 消息完整性。为了保护数据的完整性,SSL使用一种密钥散列函数构建一个MAC(消息认证码)。‘
  • 保密性。为了提供保密性,原始数据和MAC利用对此密钥密码进行加密。
  • 成帧。给被加密的有效载荷增加一个头部,然后将它传递给一个可靠的传输层协议。

密钥交换算法

为了交换一个认证和保密的算法,客户和服务器都需要一个安全秘密集。但是,为了创建这些秘密,双方之间必须建立一个预主密码。SSL为建立这种预主密码定义了几种密钥交换方法

加密/解密算法

客户和服务器也需要就加密和解密算法集成达成一致

散列算法

SSL利用散列算法提供消息的完整性(消息认证)。为了这个目的,SSL定义了几种散列算法

密码组

对于每个SSL对话中,密钥交换、散列和加密算法的组合定义了一个密码组

压缩算法

压缩可选,所以可以使用任意种压缩算法

密码参数生成

这块比较难,只知道为了实现消息的完整性和保密性,SSL需要6个密码秘密信息:4个密钥和两个IV(初始化向量)。后面是精力再深入,这篇就简单了解一下SSL

会话与连接

SSL中的会话与连接不同。会话是服务器和客户机之间的一个关联。在一个会话建立之后,双方就具有了公共的信息,如会话标识符、相互认证的证书、压缩方法、密码组和用于生产密钥进行加密的主密码。

对于两个交换数据的实体店来说,会话的建立是必须的,单这并不足够;它们需要在它们自己之间建立一个连接。两个实体交换两个随机数,利用主密码创建密钥和参数。这些密钥和参数用于对交换的消息进行认证和隐私保护。

一个会话可能包含多个连接。双方之间的一个连接可以被终止或在同一个会话中被重新建立。当一个连接被终止时,双方也可以终止这个会话,但这不是强制性的。一个会话可以被挂起或恢复。

四个协议

SSL怎么完成上面这些任务的?SSL在应用层和传输层之间定义了4个协议

握手协议、改变密码规格协议、警告协议、记录协议。

记录协议是承载体。它携带来自于其他三个协议的消息,也携带来自于应用层的数据。对于传输层(通常是TCP)来说,来自记录协议的消息是它的有效载荷。握手协议为记录协议提供安参数。它建立一个密码集,并提供密钥和安全参数。如果需要,它也实施客户机认证服务器和服务器认证客户机。改变密码规格协议用于示意安全密码信息准备就绪。警告协议用于报告非正常状态