Key size is an important factor, but it is a single factor (among others).

I care how/where to put my private keys, and how I can control crypto computation.

Smartcard: better control of crypto computation
  but... card readers tend to be proprietary implementations
         card itself tends to be proprietary implementation
         crypto accelerator(s) tend to require NDA to access tech doc

OpenPGP card protocol:
    Specification is publicly available.
    Free implementation of driver (in SCDaemon of GnuPG)

Dilemma:
  PAST:    Better control v.s. (respecting users') computing freedom
      |
      V
  NOW:  Longer key length v.s better control of private key by Free Software
      |
      V
  FUTURE:  No dilemma
    
   Towards:
   Ed25519 / Curve25519
   Better control *and* computing freedom *and* conform to culture/practice

Gnuk, FST-01, and NeuG
======================

Gnuk: USB Token firmware under GPLv3, OpenPGPcard compatible
      RSA 2048-bit, for STM32F103

FST-01: Reference hardware (PCB design under CC BY-SA 3.0)

NeuG: True Random Number Generator for STM32F103, under GPLv3

FSM-55: Happy Hacking Board with 5x5 LED Matrix for fun


Code availability
-----------------

git.gniibe.org
gitorious.org


Products availability
---------------------

* FST-01

  at Seeed Bazzar:  www.seeedstudio.com

  USD35 (bare board)
  USD36 (transparent tube)
  USD37 (enclosure, but open)

  It comes with Gnuk (version 1.0.1), installed.

  gra cvrprf / zbagu --> fbyq gjb unaqerqf sbhegl be fb


* (NeuG 1.0 on FST-01) NeuG standalone device in Japan

  On-demand production
  
  JPY4000.-
  (November 2013 - June 2014)

  bar cbvag svir cvrprf / zbagu --> fbyq svsgrra be fb
  
  Selling TRNG devices would be difficult.  That would be a part of reasons why famous TRNG device is not available these days.  You could compare the numbers of Gnuk on FST-01, and NeuG on FST-01.


Gnuk
----

Written in C.   For STM32F103.

NOTE: It's not Crypto "one-time password" Token.
      It's for OpenPGP Token.
      By Free Software; Gnuk development requires only Free Software
                                (GNU Toolchain, Python, etc.)
      For Free Software; Gnuk supports GnuPG
      Of Free Software; Gnuk is distributed under GPLv3+

Version 1.0: ChibiOS/RT by Giovanni Di Sirio
             PolarSSL for AES, RSA by Paul Bakker
             SHA2 by Dr. Brian Gladman

Version 1.1.x: Chopstx by me
             PolarSSL for AES, RSA by Paul Bakker
             SHA2 by Dr. Brian Gladman
             Ed25519 / Curve25519 by me

NeuG
----

The name of a set of routine for TRNG.  Used in Gnuk and
NeuG standalone device.

Written in C.  For STM32F103.  (Perhaps it could be STM32???, too).

Use A/D converter outputs as a source of entropy.  Use Built-in
Temperature Sensor and Built-in Voltage reference,
unconnected analog inputs (IN0, IN1) as analog inputs.

SHA256 conditioning component


NIST SP 800-90B (draft): Full Entropy Source

Tested by:
NIST STS 2.1.1, Dieharder 3.31, Test U01 1.2.3, PractRand 0.90


NeuG standalone device
----------------------
USB CDC (Communication Device Class)
/dev/ttyACM0
(plain) byte stream

70KiB/sec

Three kinds of output can be selected:

   raw ADC data
   after CRC32 filter
   after SHA256 filter


Standard usage of NeuG standalone device on GNU/Linux
-----------------------------------------------------

No driver required (it's byte strem from /dev/ttyACM0)
Just use rngd of rng-tools


Other OpenPGP card implementations
----------------------------------

Different implementations are suported by SCDaemon of GnuPG

  * OpenPGP card
  * Gnuk Token
  * CryptoStick (which use OpenPGP card)
  * YubiKey's
  * SmartCard-HSM
  * Some Java implemention(s) of Free Software is also available


Firmware Upgrade by USB
-----------------------

Firmware upgrade is always possible by JTAG/SWD debugger.

It is also supported by Gnuk/NeuG itself through USB. but if it fails, you will need JTAG/SWD debugger.


DIY
---

http://www.fsij.org/gnuk/howto-make-gnuk-usb-token-by-stm32-part-of-stm8s-discovery-kit.html

History
-------

2004/5?: Got OpenPGP card v1 @Karlsruhe
2008: AtMEGA RSA 1024 5sec @ 20MHz, Talk at FSFS @ Kerala
2009: Talk/Demo at Linux Conference @Tokyo
2010: STM32F103, 2.0sec @ 72MHz ---> Gnuk, Talk/Demo at FOSS ASIA @ Saigon
      Joined GnuPG development
2011: Discovered good DIY way for Gnuk: STM8S Discovery Kit
      Talk at LinuxCon @ Yokohama
      FST-01 designed
2012: Talk at FOSDEM @ Belgium
      Gnuk version 1.0 released
      Talk at FISL13 @ Porto Alegre
      FST-01 manufactured with Gnuk 1.0.1
2013: NeuG version 1.0 released
      Campaign for better entropy in Japan
2014: Talk/Demo at Debconf @ Portland
      FSM-55 to be in production

* C-u M-x rot13-region helps

EOF