https秘钥交换
看了https流程,有个疑问,为什么https需要选择使用ecdh这类秘钥交换?
简单一点:
- 客户端随机生成AES秘钥AESKey,请求数据的hash值sign
- 使用公钥将 AESKey+sign 进行加密,同时使用 AESkey对请求数据进行加密
- 最终发送给服务端的数据包含,pub.pem.encrypt(AESKey + sign), AES(data)
- 服务端使用私钥将 AESKey + sign 解密,再解密data
- 服务端将返回的数据加密 AES(response + responseSign),客户端根据秘钥解密。
不考虑中间人问题,这个过程应该是安全的,那么为什么还需要ecdh这类秘钥交换?
假设自己实现一个加密过程,公钥是内置于客户端,那么也可以防止中间人?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题一:非对称加密是安全的,但是效率太低,所以才要生成只有客户端和服务端都知道的密钥,然后进行对称加密。
问题二:服务端的公钥假如能内置于客户端,能防止中间人攻击。因为中间人攻击就是发生在这个获取的过程,既然都不用获取,也就没有攻击一说。