Https解决的问题及其连接过程

目录

    • Https介绍
    • Http存在的问题
    • 对上述问题,Https的解决办法(使用SSL/TSL)
          • 加密算法(解决窃听风险)
          • 不可逆签名(数字签名),Timestamp和Nonce随机数,(解决篡改问题)
          • 数字证书(解决冒充风险)
    • SSL/TSL协议
          • 原理:
    • Https建立连接的过程
          • Https的握手
          • 大致流程:
          • Https的数据传输
    • Http协议和Https协议的对比
          • Http和Https的区别如下:
    • 参考链接

Https介绍

HTTPS 是综合了对称加密和非对称加密算法的 HTTP 协议。既保证传输安全,也保证传输效率

Http存在的问题

1.窃听风险:Http采用明文传输数据,第三方可以获知通信内容
2.篡改风险:第三方可以修改通信内容
3.冒充风险:第三方可以冒充他人身份进行通信

对上述问题,Https的解决办法(使用SSL/TSL)

1.所有信息加密传输,避免三方窃听通信内容
2.校验机制,内容一旦被篡改,通信双发立刻会发现
3.配备身份证书(CA证书),防止身份被冒充

加密算法(解决窃听风险)

Https使用两种加密算法来保证安全和效率
对称加密:双方使用同一种加密规则对规则进行加解密,如AES,DES等
非对称加密:乙方生成两把秘钥(公钥和私钥)。公钥是公开的,任何人都可以获取,私钥是保密的,只存在于乙方手中。甲方获取公钥,然后用公钥加密信息,乙方得到密文后,用私钥解密。 如RSA,DH等

不可逆签名(数字签名),Timestamp和Nonce随机数,(解决篡改问题)

数字签名:信息发送者生成的无法伪造的字符串
1.发送者生成的基于内容的消息摘要(可以理解为摘取部份内容hash后的字符串)
2.发送者使用私钥进行加密,得到数字签名。接受者收到后使用发送者的公钥解密,再和自己生成的消息摘要对比,就能知道是否被篡改了。
Timestamp和Nonce:时间戳和一个只能用一次的随机数
防止黑客截取了连接时的包,进行重放和篡改。
对于Timestamp和Nonce随机数,具体实现思路可以见参考链接,目前只需要知道能保证内容不被篡改。

数字证书(解决冒充风险)

服务端会返回数字整书给客户端,客户端会去一层层上上验证CA证书的真实性,直到全球知名的大CA(root CA)。这种层层授信背书的方式,保证了证书的可信性。

SSL/TSL协议

作用域传输层和应用层之间,为应用提供数据的加密传输(TSL可以认为是SSL3.0的升级版,TSL1.0标记位SSL3.1)

原理:

1.SSL/TLS协议基本思路是采用公钥加密法(最有名的是RSA加密算法),客户端向服务器索要公钥,然后用公钥加密信息,服务器收到密文,用自己的私钥解密。
2.为了防止公钥被篡改,把公钥放在数字证书中,证书可信则公钥可信。公钥加密计算量很大,为了提高效率,只在建立连接过程中使用。
3.在连接完成后,服务端和客户端都生成对话秘钥,用它加密信息,而对话秘钥是对称加密,速度非常快。

Https建立连接的过程

Https的握手

Https解决的问题及其连接过程_第1张图片

大致流程:

1.客户端向服务器发送请求,包括支持的协议等,附带一个随机数字A
2.服务器收到请求后,选择某种非对称加密算法,把数字证书签名公钥(用于客户端验证证书的有效性),身份信息发送给客户端,同时附带一个随机数B
3.客户端验证证书的有效性,并且生成一个随机数C(pre-master-secret),用服务器的公钥加密随机数C以后发给服务器。确定以后的加密套件。
并且用服务器的公钥加密一段Finish的数据,用于验证连接的正确性。
4.服务器使用私钥解密数据后,并确认以后的加密套件。
并且用服务器的公钥加密一段Finish的数据,用于验证连接的正确性。
5.建立连接,使用约定的加密方法,使用三个随机数A.B,C,生成对话密钥(对称密钥),以后的通信使用该对话密钥。
6.连接建立后,使用对话密钥,同时还使用数字签名,Timestamp和Nonce随机数来加强安全性

Https的数据传输

使用Http发送请求,使用对话密钥加密数据,还会使用数字签名,Timestamp和Nonce随机数来加强安全性。

Http协议和Https协议的对比

Http和Https的区别如下:

1.Https协议需要到CA申请证书,大多数情况下需要一定费用
2.Http是超文本传输协议,信息采用明文传输,Https则是具有安全性SSL加密传输协议
3.Http和Https端口号不一样,Http是80端口,Https是443端口
4.Http连接是无状态的,而Https采用Http+SSL构建可进行加密传输、身份认证的网络协议,更安全。
5.Http协议建立连接的过程比Https协议快。因为Https除了Tcp三次握手,还要经过SSL握手。连接建立之后数据传输速度,二者无明显区别

参考链接

https://www.jianshu.com/p/27862635c077(https介绍)
https://www.jianshu.com/p/4764825fb916(《图解Http》笔记)
https://mp.weixin.qq.com/s/cSkTmAwoJmp78EFJQ05r4w(使用例子讲解Https)
https://blog.csdn.net/koastal/article/details/53456696(timestamp和nonece介绍)
《码处高效java开发手册》 1.6.5 https
极客时间 趣谈网络协议 14讲 https

你可能感兴趣的:(计算机网络)