<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>bert hubert finally blogs</title>
    <link>http://blog.netherlabs.nl/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>code, musings and more</description>
    <item>
      <title>Calculating the chance of spoofing an agile source port randomised resolver</title>
      <description>&lt;p&gt;This post sets out to calculate how hard it is to spoof a resolver that
takes simple, unilateral, steps to prevent such spoofing.&lt;/p&gt;

&lt;p&gt;Unilateral in this case means that any resolver can implement these steps,
without changing the DNS protocol or authoritative server behaviour.
Everybody that implements the ideas below immediately improves the general
security of the DNS.&lt;/p&gt;

&lt;p&gt;To save you all the reading, the simple unilateral measures can bring down
the chance to be spoofed to under 1% after a year of non-stop 50 megabit/s
packet blasting.&lt;/p&gt;

&lt;p&gt;Note however that my math or my ideas may be wrong. Please read carefully!&lt;/p&gt;

&lt;h2&gt;Work so far&lt;/h2&gt;

&lt;p&gt;Recapping, calculations so far show that a fully source port randomized
nameserver can be spoofed with a 64% chance of success within 24 hours,
requiring around 0.4TB of packets to be generated. If 2 hours are available,
the chance of success is 8.1%.&lt;/p&gt;

&lt;p&gt;This assumes that the attacker is able to generate around 50 megabits/s, and
also important, that the resolver is able to process 50k incoming responses/s.&lt;/p&gt;

&lt;p&gt;Details are on
&lt;a href="http://www.ops.ietf.org/lists/namedroppers/namedroppers.2008/msg01194.html"&gt;http://www.ops.ietf.org/lists/namedroppers/namedroppers.2008/msg01194.html&lt;/a&gt;
with the caveat that where it says &amp;#8220;1.5 - 2 GB&amp;#8221;, it should say &amp;#8220;36GB&amp;#8221;. &lt;/p&gt;

&lt;p&gt;Since that posting, quite a number of people have studied the calculations,
and they appear to hold up.&lt;/p&gt;

&lt;p&gt;Note that the present post does not address the dangers created by those
able to actively intercept and modify traffic - people with such abilities
have little need to spoof DNS anyhow.&lt;/p&gt;

&lt;h2&gt;Situation&lt;/h2&gt;

&lt;p&gt;The current situation is not acceptable - the resources needed to perform a
successful spoofing attack are available, if not generally, then to an
relevant subset of Internet users.&lt;/p&gt;

&lt;p&gt;It turns out that it takes a lot of effort to get the world to apply even a
minor patch that has received tremendous front-page coverage on all the
security websites - the source port randomisation patches in this case.&lt;/p&gt;

&lt;p&gt;So if we want to move quickly, we need a solution that can be rolled out
without having to upgrade large parts of the Internet.&lt;/p&gt;

&lt;h2&gt;Agile countermeasures&lt;/h2&gt;

&lt;p&gt;There are a number of strategies a resolver could employ to make itself
effectively unspoofeable, some of these include:&lt;/p&gt;

&lt;p&gt;A) Sending out questions over TCP/IP&lt;/p&gt;

&lt;p&gt;B) Repeating questions a number of times, and requiring the answers to be
   equivalent&lt;/p&gt;

&lt;p&gt;The problems with these two techniques is that they imply a certain overhead
and increase the general CPU utilization on the Internet.&lt;/p&gt;

&lt;p&gt;Furthermore there are strategies that make spoofing harder, but not
impracticable:&lt;/p&gt;

&lt;p&gt;C) Case games (&amp;#8216;dns-0x20&amp;#8217;)&lt;/p&gt;

&lt;p&gt;D) Use multiple source addresses&lt;/p&gt;

&lt;p&gt;A very comprehensive enumeration of techniques can be found on
&lt;a href="http://www.ops.ietf.org/lists/namedroppers/namedroppers.2008/msg01131.html"&gt;http://www.ops.ietf.org/lists/namedroppers/namedroppers.2008/msg01131.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sadly, it appears that on this impressive list there is nothing without more
or less unacceptable overhead that really gets us out of the woods, where
this is arbitrarily defined as reducing the spoofing success rate to below
1% after a year of non-stop trying at 50 megabit/s.&lt;/p&gt;

&lt;h2&gt;Detecting a spoofing attempt in progress&lt;/h2&gt;

&lt;p&gt;Since any spoofed response has a chance of around 2^-32 of being accepted,
it stands to reason around 2^31 bogus responses will arrive at the resolver
before the attacker manages to achieve his goals.&lt;/p&gt;

&lt;p&gt;Since we know we have effective countermeasures available, like A and B
mentioned above, we could deploy these in case a spoofing attempt is
detected. Remember that A and B are generally available, but that we don&amp;#8217;t
want to resort to them all the time, for all domains, because of their
overhead.&lt;/p&gt;

&lt;p&gt;Occasionally, port numbers get modified in transit. Additionally, responses
to queries sometimes arrive late enough that a new equivalent query has
since been sent. This means we should not consider a single response
mismatch to be a sign of a spoofing attempt in progress.&lt;/p&gt;

&lt;p&gt;If we allow X mismatches before falling back on A or B, the chance of a
single query being spoofed is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre&gt;&lt;code&gt;       X
   ---------  ~= 2^-32 * X
   N * P * I
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Assuming each individual attack lasts W seconds (being latency between the
authentic authoritative server and the resolver), the combined spoofing
chance after T seconds becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre&gt;&lt;code&gt;                    T/W
&lt;/code&gt;&lt;/pre&gt;
    
    &lt;p&gt;1 - (1 - 2^-32 * X)       ~= 2^-32 * X * T/W&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Putting in 20 for X and 0.1s for W, this gets us a combined spoofing chance
of 0.4% for a full day. Interesting, but not good enough, especially since
the attacker might well send only X packets per attempt, and launch far more
attempts.&lt;/p&gt;

&lt;p&gt;However, if the attacker has a defined goal about what to spoof, each
successive attempt might be for a different domain name, or differ in other
respects, but all those attempts will share some characteristics.&lt;/p&gt;

&lt;p&gt;Two things that will be identical, or at least reasonably unique are the
source address of the spoofed packet (aka, the network address of the
authentic authoritative server), plus the &amp;#8216;zone cut apex&amp;#8217;. This last bit
requires some understanding of the way a resolver works.&lt;/p&gt;

&lt;p&gt;(I made up this phrase, &amp;#8216;zone cut apex&amp;#8217;, but I think there are people with
better knowledge of DNS verbiage than I, I&amp;#8217;d love to hear of a better name)&lt;/p&gt;

&lt;p&gt;When a resolver asks NS1.EXAMPLE.COM for &amp;#8216;this.is.a.long.example.com&amp;#8217;, the
resolver knows it is asking NS1.EXAMPLE.COM in its role as &amp;#8216;EXAMPLE.COM&amp;#8217;
nameserver - this is how it selected that server.&lt;/p&gt;

&lt;p&gt;This means that an attacker might try many variations on
&amp;#8216;this.is.a.long.example.com&amp;#8217;, what will remain identical is the &amp;#8216;zone cut
apex&amp;#8217;, which is &amp;#8216;EXAMPLE.COM&amp;#8217;. What will also remain identical is the
(small) set of example.com servers available.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ll get into more detail after Dan Kaminksy has held his presentation. The
upshot however is that multiple different attempts can be correlated, and
thus be counted together in the spoofing-detection counts.&lt;/p&gt;

&lt;p&gt;If we conservatively decide to impose a 5 minute &amp;#8216;fallback to A or B&amp;#8217;-regime
for a {source IP, zone cut apex}-tuple, and leave the detection limit at 20,
this means an attacker will have one chance every 5 minutes of getting in an
attempt.&lt;/p&gt;

&lt;p&gt;This is equivalent to setting W equal to 300 seconds above, yielding us a
combined chance of spoofing a domain after a year of trying of 0.05%.&lt;/p&gt;

&lt;p&gt;Well within our goal.&lt;/p&gt;

&lt;h2&gt;Reality intrudes&lt;/h2&gt;

&lt;p&gt;Sadly, the reality is that we won&amp;#8217;t recognize all spoofed packets that
guessed wrong, so to speak. Typical operating systems will only let a
nameserver know about packets that arrived on a socket open for that
purpose.&lt;/p&gt;

&lt;p&gt;In the very worst case, the server is only listening on a single port, and
by the time a single mismatch is received by the nameserver process, on
average 32000 will have arrived on the network interface.&lt;/p&gt;

&lt;p&gt;This means that in the calculation above, if we don&amp;#8217;t take additional
measures, we need to set X to 32000, leading to a combined &lt;em&gt;monthly&lt;/em&gt;
spoofing chance of 6.4% (and a yearly near-certainty).&lt;/p&gt;

&lt;h2&gt;Fine tuning things&lt;/h2&gt;

&lt;p&gt;By raising the fallback period to an hour, the yearly spoofing chance
becomes 6.5%, assuming we only see 1 in every 32000 spoof attempts.&lt;/p&gt;

&lt;p&gt;If in addition a small number of sockets is kept open, say 10, to function as
&amp;#8216;canary ports&amp;#8217;, X reduces to 3200, and the yearly spoofing chance is back at
a low 0.65%.&lt;/p&gt;

&lt;p&gt;Canary ports serve no function except to detect spoofing attempts. For
efficiency reasons, these ports may simply be ports that had previously been
used for source port randomisation, but kept around somewhat longer.&lt;/p&gt;

&lt;p&gt;The number of canary ports, and the fallback period can be tuned at will to
achieve desired spoofing resilience levels.&lt;/p&gt;

&lt;h2&gt;Remaining Problems&lt;/h2&gt;

&lt;p&gt;Countermeasure &amp;#8216;A&amp;#8217; does not work for domains not offering TCP service.
Countermeasure &amp;#8216;B&amp;#8217; does not work for domains where single authoritative
servers generate differing answers to repetitive questions. This might
happen in case of (hardware) load balancers, or load balanced desynchronised
nameservers.&lt;/p&gt;

&lt;p&gt;Best results might be achieved by alternately trying countermeasure A and B - any server that does not support TCP &lt;em&gt;and&lt;/em&gt; sends out inconsistent replies
is in for some tough love if someone attempts to spoof the domains it hosts.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;If the calculations and ideas elaborated above hold up, it appears feasible
to achieve arbitrarily low spoofing chances, without doing any further
protocol work.&lt;/p&gt;

&lt;p&gt;Importantly, such changes would allow individual resolvers to protect their
users without having to wait for changes to all authoritative servers.&lt;/p&gt;

&lt;p&gt;In other words, everybody who participates receives an immediate benefit.&lt;/p&gt;</description>
      <pubDate>Tue, 05 Aug 2008 00:15:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:21cf17b1-b9fc-4b11-881f-a4c050c1f86c</guid>
      <author>bert.hubert@netherlabs.nl (bert hubert)</author>
      <link>http://blog.netherlabs.nl/articles/2008/08/05/calculating-the-chance-of-spoofing-an-agile-source-port-randomised-resolver</link>
    </item>
    <item>
      <title>Some thoughts on the recent DNS vulnerability</title>
      <description>&lt;p&gt;Yesterday it &lt;a href="http://www.kb.cert.org/vuls/id/800113"&gt;was announced&lt;/a&gt; that there is an unspecified but major DNS vulnerability, and that Microsoft, Nominum and ISC had fixes available.&lt;/p&gt;

&lt;p&gt;It is amusing to note that this has been hailed as a &lt;a href="http://www.doxpara.com/?p=1162"&gt;major feat of cooperation&lt;/a&gt;, with the vulnerable parties spinned as being part of &lt;a href="http://news.bbc.co.uk/1/hi/technology/7496735.stm"&gt;secret industry cabal&lt;/a&gt; that has just saved the world from very bad things.&lt;/p&gt;

&lt;p&gt;To say the least, I find this a funny way of presenting things! The vulnerability is still not public, but the secret cabal shared it with me. Perhaps it is fair to say I am part of the cabal - I nearly traveled to the secret meeting at the Microsoft campus, but the imminent birth of &lt;a href="http://blog.netherlabs.nl/articles/2008/05/24/maurits-hubert-has-been-born"&gt;my son&lt;/a&gt; made me decide not to go. &lt;/p&gt;

&lt;p&gt;The DNS vulnerability that has been presented yesterday is indeed a very serious problem, and I am glad steps are now taken to fix the broken software that was vulnerable. &lt;a href="http://ioactive.com"&gt;Dan Kaminksy&lt;/a&gt; is to be praised for discovering the issue and coordinating the release.&lt;/p&gt;

&lt;p&gt;However - the parties involved aren&amp;#8217;t to be lauded for their current fix. Far from it. It has been known since 1999 that all nameserver implementations were vulnerable for issues like the one we are facing now. In 1999, &lt;a href="http://cr.yp.to/djb.html"&gt;Dan J. Bernstein&lt;/a&gt; released his nameserver (&lt;a href="http://cr.yp.to/djbdns.html"&gt;djbdns&lt;/a&gt;), which already contained the countermeasures being rushed into service now. Let me repeat this. Wise people already saw this one coming 9 years ago, and had a fix in place.&lt;/p&gt;

&lt;p&gt;In 2006 when my own resolving nameserver entered the scene, I decided to use the same security strategy as implemented in djbdns (it is always better to steal a great idea than to think up a mediocre one!). Some time after that, I realised none of the other nameservers had chosen to do so, and I &lt;a href="http://blog.netherlabs.nl/articles/2006/05/09/i-bit-the-bullet-and-wrote-an-rfc-to-be"&gt;embarked on an effort&lt;/a&gt; to move the IETF DNS-EXT working group to standardise and thus mandate this high security behaviour.&lt;/p&gt;

&lt;p&gt;This didn&amp;#8217;t really go anywhere, but some months ago I noticed particularly strenuous resistance in the standardisation of the so called &lt;a href="http://tools.ietf.org/html/draft-ietf-dnsext-forgery-resilience"&gt;&amp;#8216;forgery resilience draft&amp;#8217;&lt;/a&gt;, and after some prodding it became clear it was felt my draft was in danger of drawing attention to the then unannounced DNS vulnerability, and that it were best if we&amp;#8217;d all shut up about it for a few months, perhaps until July 2008 until all the vendors would have had time to get their act together.&lt;/p&gt;

&lt;p&gt;And now we&amp;#8217;ve seen the release, and it is being hailed as great news. But it isn&amp;#8217;t. Dan Bernstein has been ignored since 1999 when he said something should be done. I&amp;#8217;ve been ignored since 2006. The IETF standardisation languished for two years. &lt;/p&gt;

&lt;p&gt;This is not a success story. It has in fact been a remarkable failure.&lt;/p&gt;

&lt;p&gt;To end on a positive note - I am very glad Dan Kaminsky&amp;#8217;s work caused some collective eye opening, and I hope good things come from this. DNS has long lacked critical attention, and in the end this might bring about sorely needed improvements.&lt;/p&gt;

&lt;p&gt;DNS very recently celebrated its 25th birthday - I look forward to seeing the venerable Domain Name System succeed in the coming 25 years!&lt;/p&gt;</description>
      <pubDate>Wed, 09 Jul 2008 21:31:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:d38d8a59-f79c-4c6a-bc32-8d4905dce853</guid>
      <author>bert.hubert@netherlabs.nl (bert hubert)</author>
      <link>http://blog.netherlabs.nl/articles/2008/07/09/some-thoughts-on-the-recent-dns-vulnerability</link>
      <category>PowerDNS</category>
      <category>Netherlabs</category>
    </item>
    <item>
      <title>Maurits Hubert has been born!</title>
      <description>&lt;h2&gt;18th of May, Delft, The Netherlands&lt;/h2&gt;

&lt;p&gt;Mirjam &amp;amp; Bert are proud to announce the birth of their son Maurits Hubert! Mother, son &amp;amp; father are doing very well.&lt;/p&gt;

&lt;p&gt;Feel free to email the little guy on maurits@hubertnet.nl!&lt;/p&gt;

&lt;p&gt;Picture when Maurits was only an hour old:
&lt;img width=100% src="http://ds9a.nl/tmp/maurits-heel-vers.jpg"&gt;
&lt;br&gt;
And a slightly geeky &lt;a href="http://en.wikipedia.org/wiki/Droste_effect"&gt;Droste Effect&lt;/a&gt; photo:
&lt;br&gt;
&lt;img width=100% src="http://ds9a.nl/tmp/maurits-droste.jpg"&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 24 May 2008 10:37:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:ed030018-00ff-4aee-a8f1-d952d260339d</guid>
      <author>bert.hubert@netherlabs.nl (bert hubert)</author>
      <link>http://blog.netherlabs.nl/articles/2008/05/24/maurits-hubert-has-been-born</link>
      <category>Life</category>
    </item>
    <item>
      <title>Some good news to go with the bad</title>
      <description>&lt;p&gt;&lt;a href="http://blog.netherlabs.nl/articles/2006/11/23/end-of-an-era"&gt;Exactly one year ago today&lt;/a&gt;, my father passed away, less than a year after my mother did. &lt;/p&gt;

&lt;p&gt;Here you can see them in happier times, together with the other subject of this post:
&lt;p&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.hubertnet.nl/Edinburghpahumahukle.jpg" width=51%&gt;
&lt;img src="http://ds9a.nl/shot0001.png" width="47%"&gt;
&lt;p&gt;
While we mourn their passing today, not all news is bad. I&amp;#8217;m happy to announce Mirjam and I are expecting a baby!
&lt;p&gt;
We&amp;#8217;re very happy, but sad we won&amp;#8217;t be able to share the good news with my parents. But: life goes on - which is literally true in this case.
&lt;p&gt;
&lt;em&gt;Bert &amp;amp; Mirjam&lt;/em&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 13 Nov 2007 13:42:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:d0fc8d24-d42e-4609-8fe7-7b8e2df63330</guid>
      <author>bert.hubert@netherlabs.nl (bert hubert)</author>
      <link>http://blog.netherlabs.nl/articles/2007/11/13/some-good-news-to-go-with-the-bad</link>
      <category>Life</category>
    </item>
    <item>
      <title>Secrets in Public: Diffie-Hellman key exchange</title>
      <description>&lt;p&gt;While running the risk of turning this blog into a lecture series, I can&amp;#8217;t
resist. This post will dive into cryptography, and I hope to be able to
transfer the sense of wonder that caught me when I first read about Diffie-Hellman
key exchange many years ago.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s assume you are in a room with two other people, and that you want to
share a secret with one of them, but not with the other. In the tradition of
cryptography, we&amp;#8217;ll call these three people Alice (you), Bob (your friend)
and Eve (who wants to &amp;#8216;Eavesdrop&amp;#8217; on your secrets).&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s also assume that the room is very quiet, so you can&amp;#8217;t whisper, and
everybody can hear what everybody else is saying. Furthermore, you are far enough away that you can&amp;#8217;t pass paper messages.&lt;/p&gt;

&lt;p&gt;So how could you (Alice) share a secret with Bob? Anything you want to tell
Bob, will be overheard by Eve. You might try to think up a code, but you&amp;#8217;ll
still have to explain the code, and both Bob and Eve will hear it.&lt;/p&gt;

&lt;p&gt;It turns out that using the magic of public key cryptography, this is
possible - sharing a secret while people are listening in.&lt;/p&gt;

&lt;p&gt;The room with Alice, Bob and Eve is not a very relevant example, but replace
Alice by &amp;#8216;The allied forces&amp;#8217;, &amp;#8216;Bob&amp;#8217; by a resistance fighter equipped with a
radio, and &amp;#8216;Eve&amp;#8217; by the occupying enemy, and things start to make sense.&lt;/p&gt;

&lt;p&gt;Or, in today&amp;#8217;s terms, replace Bob by Amazon.com, and Eve by a hacker
interested in getting your credit card number.&lt;/p&gt;

&lt;h2&gt;So how does it work?&lt;/h2&gt;

&lt;p&gt;To send a secret, two things are needed: an &amp;#8216;algorithm&amp;#8217; and a &amp;#8216;key&amp;#8217;. A famous
algorithm is the &amp;#8216;Caesar cypher&amp;#8217;, which consists of shifting all letters by
a fixed amount. So an A might become a B, a B would become a C etc etc. &lt;/p&gt;

&lt;p&gt;The key in this case is how much you want to shift the letters, in the
sample above the key is &amp;#8216;1&amp;#8217;. If the key had been &amp;#8216;2&amp;#8217;, an A would&amp;#8217;ve become a
C, a B would&amp;#8217;ve become a D etc.&lt;/p&gt;

&lt;p&gt;Typically, you can discuss the algorithm in public, but you need to keep the
key secret. In terms of Alice and Bob, they will be able to communicate in
secret once they&amp;#8217;ve been able to establish a key that Eve does not know
about.&lt;/p&gt;

&lt;p&gt;Once everybody has agreed to use the Caesar cypher, the problem shifts to
exchanging how many letters we will shift. We can&amp;#8217;t just say this out loud,
since both Bob and Eve will hear it.&lt;/p&gt;

&lt;h2&gt;Diffie-Hellman&lt;/h2&gt;

&lt;p&gt;Way back in 1976, Whitfield Diffie and Martin Hellman published the details
of what has become known as the Diffie-Hellman key exchange algorithm,
although they both credit Ralph Merkle with some of the key ideas.&lt;/p&gt;

&lt;p&gt;The process basically works as follows. Alice and Bob each think of a random
number, that they keep a secret. Then they both do some calculations based
on this number, and say the result of those calculations out loud.&lt;/p&gt;

&lt;p&gt;Then both Alice and Bob combine the results of the calculations with their own
secret random number, and out pops a shared random secret number. This
shared random secret number is now known by Alice and Bob, but not by Eve.
And it is this secret that now becomes the key.&lt;/p&gt;

&lt;h2&gt;How is this possible?&lt;/h2&gt;

&lt;p&gt;Eve heard both Alice and Bob say a random number, exactly the same numbers
that Alice and Bob heard. Yet only Alice and Bob now know the shared secret.
How is this possible?&lt;/p&gt;

&lt;p&gt;The trick lies in the calculation, by which means Alice and Bob only shared
parts of the numbers they chose initially. Then both Alice and Bob combined
those parts with their full random numbers.&lt;/p&gt;

&lt;p&gt;It is this trick of revealing only parts of random numbers, and then
combining the part of the other party with your full number, that leads to a
shared secret.&lt;/p&gt;

&lt;h2&gt;Show me&lt;/h2&gt;

&lt;p&gt;On &lt;a href="http://ds9a.nl/tmp/dh.html"&gt;this page&lt;/a&gt; I wrote a very simple Diffie-Hellman example program that runs entirely within your web browser. You can either use it alone, or with a friend - which is the most fun. It works over the phone, or over an instant messenger (IRC, MSN etc). Follow the instructions, encode a message, paste it to your friend, and if your friend followed the instructions, and he pastes the encoded message into the decoder, he should see your secret message!&lt;/p&gt;

&lt;p&gt;This is even more fun in a chat room with actual Eve&amp;#8217;s present.&lt;/p&gt;

&lt;p&gt;Please be aware that the sample is a joke - don&amp;#8217;t use it to share real secrets! However, the technology it employs is real, and this truly is how people exchange keys - only the numbers are far larger (300 digits), and the actual encryption is not a Caesar cypher.&lt;/p&gt;

&lt;h2&gt;So how does it really work?&lt;/h2&gt;

&lt;p&gt;More information can be found on the &lt;a href="http://en.wikipedia.org/wiki/Diffie-Hellman"&gt;wikipedia page about Diffie-Hellman&lt;/a&gt;, especially in the &amp;#8216;external links&amp;#8217; section.&lt;/p&gt;</description>
      <pubDate>Sun, 11 Nov 2007 11:36:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:df7952aa-fba3-4638-8620-9e3294adbdda</guid>
      <author>bert.hubert@netherlabs.nl (bert hubert)</author>
      <link>http://blog.netherlabs.nl/articles/2007/11/11/secrets-in-public-diffie-hellman-key-exchange</link>
      <category>PowerDNS</category>
    </item>
    <item>
      <title>Reusing UNIX semantics for fun and profit</title>
      <description>&lt;p&gt;I&amp;#8217;ve long been a fan of some of the techniques &lt;a href="http://en.wikipedia.org/wiki/Daniel_J._Bernstein"&gt;Dan
Bernstein&lt;/a&gt; uses to
leverage the power of UNIX to achieve complicated goals with little effort.
For example, he uses a technique called &lt;a href="http://en.wikipedia.org/wiki/Chain_loading"&gt;Chain
Loading&lt;/a&gt; to clearly separate and
insulate several programs from each other by loading a new program *in
place* of the current one, once a critical task has been performed, like
checking a user&amp;#8217;s credentials.&lt;/p&gt;

&lt;p&gt;This guarantees that the outer program, that might actually be exposed to
the internet, can restrict itself to very basic functionality, and only
launch an inner, more useful program once authentication has completed.&lt;/p&gt;

&lt;p&gt;Other tricks are to leverage UNIX user names to insulate various programs
from each other, leaving the task of getting the access control details
right to the very well tested operating system (which we need to rely on
anyhow).&lt;/p&gt;

&lt;p&gt;While sometimes unconventional, techniques such as those described above can
simultaneously reduce code complexity AND increase security, by more or less
hitching a ride on top of existing functionality.&lt;/p&gt;

&lt;p&gt;Some time ago, I was involved in the development of a computer program with
a classic &amp;#8216;producer/consumer&amp;#8217; problem. We were inserting events in the
database, and wanted to scale by getting a dedicated and very fast database
server. To our surprise, getting an additional, and far more powerful system
did not improve our performance, and in fact made things far worse.&lt;/p&gt;

&lt;p&gt;What happened? It turns out we were doing a lot of small inserts into the
database, and even while we were using a transaction, each of these inserts
incurred a slight latency penalty, caused by the query &amp;amp; answer packets
having to travel over the network. And when doing hundreds of thousands of
queries, even half a millisecond is a lot of time. Add in operating system
and TCP overhead, and the end to end latency is probably even higher.
The obvious solution is to no longer actually wait for the inserts to
complete, but to transmit them to the database asynchronously, and continue
to do useful work while the packets are in flight and being processed. This
way, no time is wasted waiting.&lt;/p&gt;

&lt;p&gt;Since most database APIs are synchronous, a separate helper thread of
execution needs to be spawned to create the fiction of asynchrony, and this
is where things get interesting.&lt;/p&gt;

&lt;p&gt;In the PowerDNS nameserver, a complicated &amp;#8216;Distributor&amp;#8217; abstraction is used
to send queries to database threads, and this Distributor contains locks,
semaphores and a zoo of other concurrent programming techniques to make
things work well. For example, we need to perform checks to see if we aren&amp;#8217;t
building up an unacceptable backlog of queries, and block if we find we are.
This comes with additional choices as to when to unblock etc. I was not
looking forward to reimplementing such a thing.&lt;/p&gt;

&lt;p&gt;Additionally, our database interface needed to offer an extra feature:
every once in a while a query comes along that we DO need to wait for, and
because of coherency issues, such a query can only be executed once all
queries &amp;#8216;in flight&amp;#8217; have finished.&lt;/p&gt;

&lt;p&gt;So we spent some time pondering this, and suddenly it dawned on me that many
of the features we needed exactly match the semantics of the venerable UNIX
&amp;#8216;pipe&amp;#8217;.&lt;/p&gt;

&lt;p&gt;A pipe is normally used to communicate between two processes, as exemplified
by this sample shell script command, which shows us the largest directories
on a disk:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;$ du | sort -n&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The program &amp;#8216;du&amp;#8217; generates a list of directories and their sizes, which is
then fed to sort which outputs this in ascending order. 
However, nothing prohibits us from using a pipe to communicate with
ourselves - and as such it might be a might fine conduit to pass database
queries through to our database worker thread.&lt;/p&gt;

&lt;p&gt;This has some very nice benefits. Pipes are incredibly efficient, since a
lot of UNIX performance depends on them. Additionally, they implement sane
blocking behaviour: if too much data is stuck in the pipe, because the other
process does not take it out again quickly enough, the sending process
automatically blocks. The operating system implements high and low water
marks to make this (un)blocking happen efficiently.&lt;/p&gt;

&lt;p&gt;Furthermore, pipes guarantee that data up to a certain size can either be
written as a whole, or not written at all - making sure we don&amp;#8217;t have to
deal with partial messages.&lt;/p&gt;

&lt;p&gt;Finally, pipes automatically detect when the process on the other end of
them has gone away, or has closed its end of the pipe.&lt;/p&gt;

&lt;p&gt;However, not all is good. In order to transmit something over a pipe, it
must be serialised into bytes - we can&amp;#8217;t transmit ready to use objects over
them. Additionally, because pipes implement &amp;#8216;stream&amp;#8217; behaviour, we need to
delineate one message from the other, because the pipe itself does not say
where a message begins and ends - unlike datagram sockets for example.&lt;/p&gt;

&lt;p&gt;And this is the clever bit of our idea. As stated above, pipes are usually
employed to transmit data from one process to the other. In our case, the
pipe goes from one thread of execution to the other - within the same
process, and thus within the same memory space. So we don&amp;#8217;t need to send
serialized objects at all, and can get away with transmitting &lt;em&gt;pointers&lt;/em&gt; to
objects. And the nice thing is, pointers all have the same (known) length -
so we can do away with both delineation and serialisation.&lt;/p&gt;

&lt;p&gt;Additionally, pointers are a lot smaller than most messages, which means we
can stuff more messages in the same (fixed) size of the pipe buffer.&lt;/p&gt;

&lt;p&gt;So, are we done now? Sadly no - we have the additional need to be able to
&amp;#8216;flush the pipe&amp;#8217; in order to perform synchronous queries that we do need to
wait for. &lt;/p&gt;

&lt;p&gt;This is where things get complicated, but for those who really want to know,
I&amp;#8217;ll explain it here. It took almost a day of hacking to get it right
however, and I&amp;#8217;m explaining it for my own benefit as much as for that of the
reader, since I&amp;#8217;m bound to forget the details otherwise.&lt;/p&gt;

&lt;p&gt;If a synchronous query comes along, we need to flush the pipe, but UNIX
offers no such ability. Once we&amp;#8217;ve written something to a pipe, all the
kernel guarantees us is that it will endeavour to deliver it, but there is
no system call that allows us to wait for all data to actually be delivered.&lt;/p&gt;

&lt;p&gt;So we need to find a way to signal a &amp;#8216;write barrier&amp;#8217;, and the obvious way to
do so is to send a NULL pointer over the pipe, which tells the other end we
want to perform a synchronous query. Once the worker thread has seen the
NULL pointer, it unlocks the single controlling mutex (which is the return
signal that says &amp;#8220;got you -the pipe is empty&amp;#8221;), and then waits for further
pointers to arrive.&lt;/p&gt;

&lt;p&gt;Meanwhile, the sending thread tries to lock that same mutex immediately
after sending the NULL pointer, which blocks since the receiving thread
normally holds the lock. Once the lock succeeds, this tells us the worker
thread has indeed exhausted all queries that were in flight.&lt;/p&gt;

&lt;p&gt;The sending thread now performs its synchronous database work, knowing the
database is fully coherent with all queries it sent out previously, and also
knowing the worker thread is not simultaneously accessing the connection -
since it is instead waiting for a new pointer to arrive.&lt;/p&gt;

&lt;p&gt;If our program now wants to perform further asynchronous queries it can
simply transmit further pointers to the worker thread - which oddly enough
does not need to retake the mutex. This is what caused us many hours of
delay, because intuitively it seems obvious that once the sending thread is
done, it must release the mutex so the worker thread can retake it.&lt;/p&gt;

&lt;p&gt;As it turns out, doing so opens a whole world of nasty race conditions which
allow synchronous queries to &amp;#8216;jump the queue&amp;#8217; of asynchronous queries that
are in flight and have not yet arrived.&lt;/p&gt;

&lt;p&gt;So, the sequence is that the worker thread only unlocks the mutex, while the
sending thread only locks it.&lt;/p&gt;

&lt;p&gt;And this basically is it! So how much lines of code did we save by using the
magic of UNIX pipes? The pipe handling code takes all of 90 lines, whereas
the Distributor code of PowerDNS takes a round 300, even though it does not
offer synchronous queries, does not automatically block if too many
queries are outstanding, and most certainly couldn&amp;#8217;t implement the sensible
wakeup ability that UNIX pipes do offer.&lt;/p&gt;

&lt;p&gt;Oh, and you might be wondering by now, did it help? Indeed it did - our
program is now at least 20 times faster than it used to be, and there was
much rejoicing.&lt;/p&gt;</description>
      <pubDate>Thu, 20 Sep 2007 21:57:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:83ebe649-e3df-404b-8d15-c6fee369bafa</guid>
      <author>bert.hubert@netherlabs.nl (bert hubert)</author>
      <link>http://blog.netherlabs.nl/articles/2007/09/20/reusing-unix-semantics-for-fun-and-profit</link>
    </item>
    <item>
      <title>The whole oil thing</title>
      <description>&lt;p&gt;Ok - Steorn is quieting down for now, and it got enough attention anyhow, so it is time to look a bit into the things behind the appeal of alternative energy sources.&lt;/p&gt;

&lt;p&gt;Many readers will recall that in the past, there was debate as to when the &amp;#8216;oil would run out&amp;#8217;, and that this date was supposed to be somewhere in 2045 or so, which was more or less far enough away not to worry about it.&lt;/p&gt;

&lt;p&gt;At least I remember thinking about it like that back in school. It is amazing how this sentiment fooled us for so long. Modern tubes of toothpaste are easy to empty down to the last bit, but in the past this wasn&amp;#8217;t so. This should&amp;#8217;ve told us something.&lt;/p&gt;

&lt;p&gt;Oil is not like modern toothpaste, it is like ketchup. Far before it has run out, it becomes hard to extract. And oil is remarkably worse than ketchup.&lt;/p&gt;

&lt;p&gt;Back in 1956, one of Shell Oil&amp;#8217;s scientists noticed that wells started to become less productive once 50% of their contents had been extracted. He then proceeded to predict US oil production based on this assumption, and correctly calculated it would peak somewhere in the late 1960s, and decline from that point onwards. And so it did.&lt;/p&gt;

&lt;p&gt;Additionally, he extrapolated this result to the whole world, and determined global oil production would go into decline somewhere after the year 2000.&lt;/p&gt;

&lt;h2&gt;Controversy&lt;/h2&gt;

&lt;p&gt;Nobody much liked this prediction, and it was widely ridiculed. New wells would continue to be found, and importantly, new techniques would enable us to extract more and more oil from existing wells. &lt;/p&gt;

&lt;p&gt;As it turned out, especially this last prediction was correct, which is why the world production of oil hasn&amp;#8217;t declined already.&lt;/p&gt;

&lt;p&gt;However, no major new fields have been found over the past decade.&lt;/p&gt;

&lt;p&gt;Many players in the oil industry now believe the predictions, and agree that oil production might decline from 2010 onwards, or perhaps a bit later.&lt;/p&gt;

&lt;h2&gt;Production is peaking, demand is increasing&lt;/h2&gt;

&lt;p&gt;Controversy aside, the International Energy Agency has produced graphs of oil production and demand since 1974, and it is clear that production will one day be overtaken by demand.&lt;/p&gt;

&lt;p&gt;It is easy to see why - as it comes out of the ground, oil is not immediately suitable for all kinds of use. For many purposes, it first needs to be &amp;#8216;refined&amp;#8217;. Building a refinery is hard work, and typically takes up to a decade. Additionally, environmental rules mean that it is easily possible to spend a similar amount of time just getting permission to build.&lt;/p&gt;

&lt;p&gt;No major refineries have been built over the past years, and no major refineries are nearing completion. The existing refineries are running at or near peak production.&lt;/p&gt;

&lt;p&gt;On the demand side, the world economy is growing at an unprecedented clip. &lt;/p&gt;

&lt;h2&gt;Will demand exceed supply?&lt;/h2&gt;

&lt;p&gt;The few graphs that plot oil production and demand in one plot (readers, if you know of any, please comment!) typically show a &amp;#8216;and then a miracle occurs&amp;#8217; event when demand is about to overtake supply.&lt;/p&gt;

&lt;p&gt;This reflects the usual market behaviour that once oil becomes scarce enough, prices will rise, and oil that was hitherto uneconomical to produce becomes economically viable. In other words, exploding prices make more oil available.&lt;/p&gt;

&lt;p&gt;But as remarked previously, refineries are already running flat out. This means that no miracle will occur in the immediate future, and oil might very well run out temporarily.&lt;/p&gt;

&lt;p&gt;To reiterate, this does not mean the oil is gone, just that it isn&amp;#8217;t available at the rate we need it.&lt;/p&gt;

&lt;h2&gt;And then what?&lt;/h2&gt;

&lt;p&gt;This is the scary bit, and the main reason I worry. Already we see posturing by the big oil suppliers and consumers. China is pouring money into Africa, and has even deployed part of its army in certain countries to make oil production possible.&lt;/p&gt;

&lt;p&gt;Russia is throwing its weight around in a frightening way as well, and making it clear not all of its customers are equal. It plays geopolitics both with hydrocarbon availability and pricing.&lt;/p&gt;

&lt;p&gt;The various armies in the Middle East speak for themselves. A peaceful Middle East produces more oil, and it might very well sell it preferably to its occupiers or sponsors.&lt;/p&gt;

&lt;p&gt;Here in Europe, we appear to believe oil might become mighty expensive, but that we&amp;#8217;ll weather it.&lt;/p&gt;

&lt;p&gt;But if oil becomes truly scarce, will market prices influence who will get access to it? Or will it be supplied to those countries with the ability to project power, and back up their monetary offers with military encouragement? &lt;/p&gt;

&lt;p&gt;Or might suppliers become king-makers, with the power to determine which economy lives or dies?&lt;/p&gt;

&lt;p&gt;Our European belief that our ability to pay steep prices will allow us to continue as normal might be seen as exceedingly silly by then, possibly comparable to Neville Chamberlain&amp;#8217;s appeasement policy in the 1930s. &lt;/p&gt;

&lt;h2&gt;So when will all this happen?&lt;/h2&gt;

&lt;p&gt;It is happening already, but crunch time is not yet upon us. Some countries have already had problem getting access to enough energy, mostly those who (like Europe) depend on Russian oil and gas.&lt;/p&gt;

&lt;p&gt;The crunch might be postponed if the economy stops growing at this rate, it might be advanced if any of the major refineries is damaged by terrorism, weather or bad luck.&lt;/p&gt;

&lt;p&gt;At any rate, the issue should start making more headlines in the near future.&lt;/p&gt;

&lt;h2&gt;What about coal, nuclear energy, wind and solar energy? Tar sands?&lt;/h2&gt;

&lt;p&gt;Some countries have already accepted that we should start building more nuclear power plants because the energy is running out. However, building such installations also takes decades, and it has been argued we&amp;#8217;d need to open a new power plant each month or so to make up lost ground.&lt;/p&gt;

&lt;p&gt;Coal is currently environmentally harmful or expensive, but might save part of the industry for some time. &lt;/p&gt;

&lt;p&gt;Wind and solar, although interesting, struggle to generate an appreciable fraction of our world energy need. &lt;/p&gt;

&lt;p&gt;Tar sands, sand that contains oil, are interesting but not for the near future. They might make Canada extremely rich though.&lt;/p&gt;

&lt;h2&gt;Further reading&lt;/h2&gt;

&lt;p&gt;Google on &amp;#8216;Hubbert Peak&amp;#8217;, and head on from there. &amp;#8216;Peak oil&amp;#8217; is also a nice phrase to search on. The &lt;a href="http://iea.org"&gt;International Energy Agency&lt;/a&gt; has long published honest and truthful graphs that presaged the issue, but up till recently the IEA did not put this into words. Recently they&amp;#8217;ve begone to describe the near future oil situation as &amp;#8216;extremely tight&amp;#8217;.&lt;/p&gt;</description>
      <pubDate>Sun, 26 Aug 2007 18:18:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:78342271-56cb-4a27-ac64-e2a1b06965cc</guid>
      <author>bert.hubert@netherlabs.nl (bert hubert)</author>
      <link>http://blog.netherlabs.nl/articles/2007/08/26/the-whole-oil-thing</link>
    </item>
    <item>
      <title>Steorn updates, things are cooling down...</title>
      <description>&lt;p&gt;Well, it might&amp;#8217;ve been too good to be true.&lt;/p&gt;

&lt;p&gt;First the &lt;a href="http://blog.netherlabs.nl/articles/2007/07/03/steorn-updates-things-are-heating-up"&gt;announcement&lt;/a&gt; that internet streaming of the &amp;#8216;Steorn&amp;#8217; device over at &lt;a href="http://www.kinetica-museum.org"&gt;Kinetica Museum&lt;/a&gt; would start at 6PM, which was later &amp;#8220;clarified&amp;#8221; to mean 6PM US eastern time.&lt;/p&gt;

&lt;p&gt;And when that time passed, nothing happened. After a while, a notice appeared that due to technical difficulties, streaming would start on July 5th.&lt;/p&gt;

&lt;p&gt;Perhaps this is the beginning of the end for Steorn.&lt;/p&gt;

&lt;p&gt;&lt;font color="#ff0000"&gt;Update:&lt;/font&gt; Steorn has &lt;a href="http://www.steorn.com/forum/comments.php?DiscussionID=58649&amp;amp;page=1#Item_0"&gt;confirmed&lt;/a&gt; the device is not operating as it should, but they say they are working on it, and intend to turn on the streams tomorrow, even if the device is still not working, so we can see &amp;#8220;stressed engineers&amp;#8221; trying to fix it.&lt;/p&gt;

&lt;p&gt;In &lt;a href="http://blog.netherlabs.nl/articles/2006/08/26/steorn-open-source-etiquette"&gt;one of my first posts&lt;/a&gt; on this enigmatic company, I mentioned the possibility of them deluding themselves, and I&amp;#8217;m afraid the things that have happened over the past few days point in that direction.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;d still be very happy if Steorn turned out the be on to something, but the signs are not good..&lt;/p&gt;

&lt;p&gt;The websites of Steorn and Kinetica still promise a demo, so perhaps they simply &lt;em&gt;are&lt;/em&gt; having problems streaming. Will keep you posted.&lt;/p&gt;</description>
      <pubDate>Thu, 05 Jul 2007 00:29:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:598d3e8a-4430-4a16-b3f4-e6bbb39cee53</guid>
      <author>bert.hubert@netherlabs.nl (bert hubert)</author>
      <link>http://blog.netherlabs.nl/articles/2007/07/05/steorn-updates-things-are-cooling-down</link>
    </item>
    <item>
      <title>Steorn updates, things are heating up!</title>
      <description>&lt;p&gt;Life is quickly getting silly on the Steorn front (for more details, see my &lt;a href="http://blog.netherlabs.nl/articles/2007/07/01/steorn-demo-our-own-iphone-moment"&gt;previous post&lt;/a&gt;).
&lt;img src="http://adsl-xs4all.ds9a.nl/nixel.gif"&gt;
Reliable sources have now confirmed a demo *IS* being setup, and although most sources are bound by &lt;a href="http://en.wikipedia.org/wiki/Non-disclosure_agreement"&gt;NDA&lt;/a&gt;, it has become clear the demo is this week, and most likely at the &lt;a href="http://www.kinetica-museum.org"&gt;Kinetica Museum&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;font color=#ff0000&gt;Update&lt;/font&gt;: update, webcam images are appearing &lt;a href="http://www.steorn.com/orbo/demo/demo.html"&gt;here&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;font color=#ff0000&gt;Update&lt;/font&gt;: the Kinetica website now contains an announcement that it is hosting a new exhibition starting Thursday, and that details will be announced on Wednesday.&lt;/p&gt;

&lt;p&gt;&lt;font color=#ff0000&gt;Update 2&lt;/font&gt;: &lt;a href="http://www.rte.ie/news/2007/0704/steorn.html"&gt;An article on RTÉ news&lt;/a&gt; reports that Sean McCarthy says the device will be demonstrated tonight from 6PM London time, and that it will be lifting a weight to prove it is generating energy.&lt;/p&gt;

&lt;p&gt;Additionally, a short movie has surfaced last night showing someone who looks like Sean McCarthy (the Steorn chief executive) smoking a cigarette across the Kinetica museum. Sean is wearing a t-shirt that says &amp;#8216;CEO versus CoE&amp;#8217;, where CoE stands for Conservation of Energy - the basic law of physics their device is claimed to break.&lt;/p&gt;

&lt;p&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/nxWzQW_KwEI"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/nxWzQW_KwEI" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;object&gt;&lt;/p&gt;

&lt;p&gt;This movie is classic &lt;a href="http://en.wikipedia.org/wiki/Viral_marketing"&gt;viral marketing&lt;/a&gt; material, which in itself tells us something: Steorn is being REAL serious about generating a hype. They&amp;#8217;ve previously availed themselves of the services of &lt;a href="http://www.citigatedr.com/"&gt;Citigate Dewe Rogerson&lt;/a&gt;, a high-end public relations firm. This viral is a strong indication they are again taking PR seriously.&lt;/p&gt;

&lt;p&gt;If they are as serious as this about getting massive media attention, this will only be the beginning of the onslaught. By itself this movie will not turn heads, but it might be a good start.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;ll only know more if and when the demo arrives, and many are sceptical about the chances of being convinced by a demo, but for now, expect the hype to increase, with an expected peak on Saturday the 7th coinciding with the &lt;a href="http://www.liveearth.org"&gt;Live Earth&lt;/a&gt; concert.&lt;/p&gt;

&lt;p&gt;For more information, see &lt;a href="http://www.steorn.com"&gt;the Steorn homepage&lt;/a&gt;, the &lt;a href="http://freeenergytracker.blogspot.com"&gt;Free Energy Tracker Blog&lt;/a&gt;, the &lt;a href="http://dispatchesfromthefuture.com"&gt;Dispatches from the Future blog&lt;/a&gt;, &lt;a href="http://fizzx.com"&gt;the Fizzx forum&lt;/a&gt; and the &lt;a href="http://en.wikipedia.org/wiki/Steorn"&gt;relevant Wikipedia page&lt;/a&gt;. Another interesting place to look is the &lt;a href="http://www.steorn.com/forum"&gt;Steorn Forum&lt;/a&gt;, but be aware this place is populated by all and sundry, and heavily edited by moderators.&lt;/p&gt;</description>
      <pubDate>Tue, 03 Jul 2007 08:33:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:9b068d15-af4b-4fa9-b385-062ac36f251e</guid>
      <author>bert.hubert@netherlabs.nl (bert hubert)</author>
      <link>http://blog.netherlabs.nl/articles/2007/07/03/steorn-updates-things-are-heating-up</link>
    </item>
    <item>
      <title>Steorn Demo: our own iPhone moment</title>
      <description>&lt;p&gt;Quick plug of my new laptop, a spiffy Dell XPS M1210. Kudos to both Dell and Ubuntu, everything just works, and it just works very well. If you need a small but powerful laptop, and want to run Linux, you should consider this one!&lt;/p&gt;

&lt;p&gt;Ok, on to the hype.&lt;/p&gt;

&lt;p&gt;&lt;font color=#ff0000&gt;Update&lt;/font&gt;: earlier entries on Steorn are &lt;a href="http://blog.netherlabs.nl/articles/2007/06/17/small-update-on-cold-fusion-steorn"&gt;here&lt;/a&gt;, &lt;a href="http://blog.netherlabs.nl/articles/2006/08/26/steorn-open-source-etiquette"&gt;here&lt;/a&gt;, and &lt;a href="http://blog.netherlabs.nl/articles/2006/08/20/steorn-free-energy-claims"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Steorn&lt;/h2&gt;

&lt;p&gt;This week saw the launch of the iPhone, perhaps one of the most anticipated technology events in living memory. &lt;/p&gt;

&lt;p&gt;On the physics side of things, we are sort of going through the same thing, except a thousand times smaller. Perhaps a million.&lt;/p&gt;

&lt;p&gt;To very briefly recap, &lt;a href="http://en.wikipedia.org/wiki/Steorn"&gt;Steorn&lt;/a&gt; hit the scene in August 2006 with an (expensive) advertisement in the Economist newspaper, claiming to have developed technology that generates energy without consuming fuel. &lt;/p&gt;

&lt;p&gt;Their story was that nobody believed them, and that they were challenging the scientific community to join a &amp;#8216;jury&amp;#8217; to prove or disprove their claims. &lt;/p&gt;

&lt;p&gt;Since then, they&amp;#8217;ve said the jury is now in place, and will report their results when they feel like it. Additionally, in April 2007, it was stated that there would be a publicly accessible demonstration of the technology in London, early July.&lt;/p&gt;

&lt;p&gt;And early July is upon us now.&lt;/p&gt;

&lt;h2&gt;Why the hype?&lt;/h2&gt;

&lt;p&gt;Well, if what they claim is true, Venezuela, Russia, and the Middle-East are seriously out of business. Oil would then remain useful mainly as lubrication, and as an ingredient of many substances.&lt;/p&gt;

&lt;p&gt;If their technology works, stock markets will collapse, whole countries will default on their obligations, and the nascent &amp;#8216;new cold war&amp;#8217; between Russia and NATO will be over.&lt;/p&gt;

&lt;h2&gt;The demo&lt;/h2&gt;

&lt;p&gt;Since &amp;#8216;energy out of thin air&amp;#8217; violates most of our understanding of physics, the scientific community is rightfully skeptic. It has been said that extraordinary claims require extraordinary evidence (which I dispute, btw - most new physics started out as small, hard to see effects), so the demo had better be pretty impressive.&lt;/p&gt;

&lt;p&gt;There is rampant speculation going on about the nature of the demo, and a few things are known.&lt;/p&gt;

&lt;p&gt;The demo will happen &amp;#8216;early July&amp;#8217;, and the public will be able to see the machine, talk to Steorn employees, and view the whole thing over the internet 24/7. Additionally, several people have been invited by Steorn to bring their screwdrivers to open up the device. Lots of people on the various forums have already announced they are bringing heat-sensitive cameras, magnetometers, RF spectrometers and other instruments to verify if any demonstrated device is truly operating without consuming power.&lt;/p&gt;

&lt;p&gt;The exact date and location of the demo remain unsure. Steorn has repeatedly stated they are not in it for the maximum amount of money, but that they want their technology to benefit developing countries, as well as being good for the environment.&lt;/p&gt;

&lt;p&gt;On Thursday the 7th, London hosts the &lt;a href="http://www.liveearth.org"&gt;Live Earth&lt;/a&gt; concert, which is all about the environment. This has prompted many to believe the demo will coincide with this concert.&lt;/p&gt;

&lt;p&gt;Information about Steorn comes from various sources: &lt;a href="http://www.steorn.com"&gt;their own homepage&lt;/a&gt;, the &lt;a href="http://freeenergytracker.blogspot.com"&gt;Free Energy Tracker Blog&lt;/a&gt;, the &lt;a href="http://dispatchesfromthefuture.com"&gt;Dispatches from the Future blog&lt;/a&gt;, &lt;a href="http://fizzx.com"&gt;the Fizzx forum&lt;/a&gt; and the &lt;a href="http://en.wikipedia.org/wiki/Steorn"&gt;relevant Wikipedia page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On these various pages, several anonymous or pseudonymous sources have stated contradictory things. It has been reported by a guy called &amp;#8216;MikeDuke&amp;#8217; that the device will be unveiled to the press on Monday the second of July and Tuesday the third, and might be available for viewing on Wednesday, but surely on Thursday. This is then all supposed to take place at the &lt;a href="http://www.kinetica-museum.org"&gt;Kinetica Museum&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://dispatchesfromthefuture.com/2007/06/orbo_at_kinetica_museum_next_week.html#comment-150"&gt;Another forum comment&lt;/a&gt; reports calling the Kinetica museum and being told they are hosting a private exhibition starting Thursday, about which they can&amp;#8217;t say a lot.&lt;/p&gt;

&lt;p&gt;Then there is a second poster who says the demo will be held at the Science Museum, starting Friday, and that it will only be announced on Thursday.&lt;/p&gt;

&lt;p&gt;Finally, and this one is furthest out, there is an &lt;a href="https://www.blogger.com/comment.g?blogID=2087544938250245173&amp;amp;postID=2214352649506994160"&gt;anonymous post&lt;/a&gt;
 stating the demo will be of the &amp;#8216;rev4.c&amp;#8217; device, and that it will produce 720kW! Not only will it do this, it will emanate a &amp;#8216;distortion field&amp;#8217;!&lt;/p&gt;

&lt;h2&gt;So what will happen?&lt;/h2&gt;

&lt;p&gt;As said, speculation is rampant. Many are predicting there will be no demo, or that it will be unconvincing. I&amp;#8217;m personally on the edge of my seat, having nearly booked a flight to London to see for myself, but at the last minute decided not to go because it is unsure when the demo will be available.&lt;/p&gt;

&lt;p&gt;If there is more clarity, I&amp;#8217;ll go over and report here.&lt;/p&gt;</description>
      <pubDate>Sun, 01 Jul 2007 20:28:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:b05649bd-2355-49fc-b6ce-cc4bb1250861</guid>
      <author>bert.hubert@netherlabs.nl (bert hubert)</author>
      <link>http://blog.netherlabs.nl/articles/2007/07/01/steorn-demo-our-own-iphone-moment</link>
    </item>
  </channel>
</rss>
