Author

Topic: [ANN] SatoChip: Open-Source Hardware wallet for less than 10$! (Read 4366 times)

full member
Activity: 310
Merit: 151
Hardware and open source software solutions.

This topic is linked with : https://bitcointalksearch.org/topic/m.52357835

Currently, the team is focused on the coin integration. So far, we support :

- Bitcoin through the use of Electrum Bitcoin client (with the Satochip plugin)
- Bitcoin Cash through the use of Electron Cash client (with the Satochip plugin)


News :

- Support of LTC through Electrum Litecoin
- Native support on Electron cash since v 4.0.11
- Native support on Electron Cash SLP since v 3.6.1

full member
Activity: 310
Merit: 151
Hardware and open source software solutions.
This topic is linked with : https://bitcointalksearch.org/topic/m.52357835

Currently, the team is focused on the coin integration. So far, we support :

- Bitcoin through the use of Electrum Bitcoin client (with the Satochip plugin)
- Bitcoin Cash through the use of Electron Cash client (with the Satochip plugin)



newbie
Activity: 17
Merit: 2
New demonstration video of Satochip!
https://www.youtube.com/watch?v=ADWikh8Fxdk

Now with full Bip32 support and improved key derivation performance :-)



hero member
Activity: 623
Merit: 500
CTO, Ledger
Can you tell me if this will work with Schlumberger  java cards..... I have a case of 500 of these cards .. they are probable 12 years old.. never used...

Or is this card specific..Huh?

your card needs at least to support Elliptic Curve Cryptography to work with any of those Java Card Hardware Wallet applets.

I'd say that it's pretty much sure that a 12 years old card will not support that. It's not well implemented, even with recent cards.
BG4
legendary
Activity: 1006
Merit: 1024
PaperSafe
Can you tell me if this will work with Schlumberger  java cards..... I have a case of 500 of these cards .. they are probable 12 years old.. never used...

Or is this card specific..Huh?
hero member
Activity: 623
Merit: 500
CTO, Ledger
We finally got our Java Card HD update done. You can have a look at https://github.com/LedgerHQ/ledger-javacard-eligibility and https://github.com/LedgerHQ/ledger-javacard and should enjoy the performance boost when borrowing this SHA 512 implementation Grin
newbie
Activity: 17
Merit: 2
To facilitate testing, a built release is now available here: https://github.com/Toporin/BitcoinWallet/releases/tag/v3.0.1

So no need to rebuild the app from sources, simply unzip the target.zip file in a folder and follow the instructions...

legendary
Activity: 1526
Merit: 1014
I am translating the thread to post it on the Spanish forum and then speak with Toporin to see if he wants to sell some SatoChip  Grin
full member
Activity: 224
Merit: 100
I like the idea but the only issues is getting wallets to support them, I mean trezor is just NOW getting really supported on electrum and HDmultibit just left beta group only.
My request for the card was because we plan on making this compatible with ArtsyCoin Smiley


copper member
Activity: 3948
Merit: 2201
Verified awesomeness ✔
I just received my SatoChip, going to try it out after this weekend. Grin
newbie
Activity: 17
Merit: 2
I like the idea but the only issues is getting wallets to support them, I mean trezor is just NOW getting really supported on electrum and HDmultibit just left beta group only.

I think there is still room for more than one hw wallet.
But you are right, it's not gonna happen overnight!

Integrating a new hardware wallet into an existing client is not easy... Volunteers are welcome :-)


legendary
Activity: 2128
Merit: 1002
Cool project. I can buy the cards and customize them from http://www.javacardsdk.com/Index.aspx?p0=AAT1P0000012&p1=1&p2=1&p3=1&p4=0&p5=1

Then load the java app onto the card and sell to our crypto groups.

Cool.
staff
Activity: 3458
Merit: 6793
Just writing some code
I love this design and I hope to own this one Wink
Keep working good maker!
hero member
Activity: 821
Merit: 1000
Interesting project, looking forward to seeing this develop.
newbie
Activity: 17
Merit: 2
Great job Toporin also an affordable price. The operation of SatoChip is simple as you explain. It would be possible to order from European countries?

Thank you.

Actually, I am not really selling the hardware wallet myself. It is possible to order blank smartcards here for 6.5$ each: http://www.javacardsdk.com/Index.aspx?p0=AAT1P0000012&p1=1&p2=1&p3=1&p4=0&p5=1
However, the minimum order quantity is 5 and you need to upload the applet on the card yourself...

To make things easier, I can send a test card with the applet pre-loaded for 10$ in btc (that's including the shipping fee). However, this comes with absolutely no guarantee, and I can't even promise any decent level of support (even if I will try to help). Again, the goal of the test card is mainly to play with the concept. If you are looking for a reliable hardware wallet for serious use, I suggest you to try the Ledger Wallet or the Trezor. 

That being said, feel free to contact me by PM if you are still interested :-)
legendary
Activity: 1526
Merit: 1014
Great job Toporin also an affordable price. The operation of SatoChip is simple as you explain. It would be possible to order from European countries?

Thank you.
full member
Activity: 224
Merit: 100
Mine has not arrived yet but eagerly awaiting Smiley

Postal people are sometimes slow Sad

newbie
Activity: 17
Merit: 2

Thanks Tibux for the design, this looks nice!

If you have one left, I would love to try it out, if not, I'll buy one once I have some BTC. Everything is locked up in cold storage and trades.
Mitchełł, yes I still have one card (last one!). You can give me your address by PM and I will send it to you!

Can your code handle testnet coins?
While the javacard applet should support testoin, the simple java client that I use does not. It should be possible to do the tests using the java interface library directly (https://github.com/Toporin/SatoChipClient), although it is much less convenient. I will try to improve that as it's obviously a very important point. 

$10 is a very good price for a hardware wallet. But this JavaCard and Yubi key costs more than $10 and this need a special Yubi key that is not available. Not many people can test this project.
Indeed testing is not very easy for the moment but this project is still very experimental. Also, I would not recommend using it with serious amount of Bitcoin yet until it has been tested more seriously. If someone is interested to test the card and have trouble with the setup, he can contact me by PM and we will find a way...

   
newbie
Activity: 13
Merit: 0
$10 is a very good price for a hardware wallet. But this JavaCard and Yubi key costs more than $10 and this need a special Yubi key that is not available. Not many people can test this project.

Javacard is cheap compair with the YubiKey ...
newbie
Activity: 42
Merit: 0
Can your code handle testnet coins?
hero member
Activity: 658
Merit: 500
$10 is a very good price for a hardware wallet. But this JavaCard and Yubi key costs more than $10 and this need a special Yubi key that is not available. Not many people can test this project.
newbie
Activity: 13
Merit: 0
If you have one left, I would love to try it out, if not, I'll buy one once I have some BTC. Everything is locked up in cold storage and trades.

Of course, cold storage is the best storage you could find !
Physical coins, paper wallet, etc. use pre-print private key to store the crypto-value.
Of course it's better than an online trade plateform but if you lose your paper/coin, you lose your BTC !

With this card, the simlock is a great shield against hackers, plus a good software implementation to deal with the blockchain.

Furthermore, with this new design, the card's looking gorgeous  Roll Eyes
copper member
Activity: 3948
Merit: 2201
Verified awesomeness ✔
If you have one left, I would love to try it out, if not, I'll buy one once I have some BTC. Everything is locked up in cold storage and trades.
newbie
Activity: 13
Merit: 0
Hi Toporin.

Thank you ! I've received the simcard this morning.  Tongue
But it's a white one ... Need some skin tweak before I test the card.

What do you think :  Cool

First print (blank test card)

https://i.imgur.com/oJynDUQ.jpg?1

https://i.imgur.com/VCm6cNn.jpg?1

Second run on the simcard

https://i.imgur.com/r9nUbRl.jpg?1

I'll start the tests tomorrow ...
newbie
Activity: 13
Merit: 0
@Toporin

Pm send yesterday. I'm living in EU, hope I'll recieve it fast ...
Keep in touch !  Cool
newbie
Activity: 17
Merit: 2

@btchip:
You are right about the AGPL license. I'm still struggling with the intricacies of code licenses but I will correct that!
Thanks by the way for the great work!

@Tibuxx:
Yes I still have smartcards left. Send me your address by PM and I'll ship one to you :-)
newbie
Activity: 13
Merit: 0
Hi !

May I ask you a smartcard for testing purpose ?
BTW, it's realy a good project.

I will test it as soon as I get the card.

 Cool
hero member
Activity: 623
Merit: 500
CTO, Ledger
Congrats, nice to see that people are actually reading and using my code Smiley Retrieving the public key by using the "half" key agreement is a nice trick too.

On our side, we've not given up on Java Card and will be releasing in the coming weeks a SHA512 version that'll be significantly faster (about /10 so far)

I'd also suggest you relicense to AGPL - considering you use part of my code released under this license, and it's also a great way to make sure that the source code of improved versions always stays available.
sr. member
Activity: 426
Merit: 250
Great work. I have a Neo lying around and I am going to free time this week to test this!
newbie
Activity: 17
Merit: 2
@banksycoin

The card was sent this morning!
Expect a few days to receive it (sent from Europe)...
full member
Activity: 224
Merit: 100
That is great news Smiley

PM sent.

newbie
Activity: 17
Merit: 2
@banksycoin:

Yes I still have smartcard left for testing purpose. You can give me a shipping address by PM and I'll send one to you free of charge!
(Please note that you still need a smartcard reader to use it though)

@2112:

The SatoChip applet on the javacard should support Testcoin, however the BitcoinWallet implementation by ScripterRon only support Bitcoin.
The applet only manages the private keys, it has no knowledge of address or network. So basically any altcoin using the SECP256k1 could be used with it afaik. With minor changes, it should also be able to support NXT coin which uses Curve25519. The main difficulty is to integrate it in a particular wallet client... For testing purpose, there is a simple java library API (https://github.com/Toporin/SatoChipClient) that may provide some starting point...



legendary
Activity: 2128
Merit: 1073
Can your code handle testnet coins?
full member
Activity: 224
Merit: 100
Amazing. Great work  Cool

Might be interested in trying one out if you still have any available.

newbie
Activity: 17
Merit: 2

Tutorial: SatoChip & ScripterRon's BitcoinWallet How to use:

Required:
  • SatoChip loaded on a smartcard or Yubikey
  • BitcoinWallet .jar and lib folder saved on your computer
  • Java Runtime Environment 8

To run BitcoinWallet:

You can run the Wallet by executing the following command:
Code:
 javaw.exe -Xmx256m -Djava.util.logging.config.file=logging.properties -jar BitcoinWallet-3.0.1.jar PROD

Code:
-Djava.util.logging.config.file=logging.properties
is an optional argument usefull to configure the log with the logging.properties file.
By default, the logging.properties file stored in \jre8\lib is used.

- Wallet setup (only once):
At the first execution, the SatoChip wallet will be setup.
First, the program will ask you to define a PIN and a PUK code:

https://i.imgur.com/Ur6DGbY.jpg

https://i.imgur.com/ogpnhIH.png

The PIN code grants the access to the BIP32 wallet and unlock your account: be sure to keep it secret!
Transactions and message signing is not possible without it. Access is granted until the card is removed or until the wallet is closed
The PUK code could be used in case you block the PIN code with a sufficient number of wrong PIN trials (not supported yet).

After PIN setup, the PIN code is asked for confirmation and to grant access to the chip protected functionalities.
https://i.imgur.com/JjO5gzv.png

Once access is granted, the application will ask you to define a BIP32 seed:
https://i.imgur.com/eQyOJbc.png

This seed will be derived to generate all your Wallet private keys.
Be sure to use a sufficiently long password and to securely backup a copy of the seed!
Once the seed is imported in the secure chip, it is impossible to recover it!
Note that seed generation takes around 2 minutes during which the chip derives the master keys from the seed and performs various operations (you can see the Yubikey or smartcard reader blinking).

- Wallet use:
During normal execution, the application always start by requesting you PIN code:
https://i.imgur.com/JjO5gzv.png

After that, the main windows appears:
https://i.imgur.com/PHMK09D.png
Note that the account balance is still 0 for an obvious reason.

We start by generating a first key by clicking on  'View>Receive address' then 'Create' in the pop up windows:
https://i.imgur.com/IBzQHiH.png
You can create as many key as desired. Note that a new key derivation takes around 30 seconds during which the wallet seems iddle... be patient!

Once it is created, it is possible to send money to this new address:
https://i.imgur.com/s4yHAjE.png

- Wallet spending:

To spend the money received, click on 'Actions'>'Send coins', then copy a destination address, amount and fee in the popup windows:
https://i.imgur.com/0VvxM2j.png

And it's done!
https://i.imgur.com/p7vZHUI.png

In the same 'Action' menu, it is also possible to sign and verify messages:
https://i.imgur.com/hhMCId4.png

newbie
Activity: 17
Merit: 2
Btw, I have three free smartcards with the SatoChip applet loaded for people willing to test and review the wallet.
(You still need a smartcard reader and some patience/skills to set up the installation on your computer)

If you are interested, send me a PM before tomorrow 11:59 PM.
If I have more than three answers, I will pick three people arbitrarily based on their activity on the forum...
 
newbie
Activity: 17
Merit: 2
Hello,

Here is a new secure hardware wallet project based on javacard and compatible with the YubiKey NEO. The sources and building instructions are available on https://github.com/Toporin/SatoChipApplet


This project is fully open source and consists of a javacard applet that is to be loaded on a Yubikey (or any smartcard supporting the required functionalities - ECDSA-SHA256). Beside the applet, a java client is provided in the form of a light java library to simplify integration on existing applications (as the yubikey obviously needs to interact with a client application): https://github.com/Toporin/SatoChipClient.

A simple client java application is also provided as a proof-of-work. This application is a fork based on the BitcoinWallet from ScripterRon: https://github.com/Toporin/BitcoinWallet

The SatoChip has partial BIP32 support but due to technical limitations of current javacards, only hardened keys are supported (i.e. child keys using indices 2^31 through 2^32-1). Using SatoChip, an initial BIP32 seed is imported in the javacard and private keys are derived as requested by an external application. Private keys are never exported outside of the secure chip.

The SatoChip also supports the import of regular (non-BIP32 keys) such as vanity keys. Here again, private keys cannot be exported outside of the secure chip. Up to 16 regular keys can be imported on the chip. In any case, the private keys can be used to sign transactions and Bitcoin messages, if sufficient credentials are provided.

Access to private keys (creation, derivation and signature) is enforced through the use of PIN code. This access control is based on the MUSCLE framework on which the applet is built. As part of this framework, it is also possible to securely store and retrieve data & secret keys in secure memory, or use the chip to perform data encryption and decryption, although some functionalities have been disabled for readability of the code.

Please note that this implementation is currently under development: Use at your own risk!
Don't forget to backup the seed as it is not possible to recover it afterward!
I cannot be held responsible for any loss incurred by the use of this application...

Important remark: the Yubikeys currently sold by Yubico are configured for production only and it is not possible to load the applet on these dongles (see this link for more details: https://www.yubico.com/2014/07/yubikey-neo-updates/). Only the development Yubikeys (with serial number below 3,000,000) are suitable for this use!

Advantages:
-Code is free and open source
-Code should be easy to read and maintain (java card is a subset of java)
-Multiple form factor supported in addition to Yubikey (e.g smartcards, sim cards)
-Plug and play
-Smartcards have a long experience in dealing with physical security
-Can be easily used or extended for other crypto-currencies
-Cheap: possible to buy a compliant smartcard for less than 10$!

Also, when used with a Yubikey Neo:
-Yubikey has minimimal size and is practically indestructible
-Yubico is a reliable company that is not going anywhere anytime soon!
-Many other functionalities: Yubikey OTP, U2F, PGP support...
-Possibility to support NFC

Limitations:
-No screen!
-This is still beta code, use with caution!
-The applet could use more testing
-Performances could be improved

I am open to suggestions/corrections/improvements... Remember, this is a work in progress!
Let me know how it works for you and if you have trouble using it!

Jump to: