Hi
Re. smartcards, we're introducing a new project on
http://www.btchip.com , currently in beta.
This card is designed with simple goals in mind : secure private keys and keep the user in control, so that you can easily extract the keys or import new keys if you wish to do so.
You can find more details about the implementation on
https://github.com/btchip/btchip-python as well as a sample integration into bitcoinj.
A few samples (~ 10-20) are available for interested client developers - just send a PM with your references.
I'll open a new thread to discuss the technical details and integration soon.
Cool, added your project. Good looking code and site.
Question though, what do you mean by:
(link)No asymmetric keys are kept on the dongle - the private keys are sent back and forth encrypted by a Triple DES context key.
Am I correct in understanding that it doesn't store the EC private key itself, but instead you need to take the 3DES-encrypted private key previously generated and encrypted by the device (using the device's internal 3DES private key) and transfer it back onto to the device when signing? Also, I am assuming the optional PIN generates the "3DES context key" to secure the channel between the host and device? That's a pretty interesting solution.
You may want to specify a bit more clearly in the README where the EC private key is stored during the lifetime of the device, and when it is encrypted and when in plaintext. As it reads now, it sounds like the private key is unencrypted in the (3DES encrypted) channel, but after looking at the code it has 80-bits of security (
3DES.)
I'll be watching for the technical details thread. Thanks!