写给前端工程师的理论基础(4)--详解SSL

来源:互联网 发布:小学同步教学软件 编辑:程序博客网 时间:2024/06/09 14:52

有关SSL 协议,在前面的系列博文中也有说过,SSL协议是HTTPS协议的基础协议,这里面涉及到非对称加密、对称加密、Hash校验等内容。SSL能够提供机密性,完整性和认证性服务,SSL协议位于应用层和传输层(TCP)协议之间,是一个两层协议。
SSL协议有三个高层协议,分别是:
SSL握手协议,SSL修改密文协议和SSL告警协议。
SSL握手协议:
SSL协议中客户端和服务器通过握手来获得一个密钥,之后,二者通过这个密钥进行加密,可以实现保密传输。
SSL修改密文协议:
SSL协议要求客户端或者服务器每隔一段时间通知对方修改加解密参数,这个发起人可以是客户,也可以是服务器。这样也就可以保障了密钥的动态变化,更加具有安全性。
SSL告警协议:
对实体传递SSL的相关警告。

SSL的工作流程,可以用一张时序图表现出来:
这里写图片描述

SSL工作流程:
在上面的图中,已经看到了SSL客户端和服务器之间的通信方式,这里面,我们再具体地用文字来详细描述一下。
(1)客户端向服务器发送信息,询问用什么样的对称加密算法,服务器是什么SSL版本号等信息。
(2)服务端应答该客户端的请求,同时返回使用某个CA中心私钥加密后的服务器证书(这个证书中包含了该服务器的公钥,一般实用rsa加密的)
(3)浏览器在自己的CA中心列表里面检索,是否存在这样一个CA中心呢,如果存在这样的一个CA中心,则使用列表里面的这个CA中心的公钥来解开这个来自服务器的加密数据,从而获取到该证书。
如果可以解开这个数据包,自然而然可以证明服务器是经过CA中心认证的真实服务器了。如果认证失败,则客户端认为不可信,终止会话。
(4)现在,客户端相信服务器的真实身份了,客户端用随机数的方式产生一个随机的密码,这个密码是既可以用来加密的,也可以用来解密的密码,也就是我们称之为对称加密密钥。
客户端在发给服务器的时候,还是留有一个小心思,用刚刚从服务器获取到的服务器证书中的公钥来加密这个密码,发给服务器。
(5)服务器接收到该密码之后,用服务器自身的私钥来解密,从而获得该密码的明文。
(6)那么也就是说,二者可以用这个密码来加、解密了。那么这个密码既能加密、又能解密,所以,我们说这个加密过程是一个对称加密过程。

到此为止,SSL协议的基本原理就已经搞通了,其实其非对称性就是用来鉴别服务器身份的,然后对于双方通信的过程,就使用由客户端(浏览器)产生的一个随机密码进行加密,这样,也就是可以保证客户端也是不可抵赖的。
同时,在这些数据包传输的过程,还会引入一些hash校验,以防止数据包被篡改,这样,也就实现了通信的完整性了。