尤其是关于流密码,我经常读到(有时是理论的,有时是实际的)攻击,它们能够“将密文与真正的随机流区分开”。

对我来说,合乎逻辑的是-因为密文看起来是随机的,所以不一定是随机的。环顾四周,普遍的共识是“密文必须与真正的随机比特流没有区别”。

这让我开始思考:“真正的随机性”到底是什么?根据我发现的(与密码学相关的)定义,“真正的随机性是不可预测的”。到目前为止,一切都很好……但这也标志着我丢失它的确切时间。

实际上,“不可预测的”意味着我们没有什么可与密文进行比较,因为我们无法预测“真正的随机性”可能产生什么输出。同样,“真正的随机性”可能(最小)会输出与密文完全相同的一系列比特。含义:密文可能会读取63F1t49X43,并且(最小)机会“真正的随机性”可能会产生与63F1t49X43完全相同的输出。没有人能说出来,因为“真正的随机性是无法预测的”。

无法预测任何真正的随机性,我们如何比较,区分甚至声称密文不是真正的随机性?显然,不能将其与“真实随机性”进行比较,因为“真实随机性是不可预测的”,因此这是不可能的。

现在,我很确定密码学不是哲学,因此,我绝对肯定我缺少与“真正随机性”的密码学含义有关的明显东西。我猜想细节可以在“真实随机性”的密码学定义中找到,这引发了我的问题:

在密码学领域中“真实随机性”到底是如何定义的? />
实际上,我猜您可能会说,我不太确定我是否能正确理解某人如何提供(密码学上合理的)证据来证明“真正的随机性”是不可预测的,那么一系列比特是真正的随机性。因此,如果您认为不是让我感到困惑的定义,请您直指我可能会误解的内容,让我挺直头脑。

EDIT

为避免误解:在谈论“真正的随机性”时,我考虑的是“真实随机数发生器”而不是“伪随机数发生器”。这就是为什么我要问“真正的随机性”而不是伪随机性。

#1 楼

随机性不是位字符串(或任何类型的字符)的属性。而是生成这些字符串的过程的属性。但是,将字符串与产生该字符串的事物混合起来很方便,因此可以说字符串是“随机”或“非随机”。

例如,字符串00000是随机的如果是“随机过程”的结果,例如一枚硬币被扔了五次并连续五次落在尾巴上。类似地,如果字符串1,2,3,4,5,6是掷骰子六次的结果,则它是随机的。请注意,随机过程不一定是“公平”的随机过程,尽管实质上偏离均匀分布的过程对于加密目的没有用。

什么是“随机过程”?在我看来,随机过程要么是不确定过程(如果确实存在),要么是确定过程,其未知信息的熵(与结果密切相关)大于生成的字符串。关于翻转后的硬币的状态,我们有很多未知的情况(鉴于不确定性原理,这是永远无法知道的)。硬币中每个粒子的精确位置和动量,周围的空气以及翻转它的手(所有这些都是紧密相关的,因为我们大概需要知道它们才能准确预测翻转的结果)。

如果字符串00000是产生数字的算法的结果,则该算法的未知信息和相关信息的熵小于5位(例如,我们知道该算法以及除4位以外的所有信息)有关种子的信息),则字符串将为“非随机”。充其量只能是“伪随机”,这意味着在计算上很难与随机区分开。

评论


$ \ begingroup $
评论不用于扩展讨论;此对话已移至聊天。
$ \ endgroup $
– e-sushi
17年6月30日在18:03

#2 楼

随机性是事件之间任何因果关系的信息损失。

对于普遍因果关系的假设,宇宙不必是发条宇宙-如果事件是“粘性”并以相同方式产生局部因果关系分子云会堆积成恒星和行星。光速的根本原因也可能是局部因果关系的主要诱因,但我离题了。

我们认为随机先验的来源是相关事件的简单流,所有有关其因果关系的信息关系已删除。

这是一个微妙的地方,值得扩展:当我们看到大量*数据流中的模式时,我们会看到已保留的因果信息。因果关系的最持久来源是时间因果关系。由于我们接收事件的顺序是由于事件之间以及事件之间的传播速度(c的最大值)-因此,在时间传播中通常会强烈保留局部非时间因果关系,因为通向观察者的最短路径几乎不涉及任何外来干扰。 br />
我们有意(或自然可以偶然地)消除时间因果关系的方式是迫使观察者将多个参照系折叠成一个参照系。在此过程中丢失信息。例如,使用布朗运动,如果跟踪每个粒子的历史,则将保留因果关系,并且可以预测所有将来的行为。如果观察者只能观察一个粒子,则因果关系不会保留,其他粒子对该粒子的影响本质上是随机的。

PRNG雪崩的工作方式几乎相同。因此,TRNG和PRNG之间的区别仅在于PRNG具有少量未知信息(例如1024位),而TRNG自然现象具有大量未知信息(例如,一杯热咖啡的状态大小为10 ^ 24位) )。

我们无法存储,传递或有效地利用自然现象的庞大状态大小,因此TRNG被认为是完全随机的;为您提供一个自然现象,它可以将多个框架(例如“太阳中的每个分子”)分解为一个参考框架(例如“太阳风的当前速率”)。介于随机性和唯一性之间。随机收集数据没有义务在整体上或其任何部分具有唯一性。迪尔伯特(Dilbert)演示。

这就是为什么您需要一个未经分析或无法控制的随机数生成器的信任链的原因。我可以给您一个看起来像随机的数据页面,因为它通过了唯一性,重复性和分布性的所有测试,但是由于我使用了PRNG并保留了种子,因此对我而言并不是随机的。

*简短的数据流很容易就可以归因于因果关系,而没有可靠地存在因果关系。是一个具有极大未知内部状态的随机过程。
PRNG是具有极小的未知内部状态的随机过程。

TRNG是由选择一种经过验证的随机过程,很容易观察其输出。

TRNG可以测量自然现象,因为它们已经包含了极大的未知数;或叠加太多的状态信息,以至于可以称为“极大的未知数”。


评论


$ \ begingroup $
如果是@Tanath,我想您将对不赞成票发表评论。
$ \ endgroup $
–LateralFractal
13-10-13在1:28

$ \ begingroup $
Dilbert的“ 999999”未能通过不可压缩测试。 “ 1E6-1”是表示同一件事的另一种方式,但更简短。由于长期的重复结果,随机性质量测试通常会拒绝此序列。然后再次,最终TRNG将输出此序列(如果该序列在其输出域内)。因此,我完全同意TRNG输出中的模式。另外,我喜欢关于“信任”是好的随机数生成器的组成部分的评论。
$ \ endgroup $
–user4982
13-10-13在10:46

#3 楼

简而言之,真正的随机性归结为选定的因果无关的数据。也就是说,如果每条数据都是没有共同原因的结果,则没有关系可以用来预测或推断其余数据。因此,不可预测性是真正随机性的结果,但是缺乏因果关系才是决定因素。

评论


$ \ begingroup $
评论不用于扩展讨论;此对话已移至聊天。
$ \ endgroup $
– e-sushi
17年6月30日在18:06

#4 楼

在原始问题的上下文中,您将流密码与之进行比较的是特定的概率模型。该模型的每个位的概率0.5为1,并且该概率与字符串在位中的位置以及周围的位无关。如果您掷出一枚公平硬币来确定序列中的每一位,便会获得这种来源。

之所以要使用流密码,是因为:想象一下从理想的随机源中提取密钥流,然后将其异或到明文中进行加密。这将永远不会泄漏有关纯文本的任何信息,并且不会被破坏-这是一个时间片。

现在,假设我们从流密码中提取密钥流,并且假设没有办法从理想的随机序列中区分出该流密码的输出,直到计算和观察到的密钥流达到一定限度为止。

现在,让我们想象一种攻击算法,该算法使用的密钥流和计算限制少于限制,可以打破流密码并恢复有关明文的某些信息。如果我有这样的攻击算法,那么我总是可以用它来构建一个算法,以区分理想的随机序列中的流密码输出。我只是获取流密码输出,使用它来加密一些纯文本,然后尝试对其进行攻击。

这意味着我们知道,如果没有办法将流密码输出与理想的随机序列区分开,那么就不会有攻击者从流密码加密的数据中恢复有关明文的信息。 。

#5 楼

我认为这里涉及两个问题:


您如何确定密文是否具有真正随机流的属性?
如何确定流是否确实是真正随机吗?

第一部分,统计技术很多。但是基本的问题是,明文和密文之间是否存在可检测的关系。如果修改明文的任何部分有50%的机会更改密文的任何部分,那是一个好兆头。

对于第二部分,我相信不可能分辨出真正随机的区别是什么。流和足够好的伪随机流,而无需了解实现细节或看到重复。确定性算法无法产生真正的随机性。

#6 楼

密码学领域的随机性是由您无法求解的密码定义的。将明文的顺序转换为密文的顺序的过程对于您来说是未知的。就您而言,密文已经放在一起,没有可识别的模式,计划,系统或连接。它是无序的。对您来说,它是随机的。

如果我可以解决密码但您不能解决,那么我要么很幸运,要么我可以看到您看不到的模式,这有助于我解决密码。在后一种情况下,对我来说密文不是随机的。我有一个直觉,您不具备,我对密码(以及这个世界上可能还有许多其他不相关的事物)的观察与您的不同。

评论


$ \ begingroup $
我认为这不能解决正确的问题。发问者理解,我们通过将原语与真正的随机源进行比较来测试原语,这就是您正在讨论的内容。这个问题是关于定义什么是真正的随机来源
$ \ endgroup $
–密码学家
2014年4月25日在9:40

$ \ begingroup $
我不同意你的看法。 “真正随机的消息来源”不比“真正酷的一天”多。当我住在热带地区时,我定义的凉爽天气与我在欧洲时的定义完全不同。
$ \ endgroup $
–user2256790
14-4-25在11:18