品牌网站建设 蝌蚪小7,百度小程序如何开发,广东省农业农村厅职称评审,物业管理系统er图前一篇文章#xff1a;计算机网络 —— HTTP 协议#xff08;详解#xff09;-CSDN博客
目录 前言
一、HTTPS 协议简介
二、HTTPS 工作过程
1.对称加密
2.非对称加密
3.中间人攻击
4.引入证书
三、HTTPS 常见问题
1.中间人能否篡改证书#xff1f;
2.中间人能否调…前一篇文章计算机网络 —— HTTP 协议详解-CSDN博客
目录 ·前言
一、HTTPS 协议简介
二、HTTPS 工作过程
1.对称加密
2.非对称加密
3.中间人攻击
4.引入证书
三、HTTPS 常见问题
1.中间人能否篡改证书
2.中间人能否调包证书
3.HTTPS 工作完整流程
·总结 ·前言 前一篇文章中对 HTTP 协议整体做了一个基本介绍在本篇文章里将介绍一下基于 HTTP 协议创造出来的 HTTPS 协议关于 HTTPS 协议的重点内容就是它的一个工作过程它是如何保证我们网络中传输数据的安全性呢这将是本篇文章的要重点介绍的内容下面就开始本篇文章的内容介绍。
一、HTTPS 协议简介 HTTPS 协议与 HTTP 协议一样都是应用层协议HTTPS 协议是在 HTTP 协议的基础上引入了一个加密层由于 HTTP 协议的内容都是按照文本的方式明文传输这就导致在使用 HTTP 协议传输数据的过程中会出现一些数据被篡改的情况比如“运营商劫持”。 什么是 “运营商劫持” 呢不知道有没有小伙伴在网上搜索某个软件点击下载后发现下的不是要下载的软件而是其他软件这就是 “运营商劫持”如下图所示 图1 图2 如上图所示当我们下载一个 “天天动听” 时图1 未被劫持点击下载按钮是可以弹出正确的天天动听的链接图2 已被劫持时点击下载按钮弹窗的是 QQ浏览器的下载链接这就是 “运营商劫持”那么它是如何做到的呢流程如下图所示 当然不止运营商可以劫持其他的 “黑客” 也可以用类似的手段来进行劫持窃取用户的隐私信息或者篡改内容所以在互联网上明文传输是比较危险的事情HTTPS 就是在 HTTP 的基础上进行了加密进一步来保证用户的信息安全。 解决安全问题最核心的要点就是 “加密”什么是加密呢加密就是把明文要传输的真实数据进行一系列变换生成密文针对明文加密之后得到的结果往往不直观不易理解解密就是把密文通过一系列变换还原成明文在这个加密与解密的过程中往往需要一个或者多个中间的数据来辅助完成这个过程这样的数据就被称为 “密钥”。
二、HTTPS 工作过程 为了保证数据的安全HTTPS 就在 HTTP 基础上进行 “加密” 操作这样网络上传输的数据就不再是直接传输明文了而是加密之后的 “密文”加密的方式有很多但是整体可以分为两大类“对称加密” 和 “非对称加密”下面我就来介绍一下 HTTPS 的工作过程及遇到问题的对应解决方法。
1.对称加密 对称加密其实就是通过同一个 “密钥”来把明文加密成密文并且还可以把密文加密成明文引入对称加密之后即使数据被截获由于黑客不知道密钥是什么也就无法进行解密进一步去获取我们请求的真实内容了引入对称加密后此时数据传输过程如下图所示 根据上述介绍可以发现对称加密具有以下特点 使用对称加密客户端与服务器需要使用同一个密钥不同的客户端需要使用不同的密钥如果密钥都相同那么黑客就可以获取密钥。 此时由于不同客户端使用的密钥都不相同这就意味着服务器需要维护每个客户端和密钥的关联关系会引入很大的额外开销。 对称加密除了会引入额外的开销还有一个致命的问题那就是这种加密并不安全由于对称密钥是要传输给对方的就意味着传输密钥的过程是明文传输的那么此时黑客只要获取到传输的密钥对称加密的操作就毫无意义了如下图所示 造成上图结果就是因为使用明文传输密钥黑客就会获取到密钥后续的加密操作就形同虚设了所以我们需要对传输的密钥进行加密传输如果我们对密钥仍进行对称加密的方式进行传输就需要确定一个 “密钥的密钥”此时面临的问题还是 “密钥的密钥” 是明文黑客仍然可以拿到密钥所以对密钥进行加密传输使用对称加密的方式就行不通了这就需要引入非对称加密。
2.非对称加密 使用非对称加密主要目的就是为了对 “对称加密” 的密钥进行加密来确保对称密钥的安全性在非对称加密中要用到两个密钥“公钥” 与 “私钥”公钥和私钥是配对的公钥对明文加密变成密文密文只能使用配对的私钥来进行解密它们最大的缺点就是加密与解密的运算速度非常慢消耗 CPU 资源所以不能完全使用非对称加密来对传输的数据进行加密而只是对“对称加密”的密钥进行加密。 引入非对称加密之后就可以由服务器生成公钥和私钥公钥可以公开给每个客服端私钥只有自己知道这样客户端就可以使用公钥对对称密钥进行加密然后传输给服务器服务器获取到密文使用私钥解密获取到对称密钥后面就可以继续使用对称加密来进行数据传输了具体过程如下图所示 下面我来对上述过程做一个梳理 客户端在本地生成对称密钥通过公钥加密发送给服务器由于黑客没有私钥所以无法对截取的数据进行解密进而无法获取对称密钥服务器使用私钥解密获取对称密钥使用对称密钥加密给客户端返回的响应后续客户端与服务器的通信使用对称加密即可由于该密钥只有客户端与服务器两个主机知道所以黑客截获数据也无法进行解密。 上述过程虽然看起来安全但是还有漏洞由于公钥是需要客户端从服务器这边获取那么就存在一个问题获取的公钥是不是黑客伪造的这就涉及到中间人攻击了。
3.中间人攻击 黑客通过中间人攻击就可以获取到对称密钥由于非对称加密算法是公开的所以黑客也可以使用非对称加密算法来得到自己的公钥私钥此时就可以在客户端向服务器发送获取公钥的请求时进行中间人攻击具体过程如下图所示 下面我来对上述过程做一个梳理 服务器使用非对称加密算法生成公钥pub1私钥pri1黑客使用非对称加密算法生成公钥pub2私钥pri2客户端生成对称密钥key客户端向服务器发送请求询问公钥是什么服务器明文传输公钥 pub1 给客户端黑客截取数据提取公钥 pub1 并保存然后将数据中的公钥 pub1 替换成自己的公钥 pub2并将伪造的数据发给客户端客户端收到数据提取公钥 pub2并不清楚公钥已经被换用公钥 pub2 加密对称密钥 key形成报文发送给服务器黑客截取数据直接使用自己的私钥 pri2 进行解密获取到对称密钥 key再使用保存的服务端公钥 pub1 加密后将报文发送给服务器服务器拿到报文后使用私钥 pri1 进行解密获取对称密钥 key后续服务器与客户端都使用 key 进行对称加密进行通信此时黑客就可以使用对称密钥 key 劫持数据对数据进行窃听或者修改。 那么如何解决中间人攻击这样的问题呢最关键的一点就在于客户端拿到公钥的时候要有办法验证这个公钥是真的而不是黑客伪造的这就需要服务器提供一个 “证书”。
4.引入证书 证书是一个结构化的数据其中包含很多的信息如证书发布机构、证书有效期、公钥、证书所有者、签名……服务器在使用 HTTPS 之前需要向第三方公正机构申请一份数字证书然后服务器把证书传给浏览器浏览器从证书中获取公钥就可以了证书就相当于身份证证明当前公钥的正确性。 在证书中用来验证证书真伪的信息就是 “签名”对于签名要详细介绍一下这是通过证书解决中间人攻击问题的关键签名的形成也是基于非对称加密算法的当服务端申请证书的时候公正机构就会对服务端进行审核并专门为该网站形成数字签名过程如下 公正机构拥有非对称加密的公钥A 和私钥A*公正机构对服务端申请的证书明文数据进行 hash形成数据摘要公正机构再对数据摘要用私钥 A* 加密得到签名 S。 此时服务端申请的证书明文与签名 S 就共同形成了证书这样的证书就颁布给了服务端。这样就可以解决中间人攻击问题此时数据传输的过程如下图所示 图中客户端获取到证书对证书进行校验的过程如下 判定证书有效期是否过期判定证书的发布机构是否受信任操作系统中已经内置了受信任的证书发布机构验证证书是否被篡改从操作系统中获取证书发布机构的公钥对签名进行解密得到 hash 值数据摘要设为 hash1然后计算整个证书的 hash 值设为 hash2对比 hash1 和 hash2 是否相等如果相等就说明证书没有被篡改过。 三、HTTPS 常见问题
1.中间人能否篡改证书 中间人无法篡改证书理由如下 中间人篡改了证书的明文由于他没有公正机构的私钥所以无法在 hash 之后使用私钥形成签名那么就无法对篡改后的证书形成匹配的签名如果中间人强行篡改客户端收到证书后在验证时就会发现证书明文的 hash 值与签名解密后得到的 hash 值不一样就会发现证书被篡改从而终止向服务器传输信息。 2.中间人能否调包证书 中间人无法调包整个证书理由如下 中间人没有公正机构的私钥所以无法制作假的证书中间人只能向公正机构申请真证书然后使用自己申请的证书进行掉包但是证书中明文包含了域名等服务端认证信息所以整体调包客户端依旧可以识别。 我们要知道中间人没有公正机构的私钥对任何证书都无法进行合法修改包括自己的。
3.HTTPS 工作完整流程 左侧是客户端要做的事右侧是服务器要做的事完整流程如下图所示 ·总结 文章到此就要结束了本篇文章重点介绍了 HTTPS 的工作过程在这里涉及到的密钥一共有三组如下所示 第一组非对称加密用于校验证书是否被篡改服务器持有私钥私钥在注册证书时获得客户端持有公钥操作系统包含了可信任的认证机构有哪些同时持有对应的公钥)服务器使⽤这个私钥对证书的签名进行加密客户端通过这个公钥解密获取到证书的签名从⽽校验证书内容是否是篡改过第二组非对称加密用于协商⽣成对称加密的密钥服务器生成这组 私钥-公钥 对然后通过证书把公钥传递给客户端然后客户端用这个公钥给⽣成的对称加密的密钥加密传输给服务器服务器通过私钥解密获取到对称加密的密钥第三组对称加密客户端和服务器后续传输的数据都通过这个对称密钥加密解密。 ⼀切的关键都是围绕这个对称加密的密钥其他的机制都是辅助这个密钥⼯作的第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥如果你认为读了本篇文章您有所收获希望给本篇文章点个赞收藏走一波后面我会继续与大家分享计算机网络的相关知识关注博主不迷路~~~您的支持就是我创作最大的动力我们下一篇文章再见~~~