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