<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kryptoblog &#187; prng</title>
	<atom:link href="http://www.strombergson.com/kryptoblog/tag/prng/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.strombergson.com/kryptoblog</link>
	<description>Kryptografi och IT-säkerhet på svenska</description>
	<lastBuildDate>Thu, 20 Jan 2011 21:25:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Ny TCP-sekvensgenerator för uIP</title>
		<link>http://www.strombergson.com/kryptoblog/2010/07/17/ny-tcp-sekvensgenerator-for-uip/</link>
		<comments>http://www.strombergson.com/kryptoblog/2010/07/17/ny-tcp-sekvensgenerator-for-uip/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 14:35:36 +0000</pubDate>
		<dc:creator>Joachim Strömbergson</dc:creator>
				<category><![CDATA[Forskning]]></category>
		<category><![CDATA[Inbyggda system]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Verktyg]]></category>
		<category><![CDATA[prng]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[uIP]]></category>

		<guid isPermaLink="false">http://www.strombergson.com/kryptoblog/?p=1339</guid>
		<description><![CDATA[<p>Tillsammans med <a href="http://www.sics.se/~adam/">Adam Dunkels</a> har jag b&#246;rjat titta lite f&#246;rsiktigt p&#229; att hitta en b&#228;ttre generator f&#246;r <span class="caps">TCP</span>-sekvensnummer till den miniskula <a href="http://www.sics.se/~adam/uip/index.php/Main_Page"><span class="caps">TCP</span>/IP-stacken uIP</a>.</p>

	<p><img src="http://www.sics.se/~adam/img/adam13.jpg" alt="Adam Dunkels" /><br />
<em>Adam Dunkels &#8211; pappa till uIP, bland annat.</em></p>

	<p>Den nuvarande generatorn ger&#8230;</p>


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[	<p>Tillsammans med <a href="http://www.sics.se/~adam/">Adam Dunkels</a> har jag b&#246;rjat titta lite f&#246;rsiktigt p&#229; att hitta en b&#228;ttre generator f&#246;r <span class="caps">TCP</span>-sekvensnummer till den miniskula <a href="http://www.sics.se/~adam/uip/index.php/Main_Page"><span class="caps">TCP</span>/IP-stacken uIP</a>.</p>

	<p><img src="http://www.sics.se/~adam/img/adam13.jpg" alt="Adam Dunkels" /><br />
<em>Adam Dunkels &#8211; pappa till uIP, bland annat.</em></p>

	<p>Den nuvarande generatorn ger en monotont &#246;kande sekvens som &#228;r l&#228;tt att prediktera. En ny generator skall ge en bra slumpm&#228;ssig som inte &#228;r l&#228;tt (inte g&#229;r) att prediktera. MEn samtidigt f&#229;r storleken p&#229; stacken inte v&#228;xa speciellt mycket och skall g&#229; att implementera p&#229; en 8-bitars processor. Vidare f&#229;r vi inte inf&#246;r en massa nya krav p&#229; m&#229;lsystemet, exempelvis tillg&#229;ng till bra fysisk entropi. En icke-trivial kombination av krav.</p>

	<p>Jag har t&#228;nkt, kladdat och sedan postat p&#229; Cryptography-listan och f&#229;tt en del tips. Men jag (vi) tar med stor gl&#228;dje emot mer klokskap. H&#228;r kommer d&#228;rf&#246;r min postning till listan. L&#228;s, kommentera. <strong>Tack!</strong> <blockquote><br />
uIP [1] is a very compact <span class="caps">TCP</span>/IP stack for small, networked connected, embedded devices. (The code size for uIP including <span class="caps">TCP</span> and <span class="caps">ICMP</span> on the <span class="caps">AVR</span> processor is about 5 kBytes.)<br />
<br />
</p>

	<p>Unfortunately, the <span class="caps">TCP</span> sequence number generator in uIP is a bit simplistic &#8211; basically a monotonically increasing number. In order to reduce the opportunities for <span class="caps">TCP </span>Spoofing (like this nice one [2]) we are trying to implement a new <span class="caps">TCP</span> sequence number generator.<br />
<br />
</p>

	<p>What we want to find is an algorithm that generates a good (secure) <span class="caps">TCP</span> seq numbers, but use very little resources (on 8-bit computing devices).<br />
<br />
</p>

	<p>We have done some preliminary investigations, have some rough ideas and would really appreciate comments and suggestions from the enlightened minds on this list.<br />
<br />
</p>

	<p>As we see it, the two main problems to solve are:<br />
(1) Find a secure <span class="caps">PRNG</span> algorithm that have as low implementation complexity as possible.<br />
<br />
</p>

	<p>(2) Add as little system/application requirements on entropy source and persistent storage as possible.<br />
<br />
</p>

	<p>Looking at TinyRNG [3] for example, it seems that a block cipher in <span class="caps">CTR</span> mode (or <span class="caps">OFB</span> mode) should be sufficient. The question then is what block cipher to use? The <span class="caps">XTEA</span> block cipher [4] is very compact, but would it be a wise choice from a security perspective?<br />
<br />
</p>

	<p>But what to feed the <span class="caps">PRNG</span> with? Looking again at TinyRNG, it uses a simplistic version of the entropy accumulator from the Fortuna <span class="caps">PRNG </span>[5], but with fewer and smaller pools. The pools are processed using a <span class="caps">CBC</span>-MAC built around the same block cipher as used in the <span class="caps">PRNG</span>.<br />
<br />
</p>

	<p>The combined storage for the pools as well as <span class="caps">CBC</span>-MAC state would probably be acceptable for uIP. The question is if the pool feeding operation as such adds operational requirements on uIP that makes it harder to integrate?<br />
<br />
</p>

	<p>A simpler scheme could be to feed the <span class="caps">PRNG </span>(CTR-mode) with entropy used as part of Key and IV, that is not use a pool mechanism at all and leave it to user application to provide entropy words when performing a reseed. The Key (and IV?) would also consists of a counter that is monotonically increased.<br />
<br />
</p>

	<p>The problem with this (we guess) is that in order to ensure that <span class="caps">KEY</span>+IV is never reused is to keep at least part of <span class="caps">KEY</span> or IV as a counter that is stored in persistent memory and increased once (and stored) every time reseed (or boot) is performed. (How bad from a security perspective would this be? Compared to other <span class="caps">TCP</span> sequence generators?)<br />
<br />
</p>

	<p>The current version of uIP places few (basically no) demands on the system/application regarding physical resources (besides mem for code and data) and does not use any persistent storage besides code memory. It seems that any good sequence generator that are driven by physical entropy and tries to avoid sequence repetition need to place additional demands on the system. No?<br />
<br />
</p>

	<p>This is basically as far as we have taken this. More or less a bit of Googling, reading and attempts at thinking. The ambition is not to invent something new and unproven but to adapt existing tech and ideas that seem to work. But get it to work with the size, performance and <span class="caps">API</span> constraints of uIP.<br />
<br />
</p>

	<p>Any thoughts, comments, suggestions and pointers would be very greatly appreciated.<br />
<br />
</p>

	<p>Thank you!<br />
Joachim Str&#246;mbergson<br />
<br />
</p>


	<p>References<br />
&#8212;&#8212;&#8212;&#8212;&#8212;<br />
<br />
[1] A. Dunkels. uIP <span class="caps">TCP</span>/IP stack.<br />
</p>
 http://www.sics.se/~adam/uip/index.php/Main_Page<br />
<br />


	<p>[1] R. Lawshae. Picking Electronic Locks Using <span class="caps">TCP </span>Sequence Prediction<br />
http://www.defcon.org/images/defcon-17/dc-17-presentation/Ricky_Lawshae/defcon-17-ricky_lawshae-picking_electronic_locks-wp.pdf<br />
<br />
</p>

	<p>[3] A. Francillon, C. Castelluccia. TinyRNG: A Cryptographic Random<br />
</p>
    Number Generator for Wireless Sensors Network Nodes<br />
<br />
http://planete.inrialpes.fr/~ccastel/PAPERS/TinyRNG.pdf<br />
<br />


	<p>[4] R. M. Needham, D. J. Wheeler. Tea extensions.<br />
</p>
    http://www.cix.co.uk/~klockstone/xtea.pdf<br />
<br />


	<p>[5] Wikipedia. Fortuna <span class="caps">PRNG</span>.<br />
</p>
    http://en.wikipedia.org/wiki/Fortuna_%28PRNG%29<br />
</blockquote>
 <div class="shr-publisher-1339"></div>

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.strombergson.com/kryptoblog/2010/07/17/ny-tcp-sekvensgenerator-for-uip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rule30 IP-core släppt</title>
		<link>http://www.strombergson.com/kryptoblog/2009/01/12/rule30-ip-core-slappt/</link>
		<comments>http://www.strombergson.com/kryptoblog/2009/01/12/rule30-ip-core-slappt/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 18:39:41 +0000</pubDate>
		<dc:creator>Joachim Strömbergson</dc:creator>
				<category><![CDATA[Hårdvara]]></category>
		<category><![CDATA[Krypto]]></category>
		<category><![CDATA[InformAsic]]></category>
		<category><![CDATA[Om Kryptoblog]]></category>
		<category><![CDATA[prng]]></category>

		<guid isPermaLink="false">http://strombergson.com/kryptoblog/?p=614</guid>
		<description><![CDATA[<p><a href="http://www.informasic.se/informasic-lanserar-rule-30-som-open-core">I dag sl&#228;ppte vi p&#229; InformAsic</a> <a href="http://strombergson.com/kryptoblog/2008/10/13/dagens-hw-hack-wolframs-30e-regel/">den cellautomatbaserade slumptalsgenerator byggd p&#229; rule30 jag byggt som &#246;ppen IP-core</a>. Det tog lite l&#228;ngre tid att f&#229; ut den &#228;n jag hade hoppats, men nu blev det en bra start p&#229;&#8230;</p>


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[	<p><a href="http://www.informasic.se/informasic-lanserar-rule-30-som-open-core">I dag sl&#228;ppte vi p&#229; InformAsic</a> <a href="http://strombergson.com/kryptoblog/2008/10/13/dagens-hw-hack-wolframs-30e-regel/">den cellautomatbaserade slumptalsgenerator byggd p&#229; rule30 jag byggt som &#246;ppen IP-core</a>. Det tog lite l&#228;ngre tid att f&#229; ut den &#228;n jag hade hoppats, men nu blev det en bra start p&#229; nya arbets&#229;ret.</p>

	<p>F&#246;r den som vill titta p&#229; och anv&#228;nda v&#229;r IP-core <a href="http://www.informasic.se/rule-30-slumptalsgenerator-1">finns den h&#228;r</a>. Koden &#228;r <span class="caps">BSD</span> licensierad. Skriven i Verilog (naturligtvis). F&#246;rhoppningsvis kommer den till nytta f&#246;r att exempelvis driva <span class="caps">FPGA</span>-baserad test med kontrollerad, slumpm&#228;ssiga indata. Det &#228;r s&#229; jag ex anv&#228;nder den f&#246;r att testa kryptoimplementationer.</p>

	<p>Gl&#228;djande nog fick vi en del uppm&#228;rksamhet f&#246;r sl&#228;ppet, bland annat i <a href="http://etn.se/48157">Elektroniktidningen</a> och <a href="http://www.elinor.se/index.php/Slumptalsgenerator-som-Open-Core.html">Elektronik i Norden</a>. Ett litet f&#246;rtydligande ang&#229;ende <a href="http://www.opencores.org/">Opencores</a> och <a href="http://sourceforge.net/">Sourceforge</a> &#228;r att vi p&#229; InformAsic tycker att dessa &#228;r mycket bra initiativ.</p>

	<p>Dock &#228;r Opencores en aning (lite v&#228;l) kn&#246;lig att anv&#228;nda, b&#229;de f&#246;r utvecklare och anv&#228;ndare av cores. Tittar man p&#229; m&#229;nga av de (ex <a href="http://asics.ws/">Rudolf Usselman</a>) som var med att starta Opencores bor deras cores i dag p&#229; andra platser &#228;ven om det finns information om deras core p&#229; Opencores. En s&#229;dan l&#246;sning skulle s&#228;kert kunna fungera f&#246;r oss ocks&#229;. Vi f&#229;r se hur vi g&#246;r n&#228;sta g&#229;ng, speciellt n&#228;r vi snart sl&#228;pper n&#228;sta &#246;ppna <a href="http://en.wikipedia.org/wiki/Semiconductor_intellectual_property_core">IP-core</a>.</p>


 <div class="shr-publisher-614"></div>

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.strombergson.com/kryptoblog/2009/01/12/rule30-ip-core-slappt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

