HTTP(五)HTTPS

什么是HTTPHTTPS

HTTPS: HTTPS是一种通过计算机网络进行安全通信的传输协议, 经由HTTP进行通信, 利用SSL/TLS建立全信道, 加密数据

PS: TLS是传输层加密协议, 前身是SSL协议

HTTP VS HTTPS
HTTP特点

无状态: 协议对客户端没有状态存储, 对事物处理没有记忆能力,

无连接: HTTP/1.1之前,  由于无状态特点, 每次请求需要通过TCP三次握手, 四次挥手, 和服务器重新建立连接

基于请求和响应: 基本的特征, 由客户端发起请求, 服务器响应

通信使用明文, 请求和响应不会对通信方进行确认, 无法保护数据的完整性

抓包单独写(Charles, Windows系统使用Fidder)

HTTPS特点

基于HTTP协议, 通过SSL或TLS提供加密处理数据, 验证对方身份以及数据完整性保护

内容加密: 采用混合加密技术, 中间者无法直接查看明文内容

混合加密: 结合非对称和对称加密技术

验证身份: 通过证书认证客户端访问的是自己的服务器

保护数据完整性: 防止传输的内容被中间人冒充或者篡改

数字摘要: 通过单向hash函数对原文进行哈希, 将需要加密的明文摘要成一串镉锭长度的密文, 不同的明文摘要成的密文结果总是不同, 同样的明文其摘要必定一致, 即使知道了摘要也不能反推出明文

数字签名技术: 数字签名建立再公钥加密体制基础上. 把公钥加密技术和数字摘要结合.

HTTPS原理

http通信原理

客户端发送一句client hello给服务器端, 服务器端返回一句server hello给客户端, http: client helloserver hello再通讯的过程中, 以明文的形式进行传输

这不是最关键的, http的传输最大的隐患是信息劫持和篡改

http的问题

信息篡改: 修改通信的内容

信息劫持: 拦截到信息通信的内容

https所有的请求信息都采用TLS加密, 如果没有密钥是无法解析传输的是什么信息

对称加密和非对称加密

对称加密

当客户端发送Hello字符串的时候, 再进行信息传输前, 采用加密算法(上图中的密钥S)hello加密成W8&*21!@#进行传输, 即使中间被XXX劫持了, 如果没有对应的密钥S也无法知道传输的信息为何物, 再上图中信息的加密和解密都是通过同一个秘钥进行的, 称为对称加密, 只要AB之间知道加解密的密钥, 任何第三方都无法获取密钥S, 在一定条件下, 基本解决了信息通信的安全问题。但现实的情况下, 实际的通信模型远比上图复杂

Server和所有的client都采用同一个密钥S进行加密, 如果这样的话, 等于没有加密, 由于server和所有的client都采用同一个密钥, xxx们作为一个client也可以获取到密钥S。所以在实际的通信中, 一般不会采用同一个密钥, 而是采用不同的密钥加解密

如何对协商过程进行加密

在密码学跟对称加密一起出现的, 应用最广的加密机制非对称加密, 特点是私钥加密后的密文, 只要是公钥, 都可以解密, 但是反过来公钥加密后的密文, 只有私钥可以解密. 私钥只有一个人有, 而公钥可以发给所有的人

公钥是开放给所有人的, 但私钥是需要保密的, 存在于服务端

服务器端server向client端的信息传输是不安全的, 因为所有人都可以获取公钥

但client端向server端的信息传输是安全的, 因为私钥只有server端存在

信息通信采用http是不安全的, 存在信息劫持, 篡改的风险, https是加密传输, 是安全的通信, 对于https加密的过程, 首先介绍的对称加密, 采用对称加密进行通信存在密钥协商过程的不安全性, 因此采用了非对称加密算法解决了对协商过程的加密, 因此https是集对称加密和非对称加密为一体的加密过程

安全的获取公钥

如果使用非对称加密算法, 客户端A, B需要一开始就持有公钥, 要不没法加密

如何让A, B客户端安全的得到公钥?

Client获取公钥最直接的方法是服务器端server将公钥发送给每一个client用户, 

但这个时候就出现了公钥被劫持的问题, client请求公钥, 在请求返回过程中被xxx劫持, 我们将采用劫持后的假密钥进行通信, 则后续的通信过程都是采用假密钥进行, 数据库的风险仍然存在。如何安全的获取公钥, 并确保公钥的获取是安全的, 就要用到SSL证书和CA机构

在第2步时服务器发送了一个SSL证书给客户端, SSL证书包含具体内容有证书的颁发机构, 有效期, 公钥, 证书持有者, 签名, 通过第三方的校验保证了身份的合法, 解决了公钥获取的安全性

浏览器读取证书的所有者, 有效期信息进行校验

浏览器查找操作系统中内置的信任的证书发布机构CA, 与服务器发来的证书中的颁发者CA比对, 用于校验证书是否为合法机构颁发

如果找不到, 浏览器就会报错, 说明服务器发来的证书是不可信任的

如果找到, 那么浏览器就会从操作系统中取出颁发者CA的公钥, 然后对服务器发来的证书里面额签名进行解密

浏览器使用相同的hash算法计算出服务器发来的证书的hash值, 将这个计算的hash值与证书中签名做对比

对比结果一致, 则证明服务器发来的证书合法

HTTPS要使客户端与服务器端的通信过程得到安全保证, 必须使用的对称加密算法, 但是协商对称加密算法的过程, 需要使用非对称加密算法来保证安全, 然而直接使用非对称加密的过程本身也不安全, 会有中间人篡改公钥的可能性, 所以客户端与服务器不直接使用公钥, 而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身额安全。 这样通过这些机制协商出一个对称加密算法, 就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值