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