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.