a.k.a. RICE
.
UDS
: Unique Device Secret. This is a per-device hardware-level secret accessible to the DICE but not accessible after the DICE runs.CDI
: Compound Device Identifier. This value represents the hardware/software combination measured by the DICE. This is the DICE output and is passed to the software which has been measured. This is a secret.
A hash function (e.g. SHA2-384):
hash = H(input)
CDI = KDF(length, ikm, salt, info)
: Key Derivation Function. Output length is length
. It takes an Initial Key Material (ikm
), a cryptographic salt and additional information info
.
PrivateKey, PublicKey = ASYM_KDF(input)
which can be decomposed in:
PrivateKey = KDF(N, input, KEY_SALT, "Key Pair")
PublicKey
is derived fromPrivateKey
depending on the chosen algorithm.
InputValues
= [Code, Config, Mode]
(for the loaded layer)
CDI_1 = KDF(N, CDI_0, H(InputValues), "CDI")
where CDI_0
is UDS
.
CDI_1_PrivateKey, CDI_1_PublicKey = ASYM_KDF(CDI_1)
Subject = CDI_1_Public
Issuer = CDI_0_Public
CDI_1
and CDI_1_Certificate