One of the many bits of technology that attracts paranoia in a post-Snowden era is random number generation, and a New Zealand developer hopes to help solve that with an all-open entropy generator.
As often happens in Middle Earth New Zealand these days, Paul Campbell of Moonbase Otago is invoking Tolkien by naming the project OneRNG, but it's a got a dead-serious aim: to deliver better entropy to crypto systems in such a way that users can verify that they're getting what they expect.
The other aim is to make it low-cost, because while high-throughput entropy generators exist, Campbell told The Register, but they can cost a thousand dollars. His target for OneRNG is US$50.
OneRNG contains two sources of entropy, both of them fairly well-established as offering good randomness.
First, there's an avalanche diode, which generates entropy from the quantum noise of its own operation. “That's not some scary quantum effect that's hard to understand”, Campbell said, “but it's a a particularly random type of noise”.
Second, there's a radio receiver, which Campbell explained to Vulture South picks up noise, of which OneRNG retains the least significant bit, so as “to guard against a third party generating a signal” to try and defeat the randomness of the entropy.
To add to the randomness, Campbell said, the radio receiver frequency also bounces around randomly.
Users can also turn on an optional “whitening” of the signal which “smears the bits around in time”. The aim of whitening is to eliminate any kind of bias or correlation.
In Linux, for example, the entropy is fed into the rngd (random number generator) daemon.
Verify and validate
The main game, Campbell said, is the openness of the system: “Before we release it we will not only release the firmware, but the source for all the software, and all the hardware documentation. Anyone can reproduce it, make their own, look at the board, make sure the traces on the board match the traces on the hardware layout, and make sure the layout matches the schematic”, he explained.
Even if spooks intercepted a unit between Moonbase Otago and the user, the customer would be able to detect any changes. If people are going to do their own crypto, they have to verify everything, he said: “nobody should trust me”.
He said that even though chip vendors build entropy sources onto their microprocessors, it's hard for the outsider to verify that they can trust the entropy they receive (even in the absence of a specific accusation of compromise).
Another aspect of the design is that the OneRNG has a dedicated programming port, so it can't be tricked into running compromised software received over the USB port. There's a mechanism allowing the user to check the code on their device against the original signature, so that if it's been compromised, OneRNG won't start.
For third-party software, OneRNG can only be programmed via a dedicated programmer port, the hardware for which Campbell says his company will ship at cost.
An external entropy generator also provides more entropy, in terms of bytes per second, than the kernel gets simply from /dev/random. “Dev/random provides a few bytes per second,” he told Vulture South. “We provide about 64k bytes per second”.
That, he said, is important if someone's running a Web server that needs to deliver lots of SSL sessions. Once the server outpaces /dev/random, it slows down, so an external entropy generator becomes a must.
He pointed out a design trade-off: “We don't provide a full eight bits per byte of entropy,” he said, “but around 7.8 bits per byte.” To get the next step up, Campbell explained, would have increased the cost by a factor of ten.
The company will be showing off OneRNG at Kiwicon in December and January's Linux Australia conference (which is being held in Auckland). Directly after Kiwicon, Moonbase Otago will launch a crowd-funding campaign through which it'll initially be selling the product.
Small orders will be made by Moonbase Otago itself, he said – “we have a small pick-and-place machine” – but a large order would need outsourced manufacturing which will take longer to deliver.