首页 > 其他分享 >https加密过程

https加密过程

时间:2024-03-29 18:24:59浏览次数:16  
标签:公钥 浏览器 证书 密钥 https 服务器 加密 过程

1. 对称加密与非对称加密

在介绍https加密过程前,需要先简单了解下其中用到的加密算法。

对称加密算法:用该密钥加密的数据,可以再用该密钥解密。性能高,速度快。常见的对称加密算法有DES,AES

非对称加密算法:生成一对密钥对,分别称为公钥、私钥。用公钥加密的数据只能由私钥解密。用私钥加密的数据只能由公钥解密。公钥信息是公开的,私钥由自己保管。性能低,速度慢,安全性高。常见的非对称加密算法有RSA

2. https与加密

https与http相比,最大的不同就是保证了数据加密传输,保证信息不被泄露,不被篡改(中间人攻击)。这就涉及到加密算法的选型。

对称加密:

  1. 浏览器与网站服务器双方都需要共同持有密钥。这就需要密钥由任意一端生成,再传输给另一端。由于密钥的传输过程没有加密策略,就会产生泄露风险。该方案不可取

非对称加密:

  1. 由网站服务器生成一对公私钥,在处理请求时,对请求数据用私钥加密。浏览器接受数据时用公钥解密。由于公钥是公开的,任意一方都能够获取。所以除了浏览器,其他人也可以破戒该数据。该方案不可取
  2. 网站服务器生成公钥A,私钥A'。浏览器生成公钥B,私钥B'。服务器处理请求时候,用浏览器的公钥B加密。浏览器接受请求时,用私钥B'解密。同理,浏览器发起请求时用公钥A加密,服务器用A'解密。这种方案理论上是可行的,但由于非对称加密速度很慢,这会导致每一个请求响应时间都变长。该方案不可取。

对称加密 + 非对称加密:

  1. 利用对称加密的高性能,与非对称加密的安全性,完成https加密过程。网站服务器生成公钥A,私钥A'。将公钥A明文传输给浏览器。浏览器生成密钥X,并用公钥A对密钥X加密,传输给网站服务器。网站服务器用私钥A'解密。这样浏览器与网站服务器就都拥有了密钥X,接下来用密钥X做对称加密,处理请求即可。这种方案是可行的,但是存在中间人攻击风险
  2. 中间人会在网站服务器明文传输公钥A的过程中,篡改请求,将公钥A替换为自己生成的公钥F。浏览器拿到公钥F后对密钥X加密,传输给网站服务器。中间人在该传输过程中再用自己的私钥F'对数据解密,拿到密钥X。再用网站的公钥A加密该数据,传输给网站服务器。这样在浏览器和网站服务器毫不知情的情况下,密钥X就被中间人获取。

对称加密 + 非对称加密 + 站点证书:

  1. 上述方案最大的问题在于,浏览器无法得知公钥A是由该网站服务器发送而来,还是由中间人发来的。为了证明公钥A确实属于该网站,就需要一份“数字证书”,来证明该公钥确实属于该网站。该种方案就是现在的https加密过程。

3. ca机构与数字证书

颁发数字证书的机构称作ca机构。ca机构与数字证书的关系,就像政府与身份证。政府是可信的,政府颁发出的身份证也是可信的。

摘要算法(又称哈希算法、杂凑算法):

  1. 摘要算法的目的,是将不同长度的原文(数据),整理计算成长度相同的数据。长度相同的好处在于,后续对其签名的效率提升。摘要算法还用于防原文篡改的场景中。即使只对原文添加了一个空格,都会导致重新摘要后的值发生很大不同。
  2. 常见的摘要算法有:md5,sha1,sha256。md5计算出的数据长度为128,sha1为160,sha256为256位。长度越短,越容易产生数据碰撞(不同的原文计算出了相同的哈希值)。由于md5与sha1已被技术破解,2015年12月31号后,浏览器已不再信任非sha256摘要颁发出的证书。

数字证书:

  1. 申请数字证书需要csr文件。目前主流的csr文件数据结构为PKCS10(简称P10)。P10结构体为:

    certificationRequestInfo  // 证书请求体,包括使用人名称、主体公钥
    signatureAlgorithm        // 签名算法
    signature                 // 用主体私钥对证书请求体做的签名,加密算法为上一个值  
    
  2. 每个ca机构都有自己的一对公私钥。当ca机构接收到csr请求后,将csr与证书有效期、证书序列号等信息一起,包装为证书体,最后用自己的私钥对其进行签名,完成证书颁发。最后的证书结构体为(X509结构体):

    tbsCertificate          // to be signed 证书体,包括证书有效期、序列号、申请人信息、申请人公钥等数据
    
    signatureAlgorithm      // 签名算法
    
    signatureValue          // 用ca私钥对to be signed数据做的签名,加密算法为上一个值
    
  3. 浏览器(或adobe reader等pdf阅读器)都安装了全球可信的ca机构根节点。当网站服务器未用可信根机构的ca证书时,浏览器会有警告提示。国内常见的ca机构有:上海ca、cfca、广东ca。

4. https加密全过程

  1. 网站服务器生成一对公钥A,私钥A'。用公钥A制作成csr请求,向ca机构申请一份站点证书。ca机构用自己的私钥,对证书体签名,完成证书制作,颁发给该网站。

  2. 浏览器尝试与服务器构建SSL连接。服务器将自己的站点证书发送给浏览器。服务器对证书进行验证:

    1. 用颁发该证书的ca机构公钥,对证书签名进行解密,得到解密原文S'。
    2. 用证书中提到的哈希算法,对证书体进行摘要算法,得到摘要H'。
    3. 判断S' == H'。若相等,证明证书确实由该ca机构颁发。
    4. 站点证书中包含了域名等信息,即使中间人也有该ca机构颁发的证书,也无法进行调包。证明证书确实是该网站服务器的。
  3. 验证完毕,拿到证书中的网站公钥A。浏览器再生成密钥X,用公钥A对密钥X加密,传输给网站服务器。服务器用私钥A'对其解密,拿到密钥X。

  4. 服务器为每一个浏览器维护一个session id。当获取密钥X后,将其保存在session中。浏览器后续请求都会携带session id,服务器直接从session中拿到密钥X即可,不需要每次都做上述传输工作。

  5. 后续所有请求传输都用密钥X进行对称加密。

5. 是否存在他人伪造浏览器,与服务端交互的情况

中间人可以拿到服务器的证书公钥,自己包装一个对称密钥X,直接与服务器交互。但这并没有意义,因为服务器总是会校验请求的异常情况,所以不需要考虑这种场景。

标签:公钥,浏览器,证书,密钥,https,服务器,加密,过程
From: https://www.cnblogs.com/sumray/p/18104388

相关文章

  • 如何给PDF文件加密?
    PDF作为一种常用的文档格式,本身具有很好的稳定性以及兼容性,被广泛应用于学习以及生活当中。然而,这也意味着PDF文件的安全性成为了一个不可忽视的问题。因此,进行PDF加密操作变得至关重要。那么有那些好用的pdf加密的工具呢?1、nitropdf.com这是一款功能强大的PDF编辑软件,你可以使......
  • Webbrowser打开https网页提示证书错误
    vb.net开发了一个捕快网文采集器 txt文本使用了IE控件Webbrowser在访问https网页时,有些网页出现了证书错误的提示,无法访问,而且没有"继续"的选项试了一下强制默认证书认证全部为<真>的代码有效.ImportsSystem.Security.Cryptography.X509Certificates......
  • 五款常用在线JavaScript加密混淆工具详解:jscrambler、JShaman、jsfack、ipaguard和jje
    摘要本篇技术博客将介绍五款常用且好用的在线JavaScript加密混淆工具,包括jscrambler、JShaman、jsfack、freejsobfuscator和jjencode。通过对这些工具的功能及使用方法进行详细解析,帮助开发人员更好地保护和加密其JavaScript代码,提升网站的安全性和保密性。 引言在当今......
  • JavaScript new一个对象的详细过程
    JavaScriptnew一个对象的详细过程new实现过程new实现原理new手写实现实现过程/原理开辟一块内存,创建一个空对象执行构造函数对这个空对象进行构造给空对象添加__proto__属性调用函数改变this指向最后返回this指向的新对象(如果是引用类型则返回引用类型......
  • https怎么免费申请
    在互联网技术高速发展的今天,越来越多的用户和企业开始关注网络安全问题,尤其是网站的安全。HTTPS(安全超文本传输协议)作为一种安全的网站传输协议,已经成为了互联网行业的标配。然而,对于很多个人和中小企业来说,如何申请免费的HTTPS证书仍然是一个难题。本文将为大家详细介绍如何......
  • 深度学习技巧应用39-深度学习模型训练过程中数据均衡策略SMOTE的详细介绍,以及SMOTE的
    大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用39-深度学习模型训练过程中数据均衡策略SMOTE的详细介绍,以及SMOTE的算法原理与实现,本文介绍了一种用于处理分类数据不平衡问题的过采样方法——SMOTE算法。SMOTE算法通过在少数类的样本之间插值来创建新的样本,从而增加少......
  • ASP.NET Core 用密码加密 PDF
    需要使用itext-dotnet:https://github.com/itext/itext-dotnet使用Nuget:Install-PackageitextInstall-Packageitext.bouncy-castle-adapter使用密码加密PDF:publicstaticboolEncryptPdf(stringinputPath,stringoutputPath){boolresult=......
  • 【计算机网络】http协议的原理与应用,https是如何保证安全传输的
    ✨✨欢迎大家来到景天科技苑✨✨......
  • 学习过程中,项目文件、代码疑惑点
    python项目为什么有requirements.txt文件?使用目的:任何应用程序通常需要设置安装所需并依赖一组类库来满足工作要求。要求文件是指定和一次性安装包的依赖项具体一整套方法。requirements.txt文件格式:格式一:直接指定库#Thesemustbeinstalledbeforebuildingmmdetection......
  • 流域生态系统水-碳-氮耦合过程模拟
    原文链接:流域生态系统水-碳-氮耦合过程模拟https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247599381&idx=1&sn=5de2b54900c553dac15547394057eec7&chksm=fa8204f2cdf58de4c878c3ef82a51c71dfdd4f2d7357d5b37f825b04a26d8e7aa73cb9b2c0b1&token=1105644014&la......