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