一、概念
加密类型
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加密原理过程把对称加密与非对称加密都利用起来。