Wallet Logo

Satodime

Latest release: 0.2.0 ( 17th February 2022 ) 🔍 Last analysed 23rd March 2022 . Leaks Keys
6th December 2021

Jump to verdict 

Help spread awareness for build reproducibility

Please help us spread the word discussing build reproducibility with Satodime  via their Twitter!

Do your own research!

Try out searching for "lost bitcoins", "stole my money" or "scammers" together with the wallet's name, even if you think the wallet is generally trustworthy. For all the bigger wallets you will find accusations. Make sure you understand why they were made and if you are comfortable with the provider's reaction.

If you find something we should include, you can create an issue or edit this analysis yourself and create a merge request for your changes.

What is a bearer token?

Bearer tokens are meant to be passed on from one user to another similar to cash or a banking check. Unlike hardware wallets, this comes with an enormous "supply chain" risk if the token gets handed from user to user anonymously - all bearer past and present have plausible deniability if the funds move. We used to categorize bearer tokens as hardware wallets, but decided that they deserved an altogether different category. Generally, bearer tokens require these attributes:

  • Secure initial setup
  • Tamper evidence
  • Balance check without revealing private keys
  • Small size
  • Low unit price
and either of these applies:
  • Somebody has a backup and needs to be trusted.
  • Nobody has a backup and funds are destroyed if the token is lost or damaged.

The Analysis 

Product Description

The Satodime is a bearer smartcard that can hold multiple cryptocurrencies as well as ERC20 tokens and NFTs. The card’s secure element is an EAL6+ chip which stores the private keys. According to this Medium article, it is meant to allow users to transact hand-to-hand.

With a Satodime card, you can physically transfer #Bitcoin, #Litecoin, #BitcoinCash, #Ethereum or any other #ERC20 tokens (including #NFTs) from one user to another (hand-to-hand), while still remaining secure, without the need to trust a third party.

This is how it deals with the private keys:

“Private keys are strictly sealed within the secure chip.”

You don’t know the keys until you redeem the key slot.”

Apart from that, details of how the keys are handled are elaborated in the same Medium article.

Private/public keypairs stored on the Satodime are always generated randomly inside the secure chip. As long as the keyslot is sealed, nobody has access to the private key. To prove that the private keys were not pre-generated during manufacturing and that no backdoor was inserted in the firmware, the user is prompted for a 64-hex random value during the sealing process. This random input is used to provide entropy during the key generation process. When the keyslot is unsealed and the private key is revealed, the entropy data (including user input) is provided and allows to ensure that the key generation process was indeed random.

A Satodime Android app is still in beta.

Retrieving the Private key

Retrieve the private key == UNSEAL

If you want to retreive the private key of a specific keyslot, you can unseal the keyslot at anytime. This action is not reversible.

Unsealing a keyslot will ask the secure chip to expose the private key.

When a keyslot is unsealed, the private key is made available to the user and can be recovered by clicking on the ‘more details’ button of the corresponding slot.

Once the private key is unsealed, it is no longer protected by the secure chip and any asset associated with the corresponding address should be transferred immediately to a new address. This is generally done by ‘sweeping’ the private key and many wallet provides this option (e.g. Electrum and Metamask).

Note that this is all done via the Satodime Tool, a python based Windows/Linux program.

Process

The card is read with “Satodime Tool” on a device with a card reader or NFC. The card itself does not have any form of display or interface such as a button.

The chip has three states:

  • Sealed - a new vault has been created and the private key is not yet shown to anybody. This state allows the user to accept, share, buy and get the satodime.
  • Unsealed - the private key has been revealed and entropy data provided
  • Uninitialized - the key pair has not been generated yet or has been recently reset after a transaction

Analysis

This is a physical bearer token. Its lack of a display requires both parties to a transaction to install the “Satodime Tool” on either a Windows or a Linux machine. The Medium article linked above and on the Satodime website also details a sample transaction wherein a user buys a Tesla car:

You want to buy the new Tesla using Bitcoin. You grab your Satodime, seal a new Bitcoin vault, write down the BTC address and load 1 BTC to it. Then, you go to the car dealer and begin negotiations. The dealer is asking for 1.25 BTC for this beautiful Ludicrous P100D. You accept the deal and send 0.25 more BTC to your Satodime vault using your favorite Bitcoin client. You grab your mobile phone, scan the Satodime using NFC and show the sealed vault to the car dealer. He can verify that the Bitcoin vault is sealed and full of 1.25 BTC. You shake hands and give him the card. You grab the car and leave the showroom peacefully and silently. SEAL — LOAD — VERIFY

The name and feature set suggests a relation to CoinKite’s Opendime Leaks Keys! . It’s basically an electronic version of it, with mostly the same features, including the assurance to have externally provided entropy being used in the key generation and the issue with not having a backup but the advantage of the device being re-usable with new keys. If the user fails to unseal the key slot though, the coins stored on the device are lost.

The recipient of a Satodime has to install the companion app in order to verify and claim the received funds.

Just like the Opendime, Satodime lets the companion app know the key when unsealed.

(dg, lw)

Verdict Explained

This product requires sharing private key material!

As part of our Methodology, we ask:

Does the device hide your keys from other devices?

If the answer is "no", we mark it as "Leaks Keys".

Some people claim their paper wallet is a hardware wallet. Others use RFID chips with the private keys on them. A very crucial drawback of those systems is that in order to send a transaction, the private key has to be brought onto a different system that doesn’t necessarily share all the desired aspects of a hardware wallet.

Paper wallets need to be printed, exposing the keys to the PC and the printer even before sending funds to it.

Simple RFID based devices can’t sign transactions - they share the keys with whoever asked to use them for whatever they please.

There are even products that are perfectly capable of working in an air-gapped fashion but they still expose the keys to connected devices.

This verdict is reserved for key leakage under normal operation and does not apply to devices where a hack is known to be possible with special hardware.

The product cannot be independently verified. If the provider puts your funds at risk on purpose or by accident, you will probably not know about the issue before people start losing money. If the provider is more criminally inclined he might have collected all the backups of all the wallets, ready to be emptied at the press of a button. The product might have a formidable track record but out of distress or change in management turns out to be evil from some point on, with nobody outside ever knowing before it is too late.