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

原文链接,介绍随机数对安全的重要性。如发现错误,请留言或者发送邮件到zwzm85@gmail.com。未经授权,请勿转载。

如果你最近关注关于美国国家安全局和英国政府通信总部技术间谍的新闻,你可能听说过有声明称NSA参与了弱化随机数生成器的活动(译者语:如果你没看到过,并不奇怪。因为这篇文章写于2013年9月13日)。那么问题来了...为什么要弄乱随机数的生成呢?

答案很简单:优良的随机数是几乎所有安全的计算机系统的基础。要是没有它们,从二战的密码(比如Lorenz)到浏览器进行安全网络访问的SSL都会陷入困境。

为了理解背后的原因,和糟糕的随机数导致的危险,需要了解一些随机数自身的知识(比如“那么什么是好的随机数呢?”)和安全系统如何使用它们。

黑客新闻网站被入侵

我用广受欢迎的编程和技术网站黑客新闻被入侵作为随机数如何出错的例子。

image

四年前,我在网站上提到它的随机数生成器很容易被用来攻击网站。不久以后,另一个完全独立的网站投稿人在获取网站所有者的许可下真正执行了攻击

这里是其工作原理。当你登陆一个网站,你会被分配一个代表该会话(你登陆的那段时间)的唯一ID。那个唯一ID必须唯一且不能被其他人猜测出来。如果其他人能猜出来,那他就可以冒充你。

在黑客新闻的例子中,唯一ID是一串随机字符类似lBGn0tWMcx7380gZyrUO9B。每个用户都有一个不同的字符串,并且字符串应该非常非常难以猜出或者计算出。

伪随机数

在内部,那些ID使用伪随机数生成器生成。那是一个可以被反复调用以生成表面上随机的数字的数学函数。我之所以说表面上,是因为正如伟大的数学家约翰.冯.诺伊曼所说:“任何想要用算数方法产生随机数字的人都应该是罪恶的”。计算机科学家高德纳曾说过一个故事:他自己发明了一个伪随机数生成器,结果被其糟糕的结果震撼住了。

尽管伪随机数生成器可以生成表面上的随机数序列,但是它们有缺陷。

冯.诺伊曼

冯.诺伊曼使用过的一个简单伪随机数生成器被称为平方取中法,工作原理如下。开始你有一个数字(被称为种子),然后计算它的平方。你取中间的四个数作为你的随机数,然后再计算它的平方来获取下一个随机数等等。

比如,你选择4181作为种子,那么将会生成如下的序列4807,1072,1491,2230,9279....:

随机数 它的平方 中间数字
4181 17480761 4807
4807 23107249 1072
1072 1149184 1491
1491 2223081 2230
2230 4972900 9729
9729 94653441 6534
等等

这个伪随机数早已被更好的替代,比如梅森旋转法其输出更加难以预测。平方取中法很容易预测:下一个生成的数字完全取决于上一个生成的数字。梅森旋转法就难预测的多,因为它用内部状态来生成随机数(译者语:外部不可见)。

在密码学中有密码学安全伪随机数生成器,它们被设计成不管你请求生成多少次随机数都不可预测(梅森旋转不是密码学安全的,因为当有足够多的随机数可以观察的时候,它是可预测的)。

对于安全系统来说,随机数生成器不可预测性至关重要。

从种子开始

所有的伪随机数生成器都需要从某个地方开始,它们需要被种下种子,这就是黑客新闻失败的地方。随机数生成器使用黑客新闻网站上次启动时间的毫秒格式作为种子。通过某些仔细的工作,攻击者可以让黑客新闻宕机从而可以预测一分钟长度的重启时间窗口。通过这个时间窗口,攻击者能够预测分配给登录用户的唯一ID,进而可以冒充他们(类似的随机数问题让有些人群可以在在线扑克中作弊)。

黑客新闻被入侵的所有细节都在这里。攻击成功是因为:一旦黑客新闻宕机,攻击者等待它重启然后记录下当前时间。有趣的是,黑客新闻服务器愿意提供这些信息。那么攻击者就有了60秒的可能种子(60000种子,因为种子是毫秒,译者语:60秒等于60000毫秒,也就是60000个种子)。

所以,攻击者登录网站查看自己的唯一ID。它是由黑客新闻服务器生成的随机数。攻击者然后对这60000个种子逐一执行黑客新闻使用的随机数生成算法,直到他发现和自己唯一ID相匹配的ID。那就会告诉他哪个是被使用的种子,他可以通过和黑客新闻一样的随机数序列持续生成后续的唯一ID。从那以后他就可以预测出分配给登录用户的唯一ID,进而可以假冒他们。

黑客新闻的代码改为使用Linux的/dev/urandom源来生成随机数,这意味着现在使用一个优秀的随机数生成器来生成唯一ID,不会再有原来的弱种子。

所以,伪随机数生成会在两方面失败:种子可能是糟糕的,或者算法本身可以被预测。

无处不在的随机数

黑客新闻的例子并不涉及到密码学,但是随机数对密码技术至关重要。比如,任何HTTPS会话都会以如下方式开始:

  1. 浏览器发送信息给服务器,告知其想要使用的SSL版本和其他信息。
  2. 服务器回复类似的SSL版本信息和SSL证书(译者语:关于证书的更多知识请看这里)。
  3. 浏览器校验证书是否合法。如果合法,它会生成一个随机的'pre-master密钥',其会被用来保证连接的安全。

后续的交换信息都依赖于随机选取的pre-master密钥。为了保证连接的安全性,它不能被预测。

以下是计算机如何使用WPA2协议与接入点建立安全的无线连接的过程的一部分:

  1. 接入点生成一个随机nonce,然后把它发送给计算机。
  2. 计算机生成一个随机nonce,然后发送给接入点。

接入点和计算机从此以后会持续使用这些随机nonce来保证连接的安全。

同样,随机数会出现在以下场景:当用户登录网站(和其他系统),使用SSH创建安全连接,进行Skype(译者语:微软开发的一款通信软件)视频聊天,发送加密邮件还有很多。

image

唯一完全安全的密码系统--一次性密码本的致命缺点就是密码本必须完全随机地生成。使用的随机数有任何可被预测性或非均匀性都会导致一次性密码本会被破解(一次性密码本的另一个问题是复用:它们必须只被使用一次)。

CloudFlare的随机数源

在CloudFlare,我们需要大量随机数来加密:我们需要它们来建立安全的SSL连接、Railgun(译者语:CloudFlare的一个动态内容缓存服务)、生成密钥对、和身份验证系统。它们也是我们向客户推出的向前安全性的重要组成部分。

我们目前基本上通过OpenSSL的随机数生成系统或者Linux内核获取随机数。两者都会从不同源向随机数生成器种入种子,使它们尽可能不能被预测。这些源包括网络数据或者磁盘的寻道时间。但是我们认为我们可以通过增加一些真正随机的数据来优化它们。结果就是提升我们客户的安全性。

image

我们已经启动一个项目,通过提供不是来源于数学计算的真正随机数源来进一步优化我们的随机数。可以借助类似放射性衰变流体运动大气噪声,和其他混乱来实现。

当新系统在线运行了,我们会发布它的详细信息。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容