# ChaosKey This is a hardware True Random Number Generator that attaches via USB. ## Version 1.0 ## 1.0 is the first production version of ChaosKey. The first run of 1000 units is expected sometime around August, 2016. ### Version 1.0 Hardware ### * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip * ARM Cortex-M0 MCU * 32k Flash * 6k RAM * USB 2.0 Full Speed * Crystal-less operation * 20V noise source * AP3015A boost regulator * back-to-back 3904 transistor noise * [OPA356](http://www.ti.com/product/opa356) op amp * 200MHz GBP Here's a circuit diagram of the noise source: ### Version 1.0 Bits ### Source code for the firmware, flash loader and a utility to pull raw bits from the noise source are available here: [AltOS Git Repository](http://git.gag.com/?p=fw/altos;a=summary) Hardware designs using [gEDA](http://www.geda-project.org/) are available here: [ChaosKey Hardware Design Files](http://git.gag.com/?p=hw/chaoskey;a=summary) ## Version 0.3 ## This one uses the better noise source coupled with an op amp that provides 2MHz of bandwidth at a gain of 100, offering linear frequency response at a million samples per second. A photo of prototype version 0.3: Here's a circuit diagram of the noise source: Version 0.3 uses the same hardware design as version 1.0, except that it uses a QFP package version of the processor instead of the QFN used in 1.0, and hence needs a larger circuit board. ## Version 0.2 ## This version uses a better noise source, but the single transistor amp designed to get from the 20mV noise source to a digital value doesn't provide enough bandwidth, so the resulting signal seen by the CPU has poor frequency response. Here's a photo of prototype version 0.2: ### Version 0.2 Hardware ### * [STM32F042](http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1574/LN1823?icmp=stm32f0x2-line_pron_pr_jan2014&sc=stm32f0x2-pr) System-on-Chip * ARM Cortex-M0 MCU * 32k Flash * 6k RAM * USB 2.0 * Crystal-less operation * 20V noise source * AP3015A boost regulator * back-to-back 3904 transistor noise ## Version 0.1 ## These are photos of prototype version 0.1: ### Version 0.1 Hardware ### * [NXP LPC11U14](http://www.nxp.com/products/microcontrollers/cortex_m0_m0/LPC11U14FHI33.html) System-on-Chip * ARM Cortex-M0 MCU * 32k Flash * 6k RAM * USB 2.0 * 8 12-bit analog inputs * I2C, SPI, async serial * digital I/O * ZXRE1004 zener diode noise source * MCP6L92 dual op-amp ## Software ## * Firmware Features * [AltOS](../AltOS/) is written mostly in C with some ARM assembler * Tools Used * [gEDA](http://www.gpleda.org/) for schematic capture and PCB layout * [GCC](http://gcc.gnu.org/) compiler and source debugger * Licenses * The hardware is licensed under the [TAPR](http://www.tapr.org) [Open Hardware License](http://www.tapr.org/ohl.html) * The software is licensed [GPL version 2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)