不对称加密
什么是不对称加密,以及公钥和私钥
每个用户都有两把钥匙,一把公钥一把私钥。公钥是对外发布的,所有人都看的到所有人的公钥,私钥是自己保存,每个人都只知道自己的私钥而不知道别人的。当用公钥加密的时候,就用私钥解密,用私钥加密的时候,就用公钥解密。常用于https协议加密。
常见的不对称加密方式
- 一种是服务端用私钥加密,然后客户端用公钥解密,这种常用于分发<font color=#00ffff>数字签名</font>,当数字签名被工信单位认证之后就成了<font color=#00ffff>数字证书</font>。
- 一种是客户端用公钥加密,然后服务端用私钥解密,因为客户端一旦用公钥加密之后,只有拥有私钥的服务端才能打开,所以是安全的。这种方式常用于加密客户端发送的信息。
常用名词
数字签名
是用于解密的公钥,可以比喻成合同中的签字,能够认证信息发送方身份的真实性。数字签名的本质是公钥。
数字证书
经过工信部门认证过的数字签名叫做数字证书。
不对称加密的发展及流程
基础版
所有人持有一份我的公钥,私钥只有我一个人持有,也就是说所有人都可以用公钥加密包裹,但是只有我一个人能用私钥拆开包裹。
一开始用明文建立连接,并且我把公钥发送给你(假装这个时候我是服务端,你是客户端)
之后你就可以用我发给你的公钥加密你要发送的信息发给我了。(这个时候你也可以把你的公钥加密之后发给我)
IMG_9D8E6185DCEA-1.jpeg
这个时候出现了另一个问题
只通过前面的方法你没有办法确认这个包裹到底是不是我发的。
这个时候如果有一个人装作快递员,把我的包裹拦了下来,然后假装我给你发包裹,当你把你的公钥放进这个包裹并发回的时候,这个快递员再把包裹拦截下来,然后用另外一个包裹把快递员自己的公钥放进去,这个时候他就有了我们两个人的公钥,他就可以扮演一个中间者,随意的更改我们两个发的包裹中的数据,而我们两个人并不知道我们实际上是在和这个快递员互发包裹。
618f768c3b9eb48d052fd5acf230f889_hd.jpg
升级版--加入数字签名
我们采用数字签名的方式,先用hash函数生成包裹的摘要 digest,然后我用私钥对这个digest加密生成数字签名,这个时候这个数字签名可以被所有人解密看到,但是大家都没有办法对他进行修改,因为能加密他的只有我的私钥。这个时候你就能知道这个包裹是不是我发的了。我们可以把这个数字签名类比成我的签名,相当于我在包裹上刻上了我的签字。
而且你对信件的内容进行hash,如果得到的结果和数字签名解密后的结果一样,说明包裹没有被人修改过。
但是这里还有一个问题
因为我们前面的前提是你知道你手里的公钥是我的,但是万一你手里的公钥是假的呢,是上一个快递员伪造的呢,这个时候上一个快递员就可以假装是我给你发包裹了。
终极版--数字签名升级成数字证书。
这个时候就有了一个认证中心,在认证中心,我的公钥进行了登记,认证中心用他的私钥加密我的公钥和一些其他信息发给我,这个时候我就有了数字证书,相当于我的身份证,之后我再给你发消息的时候在发送数字签名的同时也发送一份我的证书给你,通过对比你就知道这个包裹有没有被伪造了。认证中心发给你的加密过的文件就叫做数字证书,证书必须是工信机构颁发的,必须人工进行登记,所以很难伪造。这也是https信息安全的原因,但是https证书需要注册认证,所以不需要保证网站数据安全的时候一般都使用http。
网友评论