2023-02-06 03:11:22 -05:00
|
|
|
|
|
|
|
[![ci](https://github.com/tillitis/tillitis-key1/actions/workflows/ci.yaml/badge.svg?branch=main&event=push)](https://github.com/tillitis/tillitis-key1/actions/workflows/ci.yaml)
|
|
|
|
|
2022-12-02 01:17:14 -05:00
|
|
|
# Tillitis TKey
|
2022-09-19 02:51:11 -04:00
|
|
|
|
|
|
|
## Introduction
|
|
|
|
|
2022-12-02 01:17:14 -05:00
|
|
|
The Tillitis TKey is a new kind of USB security token. What makes the
|
|
|
|
TKey unique is that it allows a user to load and run applications on
|
2022-11-21 09:49:19 -05:00
|
|
|
the device, while still providing security. This allow for open-ended,
|
2022-11-22 09:05:43 -05:00
|
|
|
flexible usage. Given the right application, the TKey can support use
|
2022-11-21 09:35:43 -05:00
|
|
|
cases such as SSH login, Ed25519 signing, Root of Trust, FIDO2, TOTP,
|
2022-11-21 09:49:19 -05:00
|
|
|
Passkey, and more.
|
2022-11-21 09:35:43 -05:00
|
|
|
|
|
|
|
During the load operation, the device measures the application
|
2022-11-21 09:49:19 -05:00
|
|
|
(calculates a cryptographic hash digest over it) before running
|
2022-11-21 09:35:43 -05:00
|
|
|
it on the open hardware security processor. This measurement
|
|
|
|
is similar to [TCG DICE](https://trustedcomputinggroup.org/work-groups/dice-architectures/).
|
|
|
|
|
2022-11-30 08:23:44 -05:00
|
|
|
Each TKey device contains a Unique Device Secret (UDS), which
|
2022-11-21 09:35:43 -05:00
|
|
|
together with the application measurement, and an optional
|
2022-12-02 07:44:28 -05:00
|
|
|
User-Supplied Secret (USS), is used to derive key material unique to each
|
2022-11-21 09:35:43 -05:00
|
|
|
application. This guarantees that if the integrity of the application
|
|
|
|
loaded onto the device has been tampered with, the correct keys
|
|
|
|
needed for an authentication will not be generated.
|
|
|
|
|
2022-12-02 07:44:28 -05:00
|
|
|
Key derivation with a User-Supplied Secret allows users to build and
|
2022-11-21 09:35:43 -05:00
|
|
|
load their own apps, while ensuring that each app loaded will have
|
|
|
|
its own cryptographic identity, and can also be used for authentication
|
|
|
|
towards different services.
|
|
|
|
|
2022-11-30 08:23:44 -05:00
|
|
|
The TKey platform is based around a 32-bit RISC-V processor and has
|
2023-03-06 08:07:03 -05:00
|
|
|
128 KB of RAM. Firmware can load and start an app that is as large as
|
|
|
|
RAM.
|
2022-11-21 09:35:43 -05:00
|
|
|
|
2022-11-30 08:23:44 -05:00
|
|
|
All of the TKey software, firmware, FPGA Verilog source code, schematics
|
2022-11-22 09:05:43 -05:00
|
|
|
and PCB design files are open source. Like all trustworthy security software
|
|
|
|
and hardware should be. This in itself makes it different, as other
|
|
|
|
security tokens utilize at least some closed source hardware for its
|
|
|
|
security-critical operations.
|
2022-09-19 02:51:11 -04:00
|
|
|
|
2022-10-04 05:07:44 -04:00
|
|
|
![Tillitis Key 1 PCB, first implementation](doc/images/mta1-usb-v1.jpg)
|
2022-11-22 09:05:43 -05:00
|
|
|
*The TK1 PCB, the first implementation of the TKey.*
|
|
|
|
|
2022-09-19 02:51:11 -04:00
|
|
|
|
2024-03-15 10:04:57 -04:00
|
|
|
## Getting started
|
|
|
|
The official website is [tillitis.se](https://tillitis.se).
|
2022-09-19 02:51:11 -04:00
|
|
|
|
2024-03-15 10:04:57 -04:00
|
|
|
The Tkey can be purchased at
|
|
|
|
[shop.tillitis.se](https://shop.tillitis.se).
|
2022-11-30 05:11:13 -05:00
|
|
|
|
2024-03-15 10:04:57 -04:00
|
|
|
All documentation concerning the TKey has been migrated to [TKey
|
|
|
|
Developer Handbook](https://dev.tillitis.se).
|
|
|
|
|
|
|
|
|
|
|
|
## Tkey Device Apps
|
|
|
|
Offically supported apps can be found at
|
|
|
|
[tillitis.se](https://tillitis.se/download/)
|
|
|
|
|
|
|
|
The source and other projects from us can be found here at our
|
|
|
|
[GitHub](https://github.com/tillitis).
|
|
|
|
|
|
|
|
Other known (but not all) projects can be found at
|
|
|
|
[dev.tillitis.se](https://dev.tillitis.se/projects/).
|
2022-11-21 09:43:00 -05:00
|
|
|
|
2024-03-15 10:04:57 -04:00
|
|
|
### Other noteworthy links
|
2022-11-30 05:11:13 -05:00
|
|
|
|
2022-09-19 02:51:11 -04:00
|
|
|
* [Threat Model](doc/threat_model/threat_model.md)
|
2024-03-15 10:04:57 -04:00
|
|
|
* [Release Notes](doc/release_notes.md)
|
|
|
|
* [Quickstart for the DevKit](doc/quickstart.md). Initial programming
|
|
|
|
if you have the "old" DevKit.
|
|
|
|
|
|
|
|
|
|
|
|
Note that development is ongoing. To avoid unexpected changes of
|
|
|
|
derived key material, please use a tagged release. Read the [Release
|
2022-10-04 05:07:44 -04:00
|
|
|
Notes](doc/release_notes.md) to keep up to date with changes and new
|
|
|
|
releases.
|
|
|
|
|
2022-09-19 02:51:11 -04:00
|
|
|
## About this repository
|
|
|
|
|
2024-03-15 10:04:57 -04:00
|
|
|
This repository contains hardware, firmware and utilities written as
|
2022-11-22 09:05:43 -05:00
|
|
|
part of the TKey. It is structured as monolithic repository, or
|
|
|
|
"monorepo", where all components live in one repository.
|
|
|
|
|
2024-03-15 10:04:57 -04:00
|
|
|
Device and client applications, however, are kept in other
|
|
|
|
repositories here at our [GitHub](https://github.com/tillitis).
|
|
|
|
|
2022-09-19 02:51:11 -04:00
|
|
|
## Licensing
|
|
|
|
|
|
|
|
See [LICENSES](./LICENSES/README.md) for more information about
|
|
|
|
the projects' licenses.
|
2022-11-21 07:47:42 -05:00
|
|
|
|
2022-11-21 07:49:31 -05:00
|
|
|
All contributors must adhere to the [Developer Certificate of Origin](dco.md).
|