SSL协议握手过程

来源:互联网 发布:广东省社会科学院知乎 编辑:程序博客网 时间:2024/03/29 05:26

      今天学习了一下SSL协议的握手内容,在此整理一下,做一个总结。

      据说SSL应用广泛,但本人孤陋寡闻,只知道在http协议的基础上加上SSL协议即为https协议。众所周知,https协议比http协议更安全,那么究竟安全在何处呢,这就要探究SSL协议的机制。

      我们以客户端A和服务器B的通信为例讲解一下SSL协议的握手过程。

      在开始通信前,需要进行握手(当然了,最重要的还是先建立TCP连接)SSL协议的握手过程如下:

1.客户端发送随机数s1,SSL版本号以及可选的加密算法给服务器B

2.服务器B从可选的加密算法中选择其中一种作为服务器支持的加密算法(暂且称其为m),并且产生一个随机数s2

服务器将ms2和一份包含服务器BRSA公钥的数字证书发送给客户端;该证书还包含了用于认证目的的服务器标识。

3.客户端A使用该证书的认证机构CA公开发布的RSA公钥对该证书进行验证(如果认证机构不靠谱,那就很难受了),同时客户端A又产生一个随机数s3(产生这么多随机数我也很绝望),其实s3有一个专门名称,叫做pre_master_secret。客户端将使用服务器B发送过来的服务器RSA密钥匙(就是存放在数字证书中的那个密钥)s3进行加密后,得到的内容message,将其发送给B

4.B用自己的私钥将message解密,此时,客户端和服务器都拥有s1,s2,s3的内容,它们将分别利用这三者的内容独立计算出共享的对称会话密钥(至于怎么计算的,可自行搜索DH密钥交换算法了解,当然我自己也准备写一篇文章来介绍)。本来有了对称密钥,就可以进行通信了,但是为了防止握手本身遭受篡改,还需要进行以下两步检验:

5.客户端将所有握手消息的MAC值发送给服务器;

6.服务器将所有握手消息的MAC值发送给客户端;

       图解过程如下: 

     有了对称密钥后,AB就能更为安全地进行通信啦!

      

原创粉丝点击