n |
prime(n) |
prime(n) ở dạng hexa |
32 |
232 - 5 |
0x FFFFFFFB |
36 |
236 - 5 |
0x 0000000F FFFFFFFB |
64 |
264 - 59 |
0x FFFFFFFF FFFFFFC5 |
128 |
2128 - 159 |
0x FFFFFFFF FFFFFFFF FFFFFFFF FFFFFF61 |
130 |
2130 - 5 |
0x 00000003 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFB |
S[i] octet thứ i của chuỗi S (các chỉ số bắt đầu từ 0)
CHÚ THÍCH Đặc tả của UMAC trong Điều 6.2 sử dụng chỉ số bất đầu từ 1 thay cho 0.
S[i...j] Chuỗi con của S bao gồm các octet từ i đến j.
taglen Độ dài của thẻ, tính theo octet
uint2bitstr(x, n) Chuỗi n-octet S sao cho bitstr2uint(S) = x.
uint2octetstr(x, n) Chuỗi n-octet S sao cho x = octetstr2uint(S).
X|s Cắt ngắn về bên trái của khối bit X: nếu X có độ dài lớn hơn hoặc bằng s, thì X|s là khối s-bit bao gồm s bit bên trái nhất của X.
X|s Cắt ngắn về bên phải của khối bit X: nếu X có độ dài lớn hơn hoặc bằng s, thì X|s là khối s-bit bao gồm s bit bên phải nhất của X.
X >> 1 Dịch phải của khối bit X đi 1 vị trí: bit bên trái nhất của Y = X >> 1 luôn được đặt bằng 0.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
zeropad(S, n) Đối với số nguyên dương n, chuỗi S được đệm bằng các bit 0 thành bội dương gần nhất của n octet. Một cách hình thức, zeropad(S, n) = S II T, trong đó T là chuỗi ngắn nhất của các bit 0 (có thể rỗng) để mà S II T là không rỗng và n chia hết octetlength(S II T).
Phép toán XOR theo từng bit trên các chuỗi bit. Nếu A, B là các chuỗi có cùng độ dài thì A B là chuỗi bằng với XOR logic theo từng bit của A và B.
^ Phép toán AND logic theo từng bit trên các chuỗi bit. Nếu A, B là các chuỗi có cùng độ dài thì A ˄ B là chuỗi bằng với AND logic theo từng bit của A và B.
+32 Phép cộng của 2 chuỗi 32-bit, mang lại một chuỗi 32-bit. Một cách hình thức hơn, S +32 T = unit2bitstr(bitstr2unit(S) + bitstr2unit(T) mod 232,4).
+64 Phép cộng của 2 chuỗi 64-bit, mang lại một chuỗi 64-bit. Một cách hình thức hơn, S +64 T = unit2bitstr(bitstr2unit(S) + bitstr2unit(T) mod 264, 8).
* Phép toán nhân trên các số nguyên.
*64 Phép nhân của 2 chuỗi 64-bit, mang lại một chuỗi 64-bit. Một cách hình thức hơn, S *64 T = unit2bitstr(bitstr2unit(S) * bitstr2unit(T) mod 264, 8).
CHÚ THÍCH Các phép toán +32, +64 và *64 thích hợp với các phép tính cộng và nhân mà được thực hiện một cách hiệu quả bởi các máy tính hiện đại.
II Phép ghép của hai chuỗi bit. Nếu A và B là các chuỗi bit có độ dài a và b tương ứng, thì A II B là chuỗi bit có độ dài a + b, a bit bên trái nhất (đầu tiên) của nó là các bit của A, và b bit bên phải nhất (cuối cùng) của nó là các bit của B.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
1n Chuỗi bao gồm n bit 1.
{ } Chuỗi bit với độ dài 0.
• Phép nhân trong trường GF(2128). Đa thức xác định mà định nghĩa phép biểu diễn của GF(2128) là 1 + α + α2 + α7 + α128
CHÚ THÍCH Giả sử U và V là các khối 128-bit. Khi đó khối 128-bit W = U • V có thể được tính như sau:
a) Đặt W = 0128 và Z = U.
b) For i = 1,2, …., 128, thực hiện 2 bước sau:
1) Nếu bit(V, i) = 1 thì lấy W = W Z;
2) Nếu bit(Z, 128) = 0 thì lấy Z = Z >> 1; ngược lại lấy Z = (Z >> 1) (11100001 II 0120).
Các biến là các chữ cái viết hoa thì ký hiệu các chuỗi; các biến là các chữ cái viết thường thì ký hiệu các số nguyên.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Các mã xác thực thông điệp dựa trên hàm băm phổ biến sử dụng một thuật toán mã hóa (mã khối hoặc mã dòng). Các mã xác thực thông điệp kiểu này có tính chất đặc biệt là độ an toàn của chúng có thể là chứng minh được dưới giả thiết rằng thuật toán mã hóa là an toàn.
Các thuật toán MAC dựa trên hàm băm phổ biến yêu cầu một khóa chủ K, thông điệp M và giá trị nonce N như đầu vào. MAC được tính bằng cách sử dụng dãy các bước sau:
1) Tiền xử lý khóa. Khóa chủ K được sử dụng để sinh ra khóa băm KH và khóa mã hóa KE.
2) Tiền xử lý thông điệp. Thông điệp đầu vào M được mã thành khuôn dạng đầu vào cần thiết cho hàm băm.
3) Băm thông điệp. Thông điệp đã được mã được băm dưới điều khiển của khóa băm KH dùng một hàm băm phổ biến. Kết quả là một giá trị băm H có độ dài ngắn, cố định.
4) Hoàn tất. Giá trị băm H được mã hóa dưới điều khiển của khóa mã hóa KE. Kết quả là mã xác thực thông điệp MAC.
Đối với tất cả các cơ chế đã được trình bày trong tiêu chuẩn này, độ dài của thông điệp đầu vào được mong đợi là một số nguyên dạng octet.
CHÚ THÍCH Đối với tất cả các thuật toán MAC dựa trên băm phổ biến, cực kỳ quan trọng rằng một nonce khác sẽ được sử dụng cho mỗi thông điệp mới mà được xác thực dưới cùng một khóa. Nếu yêu cầu an toàn này không được thoả mãn, thì độ an toàn của thuật toán bị suy giảm nghiêm trọng.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Điều này quy định bốn cơ chế sử dụng một hàm băm phổ biến.
6.2 UMAC
6.2.1 Mô tả của UMAC
UMAC là một họ có 4 thuật toán MAC được tối ưu hóa cho 4 độ dài bit đầu ra khác nhau, được ký hiệu bởi UMAC-32, UMAC-64, UMAC-96 và UMAC-128. UMAC có thể được sử dụng cùng với mã khối bất kỳ từ ISO/IEC 18033-3. Nếu mã khối được sử dụng có độ dài khóa |K| bit và độ dài khối |B| bit, thì UMAC sử dụng một khóa |K|-bit K, và độ dài của nonce N là ở giữa 8 và |B| bit. Phụ thuộc vào thành viên nào của họ UMAC được sử dụng, độ dài của MAC được tạo ra là 32, 64, 96 hoặc 128 bit. Nó được biểu diễn bởi tham số taglen, và có thể là 4, 8, 12 hay 16 octet, tương ứng. Độ dài của thông điệp đầu vào phải nhỏ hơn 267 octet. Thông điệp đầu vào cho hàm UMAC phải chứa một số trọn vẹn các octet, tức là, độ dài tính theo bit của nó sẽ là một bội của 8. Nếu độ dài tính theo bit không là bội của 8, cơ chế này không được sử dụng.
CHÚ THÍCH 1 Phiên bản của UMAC được chỉ ra ở đây cần không được lẫn với các phiên bản sớm hơn của thuật toán UMAC, ví dụ [2].
CHÚ THÍCH 2 Nếu đầu vào của hàm MAC chứa một số trọn vẹn các byte, thì hàm được chỉ ra ở đây là giống với hàm đã được mô tả trong RFC 4418 [6],
6.2.2 Các yêu cầu
Trước khi sử dụng UMAC, các tham số sau cần phải được thống nhất:
- Một mã khối đã được chuẩn hóa trong ISO/IEC 18033-3. Việc lựa chọn của mã khối xác định độ dài khóa |K| và độ dài khối |S|;
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Độ dài của nonce, nó cần phải nằm giữa 8 và |B| bit.
6.2.3 Chú giải và các hàm bổ trợ
6.2.3.1 Các phép toán trên các chuỗi
Ngược lại với phần còn lại của tiêu chuẩn này, đặc tả của UMAC sử dụng bắt đầu của chỉ số từ 1 khi đánh số các phần tử trong một dãy. Do vậy, đối với UMAC, S[i] ký hiệu octet thứ i của chuỗi S, trong đó i ≥ 1
6.2.3.2 Hàm bổ trợ KDF
Hàm dẫn xuất khóa này sinh ra các bit giả ngẫu nhiên. Nó trả về numoctets các octet đầu ra.
ĐẦU VÀO: Khóa chủ K, chuỗi (keylen)-octet
index, số nguyên không âm nhỏ hơn 264
numoctets, số nguyên không âm nhỏ hơn 264
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
a) n = ceil(numoctets I blocklen)
b) Đặt Y là chuỗi rỗng
c) For i = 1 to n do
1) T = uint2bitstr(index, blocklen - 8) II uint2bitstr(i, 8)
2) T = Enc(K, T)
3) Y = Y || T
d) Y = Y[1...numoctets]
e) Output Y
CHÚ THÍCH Hàm dẫn xuất khóa KDF sử dụng một mã khối ở chế độ con đếm như được định nghĩa trong ISO/IEC 10116 [8].
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Hàm dẫn xuất đệm này nhận một khóa và một nonce, trả về một dãy đệm giả ngẫu nhiên để sử dụng trong việc sinh thẻ. Một chuỗi đệm có độ dài 4, 8, 12 hoặc 16 octet có thể được sinh ra.
ĐẦU VÀO: Khóa chủ K, chuỗi (keylen)-octet
Nonce N, chuỗi có độ dài từ 1 tới blocklen octet.
Độ dài thẻ taglen, số nguyên bằng 4, 8, 12 hoặc 16.
ĐẦU RA: Y, chuỗi (taglen)-octet
a) PDFnonce = N
b) if (taglen = 4 hoặc taglen = 8)
1) index = bitstr2uint(N) mod (blocklen I taglen)
2) PDFnonce = N unit2bitstr(index, octetlength(N))
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
d) PDFnonce = PDFnonce II 0padlen*8
e) K’ = KDF(K, 0, keylen)
f) T = Enc(K’, PDFnonce)
g) if (taglen = 4 hoặc taglen = 8)
1) Y = T[(index*taglen) + 1 ...(index*taglen) + taglen]
h) else
1) Y = T[1…taglen]
i) Output Y
CHÚ THÍCH Các dãy đệm được sinh ra dùng các nonce mà chỉ khác nhau ở bit cuối cùng của chúng (khi sinh các chuỗi đệm 8-octet) hoặc hai bít cuối cùng (khi sinh các chuỗi đệm 4-octet) là được dẫn xuất từ cùng phép mã hóa của mã khối. Điều này cho phép lưu giữ và dùng chung một lần gọi mã khối duy nhất cho các nonce liên tiếp.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
NH (“Hàm băm phi tuyến - Non-linear Hash-function”) là một hàm băm phổ biến.
CHÚ THÍCH Hàm băm phổ biến NH đã được giới thiệu bởi Black và các cộng sự [2].
ĐẦU VÀO: Key, một chuỗi 1024-octet
Msg, chuỗi các octet, độ dài octet của nó là bội nguyên của 32 và nhỏ hơn hay bằng 1024.
ĐẦU RA: Y, chuỗi 8-octet
Ngắt Msg và Key thành các khối 4-octet:
a) t = octetlength(Msg) / 4
b) Chia Msg thành các chuỗi 4-octet M1, M2,.... Mt, để có Msg = M1 II M2 II... II Mt.
c) Giả sử K1, K2, …., Kt là các chuỗi 4-octet để có K1 II K2 II...II Kt là một tiền tố của Key (4t octet trái nhất của Key)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
e) i = 1
f) while(i < t) do
1) Y = Y +64 ((Mi+0 +32 Ki+0) *64 (Mi+4 +32 Ki+4))
2) Y = Y +64 ((Mi+1 +32 Ki+1) *64 (Mi+5 +32 Ki+5))
3) Y = Y +64 ((Mi+2+32 Ki+2) *64 (Mi+6 +32 Ki+6))
4) Y = Y +64 ((Mi+3 +32 Ki+3) *64 (Mi+7 +32 Ki+7))
5) i = i + 8
g) Return Y
CHÚ THÍCH Thủ tục này được áp dụng trực tiếp vào mỗi bit của dữ liệu đầu vào, vì thế cài đặt tối ưu của nó dẫn tới lợi ích lớn. Nó có thể được thực hiện trên các khối 4-octet, phân cặp các từ cho phép nhân mà được tách thành 4 để thích nghi song song hóa vectơ.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Hàm ENDIAN-SWAP chuyển đổi một chuỗi của các từ 4-octet từ little-endian thành big-endian, hoặc ngược lại.
ĐẦU VÀO: S, chuỗi có độ dài chia hết cho 4 octet
ĐẦU RA: T, chuỗi S cùng với mỗi từ 4-octet có endian đảo ngược lại.
a) n = octetlength(S) / 4
b) Giả sử S1, S2, .... Sn là các chuỗi có độ dài 4 ocet để S1 II S2 II…II Sn = S
c) Đặt T là chuỗi rỗng
d) For i = 1 to n do
1) Giả sử W1, W2, W3, W4 là các octet để W1 II W2 II W3 II W4 = Si
2) SReversed = W4 || W3 || W2 || W1
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
e) Output T
6.2.3.6 Hàm bổ trợ POLY
Hàm POLY là một hàm băm đa thức được sử dụng trong hàm băm tầng thứ hai L2-HASH, xem Điều 6.2.7.2.
ĐẦU VÀO: wordbits, số nguyên 64 hoặc 128
maxwordrange, số nguyên dương nhỏ hơn 2wordbits
key, số nguyên trong dải 0...prime(wordbits) - 1
Msg, chuỗi cùng độ dài chia hết cho (wordbits /8) octet
ĐẦU RA: y, số nguyên trong dải 0...prime(wordbits) -1
a) wordoctets = wordbits / 8
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
c) offset = 2wordbits - p
d) marker = p -1
e) n = octetlength(Msg) / wordoctets
f) Giả sử M1, M2,.... Mn là các chuỗi có độ dài wordoctets octet để Msg = M1 II M2 II... II Mn
g) y = 1
h) for i = 1 to n do
1) m = bitstr2uint(Mi)
2) if (m ≥ maxwordrange) then
i) y = (key * y+ marker) mod p
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
3) else
i) y = (key * y + m) mod p
i) Output y
6.2.4 Tiền xử lý khóa
UMAC sử dụng mã khối Enc. Mã khối cần được chọn sao cho blocklen ít nhất là 16 và lũy thừa của hai.
CHÚ THÍCH 1 Khuyến cáo sử dụng AES-128 cho UMAC. Trong trường hợp này, chúng ta có blocklen = 16 và keylen = 16.
CHÚ THÍCH 2 Nếu một số thông điệp phải được xác thực, có ý nghĩa để lưu trong bộ đệm khóa băm KH, vì nó có thể được sử dụng lại. Chỉ có khóa mã hóa KE phải được tính lại cho mỗi thông điệp mới.
ĐẦU VÀO: Khóa chủ K, chuỗi (keylen)-octet
Nonce N, chuỗi có độ dài từ 1 đến blocklen octet
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ĐẦU RA: Khóa băm KH = (L1Key, L2Key, L3Key1, L3Key2), chuỗi có độ dài thay đổi
Khóa mã hóa KE, chuỗi (taglen)-octet
a) iters = taglen / 4
b) L1Key = KDF(K, 1, 1024 + (iters - 1) * 16)
c) L2Key = KDF(K, 2, iters * 24)
d) L3Key1 = KDF(K, 3, iters * 64)
e) L3Key2 = KDF(K, 4, iters * 4)
f) KE = PDF(K, N, taglen)
g) Output KH = (L1Key, L2Key, L3Key1, L3Key2), KE
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Các thông điệp được băm được xem như các chuỗi bit mà được đệm bởi các bit 0 vào bên trái để có độ dài octet thích hợp. Một khi thông điệp đã được đệm, tất cả các chuỗi được xem như các chuỗi octet.
CHÚ THÍCH Dữ liệu thông điệp được đọc theo kiểu little-endian để tăng tốc việc sinh thẻ trên các máy tính little- endian.
6.2.6 Băm thông điệp
ĐẦU VÀO: Khóa băm KH = (L1Key, L2Key, L3Key1, L3Key2), chuỗi có độ dài thay đổi
Khóa mã hóa KE, chuỗi (taglen)-octet
Thông điệp M, chuỗi có độ dài nhỏ hơn 267 octet
taglen, số nguyên bằng 4, 8, 12 hay 16
ĐẦU RA: Thẻ H, chuỗi (taglen)-octet
a) Đặt H bằng chuỗi rỗng
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
1) L1Keyi = L1Key[(i -1) * 16 + 1 ...(i -1)* 16 + 1024]
2) L2Keyi = L2Key[(i - 1) * 24 + 1 ... i * 24]
3) L3Key1i = L3Key1[(i -1) * 64 + 1 ... i * 64]
4) L3Key2i = L3Key2[(i - 1) * 4 ... i * 4]
5) A = L1-HASH(L1Keyi, M)
6) if (bitlength(M) ≤ bitlength(L1Keyi) then
i) B = 064 II A
7) Else
i) B = L2-HASH(L2Keyi, A)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
9) H = H II C
c) Output H
6.2.7 Các hàm băm phân tầng
6.2.7.1 Hàm băm tầng thứ nhất L1-HASH
Hàm băm tầng thứ nhất ngắt thông điệp thành các khối 1024-octet (đệm khối cuối cùng nếu cần thiết) và sau đó điều chỉnh thứ tự endian và băm mỗi khối bằng hàm NH. Ghép nối các kết quả tạo thành một chuỗi, ngắn hơn 128 lần so với chuỗi ban đầu.
ĐẦU VÀO: L1Key, chuỗi 1024-octet
L1Msg, chuỗi có độ dài nhỏ hơn 267 octet
ĐẦU RA: H1 chuỗi có độ dài (8 * ceil(bitlength(L1Msg) / 8192)) octet
a) t = max(ceil(bitength(L1Msg) / 8192), 1)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
c) Len = uint2bitstr(1024 * 8, 8)
d) H1 = ˂empty string˃
e) For i = 1 to t-1 do
1) ENDIAN-SWAP(Mi)
2) H1 = H1 II (NH(L1Key, Mi) +64 Len)
f) Len = unit2bitstr(bitlength(Mt), 8)
g) Mt = zeropad(Mt, 32)
h) ENDIAN-SWAP(Mt)
i) H1 = H1 II (NH(L1Key, Mt) +64 Len)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.2.7.2 Hàm băm tầng thứ hai L2-HASH
Hàm băm tầng thứ hai băm lại đầu ra của L1-HASH sử dụng hàm băm đa thức được gọi là POLY. Nếu đầu ra của L1-HASH là dài, thì POLY được gọi 1 lần trên tiền tố của đầu ra L1-HASH và được gọi khi dùng các thiết lập khác nhau trên phần còn lại. Việc băm 2 bước này của đầu ra của L1-HASH chỉ cần đến nếu độ dài thông điệp là lớn hơn 16 megaoctet.
CHÚ THÍCH Một cài đặt cẩn thận của POLY là cần thiết để tránh tấn công đo thời gian có thể (xem [1] để biết thêm thông tin).
ĐẦU VÀO: L2Key, chuỗi 24-octet
L2Msg, chuỗi có độ dài nhỏ hơn 264 octet
ĐẦU RA : H2, chuỗi 16-octet
a) Mask64 = uint2bitstr(0x, 01FFFFF 01FFFFFF, 8).
b) Mask128 = unit2bitstr(0x 01FFFFFF 01FFFFFF 01FFFFFFF 01FFFFFF, 16)
c) k64 = bitstr2unit(L2Key[1 ...8] ˄ Mask64)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
e) if (octetlength(L2Msg) ≤ 217) then
1) y = POLY (64, 264 - 232, k64, L2Msg)
f) else
1) M1 = L2Msg[1...217]
2) M2 = L2Msg[217 + 1 ... octetlength(L2Msg)]
3) M2 = zeropad(M2 II unit2bitstr(0x80, 1), 16)
4) y = POLY(64, 264 - 232, k64, M1)
5) y = POLY(128, 2128 - 296, k128, uint2bitstr(y, 16) II M2)
g) H2 = uint2bitstr(y, 16)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.2.7.3 Hàm băm tầng thứ ba L3-HASH
Đầu ra từ L2-HASH gồm 16 octet. Hàm băm kết thúc này băm chuỗi 16-octet thành chuỗi có độ dài cố định 4 octet.
ĐẦU VÀO : K1, chuỗi 64-octet
K2, chuỗi 4-octet
Msg, chuỗi 16-octet
ĐẦU RA : H3, chuỗi 4-octet
a) y = 0
b) Ngắt Msg và K1 thành 8 khối và chuyển thành các số nguyên:
1) For i = 1 to 8 do
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ii) Ki = K1[(i- 1) * 8 + 1 ... i * 8]
iii) mi = bitstr2uint(Mi)
iv) ki = bitstr2uint(Ki) mod prime(36)
c) Băm tích trong, trích ra 32 bit cuối và dịch chuyển affine:
1) y = (m1 * k1 +... + m8 * k8) mod prime(36)
2) y = y mod 232
3) H3 = uint2bitstr(y, 4)
4) H3 = H3 K2
d) Output H3
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ĐẦU VÀO: Khóa mã hóa KE, chuỗi có taglen octet
Giá trị băm H, chuỗi có taglen octet
ĐẦU RA: MAC có độ dài taglen octet
a) MAC = KE H
b) Output MAC
6.3 Badger
6.3.1 Mô tả của Badger
Badger là một thuật toán MAC mà sử dụng khóa 128-bit K và nonce 64-bit N. Nó xử lý một thông điệp có độ dài cho tới 261 - 1 octet thành một thẻ xác thực có độ dài taglen, giá trị này có thể là 4, 8, 12, 16 hay 20 octet. Thông điệp đầu vào bao gồm một số trọn vẹn các octet (tức là, độ dài bit của thông điệp sẽ là một bội của 8). Badger sử dụng một mã dòng (xem TCVN 11367-4 (ISO/IEC 18033-4)) hoặc bộ tạo số giả ngẫu nhiên PRG (xem ISO/IEC 18031).
CHÚ THÍCH Badger được đề xuất trong [3] và dựa trên kiến trúc cây băm kinh điển bởi Wegman và Carter [10].
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Trước khi sử dụng Badger, các tham số sau cần phải được thống nhất:
- Một mã dòng từ TCVN 11367-4 (ISO/IEC 18033-4) hoặc bộ tạo giả ngẫu nhiên mà tuân theo ISO/IEC 18031.
- Độ dài thẻ, taglen, là 4, 8, 12, 16 hay 20 octet.
6.3.3 Chú giải và các hàm bổ trợ
6.3.3.1 Hàm bổ trợ ENH
ENH (Hàm băm phi tuyến nâng cao - Enhanced Non-linear Hash-function) là một hàm băm phổ biến.
CHÚ THÍCH Hàm băm phổ biến ENH đã được giới thiệu bởi Boesgaard và các cộng sự [3]. Nó dựa trên hàm NH của Black và các cộng sự [2] mà đã được sử dụng trong UMAC.
ĐẦU VÀO : Khóa LKey, chuỗi 8-octet
Thông điệp Left, chuỗi 8-octet
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ĐẦU RA : Giá trị băm LHash, chuỗi 8-octet
a) kL = octetstr2uint(LKey[0...3], ku = octetstr2uint(LKey[4...7])
b) m1L = octetstr2uint(Right[0...3], m1u = octetstr2uint(Right[4...7])
c) m2 = octetst2uint(Left[0...7])
d) hL = (m1L + kL) mod 232
e) hu = (m1u + ku) mod 232
f) Let h' = ((hu * hL) + m2) mod 264
g) LHash = unit2octetstr (h’, 8)
h) Output LHash
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Độ dài khóa của Badger là 16 octet, và độ dài của nonce là 8 octet. Nếu bộ tạo yêu cầu các khóa và các nonce dài hơn, thì các octet còn lại có thể được đệm bằng các bit 0. Giá trị nonce cần phải khác với véctơ toàn 1. PRG được giả thiết có các giao diện sau:
- PRG_Init(K, N) khởi tạo trạng thái bên trong của PRG cùng với khóa K và nonce N.
- PRG_Next(n) tạo ra n bit đầu ra tiếp theo từ PRG.
Khi dùng các hàm này, các khóa băm và mã hóa được tính như sau.
CHÚ THÍCH Nếu một số thông điệp phải được xác thực, thì có ý nghĩa việc lưu trong bộ đệm khóa băm KH, vì nó có thể được dùng lại. Chỉ có khóa mã hóa KE phải được tính lại cho mỗi thông điệp mới.
ĐẦU VÀO: khóa chủ K, chuỗi 16-octet
Nonce N, chuỗi 8-octet
Độ dài theo bit maxlen của thông điệp đầu vào có thể dài nhất, bội số nguyên của 8 với 0 ≤ maxlen ≤ 264 - 8
Độ dài thẻ taglen, số nguyên (một trong số 4, 8, 12, 16, 20)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Khóa mã hóa KE, chuỗi (taglen)-octet
a) PRG_Init(K, 164)
b) words_used =0
c) u = taglen / 4
d) v = max{1, cell(log2(maxlen)) - 6}
e) for j = 1 to 6 do
1) for i = 1 to u do
i) kfj,i = octetstr2uint(PRG_Next(32))
ii) words_used = words_used +1
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
1) for i = 1 to u do
i) while(kfj,i ≥ prime(32))
I) kfj,i = octetstr2uint(PRG_Next(32))
II) words_used = words_used + 1
g) while(words_used mod 4 ≠ 0)
1) Loại bỏ PRG_Next(32)
2) words_used = words_used + 1
h) for j = 1 to v do
1) for i = 1 to u do
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
i) PRG_Init(K,N)
J) KE = PRG_Next(32 * u)
k) Output KH = (KL, kf), KE
6.3.5 Tiền xử lý thông điệp
Tiền xử lý thông điệp là không cần thiết đối với Badger.
6.3.6 Băm thông điệp
Thông điệp được băm bằng cách tính biểu thức đa thức sau:
ĐẦU VÀO: khóa băm KH = (KL, kf), chuỗi có độ dài thay đổi
Thông điệp M, chuỗi có độ dài nhiều nhất 261 - 1 octet
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ĐẦU RA: giá trị băm H, chuỗi (taglen)-octet
a) len = bitlength(M) như số nguyên 64-bit
b) if len = 0
1) M1 = ... = Mu = 064
c) else:
1) if len mod 64 ≠ 0:
i) Thêm các bit 0 vào các bit có nghĩa lớn nhất cho đến khi độ dài len của M là bội của 64
2) for i = 1 to u
i) Mi = M
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
iii) for j = 1 to v’
I) t = octetlength(Mi).
II) Chia Mi thành các khối 8-octet B1,... Bt sao cho Mi = Bt ||... || B1
III) nếu t là chẵn
a) Mi = ENH(KLj,i, Bt, Bt-1) II ... II ENH(KLj,i, B2, B1)
IV) ngược lại
a) Mi = Bt, II ENH(KLj,i, Bt-1, Bt-2) II ...|| ENH(KLj,i, B2, B1)
d) for i = 1 to u:
1) Qi = 07 II len II Mi
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
3) Đệm mỗi khối B1,... , B5 bằng các bit 0 ở các bit có nghĩa lớn nhất sao cho có độ dài 4 octet.
4) For j = 1 to 5:
I) bj = octetstr2uint(Bj)
5) Si = ((b1 * kf1,i) + ... + (b5 * kf5,i) + kf6,i) mod prime(32)
6) Si = uint2octetstr(si, 4)
e) H = Su II … II S1
f) Output H
6.3.7 Hoàn tất
ĐẦU VÀO : Khóa mã hóa KE, chuỗi (taglen)-octet
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ĐẦU RA: Mã xác thực thông điệp MAC, chuỗi (taglen)-octet
a) MAC = KE H
b) Output MAC
6.4 Poly1305-AES
6.4.1 Mô tả của Poly1305-AES
Poly1305 là một thuật toán MAC sử dụng khóa 256-bit K (với 22 bit được đặt bằng 0) và nonce 128-bit N. Nó chấp nhận các thông điệp có độ dài tính theo octet tùy ý l0 và tạo ra MAC 128-bit. Thông điệp đầu vào gồm một số trọn vẹn các octet, tức là độ dài tính theo bit của thông điệp phải là một bội của 8.
CHÚ THÍCH Poly1305 đã được đề xuất trong [1] và dựa trên hàm băm đa thức. So sánh với một cài đặt thô, hiệu năng của Poly1305-AES có thể được cải tiến đáng kể bằng cách theo chỉ dẫn cài đặt được đưa ra trong [1].
6.4.2 Các yêu cầu
Việc sử dụng Poly1305-AES không yêu cầu các tham số bổ sung phải được thống nhất.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Khóa chủ 32-octet K có một khuôn dạng đặc biệt, trong đó một số bit phải bằng 0. Các bit đó là:
- 4 bit có nghĩa lớn nhất của K[3], K[7], K[11], K[15]
- 2 bit có nghĩa nhỏ nhất của K[4], K[8], K[12].
Khóa chủ khi đó được chia đơn giản thành khóa băm và khóa mã hóa, như sau:
ĐẦU VÀO : khóa chủ K, chuỗi 32-octet
ĐẦU RA : khóa băm KH, chuỗi 16-octet
khóa mã hóa KE, chuỗi 16-octet
a) KH = K[0...15]
b) KE = K[16...31]
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.4.4 Tiền xử lý thông điệp
Thông điệp được tiền xử lý như sau:
ĐẦU VÀO: Thông điệp M, chuỗi l0-octet
ĐẦU RA: số các khối của thông điệp s, số nguyên
thông điệp đã được tiền xử lý c1, ..., cs, dãy của các số nguyên 17-octet.
a) Let l0 = octetlength(M)
b) Let s = ceil(l0/16)
c) Let t = floor(l0/16)
d) For i =0,…, t - 1:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
e) If s > t:
1) r = l0 mod 16
2) cs = octetstr2uint(M[16t…l0 - 1]) + 28r
f) Output s; c1,…cs
6.4.5 Băm thông điệp
Thông điệp được băm bằng cách tính biểu thức đa thức sau:
ĐẦU VÀO: khóa băm KH, chuỗi 16-octet
số các khối của thông điệp s, số nguyên
thông điệp đã được tiền xử lý, c1,…, cs, dãy của các số nguyên 17-octet
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
a) r = octetstr2uint(KH)
b) H’= (c1 * rs + c2 * rs-1 + ... + cs * r1) mod prime(130)
c) H = H’ mod 2128
d) Output H
6.4.6 Hoàn tất
Cuối cùng, thông điệp được mã hóa dùng mã khối AES-128, đã được mô tả trong ISO/IEC 18033-3.
ĐẦU VÀO: giá trị băm H, chuỗi 16-octet
khóa mã hóa KE, chuỗi 16-octet
nonce N, chuỗi 16-octet
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
a) Let S = AES-128(KE, N)
b) s = octetstr2uint(S)
c) Let mac = (H + s) mod 2128
d) MAC = uint2octetstr(mac, 16)
e) Output MAC
6.5 GMAC
6.5.1 Mô tả của GMAC
GMAC có thể được sử dụng cùng với mã khối bất kỳ từ TCVN 11367-3 (ISO/IEC 18033-3) mà có độ dài khối bằng 128 bit. MAC kết quả có độ dài t bit, trong đó t là bội của 8 và thỏa mãn 64 ≤ t ≤ 128. Độ dài của thông điệp đầu vào cần phải nhỏ hơn hay bằng 264 khối.
CHÚ THÍCH Cơ chế này là một trường hợp đặc biệt của GCM (Galois/Counter Mode) được quy định trong ISO/IEC 19772, trong đó không có dữ liệu được mã hóa. GCM là thuộc về McGrew và Viega [9].
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Trước khi sử dụng GCM, các tham số sau cần phải thống nhất:
- Một mã khối từ TCVN 11367-3 (ISO/IEC 18033-3) cùng với độ dài khối bằng 128 bit. Lựa chọn của mã khối xác định độ dài khóa |K|;
- Độ dài thẻ t tính theo bit, trong đó 64 ≤ t ≤ 128;
- Độ dài của nonce.
6.5.3 Chú giải và các hàm bổ trợ
6.5.3.1 Hàm bổ trợ GHASH
Hàm GHASH nhận như đầu vào là một khối 128-bit H và hai chuỗi bit có độ dài tùy ý W và Z, cho đầu ra là một khối 128-bit.
ĐẦU VÀO: khối 128-bit H
Các chuỗi bit độ dài tùy ý W và Z
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
a) Lấy k và u là các số nguyên duy nhất sao cho bitlength(W) = 128(k - 1) + u và 0 < u ≤ 128. Giả sử W1, W2, …, Wk là dãy các khối 128-bit (với ngoại trừ có thể của Wk, nó chứa u bit cuối cùng của W) đã nhận được bằng cách phân chia W.
b) Lấy l và u là các số nguyên duy nhất sao cho bitlength(Z) = 128(l-1) + v và 0 < v ≤ 128. Giả sử Z1, Z2,.... Z/ là dãy các khối 128-bit (với ngoại trừ có thể của Zl, nó chứa v bit cuối cùng của Z) đã nhận được bằng cách phân chia Z.
c) Tính giá trị 128-bit Xk+l+1 dùng đệ quy sau:
1) X0 = 0128
2) Xi = (Xi+1 Wi) • H, 1 ≤ i ≤ k -1 (bỏ qua bước này nếu k ≤ 1)
3) Xk = (Xk-1 (Wk II 0128-u)) • H (bỏ qua bước này nếu k = 0)
4) Xi = (Xi-1 Zi-k) • H, k+1 ≤ i ≤ k+l -1 (bỏ qua bước này nếu l ≤ 1)
5) Xk+l = (Xk+l-1 (Zl II 0128-v)) • H (bỏ qua bước này nếu l = 0)
6) Xk+l+1 = (Xk+l unit2bitstr(bitlength(W), 8) II unit2bitstr(bitlength(Z), 8) • H
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.5.4 Tiền xử lý khóa
Khóa chủ K được sử dụng để dẫn xuất ra khóa băm KH và khóa mã hóa KE như sau.
ĐẦU VÀO: khóa chủ K
ĐẦU RA : khóa băm KH
khóa mã hóa KE
a) KH = Enc(K, 0128)
b) KE = K
c) Output KH, KE
6.5.5 Tiền xử lý thông điệp
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.5.6 Băm thông điệp
ĐẦU VÀO: thông điệp M
khóa băm KH
ĐẦU RA: giá trị băm H
a) H = GHASH(KH, M, {})
b) Output H
6.5.7 Hoàn tất
Một nonce độ dài thay đổi N cần phải được chọn. Giá trị này cần phải khác nhau cho mỗi thông điệp được bảo vệ, và được sẵn sàng đối với người nhận thông điệp. Tuy nhiên, giá trị này không cần thiết phải không dự đoán được hoặc bí mật.
CHÚ THÍCH Giá trị N có thể, ví dụ, được sinh ra bằng cách dùng một con đếm được duy trì bởi người khởi tạo, và được gửi đi ở dạng văn bản rõ cùng với thông điệp được bảo vệ.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
khóa mã hóa KE
nonce N
ĐẦU RA: mã xác thực thông điệp MAC, chuỗi t-bit
a) Nếu bitlength(N) = 96 thì Y0 = N II 031 II 1. Ngược lại thì Y0 = GHASH(KH, {}, N).
b) MAC = (H Enc(KE, Y0))|t
c) Output MAC.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Phụ lục này liệt kê các định danh đối tượng được gán cho các thuật toán được quy định trong tiêu chuẩn này.
B.1 UMAC
Điều này chứa một số véctơ kiểm tra của UMAC, dùng AES-128 như mã khối. Bảng B.1 liệt kê các thẻ được sinh bởi UMAC khi dùng khóa 16-byte K và none 8-byte N.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- N = “bcdefghi”
Bảng B.1 - Các vectơ kiểm tra cho UMAC
B.2 Badger
Điều này chứa một số véctơ kiểm tra của Badger, dùng Rabbit như mã dòng. Bảng B.2 liệt kê các thẻ được sinh bởi Badger khi dùng khóa K và IV sau.
- K = 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
- IV = 00 01 02 03 04 05 06 07
Bảng B.2 - Các véctơ kiểm tra cho Badger
Thông điệp
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
<empty>
54
6D
3A
85
F8
CB
FA
D9
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
58
50
58
2C
AC
3D
E4
00
5F
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
AB
85
AC
BE
04
48
1D
D6
34
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
FA
D9
FA
FA
01
47
EA
18
A1
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
AE
07
31
7C
A5
AC
C9
37
2F
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
85
00 01 02 03 04 05 06 07 08
F7
02
3D
65
CF
66
69
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
47
A0
8B
5F
93
55
84
27
B.3 Poly1305-AES
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Bảng B.3 - Các véctơ kiểm tra cho Poly1305-AES
Véctơ kiểm tra #1
Thông điệp
<empty>
Khóa mã hóa KE
75
de
aa
25
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
9f
20
8e
1d
c4
ce
6b
5c
ad
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
bf
Khóa băm KH
a0
f3
08
00
00
f4
64
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
d0
c7
e9
07
6c
83
44
03
Nonce N
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ee
09
21
8d
29
b0
aa
ed
7e
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
4a
2c
55
09
cc
Thẻ Poly1305-AES
dd
3f
ab
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
51
f1
1a
c7
59
f0
88
71
29
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
2e
e7
Véctơ kiểm tra #2
Thông điệp
f3
f6
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Khóa mã hóa KE
ec
07
4c
83
55
80
74
17
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
42
5b
62
32
35
ad
d6
Khóa băm KH
85
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
c4
0c
34
67
ac
0b
e0
5c
c2
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
04
f3
f7
00
Nonce N
fb
44
73
50
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
e8
68
c5
2a
c3
27
5c
f9
d4
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
7e
Thẻ Poly1305-AES
f4
c6
33
c3
04
4f
c1
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
f8
4f
33
5c
b8
19
53
de
Véctơ
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Thông điệp
66
3c
ea
19
0f
fb
83
d8
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
93
f3
f4
76
b6
bc
24
d7
e6
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
10
7e
a2
6a
db
8c
af
66
52
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
65
61
36
Khóa mã hóa KE
6a
cb
5f
61
a7
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6d
d3
20
c5
c1
eb
2e
dc
dc
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Khóa băm KH
48
44
3d
0b
b0
d2
11
09
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
9a
10
0b
5c
e2
c2
08
Nonce N
ae
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
2a
55
39
97
29
59
5d
ea
45
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
c6
21
ff
0e
Thẻ Poly1305-AES
0e
e1
c1
6b
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
3f
0f
4f
d1
98
81
75
3c
01
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
be
Véctơ
kiểm tra #4
Thông điệp
ab
08
12
72
4a
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
1e
34
27
42
cb
ed
37
4d
94
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
36
c6
b8
79
5d
45
b3
81
98
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
f2
c0
44
91
fa
f0
99
0c
62
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
8b
80
18
b2
c3
e4
a0
fa
31
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
cb
67
fa
83
e1
58
c9
94
d9
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
c4
cb
21
09
5c
1b
f9
Khóa mã hóa KE
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
a5
66
8a
4d
5b
66
a5
f6
8c
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
42
4e
d5
98
2d
Khóa băm KH
12
97
6a
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
c4
42
6d
0c
e8
a8
24
07
c4
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
82
07
Nonce N
9a
e8
21
e7
43
97
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
3a
23
52
7c
71
28
14
9e
3a
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
51
54
ad
0d
2c
b2
6e
01
27
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
c5
11
48
49
1f
1b
B.4 GMAC
Điều này chứa một số vectơ kiểm tra cho GMAC khi dùng AES-128 như mã khối trong Bảng B.4.
Bảng B.4 - Các véctơ kiểm tra cho GMAC
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Thông điệp
<empty>
Khóa K
00
00
00
00
00
00
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
00
00
00
00
00
00
00
00
00
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
00
00
00
00
00
00
00
00
00
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
00
00
Thẻ GMAC
58
e2
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ce
fa
7e
30
61
36
7f
1d
57
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
e7
45
5a
Véctơ kiểm tra #2
Thông điệp
fe
ed
fa
ce
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ad
be
ef
fe
ed
fa
ce
de
ad
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ef
Khóa K
6a
cb
5f
61
a7
17
6d
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
20
c5
c1
eb
2e
dc
dc
74
Nonce N
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
21
2a
55
39
97
29
59
5d
ea
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
8b
c6
21
ff
0e
Thẻ GMAC
54
df
47
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
4e
71
a9
ef
8a
09
bf
30
da
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
1a
92
Véctơ kiểm tra #3
Thông điệp
fe
ed
fa
ce
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ad
be
ef
fe
ed
fa
ce
de
ad
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ef
ab
ad
da
d2
42
83
1e
c2
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
77
74
24
4b
72
21
b7
Khóa K
fe
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
e9
92
86
65
73
1c
6d
6a
8f
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
67
30
83
08
Nonce N
ca
fe
ba
be
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
ce
db
ad
de
ca
f8
88
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Thẻ GMAC
1c
be
39
36
e5
53
b0
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
25
c0
8d
7b
8d
c3
9f
db
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Một số tấn công chống lại các thuật toán MAC dựa trên hàm băm phổ biến đã được mô tả trong [5].
Ngược lại với các kiểu thuật toán MAC khác, một số nhỏ các giả mạo có thể dẫn tới việc khôi phục khóa đối với các hàm MAC dựa trên hàm băm phổ biến, và do vậy dẫn tới sụp đổ hoàn toàn về độ an toàn.
Để bảo vệ chống lại các tấn công này, khuyến cáo mạnh cài đặt một hoặc nhiều biện pháp phòng chống sau:
a) Tăng mức an toàn (ví dụ, taglen) để giả mạo thứ nhất là không thể thực hành được.
b) Thường xuyên làm mới khóa đầy đủ được sử dụng cho thuật toán MAC. Nếu có thể, thậm chí người ta làm mới khóa cho mỗi thông điệp. Chú ý rằng không chỉ số các thông báo được xử lý dưới một khóa đơn lẻ cần phải bị hạn chế, mà tổng số các khối thông điệp được xử lý dưới cùng một khóa cũng bị hạn chế.
c) Cả người gửi và người nhận cần đảm bảo/kiểm tra tính duy nhất của các nonce được sử dụng với cùng một khóa MAC. Khi nonce được sử dụng lại, độ an toàn của thuật toán bị suy giảm nghiêm trọng.
d) Những người nhận cần phát hiện một số lớn các lần xác minh MAC bị thất bại như một nỗ lực tấn công, và xử lý với tình huống này một cách thích hợp..
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
THƯ MỤC TÀI LIỆU THAM KHẢO
[1] Bernstein, D. J., The Poly1305-AES message-authentication code. Proceedings of Fast Software Encryption 2005, LNCS 3557, pp. 32-49, Springer-Verlag, 2005.
[2] Black, J., Halevi, s., Krawczyk, H., Krovetz, T. and Rogaway, P. UMAC: Fast and provably secure message authentication, Advances in Cryptology - CRYPTO '99, LNCS vol. 1666, pp. 216-233, Springer-Verlag, 1999.
[3] Boesgaard, M., Christensen, T. and Zenner, E. Badger. A fast and provably secure MAC, Proceedings of Applied Cryptography and Network Security, LNCS vol. 3531, pp. 176-191, Springer-Verlag, 2005.
[4] Carter, L. and Wegman, M. Universal classes of hash functions, Journal of Computer and System Sciences, 18 (1979), pp. 143-154.
[5] Handschuh, H. and Preneel, B. Key-Recovery Attacks on Universal Hash Function based MAC Algorithms. Advances in Cryptology- CRYPTO'08, LNCS vol. 5157, pp. 144-161 Springer-Verlag, 2008.
[6] IETF RFC 4418, UMAC: Message Authentication Code using Universal Hashing, March 2006.
[7] ISO/IEC10181-6, Information technology - Open Systems Interconnection - Security frameworks for open systems: Integrity framework.
[8] ISO/IEC 10116, Information technology - Security techniques - Modes of operation for an n-bit block cipher.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
[10] Wegman, M. and Carter, L. New hash functions and their use in authentication and set equality, Journal of Computer and System Sciences, 22 (1981), pp. 265-279.
MỤC LỤC
Lời nói đầu
Lời giới thiệu
1 Phạm vi áp dụng
2 Tài liệu viện dẫn
3 Thuật ngữ và định nghĩa
4 Ký hiệu và thuật ngữ viết tắt
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6 Các cơ chế
6.1 Giới thiệu
6.2 UMAC
6.2.1 Mô tả của UMAC
6.2.2 Các yêu cầu
6.2.3 Ký hiệu và các hàm bổ trợ
6.2.4 Tiền xử lý khóa
6.2.5 Tiền xử lý thông điệp
6.2.6 Băm thông điệp
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.2.8 Hoàn tất
6.3 Badger
6.3.1 Mô tả của Badger
6.3.2 Các yêu cầu
6.3.3 Ký hiệu và các hàm bổ trợ
6.3.4 Tiền xử lý khóa
6.3.5 Tiền xử lý thông điệp
6.3.6 Băm thông điệp
6.3.7 Hoàn tất
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.4.1 Mô tả của Poly1305-AES
6.4.2 Các yêu cầu
6.4.3 Tiền xử lý khóa
6.4.4 Tiền xử lý thông điệp
6.4.5 Băm thông điệp
6.4.6 Hoàn tất
6.5 GMAC
6.5.1 Mô tả của GMAC
6.5.2 Các yêu cầu
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.5.4 Tiền xử lý khóa
6.5.5 Tiền xử lý thông điệp
6.5.6 Băm thông điệp
6.5.7 Hoàn tất
Phụ lục A (quy định) Các định danh đối tượng
Phụ lục B (tham khảo) Các ví dụ
Phụ lục C (tham khảo) Thông tin an toàn
Thư mục tài liệu tham khảo
Tiêu chuẩn quốc gia TCVN 11495-3:2016 (ISO/IEC 9797-2:2011) về Công nghệ thông tin - Các kỹ thuật an toàn - Mã xác thực thông điệp (MAC) - Phần 3: Cơ chế sử dụng hàm băm phổ biến
Số hiệu: | TCVN11495-3:2016 |
---|---|
Loại văn bản: | Tiêu chuẩn Việt Nam |
Nơi ban hành: | *** |
Người ký: | *** |
Ngày ban hành: | 01/01/2016 |
Ngày hiệu lực: | Đã biết |
Tình trạng: | Đã biết |
Văn bản đang xem
Tiêu chuẩn quốc gia TCVN 11495-3:2016 (ISO/IEC 9797-2:2011) về Công nghệ thông tin - Các kỹ thuật an toàn - Mã xác thực thông điệp (MAC) - Phần 3: Cơ chế sử dụng hàm băm phổ biến
Chưa có Video