Operation

Each of the two random noise sources of the SwiftRNG are analog electronic circuits that generate random electronic signals from reverse-biased Zener diodes using an avalanche effect. The electrical noise generated by each random source is independently amplified and converted into digital values as bytes. The bytes produced are combined to produce a low-bias, random byte stream.

To further reduce bias, the resulting byte stream is processed by a conditioning component with conditioning functions such as SHA256 or SHA512 (Marsaglia’s XorShift64 is available when used with SwiftRNG device versions 1.2 and up).

The SwiftRNG implements an embedded health check test (HCT) that continuously monitors the quality of the random noise sources immediately after the electrical noise is digitized and before any further processing takes place.

When using SwiftRNG v1.2+ and the latest software API updates, it’s possible to retrieve frequency table snapshots for each of the noise sources for checking the frequency distribution and quality of the random numbers.

The embedded monitoring logic will notify the host computer software if it detects an unexpected deviation from normal operation or a complete malfunctioning of any of two random sources. This device is completely powered by a USB bus. It doesn’t require an additional power source, and it’s protected by an overload protection circuit.

In addition, ‘Repetition Count Test’ and ‘Adaptive Proportion Test’ tests are continuously performed through a provided SwiftRNG Software API on the host computer to ensure the quality of the final random bytes retrieved through the USB interface.

All SwiftRNG devices are equipped with ESD protection and EMI filtering circuits. After the device is plugged into a USB host, it becomes ready to accept commands in less than a second (this time it’s used to run start-up tests and for waiting for USB driver readiness).

Supported systems

  • Linux (x86, x64, ARM)
  • or FreeBSD 12/13/14
  • or macOS (Intel and M1 chips)
  • Windows 10/11 (64-bit) and Windows Server 2016/2019 (64-bit)

Fabrication and testing

All SwiftRNG devices are designed and assembled in the United States. After each device is assembled, both random noise sources are individually inspected and verified using an oscilloscope and a spectrum analyzer to test if the electrical noise characteristics are within expected ranges. This device does not require any tune-up after it’s assembled, and the quality of the entropy produced remains constant. Before it’s shipped, random bytes produced by the SwiftRNG are tested by running well-known statistical tests for randomness such as: Diehard, Dieharder, NIST, and ENT, and frequency tables for each device are inspected.

SwiftRNG device API

The SwiftRNG device API operates based on 1 byte commands. The following table contains the complete command set and descriptions.

Command as ASCII char Response Description
x 16,000 random bytes + the status byte The response will contain 16,000 low biased (RAW) random bytes and an additional byte for the status byte. The status byte will contain 0 value for the success or an error code.
m 8 bytes of the device model + the status byte The response will contain 8 bytes for the device model as ASCII codes. The status byte will contain 0 value for the success or an error code.
v 4 bytes of the device version + the status byte The response will contain 4 bytes for the device version as ASCII codes. The status byte will contain 0 value for the success or an error code.
s 15 bytes of the device serial number + status byte The response will contain 15 bytes for the device serial number as ASCII codes. The status byte will contain 0 value for the success or an error code.
f 512 16-bit integers that represent frequency tables of the noise sources + the status byte The first 256 16-bit integers are frequency table of the first noise source and the next 256 16-bit integers are frequency table of the second noise source. The status byte will contain 0 value for the success or an error code. This command is only available when used with SwiftRNG devices versions 1.2 or higher.
< 16,000 random bytes + the status byte The response will contain 16,000 of RAW unprocessed and unmodified random bytes generated from the first noise source. The status byte will contain 0 value for the success or an error code. This command is only available when used with SwiftRNG devices versions 1.2 or higher.
> 16,000 random bytes + the status byte The response will contain 16,000 of RAW unprocessed and unmodified random bytes generated from the second noise source. The status byte will contain 0 value for the success or an error code. This command is only available when used with SwiftRNG devices versions 1.2 or higher.
0 status byte Set device power profile number 0 for the slowest speed and lowest power consumption. The status byte will contain 0 value for the success or an error code.
1 status byte Set device power profile number 1. The status byte will contain 0 value for the success or an error code.
2 status byte Set device power profile number 2. The status byte will contain 0 value for the success or an error code.
3 status byte Set device power profile number 3. The status byte will contain 0 value for the success or an error code.
4 status byte Set device power profile number 4. The status byte will contain 0 value for the success or an error code.
5 status byte Set device power profile number 4. The status byte will contain 0 value for the success or an error code.
6 status byte Set device power profile number 6. The status byte will contain 0 value for the success or an error code.
7 status byte Set device power profile number 7. The status byte will contain 0 value for the success or an error code.
8 status byte Set device power profile number 8. The status byte will contain 0 value for the success or an error code.
9 status byte Set device power profile number 9 for the highest speed and power consumption. The status byte will contain 0 value for the success or an error code.

Operating temperature (v1.4)

  • Maximum device operating temperature: 149°F (65°C). The temperature is measured on the bottom surface of the device in the middle area.
  • Maximum ambient temperature: varies between 80°F (27° C) and 100°F (38°C) based on the power profile number selected. The connected device should be located at least 1 inch away from other USB devices in an area with a free or forced air flow circulation.
Power Profile Number Maximum Ambient Temperature (SwiftRNG v1.4)
9 (default) 80°F (27°C)
8 82°F (28°C)
7 84°F (29°C)
6 86°F (30°C)
5 89°F (32°C)
4 93°F (34°C)
3 96°F (36°C)
2 100°F (38°C)
1 100°F (38°C)
0 100°F (38°C)

Other information

  • Device version currently in production: SwiftRNG v1.4
  • Weight: 21 grams (0.7 oz)
  • LeadFree/RoHS compliance: All parts and materials used in SwiftRNG devices are lead free and RoHS compliant
  • Power consumption: SwiftRNG draws no more than 200 mA (depending on the selected power profile) in active mode and 80 mA when inactive
  • Filled inside with an epoxy compound for protection and heat dissipation