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