密码学基础——伪随机数生成器

2019-01-10 16:32 栏目:经验之谈 来源: 查看()
如果您想了解有关区块链和区块链项目的更多信息,您将不可避免地需要了解加密技术。区块链是密码学的综合应用。了解密码学以真正理解区块链。

在关于密码学起源的科普文章中,我们介绍了经典的加密方法,从凯撒密码到多表密码,一次。在本文中,我们将与您分享最早实现的一个秘密。加密器和伪随机数生成器。

Enigma加密机

 在第二次世界大战的早期,法西斯主义的整体战争力量远远不同于盟国的战争力量。然而,德国和日本采取了大量的突袭战术,在第二次世界大战初期抢占先机,并取得了一定的战争优势。

为了有效地实施突袭战术,情报非常重要,那么如何确保情报安全是第二次世界大战期间密码学的主要目标。
在上一篇文章中,我们提到为了确保信息绝对安全,有必要以一次性方式加密信息,即随机加密每个字母,理想情况下,这台机器每个输入的字母是随机的移位然后输出加密的字母。

那时,最先进的机器,称为转子加密机,非常擅长一次。原理实际上与我们所知的里程表相似。

密码学基础——伪随机数生成器

(低单位车轮转一圈,高单位车轮转一圈)

我们都知道里程表机器,需要很长时间才能重复。

想象一下,我们弄乱了里程表轮上的数字。当我们没有向前移动时,我们在转子上添加了每个数字以获得位移数,然后移动我们想要加密的字母。这是转子加密机的一般原理。

密码学基础——伪随机数生成器

加密器和接收器可以根据以下方法生成相同的位移序列:首先,它们需要共享同一台机器然后就初始状态达成一致。这被定义为机器代码设置,然后它们将它们各自的机器调整到相同的位置,最后,继续相同的操作以获得相同的序列。

对于每个具有26个数字的三个转子,重复每个序列通过转子26的旋转的三阶(17576位)旋转的顺序。

每个转子的位置等同于序列中的相应位置。初始机器状态称为机器代码设置,所有机器代码设置的集合称为机器代码空间。如果最初设置了机器。如果添加,代码空间将增加。

当我们选择机器代码设置时,我们在此空间中选择一个起点。如果将机器代码设置为公开,则显示整个加密序列。

因此,这种转子加密机的安全性取决于机器代码空间的大小和机器代码设置的随机性。

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

密码学基础——伪随机数生成器

在战争结束时,Enigma可以设置超过1.5亿种方式。这使得德国人相信Allies已经获得了Enigma机器并且无法验证所有可能的机器代码设置。

对于使用Enigma进行通信的双方,他们需要首先共享每日机器代码设置,这允许他们将他们的机器调整到相同的位置。该协议在战争期间一次又一次地改变,但通常分配给分发密钥表。所有操作员,每天,操作员都会切断当天的设置,这将告诉他们机器当天所需的配置,例如,使用哪个转子,以及转子的顺序,然后使用后,机器代码设置将被销毁。

然而,对于操作员来说,在通信之前还有一个关键的步骤,他们会选择每个转子的初始位置,而一些懒惰的操作员会犯一个非常简单的错误,这就像我们锁定自行车机械锁的错误一样,我们倾向于将转子从初始位置移动几次,或者重复使用通用密码,这会破坏初始转子位置的均匀分布,经过反复观察,军方可以完全逆转转子的线路分布。

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

我们可以看到,同时最大的问题是我们必须提前分享这么长的密钥。为了解决这个问题,我们需要引入伪随机数。

伪随机数发生器
 
在我们理解伪随机数之前,让我们看一下真正的随机数。在我们的物理世界中,到处都是随机波动。通过测量称为噪声的随机波动,我们可以生成真实的随机数并测量噪声。该过程称为抽样,我们可以通过抽样得到一个随机数。然而,这些机器是相对确定的,并且它们的操作是可预测和可重复的。

1946年,Von Neumann使用一台名为ENIAC的计算机参与军事氢弹的设计,他打算重复计算核聚变过程的模拟,但这需要随机生成数字以便快速访问并保证这些数字是但是,ENIAC的内存非常有限,并且存储长随机序列是不可能的。

因此,冯·诺伊曼设计了一种机械模拟随机性的算法。算法如下:首先,选择一个成为种子的实数随机数。该数字可以来自噪声的测量,例如当前时间(以毫秒为单位)。这被称为种子。然后,将此种子作为输入并进行简单计算。——将种子自身相乘,然后输出结果的中间部分。接下来,将此输出用作下一个种子,并根据需要多次重复该过程。

这称为评分方法,它是大量伪随机数生成器之一。那么随机生成的序列和伪随机生成的序列之间有什么区别?

核心区别在于,如果伪随机数达到一定数量,则序列最终会重复。当先前使用的种子编号出现在算法中时,循环开始,并且重复伪随机数序列之前的长度被调用。对于该周期,该周期严格受原始种子的长度限制。

例如,如果我们使用两位数的种子,该算法可以在重复循环之前生成多达100个数字。在重复循环之前,3位种子可以生成1000个数字,并且可以在重复之前重复4个种子。但是,如果我们使用足够大的种子,则生成10,000个数字,序列中的数字将在重复之前扩展到数万亿。

另一个关键区别是,当您伪随机生成数字时,会有一些无法生成的序列。

例如,如果加密器Alice生成具有20个位移的真正随机序列,则这相当于从所有可能位移序列的堆栈中随机选择序列,其包含26个20位可能性。这是一个天文数字。

但是,如果加密器使用4位随机种子生成20位伪随机数序列,他只能概述10,000种可能的结果,这意味着她只能生成10,000种不同的类型。的序列。

当我们从随机位移转向伪随机位移时,它相当于将密钥空间减少到相对较小的种子空间。

提出了伪随机数的概念,使得加密器和接收器不需要预先共享整个随机位移序列,而只需要共享相对较短的随机种子,然后将其扩展为相同的看似随机的序列需要的时候。能够。

但如果他们不能总是见面分享这粒种子呢?这是现代加密技术最重要的内容,也是区块链中加密的核心。我们将专注于下一篇文章。

(来源:Cheetah Blockchain Security)

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发