Https原理的简单描述

对Https的原理有点不清楚,研究了下,总结如下,

首先是几个关键字:

Certification, RSA, Symmetric key

Https使用了SSL/TSL通信协议来实现互联网上的通信加密。

SSL(Secure Sockets Layer)是TSL(Transport Layer Security)的前身,已经没了十几年了。

Https的请求在发起真正的数据交换之前做了好多事情都是对用户透明的,只有在地址栏上才能看出一些端倪:

  • 第一种情形是https enable并且Certification得到了认可;
  • 第二种情形是https enable但是Certification没有得到认可;
  • 第三种是压根没enalbe https

首先贴一下https在真正数据交换之前的所完成的步骤:

  1. 浏览器(client end)发起https请求,内容一般包括:
    a. 希望使用的TSL版本
    b. 浏览器支持的加密算法
  2. 服务器的回复并附加Certification, 回复的内容一般包括:
    a. server同意采用的TSL版本
    b. server告知进行Symmetric key传输和校验Certification的加密算法(RSA)
    Certification
    证书,跟毕业证书挺像的,也是由一个受信任的机构颁发,颁发给某机构或者某个人某个机器,有有效期,签名,多了一个东西是public key。
    作用也跟毕业证挺像,浏览器收到由知名机构签发签发(比如:Versign),有效期内证书,先信了一半,然后在用附带的public key把数字签名解密,如果跟正在访问的域名一致,那就齐了。
    就会是上面的第一种情形了。
    那浏览器怎么知道谁是知名机构呢,那是os内置了一些知名机构的根证书,比如在firefox中的这个例子:

 

规则是如果根证书受信,子证书就受信。

注意用public key解密签名这一项,就可以防止dns被篡改的攻击。

3. Browser端生成symmetric key,这是用于将来交换数据所用的加密key

4. 使用Server选定的加密算法(RSA)和Public key对生成的Symmetric key进行加密然后发送给server端

5. Server用Private key进行解密的到Symmetric key

6. 至此https connection就建立起来了,真正的数据交换使用Symmetric key进行加密后开始。

另外非对称加密(RSA)就不多说了哈。

猜你喜欢

转载自blog.csdn.net/pushme_pli/article/details/84839806