注册
登录
提问时间:2018/9/20 14:42:42    楼主:未知网友   阅读量:278

很多人只知道Https比Http更安全,至于为什么更安全,那就不太清楚了,因为别人都这么说。其实,Https就是在Http基础上通过SSL协议进行加密之后的网络传输,并通过非对称和对称加密算法来对密码和数据进行加密。

我们先来看一张图,再辅以说明其通信过程:

Https协议的通信原理

1、Client明文将自己支持的一套加密规则、一个随机数(Random_C)发送给Server。

2、Server返回自己选择的加密规则、CA证书(服务器地址、加密公钥、证书颁发机构)以及一个通过加密规则和HASH算法生成的随机数(Random_S)。

3、Client收到Server的消息之后会有以下行为:

a、验证证书(地址是否是正在访问的、机构是否合法的);

b、自己生成一个随机的密码(Pre_master)并使用CA证书中的加密公钥进行加密(enc_pre_master);

c、计算出一个对称加密的enc_key,通过Random_C、Random_S、Pre_master生成握手信息;

d、使用约定好的Hash算法计算握手信息,并通过enc_key和约定好的加密算法对消息进行加密。

4、Client将enc_pre_master、加密之后的握手消息发送给Server。

5、Server收到握手消息之后会有以下行为:

a、收到enc_pre_master之后,会通过私钥进行解密(非对称加密算法)得到pre_master;

b、通过pre_master、Random_C、Random_S计算得到协商密码enc_key;

c、通过enc_key解密握手信息,验证Hash是否和客户端发来的一致;

d、生成握手信息同样使用enc_key和约定好的加密算法。

6、Server发送握手信息给Client,也就是说Server验证通过了Client,并再次发送消息给Client让其验证自己。

7、Client拿到握手信息解密,握手结束。客户端解密并计算握手信息的Hash,如果与Server发来的Hash一致,此时握手过程结束。

8、正常加密通信,握手成功之后,所有的通信数据将由之前协商密钥enc_key及约定好的算法进行加密解密。

其中Https使用到的加密算法如下:

非对称加密算法:RSA,DSA/DSS;

对称加密算法:AES,RC4,3DES;

HASH算法:MD5,SHA1,SHA256。