How to Generate Unpredictable Random Numbers--Theory

This article is reproduced from: http://cryolite.iteye.com/blog/199943
There are many theories on how to generate random numbers, and it would take a long book to discuss them in detail. 

The finite state machine cannot generate real random numbers, so there is no real random number generation algorithm in the current computer. The random number generated by the existing random number generation algorithm is only because the repetition period is relatively large, it can be done The repetition rate of the generated numbers is very low, so that it looks like a real random number, which is generally called a pseudo-random number generator. 

True random numbers are generated using physical phenomena: coin toss, dice, spinning wheels, noise using electronic components, nuclear fission, etc. Such random number generators are called physical random number generators, and their disadvantage is that the technical requirements are relatively high. The production efficiency of true random numbers is not as high as that of pseudo-random numbers, and there is "if the amount of information entropy is very limited, it is not necessarily true random numbers." 

Some people question the existence of true random numbers, which is a philosophical issue , not covered here. 

Check the existing true random number generators. For example, the random number of PuTTYgen is to let the user move the mouse to a certain length, and then convert the movement trajectory of the mouse into seeds; Intel generates thermal noise as information entropy through resistors and oscillators Source; Unix/Linux's dev/random and /dev/urandom use hardware noise to generate random numbers; (to be added) 

True random number generator based on the random number generator (RNG) unit in a specific Intel chipset. On the Intel 815E chipset After the Intel Security Driver (ISD) is installed on the personal computer of the computer, the random number in the RNG can be obtained by programming the read register. 

Someone mentioned on the BBS: A random number generator was introduced in the RSA book, according to the inferior quality The memory chip works at high temperature, and its data is unpredictable. Reading the data in it will get unpredictable random numbers. There are random number generator boards using this technique. 

True random number generators for Linux systems are described in detail in Appendix B of the book "Linux Kernel Design and Implementation" 
Linux has provided a true random number generator in the kernel since version 1.3.30, at least in theory, it can generate true random numbers. It uses the noise of the machine to generate random numbers. The noise sources include various hardware running speeds, and the speed of user and computer interaction. . For example, the interval time of keystrokes, the speed of mouse movement, the time interval of specific interrupts, and the response time of block IO requests. 

There are also websites that provide true random numbers, such as: 
1. http://random.irb.hr/ is a website that provides true random number services for free to academic and research institutions. The full name is Quantum Random Bit Generator Service (QRBGS), developed by computer scientists in Croatia. Its randomness relies on the inherent randomness in the quantum physics process of semiconductor photon divergence, which is detected by the photoelectric effect. These randomly detected photons are all independent of each other. 
It can be accessed through C/C++ libraries, Web Services, Mathmatic/Matlab plug-ins, etc. SSL-based secure access will be provided in the future. 
It even has a small Erlang client access program 
http://code.google.com/p/qrbgerl/ 


2. There is also http://random.org/, available on the Internet since 1998 Real random number service, it uses atmospheric noise to generate real random numbers 



Some people also mentioned that 
Java can use java.security.SecureRandom to generate real random numbers (to be checked); 
Linux systems have /dev/random, /dev/urandom to users Provides true random numbers; 
Windows systems have the CryptGenRandom function to generate true random numbers (to be checked). 

In the sixth season of "Numb3rs", there is an episode in which the pseudo-random number algorithm used in the prediction lottery is used for lottery fraud. of. 

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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325533209&siteId=291194637