Intel RNG

Introduction

Random Number Generators (RNGs) are an essential building block for many protocols and cryptographic algorithms. While Eastlake et al. [1] are discussing different ways of implementing Pseudo Random Number Generators, I got interested in the hardware based RNGs. This short article documents my activities in purchasing & setting up such a system and is hopefully of help to others interested in the same.

NO WARRANTY - Please notice, that this text comes without any warranty. Using the information in this text or referred articles is at your own risk!

Buying hardware

Of course the first step is to decide about which hardware to choose. The OpenBSD homepage for instance provides a list of supported cryptographic hardware [2]. Beside others it lists the Intel 82802AB firmware hub that gets further discussed in the following white paper [3]. According to the authors, the Intel chip provides more then 75 Kbit/sec of random data. It got build into i386 based PCs and gets supported by different operating systems [4]. So I decided to buy such a system (motherboard plus CPU) via eBay.

Stacy L. Millions - the author of the FreeBSD driver - mentioned at his homepage [5], that he got it to work with an Asus CUSL2 board. As it was reported to be tricky to know for shure if one has this RNG in his system [4], I decided to be on the save side and looked for this Asus board as well (it was also one of the most popular 370 socket based boards at eBay). I bought an Asus CUSL2-C (revision 1.02) which is - according to - Asus an extended version of the CUSL2 with Intel's 815EP chipset. Telling from the data sheet, it is supposed to come with the Intel 82802AB firware hub (FWH), but instead turned out to come with an alternative chip from SST.

SST chip in big Intel chip in big
figure 1: The alternative SST chip on the left and the Intel firmware hub (containing the hardware RNG) on the right

Reselling the board I started a survey under the eBay sellers and asked those who was offering a board with potential for naming me the writings on the chip on their board. The combinations I got involved with was:

Vendor / Board Writing on the chip Remark
Asus CUSL2
Intel
N82802AB
A0220225
(m)(c)'96'98
The chip was under a silver label with the following text on it:
AWARD 1998
PCI
PNP 686
248024981
Asus CUSL2-C
Intel
N82802AB
A0200056
(m)(c)'96'98
none
Asus CUSL2-C
SST
49LF004A
33-4C-NH
0052129-B
The chip was under a yellow label with the following text on it:
CSCA2
1006.A
NKI8
Dell E139761
(Rev. A01)
Intel
N82802AB
A0180098
(m)(c)'96'98
none
Epox EP-3S1A
Intel
N82802AB
A0220208
(m)(c)'96'98
none
Epox EP-3S1M
Intel
N82802AB
A0270145
(m)(c)'96'98
The chip was under a red label with the following text on it:
F9

I got the Dell board and now finally had the chip I was looking for. The Internet has some remarks that this board got manufactured for Dell by Intel (with some Dell specific adjustments), but I didn't find a final proof for that.

Hard- and Software setup

Assembling the system and powering it on for the first time (the pin layout of the front panel switch/LED connector is described in [6]), one will find, that the board has a standard ATX power connector but the pin wiring is different. This is a known problem, and [7] is providing an execellent description on how modify an ATX cable extender to act as an adaptor.

ATX power plug to dell motherboard adapter
figure 2: The custom made ATX power plug to dell motherboard adapter

On the software side, I decided to choose FreeBSD (version 4.10 RELEASE) as operating system, as the driver implementation [5] provides the /dev/rng device for reading straight from the RNG. In addition it also feeds random data into the entropy pool for the /dev/urandom device.

<to be continued/>

References

[1] Donald Eastlake III, S. Crocker and J. Schiller.   "RFC 1750: Randomness recommendations for security".   RFC, Internet Engineering Task Force, December 1994.
[2] The OpenBSD project.   "Cryptography in OpenBSD".   made available on homepage, December 2004.   http://www.openbsd.org/crypto.html#hardware last accessed January 1, 2005.
[3] Benjamin Jun and Paul Kocher.   "The Intel Random Number Generator".   White paper, Cryptography Research, Inc., April 1999.
[4] Andrew E. Schulman.   "Hardware RNGs".   made available on homepage, December 2003.   http://home.comcast.net/~andrex/hardware-RNG/ last accessed September 2, 2004.
[5] Stacy L. Millions.   "FreeBSD-Stable device driver for the Intel 82802 Hardware RNG".   made available on homepage, September 2002.   http://www.millions.ca/~stacy/82802rng.html last accessed September 2, 2004.
[6] Robert Hancock.   "Dell Dimension Front Panel Connector".   made available on homepage.   http://www.roberthancock.com/dell/fpconn.htm last accessed October 2, 2004.
[7] Doug Mitchell.   "How to Use Your Dell Case with a Real Motherboard".   made available on homepage, October 2001.   http://duhvoodooman.com/mitchedo/Dell/casemods.htm last accessed October 2, 2004.


Document version 0.34; last updated on 2006-09-02