几个例子理解对称加密与非对称加密、公钥与私钥、签名与验签、数字证书、HTTPS加密方式

# 原创,转载请留言联系

为何会出现这么多加密啊,公钥私钥啊,签名啊这些东西呢?说到底仍是保证双方通讯的安全性与完整性。例如小明发一封表白邮件给小红,他总不但愿给别人看见吧。而各类各样的技术就是为了保障通讯的安全。(本文务必从上到下看)浏览器

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

  • 对称加密:

对称加密是最快速的一种加密方式。加密和解密用的是一样的密钥。安全

对称加密是怎么实现的呢?举个例子说明。服务器

小明写了一封信给小红。他用箱子装着信,同时箱子上锁,他去快递店把这个箱子和开启箱子的钥匙一块儿快递给小红。小红收到箱子后,用钥匙打开箱子,看信。这就是对称加密的传输过程。加密

可是为何如今不多用这种方式进行。万一你的快递中途丢了(在传输过程当中能够数据认为被黑客截获),那么拿到你快递的人,也能够用快递里的钥匙打开这个箱子,因此信息就泄露了。而且更严重的是,别人能够把你的信取出来,写一封诈骗的信,再寄给小红,那么小红就受骗啦。因此对称加密并不安全。spa

 

  • 非对称加密

非对称加密就比较特殊了。非对称加密存在着公钥和私钥,公钥是用来加密内容的,私钥是用来解密内容的it

好比小明有几个朋友,小A、小B、小C。小明和这几个朋友平时有秘密交流。小明本身拿着私钥,而后给每个朋友一把公钥。io

朋友写信给小明时:好比小A有机密信息要告诉小明。他写了一封信,用小明给他的公钥加密,这时候这封信是加密的,谁都看不到的,谁都不能解密,只有小明的私钥能够。因此在传输过程当中就不怕被别人篡改了。记住,公钥是拿来加密的,小A拿着的是公钥。私钥是解密的,小明拿着的是私钥。这里附上一个比较容易记的方法。当你收信的时候,你确定不想信给别人看过,这是私人的东西,因此收信方用的是私钥。登录

那么问题来了......当小明想发信给小A的时候应该怎么办呢?原理

其实,小A也有本身的私钥,他也把本身的公钥发给小明呀。方法

小明持有的钥匙:小明的私钥,小A的公钥,小B的公钥,小C的公钥...

小A持有的钥匙:小A的私钥,小明的公钥,小B的公钥,小C的公钥...

小B持有的钥匙:小B的私钥,小明的公钥,小A的公钥,小C的公钥...

小C持有的钥匙:小C的私钥,小明的公钥,小A的公钥,小B的公钥...

看起来对称加密是很完美,可是他也有缺点,那就是他的加密速度十分的慢,通常只用来加密一些很短的数据,若是数据过长,他的加密速度比对称加密慢十几倍甚至上百倍。

 

 

2.签名与验签

签名与验证是什么呢?

签名与验证是基于公钥和私钥的。

 

  • 签名与验签的理解

小明想快递一封信给小红,小明是一个很随和的人,别人看了他的信的内容都无所谓,可是必定不能修改!小明为了让小红完整的读到他的信,他用私钥对信进行了签名。小红收到信以后,用小明给她的公钥进行了验签。若是验签经过,则代表小明的信没有被修改过,所有内容都是小明写的。

注意,私钥是用来签名的。公钥是用来验签的。

 

 

3.HTTPS的原理

在说数字证书以前,最好先理解一下HTTPS的原理。

若是你认真地看完上面的文字,你如今应该知道对称加密比较快,可是不安全。非对称加密比较慢,可是比较安全。固然是越快越好对不,那么怎么解决对称加密的不安全性呢?能够利用非对称加密的方式,给对称加密的钥匙加密,而后传输给客户端,这不就解决对称密钥的不安全性了吗?因此,在HTTPS中,对称加密与非对称加密都有用到的!

例如,小明第一次浏览GOOGLE。这时候GOOGLE应该要把对称加密的钥匙发给小明呀,之后小明才能传输一些加密的信息给GOOGLE,并且加密也快。那么怎么保证这把钥匙的安全传输呢?这就要用到非对称加密了。GOOGLE先把公钥传输给小明。而后用本身的私钥加密对称加密的钥匙。再传输给小明。小明收到后,就能够用GOOGLE的公钥解开获得对称加密的钥匙啦。到了这步,就能保证对称加密的钥匙的安全啦。(这里有误,修正于2018.12.10:)小明用GOOGLE的公钥加密对称加密的钥匙,再传输给GOOGLE服务器。GOOGLE服务器收到后,就能够用私钥解开的到对称加密的钥匙啦。到了这步,就能保证对称加密的钥匙的安全传输啦。

自此以后,小明要搜什么内容,就先用对称加密的钥匙把内容加密,而后传输给GOOGLE。GOOGLE拿到后,用对称加密钥匙解密,而且处理完以后,用对称加密的钥匙加密,再发回去给小明。小明收到再解密......

 

看起来已经完美无缺了,可是仍是有问题。

万一小明刚开始收到的公钥不是GOOGLE的公钥呢?而是黑客发过去的公钥,那么小明原本想与GOOGLE交流的,不就变成与黑客交流了?

为了解决这个问题,数字证书出现了!~~

 

 

4.数字证书

上面的问题出现后,出现了解决方案。下面接着上面的例子讲:

GOOGLE可使用由数字证书认证机构(CA,certificate Authority)和其余相关机关颁发的公开密钥证书。而后给小明发公钥时,小明就能够知道这个确定是GOOGLE的公钥了。

详细过程是这样的:

1.GOOGLE服务器把本身的公钥登陆至数字证书认证机构。

2.数字证书机构用本身的私钥对GOOGLE的公钥进行签名(还记得签名的做用?不记得看回去),并颁发公钥证书(证实的做用)。

3.要知道的一点是:每一个人的浏览器都事先植入数字证书机构的公钥的!!!小明的也是,你的也是,个人也是。

4.小明收到了(公钥证书+GOOGLE的公钥)后,发现有公钥证书耶,而后用本身浏览器的数字证书机构的公钥对GOOGLE的公钥进行验签!若是验签成功,则表明GOOGLE的公钥是没有修改过的,能够放心食用。后面的过程不用说了吧,和上面例子的同样。

相关文章
相关标签/搜索