您好,匿名用户
随意问技术百科期待您的加入

关于https握手过程

+1 投票

大家好,今天看了下HTTP使用SSL进行加密的过程,整个握手过程交互比较多,有个地方不太理解。流程是这样的
1、客户端浏览器给服务器发送自己支持的对称、非对称加密算法和摘要函数列表以及一个随机数。
2、服务器收到客户端的请求后选择特定的加密算法和摘要函数以及生成一个随机数,外加自己的证书发送给客户端。
3、客户端收到后先验证证书,如果证书受信就继续,否则终止。客户端从证书中获取到服务器的加密公匙,然后浏览器产生一个随机字符串作为pre-master-securet然后用服务器的公匙加密后发给服务器,告诉服务器说在后续的对称加密过程中会使用这个密匙。
4、服务器收到后用自己的私匙解密得到pre-master-securet,然后用一定的加密算法生成一个master-securet,然后加密后发给客户端,告诉客户端以后对称加密使用这个密匙。

我不解的是为什么这里会产生一个pre-master-secure和master-secure两个密匙,难道在后续的对称加密中会两端使用两个密匙进行加密解密吗?还有那些随机数是干嘛的,如果不需要验证客户端证书的数字签名的话,是不是就没什么用呢?希望大家解答一下,我这里有点糊涂。

用户头像 提问 2013年 2月5日 @ Blitzcrank 上等兵 (358 威望)
分享到:

1个回答

+1 投票
 
最佳答案

pre-master-secure看前缀就知道了,是前期使用的,在完成本次握手后,将使用master-secure。
因为对称加密要比非对称的高效很多,所以第一次使用非对称,之后使用对称即可

--------------------------------------
补充:按我的理解,整个流程简单来说是
1. c端请求,s端响应并提供证书;
2. c端检查接收后生成pre-master-securet使用s端发过来的公钥加密;
3. s端接收到后使用私钥解密,并最终通过某种算法生成master-securet;
4. 后续的通信中s和c端均使用这个master-securet生成的密钥。

这样c端和s端都可以进行加密解密,所以叫对称加密。
之前c端和s端是非对称加密,即私钥可以解密公钥加密的信息,公钥可以解密私钥加密的信息,但是不能自己解密自己加密的信息。

而两个master-securet的作用是由于不信任机器随机数的随机性,所以使用pre-master-securet,这个东西是c端生成的,而由s端加密生成master-securet,两个机器的随机性会大大增强,不容易被猜出来。

用户头像 回复 2013年 2月5日 @ Vergil 上等兵 (384 威望)
选中 2013年 2月8日 @Blitzcrank
提一个问题:

相关问题

0 投票
1 回复 32 阅读
用户头像 提问 2012年 12月1日 @ Sona 上等兵 (306 威望)
0 投票
1 回复 62 阅读
0 投票
1 回复 35 阅读
用户头像 提问 2013年 12月15日 @ Redis 上等兵 (114 威望)
0 投票
1 回复 32 阅读
0 投票
1 回复 62 阅读
用户头像 提问 2012年 12月1日 @ Kha'Zix 上等兵 (269 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...