SSL的通讯原理

SSL的通讯原理

简介

​ SSL(Secure Socket Layer)是一种通信交互协议,由Netscape 公司在1994 年制定,主
要目的就是确保在web 服务器和浏览器之间数据传输安全。SSL 协议层是在TCP/IP 层和应
用层之间。
SSL 协议分成以下几部分:

SSL的通讯原理

  • Record Protocal 是SSL 的基础层,SSL 所有的上层操作都是基于这个层次,这层主要负责消
    息内容的分段,压缩,加密和数字摘要等操作。

  • Handshake Protocal 故名思义就是握手协议,也是在正式应用数据传输前双方交换加密
    设置以及认证的流程规范协议。

  • Change Cipher Spec Protocol 是基于record 协议层通知远端服务器修改record 协议层中
    安全设置的协议。

  • Alert Protocol 是基于record 协议发送警告到远端服务器的协议。

工作原理

​ SSL 协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传
递的保密性、完整性,并且会话双方能鉴别对方身份。不同于常用的http 协议,我们在与
网站建立SSL 安全连接时使用https 协议,即采用https://ip:port/的方式来访问。
当我们与一个网站建立https 连接时,我们的浏览器与Web Server 之间要经过一个握手
的过程来完成身份鉴定与**交换,从而建立安全连接。具体过程如下:

  • 用户浏览器将其SSL 版本号、加密设置参数、与session 有关的数据以及其它一些必要
    信息发送到服务器。
  • 服务器将其SSL 版本号、加密设置参数、与session 有关的数据以及其它一些必要信息
    发送给浏览器,同时发给浏览器的还有服务器的证书。如果配置服务器的SSL 需要验证用户
    身份,还要发出请求要求浏览器提供用户证书。
  • 客户端检查服务器证书,如果检查失败,提示不能建立SSL 连接。如果成功,那么继续。
    客户端浏览器为本次会话生成pre‐master secret,并将其用服务器公钥加密后发送给服
    务器。
  • 如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证
    书一起发送给服务器。之后服务器检查签署客户证书的CA 是否可信。如果不在信任列
    表中,结束本次会话。如果检查通过,服务器用自己的私钥解密收到的pre‐master secret,
    并用它通过某些算法生成本次会话的master secret。
  • 客户端与服务器均使用此master secret 生成本次会话的会话**(对称**)。在双方SSL
    握手结束后传递任何消息均使用此会话**。这样做的主要原因是对称加密比非对称加密的
    运算量低一个数量级以上,能够显著提高双方会话时的运算速度。
  • 客户端通知服务器此后发送的消息都使用这个会话**进行加密。并通知服务器客户端
    已经完成本次SSL 握手。
  • 服务器通知客户端此后发送的消息都使用这个会话**进行加密。并通知客户端服务器
    已经完成本次SSL 握手。
  • 本次握手过程结束,会话已经建立。双方使用同一个会话**分别对发送以及接受的信
    息进行加、解密。

具体流程图

SSL的通讯原理

​ SSL 的流程也体现了对于对称性**和非对称性**的使用,由于对称性**加密比非对称
性**加密要快1000 倍,那么对称性**被用来做对内容的加密,而非对称性**用来做
传递对称性**的加密手段。
服务端所需要具备的是一个拥有服务端的标示,公钥私钥对的证书。在握手的流程中,
服务端将带有公钥的证书抽取出来发送给客户端,客户端就首先可以判断证书颁发者是否属
于本机受信的CA,如果不是,就会类似于IE 跳出提示,如果通过了这部分CA 认证,双方
就可以通过非对称性加密算法来交换客户端生成的临时对称密码,进行安全加密信息交互。

​ 此外需要说明的是,在一些电子商务的应用中,可能还会使用到电子签名,或者为了信
息交换的更加安全,会增加电子签名和消息校验码(MAC)。
为了便于了解SSL,下面在简要介绍一下信息加密相关知识。使用**类型加密信息的加密
算法可以分为以下几类:HASH 编码、对称加密和非对称加密三类。
HASH 编码是使用HASH 算法从任意长度的消息中计算HASH 值的一个过程,HASH 值可
以说是消息的指纹,因为对于任何不同的消息,几乎总有不同的HASH 值。因此在SSL 通讯
过程中,可以对消息的HASH 值进行加密,确保传递的消息在传输过程中没有被修改。
非对称加密或称之为公钥加密使用数学上相关的两个数值来对信息进行编码(加密),
其中一个数字称为公钥,另一个称为私钥。公钥加密的信息可以用私钥解密,私钥加密的信
息可以用公钥解密。由于公钥可以大面积发放,因此公钥加密在SSL 加密通信中应用于对密
钥的加密或者进行数字签名。
对称加密和非对称加密相比的区别在于对称加密中,加密信息和解密信息使用同样的密
钥,因此该**无法公开。但是其具有加密、解密快速的特点。
在SSL 通讯中,首先采用非对称加密交换信息,使得服务器获得浏览器端提供的对称加
密的**,然后利用该**进行通讯过程中信息的加密和解密。为了保证消息在传递过程中
没有被篡改,可以加密HASH 编码来确保信息的完整性。

了解更多请关注:
SSL的通讯原理