pull down to refresh

Hello,
This is my very first thread on Stacker.news.
Even if the topic is about a brand, it's in no way a promotion for said product. On the contrary, it highlights the free, open-source nature of the solution, as well as the latest technological advances of the device.

Introduction

Let me introduce you to the Satochip hardware wallet—an EAL6+ certified smartcard equipped with NFC, designed to act as a signing device for Bitcoin and Nostr events.

Why smartcards?

Smartcards offer several advantages:
  • Affordable and widely available;
  • Dual interfaces - contactless (NFC) and contact (Chip);
  • Minimal electronics, reducing the attack surface;
  • Secure Element (SE)-based for enhanced security.

What makes Satochip unique.

Satochip stands out because it is 100% open-source. You can build your own signing device in under 10 minutes for just a few dollars.
Additionally, this signing device has been natively supported by Sparrow Wallet since version 1.8.0.

Satochip applet

The latest beta Satochip applet is available on Toporin's official Github.
This release comes with:
  • Schnorr signature support for Taproot (to be used with Sparrow-Satochip wallet)
  • Schnorr signature support for Nostr (no key tweaking)

How to use it - Bitcoin

As said previously, if you build your own hardware wallet, you will be able to use it with Sparrow Wallet out of the box to sign your Bitcoin transaction. PIN code protected and BIP32/BIP39 compliant and can also be used in a multi-sig setup.

How to use it - Schnorr

Schnorr signatures can be tested using Pysatochip v0.15.3 command line interface:
  • Import a private key on keyslot #0:
python3 satochip_cli.py --verbose satochip-import-privkey --keyslot 0 --privkey aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899
  • Get the corresponding publick key:
python3 satochip_cli.py satochip-get-pubkey-from-keyslot --keyslot 0
  • Sign a hash with Schnorr on this keyslot:
python3 satochip_cli.py satochip-sign-schnorr-hash --hash 796962c8f2a7b8540f818cbe37d2894b1ab4b71bccddced12e2a4dc11d8802c3 --keyslot 0

How to use it - Nostr

You can sign a Nostr message then broadcast it using a specific command:
python3 satochip_cli.py --verbose satochip-sign-nostr-event --keyslot 0 --message "Just discover Satochip and it's f*ck*ing great!" --kind 1 --broadcast

Build your own signing smartcard

Grab a compatible JavaCard

Navigating the Javacard ecosystem can be difficult... There are many different configuration options that are available, even within the same chipset. For example, while there are multiple Javacards that use the NXP JCOP4 P71, it is generally the SECID versions that will work, whereas EMV versions will not.

Tested and working JavaCards

The following cards are readily available, tested and confirmed to work.
  • NXP JCOP4 P71 SECID Based Javacards
    • J3R110
    • J3R180
  • NXP JCOP3 P60 SECID Based Javacards
    • J3H145
  • THD-89 Based JavaCards (these currently don't work reliably with the official Satochip builds)
    • CodeWav NFC Sticker Tag Micro Edition
    • THETAKey T101
    • THETAKey T104 (CodeWav-2 NFC Card)

Javacard features required

The list of tested cards above isn't exhaustive and generally speaking a Javacard needs to support the following features:
  • Javacard 3.0.4 (Or higher)
  • Support the following Functions
    • javacard.security.KeyAgreement: ALG_EC_SVDP_DH_PLAIN, ALG_EC_SVDP_DH_PLAIN_XY
    • javacard.security.Signature: ALG_ECDSA_SHA_256
    • javacard.security.MessageDigest: ALG_SHA_256, ALG_SHA_512
    • javacard.security.RandomData: ALG_SECURE_RANDOM
    • javacardx.crypto.Cipher: ALG_AES_BLOCK_128_ECB, ALG_AES_BLOCK_128_CBC_NOPAD

Requirements

You will need:
  • OpenJDK version 8 +
  • GlobalPlateform, the tool needed to flash the card
  • A generic smartcard reader
  • The Satochip applet file

Download OpenJDK

On Windows

You can download OpenJDK 8 here
Once downloaded, you can install it with all the defaults.

On Linux

sudo apt install openjdk-8-jdk

Download the Satochip applet

Grab the Satochip Applet on the official Github repository

Flash the applet to the JavaCard

This repository includes a release of GlobalPlatformPro which can be used to flash the applets.
GlobalPlatformPro requires a working installation of Java, so if you didn't install Java at an earlier step, you need to do that before proceeding...
To flash the applet using the default AIDs (which is required to work with existing Satochip compatible software) you can use the following commands.

On Windows

gp.exe --install ./ SatoChip-v0.14-0.2.cap

On Linux

java -jar gp.jar --install ./ SatoChip-v0.14-0.2.cap
Applets can be uninstalled in the same way using the --uninstall command.

Conclusion

Satochip represents the perfect blend of open-source philosophy, affordability, and security. By leveraging widely available JavaCards, it makes secure, hardware-based cryptographic signing accessible to everyone.
Whether you're using it as a multi-signature Bitcoin wallet, an affordable signing device, or a Nostr event signer, Satochip provides a versatile and trust-minimized solution.
With its 100% open-source codebase, anyone can audit, modify, or even build their own signing smartcard in minutes—ensuring full transparency and complete user control. As the ecosystem evolves, the Satochip community continues to push the boundaries of security and self-sovereignty in Bitcoin and beyond.
The tools are here. The code is open. The possibilities are endless. 🚀
5 sats \ 1 reply \ @Aardvark 10h
That's incredibly clever, I would have never considered using that method of signing for anything other than credit card purchases.
reply
Smartcards are incredibly powerful yet often underrated! They can be used to securely store a variety of Bitcoin-related secrets, including your seed phrase, PIN code, and wallet descriptor. All of this data is safely stored within the secure element, and access to the memory is protected by a personal PIN code, ranging from 4 to 16 characters.
reply
0 sats \ 1 reply \ @Signal312 6h
Looks really interesting. I'd be really curious to see a walk-through video on it. Right now it's a little vague in my mind, as to how it all works.
And so this is the place to buy - https://satochip.io/product/satochip/? And the product would be this one: https://satochip.io/product/card-for-diy-project/?
reply
You are right for the product links!
As for the DIY Javacard, the process is straight forward.
  • Build or download the applet file.
  • Download GlobalPlatform, the tool that will help you to flash your smartcard.
  • Plug the smartcard to a smartcard or NFC reader.
  • Flash your smartcard.
Regarding the video, check this one: https://youtu.be/Y-bmiHC5PRk?feature=shared
reply
0 sats \ 3 replies \ @OT 11h
I like the price! Will have to try it out.
Thanks!
reply
For the more adventurous, you can find compatible JavaCards for just a few dollars. However, be cautious—it's a bit of a jungle, and often the cards sold don’t actually meet the advertised specifications.
reply
0 sats \ 1 reply \ @OT 8h
Is there a recommended retailer?
reply
Avoid Alibaba. It's a jungle.
Satochip sells blank javacard - but not necessarily the cheapest. At least it works well with the default keys. Also selling the SIM-card form factor for a very small form-factor hardware wallet.
Here are a few reliable javacard version: J3R180, J3R200...
reply
Very high bar for a first post!
reply
h bar for a first post! First time using Stacker.news. Click like a monkey on every buttons :) Don't blame me.
reply
-post~~
reply