tillitis-key/README.md

2.7 KiB
Raw Blame History

Tillitis Key 1

Introduction

Tillitis Key 1 is a new kind of USB security token. All of its software, FPGA logic, schematics, and PCB layout are open source, as all security software and hardware should be. This in itself makes it different, as other security tokens utilize closed source hardware for its security-critical operations.

What makes the Tillitis Key 1 security token unique is that it doesnt verify applications, it measures them (hashes a digest over the binary), before running them on its open hardware security processor.

Each security token contains a Unique Device Secret (UDS), which together with an application measurement, and an optional user-provided seed, is used to derive key material unique to each application. This allows users to build and load their own apps, while ensuring that each app loaded will have its own cryptographic identity. The design is similar to TCG DICE. The Tillitis Key 1 platform has 128 KB of RAM. The current firmware is designed to load an app that is up to 100 KB in size, and gives it a stack of 28 KB. A smaller app may want to move itself in memory to get larger continuous memory.

Tillitis Key 1 PCB, first implementation Tillitis Key 1 PCB, first implementation

Documentation

Note that development is ongoing. For example, changes might be made to the measuring and derivation of key material, causing the public/private keys of a signer app to change. To avoid unexpected changes, please use a tagged release. Read the Release Notes to keep up to date with changes and new releases.

Applications and host programs that communicate with the apps are kept in this repository: https://github.com/tillitis/tillitis-key1-apps

About this repository

This repository contains hardware, software and utilities written as part of the Tillitis Key 1 project. It is structured as monolithic repository, or "monorepo", where all components live in one repository.

The repository follows the OpenTitan layout.

Licensing

See LICENSES for more information about the projects' licenses.

All contributors must adhere to the Developer Certificate of Origin.