Tham số Kích thước
(bits) Ý nghĩa
OBS 1-20000 Dịng bit đầu ra OBS[0]….OBS[LENGTH-1]
2.2.2 Các phần tử và kiến trúc của f8
Bộ tạo dịng khố mật mã dữa trên bộ mã khối KASUMI hoạt động theo chế độ phản hồi ở đầu ra, để tạo dịng khố mã đầu ra bằng bội số của 64 bit. Dữ liệu phản hồi được biến đổi bởi dữ liệu tĩnh và được lưu giữ trên thanh ghi A có độ dài 64 bit, và một bộ đếm (tăng) BLKCNT có độ dài 64 bit. Bộ tạo dịng khố mã f8 được mơ tả trên hình 2.2. Thuật tốn f8 sử dụng 2 thanh ghi 64 bit: thanh ghi tĩnh A và 1 bộ đếm BLKCNT. Thanh ghi A sử dụng giá trị khởi đầu 64 bit:
IV = COUNT || BEARER || DIRECTION || 0…0 (2.17)
IV nhận được nhờ móc nối 32 bit COUNT, 5 bit BEARER,1 bit DIRECTION, một chuỗi 26 bit 0. Bộ đếm BLKCNT được thiết lập bằng 0.Thuật toán f8 sử dụng một hằng số bộ biến đổi khoá (KM) bằng 0 x 55 = 01010101 lặp lại 16 lần
(KM = 0x55555555555555555555555555555555), trong đó 0x là ký hiệu các số hexadecimal). Một tốn tử KASUMI được áp dụng cho thanh ghi A, trong đó sử dụng một phiên bản biến đổi của khố bí mật:
W = KASUMI[ IV ]CK ⊕ KM (2.18) W được lưu giữ trên thanh ghi A.
XXXVIII
Hình 2.2- Bộ tạo dịng khố mã f8.
2.2.3 Tạo dịng khố mã
Chỉ khi bộ tạo dịng khố mã được khởi tạo, nó mới sẵn sàng tạo ra các bit dòng khố mã. Bản tin đã mật mã hố có độ dài LENGTH giữa (1¸ 20000) bit, còn bộ tạo dịng khố mã cung cấp các bit dịng khoá bằng bội số của 64 bit. Số lượng giữa 0 và 63 bit có trọng số thấp nhất sẽ bị loại khỏi khối cuối cùng, điều này phụ thuộc vào tổng số bit được yêu cầu của LENGTH.
Số bit dịng khố mã yêu cầu được ký hiệu là BLOCKS. BLOCKS= (LENGTH/64) và được làm tròn tới số ngun gần nhất (ví dụ, nếu LENGTH=128 thì BLOCKS=2; nếu LENGTH=129 thì BLOCKS=3). Các khối dịng khố được biểu thị là KSB1, KSB2,…, KSBBLOCKS. KSB0 được thiết lập bằng 0.
Để tạo ra một khối dịng khố (KSB), ta thực hiện toán tử sau: Với mỗi số nguyên n, 1 ≤ n ≤ BLOCKS, ta xác định:
KSBn = KASUMI[ W ⊕ BLKCNT ⊕ KSBn-1]CK (2.19)
Trong đó: BLKCNT = n-1
Các bit riêng lẻ KS[0], KS[1], …, KS[LENGTH-1] của dịng khố được tách ra từ KSB1 đến KSBBLOCKS, trong đó bit có trọng số lớn nhất được tách ra đầu tiên, bằng cách áp dụng toán tử:
Với n=1 đến BLOCKS, và với mỗi số nguyên i, 0 ≤ i ≤ 63, thiết lập:
COUNT || BEARER || DIRECTION || 0…0
A CK BLKCNT=0 KASUMI CK CK KASUMI KASUMI CK KS[0]…KS[63] KS[64]…KS[127] KS[128]…KS[191] KASUMI KASUMI CK ⊕ KM BLKCNT=1 BLKCNT=2 BLKCNT=BLOCKS-1
XXXIX
KS[((n-1)*64)+i] = KSBn[i] (2.20)
2.2.4 Mật mã hoá và giải mật mã
Các toán tử mật mã hoá và giải mật mã là đồng nhất (như nhau) và được thực hiện bởi toán tử OR cho dữ liệu đầu vào (IBS), với dịng khố được tạo ra (KS). Với mỗi số nguyên i, 0 ≤ i ≤ LENGTH-1, thì:
OBS[i] = IBS[i] ⊕ KS[i] (2.21)
2.3 Thuật tốn tồn vẹn dữ liệu f9 [06]
Thuật toán là thuật toán KASUMI trong chế độ CBC-MAC, để tính tốn mã nhận thực bản tin đầu vào MAC có độ dài 32 bit, bằng một khố tồn vẹn IK. Nó cung cấp bảo mật dữ liệu báo hiệu giữa máy di động và khối RNC. Q trình tạo lập độ tồn vẹn dữ liệu theo thuật toán f9 gồm 4 bước:
1) Bước 1: Trong thiết của đối tượng sử dụng, hàm f9 tính tốn mã nhận thực bản tin có độ dài 32 bit (MAC-I), dữa trên các tham số đầu vào và dữ liệu báo hiệu (MESSAGE);
2) Bước 2: MAC-I thu được sẽ được gắn vào thông tin báo hiệu và gửi qua giao diện vô tuyến đến khối RNC;
1) Bước 3: RNC tính tốn XMAC-I dữa trên dữ liệu báo hiệu thu được, theo cách thức mà thiết bị đầu cuối đã tính tốn mã nhận thực MAC-I.
2) Bước 4: So sánh giữa XMAC-I với MAC-I để xác định mức độ tồn vẹn của thơng tin báo hiệu.
2.3.1 Các tham số đầu vào và đầu ra của f9
Các tham số đầu vào và đầu ra của f9 được mô tả trong bảng 2.5, và 2.6.
2.3.2 Các phần tử và kiến trúc của f9
KASUMI được sử dụng trong chế độ chuỗi để tạo ra 64 bit digest từ bản tin đầu vào. Đầu ra 64 bit sau đó được cắt cụt, để cung cấp 32 bit MAC-I.
Hình 2.3 mơ tả hàm tồn vẹn f9. Hàm f9 sử dụng 2 thanh ghi 64 bit là A và B. Giá trị khởi đầu của cả hai thanh ghi được thiết lập bằng 0: A = 0 và B = 0. Hàm
XL
f9 cũng sử dụng 1 giá trị hằng số của bộ biến đổi khoá (KM) = 16 lần của octet 0xAA = 10101010.
(KM = 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
Các số liệu đầu vào của f9 gồm: 32 bit COUNT, 32 bit FRESH, một chuỗi bản tin MESSAGE có độ dài LENGTH vơ hạn, và 1 bit DIRECTION. Tất cả đầu vào được móc nối với nhau, sau đó một bit “1” được bổ sung vào chuỗi móc nối này, theo sau là số lượng giữa 0 và 63 bit “0”, sao cho độ dài tổng của chuỗi kết quả là một số nguyên bằng bội lần của 64 bit. Chuỗi này được gọi là chuỗi được đệm (PS):
PS = COUNT[0]…COUNT[31] FRESH[0]…FRESH[31]
MESSAGE[0]… MESSAGE[LENGTH-1] DIRECTION[0] 1 0*
Trong đó 0* chỉ thị số bit “0” trong trường đệm (giữa 0 và 63).