漫画:什么是加密算法?

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 如何进行加密呢?古人想出了一种非常朴素的加密方法,被称为凯撒密码。加密的原理就像下图这样。

640.jpg640.jpg640.jpg640.jpg640.jpg640.jpg



加密算法的历史


加密算法最早诞生在什么时候?是在计算机出现之后吗?不不不,早在古罗马时期,加密算法就被应用于战争当中。


640.jpg


在大规模的战争中,部队之间常常需要信使往来,传递重要的军事情报。

640.jpg


可是,一旦信使被敌军抓获,重要的军事情报就完全暴露给了敌方。


640.jpg

甚至,狡猾的敌人有可能篡改军事情报,并收买信使把假情报传递给我方部队。


640.jpg



这样一来,我方部队就完全落入到了敌方的陷阱之中。这种拦截并篡改信息的手法,在网络安全领域被称为中间人攻击。

怎样防止这种情况的发生呢?不让信使被敌人抓获?这个肯定是无法绝对避免的。

那么我们不妨换个角度,让敌人即使截获了军事情报,也看不懂里面的内容,这就是对信息的加密。

640.jpg

如何进行加密呢?古人想出了一种非常朴素的加密方法,被称为凯撒密码。加密的原理就像下图这样:


640.png


如图所示,图中第一行的字母代表信息的“明文”,第二行字母代表信息的密文。这个加密算法十分简单,就是选择一个偏移量(这里的偏移量是2),把明文当中的所有字母按照字母表的顺序向后偏移两位,从而生成密文。比如:

原文的字母A,对应的密文是字母C。

原文的字母D,对应的密文是字母F。

原文的单词Java,对应的密文是Lcxc。

这样一来,敌方看到信使的情报内容,就彻底蒙逼了。相应的,我军事先约定好了密文通信的偏移量,当友军收到情报以后,把密文的所有字母向前偏移两位,就还原成了明文,这个过程叫做解密。

但是,这种加密方法真的百分百保险吗?并不是。

在英语的26个字母中,出现频率最高的字母是e。如果敌人截获了情报,发现这段看不懂的密文当中出现频率最高的字母是g,由于e和g相差两个字母,就可以猜测出我军的密文通信很可能选择2作为偏移量。这样一来,我军的密码就被破解了。

最不济,敌人可以把每一种偏移量都尝试一遍(26个字母,最多25种偏移),终究可以试出符合正常语法的偏移量。这种方式被称为暴力破解。image.gif

640.jpg640.jpg640.pngimage.gif



加密算法的种类


在如今的信息安全领域,有各种各样的加密算法凝聚了计算机科学家门的智慧。从宏观上来看,这些加密算法可以归结为三大类:哈希算法、对称加密算法、非对称加密算法。


1.哈希算法


从严格意义上来说,哈希算法并不属于加密算法,但它在信息安全领域起到了很重要的作用。

哈希算法能做什么用呢?其中一个重要的作用就是生成信息摘要,用以验证原信息的完整性和来源的可靠性。

让我们来举个栗子:

在某个互联网应用上,有用户下单买了东西,于是应用需要通知支付宝,并告诉支付宝商户ID、支付金额等等信息。

支付宝怎么知道这个请求是真的来自该应用,并且没有被篡改呢?

请求的发送方把所有参数,外加双方约定的Key(例子中Key=abc)拼接起来,并利用哈希算法生成了一段信息摘要:

Hash(1234_100_abc) = 948569CD3466451F

而请求的接收方在接到参数和摘要之后,按照同样的规则,也把参数和Key拼接起来并生成摘要:

Hash(1234_100_abc) = 948569CD3466451F

如果最终发现两端信息摘要一致,证明信息没有被篡改,并且来源确实是该互联网应用。(只要参数修改了一点点,或者Key不一样,那么生成的信息摘要就会完全不同)

生成信息摘要的过程叫做签名,验证信息摘要的过程叫做验签。

哈希算法包含哪些具体的算法呢?其中最著名的当属MD5算法。后来,人们觉得MD5算法生成的信息摘要太短(128位),不够安全,于是又有了SHA系列算法。


2.对称加密算法


哈希算法可以解决验签的问题,却无法解决明文加密的问题。这时候,就需要真正的加密算法出场了。

什么是对称加密呢?这个概念很好理解:

640.png

image.gif


如图所示,一段明文通过密钥进行加密,可以生成一段密文;这段密文通过同样的密钥进行解密,可以还原成明文。这样一来,只要双方事先约定好了密钥,就可以使用密文进行往来通信。

除了通信过程中的加密以外,数据库存储的敏感信息也可以通过这种方式进行加密。这样即使数据泄露到了外界,泄露出去的也都是密文。

对称加密包含哪些具体的算法呢?在早期,人们使用DES算法进行加密解密;后来,人们觉得DES不够安全,发明了3DES算法;而如今,最为流行的对称加密算法是AES算法。

不知道读者中有多少人曾经接触过欧盟的GDPR法案,为了遵从该法案,有的企业就曾经将数据库中的敏感信息使用3DES进行加密。

总而言之,对称算法的好处是加密解密的效率比较高。相应的,对称算法的缺点是不够安全。为什么呢?通信双方约定的密钥是相同的,只要密钥本身被任何一方泄露出去,通信的密文就会被破解;此外,在双方建立通信之初,服务端把密钥告诉给客户端的时候,也有被拦截到的危险。

为了解决这一痛点,非对称加密就登场了。


3.非对称加密算法


什么又是非对称加密呢?在刚刚接触到的时候,或许你会觉得这种算法有些古怪:

image.gif

640.png

如图所示,在非对称加密中存在一对密钥,其中一个叫做公钥,另一个叫做私钥。在加密解密的过程中,我们既可以使用公钥加密明文,使用私钥解密密文;也可以使用私钥加密明文,使用公钥解密密文。

这样设计有什么好处呢?看看通信的过程就知道了:

1.在双方建立通信的时候,服务端只要把公钥告诉给客户端,自己保留私钥。

2.客户端利用获得的公钥。加密另外一个密钥X(可以是对称加密的密钥),发送给服务端。

3.服务端获得消息后,用自己的私钥解密,得到里面隐含的密钥X。

4.从此以后,双方可以利用密钥X进行对称加密的通信了。


image.gif

640.png

在这个过程中,即使公钥被第三方截获,甚至后续的所有通信都被截获,第三方也无法进行破解。因为第二步利用公钥加密的消息,只有私钥才能解开,所以第三方永远无法知道密钥X是什么。

非对称加密算法的代表有哪些呢?最著名的当属RSA算法。

既然非对称加密这么强大,是不是没有缺点呢?也不是。非对称加密最大的问题,就是性能较差,无法应用于长期的通信。

640.jpg640.jpg

image.gif


image.gif

关于加密算法,小灰之前曾经写过一部分相关漫画,没看过的小伙伴可以看看哦:

漫画:什么是MD5算法?

漫画:如何破解MD5算法?

什么是AES算法?(整合版)

今后,小灰将会补充非对称加密算法RSA算法的介绍,敬请期待。


相关文章
|
6月前
|
算法 安全 关系型数据库
密码学系列之七:数字签名
密码学系列之七:数字签名
|
算法 网络安全 数据安全/隐私保护
【密码学】手摸手带你手算AES
本文带着大家手动计算了一下完整的简化版AES的整个流程,其实主要都参考了密码学与网络安全这本书,大部分的公式都是从这本书上来的,我是真的喜欢这个例子,麻雀虽小,五脏俱全,用来学习AES的入门感觉非常的合适,如果能够完整的自己手算下来这个例子,然后再去看完整版的AES算法,会简单非常多,主要就是规模扩大了一下,核心的流程还是上面这一套。最后,感谢能看到这里的读者,如果本文对大佬们理解AES有一点点的帮助,也不枉我手动敲了这么多的公式和矩阵了。
【密码学】手摸手带你手算AES
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1265 0
【密码学】一文读懂XTEA加密
|
3月前
|
安全 数据安全/隐私保护 C++
RSA密钥的秘密花园:Python带你漫步加密解密的知识殿堂
【8月更文挑战第2天】RSA密钥的秘密花园以非对称加密守护信息安全。对称加密如乡间小屋, 发送方与接收方共享钥匙; 而RSA像宏伟城堡, 拥有公钥和私钥。公钥加密信息, 私钥解密, 解决了密钥安全传递难题。借助Python和pycryptodome库, 我们可体验RSA加密解密过程, 生成密钥对, 加密消息, 并成功解密, 展现其强大能力和在信息安全中的独特作用。
65 2
|
6月前
|
存储 安全 数据安全/隐私保护
加密的艺术:对称加密的奇妙之处(下)
加密的艺术:对称加密的奇妙之处(下)
加密的艺术:对称加密的奇妙之处(下)
|
算法 数据安全/隐私保护 Python
|
算法 安全 数据安全/隐私保护
【密码学】 一篇文章讲透数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。数字签名可以识别消息是否被篡改, 并验证消息的可靠性, 也可以防止否认。
720 0
【密码学】 一篇文章讲透数字签名
|
安全 算法 Java
面试官:说说对称加密、非对称加密、混合加密?懵了。。
面试官:说说对称加密、非对称加密、混合加密?懵了。。
199 0
面试官:说说对称加密、非对称加密、混合加密?懵了。。
|
Rust 算法 JavaScript
【密码学】密码学相关资料整理
感觉我也写了不少的文章了,这里整理一下,之后这个整理会佛系更新,手动狗头,具体的链接查看原文获取吧,因为这个链接好像加不进去。
【密码学】密码学相关资料整理
|
数据安全/隐私保护 C++
恺撒加密(MOOC)(C++)
恺撒加密(MOOC)(C++)
126 0