当前位置:首页 > 物联网 > 区块链
[导读] 如果想要深入了解区块链和区块链项目,不可避免的需要了解密码学。区块链是对密码学的一次整合运用,理解了密码学,才能真正理解区块链。 我们在密码学起源的科普文章中,给大家介绍了经典的加密方法

如果想要深入了解区块链和区块链项目,不可避免的需要了解密码学。区块链是对密码学的一次整合运用,理解了密码学,才能真正理解区块链。

我们在密码学起源的科普文章中,给大家介绍了经典的加密方法,从凯撒密码到多表密码,以及一次一密,在本篇文章中,我们将会和大家分享最早实现一次一密的加密机以及伪随机数生成器。

Enigma加密机

第二次大战初期,法西斯的整体战争实力其实是远远不如同盟国的,但是,德国、日本采取了大量的的突袭战术,在二战初期先发制人,取得了一定的战争优势。

要想有效的实施突袭战术,情报是非常关键的,那么如何保证情报的安全性,就是二战期间加密学的主要目标。

在上一篇文章中我们提到,要想保证信息都绝对安全,就需要用一次一密都方式对信息进行加密,也就是对每个字母进行随机位移的加密,理想的情况是,这个机器将每一个输入的字母,都对其进行随机位移,然后输出加密过的字母。

当时最先进的机器,被称为转子加密机,它很好的实现了一次一密。而其中的原理其实和我们熟知的里程表很像。

(低单位的轮子转动一周,高单位都轮子转动一格)

我们都很清楚里程表的机器,它需要很长时间才会重复一周。

想象一下,我们把里程计轮子上的数字打乱,当没嘀嗒向前一次时,都把转子上的每一个数字相加,来得到了位移数字,然后把我们要加密的字母进行位移加密,这就是转子加密机的大致原理。

加密者和接受者可以根据下面的方法生成相同的位移序列:首先,他们需要共享相同的机器,然后就初始状态达成一致。这被定义为机码设置,然后他们把各自的机器调整到相同的位置,最后,不断进行相同的操作,来得到相同的序列。

对于三个转子、每个转子有26个数字而言,每个序列经过转子26的三次方次(17576个数字)的转动的位移序列才会重复。

而每一个转子的位置,都等同于序列里的对应位置,最初的机器状态被称为机码设置,而所有的机码设置的集合,则被称为机码空间,如果最初设置机器的方法增加了的话,机码空间也就增加了。

当我们选择一个机码设置,我们就选择了这个空间里的一个起始点,如果把机码设置给暴露了,就泄露了整个加密序列。

所以,这种转子加密机的安全性取决于机码空间的大小,与机码设置的随机性这两方面。

在第二次世界大战期间,德国纳粹使用的最重要的加密技术之一,就是被称为Enigma(迷)的加密机。

在临近战争结束时,Enigma可以被设置成超过150百万百万百万种方式。这让德国人相信,盟军获得了Enigma机,也无法验证所有可能的机码设置。

对于使用Enigma进行通信的双方,他们需要首先共享每天的机码设置,这使他们可以将各自的机器调整到同一位置,这个协议在战争期间一再改变,但通常都会在分配密钥表上分发给所有操作者,每一天,操作者都会剪下当日的设定,而这会告诉他们,机器当天需要的配置,例如,使用哪个转子,以及转子的顺序,然后在使用之后,机码设置就会被销毁。

然而,对于操作者而言,仍剩下一个至关重要的步骤,在通信之前,他们将要选择,每一个转子的初始位置,而一些懒惰的操作者,犯下一个很简单的错误,这和我们锁自行车机械锁犯下的错误一样,我们倾向于把转子从初始位置移动很少几下,或者重复使用一个常见的密码,这破坏了初始转子位置的均匀分布,在重复观测后,使得盟军可以完全可以反向还原转子的线路分布。

这种人为的低级失误导致了Enigma机的最终破解,间接影响了战争的走势。

我们可以看到,一次一密最大的问题是,我们不得不提前共享这么长的密钥。为了解决这个问题,我们需要引入伪随机数。

伪随机数生成器

在理解伪随机数之前,我们先来看看真正的随机数,我们的物理世界,其实到处都存在着随机波动,通过测量被称为噪音的随机波动,我们可以生成真正的随机数,测量噪音的过程被称为取样,我们可以通过取样得到某个随机数字。但是,相对来说,机器其实是确定的,他们的操作是可预测并且可重复的。

在1946年,冯诺依曼参与了军方的氢弹的设计,应用了一个名为ENIAC的计算机,他打算重复地计算核聚变过程的模拟,然而这需要随机生成数进行快速存取,并且保证这些数是可重复的,然而,ENIAC的内存相当有限,存储长的随机序列是不可能的。

于是,冯诺依曼设计了一个算法,来机械的模仿随机性,该算法如下:首先,选择一个被成为种子的真正随机数,这个数可以来自于对噪音的测量,如当前时间的毫秒数,这被称为种子。然后,把这个种子作为输入,进行一个简单的计算——将种子乘以它自身,然后输出这个结果的中间部分,接下来,使用这个输出,作为下一个种子,并按照需要多次重复这个过程。

这被称为评分取中法,这是大量伪随机数发生器其中的一个。那么,随机生成的数列和伪随机生成的数列之间的差别是什么呢?

核心区别就在于,伪随机数如果达到一定数量,序列最终一定会重复,当算法中出现了之前已经使用过的种子数字时,循环就开始了,在伪随机数序列重复之前的长度,被称为周期,周期严格地由最初种子的长度所限制。

例如,如果我们使用一个两位的种子,那么算法在重复循环之前,最多能生成100个数,一个3位的种子在重复循环之前,可以生成1000个数,而4位种子在重复之前,可以生成10000个数,然而,如果我们使用一个足够大的种子,在重复之前,序列中的数字将会到扩大到万亿个。

还有一个关键区别非常重要,那就是当你伪随机地生成数字时,将会有一些无法产生的序列。

例如,如果加密者Alice生成一个含有20个位移的真正随机序列,这将等价于从所有可能的位移序列的堆栈中,随机选择一个序列,这个堆栈中包含了26的20次方种可能,这是一个天文数字。

但如果加密者使用一个4位的随机种子生成一个20位的伪随机数序列的话,他只能在10000种可能的结果中,做出等概论的选择,也就是说她只能生成10000种不同的序列。

当我们从随机位移转向伪随机位移时,相当于把密钥空间缩小成了一个相对较小的种子空间。

伪随机数概念的提出使得加密者与接收者不需要再事先共享整个随机位移序列,而只需要共享相对较短的随机种子,然后再需要时把它扩展成相同的看起来很随机的序列就可以。

但是如果他们始终无法见面来共享这个种子,该怎么解决呢?这就是现代加密技术最重要的内容,也是区块链中加密的核心。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭