云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

企业网站_云数据华为_哪家好

小七 141 0

为什么安全系统需要随机数

如果你一直在关注美国国家安全局和英国政府通讯总部最近的技术间谍活动新闻,你可能会遇到这样一种说法,即美国国家安全局参与削弱了一个随机数发生器。显而易见的问题是。。。为什么要搞随机数的生成?答案很简单:好的随机数是几乎所有安全计算机系统的基础。如果没有它们,从第二次世界大战密码(如Lorenz)到浏览器用于保护网络流量的SSL,一切都将陷入严重麻烦。为了理解为什么,以及坏随机数所造成的威胁,有必要了解一下随机数本身(例如"什么是好的随机数?")以及它们在安全系统中的应用。黑客新闻黑客作为随机数如何出错的一个例子,我将从一个流行的编程和技术网站Hacker News开始。

Hacker News

四年前我在网站上提到,它的随机数生成器很容易被用来攻击网站。不久之后,另一个网站的贡献者完全独立地在网站所有者的许可下实施了攻击。下面是它的工作原理。当您登录到网站时,通常会为该会话(您登录的时间段)分配一个唯一的ID。这个唯一的ID对你来说必须是唯一的,不能被别人猜到。如果有人能猜到,他们可以冒充你。在黑客新闻的情况下,唯一的ID是一个随机字符串字符,如lBGn0tWMcx7380gZyrUO9B。每个登录用户都有一个不同的琴弦和琴弦应该是非常非常困难的猜猜看。伪随机性ID是使用伪随机数在内部生成的发电机。这是一个可以称为反复得到明显的随机数。我这么说显然是因为,正如伟大的数学家约翰·冯·诺依曼所说:"任何一个考虑用算术方法产生随机数的人,当然都处于罪恶的状态。"计算机科学家唐纳德·克努斯讲述了自己发明一个伪随机数发生器的故事,结果却对它的糟糕程度感到震惊。虽然伪随机数生成器可以生成一系列明显的随机数,但它们有缺点。

三个

von Neumann使用了一个简单的伪随机数生成器中间的正方形如下所示。你从一个数字(称为种子)开始,然后平方。你取中间的四个数字作为你的随机数,平方得到下一个随机数,依此类推。例如,如果你选择4181作为种子序列48071072,1491、2230、9279。。。将生成如下:随机数的平方中间位数4181 17480761 48074807 23107249 10721072 1149184 14911491 2223081 22302230 4972900 97299279 94653441 6534等等这个特殊的伪随机数早已被更好的伪随机数所取代,比如梅森捻线器,它的输出更难预测。中间平方法预测起来很简单:它生成的下一个数字完全取决于它上次生成的数字。另一方面,梅森龙卷风更难预测,因为它有内部状态,用来产生随机数。在密码学的世界里,有加密安全的伪随机数生成器,无论你要求它生成多少个随机数,它们都是不可预测的。(Mersenne Twister在密码学上是不安全的,因为如果观察到足够多的随机数,它是可以预测的。)对于安全系统来说,随机数生成器的不可预测性至关重要。从种子开始所有的伪随机数生成器都需要从某个地方开始;它们需要被播种,这就是黑客新闻失败的地方。随机数生成器是用黑客新闻软件最后一次启动时的毫秒数作为种子的。通过一些仔细的工作,攻击者设法使黑客新闻崩溃,然后可以预测它什么时候在一分钟内重新启动。从中他可以预测用户登录时分配给他们的唯一ID,因此可以模拟他们。(类似的随机数问题使一组人在网上扑克上作弊。)关于黑客新闻黑客如何运作的全部细节在这里。攻击之所以有效,是因为一旦黑客新闻崩溃,攻击者会等待它启动并记录当前时间。有趣的是,黑客新闻服务器愿意提供这些信息。然后攻击者有60秒的可能种子(60000个种子,因为种子是毫秒级的)。因此,攻击者会登录并查看自己的唯一ID。它是由Hacker News软件中的随机数字生成的。然后,他尝试了60000个种子,并运行Hacker News使用的随机数生成算法,直到找到与自己唯一ID匹配的结果。这告诉他使用了哪个种子,这让他通过生成Hacker News使用的随机数序列继续生成更多的唯一ID。从中,他可以预测用户登录时发给他们的唯一ID,然后他可以模仿他们。Hacker新闻代码被改为使用Linux/dev/urandom随机数源,这意味着今天唯一的id是用一个好的随机数生成器生成的,而不是以前使用的弱种子。所以,有两种方法可以产生伪随机数失败:种子可能是坏的,或者算法本身可能是弱的和可预测的。到处都是随机数黑客新闻的例子不是关于加密本身,但是随机数对加密方案至关重要。例如,任何HTTPS会话的启动方式如下:web浏览器向服务器发送有关哪个版本的信息它要使用的SSL和其他信息。web服务器用类似的SSL版本信息进行回复以及它的SSL证书。web浏览器检查证书是否有效。如果是,它会生成一个随机的"pre-main secret",用于保护连接。之后,进一步的交换都是基于随机选择的前主秘密进行的。它需要不可预测的连接才能安全。以下是使用WiFi的计算机如何使用流行的WPA2协议建立到接入点的安全连接的一部分:接入点生成一个随机的nonce并将其发送到计算机。计算机生成一个随机的nonce并将其发送到access点。接入点和计算机继续使用这些随机nonce值来保护连接。类似地,当登录到网站(和其他系统)、使用SSH创建与服务器的安全连接、保持Skype视频聊天、发送加密电子邮件等时,会出现随机数。

苏联一次性垫

而唯一完全安全的密码系统的致命弱点是一次性密码系统本身必须完全随机生成。非均匀性可以导致任何一个不可预测的随机数。(一次性焊盘的另一个问题是重复使用:它们只能使用一次。)CloudFlare的随机数源在CloudFlare,我们需要大量的随机数用于加密目的:我们需要它们来保护SSL连接、Railgun、生成公钥/私钥对以及身份验证系统。它们是我们为所有客户推出的前向保密的重要组成部分。我们目前从OpenSSL的随机数生成系统或Linux内核中获取大部分随机数。这两种方法都是从不同的来源产生随机数,使它们尽可能不可预测。数据源包括网络数据或磁盘的查找时间。但我们认为我们可以通过向系统中添加一些真正随机的数据来改进它们,从而提高客户的安全性。

港口上方的天空是电视的颜色,调到一个死掉的频道

我们已经开始了一个项目来进一步提高我们的随机数,通过提供一个真正的随机数来源,而不是来自数学过程。这可以用放射性衰变、流体运动、大气噪声或其他混沌现象来实现。当新系统上线时,我们会发布它的详细信息。