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