对称&非对称
对称加密: 私钥加密,公钥解密
非对称加密: 公钥加密,只能私钥解密
如果HTTPS是对称 +非对称
服务器端有自己的公钥和私钥
步骤:
1.客户端向服务器端索要公钥
2.客户端拿服务器的公钥对数据num进行加密
3.传给服务器用他的私钥解密数据num
4.用这个num作为key,进行对称加密进行数据传输。
中间人问题
如果采用上面这种,会产生中间人问题
黑客拦截在服务器和客户端之间,用他自己的公钥和私钥,黑客既可以扮演服务器,也可以扮演客户端。
- 黑客拦截了客户端像服务器端索要公钥的过程,将黑客的公钥发给客户端。
- 黑客冒充客户端,获取服务器的公钥。
- 客户端根据这个公钥对num进行加密,传给黑客。
- 黑客冒充客户端用他的私钥对num进行解密,获取num。
- 黑客冒充客户端,向服务器发送num,并用在步骤2中获取的公钥对num加密。并发送给服务器端。
- 黑客连通了服务器端和客户端,就获取服务器与客户端之间互相发送的数据。
HTTPS:CA+对称加密+非对称加密
通过CA证书,使黑客不再能扮演服务器,
服务器端有公钥pk 和私钥ck
ca机构有CA公钥和CA私钥
客户端操作系统存了很多CA系统的公钥,不需要向服务器端获取CA的公钥
1.服务器端,把他的公钥用CA私钥加密得到一个证书,传给客户端。
2.客户端用他存的CA公钥解密证书得到服务器端的公钥
3.用PK来进行加密一个num,作为之后传数据的公钥
4.服务器得到这个num,用私钥进行解密,得到这个公钥
5.然后双方开始用这个公钥加密并传输数据