前言:
大家好,我是良辰丫,这篇文章我们就来学习一下Https协议,了解Https的工作原理,对称加密以及非对称加密.💞💞💞
🧑个人主页:良辰针不戳
📖所属专栏:javaEE初阶
🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。
💦期待大家三连,关注,点赞,收藏。
💌作者能力有限,可能也会出错,欢迎大家指正。
💞愿与君为伴,共探Java汪洋大海。
1. 初识Https
1.1 走进https
Https和Http看起来大同小异,有什么区别呢?
其实,Https是在Http上进行衍生的,Https相比于Http,只是在其基础上加了一个加密层.
那么,为什么要有Https呢?
- 在网络上进行传输数据,很容易被运营商劫持,因为以前网络上的数据是明文传输的,有被篡改的风险.
- 百度在自己的浏览器打一个广告,广告主会根据一定的规则支付百度广告费,但是由于运营商劫持,本应该给百度的广告费,成了运营商的了.这样显然是不合理的.
- 为什么会出现上述的问题呢?
http没有加密层,很容易被篡改数据,咱们的https主要的内容是为了防止篡改,而不是防止被查看.- 因此呢,我们就引入了https,可以有效的改善上述的问题.
1.2 http存在的问题
- 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
- 篡改风险,比如强制植入垃圾广告,视觉污染。
- 冒充风险,比如冒充淘宝网站,个人账户会有安全风险。
1.3 https的优点
HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议,可以很好的解决了上述的风险:
- 信息加密:交互信息无法被窃取,但有时候你在浏览器里面的登录信息可能没有以前保存的那么深。
- 校验机制:无法篡改通信内容,篡改了就不能正常显示。
- 身份证书:相关机构证明该网站是否被篡改过。
HTTPS 是如何解决上面的三个风险的?(简单了解即可,毕竟密码学很难,学习不是轻而易举的.)
- 混合加密的方式实现信息的机密性,解决了窃听的风险。
- 摘要算法的方式来实现完整性,它能够为数据生成独一无二的「指纹」,指纹用于校验数据的完整性,解决了篡改的风险。
- 将服务器公钥放入到数字证书中,解决了冒充的风险。
2. 运营商劫持
上述提到了运营商劫持,但是大家获取对这个概念还有一些陌生,那么我们就来详细的说明一下.
有时候咱们明明下载A软件,下载下来却不是我们要的软件, 其实大多数情况下这就是一种运营商劫持.
- 客户端获取一个下载A软件的链接,在这个过程中被运营商劫持了,运营商知道了客户端的需求.
- 运营商为了不让自己被怀疑,把客户端的获取需求(下载A软件链接)发送给A软件服务器.
- A软件服务器返回一个A软件的链接,这个时候,又被运营商劫持了,运营商把A软件的链接替换成自己的,然后返回给客户端,客户端就会收到下载B软件的链接.
- 客户端不知道会这样,下载之后,发现不是自己要的软件.
3. Https的工作过程
3.1 对称加密
所谓对称加密
只有一个秘钥key,加密和解密使用同一个秘钥key(私钥).对称加密速度比较快.
- 明文 + key = 密文
- 密文 + key = 明文
下图简单描述了一个对称加密解密的过程.
下图引入了黑客,黑客虽然获取了密文,但是如果黑客没有私钥key,是不能进行解密,也就无法篡改数据,这样数据的安全性就大大提高了.
对称加密中那么多客户端使用的秘钥是否是相同的?
每个客户端使用不同的秘钥,如果秘钥相同,黑客也可以伪装客户端获取秘钥,那样数据就不安全了.
客户端需要自己生成一个秘钥,那么生成的秘钥如何告诉服务器呢?
- 这个时候就需要网络传输秘钥,一旦通过网络进行传输,那么黑客就可能截获到秘钥.
- 那么给秘钥key进行加密,加密的话还需要一个新的秘钥key2,那么key2也需要进行加密,要不然很容易就被破解了,这样套娃显然是不科学的.
对称加密有很多的缺陷,因此呢,我们引入了非对称加密.
3.2 非对称加密
所谓非对称加密
需要两个秘钥,一个公钥,一个私钥.
- 明文 + 公钥 = 密文
- 密文 + 私钥 = 明文
3.2.1 普通非对称加密
那么怎么理解非对称加密呢?两个秘钥,一个公钥,一个私钥.完全不一样的两个秘钥,为什么可以一个用来加密,一个用来解密呢?
- 这是密码学里的知识,我们也不做过多的讨论.
- 只是简单的举个例子方便大家理解.我们可以想象成公钥是一个人可以给很多锁上锁,但是解锁需要自己那把匹配的钥匙才可以,私钥就是那把匹配的钥匙,只有拥有了那把匹配的钥匙才能对密文进行解密.
可能图画的有点乱哈哈,我就简单的用语言描述一下过程.
- 客户端向服务器索要公钥,这个公钥一般别人都可以获取到,服务器把公钥返回给客户端.
- 客户端把秘钥key用公钥进行加密,注意这里是加密key,并不是传输的数据.把加密后的密文传输给服务器.
- 服务器使用私钥对这个密文进行解密,得到key,然后服务器向客户端返回一个已经得到key的消息.
- 客户端拿key对传输的信息进行加密,因为黑客不知道key是什么,因此不能对数据进行解密.客户端把加密的数据发送给服务器,服务器拿着key对信息进行解密,得到数据.
注意:
- 客户端和服务器进行业务数据传输的时候,仍然是使用对称加密方式,因为对称加密速度快,成本低.
- 为了保证数据的安全性,咱们采用非对称的加密方式,非对称加密采取公钥加密,私钥解密的方式.这里需要注意的是,我们用公钥加密的是key,并不是数据.
- 非对称加密在传输完秘钥key之后就不会再使用了,之后就会使用对称加密.
那么,非对称安全之后就绝对安全嘛?办法总比困难多,黑客是非常聪明的,它会自己生成非对称秘钥进行一系列的操作.接下来我们就来看一下中间人攻击.
3.2.2 中间人攻击
- 黑客自己生成一对非对称秘钥,公钥2和私钥2.
- 客户端向服务器索要公钥,服务器返回公钥后被黑客截取,黑客把公钥替换成自己的公钥2,然后发给客户端.
- 客户端把秘钥key用公钥2进行加密,把加密后的密文发送出去,黑客获取到密文,通过自己的私钥2解密得到key,然后用服务器的公钥对key进行加密,发给服务器.做到神不知鬼不觉.
- 服务器使用私钥对这个密文进行解密,得到key.
- 客户端拿key对传输的信息进行加密,进行传输加密的消息,此时黑客有了秘钥key,可以对消息进行解密.这样客户端的数据就被黑客获取了.
那么如何避免中间人攻击呢?
这里的关键是要让客户端信任公钥,公钥到底是从哪里来的,我们一定要对此有一定的认知.
3.2.3 引入证书的非对称加密
- 服务器向权威机构申请一个证书.
- 客户端向服务器索要证书,客户端拿到证书后,需要对证书进行校验.
得到初识的签名,客户端的系统中内置了权威机构的公钥2,针对上述证书的加密签名进行解密,这样就得到了初始签名,这个签名是根据权威机构计算出来的.
计算现在的签名,客户端使用同样的签名计算方法,基于证书中的属性重新计算.
比较上述两个签名是否相同,如果相同,说明证书中的数据都是未被篡改过的数据;如果签名不相同,那么说明证书中的数据被篡改过,这个时候客户端的浏览器弹框报错.
那么,黑客为什么不能篡改证书的数据呢,黑客如何进行篡改操作呢?
- 黑客把整数中的服务器公钥替换成自己的公钥.
- 黑客针对证书中的各个属性,重新计算签名.
- 这个时候黑客要把签名重新进行加密,要想重新加密,需要知道权威机构的私钥,黑客是没法获取权威机构的私钥.
看了上面的引入证书的非对称加密,是不是有点迷糊呢?不是难,而是所涉及的东西多了一点,那么我们再来描述一下.文章来源:https://www.toymoban.com/news/detail-498974.html
- 我们先来认识一下上面是证书,证书是权威机构的证明,证书上面有很多属性,普通的非对称加密,客户端向服务器获取公钥,这个时候很容易受到中间人攻击;在我们引入证书的非对称加密中,客户端向服务器获取的证书,证书上面包含公钥,签名等属性,几乎没有可能被篡改.
- 证书上的签名是加密的,针对证书的所有属性,计算一个校验和(签名),再由证书颁布机构使用自己的私钥对这个签名进行加密.
- 数据相同,按照相同的算法会得到同样的签名.
- 黑客可以把签名进行解密,但是要想加密需要借助权威机构的私钥,黑客是没有办法获取这个私钥.
- 权威机构又是什么呢?权威机构是网络办理各种证书的,这样的机构也是相当少的,一般计算机系统会内置这个的证书.
后序:
今天Https协议相关协议的内容到这里就结束了,想必大家学到了很多,我们下一篇文章再见.🚀🚀🚀文章来源地址https://www.toymoban.com/news/detail-498974.html
到了这里,关于【Https协议】http的孪生兄弟,你了解多少呢,认识Https,Https工作原理之对称加密与非对称加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!