聊聊对称加密与非对称加密

栏目: IT技术 · 发布时间: 4年前

内容简介:原创:花括号MC(微信公众号:huakuohao-mc)。关注JAVA基础编程及大数据,注重经验分享及个人成长。点一下你会更好看耶

原创:花括号MC(微信公众号:huakuohao-mc)。关注 JAVA 基础编程及大数据,注重经验分享及个人成长。

目前大家常说的信息加密技术就两种, 对称加密非对称加密

对称加密

所谓的对称加密就是加密和解密用同一份密钥。对称加密的好处就是加密速度快,但是缺点也很明显,一定要保存好这份密钥,如果密钥丢失,就会带来很大的安全风险。而且如果与服务端进行通信的客户端比较多的话,服务端要管理很多份不同的密钥。

非对称加密

为了解决对称加密的缺点,人们提出了非对称加密,非对称加密技术也是目前应用最广泛的加密技术。所谓的非对称加密就是生成一对密钥,分为公钥和私钥。私钥自己保存,公钥发布出去。用私钥加密的信息只能用公钥解密,用公钥加密的信息也只能用私钥解密。

举个例子

假设你的好朋友铁蛋,经常网购。购物网站为了保证信息安全传输,决定生成一对密钥,私钥自己保存,公钥发给铁蛋。铁蛋发给购物网站的信息都是用公钥加密的信息,购物网站收到后,用自己的私钥进行解密。这样即使传输途中,信息被截获,也没办法破解,因为没有私钥。

聊聊对称加密与非对称加密

有个漏洞

这个时候有个黑客,做了一个假的购物网站,页面和真的网站一摸一样,连网址都很相似。同时也生成了一对密钥,最重要的是黑客偷偷的把铁蛋电脑里真购物网站的公钥给替换成了假购物网站的公钥。

当铁蛋打开假的网址进行购物操作时,会用假的公钥进行加密然后把消息发给假的网站,整个通信过程,铁蛋都没有发现自己被骗。

聊聊对称加密与非对称加密

铁蛋之所以被骗,是因为他不知道电脑里的真公钥已经被换成假的了。为了解决这个问题,出现一个认证机构,这个机构会对网站的公钥进行加密签名并形成一个证书,这个证书就是大家常说的 CA 证书,这个机构就是 CA

只要铁蛋电脑里面安装的是经过 CA 认证的证书,在访问的时候,浏览器就会显示出一把小锁,提示可以安全访问,如果没有经过认证,浏览器就会提示铁蛋有风险。

铁蛋经常在多个网站购物,难道需要每个网站都保存一份证书?其实不用这样,我们的电脑里面一般都有 CA 的根证书,只要有了这个证书,所有经过 CA 认证过的网站就都是安全的。

没错,我上面介绍的就是 HTTPS 的工作原理,这也是非对称加密技术的典型用。

双向认证

非对称加密还有一个应用场景就是双向认证。所谓的双向认证就是不仅服务端要验证客户端的身份,客户端也要验证服务端的身份。说白了就是客户端和服务端各自生成一个密钥对,私钥自己保存,公钥发给对方。这种情况一般用在系统与系统的对接上。

为什么需要双向认证

假设 C 系统要访问 S 系统的服务, S 系统对外提供的数据安全级别比较高,只有受信系统才能访问。假设目前只允许 C 系统访问。

S 系统为了保证信息安全传输,决定生成一对密钥,私钥自己保存,公钥发给 C 系统。 C 系统访问 S 的时候,会用 S 的公钥将消息进行加密发给系统 SS 用私钥进行解密。

如果这个时候窃密者 B 系统偷偷拿到的 S 提供给 C 的公钥,然后 BS 的公钥加密消息之后发送给系统 S ,获取相应的数据,那么 S 是没办法判断出请求的消息是来自 C 还是来自窃密者 B

如何保证消息来自于受信系统 C 呢?经过协商, C 系统也生成一对密钥,私钥自己保存,公钥发给系统 S

CS 发送请求的时候, C 先将要发的消息,假设为 M ,进行一次 Hash 运算,得到一个固定长度的 Hash 值,这个值一般称为 数字摘要 。然后 C 用自己的私钥对这个数字摘要进行加密,加密后的值称为 数字签名 ,其实跟现实中我们在文件中进行手写签名是一个意思。

C 系统将数字签名和要发送的消息 M ,一起用 S 的公钥做一次加密之后发送给系统 S

S 收到消息之后,先用自己的私钥对消息进行解密,解密之后,得到 C 的数字签名和消息 M 。这个时候关键的一步来了,就是验签,验证消息是否是 C 发来的。

首先 SC 的公钥对签名进行解密操作,解密完成后会得到一个摘要值,我们称之为 D 。能解开就证明消息是 C 发来的。 S 还会用和 C 一样的 Hash 算法对消息 M 进行 Hash 运算,这样将会得到一个摘要值,我们称之为 D‘ ,如果 DD’ 相同就证明消息没有被篡改过。

总结

上面的双向认证过程也是有漏洞的,只不过相比于单项认证,降低了被破译的风险而已。注意,世界上不存在绝对安全的系统,即便是现在逐渐流行起来的生物识别系统。我们所做的各种安全措施都只是在降低系统被破解的风险而已。

就像家里的防盗门,只防君子不防小人。

推荐阅读

1. Java并发编程那些事儿(十)——最后的总结

2. 一篇小文带你走进RabbitMQ的世界

3. Awk这件上古神兵你会用了吗

4. 手把手教你搭建一套ELK日志搜索运维平台

·END·

花括号MC

Java·大数据·个人成长

聊聊对称加密与非对称加密

微信号:huakuohao-mc

点一下你会更好看耶

聊聊对称加密与非对称加密


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员的数学3

程序员的数学3

[日] 平冈和幸、[日] 堀玄 / 卢晓南 / 人民邮电出版社 / 2016-3 / 79.00元

本书沿袭“程序员的数学”系列平易近人的风格,用通俗的语言和具象的图表深入讲解了编程中所需的线性代数知识。内容包括向量、矩阵、行列式、秩、逆矩阵、线性方程、LU分解、特征值、对角化、Jordan标准型、特征值算法等。一起来看看 《程序员的数学3》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具