The integrity algorithm GIA4 computes a 32-bit MAC (Message Authentication Code) of a given input message using integrity key KI128. The approach adopted uses KASUMI [2] in a form of CBC-MAC mode.
The prefix "0x" is used to indicate hexadecimal numbers.
The assignment operator "=", is used as in several programming languages. So the following:
<variable> = <expression>
means that <variable> assumes the value that <expression> had before the assignment took place. For instance:
means:
(new value of x) becomes (old value of x) + (old value of y) + 3.
All data variables in the present document are presented with the most significant bit (or byte) on the left hand side and the least significant bit (or byte) on the right hand side. Where a variable is broken down into a number of sub-strings, the left most (most significant) sub-string is numbered 0, the next most significant is numbered 1 and so on through to the least significant.
For example an n-bit MESSAGE is subdivided into 64-bit substrings MB0,MB1…MBi so for the following message:
0x0123456789ABCDEFFEDCBA987654321086545381AB594FC28786404C50A37…
MB0 = 0x0123456789ABCDEF
MB1 = 0xFEDCBA9876543210
MB2 = 0x86545381AB594FC2
MB3 = 0x8786404C50A37…
In binary this would be:
000000010010001101000101011001111000100110101011110011011110111111111110…
with
MB0 = 0000000100100011010001010110011110001001101010111100110111101111
MB1 = 1111111011011100101110101001100001110110010101000011001000010000
MB2 = 1000011001010100010100111000000110101011010110010100111111000010
MB3 = 1000011110000110010000000100110001010000101000110111…
A, B
are 64-bit registers that are used within the function to hold intermediate values.
BLOCKS
an integer variable indicating the number of successive applications of KASUMI that need to be performed.
CONSTANT-F
a 32-bit parameter which is constant for any given FRAMETYPE input.
DIRECTION
a 1-bit input indicating the direction of transmission (uplink or downlink).
FRAMETYPE
an 8-bit input to the function indicating the type of frame to be protected.
INPUT-I
a 32-bit time variant input to the function.
KI128
the 128-bit integrity key.
KM
a 128-bit constant that is used to modify a key.
M
an input to the function which specifies the number of octets of message to be MAC'd (1-65536).
MAC
the 32-bit message authentication code (MAC) produced by the function.
MESSAGE
the input octet stream of length M octets that is to be processed by the function.
PS
is the input padded string processed by the function.