Pages:
Author

Topic: [NOW AVAILABLE] BTChip / Ledger HW1 : Bitcoin Hardware Wallet in a USB smartcard - page 17. (Read 62567 times)

hero member
Activity: 560
Merit: 509
I prefer Zakir over Muhammed when mentioning me!
Great project! Looking forward about it! Smiley I live in India. Can I use standard shipping? Is there any way to import private key? I mostly use vanity address, so it would help me.

  ~~MZ~~
full member
Activity: 224
Merit: 100
nice to see positive innovation on this forum.
hero member
Activity: 623
Merit: 500
CTO, Ledger
thanks ! Considering a few starts at 2, everyone gets to have a few  Grin
copper member
Activity: 3948
Merit: 2201
Verified awesomeness ✔
Nope sorry, we don't have a special edition at launch, but we'll probably have some limited editions from time to time.

It should reach you quickly if you're in the EU, not so quickly outside Smiley
Ah, I see. Well, that means that I will have to keep my eye on this topic. And in the end, it doesn't matter. I'm to excited to care about special editions. Grin
I live inside the EU, so yeah. Let's hope it gets here quickly!
hero member
Activity: 658
Merit: 501
interesting product... will pick up a few...
hero member
Activity: 623
Merit: 500
CTO, Ledger
Nope sorry, we don't have a special edition at launch, but we'll probably have some limited editions from time to time.

It should reach you quickly if you're in the EU, not so quickly outside Smiley
copper member
Activity: 3948
Merit: 2201
Verified awesomeness ✔
Well, I couldn't resist so I ordered a HW-1 Hardware Wallet. I hope it arrives quickly, so that I can take some pictures of it and try it out Grin
Just wondering, is the Hardware Wallet engraved or something like that (like they did with the Trezor), since it's just launched?
hero member
Activity: 623
Merit: 500
CTO, Ledger
Thanks - I think you won't get bored with it  Grin

And yes, I should tidy up this thread a bit, you're right.
donator
Activity: 919
Merit: 1000
Just ordered one after reading the related CoinDesk article - without knowing if it is exactly what I expect, but the API looks like you can waste quite some time playing with it.

@OP: since this thread is where people are led to from your website, you should check your posts for outdated media / data. Most of the pictures and videos you link in your posts do not exist any more.


Good Luck with the sales.
hero member
Activity: 623
Merit: 500
CTO, Ledger
sr. member
Activity: 350
Merit: 251
Dolphie Selfie
Shop is now open for everybody - get 2 cards for 20 €, payable in bitcoins @ https://buy.hardwarewallet.com
How long do you plan to offer the 2 for 1 deal?  Grin
hero member
Activity: 623
Merit: 500
CTO, Ledger
Shop is now open for everybody - get 2 cards for 20 €, payable in bitcoins @ https://buy.hardwarewallet.com
hero member
Activity: 623
Merit: 500
CTO, Ledger
For a limited time, BTChip is available as a Prismicide perk - https://www.indiegogo.com/projects/prismicide-world-s-most-secure-bitcoin-hardware-wallet-and-anti-prism-platform - it'll then be possible to buy it directly from our commercial website, or through distributors
hero member
Activity: 623
Merit: 500
CTO, Ledger
Cleaned up the first post a bit, posted a new firmware specification, added JS and Python APIs
hero member
Activity: 623
Merit: 500
CTO, Ledger
(Fry really wants to buy something)

I plan to keep talking while taking your money, how cool is that ?  Tongue

Cool project!

I am new to this thread, so please excuse me if I'm slow Smiley but I want to make sure I understand the basic idea behind BTChip:

No problem, welcome ! Also the whole thread is quite outdated and the technical description got stuck 2 years in the past, but let's see Smiley

The best up to date references are the API https://btchip.github.io/btchip-doc/bitcoin-technical.html and C API https://github.com/btchip/btchip-c-api

1. The smartcard stores a "context key" that is only known by the smartcard.

This was the old architecture when I couldn't generate BIP 32 keys. Now the "context key" only applies to "trusted input" - only a way to bind an amount to a prevout by having the card sign a specific output of a transaction.

2. The smartcard can:
   a. read a cleartext private key, and return the cleartext public key and the "context key"-encrypted private key;
   b. generate a new keypair internally, and return the cleartext public key and the "context key"-encrypted private key;

yup. Still, for the old version.

3. The smartcard can also:
   a. decrypt a "context key"-encrypted private key (from the user) and use that to sign a hash (also from the user)
   b. verify an ECDSA signature.

Still correct (also still for the old version). The new version fully parses the transaction.

I know there is a lot of advanced functionality, but did I get that right?  This has applications (like you point out) such as signing bitcoin transactions on a local machine in such a way that the private key decryption and hash signing is done "offline."  Another application is to produce signatures at brick-and-mortar stores to authorize certain transactions (assuming the merchant could determine a valid cyphertext private key).


I have a few questions:

You mentioned using the ST23YT66 secure smartcard microcontroller.  Was this chosen instead of a regular microcontroller so that you could take advantage of the security provisions, cryptographic primitives and user identification methods without having to write your own?  

yes, especially because it is hardened by design. also because we write operating systems for smartcards during the bitcoinless parts of our professional lives  Smiley

You mentioned that "the smartcard wallet implementations will rely on GlobalPlatform concepts to define how keys are inserted into the card, authenticate the user to validate access rights to access specific keys, optionally authenticate the card responses."  Is this basically ISO/IEC 7816?  I can understand adhering up to ISO/IEC 7816-4 (ADPUs) and in your case ISO/IEC 7816-12 (USB), but since a custom reader application will always be required, is there a need to adhere to any other sections?  

this was done because parts of an old version of the operating system was reused for a quick prototype - it's no longer the case now.

Basically, I am wondering if it would be possible to start with something like an ARMCore MCU, write firmware to support up to ISO/IEC 7816-4 (APDUs), add whatever cryptographic operations you need to Trezor-Crypto, and then define your own spec for "how keys are inserted into the card, authenticate the user to validate access rights to access specific keys, etc."  This would allow everything to be open-sourced too, if that was your desire.  At the same time, I think you'd still be compatible with the majority of smart-card readers currently deployed in the field (as they'd need an update to their application software anyways to interface with BTChip).  

yes, and that's definitely the approach we're taking with one part of http://www.prismicide.com/ - the other part being a 95.8% (insert another random % here) open Operating System working on a regular smartcard, which still has some benefits considering getting a sane crypto stack that's not trivially vulnerable to SPA/DPA is a hard problem, both on the IP and technical side, and preventing trivial information recovery from a generic purpose microcontroller that you can touch is also a hard problem
legendary
Activity: 1162
Merit: 1007
Cool project!

I am new to this thread, so please excuse me if I'm slow Smiley but I want to make sure I understand the basic idea behind BTChip:

1. The smartcard stores a "context key" that is only known by the smartcard.

2. The smartcard can:
   a. read a cleartext private key, and return the cleartext public key and the "context key"-encrypted private key;
   b. generate a new keypair internally, and return the cleartext public key and the "context key"-encrypted private key;

3. The smartcard can also:
   a. decrypt a "context key"-encrypted private key (from the user) and use that to sign a hash (also from the user)
   b. verify an ECDSA signature.

I know there is a lot of advanced functionality, but did I get that right?  This has applications (like you point out) such as signing bitcoin transactions on a local machine in such a way that the private key decryption and hash signing is done "offline."  Another application is to produce signatures at brick-and-mortar stores to authorize certain transactions (assuming the merchant could determine a valid cyphertext private key).


I have a few questions:

You mentioned using the ST23YT66 secure smartcard microcontroller.  Was this chosen instead of a regular microcontroller so that you could take advantage of the security provisions, cryptographic primitives and user identification methods without having to write your own?  

You mentioned that "the smartcard wallet implementations will rely on GlobalPlatform concepts to define how keys are inserted into the card, authenticate the user to validate access rights to access specific keys, optionally authenticate the card responses."  Is this basically ISO/IEC 7816?  I can understand adhering up to ISO/IEC 7816-4 (ADPUs) and in your case ISO/IEC 7816-12 (USB), but since a custom reader application will always be required, is there a need to adhere to any other sections?  

Basically, I am wondering if it would be possible to start with something like an ARMCore MCU, write firmware to support up to ISO/IEC 7816-4 (APDUs), add whatever cryptographic operations you need to Trezor-Crypto, and then define your own spec for "how keys are inserted into the card, authenticate the user to validate access rights to access specific keys, etc."  This would allow everything to be open-sourced too, if that was your desire.  At the same time, I think you'd still be compatible with the majority of smart-card readers currently deployed in the field (as they'd need an update to their application software anyways to interface with BTChip).  
hero member
Activity: 765
Merit: 503
hero member
Activity: 623
Merit: 500
CTO, Ledger
hero member
Activity: 623
Merit: 500
CTO, Ledger
hero member
Activity: 623
Merit: 500
CTO, Ledger
Added C API documentation and multisignature samples on https://github.com/btchip/btchip-c-api
Pages:
Jump to: