TLS/SSL 协议详解 (4) 运用密码学原理构建安全信道2

**的协商、交换


    上一节中,我们已经能保证客户端的确是和可信的服务器进行交互了,在保证服务器可信的基础上,接下去,我们要让客户端和服务器之间共享一个**,该**用来加密后续的会话。

**协商和交换SSL的一个关键,也是SSL性能消耗大的地方,而需要消耗如此高性能的直接原因就是,客户端和服务器希望安全的交换或者协商出一个**。

    那么客户端和服务器之间怎么安全的共享一个**而又不让其他人知道呢?一种方法是:服务器或者客户端把自己的密码拷贝到CD中寄给对方?不过显然不现实。这存在2种潜在的问题。首先,无法确定是否有快递员读取了**,然后客户端和服务器之间的对话都被快递员知晓了,毕竟光盘上的数据谁都可以读。其次,难道每次一个客户端想和服务器建立连接,都要寄快递?显然成本有点高。可能你想说“拿我和服务器只要寄一次**就行了,后续的会话都用这个**”,如果这样,当**泄露的时候,你和服务器之间的对话都被人看光了自己却浑然不知。


  所以,关于**交换和协商,我们可以总结出如下几点:

    1:**使用周期必须是短暂的,不能长期有效,最好一个会话一个**。

    2:**不能明文的传输于网络,否则如果被别人看到,那么谁都能解密你们的会话了。


    然而,这出现了一个矛盾:交换**是为了加密传输,然而**自身又不能明文传输而需要被加密。死循环了。

这时候“非对称加密”就派上用场了,回顾一下非对称加密的特点:私钥加密的数据,只用公钥能解密;公钥加密的数据,只用私钥能解密。


    那么,我们令服务器拥有私钥和公钥,然后对于每一个想建立安全连接的客户端,服务器把自己公钥明文的发给客户端,客户端接着生成一个**,然后拿公钥加密这个**,注意,这个加密的结果,只有私钥能解密,而私钥只有服务器有,也就是说,这个被非对称加密的**只能由服务器解密。这就完成了**的交换。其安全性是基于非对称加密的,私钥是服务器保存的,公钥一般放在证书中。**交换的流程如下图所示:

TLS/SSL 协议详解 (4) 运用密码学原理构建安全信道2


关于 SSL协议中,各**交换算法总结见我的博客

http://blog.csdn.net/mrpre/article/details/78025940