HTTPS
来源:互联网 发布:淘宝达人怎么修改昵称 编辑:程序博客网 时间:2024/04/29 18:12
为什么要用Https
http是明文传输,存在窃听、篡改等风险,而https通过验证服务器正确性、协商通信加密密钥有效的降低了风险;
Https 基本原理
基本原理:服务端生成密钥,并把公钥传给客户端。 然后协商用对称加密算法,并根据信息各自生成对称密钥。 协商完成后,接下来的数据通过该密钥进行加解密。 数字证书出现是为了保证客户端拿到的公钥,是真证要访问服务器生成的公钥, 而不是别人伪装的公钥,从而保证通信的安全性。 下面将详细分析https通信流程:
Https 通信流程
1. [c ->s] client hello 消息:主要包含如下内容 <1>支持的协议版本,比如TLS 1.0版。 <2> 一个客户端生成的随机数,稍后用于生成"对话密钥"。 <3> 支持的加密方法,比如RSA公钥加密。 <4> 支持的压缩方法。2. [s ->c] server hello 消息,主要包含如下内容: <1> 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。 <2> 一个服务器生成的随机数,稍后用于生成"对话密钥"。 <3> 确认使用的加密方法,比如RSA公钥加密。 <4> 服务器证书。 注:其中,<1>,<3>协商确定tls版本及加密方法; <4>客户端拿到服务器证书后,首先验证证书的合法性, 从而确定服务器的合法情,并从证书中,提取中公钥信息。3. [c ->s] 客户端验证证书没有问题后, 将生成对称加密算法密钥的随机数通过rsa公钥加密后, 发给服务器,该消息主要包含以下内容: <1> 一个随机数。该随机数用服务器公钥加密,防止被窃听。 <2> 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。 <3> 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。 注:由于rsa的私钥只有服务器持有,所以可以保证只有服务器 可以解密得到随机数, 就算该消息被窃听,因为无法使用正确的私钥解密,也无法获取到随机数, 从而无法生成对称加密的密钥信息,从而保证了通信的安全性。4. [s ->c] 服务器收到客户端的响应后,通过私钥解密获取到第三组随机数,从而可以生成对称加密算法的密钥信息,并发消息通知客户端,接下来的数据都使用该密钥进行加密传输,消息主要包含以下内容: <1>编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。 <2>服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。 这条消息发完之后,握手阶段都完成。之后就可以开始传送应用数据了。 应用数据在传输之前,首先要附加上MAC secret,然后再对这个数据包使用协商的密钥进行加密。在服务端收到密文之后,使用协商的密钥进行解密,客户端收到服务端的数据之后使用协商的密钥进行进行解密,然后使用各自的write MAC key对数据的完整性包括是否被串改进行验证。
阅读全文
0 0
- HTTPS
- HTTPS
- Https
- HTTPS
- https
- HTTPS
- HTTPS
- https
- HTTPS
- https
- HTTPS
- Https
- https
- HTTPS
- Https
- https
- https
- https
- cURL支持https--移植--集成mbedTLS
- Java与数据结构(二) 单链表
- Oracle数据库(where语句和列表达式)
- 解决ubuntu中不能使用搜狗输入法
- package.json
- HTTPS
- charels破解版安装和使用(超详细图文教程)
- hdu 2224 The shortest path(双调欧几里得旅行商问题)
- Android开发简述
- Android实现ImageView图片双击放大及缩小
- LeetCode 119. Pascal's Triangle II
- WebSocket
- 【linux】svn提交自动同步到web目录
- 第六章 Canny算子