Https为什么安全?使用到了什么关键技术?

原文链接: https://juejin.im/post/5a30d3236fb9a04528467a7d

概念 1.对称加密 2.非对称加密(公钥加密) 3.消息摘要 4.消息认证码 5.数字签名 6.公钥证书

推荐先查看这篇文章再进行下文阅读: https://foofish.net/https-story-1.html 这里由一个请求来解释为什么需要这些东西并对其概念做简短解释,结合这篇文章希望能更便于理解。

流程

这个相信大概用过或了解过的都知道,一句话:由Client发起请求进行公钥加密发送到Server,Server使用私钥进行解密,最后将数据同样进行公钥加密返回,Client进行私钥解密后处理业务。

看着似乎就是那么理所应当的简单啊。我本身也是这么天真的以为的就是加个密解个密么哈哈

好 接下来就从这个看似简单的流程来说说上面这些概念都是什么作用

首先 流程中最明显的一环“加密”先来看看这个

对称加密与非对称加密

对称加密:加密解密使用的是相同密钥 优点:速度快 缺点:因为Client要告诉Server加密方式而攻击者在拦截后知道了加密方式也就知道了解密方式。 非对称加密:一端进行公钥加密而另一端进行私钥解密 优点:解决了对称加密可能被拦截破解的可能 因为拦截者没有私钥,他无从知道怎么解密 缺点:速度比公钥慢很多

ok到这里加密应该有个大概的概念了,加密的事情解释差不多了,这里提个问题,如果拦截者进行了篡改这时怎么办。这就用到了消息摘 要和消息认证码

消息摘要消息认证码

简单来说这个是保证数据的完整唯一性,当拦截者把消息改变后,Server进行比对发现不同就会认为这是被篡改的消息

但是问题又来了,虽说可以保整完整性,但是拦截者可以进行伪造,拦截者伪造订单信息进行攻击你会有口说不清。这时又怎么办呢,“数字签名”

数字签名

数字签名就是Client把消息哈希函数处理生成消息摘要,摘要信息使用私钥加密之后生成签名发送给Server再由Server提取进行同样的哈希处理得到再与Client发送过来的签名解密如,如果相等则证明是对应的Client发送的

这下看着似乎都很完善了。还差最后一步就是公钥证书,他是做什么的呢,如果遭到拦截者把公钥换掉了呢,这时就需要有一个权威机构来认证也就是Certification Authority)CA。

公钥证书

证书中有用户的姓名组织邮箱地址等信息,还有公钥信息,并由CA提供数字签名生成公钥证书(Public-Key Certificate)PKC,简称证书。

这就是基本的大致流程了。 菜鸟讲解,主要是为了自己熟悉也希望这相对的白话文能帮小白理解

你可能感兴趣的:(Https为什么安全?使用到了什么关键技术?)