作者回复: great。
作者回复: 回答的非常好。
作者回复: 可以参考“答疑篇”,讲ecdhe算法,参数就是算法的公钥、曲线定义。
作者回复: 当然,毕竟多了加解密操作,不过比起以前来说已经有很大改善了,为了安全还是值得的。
作者回复: 经过了认真的思考,回答的非常好!
作者回复:
1.tls1.3用扩展协议列出了支持的密钥交换算法和签名算法,所以不需要用密码套件指定。
2.对。
3.对。
作者回复:
这些比较细节和底层,如果想要认真研究还是建议去看rfc。
我简单解释一下:
1.tls1.3使用了多个对称密钥,服务器在握手Encrypted Extensions时使用的不是pre-master,而是server_handshake_traffic_secret。
2.可以参考课程里简略流程图,里面列出了那些记录,而具体的扩展字段会因密码套件而变化。
3.Finished消息与tls1.2的一样,是用会话密钥,也就是master secret加密的。
作者回复: 这里有个细节没讲,其实tls1.3有多个加密密钥,在握手的时候,服务器发来的数据会用server_handshake_traffic_secret进行加密,而这个密钥也是由HKDF算出来的。
所以客户端先生成server_handshake_traffic_secret,把服务器握手消息解密,取出证书,验证证书,都没问题,才计算pre-master。
作者回复: 这个涉及到算法的内部细节了,比较复杂,比如离散对数、椭圆曲线什么的,可以看看相关的资料。
其实如果不是专门做加解密的话,不需要了解太深入的细节。
作者回复: 密钥交换算法ECDHE保证了pre-master的安全性,黑客即使截获了Client Params和Server Params,也是无法算出pre-master的。
作者回复: 不是的。
还是要有pre-master,注意tls通信使用的master key需要三个随机数生成,其中客户端和服务器的随机数是公开的,而pre-master是加密传输。
tls1.3只是简化了握手过程中的密码套件协商,还是要交换密钥参数算pre-master的。
如果是自己内部的系统,当然可以不用tls那么复杂,直接一个随机数当会话密钥。
可以再看一下tls1.3的握手流程图,里面还有pre-master。
作者回复: 有很多因素,不一定https比http要快,如果使用了http/2,还有0-rtt,https是和http/1.1性能上差不多的。
单从理论上分析,https多了加解密运算,是会慢一点,但可以用一些手段去优化,优化过的https可能会比未优化的http快。
作者回复: TLS里的子协议你可以理解成模块,是多个不同的部分,互相协作起作用。
作者回复: 不知道你说的是哪个部分,可以补充完善一下问题。