Chứng thực 128-EIA3

Một phần của tài liệu khảo sát mã dòng và ứng dụng (Trang 103)

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 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) ]

Một phần của tài liệu khảo sát mã dòng và ứng dụng (Trang 103)