Key Manager DPE HWIP Technical Specification

RegressionVersionStagesResults
keymgr_dpe2.0.0D0, V0

Keymgr DPE is currently under development according to this RFC. This is indicated by the development stages (see keymgr_dpe.hjson and here). As a result, the documentation can slightly differ from the current RTL implementation.

Overview

This document specifies the functionality of the OpenTitan key manager DPE which implements the DICE Protected Environment (DPE).

Features

  • Multiple key slots, each holding one DICE context whose secret is hidden from software.
  • One-way key derivation, computed by KMAC over hardware- and software-supplied inputs.
  • Software-controlled DICE hierarchy: any valid slot can act as the parent of a newly derived child slot.
  • Per-slot policies that constrain whether children may be derived and whether the parent is retained.
  • Version controlled key generation, bounded by a per-slot maximum key version.
  • Key generation for both software consumption and hardware sideload (AES, KMAC, OTBN and HMAC).
  • Support for DICE open profile and for the DICE Protection Environment (DPE).

Description

The Keymgr DPE implements the hardware component of the identities and root keys strategy of OpenTitan.

It enables the system to shield critical assets from software directly and provides a simple model for software to use derived key outputs, which software uses in turn to construct DICE identities and certificates. Keymgr DPE holds NumInstHwSlot key slots (configurable up to NumMaxHwSlot, currently 8), each storing an independent DICE context. Software selects the source and the destination slot of every operation, so several DICE contexts can coexist and be arranged into a hierarchy instead of a single chain.

See the Theory of Operation for the derivation scheme, the working state machine and the peripheral connections, and the Programmer’s Guide for the register sequences that drive each operation.