3.3.2.1. Giới thiệu
Giải thuật 128-EIA3 dùng để chứng thực một thông điệp có độ dài từ 1 đến 20.000 bit. 128-EIA3 sẽ dùng một khóa IK để tạo ra mã xác thực thông điệp (Message authentication code- MAC). Đầu vào và đầu ra của giải thuật này như sau:
(bits)
Đầu vào COUNT 32 Biến đếm
BEARER 5 The bearer identity
DIRECTION 1 The direction of transmission
IK 128 Khóa
LENGTH 32 Chiều dài (bits) của thông điệp đầu vào
M LENGTH Thông điệp đầu vào
Đầu ra IM 32 MAC - Mã chứng thực thông điệp
3.3.2.2. Tạo keystream
Giống như 128-EEA3, giải thuật 128-EIA3 cũng cần truyên cho ZUC khóa và vectơ khởi tạo. Biến IK được dùng làm khóa của ZUC. Biến COUNT cũng được tách thành từng byte:
COUNT=COUNT0 ║COUNT1 ║COUNT2 ║COUNT3
Dùng biến IV 128-bit làm vectơ khởi tạo sử dụng cho ZUC. IV sẽ được tách nhỏ thành từng byte và được gán giá trị cho từng byte này. Cách gán giá trị trong giải thuật này khác với trong 128-EEA3:
IV0 = COUNT0, IV1 = COUNT1, IV2 = COUNT2,
IV3 = COUNT3, IV4 = BEARER║0002, IV5 =000000002,
IV6 = 000000002, IV7 = 000000002, IV8 = IV0 ⊕ (DIRECTION << 7), IV9 = IV1, IV10 = IV2, IV11 = IV3,IV12 = IV4,
Lúc bấy giờ hai biến CK và IV sẽ được nạp để ZUC hoạt động. Số lần word đầu ra của ZUC trong giải thuật này là L=LENGTH/32+2. Tách keystream z mà ZUC vừa sinh ra thành từng bit:
z = z0 || z1 || … || z32×L‐1.
Định nghĩa z[i] với i trong khoảng [0,…,32×(L‐1)]
z[i] = zi ||zi+1 ||…||zi+31.
3.3.2.3. Tính giá trị MAC
Cho T là một word 32 bit và được gán giá trị 0. Giá trị MAC được tính bằng đoạn mã giả sau:
For each i=0,1,2,…,LENGTH‐1 if M[i] = 1, then T=T⊕z[i] end if end for T = T ⊕ z[ LENGTH ] IM = T ⊕ z[ 32×(L‐1) ]