Generally speaking, GSM Milenage is implemented in networks where A3/A8 authentication and key generation algorithms, which preceded Milenage, are already implemented. So this discussion will start with the requirements of the A3/A8 algorithms on a network level and then show what the additional overhead is for Milenage.
When A3/A8 algorithms are implemented, here’s how authentication and key generation work
The inputs are the Ki and the RAND. The outputs are the SRES (which is derived by applying an algorithm known as A3 to the Ki and RAND) and Kc (which is derived by applying an algorithm known as A8 to the Ki and RAND)
To implement it at a network level, the Ki must be stored on the HLR and the SIM and must be identical to each other. On the HLR and the SIM, the A3/A8 algorithms must be implemented, again identically. Only when these two conditions are met can the SIM and the HLR compute SRES values and Ki values that match one another. The matching of these vlaues computed on two different nodes is the success criteria for authentication and key generation.
Switching to GSM Milenage adds an extra input and replaces the A3/A8 algorithms with Milenage algorithms, which are adapted for a GSM network
The extra input required is the OPc (which, like the Ki, is stored on the SIM card and on the HLR and have to be identical) So SIM cards which support Milenage must contain this extra value known as OPC. Like the Ki, it must be synced between the SIM card and HLR.
It may be that SIM cards already in use in the network may not be upgradeable to support GSM Milenage algorithms. In that instance, both A3/A8 algorithms as well as GSM Milenage algorithms will need to be supported in the network. Either that or all SIM cards must be exchanged for new ones.
To explain how to implement the chage from the A3/A8 algorithm to the Milenage algorithm, we need to look at bit more deeply at the nuts and bolts of the GSM Milenage Algorithm. The A3/A8 algorithm used previously is replaced by five different functions in Milenage: f2, f3 and f4, and two others, which use the outputs of f2, f3 and f4 to compute the Kc and the SRES.
The three functions, f2, f3 and f4, come directly from the Milenage standard. The two functions used to compute the Kc and SRES are the adaptations to Milenage that allow it to be used in the GSM network.
The three functions known as f2, f3 and f4 are defined in the standard for Milenage, 3GPP TS 35.205. Any explanation of those three functions will make this discussion far too complicated. Suffice to say that the definition of these three functions are customer controlled and require that values for six variables, c2, c3, c4, r2, r3, and r4, be chosen and stored identically on the HLR and on the SIM.
The last additional overhead is choosing the SRES derivation function. There are two defined and the one chosen must be the same on both the HLR and the SIM. A Kc derivation function must also be implemeted on the SIM and the HLR but that is a internal requirement for the SIM and the HLR and does not add any further actions when implementing Milenage at a network level.
So implementing Milenage at a network level requires,
1. Ki, and OPc must be stored on the HLR as well as the SIM with identical values.
2. Three functions, f2, f3 and f4 much be implemented on both the HLR and the SIM and six values associated with those functions, c2, c3, c4, r2, r3, and r4, must also be stored identically on the SIM and the HLR.
3. The SRES function chosen must be identically implemented on both the HLR and SIM and the function to compute must also be implemented.