`
lt200819
  • 浏览: 187488 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于真随机数生成器

 
阅读更多
有关如何产生随机数的理论有许多,如果要详细地讨论,需要厚厚的一本书的篇幅。

有限状态机不能产生真正的随机数的,所以在现在的计算机中并没有一个真正的随机数生成算法,现有的随机数生成算法生产的随机数只不过因为重复的周期比较大,可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,一般称作叫伪随机数发生器。

真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。真随机数生产效率没有伪随机数高,还有就是"信息熵的信息量如果很有限的话,就不是一定是真的随机数了。"

还有人质疑真正的随机数的存在,这是哲学问题,不在此涉及。

查了下现有的真随机数生成器,比如PuTTYgen的随机数是让用户移动鼠标达到一定的长度,之后把鼠标的运动轨迹转化为种子;Intel通过电阻和振荡器来生成热噪声作为信息熵资源;Unix/Linux的dev/random和/dev/urandom采用硬件噪音生成随机数;(待补充)

基于特定Intel芯片组中random number generator(RNG)单元的真随机数生成器.在Intel 815E芯片组的个人电脑上安装Intel Security Driver(ISD)后,可以通过编程读取寄存器获取RNG中的随机数.

有人在BBS上提到:RSA的书上介绍过一种随机数发生器,根据的是劣质内存芯片工作在高温下,其数据是不可预测的,读取这里面的数据,就会得到难以预测的随机数。有采用这种技术制作随机数发生器板卡。

关于Linux系统的真随机数生成器在《Linux内核设计与实现》一书的附录B中有详细介绍
Linux自1.3.30版就在内核提供了真随机数生成器,至少是理论上能产生真随机数,它利用机器的噪音生成随机数,噪音源包括各种硬件运行时速,用户和计算机交互时速。比如击键的间隔时间、鼠标移动速度、特定中断的时间间隔和块IO请求的响应时间等。

此外还有提供真随机数的网站,如:
1。 http://random.irb.hr/ 是一个免费为学术和科研机构提供真随机数字服务的网站。全名是Quantum Random Bit Generator Service (QRBGS),由克罗地亚的计算机科学家开发。其随机性依赖于半导体光子发散量子物理过程中内在的随机性,光子通过光电效应进行检测。这些随机检测到的光子都是相互独立的。
可以通过C/C++库、Web Service、Mathmatic/Matlab插件等多种方式访问。将来会提供基于SSL的安全访问。
它甚至还有个小小的Erlang的客户端访问程序
http://code.google.com/p/qrbgerl/


2. 还有http://random.org/,从1998年开始就在Internet上提供真随机数服务了,它用大气噪音生成真随机数



有人还提到
用Java可以使用java.security.SecureRandom 产生真随机数(待查);
Linux系统有/dev/random,/dev/urandom向用户提供真随机数;
Windows系统有CryptGenRandom 函數生成真随机数(待查)

在《数字追凶 numb3rs》第6季中有一集是通过预测彩票所采用的伪随机数算法进行彩g票f诈w骗的。

2010年,德国研究人员开发出一种产生真随机数的新方法,他们希望能改进互联网安全。
随机数是计算机和互联网安全的重要组成部分,网站和浏览器利用一把会话钥匙加密两者之间发送的数据。伪随机数可以预测和破解,研究人员一直在研究能产生真正的、无法预测的随机数方法。德国的研究团队现在开发出一种真随机数发生器,它使用的计算机内存双态触发器作为随机的一个额外层,触发器可随机的在1或0状态中切换,在切换之前,触发器处于行为无法预测的“亚稳态”。在亚稳态结束时,内存中的内容为完全随机。研究人员对一个触发器单元阵列的实验显示,这种方法产生的随机数比传统方法“随机”约20倍。

经典物理学不存在真正的随机性,而量子世界从本质上讲就是真正随机的,是不可预测的。根据发表在2010年4月最新一期《自然》杂志上的报告,比利时物理学家S. Pironio和同事利用“远距离的幽灵般作用”创造出了真随机数。

他们利用了纠缠粒子的随机性和非局域性属性。研究人员首先在理论上发现,一个“贝尔不等式”的破坏证明新的随机性的产生,它独立于任何实现细节。为了阐释该方法,他们随后进行了一个实验,在该实验中,正如用他们创建的理论工具所证实的那样,产生了42个新的随机位。研究人员称,这项研究可用于设计出真正的无法预测随机数生成器。
http://developers.solidot.org/article.pl?sid=10/02/23/0645203
http://www.sciencedaily.com/releases/2010/02/100222082529.htm?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+sciencedaily+(ScienceDaily:+Latest+Science+News)


2011年,加拿大渥太华的物理学家Ben Sussman利用激光脉冲和钻石创造了真随机数。用真随机数编码的信息将难以被黑客破解。
Sussman的实验室使用持续几万亿分之一秒的激光脉冲照射钻石,激光进入和出来的方向发生了变化。Sussman称改变与量子真空涨落的相互作用有关,量子力学与大多数物理学法则不同,不可能知道真正发生了什么。他认为这可以用于创造真正的随机数。

2012年,史上最快的随机数生成器:从真空中的亚原子噪音获取随机数
量子力学告诉我们亚原子对会持续自发的产生和湮灭,即使是在真空里也一样。通过监听真空内亚原子粒子量子涨落产生的噪音,澳大利亚国立大学的科学家们建造了世界上最快的随机数发生器。研究小组开发了可以通过激光监听真空中随机噪音的工具并以此产生真正的随机数。

随机数生成网页


http://article.yeeyan.org/view/219269/266017

参考:
http://www.cnblogs.com/hehehu/archive/2005/08/23/221125.html
http://bbs.chinaunix.net/viewthread.php?tid=1054170&extra=&page=1
分享到:
评论

相关推荐

    随机数生成器源码

    随机数生成器是计算机科学中的一个重要工具,广泛应用于各种领域,如模拟仿真、加密算法、游戏开发、统计分析等。本资源提供了一个随机数生成器的源码以及打包好的软件,用户可以根据自己的需求生成指定区间内的任意...

    随机数生成器

    随机数生成器是一种在计算机程序中广泛使用的工具,它能够按照特定的算法产生一系列不可预测的数字,这些数字在理论上是等概率分布的。在给定的“随机数生成器”主题中,我们可以深入探讨以下几个关键知识点: 1. *...

    0-100随机数生成器

    而真随机数生成器则依赖于物理现象,如电子噪声,生成的数字是不可预测的。 【压缩包子文件的文件名称"roll-native"】 "roll-native"可能是生成的可执行文件名,暗示了这个随机数生成器可能采用了某种滚动或循环的...

    sp800_90c_second_draft.pdf 随机数生成器标准 NIST

    NIST SP800-90C是美国国家标准与技术研究院(NIST)发布的关于随机数生成器(Random Number Generators, RNGs)的推荐标准草案。这一草案由Elaine Barker和John Kelsey编写,并发布于2016年4月。它是NIST SP 800-90...

    Linux随机数生成器的原理及缺陷.pdf

    Linux随机数生成器的原理及缺陷 Linux随机数生成器是所有类Linux操作系统内核的重要组成部分,它的输入来自于操作系统中随机事件的熵值,输出几乎涵盖系统中的每一个安全协议,例如生成TLS/SSL的密钥、TCP的序列号...

    随机数生成器(hex)

    随机数生成器的核心在于算法,它可以是伪随机数生成器(PRNG)或真随机数生成器(TRNG)。伪随机数生成器基于确定性的数学算法,虽然看似随机,但实际上是可预测的,适合大多数计算任务。而真随机数生成器则利用物理...

    java随机数生成器

    可以生成制定范围内的随机数。有GUI界面

    随机段小数生成器1_区间随机数生成器_

    在IT领域,随机数生成器是一种非常重要的工具,特别是在模拟、加密、统计分析以及游戏开发等众多应用中。"随机段小数生成器1_区间随机数生成器_"的标题和描述暗示了这是一个软件或算法,它允许用户指定一个特定的...

    用C++写的随机数生成器(含源代码)

    在本文中,我们将深入探讨如何使用C++编程语言创建一个随机数生成器。这个生成器允许用户指定随机数的范围和需要生成的个数。在C++中,生成随机数是一项基本任务,常用于各种应用,如模拟、游戏、测试等。 首先,...

    随机数生成器(源码)

    在编程领域,随机数生成器是一种至关重要的工具,特别是在模拟、加密、游戏开发以及各种统计计算中。VB(Visual Basic)作为经典的编程语言,虽然内置了`Rnd`函数用于生成随机数,但在某些情况下,它可能无法满足...

    基于Intel_RNG的真随机数生成器研究

    实验过程中,研究人员对生成的500个随机数进行了NIST FIPS 140-1标准测试,这是一种美国国家标准技术研究所制定的关于随机数生成器安全性的评估标准,以及χ^2拟合优度检验,用以评估数据的独立性和分布均匀性。...

    C 代码 实现具有拆分功能的随机数生成器 (RNG), 允许计算多个独立的流.rar

    在本文中,我们将深入探讨如何使用C语言实现一个具有拆分功能的随机数生成器(RNG)。随机数生成器在各种科学计算、模拟、游戏开发以及加密算法中都有着广泛的应用。一个支持拆分功能的RNG允许我们生成多个独立的...

    随机数生成器(包括数字、字母、特殊符号)

    随机数生成器(包括数字、字母、特殊符号)

    随机数生成器-Python编写

    在编程领域,随机数生成器是一种非常重要的工具,特别是在模拟、加密、游戏开发以及数据分析等多个领域。Python作为一门广泛使用的编程语言,内置了强大的随机数模块`random`,使得开发者可以方便地生成各种类型的...

    Winform-随机数生成器

    在这个"Winform-随机数生成器"项目中,我们关注的核心是利用编程技术来生成各种类型的随机数,包括序列号、纯数字以及字符串。这个工具的灵活性在于用户能够自定义生成纯数字时的位数,以满足不同场景的需求。 首先...

    BAT批处理学习-数值计算-random随机数生成器.zip

    本文将深入探讨“BAT批处理学习-数值计算-random随机数生成器.zip”这个主题,以及如何在批处理脚本中创建随机数生成器。 批处理脚本是基于DOS命令行环境的文本文件,它包含了多个操作系统命令,通过运行这些命令来...

    STM32L4随机数生成器模块(RNG)介绍.pdf

    在介绍STM32L4随机数生成器模块(RNG)之前,我们需要了解随机数生成器的重要性。随机数在计算机科学中广泛应用,从模拟、游戏到加密领域,它们都是不可或缺的。加密系统尤其依赖于高质量的随机数,因为加密算法的...

Global site tag (gtag.js) - Google Analytics