关于/dev/urandom 的流言终结
副标题[/!--empirenews.page--]
有很多关于
事实:
事实:它们两者本质上用的是同一种 CSPRNG (一种密码学伪随机数生成器)。它们之间细微的差别和“真”“不真”随机完全无关。(参见:“Linux 随机数生成器的构架”一节)
事实: 但阻塞不是好事吗! 事实:这是误解。就算我们不去考虑应用层面后续对随机种子的用法,“用完信息熵池”这个概念本身就不存在。仅仅 256 位的熵就足以生成计算上安全的随机数很长、很长的一段时间了。(参见:“那熵池快空了的情况呢?”一节) 问题的关键还在后头: 但密码学家老是讨论重新选种子(re-seeding)。这难道不和上一条冲突吗? 事实:你说的也没错!某种程度上吧。确实,随机数生成器一直在使用系统信息熵的状态重新选种。但这么做(一部分)是因为别的原因。(参见:“重新选种”一节) 这样说吧,我没有说引入新的信息熵是坏的。更多的熵肯定更好。我只是说在熵池低的时候阻塞是没必要的。 好,就算你说的都对,但是 事实:其实 man 页面和我说的不冲突。它看似好像在说 man 页面确实说在一些情况下推荐使用 虽然诉诸权威一般来说不是好事,但在密码学这么严肃的事情上,和专家统一意见是很有必要的。 所以说呢,还确实有一些专家和我的一件事一致的: 难以相信吗?觉得我肯定错了?读下去看我能不能说服你。 我尝试不讲太高深的东西,但是有两点内容必须先提一下才能让我们接着论证观点。 首当其冲的,什么是随机性,或者更准确地:我们在探讨什么样的随机性?(参见:“真随机”一节) 另外一点很重要的是,我没有尝试以说教的态度对你们写这段话。我写这篇文章是为了日后可以在讨论起的时候指给别人看。比 140 字长(LCTT 译注:推特长度)。这样我就不用一遍遍重复我的观点了。能把论点磨炼成一篇文章本身就很有助于将来的讨论。(参见:“你是在说我笨?!”一节) 并且我非常乐意听到不一样的观点。但我只是认为单单地说 你是在说我笨?!绝对没有! 事实上我自己也相信了 “ 整个流言之所以如此广为流传不是因为人们太蠢,而是因为但凡有点关于信息熵和密码学概念的人都会觉得这个说法很有道理。直觉似乎都在告诉我们这流言讲的很有道理。很不幸直觉在密码学里通常不管用,这次也一样。 真随机随机数是“真正随机”是什么意思? 我不想搞的太复杂以至于变成哲学范畴的东西。这种讨论很容易走偏因为对于随机模型大家见仁见智,讨论很快变得毫无意义。 在我看来“真随机”的“试金石”是量子效应。一个光子穿过或不穿过一个半透镜。或者观察一个放射性粒子衰变。这类东西是现实世界最接近真随机的东西。当然,有些人也不相信这类过程是真随机的,或者这个世界根本不存在任何随机性。这个就百家争鸣了,我也不好多说什么了。 密码学家一般都会通过不去讨论什么是“真随机”来避免这种哲学辩论。他们更关心的是不可预测性。只要没有任何方法能猜出下一个随机数就可以了。所以当你以密码学应用为前提讨论一个随机数好不好的时候,在我看来这才是最重要的。 无论如何,我不怎么关心“哲学上安全”的随机数,这也包括别人嘴里的“真”随机数。 两种安全,一种有用但就让我们退一步说,你有了一个“真”随机变量。你下一步做什么呢? 你把它们打印出来然后挂在墙上来展示量子宇宙的美与和谐?牛逼!我支持你。 但是等等,你说你要用它们?做密码学用途?额,那这就废了,因为这事情就有点复杂了。 事情是这样的,你的真随机、量子力学加护的随机数即将被用进不理想的现实世界算法里去。 (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |