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