Security is an arms race. The good guys come up with new ways to hide data and the bad guys eventually find ways to break in anyway. You update your security; they update their attacks. In true arms race fashion, both sides spend a lot of time and energy to stay right where they are.
And, like a grimmer sort of arms race, civilians can wind up among the casualties. In our case, engineers are learning that they need to include security features in their products whether they like it or not. Seemingly innocuous products like vending machines, home appliances, and handheld gizmos now often need security features because somebody might hack the device and make something unpleasant happen. As we design and sell more of these gizmos, their security becomes more of an issue.
So how do you bake in security when you’re not a security expert? Security is useful only if it’s done by experts; amateurs have no place here. Make-believe or recreational security measures are no security at all. The whole point is to thwart people who’ll probably spend more time hacking your security measures than you’ll spend putting them in. So it’s got to be good.
The key, so to speak, is to hire an expert. Or at least, to rent expert security IP and bake that into your chip, board, or box. And one good place to look for such expertise is… Holland.
Think of The Netherlands and you think tulips, chocolate, windmills, dikes, and Philips. It’s this last one that’s most relevant to today’s conversation. Philips Electronics has a habit of spinning off little companies, and among the recent diaspora is Intrinsic-ID, a little 15-person company that specializes in embedded security. Their knowledge can help you keep your knowledge to yourself.
Intrinsic-ID operates as a software and IP-licensing company. That is, they’ll sell you software or they’ll license their hardware IP—your choice. Either way, Intrinsic-ID’s security measures use flaky hardware to your advantage.
Basically, Intrinsic-ID uses the randomness of SRAM cells to generate random numbers, and from these, strong encryption keys. Anyone can make up a password, but guessing that password is almost as easy. To get a truly strong password, you need a random-number generator (RNG), and this is harder to achieve than it sounds. Most digital circuits are designed specifically not to exhibit random behavior. That’s called a bug. Even chips that have an RNG are usually really only pseudo-random, meaning they produce a specific string of numbers that only appears random to the casual observer. As deterministic digital circuits, their output isn’t truly random, and that makes them hackable.
Turning to the analog realm helps. Some chips use ring oscillators or other scary non-digital circuits to seed their RNGs, but even these have their weaknesses. Intrinsic-ID takes another route. Its hardware is entirely digital but relies on the randomness of uninitialized SRAM cells. Virgin SRAM is random in the best sense: it powers up with entirely random data that can’t be predicted and doesn’t follow any preset pattern. By tapping this handy resource, Intrinsic-ID is able to randomize key generation in a handy, convenient, and secure way.
If you’re designing at the chip level, you can include Intrinsic-ID’s hardware macro, which generates millions of random bits per second. Siphon off whatever bits you want, generate a key, and off you go. The circuitry is tiny, using only about 6000 gates of logic and 2KB of SRAM. It’s all digital, so you can synthesize it with any tool you want and fabricate it in any process.
Conversely, there’s also an all-software version that works on just about any existing hardware you’ve got. All it needs is a microcontroller or microprocessor and about 2KB of SRAM—pretty modest requirements by any measure. As before, the software uses uninitialized SRAM calls to generate a random bit stream, which can then be used to seed the encryption algorithm. The only requirement is that the SRAM be uninitialized, so it’s important that your boot firmware not scrub the SRAM until after Intrinsic-ID’s software has done its job.
The SRAM doesn’t even have to be dedicated to RNG. You can have it back once the key generation is done. After that it can be used normally, although once it’s been used it’s no good for randomization until the power has been cycled again.
In the simplest case, you can even use off-chip SRAM, although that kind of defeats the purpose. Any off-chip bus transactions could be easily probed, making key generation easily traceable. But just about any microcontroller or FPGA with on-chip SRAM should fit the bill.
Intrinsic-ID isn’t the only company to use semiconductor physics to its advantage. Cryptography Research in San Francisco does something roughly similar. Instead of SRAM cells, CR uses an “entropic array” of spaghetti logic that behaves differently for each chip. The California company also specializes in thwarting power-analysis break-ins, where dedicated hackers analyze minute differences in a chip’s power consumption as it encrypts or decrypts data, thereby gaining insight into the encryption algorithm. Power analysis is tremendously subtle, but not beyond the abilities of well-funded hackers.
Intrinsic-ID doesn’t address power-analysis attacks. It appeals more to engineers looking to add security to their low-cost systems. Its software-only option is especially appealing for systems already in the field. With just a couple of Kbytes of SRAM and a few changes to boot-up firmware, you can be generating random numbers and strong keys in no time. The effort is asymmetrical: it’s just a little work for you but a lot of work for hackers attempting to break into your system. And that’s really the whole point. Make the attempt not worth the effort, and you’ve succeeded in thwarting the bad guys. Once again, the arms race is moving in your favor.