渐进式的描述 HTTPS 协议的传输过程。

铺垫知识

非对称加密

公钥(Public Key) 与 私钥(Private Key)是通过加密算法得到的一个密匙对。公钥是可公开的,私钥是需要私有的。公钥加密的内容只有私钥能解,反之亦然。也称为为非对称加密方式,非对称加密和解密花费的时间长、速度相对较慢。

对称加密

那么对称加密又是什么样的方式呢?只有一把密钥,加密与解密都只能通过该密钥。对称加密解密的速度比较快。

公钥加密,私钥解密:

这样的方式称为加密,保证传输内容不被其他人解密。因为只有持有私钥的人可以解开公钥加密的内容,而私钥是非公开的。

私钥加密,公钥解密:

这样的方式称为签名,保证传输内容不会被人篡改,因为若想篡改后公钥能够解密,就必须通过私钥加密,而私钥是非公开的。不过其他人可以查看,因为公钥是公开的。

传输方式的渐进演变

1)对称加密传输

对称加密的速度很快,可以用于传输过程中的数据加密,防止传输内容被泄露篡改。但如何将密钥安全的从Server传输到Client是个问题(该问题就是后面要解决的问题),一旦密钥被中间人获取,那么传输内容就可以被他人解密后查看或篡改了。

2)非对称加密传输 - 1

Server 持有私钥A,Client 持有公钥B。通过私钥加密,公钥解密,可以保证不被篡改,但无法保证被其他人查看。

3)非对称加密传输 - 2

为了解决私钥加密,公钥解密可以被查看的问题,再次引入一对私钥C、公钥D。Client 持有私钥C,Server 持有公钥D。每端都交叉持有一对公、私钥,实现双向安全通信。

  1. ClientServer 传输时,通过私钥C、公钥D实现加解密。
  2. ServerClient 传输时,通过私钥A、公钥B实现加解密。

但是,这种方式虽然可以安全通信,但效率很低。每次通信每方都需要进行非对称的解密、加密。

4)对称加密 与 非对称加密 配合传输

对称加密传输中提到了密钥无法安全传输。那么是否可以这样,Client 获取密钥时,通过非对称加密的方式进行获取。那么后继的请求都通过获取的密钥进行对称加解密?

看起来不错:Client持有密钥A,Server持有公钥B。对称加密 密钥M会被Server通过公钥加密后发送给Client

4)破解对称加密 与 非对称加密 配合传输

有一个坏蛋也配置了一对密钥:私钥X、公钥Y。Clinet 传输给 Server 公钥B时,被坏蛋替换为他的公钥Y。那么就可以通过私钥X解开Server通过公钥Y加密的对称加密 密钥M,复制了一份,进而后继可以继续查看、篡改传输内容。然后又用Client的公钥B加密M后返回给ClientClient可以用私钥C成功解锁对称加密密钥M

也就是说:

  1. Server 拿到的不是 Client 传输的公钥B。
  2. Client获取的密钥M确实Server返回的,但却不知已经被人知晓了。

本质原因就在于公钥B被人替换了。

5)引入 CA 证书认证机构

认证机构也有一对公私、钥:密钥J,公钥K。Client 直接向认证机构发送公钥B,认证机构通过密钥J加密后返回ClientClient在返回给Server。此时坏蛋可以通过公钥K查看到通过密钥J加密的公钥B。但是无法修改它,因为他没有密钥J。(通过私钥加密,公钥解密,防止被篡改)如果坏蛋用其他私钥进行加密,那么Server就无法通过公钥K成功解密,那么Server就会知道这是已经被人修改过了。如果Server成功解密,那么就可以通过公钥B加密M,并且只有Client能通过密钥A解开(通过公钥加密,私钥解密,防止被解密查看密钥M)。

End

HTTPS 的认证流程相关推荐

  1. 浏览器获取服务器CA证书与认证流程-HTTPS

    证书的签发过程 服务方 S 向第三方机构CA提交公钥.组织信息.个人信息(域名)等信息并申请认证: CA 通过线上.线下等多种手段验证申请者提供信息的真实性,如组织是否存在.企业是否合法,是否拥有域名 ...

  2. 若依管理系统——前后端分离版(二)登陆接口分析及SpringSecurity的登陆认证流程

    一.登陆流程分析 0. 流程整理 1. 图片验证码接口/captchaImage 2.登陆验证接口/login 2.1 校验图片验证码 2.1 查询用户信息 2.3查询用户的权限信息 2.4 生成令牌 ...

  3. HTTPS原理与流程

    Table of Contents HTTP HTTPS 实现原理 工作流程 对称加密与非对称加密 CA 颁发机构 总结 HTTP HTTP(Hypertext Transfer Protocol)超 ...

  4. 巧用 Nginx 快速实现 HTTPS 双向认证

    1.原理 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立 HTTPS 连接的过程中,握手的流程比单向认证多了几步.单向认证的过程,客户端从服务器端下载服务器端公钥证书进行验证,然后建 ...

  5. 浏览器获取CA认证流程

    首先说说证书的签发过程: 服务方 S 向第三方机构CA提交公钥.组织信息.个人信息(域名)等信息并申请认证: CA 通过线上.线下等多种手段验证申请者提供信息的真实性,如组织是否存在.企业是否合法,是 ...

  6. UiPath认证流程

    UiPath的认证流程主要分为以下五个步骤,通过以下简单的五步即可获得认证: 第一步:选择考试 选择最适合你的考试.可以查看以下两个文档以选择最适合你的考试. RPA联考详细信息:https://st ...

  7. 微信公众平台开发(2)--微信认证流程图文详解

    点此查看 微信公众号/微信网页/微信支付/企业微信/小程序开发合集及源代码下载 本文目录 1. 微信认证的作用 2. 登录 3. 开始认证 4. 认证流程 4.1 准备资料 4.2 同意协议 4.3 ...

  8. HTTPS双向认证(Mutual TLS authentication)

    HTTPS双向认证(Mutual TLS authentication) 双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立Https连接的过程中,握手的流程比单向认证多了几步.单向认证 ...

  9. java实现HTTPS单向认证TLS指定加密套件(文章很详细,好文章!)

    1.HTTPS介绍 由于HTTP是明文传输,会造成安全隐患,所以在一些特定场景中,必须使用HTTPS协议,简单来说HTTPS=HTTP+SSL/TLS.服务端和客户端的信息传输都是通过TLS进行加密. ...

最新文章

  1. SpringMVC中Controller如何将数据返回
  2. mfc控件变量没定义_WinCC字符串归档变量查询
  3. DND是如何封装WinSock的?
  4. Redirecting to binsystemctl start crond.service
  5. c语言程序设计中北大学,《中北大学软件学院2013届C语言程序设计实训题目.doc...
  6. 第四十五期:程序员未来干什么?做架构还是做管理?
  7. 火山去水印链接_在线批量去水印下载快手图集视频、抖音、火山等平台方法技巧!...
  8. mybatis case when_MyBatis 几种通用的写法
  9. 【数据结构和算法笔记】c语言实现顺序表和链表
  10. 12.sql语句增删改查快速回顾
  11. 【转】脉络清晰的BP神经网络讲解,赞
  12. POJ 3080 Blue Jeans(KMP + 暴力)
  13. 蒋涛对话王成录:开发者的黄金十年
  14. 安卓如何调出软键盘_系统软键盘Android在外接物理键盘时,如何强制调用系统软键盘?...
  15. firefox正在安装组件,以便播放此页面上的音频或视频
  16. 如何用火狐浏览器firefox模拟手机浏览器客户端
  17. SQL语句(增删改查)
  18. 卷积神经网络在句子分类上的应用[翻译]
  19. python: UserWarning: mkl-service package failed to import, therefore Intel(R) MKL initialization问题解决
  20. zend stutio安装

热门文章

  1. 解决Github访问速度慢以及图片加载慢的问题
  2. Oracle数据库安装先决条件检查失败解决方案
  3. Linux7双机,Centos 7 keepalived双机热备
  4. stage缩放属性:scaleMode
  5. 批处理获取服务器目录文件是否存在,批处理教程:获取批处理文件所在路径
  6. java关键字用于引用包,Java常用关键字总结
  7. 给一朋友的关于项目组建设的建议
  8. ubuntu下如何安装.bin文件
  9. c语言程序从main()函数开始执行,所以这个函数要写在( ).,C语言程序从main()函数开始执行,所以这个函数要写在( )。...
  10. 素問·上古天真論-篇一