“你必须了解游戏规则,才能比其他人玩得更好 ——爱因斯坦。”
众所周知,密码学是数字加密货币的基础,它保证了我们资产的安全,也是挖矿的底层规则。但是,大部分对密码学知之甚少,也就很难看懂区块链项目的加密方式,看不懂,就谈不上对项目有什么的信仰,只能随波逐流的抄币。
为了解决大家的困惑,猎豹区块链将会出品一系列的密码学文章,从最古老加密方式开始,层层深入,帮助大家理解密码学里的很多概念,判断区块链项目的安全性。
凯撒加密
第一种众所周知的密码,是公元前58年左右由凯撒大帝使用的凯撒密码,凯撒在他的军事命令中,将每一个字母都进行了位移,以防止他的敌人在截获凯撒的军事命令之后,直接获取到他的真实情报。
凯撒加密是最简单的加密方式,加密的双方首先要对字母的位移数字达成共识,比如,我们约定好的加密位移的数字是3,那么,我发送的每一个字母都要经过3个位移,(A变成D,B变成E,C变成F… …)
假设我的明文是“attack” ,经过位移为3的凯撒加密之后,就会变成“dwwtfn”。
然后把加密过的文字通过送信人发给对方,这样,即使敌人抓到了这个送信人,拿到的也是一堆看不懂的文字,而成功拿到密文的将军们,再通过把密文的每个字母减3的方式,就能得到真实的明文信息,而这个过程,就称之为解密。
凯撒密码是最早的加密方法,被西方的军事将领们沿用了数百年。终于在800年后,被一位名为为AI-Kindi的阿拉伯数学家破解凯撒密码:
如果你扫描任何一部英文书的文字,然后计算出每个字母所使用的频率,你会发现惊人的秘密,那就是在英语文字中,使用频率最高的字母永远是e,这是英文的文字性质决定的,而写密文的人并不会意识到。在密码学中,这被称为指纹。
所以,只要我们找到密文中使用频度最高的字母,再与字母e比较,就能找到凯撒密码的加密位移,比如在密文中,使用频率最高的是h,那么,我们可以推断,加密的位移是3,拿到加密位移,就能推断出所有明文。
这种方式被称为频度分析,它的出现对凯撒密码的安全性是非常大的打击。
但是,一个强大的密码是可以掩盖这种指纹的,而掩盖指纹的方式,就是使字母使用的频率分布变得均匀。
多表密码
在15世纪左右,有人提出了多表密码来实现这一目的,多表密码与凯撒密码不同的是,不在是使用单一的数字进行位移加密,而是引用一个位移单词。
这种加密的方式的第一步,是确定这个位移单词,假设是“world”,然后,将这个单词根据在字母表的位置,把这个单词转换为数字,“world”→“21、15、18、12、4”,接下来,把这一列数在信息编码的过程中一直重复,把明文的信息根据这个数列进行位移。
假设明文是“abcde fghij”,经过加密之后的密文就是“vrvqj bwavo”
这样,把密文发给同伴的时候,同伴可以根据事先约定好的秘密单词,减去相应的位移来对信息进行解密。
假如密文被截获,窃听者计算出字母使用的频率,他将会发现更平坦的分布。
那么他将会怎么破解呢?
其实很简单,大家记住,破密者寻找信息泄露,也就是寻找局部指纹,只要在字母的频率上存在差别,就会发现信息的泄露,这个差别是由密文里的重复引起的。
这个例子中,发布者的密码利用了一个重复的单词,为了破解加密,窃密者首先需要确定所使用的位移单词的长度,而不是单词本身,他需要对全部信息进行统计,检查不同间隔的频率分布,当他检查以5个字母为周期的频率分布时,指纹就自己出现了。
所以,这种使用多重位移的加密方法,与凯撒使用的单一位移加密法比较,强度在于,确定位移单词的长度所用的时间,所以,位移单词越长,信息就越安全。
多表密码虽然比凯撒密码安全性大大增加,但是理论上,只要花时间是可以进行破解的。
一次一密
那有没有保证信息绝对安全的加密方法呢?答案是随机性加密。
想象一下,如果加密者投掷一个26面的筛子,来生成一长列随机位移的数字,然后与解密者共享,来取代位移单词,用这个随机数列进行字母的移位,数列的长度与信息的长度是一致的,这是很重要的,已避免任何的重复,然后他把密文发送给接收者,接收者使用她给的一列随机位移数字来解密信息。
如果采取这种方式,第三方窃听者就很难解开了,首先,位移永远不会陷入重复的模式里,第二,密文将会有一个均匀的频率分布,因为没有频率差别,也就没有信息泄露,所以,破解加密基本上是不可能了。
这就是最强的加密方法,它出现在19世纪末期,现在,它被称为一次一密。
关于一次一密的是如何实现的,我将会在下一篇文章中给大家揭晓,敬请期待。