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 20000 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:
Tham số Kích thƣớc
(bits) Ghi chú
Đầu vào
COUNT 32 Biến đếm
BEARER 5 Xác định sóng mang (bearer)
DIRECTION 1 Xác định hƣớng chuyển dữ liệu là upload hay download
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à vector 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 vector 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:
Trang 113
IV3 = COUNT3, IV4 = BEARER║0002, IV5 =000000002,
IV6 = 000000002, IV7 = 000000002, IV8 = IV0 ⊕ (DIRECTION << 7), IV9 = IV1, IV10 = IV2, IV11 = IV3, IV12 = IV4,
IV13 = IV5, IV14 = IV6 ⊕ (DIRECTION << 7), IV15 = IV7
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à LLENGTH/322. 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
Trang 114 IM = T ⊕ z[ 32×(L‐1) ]
Biến IM chính là giá trị MAC đầu ra của giải thuật 128-EIA3.