Chứng thực 128-EIA3

Một phần của tài liệu BÁO CÁO THỰC TẬP-KHẢO SÁT MÃ DÒNG VÀ ỨNG DỤNG (Trang 113)

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à 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

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. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu BÁO CÁO THỰC TẬP-KHẢO SÁT MÃ DÒNG VÀ ỨNG DỤNG (Trang 113)