The open-source bearer crypto card - satodime.io

Overview

Satodime-Applet

Open source javacard applet implementing a bearer crypto card. The bearer chip card that allows you to spend crypto assets like a banknote. Safely pass it along multiple times, unseal anytime with ease, thanks to cryptography. Trustless, easy to verify and completly secure.

Introduction

Satodime is a smartcard that stores cryptographic keypairs securely in a secure chip (also called Secure Element). Each keypair can be associated with a specific address on a blockchain.

Each keypair is generated inside the secure chip and can be in any one of 3 states at any time:

  • uninitialized: the keypair has not been generated yet
  • sealed: the keypair has been generated securely inside the chip, only the public key is available
  • unsealed: the private key has been revealed

Since the private key is generated inside the secure chip, a Satodime bearer can be certain that nobody (including himself) knows the private key until the key is unsealed. In effect, a Satodime allows to physically transfer cryptocurrencies such as Bitcoin from one person to another, without having to trust the bearer of the Satodime, AS LONG AS THE KEY IS IN THE SEALED STATE.

Depending on the model, from 1 up to 3 keypairs can be stored simultaneously on a single Satodime.

Security features

Satodime authenticity:

The Satodime includes a cryptographic mechanism that allows to check whether the card is an authentic Satodime or a fake one. If the card is not authenticated, you should be extremely careful and avoid to store any valuable on it. The authentication mechanism is based on a unique digital certificate issued for each authentic Satodime and verified with a trusted Public Key Infrastructure.

Secure key generation:

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.

Transfer of ownership protection:

Satodime (and the SatodimeTool) supports communication through 2 interfaces: the NFC (Near Field Communication) wireless interface and the wired interface through a standard smartcard reader.

It is important to note that the behavior of the Satodime is slightly different according to the interface used: the wired interface is considered 'trusted' while the NFC is not. In practice, this means that anyone can perform any operation via the wired (trusted) interface, while some sensitive operations can only be performed via the NFC interface by the legitimate owner. Sensitive operations include all operations that change the state of a keyslot (such as unsealing). This ensures that the current owner of a Satodime can confidently let a potential acquirer scan the card on his own device (e.g. to check the available balance) without the risk of unsealing and sweeping a private key.

To distinguish the legitimate owner of the card from other users, a pairing process is initiated when the card is transfered to a new owner. To initiate this transfer, the former owner simply click on the 'Transfer card' button in the 'Card info' tab in the main menu. Immediatly after, the card should be disconnected and provided the new owner to initiate new pairing. A message is then shown to confirm that a new pairing has been successfully established with the new owner through the SatodimeTool. If the transfer of ownership has not been initiated by the previous owner, the new owner SHOULD perform this transfer as soon as possible. The procedure is the same, except that in this case, it MUST be done via the 'trusted' wired interface (since pairing is a sensitive operation and it can only be done via the NFC interface by the legitimate owner).

Satodime applications

Two applications are available to be use with a Satodime:

Macos & IOS tools will be released later.

Supported hardware

For supported hardware, refer to the Satochip applet repository.

Buidl & install

You can build the javacard CAP files or use the last release.

To generate the CAP file from the sources, you can use the Eclipse IDE with the ant-javacard Ant task (see the instruction on the ant-javacard github repository).

For installation, refer to the Satochip applet repository.

License

This application is distributed under the GNU Affero General Public License version 3.

Some parts of the code may be licensed under a different (MIT-like) license. Contact me if you feel that some license combination is inappropriate.

You might also like...

Vigour - An Android Fitness App that rewards users with Crypto for walking a certain amount of steps.

Vigour Group Project for 2022 Mobile Application Development. Our app rewards user with crypto after walking for a certain amount of steps. We will be

Sep 12, 2022

Create your Java crypto trading bot in minutes. Our Spring boot starter takes care of exchange connections, accounts, orders, trades, and positions so you can focus on building your strategies.

Create your Java crypto trading bot in minutes. Our Spring boot starter takes care of exchange connections, accounts, orders, trades, and positions so you can focus on building your strategies.

Quick Start | Documentation | Discord | Twitter Create and run your java crypto trading bot in minutes Our Spring boot starter takes care of exchange

Jan 3, 2023

Crypto-Exchange / Coin-Exchange /BitExchange

Crypto-Exchange / Coin-Exchange /BitExchange

Crypto-Exchange / Coin-Exchange /BitExchange

Aug 1, 2022

Deephaven Crypto Application

Crypto Application About The crypto application is a multifaceted example that extends the Deephaven Community Core docker images. The publisher conne

Apr 24, 2022

Crypto Coins charts made for the @MLH Orientation Hackaton

Charts Crypto Coins charts made for the @MLH Orientation Hackaton Why we have created "Charts" Nowadays with the new cryptocurrency fashion it is esse

Sep 27, 2022

Sourcetrail - free and open-source interactive source explorer

Sourcetrail - free and open-source interactive source explorer

Sourcetrail Sourcetrail is a free and open-source cross-platform source explorer that helps you get productive on unfamiliar source code. Windows: Lin

Jan 5, 2023

Source code of APK-Explorer-Editor (AEE), an open-source tool to explore the contents of an installed APK!

Source code of APK-Explorer-Editor (AEE),  an open-source tool to explore the contents of an installed APK!

APK Explorer & Editor (AEE) APK Explorer & Editor, an open-source tool to explore the contents of an installed APK, is strictly made with an aim to in

Jan 8, 2023

Infinispan is an open source data grid platform and highly scalable NoSQL cloud data store.

The Infinispan project Infinispan is an open source (under the Apache License, v2.0) data grid platform. For more information on Infinispan, including

Dec 31, 2022

An open-source Java library for Constraint Programming

Documentation, Support and Issues Contributing Download and installation Choco-solver is an open-source Java library for Constraint Programming. Curre

Jan 3, 2023

Open Source In-Memory Data Grid

Hazelcast Hazelcast is an open-source distributed in-memory data store and computation platform. It provides a wide variety of distributed data struct

Dec 31, 2022

:fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution.

:fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution.

Seata: Simple Extensible Autonomous Transaction Architecture What is Seata? A distributed transaction solution with high performance and ease of use f

Jan 2, 2023

Open source software platform for trading venues

Parity Parity is an open source software platform for trading venues. It can be used to run a financial marketplace, develop algorithmic trading agent

Dec 8, 2022

Sonatype Nexus Repository Open Source Codebase

Builds use Apache Maven and require Java 8. Apache Maven wrapper scripts are included in the source tree.

Jan 5, 2023

Open source routing engine for OpenStreetMap. Use it as Java library or server.

Open source routing engine for OpenStreetMap. Use it as Java library or server.

GraphHopper Routing Engine GraphHopper is a fast and memory efficient Java routing engine, released under Apache License 2.0. By default it uses OpenS

Jan 3, 2023

GWT Open Source Project

GWT GWT is the official open source project for GWT releases 2.5 and onwards. In this document you have some quick instructions to build the SDK from

Jan 5, 2023

Apache Dubbo is a high-performance, java based, open source RPC framework.

Apache Dubbo is a high-performance, java based, open source RPC framework.

Apache Dubbo Project Apache Dubbo is a high-performance, Java-based open-source RPC framework. Please visit official site for quick start and document

Jan 9, 2023

Free and open source log management

Graylog Welcome! Graylog is an open source log management platform. You can read more about the project on our website and check out the documentation

Jan 6, 2023

Datumbox is an open-source Machine Learning framework written in Java which allows the rapid development of Machine Learning and Statistical applications.

Datumbox is an open-source Machine Learning framework written in Java which allows the rapid development of Machine Learning and Statistical applications.

Datumbox Machine Learning Framework The Datumbox Machine Learning Framework is an open-source framework written in Java which allows the rapid develop

Dec 9, 2022

A modular and portable open source XMPP client library written in Java for Android and Java (SE) VMs

Smack About Smack is an open source, highly modular, easy to use, XMPP client library written in Java for Java SE compatible JVMs and Android. A pure

Dec 28, 2022
Releases(v0.1)
  • v0.1(Dec 3, 2021)

    Satodime-Applet v0.1-0.1: javacard applet for the Satodime bearer crypto card.

    Note for developers:

    • It is recommended to test the applet on the Bitcoin/Ethereum testnet.
    • Regarding hardware support: only cards with ALG_EC_SVDP_DH_PLAIN_XY are supported!

    This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

    Source code(tar.gz)
    Source code(zip)
    Satodime-0.1-0.1.cap(40.98 KB)
Owner
Satochip: the open-source and affordable Bitcoin hardware wallet https://twitter.com/SatochipWallet https://t.me/Satochip
null
Crypto Eye is an application used to fetch current rates of crypto currency.

Crypto-Eye- Crypto Eye is an application used to fetch current rates of crypto currency. It is fully dynamic application with internet access. This ap

Utkarsh tripathi 2 Sep 2, 2022
Get device location by telephony (SIM card) or settings without using GPS tracker.

react-native-device-country Get device location by telephony (SIM card) or settings without using GPS tracker Installation yarn add react-native-devic

dev.family 46 Nov 29, 2022
Cardsystem - Digital card sign-in/sign-out system for the Indiana Academy

cardsystem Digital card sign-in/sign-out system for the Indiana Academy Requirements: Create system for inputing destination, companion, and estimated

null 1 Feb 23, 2022
A simple Flash Card application to assist in learning and remembering something.

a-flash-deck A simple Flash Card application to assist in learning and remembering something. This project is intended for demo app for a-navigator an

null 16 Dec 30, 2022
A multi-ride amusement park ticket application on NFC memory card

A multi-ride amusement park ticket application on NFC memory card. The security features cover mitigating: Man in the Middle attack, Rollback attack, tearing protection, Write Protection.

Jayshree Rathi 1 Nov 28, 2022
A JavaCard applet for setting the global PIN (0x11) on a card using GlobalPlatform API

A JavaCard applet for setting the global PIN (0x11) on a card using GlobalPlatform API

Chris Hicks 2 Mar 4, 2022
An unofficial rules engine for the world's greatest card game.

Forge Official repo. Dev instructions here: Getting Started (Somewhat outdated) Discord channel here Requirements / Tools you favourite Java IDE (Inte

Forge 150 Dec 30, 2022
React Native plugin to manage Sim card(s) & eSim

react-native-sim-cards-manager A new library that merge multiple sim cards libraries into a single one: https://github.com/markneh/react-native-esim h

@odemolliens 11 Jan 3, 2023
BitBase is a Client-Server based Crypto trading platform which offers live pricing, dynamic charts, user portfolio, account settings... and much more!

BitBase-Crypto-Trading-Platform BitBase is a Client-Server based Crypto trading platform which offers live pricing, dynamic charts, user portfolio, ac

null 4 Feb 11, 2022