2 THUẬT TOÁN BẢO MẬT THÔNG TIN CHO MẠNG D
2.5.2 Thuật toán MILENAGE
2.5.2.1 Các đầu vào và đầu ra
Các tham vào và ra của thuật toán được mô tảở bảng 2.3, 2.4, 2.5 và 2.6. Tập thuật toán MILENAGE sử dụng các phần tử sau:
- Một hàm mật mã khối với 128 bit đầu vào và một khoá có độ dài 128 bit. Nếu đầu vào là X, khoá là K, thì đầu ra Y = E[x]k.
- 128 bit OP. Đây là trường cấu hình thuật toán có thể thay đổi do nhà khai thác lựa chọn.
2.5.2.2 Các phần tử và kiến trúc của thuật toán
Tập thuật toán được đặc tả bằng một hàm mật mã khối E. Bộ mật mã khối
được chọn là Rijndael và đây là thuật toán mật mã hoá tiên tiến AES, có kích thước 128 bit, sử dụng khoá có độ dài 128 bit.
E[x]k = kết quả của việc áp dụng thuật toán mật mã Rijndael đến 128 bit X bằng cách sử dụng khoá K có độ dài 128 bit.
Các đầu vào và đầu ra của Rijndael được xác định như là chuỗi các byte. Chuỗi 128 bit x = x[0] || x[1] || … x[127] được xem như là chuỗi các byte trong đó x[0] || x[1] || … x[7] là byte đầu tiên, x[8] || x[9] || … x[15] là byte thứ hai,... Khoá và chuỗi đầu ra được biến đổi theo cách tương tự.
128 bit OPc nhận được từ OP và K như sau:
OPC = OP ⊕ E[OP]K (2.30)
Bảng 2.7: Các tham số đầu vào của f1
Tham số Độ dài (bits) Chú thích
K 128 Khoá thuê bao K[0]…K[127]
RAND 128 Thách thức ngẫu nhiên RAND[0]…RAND[127]
SQN 48 Số thứ tự SQN[0]…SQN[47]
AMF 16 Trường quản lý nhận thực AMF[0]…AMF[15]
Bảng 3.8: Các tham số đầu vào của f2, f3, f4 và f5
Tham số Độ dài (bits) Chú thích
K 128 Khoá thuê bao K[0]…K[127]
RAND 128 Thách thức ngẫu nhiên RAND[0]…RAND[127]
Bảng 2.9: Các tham sốđầu ra của f1
Tham số Độ dài (bits) Chú thích
MAC-A 64 Mã nhận thực mạng MAC-A[0]…MAC-A[63]
Bảng 2.10: Các tham số đầu ra của f2
Tham số Độ dài (bits) Chú thích
RES 64 Đáp ứng RES[0]…RES[63]
Bảng 2.11: Các tham số đầu ra của f3
Tham số Độ dài (bits) Chú thích
CK 128 Khoá bí mật CK[0]…CK[127]
Bảng 2.12: Các tham số đầu ra của f4
Tham số Độ dài (bits) Chú thích
IK 128 Khoá toàn vẹn IK[0]…IK[127]
Bảng 2.13: Các tham số đầu ra của f5
Tham số Độ dài (bits) Chú thích
AK 48 Khoá che dấu AK[0]…AK[47]
Một giá trị 128 bit TEMP trung gian được tính như sau:
Một giá trị 128 bit IN1được xây dựng như sau:
IN1[0] .. IN1[47] = SQN[0] .. SQN[47] IN1[48] .. IN1[63] = AMF[0] .. AMF[15] IN1[64] .. IN1[111] = SQN[0] .. SQN[47] IN1[112] .. IN1[127] = AMF[0] .. AMF[15]
Năm hằng số 128 bit c1, c2, c3, c4, c5 được xác định như sau:
c1[i] = 0 với 0 ≤ i ≤ 127
c2[i] = 0 với 0 ≤ i ≤ 127, ngoại trừ c2[127] = 1 c3[i] = 0 với 0 ≤ i ≤ 127, ngoại trừ c3[126] = 1 c4[i] = 0 với 0 ≤ i ≤ 127, ngoại trừ c4[125] = 1 c5[i] = 0 với 0 ≤ i ≤ 127, ngoại trừ c5[124] = 1
Năm số nguyên r1, r2, r3, r4, r5 được định nghĩa như sau:
r1 = 64; r2 = 0; r3 = 32; r4 = 64; r5 = 96
Năm khối 128 bit OUT1, OUT2, OUT3, OUT4, OUT5 dược tính như sau:
OUT1 = E[TEMP ⊕ rot(IN1 ⊕ OPC, r1) ⊕ c1]K⊕ OPC OUT2 = E[rot(TEMP⊕ OPC, r2) ⊕ c2]K⊕ OPC OUT3 = E[rot(TEMP⊕ OPC, r3) ⊕ c3]K⊕ OPC OUT4 = E[rot(TEMP⊕ OPC, r4) ⊕ c4]K⊕ OPC OUT5 = E[rot(TEMP⊕ OPC, r5) ⊕ c5]K⊕ OPC (2.32) R A N D EK S Q N ||A M F ||S Q N ||A M F ro ta te b y r1 EK ro ta te b y r3 EK ro ta te b y r2 EK ro ta te b y r5 EK ro tate b y r4 EK O PC c 1 f1 f1 * f5 f2 f3 f4 f5 * O PC O PC O PC O PC c 2 c 3 c4 c5 O PC O PC O PC O PC O PC O PC O P EK O PC
Các đầu ra của các hàm khác nhau được định nghĩa như sau:
Đầu ra của f1 = MAC-A, trong đó MAC-A[0] .. MAC-A[63] = OUT1[0] .. OUT1[63]
Đầu ra của f1* = MAC-S, trong đó MAC-S[0] .. MAC-S[63] = OUT1[64] .. OUT1[127]
Đầu ra của f2 = RES, trong đó RES[0] .. RES[63] = OUT2[64] .. OUT2[127]
Đầu ra của f3 = CK, trong đó CK[0] .. CK[127] = OUT3[0] .. OUT3[127]
Đầu ra của f4 = IK, trong đó IK[0] .. IK[127] = OUT4[0] .. OUT4[127]
Đầu ra của f5 = AK, trong đó AK[0] .. AK[47] = OUT2[0] .. OUT2[47]
Đầu ra của f5* = AK, trong đó AK[0] .. AK[47] = OUT5[0] .. OUT5[47]
(f1* là hàm nhận thực bản tin trong trường hợp phải đồng bộ lại, f5* là hàm tạo khoá dùng để tính toán khoá AK khi cần đồng bộ lại)