OpenCard logo

Develop your own smart cards in hours. Use on-board hardware cryptoprocessors to embed your innovative cryptographic solution with optimal performance. Save time by using third-party extensions on OpenCard Market.

Currently in beta testing phase

Who can I contact?

Dr. Pascal Paillier

Pascal Paillier, PhD

CEO, Senior Security Expert

 

Related technology

Embedded Cryptographic Libraries

Give us the instruction set of your microcontroller and we do the rest.

We have more than 16 years of experience in developing and delivering cycle-accurate optimized cryptographic libraries. Our software can be declined on a variety of hardware platforms and support standard and advanced cryptographic algorithms.

Details

OpenCard is a truly, fully open smart card that supports user-defined applications developed in native code (C and/or assembly). Its purpose is to provide a simple smart card environment that can serve as a support for instrumenting and testing on-card applications without facing the limitations of cards based on virtual machines. It features a versatile operating system on top of which sets of APDU commands or software extensions containing native APIs, non-volatile data objects and various user-defined customizations are easily installed. Contrarily to other smart card platforms, OpenCard is programmable at a low, close-to-the-hardware level and is 100% user-definable.

The big picture

The lifecycle of the card is composed of 2 stages.

Alt lifecycle

Development stage: the card is originally equipped with the OpenCard meta-OS, made of

  • a resident component which will always remain on the card (called ‘‘Extension 0’’),
  • a removable component that supports meta-commands for administration and on-card debugging.

When the card boots on the meta-OS, it is said to be in Admin mode. In Admin mode, the user may play meta-commands to manage the card contents i.e. identify, add or remove components. These components can be of only 2 types:

  • a user-defined card application (only 1 card application can be loaded in the card),
  • optional extensions which are meant to enrich the functionalities of Extension 0. The card may contain any number of extensions until the memory space is full.

In Admin mode, the user may also request to boot a prescribed number of times in User mode. In User mode, the card boots on the user-defined application and therefore supports the command set that the user has implemented. In User mode, the meta-commands are not accessible anymore. After the prescribed number of user boots is consumed, the card gets back to Admin mode on the next reset.

In Admin mode, the user may also put breakpoints in her applicative code. When a breakpoint is hit while running in User mode, the card enters a dedicated Debug mode where the inner variables, registers and memory can be accessed and modified. When execution resumes, the card returns to User mode until a new breakpoint is hit. This on-card debugging capability makes it easy to detect and analyze bugs on the actual hardware.

Deployment stage: playing the DEPLOY meta-command in Admin mode has the effect of removing the meta-OS and making the card boot in User mode indefinitely. Administrative commands as well as the on-card debugger irreversibly disappear from the card (thus freeing memory). The card can then be used as intended by the user-defined application.

The User experience

OpenCard comes along with a development framework composed of

  • a programming language based on C with a few simple extensions,

Alt hello

  • an open-source compilation toolchain based on GCC and additional utilities,
  • an open-source python-based environment for smart card instrumentation.

Alt APDU

OpenCard Market

OpenCard makes it easy to develop your own algorithm and share your code within the OpenCard developers community as an extension.

The OpenCard Market website hosts third-party extensions that can be easily downloaded into an OpenCard to build up a complete on-card application.

OpenCard is ideal for smart card based hardware wallets for crypto-currencies such as Bitcoin.

Hardware main features

OpenCard embeds

  • a 32-bit ARM core (ARM SecurCore SC100),
  • 512 kB of flash memory,
  • 18 kB of RAM,
  • a hardware TRNG,
  • a DES/3DES coprocessor,
  • an AES coprocessor,
  • a general-purpose arithmetic coprocessor (large integers up to 2048 bits),
  • hardware security features.

Availability

OpenCard will be available early 2017, with no minimum order, on this website.

Related presentations & talks

  • The ins and outs of programming cryptography in smart cards.
    portrait ofPascal Paillier.
    Real World Cryptography, London, U.K., January 08, 2015.