繁體中文
  • 繁体
    简体中文
  • 繁体
    繁體中文

青苹果

守护您的资产安全

添加客服微信号向客服提问咨询

密码学的起源及发展:凯撒密码、多表密码、一次一密

2018-12-28 06:33:46 79 引领区块链+电商发展,青苹果带来无限可能

“你必须了解游戏规则,才能比其他人玩得更好 ——爱因斯坦。”

 

众所周知,密码学是数字加密货币的基础,它保证了我们资产的安全,也是挖矿的底层规则。但是,大部分对密码学知之甚少,也就很难看懂区块链项目的加密方式,看不懂,就谈不上对项目有什么的信仰,只能随波逐流的抄币。

 

为了解决大家的困惑,我们从最古老加密方式开始,层层深入,帮助大家理解密码学里的很多概念,判断区块链项目的安全性。

 

凯撒加密

 

第一种众所周知的密码,是公元前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世纪末期,现在,它被称为一次一密。

 

一次一密密码(one-time pad)最早是由Major Joseph Mauborgne和AT&T公司的Gilbert Vernam在1917年发明的。原理简单,使用便捷,其安全原理是基于信息传递,双方的密钥是随机变化的,每次通讯双方传递的明文都使用同一条临时随机密钥和对称算法进行加密后方可在线路上传递。因为密钥一次一变,且无法猜测,这就保证了线路传递数据的绝对安全。即使拥有再大的破解计算能力,在没有密钥的前提下对线路截取的密文也是无能为力的。

 

这套方案在当时的背景下,还是比较完美的解决了线路数据传递的安全问题。但也同样存在着不可忽略的问题,即通讯双方密钥同步问题。这点很好理解,早先的一次一密密码的实现,需要通讯双方保存一个相同的密码集,每个密码集中拥有N条随机密钥,每次通讯顺序使用其中的密钥。但双方的密码集中相同序号的密钥必须是完全一样的,否则密文无法被正确还原。所以一旦其中一个密码集泄露,那这套加密系统自然就被破解了。这就导致密码集的维护成本极高,且存在安全风险。

 

时至今日,基于对称加密算法实现的安全方案,不论加密算法自身的安全强度多高,但最核心安全的依然是密钥安全存储与使用,一次一密密码技术在现今使用的非常广泛。不论是银联加密系统,还是远程视频加密等应用都会涉及到。这其中的关键技术就是密钥的下发与安全存储和销毁。下发过程是多种多样的,但多数使用了密文方式进行密钥更新。

 

下面简述一种应用方法。

A、B双方在已建立互信机制的前提下,分别应用LKT硬件加密芯片存储一条线路保护密钥KEY_pro。

每次通讯之前,A利用加密芯片产生N字节随机数作为数据加密密钥KEY_en并存储于RAM之中,在加密芯片内部经KEY_pro加密后生成密文C1,A将C1发送给B后,经加密芯片内部的KEY_pro解密还原出KEY_en并存储于加密芯片RAM中。

每次A、B双方正式通讯前,都经过上述操作完成密钥同步,然后利用KEY_en对通讯数据加密传递,这就实现了一次一密码的安全方案,同时解决了密钥存储维护的难题。

 

之所以这样说,是因为加密芯片自身具有高安全等级,可有效防止暴力破解等数据破解方式,保证内部数据存储与运行安全。线路传递数据的加解密都在芯片内部完成,保证线路安全。最主要的是加密算法可灵活选择,利用LKT加密芯片的可编程特点,能够自由切换加密密钥和加密算法,让一次一密,一次多密或者多次多密的应用都变成可能,打开了嵌入式应用开发人员的思维模式,让安全变得更贴近应用。