今天在学习计网的HTTPS时,我学到关于对称密钥的知识是:
- 服务器和客户端共享相同密钥,加密和解密使用相同的密钥。
- 算法是公开的,计算量小,加密速度快,效率高。
我的理解是公钥是公开的,那么黑客也是根据算法来知道公钥的,
但是我又看到了这张图:
因此我想问一下这种方式的密钥 黑客是否可以根据公开的算法来破解?
###HTTPS 的确用到了对称密钥, 但不是你描述的那么简单
- 这个对称密钥是动态随机生成的
- 这个对称密钥本身是通过非对称加密传输的
所以 HTTPS 实际上对称密钥和非对称密钥都应用到了, 一个请求的大致流程如下
- 客户端浏览器请求服务端
- 服务端传输一个公钥和相关信息即证书信息给客户端
- 客户端验证此证书是否是可信赖的 CA 所颁发, 如果失败, 现代浏览器默认设置下都会警告禁止访问, 早期浏览器警告后允许继续
- 客户端用这个公钥加密随机生成的对称密钥, 以及这个对称密钥加密的HTTP头的信息(包括URL等)传输给服务端
- 服务端用私钥解密这个对称密钥, 然后用这个对称密钥解密HTTP头
- 服务端用对称密钥加密返回的HTTP请求体, 返回给客户端
- 客户端解密, 向用户展现内容
所以你可以看到虽然这里用到了对称密钥, 由于开头提到的2个原因, 所以基本是可以保证安全性的
###HTTPS基本流程如下:
- 小明向网站A发起请求
- 网站A将CA数字证书返回给客户端,证书里面有网站A的公钥
- 小明通过自己电脑内置的CA公钥解密证书,拿到网站A的公钥(CA公钥内置在浏览器中)
- 小明生成随机的对称秘钥,也就是会话秘钥。会话秘钥一定要客户端生成,因为前面说了,这里公私钥只能保证客户端发给网站信息的安全,公钥加密的信息只有私钥才能解开,私钥网站藏起来了,所以其他人拿到信息也解不开。但是如果网站生成会话秘钥,用他的私钥加密,那所有人都有公钥,所有人都能解开了。
- 小明将会话秘钥通过网站A的公钥加密,发送给网站A
- 接下来网站A和小明使用会话秘钥进行HTTP通信
事实上HTTPS先使用非对称加密来加密一个对称加密的密码,然后后面的内容都用对称加密,所以其他他非对称加密和对称加密都使用了。至于说算法是公开的,黑客能不能破解,答案是不能,这个是RSA算法的精髓,他的加密使用的是取模运算,也就是说你用公钥加密了,不能使用公钥反解,只能使用私钥解密。具体过程比较复杂,我也是看了这篇文章才知道的:https://juejin.im/post/5e689e...