https加密通信的过程

HTTPS加密过程

建议可以在电脑上安装一下Woreshark,这个软件方便直观的观察加密流程。

https:在http(超文本传输协议)基础上提出的一种安全的http协议,因此可以称为安全的超文本传输协议。http协议直接放置在TCP协议之上,而https提出在http和TCP中间加上一层加密层。从发送端看,这一层负责把http的内容加密后送到下层的TCP,从接收方看,这一层负责将TCP送来的数据解密还原成http的内容。

 

SSL(Secure Socket Layer):是Netscape公司设计的主要用于WEB的安全传输协议。从名字就可以看出它在https协议栈中负责实现上面提到的加密层。因此,一个https协议栈大致是这样的:

image

密钥交换/协商机制的几种类型

  • 依靠非对称加密算法
    原理:拿到公钥的一方先生成随机的会话密钥,然后利用公钥加密它;再把加密结果发给对方,对方用私钥解密;于是双方都得到了会话密钥。
    举例:RSA

  • 依靠专门的密钥交换算法
    原理:这个比较复杂,一两句话说不清楚,待会儿聊到 DH 的那个章节会详谈。
    举例:DH(Diffie–Hellman的简写),ECDH(DH 的变种)

基于RSA的秘钥交换

这大概是 SSL 最古老的密钥协商方式(我更倾向称之为秘钥交换)——早期的 SSLv2 只支持一种密钥协商机制,就是它。交换过程如下:

image.png

现在,假设A与B通信,A是SSL客户端(上图左侧),B是SSL服务器端(上图右侧):

A(客户端):我想和你(服务端)安全的通话,我支持的加密算法组合有这些,并生成了一随机数Client Random(把消息封装成Client Hello发送给B)。

B(服务端):我们用ECDHE-RSA-SHA这对组合好了,我也生成一个随机值Server Random(把消息封装成Server Hello发送给A)。

B(服务端):这是我的证书,里面有我的信息和公钥,你拿去验证一下我的身份吧(把证书Certificate发给A)。

A(客户端):(收到B发来的加密方式和证书Certificate,验证B的证书的真实性,如果其中一项有误,发出警告并断开连接,这一步保证了B的公钥的真实性,至于如何验证下面详细讲)
确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥加密了这个随机数,发给服务器B。

接着,A和B分别根据约定的加密方法,使用前面的三个随机数(Client Random,Server Random,Premaster secret),生成"对话密钥"(session key),用来加密接下来的整个对话过程。

握手阶段有三点需要注意:

(1)生成对话密钥一共需要三个随机数。

(2)握手之后的对话使用"对话密钥"加密(对称加密),服务器的公钥和私钥只用于加密和解密"对话密钥"(非对称加密),无其他作用。

(3)服务器公钥放在服务器的数字证书之中。

通过上面的分析,可以看到整个握手阶段都不加密(也没法加密),都是明文的。因此,如果有人窃听通信,他可以知道双方选择的加密方法,以及三个随机数中的两个。整个通话的安全,只取决于第三个随机数(Premaster secret)能不能被破解。

虽然理论上,只要服务器的公钥足够长(比如2048位),那么Premaster secret可以保证不被破解。但是为了足够安全,我们可以考虑把握手阶段的算法从默认的RSA算法,改为 Diffie-Hellman算法(简称DH算法)。。。。

现在来说一下客户端是如何验证服务端发来的证书Certificate的:

客户端接到服务器传来的证书,从本机得到CA的公钥值,这样就可以解密数字证书末尾的数字签名了,解密签名得到原始的证书摘要HASHs,然后自己也按照证书中的HASH算法,自己也对证书计算一个摘要HASHc,如果HASHs == HASHc,则认证通过,否则认证失败。



作者:浪够_
链接:https://www.jianshu.com/p/39ad3e40f7af
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值