configure default change
[gnuk/gnuk.git] / NEWS
1 Gnuk NEWS - User visible changes
2
3 * Major changes in Gnuk 1.1.4
4
5   Released 2014-12-13, by NIIBE Yutaka
6
7 ** Experimental RSA-4096 support.
8 Although it takes too long (more than 8.7 second), RSA-4096
9 is now implemented.
10
11 ** ECDH support.
12 ECDH is now supported.  You need development branch (master)
13 of GnuPG to use this feature.
14
15 ** ECDSA and EdDSA is not that experimental.
16 You don't need to edit DEFS variable in src/Makefile.
17
18 ** STM8S_DISCOVERY is not supported any more.
19 It's flash ROM size (64KiB) is a bit small to have all features of
20 Gnuk now.  If you manually edit code to limit the size of executable,
21 it still could run Gnuk, though.
22
23 ** configure's default target is now FST-01.
24 Receiving reports from those who complain default target, I
25 reconsidered.  Those who has Olimex STM32 H103 usually has JTAG
26 debugger, while FST-01 users don't.  So, to be safe, the default
27 target is now FST-01, instead of Olimex STM32 H103.
28
29
30 * Major changes in Gnuk 1.1.3
31
32   Released 2014-04-16, by NIIBE Yutaka
33
34 ** Experimental EdDSA support.
35 After configure, you can edit the DEFS variable in src/Makefile, so
36 that Gnuk can support EdDSA with Ed25519 (for authentication).  Note
37 that this is pretty much experimental, and subjects to change.
38
39
40 * Major changes in Gnuk 1.1.2
41
42   Released 2014-03-07, by NIIBE Yutaka
43
44 ** Experimental ECC support for secp256k1.
45 After configure, you can edit the DEFS variable in src/Makefile, so
46 that Gnuk can support ECDSA with NIST P256 (for authentication), and
47 ECDSA with secp256k1 (for signature).  Note that this is pretty much
48 experimental, and subjects to change.
49
50
51 * Major changes in Gnuk 1.1.1
52
53   Released 2013-12-25, by NIIBE Yutaka
54
55 ** Tools and test suite now work with PyUSB 1.0, too.
56 It only worked with PyUSB 0.4.3, but it works with PyUSB 1.0 too.
57
58 ** Improved RSA routine
59 Working memory for RSA computation is taken from stack instead of
60 malloc (mostly).
61
62
63 * Major changes in Gnuk 1.1.0
64
65   Released 2013-12-20, by NIIBE Yutaka
66
67 ** Overriding key import / generation (Incompatible Change)
68 Gnuk supports overriding key import or key generation even if keys are
69 already installed.  Note that it will result password reset of user.
70
71 ** RSA key generation improvement
72 Prime number generation is done by Fouque-Tibouchi method.
73
74 ** Security fix for RSA computation 
75 PolarSSL had a vulnerability against timing attack.  For detail,
76 please see:
77
78   http://www.gniibe.org/memo/development/gnuk/polarssl/polarssl-rsa-blinding
79
80 ** Improved RSA routine
81 RSA computation has been improved using MPI square routine.  Note that
82 you should not adopt this modification for general purpose computer,
83 as this change is weak against the Yarom/Falkner flush+reload cache
84 side-channel attack.
85
86 ** Upgrade of NeuG
87 The true random number generator was upgraded to the one of NeuG 1.0.
88
89 ** Replacement of kernel (thread library)
90 Instead of ChibiOS/RT, we now use Chopstx.
91
92 ** Removal of obsolete features
93 The feature named pin-dial, which is pin input with hardware
94 enhancement (with rotary encoder) is removed.
95
96
97 * Major changes in Gnuk 1.0.4
98
99   Released 2013-03-15, by NIIBE Yutaka
100
101 ** Relocatable reGNUal, really 
102 In 1.0.3, reGNUal was not fully relocatable.  It worked loaded on higher
103 address, but didn't work for lower address.  This was fixed.
104
105
106 * Major changes in Gnuk 1.0.3
107
108   Released 2013-03-14, by NIIBE Yutaka
109
110 ** Relocatable reGNUal
111 The upgrade helper, reGNUal, is now relocatable (other than the first
112 vector table).  It runs well when loaded at different address.  This
113 makes the upgrade procedure more stable.
114
115 ** Compilation by newer GNU Toolchain
116 Now, Gnuk can be compiled with newer GNU Toolchain, specifically GCC
117 4.7.x and GNU Binutils 2.22.  Old versions of Gnuk had problem for
118 ChibiOS_2.0.8/os/ports/GCC/ARMCMx/cmsis/core_cm3.c, which was fixed.
119
120 ** Data object 0x0073
121 Data object 0x0073 is now available.
122
123
124 * Major changes in Gnuk 1.0.2
125
126   Released 2013-02-15, by NIIBE Yutaka
127
128 ** Product string is now "Gnuk Token" (was: "FSIJ USB Token")
129 Since the USB ID Repository suggests not including vendor name
130 in product string, we changed the product string.
131
132 ** New tool (experimental): test/upgrade_by_passwd.py
133 This is the tool to install new firmware to Gnuk Token, provided
134 that it's just shipped from factory (and nothing changed).  It
135 authenticate as admin by factory setting, register a public key
136 for firmware upgrade, and then, does firmware upgrade.
137
138 ** tool/gnuk_upgrade.py supports '-k' option
139 It now supports RSA key on the host PC (not the one on the Token).
140
141 ** New tool: tool/get_raw_public_key.py
142 This is a script to dump raw data of RSA public key, which is useful
143 to register to Gnuk Token as a firmware upgrade key.
144
145 ** New tool: tool/gnuk_remove_keys_libusb.py
146 This tool is libusb version of gnuk_remove_keys.py.  Besides, a bug in
147 gnuk_remove_keys.py was fixed.
148
149 ** CCID protocol fix
150 When time extension is requested by Gnuk Token to host PC, argument
151 field was 0, which was wrong (but it works for most PC/SC
152 implementations and GnuPG internal driver).  Now it's 1, which means
153 1*BWT.
154
155 ** OpenPGP card protocol enhancement
156 Now, VERIFY command accepts empty data and returns remaining trial
157 counts, or 0x9000 (OK) when it's already authenticated.  This is
158 useful for application to synchronize card's authentication status.
159
160
161 * Major changes in Gnuk 1.0.1
162
163   Released 2012-08-03, by NIIBE Yutaka
164
165 ** USB SerialNumber String
166 In 1.0, it has a bug for USB SerialNumber String.  It has been fixed
167 in 1.0.1.
168
169
170 * Major changes in Gnuk 1.0
171
172   Released 2012-07-21, by NIIBE Yutaka
173
174 This is bug fixes only release.
175
176
177 * Major changes in Gnuk 0.21
178
179   Released 2012-07-06, by NIIBE Yutaka
180
181 ** Test suite
182 A functinality test suite is added under test/ directory.
183
184 ** New tool: stlinkv2.py
185 This tool is SWD flash ROM writer with ST-Link/V2.
186
187 ** New tool: usb_strings.py
188 This tool is to dump USB strings, which include revision detail and config
189 options.
190
191 ** Protection improvement (even when internal data is disclosed)
192 Even if PW1 and PW3 is same, content of encrypted DEK is different
193 now.
194
195
196 * Major changes in Gnuk 0.20
197
198   Released 2012-06-19, by NIIBE Yutaka
199
200 ** Key generation feature added
201 Finally, key generation is supported.  Note that it may be very slow.
202 It may take a few minutes (or more) to generate two or three keys,
203 when you are unlucky.
204
205 ** DnD pinentry support is deprecated
206 Once, DnD pinentry was considered a great feature, but it found that
207 it is difficult to remember moves of folders.
208
209 ** gnuk_upgrade.py assumes using another token for authentication
210 Use of another token for authentication is assumed now.  This is
211 incompatible change.  Note that when you upgrade a token of version
212 0.19 to 0.20 (or later), you need gnuk_upgrade.py of version 0.19.
213
214 ** KDF (Key Derivation Function) is now SHA-256
215 Keystring is now computed by SHA-256 (it was SHA1 before).
216
217 ** Protection improvements (even when internal data is disclosed)
218 Three improvements.  (1) Even if PW1 and Reset-code is same, content
219 of encrypted DEK is different now.  (2) DEK is now encrypted and
220 decrypted by keystring in ECB mode (it was just a kind of xor by
221 single block CFB mode).  (3) Key data plus checksum are encrypted in
222 CFB mode with initial vector (it will be able to switch OCB mode
223 easily).
224
225 ** LED display output change
226 LED display output by Gnuk is now more reactive.  It shows status code
227 when it gets GET_STATUS message of CCID.  When you communicate Gnuk by
228 internal CCID driver of GnuPG (instead of PC/SC), and enable
229 'debug-disable-ticker' option in .gnupg/scdaemon.conf, it is more
230 silent now.
231
232
233 * Major changes in Gnuk 0.19
234
235   Released 2012-06-06, by NIIBE Yutaka
236
237 ** Firmware upgrade feature
238 Firmware upgrade is now possible after the public key authentication
239 using EXTERNAL AUTHENTICATE command of ISO 7816.  Firmware upgrade is
240 done together with reGNUal, the firmware upgrade program.
241
242 ** System service blocks at the beginning of flash ROM.
243 Once flash ROM is protected, first 4-KiB cannot be modified.  Gnuk
244 use this area for "system service".  Note that this area will not
245 be able to be modified by firmware upgrade (or by any method).
246
247 ** New tool: gnuk_upgrade.py
248 The tool gnuk_upgrade.py is to do public key authentication using
249 gpg-agent and send reGNUal to Gnuk.  Then, we put new Gnuk binary
250 into the device with reGNUal.
251
252 ** USB strings for revision detail, configure options, and system service.
253 USB strings now have more information.  There are revision detail
254 string, configure options string, system service version string, as
255 well as vendor string and product string.  These strings could be
256 examined to check Gnuk Token.
257
258
259 * Major changes in Gnuk 0.18
260
261   Released 2012-05-15, by NIIBE Yutaka
262
263 ** New mandatory option '--vidpid' for configure
264 You must specify USB vendor ID and product ID for Gnuk.
265 The file GNUK_USB_DEVICE_ID lists valid USB device IDs.
266
267 ** New tool: gnuk_remove_keys.py
268 The tool gnuk_remove_keys.py is to remove all keys in Gnuk Token
269 and reset PW1 and RC (if any).
270
271 ** New USB stack
272 Gnuk used to use USB stack of USB-FS-Device_Lib by ST.  Now, it has
273 original implementation.  Hopefully, size and quality are improved.
274
275
276 * Major changes in Gnuk 0.17
277
278   Released 2012-02-02, by NIIBE Yutaka
279
280 ** USB CCID/ICCD protocol implementation change
281 Gnuk now only supports short APDU level exchange, not supporting
282 extended APDU level exchange.  Thus, Gnuk could be compatible to older
283 host side software implementation.
284
285 ** ISO 7816 SELECT command behavior is somewhat strict now
286 Old implementations do not check DF name for SELECT command.
287 This causes some trouble when Gnuk Token is identified as if it were
288 different card/token.  Now, DF name of OpenPGP card is checked.
289
290 ** USB CCID/ICCD low-level bug is fixed
291 When the size of command APDU data is just 49, the lower level packet
292 size is 64.  This is maximum size of BULK-OUT transfer packet, and
293 caused trouble in the past implementations.  Example is setting url
294 (0x5f50) as: http://www.gniibe.org/adpu-string-size-is-just-49
295 This is because the past implementations expect ZLP (zero length
296 packet).  Now, it has been fixed.  You can use any size of string.
297
298 ** CERT.3 Data Object (0x7f21) is now optional
299 As there's no valid use case for this data object and it does not
300 work as current version of GnuPG, this is now optional feature.
301 You can enable this data object by specifying --enable-certdo at
302 configure time.
303
304 ** With DnD pinentry, user can cancel pin input
305 Now, user can cancel pin input by unmounting device before finishing
306 DnD.
307
308 ** New tool: pinpadtest.py
309 The tool pinpadtest.py is PC/SC test tool for pinentry of pinpad with
310 OpenPGP card v2.
311
312
313 * Major changes in Gnuk 0.16
314
315   Released 2011-12-14, by NIIBE Yutaka
316
317 ** DnD pinentry support is added and it's default to pinentry support
318 DnD pinentry support doesn't require any hardware extension, but
319 emulates mass storage class device of USB.  User inputs pass phrase
320 by "drag and drop"-ing folders using file manager or something.
321
322 ** Bug fix for VERIFY for CHV2
323 With no keys, VERIFY command for CHV2 used to fail even if pass phrase
324 is correct.  It was intentional, because CHV2 verification would be
325 useless with no keys.  But there is a corner case for PRIVATE-DOs,
326 which may requires CHV2 verification.  Even though Gnuk doesn't
327 support any PRIVATE-DOs, it is good to be fixed.
328
329 ** Changed bcdUSB = 1.1
330 Gnuk device conforms to USB 2.0 full speed device, but when it was
331 2.0, some OS informs users, "you can connect the device to 2.0
332 compliant hub so that it can have better bandwidth", which is not
333 the case for full speed device.
334
335
336 * Major changes in Gnuk 0.15
337
338   Released 2011-11-24, by NIIBE Yutaka
339
340 ** New targets: FST_01 and FST_01_00
341 Flying Stone Technology's open hardware, Flying Stone Tiny 01 is
342 supported.
343
344 ** Flash writing tool for "DfuSe" is improved
345 Now, it supports holes and unaligned blocks in hex file.
346
347 ** Experimental PIN-pad support (by TV controller) change
348 Now, Gnuk has codetables for conversion from CIR code to ASCII code.
349 Note that only four controllers (of Dell, Sharp, Sony, and Toshiba)
350 are supported and tested.
351
352 ** It is possible for users to keep using OPENPGP_CARD_INITIAL_PW1
353 With a bug fix of verify_user_0, it's now possible.  Although it's not
354 recommended.
355
356 ** Important bug fix and a workaround
357 In version 0.14, __main_stack_size__ (for interrupt handler) was too
358 small for some cases.  This is fixed in 0.15.
359
360 In src/Makefile.in, added -mfix-cortex-m3-ldrd for correctly linking C
361 library for thumb2.  This is needed for newer summon-arm-toolchain.
362
363
364 * Major changes in Gnuk 0.14
365
366   Released 2011-10-07, by NIIBE Yutaka
367
368 ** Random number generator change
369 NeuG, Gniibe's True RNG implementation for STM32F103, has been
370 integrated to Gnuk.  It is not needed to put random number bytes
371 (generated by host) to Token any more.
372
373
374 * Major changes in Gnuk 0.13
375
376   Released 2011-06-15, by NIIBE Yutaka
377
378 ** Improved RSA routine.
379 About 20% speed improvement.
380
381 ** New tool: hub_ctrl.
382 It is a Python implementation ported from original C implementation.
383 It is useful for development of USB target if you have a good hub.
384 You can power off/on the port to reset Gnuk Token.
385
386
387 * Major changes in Gnuk 0.12
388
389   Released 2011-05-13, by NIIBE Yutaka
390
391 ** Admin-less mode is supported.
392 The OpenPGP card specification assumes existence of a security officer
393 (admin), who has privilege to manage the card.  On the other hand,
394 many use cases of Gnuk are admin == user.
395
396 Thus, Gnuk now supports "admin-less" mode.  In this mode, user can get
397 privilege with the password of PW1.
398
399 At the initialization of the card, Gnuk becomes compatible mode by
400 setting PW3.  Without setting PW3, it becomes "admin-less" mode
401 by setting PW1.
402
403 ** Important two bug fixes.
404 Gnuk (<= 0.11) has a bug which makes possible for attacker to change
405 user password to unknown state without knowing original password (when
406 no keys are loaded yet).  No, attacker could not steal your identity
407 (cannot sign or decrypt), but it would be possible to disturb you.
408
409 Gnuk (<= 0.11) has a bug which makes possible for attacker to guess
410 admin password easily.  When admin password is not set (the default
411 value of factory setting), failure of VERIFY doesn't increment error
412 counter in older versions.  Observing no increment of error counter,
413 attacker could know that admin password is the one of factory setting.
414
415 ** tool/gnuk_put_binary.py now uses pyscard.
416 Instead of PyUSB, it uses Python binding of PC/SC.  PyUSB version is
417 still available as tool/gnuk_put_binary_libusb.py.
418
419 ** Logo for Gnuk is updated.
420
421 ** Gnuk Sticker SVG is available.
422
423
424 * Major changes in Gnuk 0.11
425
426   Released 2011-04-15, by NIIBE Yutaka
427
428 This is bug fixes only release.
429
430
431 * Major changes in Gnuk 0.10
432
433   Released 2011-02-10, by NIIBE Yutaka
434
435 ** The executable can be installed to multiple devices.
436 So far, users of Gnuk should have not shared single executable among
437 multiple devices because the executable includes random bits (or
438 fixed serial number).  Now, random_bits and fixed serial number are
439 configured *after* compilation, we can install single executable image
440 to multiple devices.  Note that we need to configure random_bits for
441 each device.
442
443 ** Removed configure option: --with-fixed-serial
444 It is not compile time option any more.  After installation, we can
445 modify serial number in AID by tool/gnuk_put_binary.py.  Modification
446 is possible only once.  If you don't modify, Gnuk uses unique chip ID
447 of STM32 processor for AID.
448
449
450 * Major changes in Gnuk 0.9
451
452   Released 2011-02-01, by NIIBE Yutaka
453
454 ** Card Holder Certificate is supported (still this is experimental).
455 Gnuk can support card holder certificate now.  Note that GnuPG is not
456 ready yet.  The tool/gnuk_update_binary.py is for writing card holder
457 certificate to Gnuk Token.
458
459 ** Better interoperability to OpenSC.
460 Gnuk is not yet supported by OpenSC, but it could be.  With the
461 changes in Gnuk, it could be relatively easily possible to support
462 Gnuk Token by OpenSC with a few changes to libopensc/card-openpgp.c,
463 and libopensc/pkcs15-openpgp.c.
464
465 ** New board support "STBee"
466 STBee is a board by Strawberry Linux Co., Ltd., and it has
467 STM32F103VET6 on the board.  The chip is High Density CPU with 512KB
468 flash memory and many I/O.  If you want to connect sensor, display,
469 etc., this board would be a good candidate.
470
471 ** Experimental PIN-pad modification(unblock) support is added.
472 PIN-pad modification(unblock) is supported.
473
474
475 * Major changes in Gnuk 0.8
476
477   Released 2011-01-19, by NIIBE Yutaka
478
479 ** Experimental PIN-pad modification support is added.
480 PIN input using rotally encoder and push switch is tested with STBee
481 Mini.  By this hardware, PIN-pad modification is supported.
482
483
484 * Major changes in Gnuk 0.7
485
486   Released 2011-01-15, by NIIBE Yutaka
487
488 ** Bug fix only.
489 In version 0.6, a severe bug was introduced in usb-icc.c when adding a
490 work around for libccid 1.3.11.  The fix is one-liner, but it is worth
491 to release newer version.
492
493
494 * Major changes in Gnuk 0.6
495
496   Released 2011-01-14, by NIIBE Yutaka
497
498 ** Experimental PIN-pad support is added.
499 Local PIN-pad input is suppored for boards which have input hardware.
500 PIN input using consumer IR receive module is tested with STBee Mini
501 and STM8S Discovery.
502
503 ** USB device serial number is virtually unique now.
504 STM32F103 has 96-bit unique chip identifier.  We take advantage of
505 this, Gnuk Token has virtually unique USB serial number.
506
507 ** Card serial number is determined at run time by chip identifier.
508 Until version 0.5, card serial number was compile time option.  If we
509 used same binary for different devices, card serial number was same.
510 Now, we use STM32F103's 96-bit unique chip identifier for card serial
511 number (when you don't use --with-fixed-serial option).
512
513 ** More improved USB-CCID/ICCD implementation.
514 The changes in 0.5 was not that good for libccid 1.3.11, which has
515 small buffer (only 262-byte APDU).  Workaround for libccid 1.3.11 is
516 implemented.
517
518
519 * Major changes in Gnuk 0.5
520
521   Released 2010-12-13, by NIIBE Yutaka
522
523 ** LED blink
524 LED blink now shows status output of the card.  It shows the status of
525 CHV3, CHV2, and CHV1 when GPG is accessing the card.
526
527 ** New board support "STM8S Discovery"
528 ST-Link part (with STM32F103C8T6) of STM8S Discovery board is now supported.
529
530 ** Digital signing for SHA224/SHA256/SHA384/SHA512 digestInfo is now possible.
531
532 ** Fixes for password management
533 Now, you can allow the token to do digital signing multiple times with
534 single authentication.  You can use "forcesig" subcommand in card-edit
535 of GnuPG to enable the feature.
536
537 ** Key management changes
538 If you remove all keys, it is possible to import keys again.
539
540 ** More improved USB-CCID/ICCD implementation.
541 Gnuk works better with GPG's in-stock protocol stack.  You can do
542 digital signing (not decryption, key import, or get_public_key in
543 GPG2).  For decryption, key import and get_public_key, changes are
544 needed for GPG (scd/ccid-driver.c) to support the case of extended
545 APDU.  In short, you can sign with Gnuk by GPG.
546
547 ** Windows support.
548 Gnuk Token could run with GPG4WIN on MS Windows.  GPG4WIN runs with
549 "usbccid" driver and "winscard" driver.
550
551
552 * Major changes in Gnuk 0.4
553
554   Released 2010-11-09, by NIIBE Yutaka
555
556 ** New board support "STBee Mini".
557
558 ** Flash writing tool for "DfuSe" is included now.
559
560 ** Since Flash GC is now implemented, it can be used longer.
561
562
563 * Major changes in Gnuk 0.3
564
565   Released 2010-10-23, by NIIBE Yutaka
566
567 ** Now we have 'configure' script to select target.
568
569 ** Support system with DFU (Device Firmware Upgrade) downloader.
570
571 ** New board support "CQ STARM".
572
573 ** Improved USB-ICCD implementation.  Works fine with GPG's protocol stack.
574
575
576 * Major changes in Gnuk 0.2
577
578   Released 2010-09-13, by NIIBE Yutaka
579
580 ** With DEBUG=1, timeout is more than 3 seconds.
581
582 ** Flash ROM entries for random numbers are cleared after use. 
583
584 ** Board support "STM32 Primer 2" now works.
585  
586
587 * Major changes in Gnuk 0.1
588
589   Released 2010-09-10, by NIIBE Yutaka
590
591 ** Enabled force_chv1 (in the pw_status_bytes), so that the decipher works.
592
593 ** Support both of key for digital signing and key for decryption.
594
595 ** Decipher is supported.
596
597 ** New board support "STM32 Primer 2" is added by Kaz Kojima.
598
599 ** LED behavior is meaningful now.  "ON" during execution.
600
601 ** Fixed bcdCCID revision number.
602
603 ** Logo.
604
605
606 * Major changes in Gnuk 0.0
607
608   Released 2010-09-06, by NIIBE Yutaka
609
610 ** This is initial release.  Only it supports digital signing.
611
612 Local Variables:
613 mode: outline
614 End: