= Rough Cut at v0.01 Proof of Concept Feature Set =
[[PageOutline]]
This is a proposed version 0.01 product as a proof of concept. The
intent is not to have a very useful product, but rather to gain
confidence in our architecture, tools, and team. The result is intended
to be the basis for further development into a more useful second stage,
in the sense of
[https://en.wikipedia.org/wiki/Agile_software_development agile development].
It very intentionally is not a
[https://en.wikipedia.org/wiki/Waterfall_model waterfall design],
The interface between the Green and Yellow layers is seen as an important design
inflection.
Some code will be in C in the Green (auxiliary core) because we can get it open
source out of the can. for v.2 (or whatever) we would move it down to the FPGA in
Verilog.
== FPGA Overview ==
[[Image(HW_sketch_v0001.png)]]
\\
\\
== Sketch of TRNG Chain ==
[[Image(HW_RNG.png)]]
\\
\\
== Off-FPGA ==
* Persistent Storage
* For Keys and Time
* Or the battery for tamper wipe is big enough to hold the FPGA up
* Or the Green processor has enough non-volatile store
* Entropy Source
* Realtime Clock
* Tamper Mechanism
== Layers ==
{{{
#!html
Blue / FPGA
}}}
* TRNG
* !BigNumber, Modular, & Exponentiation (expose to green for RSA)
* SHA-256
* AES-128
* EC for ECDH. Curve3617 would be nice, but whatever we can get open source to start
* OpenRISC Core or ARM to support Green (maybe !FreeScale from Bunnie)
{{{
#!html
Green / On-Chip Core
}}}
* RSA 2048 & 4096 (move to blue later) [ 1024 for Tor? ]
* MACs: HMAC, 1305, uMAC
* DH (move to blue later)
* Device Activation, Move Authorization, Wiping
{{{
#!html
Yellow / Off-Chip Support
}}}
* Interface to Red
* PKCS!#8
* PKCS!#11
* PGP Support
* X.509 and PGP
* PKCS!#11 for POLA resistance
* No PKCS!#10 because it will take a year
* Backup may be just dump/restore of the whole FPGA/!CoreState
{{{
#!html
Red / Applications
}}}
* X.509 CA
* DNSSEC
* PGP (asymmetric key sign/verify + symmetric message encryption/decryption)
* Tor consensus(?)
== Issues in v0.01 ==
* License of tool chain to build
* License for borrowed components (open cores, open fpga)
* License for result
* What we build ourselves - BSD
* What components we ship - life is compromise
* Toolchains, Verilog, C, ...
* FPGAs and ASICs use a Verilog-based toolchain. There are no mature open
Verilog compilers so the [http://www.dwheeler.com/trusting-trust/ DDC approach]
will not work. Net-list optimization is also an issue. We're looking into this,
but it's going to be really hard. Research for v2.
* Protoyping platform
* [http://www.bunniestudios.com/blog/?p=3265 Bunnie's Novena laptop]
* Altera Evaluation Board
* RTC, external connectivity to et some sort of assured time
* Repository - too many git junkies. Keep main repo on our server for the security boundary. Can mirror on !GitHub to be socially cool.
* Emacs or vi (no Rob, not TECO) :)