Skip to content

Latest commit

 

History

History
52 lines (29 loc) · 1.16 KB

File metadata and controls

52 lines (29 loc) · 1.16 KB

M1

UID' ID AuthID
120 bits 4 bits 4 bits

M1 = UID' | ID | AuthID

M2

Note K1 is the derived encryption key used in M2

K1 = KDF(KAuthID, KEY_UPDATE_ENC_C)

CID = 28 bit counter value for key

FID = 5 bit key flag value

M2 = ENCCBC,K1,IV=0(CID | FID | "0...0"95 | KID)

M3

Note K2 is the derived CMAC authentication key used in M3.

K2 = KDF(KAuthID, KEY_UPDATE_MAC_C)

M3 = CMACK2(M1|M2)

M4

Note K3 is the derived encryption key used in M4

K3 = KDF(KID, KEY_UPDATE_ENC_C)

Note AES ECB mode is used in the spec. Since we are only encrypting 1 block, this is equivalent to CBC mode with an IV=0.

M4 = UID | ID | AuthID | ENCECB,K3(CID)

M5

K4 = KDF(KID, KEY_UPDATE_MAC_C)

M5 = CMACK4(M4)

Key Derivation

Keys are derived using the Miyaguchi-Preneel compression algorithm based on [NIST800_108]. Derived keys are calculated by compressing the correctly preprocessed concatenation of a secret K and a constant C.

KDF(K,C) = AES-MP(K | C)