<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.cas.mcmaster.ca/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.cas.mcmaster.ca/index.php?action=history&amp;feed=atom&amp;title=Random_Number_Generators_and_Information_Security</id>
		<title>Random Number Generators and Information Security - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.cas.mcmaster.ca/index.php?action=history&amp;feed=atom&amp;title=Random_Number_Generators_and_Information_Security"/>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php?title=Random_Number_Generators_and_Information_Security&amp;action=history"/>
		<updated>2026-04-05T21:45:32Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.15.1</generator>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php?title=Random_Number_Generators_and_Information_Security&amp;diff=568&amp;oldid=prev</id>
		<title>Caoff at 05:03, 10 December 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php?title=Random_Number_Generators_and_Information_Security&amp;diff=568&amp;oldid=prev"/>
				<updated>2007-12-10T05:03:07Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:03, 10 December 2007&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 49:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 49:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Electronic Voting Systems]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Electronic Voting Systems]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Biometrics in Information Security]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Biometrics in Information Security]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Biometric Systems and Security Design &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Principle&lt;/del&gt;]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Biometric Systems and Security Design &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Principles&lt;/ins&gt;]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Honeypot]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Honeypot]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Piggybacking]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Piggybacking]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Security and Storage Mediums]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Security and Storage Mediums]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Email Security]] &amp;lt;BR&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Smart Card Technology to Prevent Fraud]] &amp;lt;BR&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Operating Systems Security]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Operating Systems Security]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Autocomplete]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Autocomplete]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Internet Cookies and Confidentiality]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Internet Cookies and Confidentiality]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Social Engineering]] &amp;lt;BR&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Identity Theft]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Identity Theft]] &amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Information Security Awareness]] &amp;lt;BR&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== External Links ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== External Links ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-05 21:45:32 --&gt;
&lt;/table&gt;</summary>
		<author><name>Caoff</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php?title=Random_Number_Generators_and_Information_Security&amp;diff=567&amp;oldid=prev</id>
		<title>Caoff at 05:00, 10 December 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php?title=Random_Number_Generators_and_Information_Security&amp;diff=567&amp;oldid=prev"/>
				<updated>2007-12-10T05:00:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:00, 10 December 2007&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 82:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 82:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--[[User:Caoff|Caoff]] &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;00&lt;/del&gt;:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;00&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;10 &lt;/del&gt;December 2007 (EST)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--[[User:Caoff|Caoff]] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;11&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;58&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;09 &lt;/ins&gt;December 2007 (EST)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-05 21:45:32 --&gt;
&lt;/table&gt;</summary>
		<author><name>Caoff</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php?title=Random_Number_Generators_and_Information_Security&amp;diff=566&amp;oldid=prev</id>
		<title>Caoff at 05:00, 10 December 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php?title=Random_Number_Generators_and_Information_Security&amp;diff=566&amp;oldid=prev"/>
				<updated>2007-12-10T05:00:02Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:00, 10 December 2007&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The RNG process is usually a single isolated component easy to locate, making it an attractive target for attackers. If an attacker can predict the sequence of supposedly random numbers, data integrity and confidentiality are compromised. An attack on RNG is difficult to detect by any upstream test of the numbers.&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; Furthermore, such attacks require only a single access to the system. No data need be sent back in contrast to, for example, a computer virus that steals keys and then e-mails them to some drop point.&amp;lt;sup&amp;gt;[[Phishing]]&amp;lt;/sup&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The RNG process is usually a single isolated component easy to locate, making it an attractive target for attackers. If an attacker can predict the sequence of supposedly random numbers, data integrity and confidentiality are compromised. An attack on RNG is difficult to detect by any upstream test of the numbers.&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt; Furthermore, such attacks require only a single access to the system. No data need be sent back in contrast to, for example, a computer virus that steals keys and then e-mails them to some drop point.&amp;lt;sup&amp;gt;[[Phishing]]&amp;lt;/sup&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The &lt;/del&gt;RANDU random number algorithm used for decades on mainframe computers was seriously flawed, and as a result a lot of research work of that period is less reliable than it might have been.&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;For example, the &lt;/ins&gt;RANDU random number algorithm used for decades on mainframe computers was seriously flawed, and as a result a lot of research work of that period is less reliable than it might have been.&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Microsoft uses the CryptGenRandom function to generate random values for its Windows operating system. This function is included in Microsoft's Cryptographic Application Programming Interface, and is used whenever random numbers are needed. It is said to be crytographically secure, but the specifics of the algorithm have not been officially published and verified. Researchers have used reverse engineering to test it and have discovered security concerns. An attacker needs only to steal the state bits once, and then they can persistently violate the security of a CryptGenRandom instance and even determine past random numbers generated. This is a serious problem, since the process can be run backwards once the state bits are known, and information already sent are compromised. For example, if the user has made online purchases from websites such as eBay, the random key used to encrypt credit card information can be recovered by an attacker. Moreoever, the CryptGenRandom function runs in user mode, so anyone with access to a regular user account on a system can easily obtain access to important information such as the state bits.&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Microsoft uses the CryptGenRandom function to generate random values for its Windows operating system. This function is included in Microsoft's Cryptographic Application Programming Interface, and is used whenever random numbers are needed. It is said to be crytographically secure, but the specifics of the algorithm have not been officially published and verified. Researchers have used reverse engineering to test it and have discovered security concerns. An attacker needs only to steal the state bits once, and then they can persistently violate the security of a CryptGenRandom instance and even determine past random numbers generated. This is a serious problem, since the process can be run backwards once the state bits are known, and information already sent are compromised. For example, if the user has made online purchases from websites such as eBay, the random key used to encrypt credit card information can be recovered by an attacker. Moreoever, the CryptGenRandom function runs in user mode, so anyone with access to a regular user account on a system can easily obtain access to important information such as the state bits.&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Pseudorandomness - Computational methods ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Pseudorandomness - Computational methods ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Computational methods use mathematical formulae or simply precalculated tables to produce sequences of numbers that appear random. Since the computer follows a deterministic algorithm to generate these numbers, they are inherently predictable.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Computational methods use mathematical formulae or simply precalculated tables to produce sequences of numbers that appear random. Since the computer follows a deterministic algorithm to generate these numbers, they are inherently predictable.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;For example, Blum Blum Shub (BBS) is a pseudorandom number generator proposed in 1986 by Lenore Blum, Manuel Blum and Michael Shub. It generates sequences of random numbers with the following formula: x&amp;lt;sub&amp;gt;n+1&amp;lt;/sub&amp;gt; = (x&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; mod M, where M = pq, p and q are both prime numbers. The developers of this method have proved that it is extremely secure. To crack this algorithm would essentially require factorization of large primes, which is assumed to be mathematically infeasible. With a large M, the output of BBS displays no nonrandom patterns that can be discovered with a reasonable amount of calculation.&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;For example, Blum Blum Shub (BBS) is a pseudorandom number generator proposed in 1986 by Lenore Blum, Manuel Blum and Michael Shub. It generates sequences of random numbers with the following formula: x&amp;lt;sub&amp;gt;n+1&amp;lt;/sub&amp;gt; = (x&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; mod M, where M = pq, p and q are both prime numbers. The developers of this method have proved that it is extremely secure. To crack this algorithm would essentially require factorization of large primes, which is assumed to be mathematically infeasible. With a large M, the output of BBS displays no nonrandom patterns that can be discovered with a reasonable amount of calculation.&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;LI&amp;gt;Truly unpredictable; this characteristic &amp;quot;can be traced to the laws of quantum mechanics&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&amp;quot;, which are unpredictable as we know them.&amp;lt;/ul&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;LI&amp;gt;Truly unpredictable; this characteristic &amp;quot;can be traced to the laws of quantum mechanics&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&amp;quot;, which are unpredictable as we know them.&amp;lt;/ul&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Computational Methods:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;BR&amp;gt;&lt;/ins&gt;Computational Methods:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;Efficient: long sequences of numbers can be produced very quickly.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;Efficient: long sequences of numbers can be produced very quickly.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;LI&amp;gt;Deterministic: given the seed state, any sequence of numbers can be reproduced anytime. This can be an advantage if past sequences are needed at a later date for validation or analysis purposes. However, it may make the system vulnerable to replay attacks (see Vulnerability to Attacks sectiona bove).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;LI&amp;gt;Deterministic: given the seed state, any sequence of numbers can be reproduced anytime. This can be an advantage if past sequences are needed at a later date for validation or analysis purposes. However, it may make the system vulnerable to replay attacks (see Vulnerability to Attacks sectiona bove).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;LI&amp;gt;Periodicity: all sequences eventually repeat themselves. Despite sounding dubious, this characteristic does not present a practical problem, as the periods of most PRNG's used today are very large and thus sequences do not actually repeat in realistic situations.&amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt;&amp;lt;/UL&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;LI&amp;gt;Periodicity: all sequences eventually repeat themselves. Despite sounding dubious, this characteristic does not present a practical problem, as the periods of most PRNG's used today are very large and thus sequences do not actually repeat in realistic situations.&amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt;&amp;lt;/UL&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The basic difference between PRNGs and TRNGs can be explained with the analogy of rolling a die. PRNGs produce sequences of numbers using mathematical formulae or precalculated lists (ie. someone performed many trials and recorded the results), and output numbers from the sequences (ie. the next number on the pre-recorded list). The numbers appear random, but they are really predetermined.&amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt; If an attacker obtains the algorithm (the list of numbers) and the seed state (the starting number), he or she can predict every &amp;quot;random&amp;quot; number in the sequence.&amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;BR&amp;gt;&lt;/ins&gt;The basic difference between PRNGs and TRNGs can be explained with the analogy of rolling a die. PRNGs produce sequences of numbers using mathematical formulae or precalculated lists (ie. someone performed many trials and recorded the results), and output numbers from the sequences (ie. the next number on the pre-recorded list). The numbers appear random, but they are really predetermined.&amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt; If an attacker obtains the algorithm (the list of numbers) and the seed state (the starting number), he or she can predict every &amp;quot;random&amp;quot; number in the sequence.&amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;TRNGs measure physical phenomena (ie. actually rolling the die and reading out the number).&amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt; They are as unpredictable as the physical phenomenon used. Even if the attacker knows how the numbers are generated and obtains a record of past numbers, he or she cannot predict the next number with any certainty.&amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;TRNGs measure physical phenomena (ie. actually rolling the die and reading out the number).&amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt; They are as unpredictable as the physical phenomenon used. Even if the attacker knows how the numbers are generated and obtains a record of past numbers, he or she cannot predict the next number with any certainty.&amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Both methods have their advantages and disadvantages. When efficiency is a priority, such as in simulation and modeling applications, computational methods are more appropriate. When unpredictability is crucial, such as in the case of data encryption, physical generators are generally preferred.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Both methods have their advantages and disadvantages. When efficiency is a priority, such as in simulation and modeling applications, computational methods are more appropriate. When unpredictability is crucial, such as in the case of data encryption, physical generators are generally preferred.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 84:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 82:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--[[User:Caoff|Caoff]] &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;23&lt;/del&gt;:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;55&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;9 &lt;/del&gt;December 2007 (EST)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;--[[User:Caoff|Caoff]] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;00&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;00&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;10 &lt;/ins&gt;December 2007 (EST)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-05 21:45:32 --&gt;
&lt;/table&gt;</summary>
		<author><name>Caoff</name></author>	</entry>

<tr><td colspan="2" class="diff-lineno"><!--LINE 5--></td>
<td colspan="2" class="diff-lineno"><!--LINE 5--></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'><div>Random numbers are used in many aspects of computer science. This wiki page discusses the particular relevance of random numbers with information security -- its applications in cryptography.&lt;BR&gt;</div></td><td class='diff-marker'> </td><td class='diff-context'><div>Random numbers are used in many aspects of computer science. This wiki page discusses the particular relevance of random numbers with information security -- its applications in cryptography.&lt;BR&gt;</div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'><div>For example, the Needham-Schroeder Protocol includes random numbers in the message to protect data integrity. A RNG that gives predictable output would make the system vulnerable to replay attacks. Since a system is only as secure as its weakest component, random number generators are a crucial part of information security.&lt;BR&gt;</div></td><td class='diff-marker'> </td><td class='diff-context'><div>For example, the Needham-Schroeder Protocol includes random numbers in the message to protect data integrity. A RNG that gives predictable output would make the system vulnerable to replay attacks. Since a system is only as secure as its weakest component, random number generators are a crucial part of information security.&lt;BR&gt;</div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">[[Image:crypt.JPG]] </del>[[Image:NSprotocol.JPG]]&lt;sup&gt;[1]&lt;/sup&gt;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div>[[Image:NSprotocol.JPG]]&lt;sup&gt;[1]&lt;/sup&gt;</div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'></td><td class='diff-marker'> </td><td class='diff-context'></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'><div>== Vulnerability to attack ==</div></td><td class='diff-marker'> </td><td class='diff-context'><div>== Vulnerability to attack ==</div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div>The RNG process is usually a single isolated component easy to locate, making it an attractive target for attackers. <del class="diffchange diffchange-inline">Once </del>the <del class="diffchange diffchange-inline">RNG process is cracked</del>, data integrity and confidentiality are compromised. An attack on RNG is difficult to detect by any upstream test of the numbers.&lt;sup&gt;[3]&lt;/sup&gt; Furthermore, such attacks require only a single access to the system. No data need be sent back in contrast to, for example, a computer virus that steals keys and then e-mails them to some drop point.&lt;sup&gt;[[Phishing]]&lt;/sup&gt;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div>The RNG process is usually a single isolated component easy to locate, making it an attractive target for attackers. <ins class="diffchange diffchange-inline">If an attacker can predict </ins>the <ins class="diffchange diffchange-inline">sequence of supposedly random numbers</ins>, data integrity and confidentiality are compromised. An attack on RNG is difficult to detect by any upstream test of the numbers.&lt;sup&gt;[3]&lt;/sup&gt; Furthermore, such attacks require only a single access to the system. No data need be sent back in contrast to, for example, a computer virus that steals keys and then e-mails them to some drop point.&lt;sup&gt;[[Phishing]]&lt;/sup&gt;</div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'></td><td class='diff-marker'> </td><td class='diff-context'></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">=== Examples of inadequate </del>random number <del class="diffchange diffchange-inline">generators ===</del></div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class="diffchange diffchange-inline">The RANDU </ins>random number <ins class="diffchange diffchange-inline">algorithm used </ins>for <ins class="diffchange diffchange-inline">decades on mainframe computers was seriously flawed</ins>, and <ins class="diffchange diffchange-inline">as a result a lot of research work of that period </ins>is <ins class="diffchange diffchange-inline">less reliable than it might </ins>have been.&lt;sup&gt;[3]&lt;/sup<ins class="diffchange diffchange-inline">&gt;&lt;BR&gt;&lt;BR</ins>&gt;</div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">Microsoft uses the CryptGenRandom function to generate random values </del>for <del class="diffchange diffchange-inline">its Windows operating system. This function is included in Microsoft's Cryptographic Application Programming Interface</del>, and is <del class="diffchange diffchange-inline">used whenever random numbers are needed. It is said to be crytographically secure, but the specifics of the algorithm </del>have <del class="diffchange diffchange-inline">not </del>been <del class="diffchange diffchange-inline">officially published and verified. Researchers have used reverse engineering to test it and have discovered security concerns. An attacker needs only to steal the state bits once, and then they can persistently violate the security of a CryptGenRandom instance and even determine past random numbers generated. This is a serious problem. For example, if the user has made online purchases from websites such as eBay, the random key used to encrypt credit card information can be recovered by an attacker</del>.&lt;sup&gt;[3]&lt;/sup&gt;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'></td><td class='diff-marker'> </td><td class='diff-context'></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">=== Attacks on software </del>random <del class="diffchange diffchange-inline">number generators ===</del></div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class="diffchange diffchange-inline">Microsoft uses the CryptGenRandom function to generate </ins>random <ins class="diffchange diffchange-inline">values for its Windows operating system. This function is included in Microsoft's Cryptographic Application Programming Interface</ins>, <ins class="diffchange diffchange-inline">and is used whenever </ins>random <ins class="diffchange diffchange-inline">numbers are needed. It is said </ins>to be <ins class="diffchange diffchange-inline">crytographically secure</ins>, but the <ins class="diffchange diffchange-inline">specifics </ins>of the <ins class="diffchange diffchange-inline">algorithm have not been officially published and verified</ins>. <ins class="diffchange diffchange-inline">Researchers have used reverse engineering </ins>to <ins class="diffchange diffchange-inline">test it </ins>and <ins class="diffchange diffchange-inline">have discovered security concerns</ins>. <ins class="diffchange diffchange-inline">An </ins>attacker <ins class="diffchange diffchange-inline">needs only to steal </ins>the state <ins class="diffchange diffchange-inline">bits once</ins>, <ins class="diffchange diffchange-inline">and then </ins>they <ins class="diffchange diffchange-inline">can persistently violate </ins>the <ins class="diffchange diffchange-inline">security of a CryptGenRandom instance and even determine past random numbers generated</ins>. <ins class="diffchange diffchange-inline">This </ins>is <ins class="diffchange diffchange-inline">a serious problem</ins>, <ins class="diffchange diffchange-inline">since </ins>the <ins class="diffchange diffchange-inline">process can </ins>be <ins class="diffchange diffchange-inline">run backwards once </ins>the <ins class="diffchange diffchange-inline">state </ins>bits <ins class="diffchange diffchange-inline">are known, </ins>and <ins class="diffchange diffchange-inline">information already sent are compromised. For example, if </ins>the <ins class="diffchange diffchange-inline">user has made online purchases from websites such as eBay, </ins>the random <ins class="diffchange diffchange-inline">key used to encrypt credit card information can be recovered by </ins>an attacker. <ins class="diffchange diffchange-inline">Moreoever</ins>, the <ins class="diffchange diffchange-inline">CryptGenRandom function runs in user mode</ins>, so <ins class="diffchange diffchange-inline">anyone with access </ins>to <ins class="diffchange diffchange-inline">a regular user account on a system can easily </ins>obtain <ins class="diffchange diffchange-inline">access to important information such as </ins>the state <ins class="diffchange diffchange-inline">bits</ins>.&lt;sup&gt;[3]&lt;/sup&gt;&lt;<ins class="diffchange diffchange-inline">BR</ins>&gt;&lt;<ins class="diffchange diffchange-inline">BR</ins>&gt;</div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">Just as with other components of a cryptosystem</del>, <del class="diffchange diffchange-inline">a software </del>random <del class="diffchange diffchange-inline">number generator should be designed </del>to <del class="diffchange diffchange-inline">resist certain attacks. Exactly which attacks must </del>be <del class="diffchange diffchange-inline">defended against depends on the system</del>, but <del class="diffchange diffchange-inline">here are a few:&lt;BR&gt;</del></div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">&lt;ul&gt;</del></div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">&lt;li&gt;If an attacker obtains most of </del>the <del class="diffchange diffchange-inline">stream of random bits, it should be infeasible for them to compute any additional parts </del>of the <del class="diffchange diffchange-inline">stream</del>. &nbsp;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">&lt;li&gt;If an attacker observes the internal state of the random number generator, they should not be able </del>to <del class="diffchange diffchange-inline">work backwards </del>and <del class="diffchange diffchange-inline">deduce previous random values</del>. &nbsp;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">&lt;li&gt;If an </del>attacker <del class="diffchange diffchange-inline">observes </del>the <del class="diffchange diffchange-inline">internal </del>state <del class="diffchange diffchange-inline">of the random number generator</del>, they <del class="diffchange diffchange-inline">will necessarily be able to predict </del>the <del class="diffchange diffchange-inline">output until enough additional entropy is obtained</del>. <del class="diffchange diffchange-inline">However, if entropy </del>is <del class="diffchange diffchange-inline">added incrementally</del>, the <del class="diffchange diffchange-inline">attacker may </del>be <del class="diffchange diffchange-inline">able to deduce </del>the <del class="diffchange diffchange-inline">values of the random </del>bits <del class="diffchange diffchange-inline">that were added </del>and <del class="diffchange diffchange-inline">obtain </del>the <del class="diffchange diffchange-inline">new internal state of </del>the random <del class="diffchange diffchange-inline">number generator (a state compromise extension attack). </del></div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">&lt;li&gt;If </del>an attacker <del class="diffchange diffchange-inline">can control the supposedly random inputs to the generator, they may be able to &quot;flush&quot; all the existing entropy out of the system and put it into a known state</del>. &nbsp;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">&lt;li&gt;When a generator starts up</del>, <del class="diffchange diffchange-inline">it will often have little or no entropy (especially if </del>the <del class="diffchange diffchange-inline">computer has just been booted and followed a very standard sequence of operations)</del>, so <del class="diffchange diffchange-inline">an attacker may be able </del>to obtain <del class="diffchange diffchange-inline">an initial guess at </del>the state.&lt;sup&gt;[3]&lt;/sup&gt;&lt;<del class="diffchange diffchange-inline">/ul</del>&gt;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div>&#160;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">=== Attacks on hardware random number generators ===</del></div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">A number of attacks on hardware random number generators are possible, including trying to capture radio-frequency emissions from the computer (obtaining hard drive interrupt times from motor noise, for example), or trying to feed controlled signals into a supposedly random source (such as turning off the lights in a lava lamp or feeding a strong, known signal into a sound card).</del>&lt;<del class="diffchange diffchange-inline">sup&gt;[3]&lt;/sup</del>&gt;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'></td><td class='diff-marker'> </td><td class='diff-context'></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'><div>== Two kinds of randomness ==</div></td><td class='diff-marker'> </td><td class='diff-context'><div>== Two kinds of randomness ==</div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'><div>=== True randomness - Physical methods ===</div></td><td class='diff-marker'> </td><td class='diff-context'><div>=== True randomness - Physical methods ===</div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div>The earliest methods for generating random numbers - dice, coin flipping, roulette wheels are still used today, mainly in games and gambling as they tend to be too slow for applications in statistics and cryptography.<del class="diffchange diffchange-inline">&lt;sup&gt;[2]&lt;/sup&gt;&lt;BR&gt;</del></div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div>The earliest methods for generating random numbers - dice, coin flipping, roulette wheels are still used today, mainly in games and gambling as they tend to be too slow for applications in statistics and cryptography. Some physical phenomena, such as thermal noise in zener diodes, appear to be truly random and can be used as the basis for hardware random number generators.&lt;sup&gt;[2]&lt;/sup&gt;&lt;BR&gt;</div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div>&#160;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div>Some physical phenomena, such as thermal noise in zener diodes, appear to be truly random and can be used as the basis for hardware random number generators<del class="diffchange diffchange-inline">. However, many mechanical phenomena feature asymmetries and systematic biases that make their outcomes not truly random. The many successful attempts to exploit such phenomena by gamblers, especially in roulette and blackjack are testimony to these effects</del>.&lt;sup&gt;[2]&lt;/sup<del class="diffchange diffchange-inline">&gt;&lt;BR&gt;</del></div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div>&#160;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">There are several imaginative sources of random numbers online. A common technique is hashing a frame of a video stream from an unpredictable source. Most notable perhaps was Lavarand which used images of a number of lava lamps. Lithium Technologies uses a camera pointed at the sky on a windy and cloudy day. Random.org has a more obvious approach of listening to atmospheric noise. Details about how they turn their input into random numbers can be found on their respective sites.&lt;sup&gt;[2]&lt;/sup&gt;&lt;BR</del>&gt;&lt;BR&gt;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div></div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'></td><td class='diff-marker'> </td><td class='diff-context'></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div><del class="diffchange diffchange-inline">Completely randomized design falls within the category of true random number generation. </del>The generation of true random numbers <del class="diffchange diffchange-inline">outside the computer environment </del>is based on the theory of entropy. <del class="diffchange diffchange-inline">&lt;sup&gt;[2]&lt;/sup&gt; </del>For example, HotBits is an online generator of true random numbers, using timing successive pairs of radioactive decays detected by a Geiger-Müller tube interfaced to a computer. This process is governed by the inherent uncertainty in the quantum mechanical laws of nature.&lt;sup&gt;[6]&lt;/sup&gt;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div>The generation of true random numbers <ins class="diffchange diffchange-inline">through measuring physical phenomena </ins>is based on the theory of entropy. For example, HotBits is an online generator of true random numbers, using timing successive pairs of radioactive decays detected by a Geiger-Müller tube interfaced to a computer. This process is governed by the inherent uncertainty in the quantum mechanical laws of nature.&lt;sup&gt;[6<ins class="diffchange diffchange-inline">]&lt;/sup&gt; RANDOM.ORG, on the other hand, looks at variations in the amplitude of atmospheric noise.&lt;sup&gt;[4]&lt;/sup&gt; Even lava lamps have been used to generate random numbers -- images of the lamps are converted into an unique video stream.&lt;sup&gt;[8</ins>]&lt;/sup&gt;</div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'></td><td class='diff-marker'> </td><td class='diff-context'></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'><div>=== Pseudorandomness - Computational methods ===</div></td><td class='diff-marker'> </td><td class='diff-context'><div>=== Pseudorandomness - Computational methods ===</div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'><div>Computational methods use mathematical formulae or simply precalculated tables to produce sequences of numbers that appear random. Since the computer follows a deterministic algorithm to generate these numbers, they are inherently predictable.&lt;BR&gt;&lt;BR&gt;</div></td><td class='diff-marker'> </td><td class='diff-context'><div>Computational methods use mathematical formulae or simply precalculated tables to produce sequences of numbers that appear random. Since the computer follows a deterministic algorithm to generate these numbers, they are inherently predictable.&lt;BR&gt;&lt;BR&gt;</div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'></td><td class='diff-marker'> </td><td class='diff-context'></td></tr>
<tr><td class='diff-marker'>-</td><td class='diff-deletedline'><div>For example, Blum Blum Shub (BBS) is a pseudorandom number generator proposed in 1986 by Lenore Blum, Manuel Blum and Michael Shub. It generates sequences of random numbers with the following formula: x&lt;sub&gt;n+1&lt;/sub&gt; = (x&lt;sub&gt;n&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt; mod M, where M = pq, p and q are both prime numbers. The developers of this method have proved that it is extremely secure. To crack this algorithm would essentially require factorization of large primes, which is assumed to be mathematically infeasible. With a large M, the output of BBS displays no nonrandom patterns that can be discovered with a reasonable amount of calculation.&lt;sup&gt;[<del class="diffchange diffchange-inline">8</del>]&lt;/sup&gt;</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div>For example, Blum Blum Shub (BBS) is a pseudorandom number generator proposed in 1986 by Lenore Blum, Manuel Blum and Michael Shub. It generates sequences of random numbers with the following formula: x&lt;sub&gt;n+1&lt;/sub&gt; = (x&lt;sub&gt;n&lt;/sub&gt;)&lt;sup&gt;2&lt;/sup&gt; mod M, where M = pq, p and q are both prime numbers. The developers of this method have proved that it is extremely secure. To crack this algorithm would essentially require factorization of large primes, which is assumed to be mathematically infeasible. With a large M, the output of BBS displays no nonrandom patterns that can be discovered with a reasonable amount of calculation.&lt;sup&gt;[<ins class="diffchange diffchange-inline">7</ins>]&lt;/sup&gt;</div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'></td><td class='diff-marker'> </td><td class='diff-context'></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'><div>=== Verdict ===</div></td><td class='diff-marker'> </td><td class='diff-context'><div>=== Verdict ===</div></td></tr>
<tr><td colspan="2" class="diff-lineno"><!--LINE 57--></td>
<td colspan="2" class="diff-lineno"><!--LINE 42--></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'><div>Both methods have their advantages and disadvantages. When efficiency is a priority, such as in simulation and modeling applications, computational methods are more appropriate. When unpredictability is crucial, such as in the case of data encryption, physical generators are generally preferred.</div></td><td class='diff-marker'> </td><td class='diff-context'><div>Both methods have their advantages and disadvantages. When efficiency is a priority, such as in simulation and modeling applications, computational methods are more appropriate. When unpredictability is crucial, such as in the case of data encryption, physical generators are generally preferred.</div></td></tr>
<tr><td class='diff-marker'> </td><td class='diff-context'></td><td class='diff-marker'> </td><td class='diff-context'></td></tr>
