DICE
########
doc
==============
- `DICE: Device Identifier Composition Engine `_
- `RIoT `_
- `TCG: DICE `_
- `DICE `_
- `Dominance as a New Trusted Computing Primitivefor the Internet of Things `_
glossary
==========================================================
DICE: Device Identifier Composition Engine
CDI: Compound Device Identifier
DeviceID: 从CDI派生的asymmetric key
DevID, IDevID, LDevID: follow IEEE802.1AR 标准的定义
- IDevID: Initial DevID,是manufacturing阶段的id,主要与制造商相关
- LDevID: Local DevID,是post manufacturing阶段的id,主要与oem商相关
ECA: Embedded Certificate Authority
TCB: Trusted Computing Base,指启动过程中载入的component
FSD: firmware security descriptor(一般是firmware的hash)
TCI: TCB Component Identity,指TCB的标识(例如firmware的FSD)
UDS: Unique Device Secret, 256 bits is better
overview
==========================================================
power on -> DICE ( UDS ) -> Layer 0 (Secret 0) -> Layer 1 (Secret 1) -> ...
以UDS为基础,为每个layer自动化链式派生Secret
layer如果发生变化,secret也会变化——也就是说,每次firmware升级,secret都会变
每个layer对应的secret,对于该layer本身,也是保密的——也就是说,layer自己无法获得自己的secret原始值
后台无需维护UDS的database
Policy OID
==========================================================
注意同样有Initial/Local的区分
Identity Policy OID: 设备标识
Attestation Policy OID: 使用Attestation Key签发device的特征信息(例如sw hash, product name等), describe a device
Assertion Policy OID: 使用Assertion Key签发device的相关信息,reference measurements(一般指该对象的hash)
Certificate
==========================================================
IDevID Certificate的Issuer如果是ECA,那么ECA的issuer应该往上链到manufacturer CA
LDevID Certificate的Issuer如果是ECA,那么ECA的issuer应该往上链到owner CA(一般是OEM的CA)
Alias Key Certificate的Issuer是DevID Certificate,Alias Key Pair由UDS & 下一级Firmware的FSD派生
ECA Certificate的Issuer如果是ECA自身,那么必须标识当前layer的TCB
Attestation Certificate的Issuer可能是ECA,或者外部Issuer
first mutable code
==========================================================
first mutable code,要经过manufacturer的签名校验才能更新,或者出厂后就不再更新。。。
CDI可能由硬件直接保护(例如hsm)、也可能由first mutable code保护,避免泄漏。参考ISO/IEC 27034。
在重置后,会将first mutable code的measurement(即hash),与UDS(重置后只允许读一次)结合,派生出firmware mutable code对应的CDI。在下次重置之前,禁止再次读取UDS。
first mutable code可能从DICE提供的专区使用CDI(read, write, modify),但不能读取CDI原始值本身。
Basic Attestation Protocol
==========================================================
基于symmetric
首先,基于layer 0的measurement、UDS派生symmetric alias key。
verifier发challenge C。
layer 0生成随机Nonce N
R = HMAC(symmetric alias key, C | N)
向verifier返回N、R
TLS-PSK Based Attestation Protocol
==========================================================
与Basic Attestation Protocol大体类似,只是派生的是PSK,而非symmetric alias key;verifier要从device提供的PSK ID hints中选择一个PSK ID hint,用于与CDI派生PSK。
再使用TLS-PSK与verifier安全通信。
DeviceID Key Pair
==========================================================
DICE根据UDS + First Mutable Code的measurement派生CDI,根据CDI派生DeviceID Key Pair
无需每次boot重复派生。
device可以从CDI派生一个symmetric key,用于加解密 DeviceID Key Pair。
Alias Key Pair
==========================================================
Device Firmware可获取DeviceID Public Key内容,并使用之。注意,private key内容是保密的。
Device Firmware可获取Alias Key Pair内容,并使用之。
Alias Key Pair的合法性由DeviceID Key保证。
RIoT
==========================================================
FDS (Fuse Derived Secret) = KDF( Device Secret, Hash(L1) )
基于FDS派生对称密钥,可以进一步保护敏感数据。