在线解剖三大加密算法的今生前世!丨正经情报局03期
作者:星期日, 四月 28, 20190

想知道我说了什么吗?

什么?不想?不行,不想也得想。

其实这是一段经过凯撒密码加密后的文字,原文是Nice to meet you。

想知道其中的原理吗?不急不急,我先跟你讲讲加密的由来。


早在数千年以前,密码学就已经在战争中崭露头角了。

众所周知,情报作为战事中最大的要素,决定着一场战争的胜负。

在大型战争中,由于部队较多,指挥无法直接对每支部队下达命令,所以常常需要信使来传递重要的军事情报。

可是,你要知道,依靠信使来传递军情并不安全:一旦信使被敌军抓获,重要的军事情报就完全被敌方知悉了。

届时,敌军可能已经在A城布下重重埋伏,就等着“君入瓮”了。

甚至,一些比较狡猾的敌人还可能篡改军事情报,将“今晚八点进攻A城”改成“今晚八点进攻B城”,并收买信使传递假情报。

等到晚上八点时,甲乙分别进攻A、B城,找不到友军,双方都以为自己被放鸽子了,这样一来,两支部队就完全落入到了敌方的陷阱之中。

那么,要如何防止这种情况发生呢?

能否让信使不被敌人抓获?这个肯定是无法绝对避免的。

那么只好对情报加密,让敌人即使截获了消息,也看不懂里面的内容。

于是,古罗马时期,凯撒大帝想出了第一种众所周知的密码——凯撒密码。

凯撒在他的军事命令中,将每一个字母都进行了位移,以防敌人截获他的军事情报。

原理就像下图这样,A变成C,B变成D,每个字母都向右位移2个单位:

假设原文是“jin gong A cheng” ,位移后就会变成“lkp iqpi C ejgpi”。

之后把加密过后的消息交给信使去传递,这样,即使敌人截获了该密文,拿到的也是一堆看不懂的文字。

而成功拿到密文的友军,再通过把密文的每个字母左移2个单位,就能得到真实的信息,这个过程,就称之为解密。

不过呢,这种加密方法也并不是一定保险的。

在800年后,一位名为AI-Kindi的阿拉伯数学家破解了凯撒密码。

如果你扫描任何一部英文书的文字,然后计算出每个字母所使用的频率,你会发现惊人的秘密,那就是在英语文字中,使用频率最高的字母永远是e。

——Al-Kindi

所以,如果截获了情报的敌人比较聪明,发现这份疑似乱码的情报中,出现频率最高的字母是 g ,与 e 相差了两个字母,猜测这份情报的加密位移量可能是 2 ,略作尝试,密码就被破解了。

当然,这种办法在文本较少情况下不适用。

不过敌人可以把每一种位移都试一试,终究可以试出正确答案。

于是恺撒密码就被破解了。

不过一种加密方法被破解,就会有新的加密方法诞生。

密码学一直在发展,期间有许多千奇百怪的加密方法,这里不做太多描述,下期我再一一盘点。

在计算机出现以后,传统的密码学发生了翻天覆地的变化。在计算机面前,此前的加密方法的安全系数已经不够,于是,更高级的加密算法应运而生。

在如今的信息安全领域,常见的加密算法可以分成三类,对称加密算法,非对称加密算法以及Hash算法。


[ 对称加密算法 ]

对称加密算法是指,加密过程与解密过程使用的是相同的密钥,即加密和解密的密钥是“对称”的。

发送方使用密钥将明文数据加密成密文,然后发送出去,接收方收到密文后,使用同一个密钥将密文解密成明文读取。

这就好比如,一个上了锁的保险箱里放物品,放入时需要用钥匙打开;取出时,还需要用相同的钥匙开锁。

对称加密算法是目前使用最广泛的加密算法之一,因为它的算法公开、计算量小、加密速度快、加密效率高。

然而,由于通信双方用到的是同一个密钥,如果其中一方的密钥遭泄露,那么整个通信就会被破解。

此外,每个用户与其他用户使用对称加密算法时,都需要使用仅限双方知道的唯一密钥,随着每个用户通信对象的增加,用户所拥有的密钥数量呈几何级数增长,密钥管理成为用户的负担。

[ 非对称加密算法 ]

与对称加密算法不同,非对称加密算法需要两个密钥——公钥 ( Public key ) 和私钥 ( Private key ) 。

公钥和私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密,就算你截获了该公钥,也无法解密。

非对称加密的公钥是公开的,而私钥是自己保存的,在通讯前不需要先同步私钥,避免了在同步私钥过程中被黑客盗取信息的风险

所以,非对称加密与对称加密相比,其安全性更好。

但是,非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能慢上1000倍,所以只适合对少量数据进行加密。

[ Hash算法 ]

Hash算法也是非常常见的加密算法之一。

它和前两种加密算法最大的区别是,它不是用来做数据传输,而是对数据是否被篡改加以验证,防止不法分子篡改数据

它的特点是只能进行加密,而不能解密,而且无论原数据多长都会变成固定长度的字符串;

此外,原数据哪怕只被改动一点点,其哈希值的变动也会非常大。

可见,100000 通过MD5(Hash算法的一种)进行加密,所输出的密文与 100001 的密文天差地别。

最重要的是,对于不同的输入,理论上会生成不同的输出,不会出现不同的输入,密文却是一样的情况。

所以,Hash算法用来验证原信息的完整性和来源的可靠性,而加密解密还是需要使用对称加密算法或者非对称加密算法。


听了这么多,相信你对加密学也有了一定了解了吧,北卡科技将持续为您科普这些小知识哦~


相关文章

写一条评论

 

 

0条评论