5 The A8_V MILENAGE algorithm
3GPP55.236Release 17Specification of A8_V MILENAGE Algorithm: An example algorithm for the key generation function A8_VTS
An example algorithm set for UMTS, called MILENAGE (see Note 1), is specified in TS 35.206 [1]. A8_V MILENAGE makes use of MILENAGE.
Specifically, the function f3 from the UMTS MILENAGE is making use of (all input and output names are prefixed by "MIL3G-" to distinguish them clearly from the inputs and outputs of A8_V MILENAGE):
Function |
Inputs |
Output |
f3 |
MIL3G-K[0]…MIL3G-K[127] MIL3G-RAND[0]…MIL3G-RAND[127] |
MIL3G-CK[0]…MIL3G-CK[127] |
The A8_V MILENAGE functions are defined as follows:
– Let (MIL3G-K[0]…MIL3G-K[127]) = (V_Ki[0]…V_Ki[127])
– Let (MIL3G-RAND[0]…MIL3G-RAND[127]) = (EXP_RAND[0]…EXP_RAND[127])
Whereby
EXP_RAND[bits 0,1, . . .126,127] = EXPAND[bits 0,1, . . .39] || EXPAND[bits 0,1, . . .39] || EXPAND[bits 0,1, . . .39] || ‘11111111’
EXPAND [bits 0,1, . . .39] = ‘1111’ || VSTK_RAND[bits 0,1, . . .35]
– Compute MIL3G-CK from MIL3G-K and MIL3G-RAND, using the MILENAGE function f3
– Set (VSTK[0]…VSTK[127]) = (MIL3G-CK[0]…MIL3G-CK[127])
NOTE 1: MILENAGE uses a 128-bit operator-specific constant OP; a value has to be assigned to this constant for MILENAGE to be fully specified.