| UID' | ID | AuthID |
|---|---|---|
| 120 bits | 4 bits | 4 bits |
M1 = UID' | ID | AuthID
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)
Note K2 is the derived CMAC authentication key used in M3.
K2 = KDF(KAuthID, KEY_UPDATE_MAC_C)
M3 = CMACK2(M1|M2)
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)
K4 = KDF(KID, KEY_UPDATE_MAC_C)
M5 = CMACK4(M4)
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)