史上最详HTTPS加密解析

一、概念

    加密类型

    1、对称加密,如:常见的AES 加密算法

    2、非对称加密,如:常见的RSA 加密算法

    对称加密:客户端与服务端都持有一个共同的密钥。通过这个密钥完成加密、解密

    非对称加密:公钥加密、私钥解密;私钥数字签名、公钥验证;私钥用来加密与签名,给自己用的、公钥用来解密与验证、给他人用的。

    当该用户发送文件时:用私钥签名、别人用他的公钥解密,可以保证该信息是由他发送的。——>该过程其实就是数字签名

    当该用户接受文件时:别人用他的公钥加密,他用私钥解密,可以保证该信息只有他能接收到,避免被其他人看到。

二、Https = Http + SSL,可见https的加密是在SSL 中完成的

    CA证书的内容如下:

    1、证书的颁发机构、版本;

    2、证书的使用者;

    3、证书的公钥;

    4、证书的签名;

    5、证书的数字签名 Hash 值 和 签名Hash 算法;

——————————————————————>数字签名是使用户找到该授信机构的共钥。

    客户端校验CA:

    CA证书中的Hash值,其实用的就是私钥进行加密后的值;客户端得到CA后,利用证书中的公钥去解密Hash值得到Hasha,然后利用证书内的签名Hash算法生成Hashb,若Hasha = Hashb,服务端是可信任的;否则证书是错误,无法建立Https连接,此外还会校验CA证书的有效时间与域名匹配。

    客户端Https中SSL 握手流程。

    1、客户端访问服务端,客户端会生成一个随机数A,然后把随机数A、支持的SSL版本号以及加密算法发送给服务端

    2、服务端获取这些信息后,先确认双发的加密算法,服务端生成随机数B,然后把随机数、CA证书返回给客户端

    3、客户端得到CA证书后,先校验有效性,然后生成随机数C,利用随机数中的公钥加密随机数C,传给服务端

    4、服务端获取客户端数据后,用私钥解密,得到随机数C

    5、客户端与服务端都持有随机数A、B、C,用这三个随机数生成一个密钥,之后的数据传输就用密钥加解密(AES算法)

    6、客户端通知服务端,指明后续的通讯用密钥完成,同时通知服务端,客户端的握手流程结束

    7、服务端通知客户端,指明后续的通讯用密钥完成,同时通知客户端,服务端的握手流程结束

    8、SSL握手流程结束,SSL安全通道的数据通讯开始,客户端服务端开始使用相同密钥进行通讯

    总之,简述为:

    1、客户端、服务端建立SSL握手,客户端通过CA证书来确认服务端身份

    2、互传三个随机数,最后用这三个随机数生成一个共同的密钥

    3、互相确认密钥,握手流程结束

    4、数据通讯开始,使用同一个对话密钥加密解密

https加密原理过程把对称加密与非对称加密都利用起来。

你可能感兴趣的:(史上最详HTTPS加密解析)