ssl运行机制中,为什么不直接采用pms作为会话密钥

阮一峰写了一篇不错的文章介绍ssl的运行机制 http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

对于”为什么一定要用三个随机数,来生成会话密钥”,dog250解释恐怕有误。

首先,前两个随机数分别来自客户端和服务端,其目的是为了防止重放攻击,因此所有计算都要带上它俩,而非为了增加随机性。

退一步说,如果pms被猜到,引入前两个随机数来计算最终密钥也于事无补,因为握手阶段,协商的加密算法以及前两个随机数都是明文传递的,攻击者完全可以照图索骥推导出最终密钥。

答案应该是,本来可以让pms直接作为会话密钥,但pms可能在会话间重复(随机数嘛),且会话密钥需要常驻内存(增加了泄漏的风险)。一旦泄漏,使用该pms的所有会话都遭殃了。

因此ssl的采用如下结构,将会话密钥泄漏的影响面限制在单个会话:

pms -> ms(会话密钥)-> key(对称密钥)。

“->”表示带上前两个随机数,按一定规则进行一系列摘要运算,因此不可逆。

其中:

pms:pre master secret,会在使用过后立刻从内存中清除。(Pms should be deleted in memory. http://tools.ietf.org/html/rfc5246#section-8.1)

ms:master secret、会话密钥,会话的生命周期内常驻内存,并面向session。

key:最终的对称密钥,面向connection。

参考:http://www.cse.ohio-state.edu/~lai/651/8.SSL.ppt

    原文作者:doraeimo
    原文地址: https://blog.csdn.net/doraeimo/article/details/18995781
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞