Fix factory-reset.
[gnuk/gnuk.git] / NEWS
diff --git a/NEWS b/NEWS
index 606c98f..6e21a55 100644 (file)
--- a/NEWS
+++ b/NEWS
 Gnuk NEWS - User visible changes
 
+* Major changes in Gnuk 1.2.4
+
+  Released 2017-05-12, by NIIBE Yutaka
+
+** Flash ROM security fix
+The partial content of flash ROM might be exposed when scanning of
+data object had a problem.  Added boundary check and changed layout of
+flash ROM.
+
+
+* Major changes in Gnuk 1.2.3
+
+  Released 2017-02-02, by NIIBE Yutaka
+
+** ECC key generation on the device
+Bug fixed.
+
+** Upgrade of Chopstx
+We use Chopstx 1.3.
+
+
+* Major changes in Gnuk 1.2.2
+
+  Released 2016-10-15, by NIIBE Yutaka
+
+** Change of SELECT FILE behavior 
+Gnuk used to reply AID upon SELECT FILE command.  Now, to be compatible
+to original OpenPGP card, it returns nothing but status code of 9000.
+
+** Added feature of Factory Reset as compile time option
+Original OpenPGP card has the feature, and Gnuk is now configurable to
+support the feature.
+
+** Upgrade of Chopstx
+We use Chopstx 1.2.
+
+
+* Major changes in Gnuk 1.2.1
+
+  Released 2016-07-11, by NIIBE Yutaka
+
+** Upgrade of Chopstx
+We use Chopstx 1.1.
+
+
+* Major changes in Gnuk 1.2.0
+
+  Released 2016-05-20, by NIIBE Yutaka
+
+** Upgrade of Chopstx
+We use Chopstx 0.11.
+
+** Support authentication status reset by VERIFY command.
+This feature is described in the OpenPGPcard specification V2.2 and
+V3.1, which allow user to reset authentication status.
+
+** S2K algorithm tweak to defeat "copycat" service of MCU.
+Even if the existence of some services copying MCU, your private key
+will not be controled by others, in some cases.
+
+** Bug fix for secp256k1 and NIST P-256.
+Bugs in basic computation were fixed.
+
+** Bug fix for bignum routines.
+Bignum routine update from upstream (failure doesn't occur for our RSA
+computation, though).  Another fix for mpi_exp_mod.
+
+
+* Major changes in Gnuk 1.1.9
+
+  Released 2015-09-18, by NIIBE Yutaka
+
+** Bug fix for Ed25519 and Curve25519
+When registering key, wrong operations were not detected correctly.
+This is fixed.
+
+
+* Major changes in Gnuk 1.1.8
+
+  Released 2015-09-17, by NIIBE Yutaka
+
+** Upgrade of Chopstx
+We use Chopstx 0.10, which supports Nitrokey-Start.
+
+** Card serial number
+The way to determine a serial number of Gnuk Token for card has been
+changed.  It uses the 96-bit unique bits of MCU, but the portion for
+use is changed.
+
+** USB Reset handling
+USB reset lets Gnuk Token restart.  It would not be perfect, when it's
+during computation of some function, but most parts are protected by
+Chopstx's feature of cancellation.
+
+
+* Major changes in Gnuk 1.1.7
+
+  Released 2015-08-05, by NIIBE Yutaka
+
+** Upgrade of Chopstx
+We use Chopstx 0.08, which supports STM32 Nucleo and ST Dongle.
+
+
+* Major changes in Gnuk 1.1.6
+
+  Released 2015-07-21, by NIIBE Yutaka
+
+** USB SerialNumber String
+The way to determine a serial number of Gnuk Token has been changed.
+It uses the 96-bit unique bits of MCU, but the portion for use is
+changed.
+
+** Upgrade of Chopstx
+We use Chopstx 0.07, which supports STM32 Primer2 and CQ STARM, too.
+
+** Experimental Curve25519 support.
+
+Gnuk can support Curve25519 (for decryption).  Note that this is
+pretty much experimental, and subjects to change.  The low level code
+is somehow stable, but there are no consensus in higer level.
+Especially, OID in the key attribute would be changed in future.
+
+** No --enable-keygen option
+It is now standard feature included always.  Note that it doesn't mean
+this feature is stable now.  It is becoming stable, hopefully.
+
+
+* Major changes in Gnuk 1.1.5
+
+  Released 2015-06-03, by NIIBE Yutaka
+
+** upgrade_by_passwd.py is not so noisy any more.
+Since it's getting stable, no debug output any more.
+
+** Maple mini support.
+Although its random number generation is not tested, Maple mini
+support is added.
+
+** Windows interoperability fix.
+1.1.x (0 to 4) didn't work with Windows because of INTERRUPT transfer.
+It's fixed and it works now.
+
+** OpenPGPcard specification v3.0 compatibility.
+OpenPGPcard specification v3.0 now include NIST curves (and other
+curves) and ECDSA and ECDH operations are defined.  Gnuk follows
+this specification.
+
+
+* Major changes in Gnuk 1.1.4
+
+  Released 2014-12-15, by NIIBE Yutaka
+
+** Experimental RSA-4096 support.
+Although it takes too long (more than 8.7 second), RSA-4096
+is now implemented.
+
+** ECDH support.
+ECDH is now supported.  You need development branch (master)
+of GnuPG to use this feature.
+
+** ECDSA and EdDSA is not that experimental.
+You don't need to edit DEFS variable in src/Makefile.
+
+** STM8S_DISCOVERY is not supported any more.
+It's flash ROM size (64KiB) is a bit small to have all features of
+Gnuk now.  If you manually edit code to limit the size of executable,
+it still could run Gnuk, though.
+
+** configure's default target is now FST-01.
+Receiving reports from those who complain default target, I
+reconsidered.  Those who has Olimex STM32 H103 usually has JTAG
+debugger, while FST-01 users don't.  So, to be safe, the default
+target is now FST-01, instead of Olimex STM32 H103.
+
+
+* Major changes in Gnuk 1.1.3
+
+  Released 2014-04-16, by NIIBE Yutaka
+
+** Experimental EdDSA support.
+After configure, you can edit the DEFS variable in src/Makefile, so
+that Gnuk can support EdDSA with Ed25519 (for authentication).  Note
+that this is pretty much experimental, and subjects to change.
+
+
+* Major changes in Gnuk 1.1.2
+
+  Released 2014-03-07, by NIIBE Yutaka
+
+** Experimental ECC support for secp256k1.
+After configure, you can edit the DEFS variable in src/Makefile, so
+that Gnuk can support ECDSA with NIST P256 (for authentication), and
+ECDSA with secp256k1 (for signature).  Note that this is pretty much
+experimental, and subjects to change.
+
+
+* Major changes in Gnuk 1.1.1
+
+  Released 2013-12-25, by NIIBE Yutaka
+
+** Tools and test suite now work with PyUSB 1.0, too.
+It only worked with PyUSB 0.4.3, but it works with PyUSB 1.0 too.
+
+** Improved RSA routine
+Working memory for RSA computation is taken from stack instead of
+malloc (mostly).
+
+
+* Major changes in Gnuk 1.1.0
+
+  Released 2013-12-20, by NIIBE Yutaka
+
+** Overriding key import / generation (Incompatible Change)
+Gnuk supports overriding key import or key generation even if keys are
+already installed.  Note that it will result password reset of user.
+
+** RSA key generation improvement
+Prime number generation is done by Fouque-Tibouchi method.
+
+** Security fix for RSA computation 
+PolarSSL had a vulnerability against timing attack.  For detail,
+please see:
+
+  http://www.gniibe.org/memo/development/gnuk/polarssl/polarssl-rsa-blinding
+
+** Improved RSA routine
+RSA computation has been improved using MPI square routine.  Note that
+you should not adopt this modification for general purpose computer,
+as this change is weak against the Yarom/Falkner flush+reload cache
+side-channel attack.
+
+** Upgrade of NeuG
+The true random number generator was upgraded to the one of NeuG 1.0.
+
+** Replacement of kernel (thread library)
+Instead of ChibiOS/RT, we now use Chopstx.
+
+** Removal of obsolete features
+The feature named pin-dial, which is pin input with hardware
+enhancement (with rotary encoder) is removed.
+
+
+* Major changes in Gnuk 1.0.4
+
+  Released 2013-03-15, by NIIBE Yutaka
+
+** Relocatable reGNUal, really 
+In 1.0.3, reGNUal was not fully relocatable.  It worked loaded on higher
+address, but didn't work for lower address.  This was fixed.
+
+
+* Major changes in Gnuk 1.0.3
+
+  Released 2013-03-14, by NIIBE Yutaka
+
+** Relocatable reGNUal
+The upgrade helper, reGNUal, is now relocatable (other than the first
+vector table).  It runs well when loaded at different address.  This
+makes the upgrade procedure more stable.
+
+** Compilation by newer GNU Toolchain
+Now, Gnuk can be compiled with newer GNU Toolchain, specifically GCC
+4.7.x and GNU Binutils 2.22.  Old versions of Gnuk had problem for
+ChibiOS_2.0.8/os/ports/GCC/ARMCMx/cmsis/core_cm3.c, which was fixed.
+
+** Data object 0x0073
+Data object 0x0073 is now available.
+
+
+* Major changes in Gnuk 1.0.2
+
+  Released 2013-02-15, by NIIBE Yutaka
+
+** Product string is now "Gnuk Token" (was: "FSIJ USB Token")
+Since the USB ID Repository suggests not including vendor name
+in product string, we changed the product string.
+
+** New tool (experimental): test/upgrade_by_passwd.py
+This is the tool to install new firmware to Gnuk Token, provided
+that it's just shipped from factory (and nothing changed).  It
+authenticate as admin by factory setting, register a public key
+for firmware upgrade, and then, does firmware upgrade.
+
+** tool/gnuk_upgrade.py supports '-k' option
+It now supports RSA key on the host PC (not the one on the Token).
+
+** New tool: tool/get_raw_public_key.py
+This is a script to dump raw data of RSA public key, which is useful
+to register to Gnuk Token as a firmware upgrade key.
+
+** New tool: tool/gnuk_remove_keys_libusb.py
+This tool is libusb version of gnuk_remove_keys.py.  Besides, a bug in
+gnuk_remove_keys.py was fixed.
+
+** CCID protocol fix
+When time extension is requested by Gnuk Token to host PC, argument
+field was 0, which was wrong (but it works for most PC/SC
+implementations and GnuPG internal driver).  Now it's 1, which means
+1*BWT.
+
+** OpenPGP card protocol enhancement
+Now, VERIFY command accepts empty data and returns remaining trial
+counts, or 0x9000 (OK) when it's already authenticated.  This is
+useful for application to synchronize card's authentication status.
+
+
+* Major changes in Gnuk 1.0.1
+
+  Released 2012-08-03, by NIIBE Yutaka
+
+** USB SerialNumber String
+In 1.0, it has a bug for USB SerialNumber String.  It has been fixed
+in 1.0.1.
+
+
+* Major changes in Gnuk 1.0
+
+  Released 2012-07-21, by NIIBE Yutaka
+
+This is bug fixes only release.
+
+
+* Major changes in Gnuk 0.21
+
+  Released 2012-07-06, by NIIBE Yutaka
+
+** Test suite
+A functinality test suite is added under test/ directory.
+
+** New tool: stlinkv2.py
+This tool is SWD flash ROM writer with ST-Link/V2.
+
+** New tool: usb_strings.py
+This tool is to dump USB strings, which include revision detail and config
+options.
+
+** Protection improvement (even when internal data is disclosed)
+Even if PW1 and PW3 is same, content of encrypted DEK is different
+now.
+
+
+* Major changes in Gnuk 0.20
+
+  Released 2012-06-19, by NIIBE Yutaka
+
+** Key generation feature added
+Finally, key generation is supported.  Note that it may be very slow.
+It may take a few minutes (or more) to generate two or three keys,
+when you are unlucky.
+
+** DnD pinentry support is deprecated
+Once, DnD pinentry was considered a great feature, but it found that
+it is difficult to remember moves of folders.
+
+** gnuk_upgrade.py assumes using another token for authentication
+Use of another token for authentication is assumed now.  This is
+incompatible change.  Note that when you upgrade a token of version
+0.19 to 0.20 (or later), you need gnuk_upgrade.py of version 0.19.
+
+** KDF (Key Derivation Function) is now SHA-256
+Keystring is now computed by SHA-256 (it was SHA1 before).
+
+** Protection improvements (even when internal data is disclosed)
+Three improvements.  (1) Even if PW1 and Reset-code is same, content
+of encrypted DEK is different now.  (2) DEK is now encrypted and
+decrypted by keystring in ECB mode (it was just a kind of xor by
+single block CFB mode).  (3) Key data plus checksum are encrypted in
+CFB mode with initial vector (it will be able to switch OCB mode
+easily).
+
+** LED display output change
+LED display output by Gnuk is now more reactive.  It shows status code
+when it gets GET_STATUS message of CCID.  When you communicate Gnuk by
+internal CCID driver of GnuPG (instead of PC/SC), and enable
+'debug-disable-ticker' option in .gnupg/scdaemon.conf, it is more
+silent now.
+
+
+* Major changes in Gnuk 0.19
+
+  Released 2012-06-06, by NIIBE Yutaka
+
+** Firmware upgrade feature
+Firmware upgrade is now possible after the public key authentication
+using EXTERNAL AUTHENTICATE command of ISO 7816.  Firmware upgrade is
+done together with reGNUal, the firmware upgrade program.
+
+** System service blocks at the beginning of flash ROM.
+Once flash ROM is protected, first 4-KiB cannot be modified.  Gnuk
+use this area for "system service".  Note that this area will not
+be able to be modified by firmware upgrade (or by any method).
+
+** New tool: gnuk_upgrade.py
+The tool gnuk_upgrade.py is to do public key authentication using
+gpg-agent and send reGNUal to Gnuk.  Then, we put new Gnuk binary
+into the device with reGNUal.
+
+** USB strings for revision detail, configure options, and system service.
+USB strings now have more information.  There are revision detail
+string, configure options string, system service version string, as
+well as vendor string and product string.  These strings could be
+examined to check Gnuk Token.
+
+
 * Major changes in Gnuk 0.18
 
-  Released 2012-05-XX, by NIIBE Yutaka
+  Released 2012-05-15, by NIIBE Yutaka
 
 ** New mandatory option '--vidpid' for configure
 You must specify USB vendor ID and product ID for Gnuk.
 The file GNUK_USB_DEVICE_ID lists valid USB device IDs.
 
+** New tool: gnuk_remove_keys.py
+The tool gnuk_remove_keys.py is to remove all keys in Gnuk Token
+and reset PW1 and RC (if any).
+
 ** New USB stack
 Gnuk used to use USB stack of USB-FS-Device_Lib by ST.  Now, it has
 original implementation.  Hopefully, size and quality are improved.
@@ -18,7 +426,7 @@ original implementation.  Hopefully, size and quality are improved.
   Released 2012-02-02, by NIIBE Yutaka
 
 ** USB CCID/ICCD protocol implementation change
-Gnuk now only supports short APDU level exchange, not support.
+Gnuk now only supports short APDU level exchange, not supporting
 extended APDU level exchange.  Thus, Gnuk could be compatible to older
 host side software implementation.