4 The GSM-MILENAGE algorithms (normative)

3GPP55.205Release 17Specification of the GSM-MILENAGE algorithms: An example algorithm set for the GSM Authentication and Key Generation Functions A3 and A8TS

An example algorithm set for UMTS, called MILENAGE (note 1), is specified in [1]. GSM-MILENAGE makes use of MILENAGE.

Specifically, the functions from the UMTS MILENAGE which we make use of are the following (we prefix all input and output names by "MIL3G-" to distinguish them clearly from the inputs and outputs of A3 and A8):

Function

Inputs

Output

f2

MIL3G-K[0]…MIL3G-K[127]

MIL3G-RES[0]…MIL3G-RES[63]

f3

MIL3G-CK[0]…MIL3G-CK[127]

MIL3G-RAND[0]…MIL3G-RAND[127]

f4

MIL3G-IK[0]…MIL3G-IK[127]

The GSM-MILENAGE functions are defined as follows:

– Let (MIL3G-K[0]…MIL3G-K[127]) = (Ki[0]…Ki[127])

– Let (MIL3G-RAND[0]…MIL3G-RAND[127]) = (RAND[0]…RAND[127])

– Compute MIL3G-RES, MIL3G-CK and MIL3G-IK from MIL3G-K and MIL3G-RAND, using the MILENAGE functions f2, f3, and f4 respectively

– Set (KC[0]…KC[63]) = (MIL3G-CK[0]…MIL3G-CK[63]) 
(MIL3G-CK[64]…MIL3G-CK[127]) 
(MIL3G-IK[0]…MIL3G-IK[63]) 
(MIL3G-IK[64]…MIL3G-IK[127])

– Derive SRES from MIL3G-RES using an operator-selected SRES Derivation Function. This function must be precisely specified for the GSM-MILENAGE A3 algorithm to be fully defined. The two main recommended options are as follows (note 2):

– Recommended SRES Derivation Function #1:
(SRES[0]…SRES[31]) = (MIL3G‑RES[0]…MIL3G-RES[31])  (MIL3G‑RES[32]…MIL3G-RES[63]).

– Recommended SRES Derivation Function #2:
(SRES[0]…SRES[31]) = (MIL3G‑RES[0]…MIL3G-RES[31]).

Alternative SRES Derivation Functions may be specified.

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.

NOTE 2: The 3GPP standard conversion function to derive a GSM SRES of 32 bits from a UMTS XRES of up to 128 bits is as follows [4]:
SRES = XRES*1 xor XRES*2 xor XRES*3 xor XRES*4, where XRES* is 16 octets long and XRES* = XRES if XRES is 16 octets long and XRES* = XRES || 0…0 if XRES is shorter than 16 octets, XRES*i are all 4 octets long and XRES* = XRES*1 || XRES*2 || XRES*3 || XRES*4

Recommended SRES Derivation Function #1 is the result of applying this standard conversion function to a 64-bit XRES equal to MIL3G-RES[0]…MIL3G-RES[63] from MILENAGE. Recommended SRES Derivation Function #2 is the result of applying this standard conversion function to a 32-bit XRES equal to MIL3G-RES[0]…MIL3G-RES[31] from MILENAGE.