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.