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