首页 > 其他分享 >HTTPS 的加密流程

HTTPS 的加密流程

时间:2023-10-22 16:05:01浏览次数:35  
标签:公钥 加密 证书 流程 密钥 HTTPS 服务器 客户端

HTTPS是在HTTP的基础上进行了一层加密,加密就是把 明文 (要传输的信息)进行一系列变换,生成 密文 。解密就是把 密文 再进行一系列变换, 还原成 明文 。在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为 密钥。

HTTPS 的工作过程

既然要保证数据安全, 就需要进行 "加密". 网络传输中不再直接传输明文了, 而是加密之后的 "密文". 加密的方式有很多, 但是整体可以分成两大类: 对称加密(密钥由客户端生成) 和 非对称加密(服务器生成)。

    对称加密其实就是通过同一个 "密钥" , 把明文加密成密文, 并且也能把密文解密成明文。引入对称加密之后, 即使数据被截获, 由于黑客不知道密钥是啥, 因此就无法进行解密, 也就不知道请求的真实内容是啥了。但事情没这么简单. 服务器同一时刻其实是给很多客户端提供服务的. 这么多客户端, 每个人用的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了, 黑客就也能拿到了). 因此服务器就需要维护每个客户端和每个密钥之间的关联关系, 这也是个很麻烦的事情。比较理想的做法, 就是能在客户端和服务器建立连接的时候, 双方协商确定这次的密钥是啥,但是如果直接把密钥明文传输, 那么黑客也就能获得密钥了,此时后续的加密操作就形同虚设了。因此密钥的传输也必须加密传输! 但是要想对密钥进行对称加密, 就仍然需要先协商确定一个 "密钥的密钥". 这就成了 "先有鸡还是先有蛋"的问题了. 此时密钥的传输再用对称加密就行不通了,这时就需要引入非对称加密。

    非对称加密要用到两个密钥, 一个叫做 "公钥", 一个叫做 "私钥". 公钥和私钥是配对的. 最大的缺点就是运算速度非常慢,比对称加密要慢很多.通过公钥对明文加密, 变成密文,通过私钥对密文解密, 变成明文 。也可以反着用,通过私钥对明文加密, 变成密文,通过公钥对密文解密, 变成明文。客户端在本地生成对称密钥, 通过公钥加密, 发送给服务器. 由于中间的网络设备没有私钥, 即使截获了数据, 也无法还原出内部的原文, 也就无法获取到对称密钥。服务器通过私钥解密, 还原出客户端发送的对称密钥. 并且使用这个对称密钥加密给客户端返回的响应数据。后续客户端和服务器的通信都只用对称加密即可. 由于该密钥只有客户端和服务器两个主机知道, 其他主机/设备不知道密钥即使截获数据也没有意义。由于对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称加密,后续的传输仍然使用对称加密。那么接下来问题又来了: 客户端如何获取到公钥? 客户端如何确定这个公钥不是黑客伪造的(也称中间人,服务器生成一对公钥私钥,然后将公钥发送给客户端,但这个信息被黑客截获,然后黑客也生成一对公钥私钥,并将自己的公钥替换掉服务器的公钥,然后发送给客户端,这时客户端并不知道与它进行连接的不是服务器,直接使用发来的公钥对对称密钥进行加密后在发送给黑客,然后黑客使用自己的私钥对其进行解密,这样黑客就得到了对称密钥,然后再使用从服务器得到的公钥对其进行加密,然后服务器对其进行解密,后续与客户端进行数据交互就使用这个对称密钥,但此时黑客已经得到对称密钥,因此后续的数据交互都能被黑客所知晓)?

引入证书

解决这个问题的关键在于客户端如何确定这个公钥不是黑客伪造的,因此需要引入一个证书来证明这个公钥是来自服务器的。在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个 证书。这个证书包含了刚才的公钥, 也包含了网站的身份信息。这个 证书 可以理解成是一个结构化的字符串, 里面包含了以下信息: 证书发布机构  证书有效期  公钥  证书所有者  签名 等,当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪造的)。判定证书的有效期是否过期,判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构),验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥(该公钥不是通过网络传输,而是直接系统内置,客户端安装好window系统后,系统就会内置各种知名公正机构的公钥,因此黑客无法进行中间人), 对签名解密(签名由公正机构的私钥所生成,如果被替换,客户端解密不了), 得到一个 hash 值(称为数据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对比 hash1 和 hash2 是否相等。如果相等, 则说明证书是没有被篡改过的。(数据摘要会被证书发布机构的私钥所加密,避免它被其他设备所生成)

总结 HTTPS 工作过程中涉及到的密钥有三组 . 第一组 ( 非对称加密 ) : 用于校验证书是否被篡改 . 服务器持有私钥 ( 私钥在注册证书时获得 ), 客户端持有公钥( 操作系统包含了可信任的 CA 认证机构有哪些 , 同时持有对应的公钥 ). 服务器使用这个私钥对证书的签名进行加密. 客户端通过这个公钥解密获取到证书的签名 , 从而校验证书内容是否是篡改过 . 第二组 ( 非对称加密 ): 用于协商生成对称加密的密钥 . 服务器生成这组 私钥 - 公钥 对 , 然后通过证书把公钥传递给客户端. 然后客户端用这个公钥给生成的对称加密的密钥加密 , 传输给服务器 , 服务器通过私钥解密获取到对称加密密钥. 第三组 ( 对称加密 ): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密 .。 其实一切的关键都是围绕这个对称加密的密钥. 其他的机制都是辅助这个密钥工作的 . 第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器. 第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥.

标签:公钥,加密,证书,流程,密钥,HTTPS,服务器,客户端
From: https://blog.51cto.com/u_15319978/7976931

相关文章

  • Python教程(15)——Python流程控制语句详解
    Python流程控制是Python编程中非常重要的一部分,它用于控制程序的执行流程。Python提供了多种流程控制语句,包括if语句、while循环、for循环、break和continue语句等。这种流程控制在各个语言中都是大同小异的,如果你已经学过其他的语言,那么这章节就可以直接跳过。if语句if语句用于......
  • 03_流程控制语句
    ......
  • Python教程(15)——Python流程控制语句详解
    Python流程控制是Python编程中非常重要的一部分,它用于控制程序的执行流程。Python提供了多种流程控制语句,包括if语句、while循环、for循环、break和continue语句等。这种流程控制在各个语言中都是大同小异的,如果你已经学过其他的语言,那么这章节就可以直接跳过。if语句if语句用......
  • Java基础的运算符和程序流程控制
    1.运算符计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:算术运算符赋值运算符关系运算符逻辑运算符三目运算符位运算符1.1算术运算符算术运算符用在数学表达式中,它们的作用和在数......
  • js逆向·找到登录时目标网站的加密算法的几种方式
    js逆向·找到登录时目标网站的加密算法的几种方式为什么要去找到目标网站的加密密码方法:为了要把我们的payload正确的带入目标网站的服务器进行逻辑验证,那么就需要知道对方使用的什么加密或者编码规则来处理数据的,比如说我们输入的密码被base64编码了,然后发送给后端,后端会进行解......
  • 【代码分享】使用 avx2 + 查表法,优化凯撒加密
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯接上一篇:【代码分享】使用avx512+查表法,优化凯撒加密好不容易捣鼓出来了avx512指令集的查表法代码,可是部署的时候发现服务器不支持avx512指令集。终于,avx2......
  • CentOS 8启动流程
    一、BIOS与UEFIBIOSBasicInputOutputSystem的缩写,翻译过来就是“基本输入输出系统”,是一种业界标准的固件接口,第一次出现在1975年,是计算机启动时加载的第一个程序,主要功能是检测和设置计算机硬件,引导系统启动。UEFIUnifiedExtensibleFirmwareinterface的缩写,翻译过来为......
  • NGINX 安装 SSL 证书 - 开启 HTTPS 访问
    在NGINX上安装SSL证书-开启HTTPS访问一、在你开始之前请确保您已下载证书文件。没有证书?请从https://www.sslforfree.com上申请90天免费证书。下载证书后,您应该有一个包含以下证书文件的ZIP:certificate.crtca_bundle.crtprivate.key二、上传证书文件首先,......
  • CAXA CAPP工艺图表2020中文版安装包下载附详细安装流程
    CAXACAPP工艺图表2020向用户提供绘图与标注工具,并准备了容量庞大的标准件库、工艺模板库,可以覆盖各种工艺设计类型。它允许用户根据工艺需求定制卡片的单元格属性,使文字与图形直接按排版格式显示,适应各种填写场景。软件地址:看置顶贴新增性能1、增添卡片模板按需静态加载性能,在构造......
  • 大厂也难逃的困境:过时的招聘流程,累死人事,劝退人才
    前言随着疫情和政策的冲击,Android就业市场雪上加霜,形势愈发严峻。企业面临裁员的艰难决定,而应届毕业生们迎来了史上最冷的就业季节。然而,市场上候选人充裕,并不代表企业招聘容易。招聘本就不是一件轻松的事情。有名企业的招聘负责人在网上吐槽,一天内收到了三个拒绝的offer,感觉白忙活......