曾经妄图用DL来识别TLS,我还是太naive~
之前有对TLS知识点进行过整理,但是太多了orz,某天和室友讨论,仍然记不住呀,这里重新整理一下关键的信息吧。
TLS的三个随机数的作用:
这个要扯到tls握手和传输流程,传输时用的是对称加密,握手传输密钥是对称加密,前两个随机数在握手前两个阶段明文传输,用于和第三个随机数生成真正的随机,第三个随机数是拿到服务端的证书后加密随机数后传给服务端的,证书是第二次握手给客户端的,用于使客户端验证服务端身份。
下面来自阮一峰前辈的博客:
握手阶段的五步:
第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。
第三步,爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。
第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret),生成“会话密钥”,向客户端发送编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。同时发送服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。
传输阶段:爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成”对话密钥”(session key),用来加密接下来的整个对话过程。
整个握手阶段都不加密(也没法加密),都是明文的。因此,如果有人窃听通信,他可以知道双方选择的加密方法,以及三个随机数中的两个。整个通话的安全,只取决于第三个随机数(Premaster secret)能不能被破解。
TLS的加密:非对称加密 + 对称加密。