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