Tiêu chuẩn TCVN 12197:2024 về Mã hóa có xác thực

TIÊU CHUẨN QUỐC GIA
TCVN 12197:2024
ISO/IEC 19772:2020
AN TOÀN THÔNG TIN - MÃ HÓA CÓ XÁC THỰC
Information security - Authenticated encryption
Lời nói đầu
TCVN 12197:2024 (ISO/IEC 19772:2020) thay thế TCVN 12197:2018 (ISO/IEC 19772:2009).
TCVN 12197:2024 (ISO/IEC 19772:2020) do Ban Cơ yếu Chính phủ biên soạn, Bộ Quốc phòng đề nghị, Ủy ban Tiêu chuẩn Đo lường Chất lượng Quốc gia thẩm định, Bộ Khoa học và Công nghệ công bố.
...
...
...
Khi dữ liệu được gửi từ nơi này đến nơi khác, thông thường cần phải bảo vệ dữ liệu đó theo một cách nào đó trong khi nó đang được vận chuyển, ví dụ: chống lại việc nghe trộm hoặc sửa đổi trái phép. Tương tự như vậy, khi dữ liệu được lưu trữ trong một môi trường mà các bên không được phép có thể truy cập, nó có thể cần thiết để bảo vệ nó.
Nếu tính an toàn của dữ liệu cần được bảo vệ, ví dụ: Để chống lại việc nghe trộm, thì một giải pháp là sử dụng mã hóa, như được quy định trong TCVN 11367 (ISO/IEC 18033) và ISO/IEC 10116. Ngoài ra, nếu cần bảo vệ dữ liệu chống lại việc sửa đổi, tức là bảo vệ tính toàn vẹn, thì mã xác thực thông điệp (MAC) như được chỉ định trong TCVN 11495 ((ISO/IEC 9797) (, hoặc chữ ký số như được chỉ định trong TCVN 11495 (ISO/IEC 9797) và TCVN 12214 (ISO/IEC 14888), có thể được sử dụng. Nếu cả tính an toàn và tính toàn vẹn đều được yêu cầu, thì một khả năng là sử dụng cả mã hóa và MAC hoặc chữ ký. Mặc dù các hoạt động này có thể được kết hợp theo nhiều cách, nhưng không phải tất cả sự kết hợp của các cơ chế như vậy đều cung cấp các đảm bảo vệ độ an toàn giống nhau. Do đó, cần xác định chi tiết chính xác cách kết hợp các cơ chế toàn vẹn và an toàn để cung cấp mức độ an toàn tối ưu. Hơn nữa, trong một số trường hợp, có thể đạt được hiệu quả đáng kể bằng cách xác định một phương pháp xử lý dữ liệu duy nhất với mục tiêu cung cấp cả tính an toàn và tính toàn vẹn.
Trong tiêu chuẩn này, các cơ chế mã hóa có xác thực được xác định. Đây là những phương pháp xử lý dữ liệu để bảo vệ cả tính toàn vẹn và tính an toàn. Chúng thường liên quan đến sự kết hợp cụ thể của tính toán MAC và mã hóa dữ liệu hoặc sử dụng thuật toán mã hóa theo cách đặc biệt để cung cấp cả tính toàn vẹn và bảo vệ bí mật.
Các phương pháp được chỉ định trong tiêu chuẩn này đã được thiết kế để tối đa hóa mức độ an toàn và cung cấp khả năng xử lý dữ liệu hiệu quả. Một số kỹ thuật được định nghĩa ở đây như “chứng minh an toàn” bằng toán học, tức là các lập luận chặt chẽ hỗ trợ tính hợp lý của chúng.
AN TOÀN THÔNG TIN - MÃ HÓA CÓ XÁC THỰC
Information security - Authenticated encryption
1 Phạm vi áp dụng
Tiêu chuẩn này quy định cụ thể năm cơ chế mã hóa có xác thực, tức là xác định các cách để xử lý xâu dữ liệu với các mục tiêu an toàn sau:
...
...
...
- Tính toàn vẹn của dữ liệu, tức là cho phép người nhận dữ liệu có thể xác minh rằng dữ liệu chưa bị sửa đổi,
- Xác thực nguồn gốc dữ liệu, tức là cho phép người nhận dữ liệu xác minh định danh của người khởi tạo dữ liệu.
Tất cả năm cơ chế được quy định trong tiêu chuẩn này đều dựa trên một thuật toán mã khối và yêu cầu người khởi tạo và người nhận dữ liệu được bảo vệ phải chia sẻ khóa bí mật cho mã khối này. Việc quản lý khóa nằm ngoài phạm vi của tiêu chuẩn này; kỹ thuật quản lý khóa được quy định trong tiêu chuẩn TCVN 7817 (ISO/IEC 11770).
Bốn cơ chế trong tiêu chuẩn này, cụ thể là cơ chế 3, 4, 5 (chỉ dành cho biến thể AAD) và 6, cho phép dữ liệu đã xác thực mã không cần phải mã hóa. Nghĩa là, các cơ chế này cho phép một chuỗi dữ liệu đã được bảo vệ được chia thành hai phần: D là chuỗi dữ liệu được mã hóa và được bảo vệ tính toàn vẹn; A (dữ liệu xác thực bổ sung) dùng để bảo vệ tính toàn vẹn nhưng không được mã hóa. Trong tất cả các trường hợp, chuỗi A có thể rỗng.
CHÚ THÍCH: Ví dụ về các kiểu dữ liệu có thể cần phải được gửi dưới dạng không mã hóa nhưng tính toàn vẹn phải được bảo vệ, bao gồm: địa chỉ, số cổng, số thứ tự, số phiên bản giao thức và các trường giao thức mạng khác chỉ ra cách thức bản gốc được kiểm soát, được chuyển tiếp hoặc được xử lý.
2 Tài liệu viện dẫn
Các tài liệu viện dẫn sau rất cần thiết cho việc áp dụng tiêu chuẩn này. Đối với các tài liệu viện dẫn ghi năm công bố thì áp dụng phiên bản được nêu. Đối với các tài liệu viện dẫn không ghi năm công bố thì áp dụng phiên bản mới nhất, bao gồm cả các sửa đổi, bổ sung (nếu có).
TCVN 11495 (ISO/IEC 6767), Công nghệ thông tin - Các kỹ thuật an toàn - Mã xác thực thông điệp (MAC).
TCVN 12213:2018 (ISO/IEC 10116:2017), Công nghệ thông tin - Các kỹ thuật an toàn - Chế độ hoạt động của mã khối n-bit.
...
...
...
3 Thuật ngữ và định nghĩa
Tiêu chuẩn này sử dụng các thuật ngữ và định nghĩa sau:
3.1
Dữ liệu xác thực bổ sung (additional authenticated data)
AAD
Dữ liệu được bảo vệ toàn vẹn nhưng không được mã hóa bằng cơ chế mã hóa có xác thực (3.3).
3.2
Mã hóa có xác thực (authenticated encryption)
(Có tính đảo ngược) Biến đổi dữ liệu bằng thuật toán mã hóa để tạo ra bản mã (3.5) không thể bị truy xuất bởi thực thể trái phép mã không bị phát hiện, tức là nó cung cấp bảo vệ tính bí mật dữ liệu, tính toàn vẹn dữ liệu (3.6) và xác thực nguồn gốc dữ liệu.
...
...
...
Cơ chế mã hóa có xác thực (authenticated encryption mechanism)
Kỹ thuật mã hóa được sử dụng để bảo vệ tính bí mật, đảm bảo nguồn gốc, tính toàn vẹn của dữ liệu, trong đó bao gồm hai quá trình thành phần: thuật toán mã hóa (3.8) và thuật toán giải mã (3.7).
3.4
Mã khối (block cipher)
Hệ mật đối xứng (3.15) với tính chất là thuật toán mã hóa (3.8) thao tác trên một khối của bản rõ (3.13), nghĩa là trên một xâu bit có độ dài xác định, kết quả cho ra một khối của bản mã (3.5).
[Nguồn: 2.8, TCVN 11367-1:2016 (ISO/IEC 18033-1:2015)].
3.5
Bản mã (ciphertext)
Dữ liệu đã được biến đổi để giấu thông tin trong đó.
...
...
...
3.6
Tính toàn vẹn dữ liệu (data integrity)
Tính chất của dữ liệu đã không bị thay đổi hay bị làm hư hại theo một cách trái phép.
[Nguồn: 3.4, TCVN 11495-1:2016 (ISO/IEC 9797-1:2011)].
3.7
Giải mã (decryption)
Phép toán ngược với phép mã hóa tương ứng.
[Nguồn: 2.13, TCVN 11367-1:2016 (ISO/IEC 18033-1:2015)].
3.8
...
...
...
Phép biến đổi (khả nghịch) dữ liệu bởi thuật toán mật mã để tạo ra bản mã, tức là giấu nội dung thông tin của dữ liệu.
[Nguồn: 2.15, TCVN 11367-1:2016 (ISO/IEC 18033-1:2015)].
3.9
Hệ mật (encryption system)
Kỹ thuật mật mã sử dụng để bảo vệ bí mật dữ liệu bao gồm ba quá trình thành phần: thuật toán mã hóa, thuật toán giải mã và phương pháp tạo khóa.
[Nguồn: 2.17, TCVN 11367-1:2016 (ISO/IEC 18033-1:2015)]
3.10
Khóa (key)
Dãy các ký tự điều khiển sự vận hành của các thuật toán mật mã (ví dụ: phép mã hóa, giải mã).
...
...
...
3.11
Mã xác thực thông điệp (message authentication code)
MAC
Chuỗi các bit được tạo ra của một thuật toán MAC.
[Nguồn: 3.9, TCVN 11495-1:2016 (ISO/IEC 9797-1:2011)].
3.12
Phân chia (partition)
Quá trình chia mỗi chuỗi các bit có độ dài tùy ý thành một chuỗi các khối, trong đó độ dài của mỗi khối là n bit, ngoại trừ khối sau cùng chứa r bit với 0 < r ≤ n.
3.13
...
...
...
Thông tin chưa được mã hóa.
[Nguồn: 2.24, TCVN 11367-1:2016 (ISO/IEC 18033-1:2015)].
3.14
Khóa bí mật (secret key)
Khóa sử dụng cho kỹ thuật mật mã đối xứng và được dùng bởi một tập thực thể xác định.
[Nguồn: 2.27, TCVN 11367-1:2016 (ISO/IEC 18033-1:2015)].
3.15
Hệ mật đối xứng (symmetric encryption system)
Hệ mật dựa trên kỹ thuật mật mã đối xứng.
...
...
...
4 Ký hiệu và chữ viết tắt
A
Dữ liệu được xác thực bổ sung.
C
Chuỗi dữ liệu được mã hóa - xác thực.
D
Chuỗi dữ liệu sẽ áp dụng phương pháp mã hóa có xác thực.
d
Thuật toán giải mã khối bản mã; dK(Y) biểu thị kết quả giải mã khối bản mã khối Y n-bit bằng cách sử dụng khóa bí mật K.
...
...
...
Thuật toán mã hóa khối bản mã; eK(X) biểu thị kết quả giải mã khối bản mã khối X n-bit bằng cách sử dụng khóa bí mật K.
K
Khối bản mã với khóa bí mật được chia sẻ bên gửi và bên nhận dữ liệu áp dụng cơ chế mã hóa có xác thực.
m
Số lượng khối biến thể của D được phân chia.
n
Kích thước khối (tính theo bit) cho một khối bản mã.
t
Kích thước tag (tính theo bit).
...
...
...
Khối có i bit “0”.
1i
Khối có i bit “1”.
Phép toán thao tác bit XOR. Thực hiện tính toán (trên từng bit) với hai chuỗi bit có cùng độ dài để tạo ra một chuỗi bit mới có cùng độ dài với hai chuỗi bit ban đầu.
||
Nối các chuỗi bit, tức là nếu A và B là các khối bit, thì A II B là khối các bit có được qua việc nối A và B lại theo các thứ tự cụ thể.
#
Hàm chuyển đổi số a thành một khối có kích thước a-bit.
...
...
...
Nếu k là một số nguyên (0 ≤ k < 2a) thì #a(k) là khối a-bit, khi khối này được xem như là biểu diễn dưới dạng nhị phân với bit trọng số cao nhất ở bên trái, bằng k.
#-1
Hàm chuyển đổi một khối bit thành số.
Nếu A là một khối bit thì #-1(A) là một số nguyên không âm mà biểu diễn nhị phân là A. Do đó, nếu A có n bit thì #n (#-1(A)) = A.
X|s
Cắt ngắn bên trái khối bit X.
Nếu X có độ dài bit lớn hơn hoặc bằng s thì X|s là khối s-bit ngoài cùng bên trái của X.
...
...
...
Cắt ngắn bên phải khối bit X.
Nếu X có độ dài bit lớn hơn hoặc bằng s thì X|s là khối s-bit ngoài cùng bên phải của X.
X << 1
Dịch trái khối bit X đi 1 vị trí.
Bit tận cùng phía phải của Y = X << 1 sẽ luôn được đặt về “0”.
X >> 1
Dịch phải khối bit X đi 1 vị trí.
...
...
...
Bit tận cùng phải trái của Y = X >> 1 sẽ luôn được đặt về “0”.
len
Hàm lấy một chuỗi bit X làm đầu vào và cho đầu ra là số lượng các bit có trong X.
mod
Nếu a và b > 0 là các số nguyên thì a mod b biểu thị số nguyên c duy nhất sao cho:
1) 0 ≤ c < b)
2) a - c là bội số của b.
5 Các yêu cầu
...
...
...
Bên khởi tạo và bên nhận dữ liệu sử dụng cơ chế mã hóa có xác thực phải:
a) Thỏa thuận về việc sử dụng một cơ chế cụ thể từ những cơ chế được quy định trong tiêu chuẩn này.
b) b)Thỏa thuận về việc sử dụng một mã khối cụ thể được sử dụng với cơ chế (phải sử dụng một mã khối được tiêu chuẩn hóa trong TCVN 11367-3:2016 (ISO/IEC 18033-3:2010).
c) Chia sẻ một khóa bí mật K: trong tất cả các cơ chế ngoại trừ cơ chế mã hóa có xác thực 5, đây sẽ là một khóa cho mã khối được chọn và trong cơ chế 5 nó sẽ là một khóa được sử dụng làm đầu vào cho quá trình dẫn xuất khóa.
Ngoài ra, mỗi cơ chế phải có các yêu cầu cụ thể được liệt kê ở ngay trước phần mô tả cơ chế.
Phụ lục A: Cung cấp hướng dẫn về việc sử dụng các cơ chế được xác định trong tiêu chuẩn này.
Phụ lục B: Các ví dụ bằng số về hoạt động của các cơ cấu được chỉ định trong tiêu chuẩn này.
Phụ lục C: Cung cấp các mã nhận dạng đối tượng sẽ được sử dụng để xác định các cơ chế được định nghĩa trong tiêu chuẩn này.
6 Cơ chế mã hóa có xác thực 2 (Key Wrap)
...
...
...
Phần này trình bày về cơ chế mã hóa có xác thực thường được biết đến với tên gọi là bọc khóa (Key Wrap - KW).
CHÚ THÍCH 1: Lược đồ này được thiết kế cơ bản cho mã hóa có sử dụng xác thực khóa và các thông tin đi kèm. Nó được thiết kế để sử dụng với các chuỗi dữ liệu ngắn. Tuy nhiên, lược đồ có thể được sử dụng với các chuỗi dữ liệu có độ dài tùy ý (tối đa lên tới 267-bit), dù không đạt hiệu quả cho việc bảo vệ với các thông điệp dài.
CHÚ THÍCH 2: Chế độ này được biết đến với tên gọi là bọc khóa (KW) khi mã khối AES được sử dụng, trong đó AES là chữ viết tắt của Advanced Encryption Standard, một thuật toán mã khối được trình bày chi tiết trong TCVN 11367-3:2016 (ISO/IEC 18033-3:2010). AES-KW cũng được trình bày chi tiết trong tài liệu tham khảo [7] và [9].
6.2 Ký hiệu riêng
Trong tiêu chuẩn này áp dụng các ký hiệu và chữ viết tắt dưới đây:
C0, C1,..., CM
Chuỗi (m + 1) khối 64-bit thu được là đầu ra của quá trình mã hóa có xác thực.
D1, D2,..., Dm
Chuỗi m khối 64-bit thu được bằng cách phân chia D, tức là 64m = len(D).
...
...
...
Chuỗi m khối 64-bit được tính toán trong quá trình mã hóa và giải mã.
Y
Khối 64-bit được sử dụng trong quá trình mã hóa và giải mã.
Z
Khối 128-bit được tính toán trong quá trình mã hóa và giải mã.
6.3 Yêu cầu riêng
Mã khối được sử dụng trong cơ chế này phải là mã khối 128-bit, tức là phải có n = 128.
Chuỗi dữ liệu D được bảo vệ bằng cách áp dụng cơ chế này phải chứa ít nhất 128-bit và phải là bội của 64-bit (tức độ dài của D phải là 64m với một số nguyên m > 1).
6.4 Quá trình mã hóa
...
...
...
d) Phân chia D thành một chuỗi m khối 64-bit D1, D2,..., Dm, do đó D1 chứa 64-bit đầu tiên của D, D2 chứa 64-bit tiếp theo của D và tiếp tục cho đến hết D.
e) Đặt Y là khối 64-bit biểu diễn theo hệ hexa A6A6A6A6A6A6A6A6 hoặc theo hệ nhị phân (10100110 10100110 ... 10100110).
f) Cho i = 1,2,... .,m:
Đặt Ri = Di.
g) Cho i = 1,2,...., 6m thực hiện 04 bước sau:
h) Đặt Z = eK (Y || R1);
i) Đặt Y = Z|64 #64(i);
j) Với j = 1,2,..., m-1:
Đặt Rj = Rj+1;
...
...
...
l) Đặt C0 = Y.
m) Với i = 1,2, ..., m:
Đặt Ci = Ri.
Đầu ra của quá trình trên hay bản mã hóa có xác thực của D là chuỗi bit:
C = C0 || C1 || ...|| Cm
Hay C là một chuỗi (64(m + 1))-bit, nghĩa là C chứa nhiều hơn D 64-bit.
6.5 Quy trình giải mã
Bên nhận thực hiện các bước sau để giải mã và xác nhận một chuỗi C đã được mã hóa có xác thực.
n) Nếu len (C) không là một bội số của 64 hoặc nhỏ hơn 192, dừng và thông báo “Không hợp lệ”.
...
...
...
p) Đặt Y = C0.
q) Cho i = 1,2,...., m:
Đặt Ri = Ci.
r) Cho i = 6m, 6m-1, giảm đi 1, thực hiện 04 bước sau:
s) Đặt Z = dK ([K #64(i)]||Rm);
t) Đặt Y = Z|64;
u) Cho j = m, m-1, ...,2:
Đặt Rj = Rj+1;
v) Đặt R1 = Z|64.
...
...
...
7 Cơ chế mã hóa có xác thực 3 (CCM)
7.1 Tổng quan
Phần này này quy định một cơ chế mã hóa có xác thực thường được gọi là CCM (Counter with CBC-MAC).
CHÚ THÍCH: CCM là do Whiting, Housley và Ferguson đề xuất [10]. Phiên bản CCM được quy định ở đây là trường hợp đặc biệt của CCM được định nghĩa trong [8] và [10].
7.2 Ký hiệu riêng
Trong tiêu chuẩn này áp dụng các ký hiệu và chữ viết tắt dưới đây:
B
Khối bit được sử dụng trong tính toán giá trị thẻ (tag).
B1, B2,..., Bv
...
...
...
C1, C2, ..., Cm
Chuỗi gồm m khối có kích thước 128-bit là một phần đầu ra thu được của cơ chế mã hóa có xác thực.
D1, D2,..., Dm
Chuỗi gồm m khối có kích thước khối 128-bit thu được bằng việc phân chia phiên bản có đệm của D.
F
Bộ tám (octet) làm cờ.
L
Độ dài của D (tính theo octet), ngoại trừ phần đệm và độ dài khối D0.
r
...
...
...
S
Biến khởi tạo (trong 120-8w bit).
T
Giá trị tag của bản rõ (trong t-bit).
T'
Giá trị tag được tính toán lại, sinh ra trong quá trình giải mã.
U
Giá trị tag đã được mã hóa (trong t-bit).
v
...
...
...
w
Độ dài trường thông điệp tính theo octet.
X
Khối 128-bit được tính toán trong quá trình mã hóa và giải mã.
Y
Khối 128-bit được tính toán trong quá trình mã hóa và giải mã.
7.3 Yêu cầu riêng
Trước khi bắt đầu sử dụng cơ chế này, bên gửi và bên nhận dữ liệu có áp dụng cơ chế mã hóa có xác thực phải thỏa thuận:
a) t là độ dài thẻ (tag) tính theo bit; t phải được chọn từ tập hợp {32, 48, 64, 80, 96, 112, 128};
...
...
...
CHÚ THÍCH: Việc chọn w ảnh hưởng đến độ dài tối đa của thông điệp cần được bảo vệ. Độ dài tối đa của thông điệp là 28w+3 bit hay 28w octet.
Mã khối được sử dụng trong cơ chế này phải là mã khối 128-bit, tức mã khối phải có n = 128.
Chuỗi dữ liệu D đã được bảo vệ qua áp dụng cơ chế này và chuỗi dữ liệu A được xác thực bổ sung, phải chứa toàn bộ số lượng octet, tức độ dài của chuỗi phải là một bội của 8-bit (tức là len(D) và len(A) phải là bội số nguyên của 8).
7.4 Quá trình mã hóa
Bên khởi tạo sẽ thực
hiện các bước sau để bảo vệ chuỗi dữ liệu D. Đặt ,
tức là L là số octets
trong D.
a) Phải chọn biến bắt đầu S chứa 15-w octet (tức là 120-8w bit) sẽ được chọn. Biến này sẽ khác biệt đối với mọi thông điệp được bảo vệ và sẽ được cung cấp cho bên nhận thông điệp. Tuy nhiên, không yêu cầu giá trị này là không thể đoán trước được hoặc phải giữ bí mật.
CHÚ THÍCH 1: Ví dụ, giá trị S có thể được tạo bằng bộ đếm của bên khởi tạo và được gửi dưới dạng rõ cùng với thông điệp được bảo vệ.
b) Đệm vào bên phải chuỗi dữ liệu D với 16-r octet “0” (tức là trong khoảng 0 đến 120-bit “0”) sao cho phần đệm là biến thể của D là bội số của 128-bit. Sau đó, phân chia phần đệm là biến thể của D thành một chuỗi, gồm m khối 128-bit D1, D2, ..., Dm, sao cho D1 chứa 128-bit đầu tiên của D, D2 chứa 128-bit tiếp theo, ...
CHÚ THÍCH 2: Giá trị m cần thỏa mãn 16(m - 1) < L ≤ 16m.
...
...
...
d) Nếu len(A) > 0, thì đặt cờ octet
CHÚ THÍCH 3: Bit có trọng số cao nhất (ngoài cùng bên trái) của F là bit “dự trữ”, tức là bit đó bằng 0 cho phiên bản của cơ chế được quy định ở đây, nhưng có thể được sử dụng cho các phiên bản khác của cơ chế trong tương lai (chưa được quy định). Bit tiếp theo của bit có trọng số cao nhất trong F được đặt bằng 0 để chỉ ra rằng tất cả dữ liệu được bảo vệ bởi cơ chế này đã được mã hóa.
e) Đặt X = eK (F || S || #8w(L)).
f) Nếu len(A) > 0, thì thực hiện 06 bước sau:
1) Nếu 0 < len(A) < 65280, thì đặt
2) Nếu 65280 ≤ len(A) < 232, thì đặt
3) Nếu 232 ≤ len(A) < 264, thì đặt
4) Phân chia B thành một dãy các khối: B1, B2,..., Bv, như sau: đặt B1 chứa n-bit đầu tiên của B, B2 chứa n-bit tiếp theo, …, cho đến khi Bv chứa k-bit cuối cùng, trong đó 0 < k ≤ n. Do đó, len(B) = (v - 1)n + k;
5) Đệm bên phải Bv với n - k số không, tức là để Bv = Bv || 0n-k:;
...
...
...
Đặt X = eK(X
Bi).
g) Cho i = 1, 2,..., m:
Đặt X = eK(X
Di).
h) Đặt T = X|t.
CHÚ THÍCH 4: Tag bán rõ T bằng với giá trị MAC được tính toán trên chuỗi dữ liệu B1, B2, ..., BV, D1, D2, ..., Dm, sử dụng một sửa đổi nhỏ của Thuật toán MAC 1 được chỉ định trong TCVN 11495-1:2016 (ISO/IEC 9797-1:2011).
i) Đặt cờ octets F = (05 || #3(w - 1)), và đặt Y = (F || S || 08w).
CHÚ THÍCH 5: Hai bit có trọng số cao nhất (ngoài cùng bên trái) của F là bit “dự trữ”, tức là bit đó bằng 0 cho phiên bản của cơ chế được quy định ở đây, nhưng có thể được sử dụng cho các phiên bản khác của cơ chế trong tương lai (chưa được quy định). Ba bit có trọng số cao nhất tiếp theo của F được đặt bằng 0 để đảm bảo rằng bộ tám này khác với bộ tám làm cờ được sử dụng tại bước c ở trên.
j)
Đặt U = T [(eK(Y)]|t.
k) Với i = 1, 2, ..., m - 1, thực hiện hai bước sau:
...
...
...
2) Đặt Ci = Di eK(Y).
l)
Đặt Y = (F || S || #8w(m)), và đặt Cm = [Dm eK(Y)]|8r.
Đầu ra của quá trình trên, tức là biến thể được mã hóa có xác thực của D, phải là chuỗi bit:
C = C1 || C2 ||...|| Cm-1 || Cm II U
Nghĩa là, một chuỗi gồm (8L+t)-bit, nghĩa là C chứa chính xác t-bit nhiều hơn chuỗi dữ liệu gốc D [mặc dù cũng cần truyền tải (120-8w)-bit biến khởi tạo S và độ dài biến bổ sung được xác thực dữ liệu A đến bên nhận].
7.5 Quy trình giải mã
Bên nhận sẽ thực hiện các bước sau để giải mã và xác minh mã hóa - xác thực chuỗi C.
a) Nếu C không chứa toàn bộ số octet thì tạm dừng và thông báo “Không hợp lệ”.
b) Nếu độ dài của c nhỏ hơn (t + 8)-bit, thì tạm dừng và thông báo “Không hợp lệ”.
...
...
...
d) Đặt cờ octet F = (05 II #3(w - 1)) và đặt Y = (F || S || 08w).
e) Đặt T = U [eK(Y)]|t.
f) Với i = 1, 2, ..., m - 1, thực hiện hai bước sau:
1) Đặt Y = (F || S || #8w(i));
2) Đặt Di = Ci
eK(Y).
g) Đặt Y
= (F || S
|| #8w(m)), và đặt Dm = Cm [eK(Y)]|8r.
h) Đặt D = D1 || D2 || ... || Dm, và đặt L = 16m - 16 + r.
i) Đệm bên phải Dm với 128-8r số “0”, tức là đặt Dm - Dm ||0128-8r.
j) Nếu len(A) = 0, thì đặt cờ octets
...
...
...
l) Đặt X = eK(F || S || #8w(L)).
m) Nếu len(A) > 0, sau đó thực hiện 06 bước sau:
1) Nếu 0 < len(A) < 65280 thì đặt
2) Nếu 65280 ≤ len(A) < 232 thì đặt
3) Nếu 232 < len(A) < 264 thì đặt
4) Phân chia B thành một dãy các khối: B1, B2, ..., BV, như sau: đặt B1 chứa n-bit đầu tiên của B, B2 chứa n-bit tiếp theo, …, cho đến khi Bv chứa k-bit cuối cùng, trong đó 0 < k ≤ n. Do đó, len(B) = (v - 1)n + k;
5) Đệm bên phải Bv với n - k số “0”, tức là để Bv = Bv || 0n-k;
6) Cho i = 1, 2, ..., v:
...
...
...
o) Đặt T' = X|t.
p) Nếu T = T', thì xuất D như đã tính ở bước h) và A. Ngược lại, thông báo “Không hợp lệ”.
8 Cơ chế mã hóa có xác thực 4 (EAX)
8.1 Tổng quan
Phần này trình bày về cơ chế mã hóa có sử dụng xác thực thường được biết đến với tên gọi EAX.
CHÚ THÍCH: EAX do Bellare, Rogaway và Wagner [2], EAX không phải là một từ viết tắt cụ thể nào.
8.2 Ký hiệu riêng
Trong tiêu chuẩn này áp dụng các ký hiệu và chữ viết tắt dưới đây:
...
...
...
Chuỗi khối bit (mỗi khối n-bit, ngoại trừ khối Cm) là thành phần đầu ra thu được của quá trình mã hóa có xác thực.
D1, D2, ..., Dm
Chuỗi các khối bit (mỗi khối n-bit, ngoại trừ khối Dm) thu được bằng cách phân chia D.
E0, E1, E2
Các khối n-bit được tính toán trong quá trình mã hóa và giải mã.
M
Hàm được sử dụng trong quá trình mã hóa và giải mã.
S
Biến khởi tạo S (n-bit).
...
...
...
Thẻ (tag) (t-bit), đính kèm với một thông điệp đã được mã hóa để bảo vệ tính toàn vẹn.
T'
Giá trị tag được tính toán lại, sinh ra trong quá trình giải mã.
W
Khối n-bit được tính toán trong quá trình mã hóa và giải mã.
8.3 Yêu cầu riêng
Trong bất kỳ trường hợp nào sử dụng cơ chế này, bên gửi và bên nhận dữ liệu có áp dụng cơ chế mã hóa có sử dụng xác thực, phải thỏa thuận về t, độ dài tag được tính bằng bit, trong đó: 0 < t ≤ n.
8.4 Định nghĩa hàm M
Định nghĩa các thủ tục mã hóa và giải mã yêu cầu định nghĩa hàm M nhận một chuỗi bit có độ dài tùy ý và một khóa mã khối ở đầu vào và đưa một khối n-bit ở đầu ra. Định nghĩa hàm M như sau:
...
...
...
CHÚ THÍCH: Thuật toán MAC 5 trong tiêu chuẩn TCVN 11495-1:2016 (ISO/IEC 9797-1:2011) còn được biết đến với tên gọi CMAC.
8.5 Quá trình mã hóa
Bên gửi thực hiện các bước sau để bảo vệ chuỗi dữ liệu D:
x) Lựa chọn biến khởi tạo S chứa n-bit. Biến S là riêng biệt đối với mỗi bản tin được bảo vệ, phải sẵn sàng tại bên nhận bản tin. Tuy nhiên, giá trị này không nhất thiết phải bí mật hoặc không thể đoán trước.
y) Đặt E0 = mk(0n || S).
z) Đặt E1 = Mk(0n-1 || 1 || A).
aa) Đặt W = E0.
bb) Chia D thành một chuỗi các khối: D1, D2,…, Dm, như sau: đặt D1 chứa n-bit đầu tiên của D, D2 chứa n-bit kế tiếp và cứ thế tiếp tục đến khi Dm chứa r-bit sau cùng, trong đó 0 < r ≤ n; Do đó len(D) = (m-1)n + r.
cc) Với i = 1, 2,..., m-1, thực hiện 02 bước sau:
...
...
...
ee) Đặt W = #n (#-1(W) + 1mod2n).
ff) Đặt Cm
=Dm [eK(W)]|r.
gg) Đặt E2 = Mk (0n-2 || 1 || 0 || C1 || C2 || ...|| Cm).
hh) Đặt T = [E0 E1
E2]|t.
Đầu ra của quá trình trên, tức là bản mã hóa có sử dụng xác thực của D là chuỗi bit:
C = C1 || C2 || ... || Cm-1 || Cm || T
Hay C là một chuỗi ((m - 1)n + r + t)-bit, nghĩa là chứa nhiều hơn t-bit so với chuỗi dữ liệu gốc D (mặc dù nó phải cần mang n-bit biến khởi tạo S và dữ liệu A đã được xác thực bổ sung có độ dài thay đổi đến bên nhận).
8.6 Quy trình giải mã
Bên nhận thực hiện các bước sau để giải mã và xác nhận một chuỗi C đã được mã hóa có xác thực.
...
...
...
jj) Đặt m và r là các số nguyên duy nhất xác định sao cho C chứa tổng ((m - 1)n + r + t)-bit, trong đó 0 < r ≤ n. Chia C thành một chuỗi các khối: C1, C2,..., Cm, T. Đặt C1 chứa n-bit đầu tiên của C, C2 chứa n-bit kế tiếp và cứ như thế cho đến khi Cm chứa r-bit kế tiếp của C. Sau cùng, đặt T là t-bit cuối cùng của C.
kk) Đặt E0 = MK (0n || S).
ll) Đặt E1 = MK (0n-1 || 1 || A).
mm) Đặt E2 = MK (0n-2 || 1 || 0 || C1 || C2 ||... || Cm).
nn) Đặt
T' = [E0 Et
E2]|t.
oo) Nếu T ≠ T', thì dừng và thông báo “Không hợp lệ”.
pp) Đặt W = E0.
qq) Với i = 1, 2,..., m - 1, thực hiện 02 bước sau:
rr) Đặt Di = Ci eK (W);
...
...
...
tt) Đặt Dm = Cm [eK(W)]|r.
uu) Đầu ra là D và A.
9 Cơ chế mã hóa có xác thực 5 (Encrypt-then-MAC)
9.1 Tổng quan
Phần này trình bày về cơ chế mã hóa có xác thực được tạo nên từ sự kết hợp giữa một cơ chế mã hóa và một lược đồ MAC được xác định. Lược đồ này yêu cầu mã hóa dữ liệu được bảo vệ trước, sau đó tính toán MAC trên kết quả dữ liệu đã được mã hóa.
CHÚ THÍCH: Cơ chế Encrypt-then-MAC đã được phân tích bởi Bellare và Namprempre [1], là những người chứng minh sự an toàn của cơ chế này dựa trên giả thiết phương thức mã hóa và kỹ thuật MAC có các đặc tính an toàn nhất định.
9.2 Ký hiệu riêng
Trong tiêu chuẩn này áp dụng các ký hiệu và chữ viết tắt dưới đây:
C'
...
...
...
δ
Hàm giải mã, tức là một hàm với đầu vào là một khóa mã khối K1, một biến khởi tạo S và một chuỗi dữ liệu đã được mã hóa C' và th thông gua sử dụng chế độ vận hành đã chọn, đầu ra là chuỗi dữ liệu đã được giải mã; đầu ra được viết là δK1,S(C').
ε
Hàm mã hóa, tức là hàm với đầu vào là một khóa mã khối K1, một biến khởi tạo S, một chuỗi dữ liệu D và thông qua sử dụng chế độ vận hành đã chọn, đầu ra là chuỗi dữ liệu đã được mã hóa: đầu ra được viết là εK1,S (D)
ƒ
Hàm MAC; nếu X là chuỗi đầu vào và K2 là khóa MAC, thì đầu ra của hàm MAC được viết là ƒK2(X)
K1
Khóa bí mật của mã khối
K2
...
...
...
S
Biến khởi tạo (n-bit)
T
Tag (t-bit), đính kèm với thông điệp đã được mã hóa để bảo vệ tính toàn vẹn
T'
Giá trị tag được tính toán lại, sinh ra trong quá trình giải mã.
9.3 Yêu cầu riêng
Trong bất kỳ trường hợp nào sử dụng cơ chế này, bên nhận và bên gửi dữ liệu áp dung cơ chế mã hóa có sử dụng xác thực, phải thỏa thuận:
a) Chế độ hoạt động của mã khối được mô tả chi tiết trong tiêu chuẩn TCVN 12213:2018 (ISO/IEC 10116:2017) (Không được sử dụng chế độ ECB).
...
...
...
c) Phương pháp để trích xuất một cặp khóa bí mật (K1, K2) từ khóa bí mật K, trong đó: K1 là khóa cho mã khối được chọn và K2 là khóa cho cơ chế tính toán MAC được chọn.
CHÚ THÍCH 1: K phải được chọn sao cho số lượng các giá trị có thể có cho K ít nhất phải lớn hơn hoặc bằng số lượng các giá trị có thể có của khóa mã khối và ít nhất cũng phải lớn hơn hoặc bằng số lượng giá trị khóa MAC có thể có.
CHÚ THÍCH 2: Các cơ chế có thể có thể trích xuất (K1, K2) từ khóa bí mật K bằng cách lấy các chuỗi bit (riêng biệt) từ K hoặc từ h(K), trong đó h là hàm băm được chọn ra từ các hàm băm được trình bày chi tiết trong tiêu chuản TCVN 11816 (ISO/IEC 10118) (Tất cả các phần). Tổng quát hơn, có thể nhận được (K1, K2) từ khóa bí mật K bằng cách sử dụng hàm dẫn xuất được quy định trong ISO/IEC 11770-6:2016.
d) Sử dụng cơ chế cơ bản (không hỗ trợ ADD) hay sử dụng cơ chế biến thể AAD. Nếu sử dụng cơ chế là biến thể AAD, thì chuỗi dữ liệu được xác thực bổ sung A sẽ chứa toàn bộ số octet (có thể bằng “0”), tức là len(A) sẽ là bội số nguyên của 8, nhưng phải chứa ít hơn 264 octet (hoặc thậm chí ít hơn tùy thuộc vào yêu cầu của lược đồ MAC được sử dụng).
Một khóa K duy nhất sẽ chỉ được sử dụng với một biến thể, tức là chỉ với biến thể cơ bản hoặc chỉ với biến thể AAD.
9.4 Quá trình mã hóa
Bên gửi phải thực hiện các bước sau để bảo vệ chuỗi dữ liệu D và nếu sử dụng cơ chế biến thể AAD, để đảm bảo tính toàn vẹn của chuỗi dữ liệu A đã được xác thực bổ sung.
a) Chọn biến khởi tạo S thích hợp để sử dụng với chế độ hoạt động của mã khối của các hoạt động sẽ chọn. Biến S là riêng biệt đối với mỗi thông điệp được bảo vệ theo khóa đã cho và phải sẵn sàng tại bên nhận thông điệp. Các yêu cầu có thể có đối với S được mô tả chi tiết trong các phần tương ứng của tiêu chuẩn TCVN 12213:2018 (ISO/IEC 10116:2017) và hướng dẫn được đưa ra trong Phụ lục A, A.6
b) Đặt
...
...
...
c) Đặt T =
c) Nếu len(A) không phải là bội của 8 hoặc ≥ 267, sau đó tạm dừng và thông báo "Không hợp lệ”.
Đầu ra của quá trình trên, tức là biến thể của D được mã hóa - xác thực, phải là chuỗi bit:
C - C' || T, cùng với biến khởi tạo SS.
9.5 Quy trình giải mã
Bên nhận phải thực hiện các bước sau để giải mã và xác minh một chuỗi C được mã hóa - xác thực, với biến khởi tạo S kèm theo và nếu biến AAD sử dụng cơ chế để xác minh toàn vẹn của dữ liệu được xác thực bổ sung A.
a) Nếu độ dài của C nhỏ hơn t thì dừng, thông báo “Không hợp lệ”.
b) Đặt T là t-bit ngoài cùng bên phải của C và đặt C' bằng C với t-bit ngoài cùng bên phải bị loại bỏ, tức là C = C' || t..
...
...
...
c) Đặt
Nếu sử dụng biến AAD:
d) Nếu len(A) không phải là bội của 8 hoặc ≥ 267 thì tạm dừng và thông báo “Không hợp lệ”.
e) Nếu T ≠ T' thì tạm dừng và và thông báo “Không hợp lệ”.
f) Đặt
g) Đầu ra là D.
10 Cơ chế mã hóa có xác thực (GCM)
10.1 Tổng quan
...
...
...
CHÚ THÍCH: GCM là do McGrew và Viega đề xuất [6].
10.2 Ký hiệu riêng
C1, C2,...,Cm
Chuỗi gồm m khối 128-bit (ngoại trừ khối Cm có thể chứa từ 1 đến 128-bit) là đầu ra của quá trình mã hóa có xác thực.
D1, D2, ..., Dm
Chuỗi gồm m khối 128-bit (ngoại trừ khối Dm) thu được bằng cách phân chia D.
G
Hàm được sử dụng trong quá trình mã hóa và giải mã (10.5)
H
...
...
...
inc
Hàm có đầu vào là một khối 128-bit và xuất ra một khối 128-bit, trong đó có X là một khối 128-bit:
inc(X) = (X|96) || #32,(#-1(X|32) + 1mod232)
r
Số lượng bit trong khối cuối cùng của thông điệp được mã hóa, sau khi nó đã được phân chia thành các khối n-bit, tức là thông điệp chứa ((m - 1 )n + r)-bit.
R
Khối 128-bit được sử dụng trong tính toán phép nhân GF(2128).
S
...
...
...
T
Tag (t-bit), được đính kèm với thông điệp đã được mã hóa để bảo vệ tính toàn vẹn.
T'
Giá trị tag được tính toán lại, sinh ra trong quá trình giải mã.
U, V, W, Z
Các khối 128-bit được sử dụng trong xác định tính toán phép nhân GF(2128).
X0, X1,..., Xk+l+1
Các khối 128-bit được sử dụng trong tính toán hàm G.
Y0, Y1,...,Ym
...
...
...
{ }
Chuỗi bit có độ dài bằng 0.
•
Phép nhân trên trường GF(2128). Đa thức được dùng để xác định biểu diễn của GF(2128) là 1 + α + α2 + α7 + α128.
10.3 Yêu cầu riêng
Trong bất kỳ trường hợp nào sử dụng cơ chế này, bên gửi và bên nhận dữ liệu có áp dụng cơ chế mã hóa có sử dụng xác thực phải thỏa thuận: Độ dài tag t-bit, trong đó: t phải là một bội của 8 thỏa mãn 96 ≤ t ≤ 128 (t = 32 và t = 64 cũng được cho phép đối với các ứng dụng đặc biệt).
Mã khối được sử dụng với cơ chế này phải là mã khối 128-bit, tức là mã khối phải có n = 128.
10.4 Định nghĩa về phép nhân •
Giả thiết U và V là các khối 128-bit; thì W = U • V được xác định như sau, trong đó: W cũng là một khối 128-bit. Lưu ý rằng, trong mô tả dưới đây, V biểu thị là bit thứ i của V, tức là V = v0 || v1 ||...|| v127. Ngoài ra, z127 biểu thị là bit ngoài cùng bên phải của Z.
...
...
...
b) Đặt W = 0128.
c) Đặt Z = U.
d) Cho i = 0, 1, ..., 127 thực hiện 02 bước sau:
1) Nếu vi = 1, thì đặt W = W Z;
2) Nếu z127 = 0, thì đặt Z = Z >> 1. Cách khác, đặt Z = (Z >> 1) R.
10.5 Định nghĩa hàm G
Các quá trình mã hóa và giải mã sử dụng hàm G, nhận đầu vào là khối 128-bit và hai chuỗi bit có độ dài tùy ý, đầu ra là một khối 128-bit. Đặt H là một khối 128-bit, W và Z là hai chuỗi bit có độ dài tùy ý (có thể rỗng). Giả thiết rằng k và u là các số nguyên duy nhất sao cho len(W) - 128(k - 1) + u và 0 < u ≤ 128;
Tương tự cũng giả thiết rằng l và v là các số nguyên duy nhất sao cho len(Z) = 128(l - 1) + v và 0 < v ≤ 128. Đặt W1, W2,..., Wk là chuỗi có kích thước khối 128-bit (có thể không bao gồm Wk chứa u-bit sau cùng của W) thu được qua việc phân chia W; tương tự, đặt Z1, Z2,..., Zl, là chuỗi có kích thước khối 128-bit (có thể không bao gồm Zl chứa v-bit sau cùng của Z) thu được qua việc phân chia Z.
Thì G(H, W, Z) là giá trị Xk+l+1 128-bit, trong đó: Xl là xác định đệ quy với i = 0,1,..., k + l + 1, như sau:
...
...
...
b) Đặt Xi = (Xi-1 Wi) • H
1 ≤ i ≤ k - 1 (bỏ qua bước này nếu k ≤ 1).
c) Đặt Xk = (Xk-1
(Wk || 0128-u)) • H
(bỏ qua bước này nếu k = 0).
d) Đặt Xi = (Xi-1 Zi-k) • H
k + 1 < i ≤ k + l - 1 (bỏ qua bước này nếu l ≤ 1)
e) Đặt Xk+1 = (Xk+l-1 (Zl
|| 0128-v)) • H
(bỏ qua bước này nếu l = 0).
f) Đặt Xk+l+1 = (xk+1 [#64(len(W)) || #64 (len(Z))]) • H
...
...
...
Bên gửi thực hiện các bước sau để bảo vệ chuỗi dữ liệu D và đảm bảo tính toàn vẹn của chuỗi dữ liệu đã được xác thực bổ sung A.
a) Chọn biến khởi tạo S có độ dài tùy ý. Giá trị biến S phải là riêng biệt đối với mỗi thông điệp được bảo vệ và phải sẵn sàng tại bên nhận thông điệp. Tuy nhiên, giá trị này không nhất thiết phải bí mật hoặc không thể đoán trước.
CHÚ THÍCH: Giá trị S có thể được tạo ra bằng cách sử dụng một bộ đếm được duy trì bởi bên gửi và gửi đi trong một bản gốc đính kèm với thông điệp đã được bảo vệ.
b) Phân chia D thành một chuỗi các khối có kích thước 128-bit: D1, D2,..., Dm. Đặt D1 chứa 128-bit đầu tiên của D, D2 chứa 128-bit kế tiếp và cứ thế tiếp tục cho đến khi Dm chứa r-bit sau cùng của D, trong đó 0 < r ≤ 128. Do đó, D chứa tổng số ((m - 1 )n + r)-bit.
c) Đặt H = eK(0128).
d) Nếu len(S) = 96 thì đặt Y0 = S || 031 || 1. Cách khác, đặt Y0 = G(H,{},S).
e) Cho i = 1, 2,... , m - 1 thực hiện 02 bước sau:
1) Đặt Yi = inc(Yi-1);
2) Đặt Ci = Di eK(Yi).
...
...
...
g) Đặt Cm = Dm (eK(Ym)) |r.
Đầu ra của quá trình trên, biến thể mã hóa - xác thực của D phải là chuỗi bit:
C = C1 || C2 ||...|| Cm || T
Hay C là một chuỗi (m - 1 )n + r + t, nghĩa là chuỗi C chứa nhiều hơn so với chuỗi dữ liệu gốc D t-bit (mặc dù nó phải cần mang thêm n-bit biến khởi tạo S và dữ liệu A đã được xác thực bổ sung có độ dài thay đổi đến bên nhận).
10.7 Quy trình giải mã
Bên nhận thực hiện các bước sau để giải mã và xác nhận một chuỗi C đã được mã hóa có sử dụng xác thực và xác nhận dữ liệu A đã được xác thực bổ sung.
a) Nếu độ dài của C nhỏ hơn t thì dừng và thông báo “Không hợp lệ”.
b) Đặt m và r là các số nguyên duy nhất xác định sao cho C chứa một tổng ((m - 1 )n + r + t)-bit, trong đó 0 < r ≤ n. Chia C thành một chuỗi các khối: C1, C2,..., Cm, T. Đặt C1 chứa n-bit đầu tiên của C, C2 chứa n-bit kế tiếp và cứ như thế cho đến khi Cm chứa r-bit tiếp theo của C. Cuối cùng, đặt T là t-bit cuối cùng của C.
c) Đặt H = eK(0128).
...
...
...
e) Nếu T' = (G(H,
A, C1 || C2 || ...
|| Cm) eK(Y0))|t.
f) Nếu T ≠ T' thì dừng và thông báo “Không hợp lệ”.
g) Cho i = 1, 2,..., m - 1, hãy thực hiện 02 bước sau:
1) Đặt Yi = inc(Yi-1);
2) Đặt Di = Ci eK(Yi).
h) Đặt Ym = inc (Ym-1 ).
i) Đặt
Dm = Cm (eK(Ym))|r
.
j) Đầu ra D và dữ liệu xác thực bổ sung A.
...
...
...
(tham khảo)
Hướng dẫn sử dụng các cơ chế
A.1. Giới thiệu
Mục đích của phụ lục này là nhằm cung cấp hướng dẫn sử dụng các cơ chế đã được định nghĩa trong tiêu chuẩn này. Việc sử dụng từng cơ chế đòi hỏi cần chọn các tham số cụ thể cho mỗi cơ chế, chọn các tham số đánh giá khuyến nghị được đưa ra trong các phần từ A.2 đến A.7. Phần còn lại là các khuyến nghị liên quan đến các yêu cầu áp dụng tất cả các cơ chế trong tiêu chuẩn này (Điều khoản 5).
Tất cả các cơ chế yêu cầu chọn một mã khối từ tập hợp các mã khối đã được quy định trong TCVN 11367-3:2016 (ISO/IEC 18033-3:2010). Độ dài khối n của mã khối tối thiểu phải bằng 64, khuyến nghị có thể sử dụng mã khối với n = 128. Việc sử dụng mã khối với n = 128 là yêu cầu bắt buộc đối với các cơ chế 2, 3 và 6.
Tất cả các cơ chế cũng yêu cầu bên gửi và bên nhận dữ liệu đã được bảo vệ phải chia sẻ một khóa bí mật K. Khóa bí mật này chỉ được hai bên biết và có thể có thêm bên thứ ba có sự tin tưởng của cả bên gửi và bên nhận. Có nhiều phương thức để thiết lập khóa bí mật này; tuy nhiên, khuyến nghị nên sử dụng cơ chế thiết lập khóa được trình bày chi tiết trong tiêu chuẩn TCVN 7817-2:2010 (ISO/IEC 11770-2:2008) hoặc tiêu chuẩn TCVN 7817-3:2007 (ISO/IEC 11770-3:1999).
Cả sáu cơ chế yêu cầu chọn một độ dài thẻ (tag). Lựa chọn tham số này ảnh hưởng đến mức độ đảm bảo được cung cấp cho bên nhận liên quan đến tính toàn vẹn và nguồn gốc của một thông điệp được bảo vệ. Để biết thêm thông tin chi tiết, xem phụ lục C của TCVN 11495-1:2016 (ISO/IEC 9797-1:2011).
A.2 Lựa chọn cơ chế
Tất cả các cơ chế được trình bày trong tiêu chuẩn này được cho là cung cấp mức độ an toàn cao. Tuy nhiên, một số cơ chế phù hợp hơn các cơ chế khác cho ứng dụng cụ thể. Khi chọn một cơ chế để sử dụng, cần xem xét các tính chất được nêu trong Bảng A.2 và danh sách liệt kê dưới đây cần được chú ý xem xét.
...
...
...
Cơ chế số
2
3
4
5
6
Số lượng xấp xỉ của các phép tính mã khối cần thiết để mã hóa một thông điệp q-bit
12[q/n]
2q/n
...
...
...
Phụ thuộc vào cơ chế mã hóa và MAC sử dụng
q/n
Yêu cầu bản quyền
Không
Không
Không
Phụ thuộc vào cơ chế mã hóa và MAC sử dụng
Không
Thiết kế đặc biệt để sử dụng với các thông điệp ngắn
...
...
...
Không
Không
Không
Không
Độ dài thông điệp phải biết trước khi bắt đầu mã hóa
Không
Có
Không
Không
...
...
...
Yêu cầu giá trị khởi tạo
Không
Có
Có
Có
Có
Đã được chuẩn hóa trước đó
Có
Có
...
...
...
Không
Có
a) Cơ chế 3 và 4 là các phương pháp kết hợp mã hóa sử dụng chế độ CTR trong mã khối (TCVN 12213:2018 (ISO/IEC 10116:2017)) với một mã xác thực thông điệp.
b) Cơ chế 5 cung cấp một phương thức để kết hợp phương pháp đã tiêu chuẩn hóa để mã hóa và tính toán MAC. Nếu việc triển khai các chức năng như vậy đã có sẵn, thì cơ chế 5 có thể có một số lợi thế khi triển khai.
c) Cơ chế 6 phù hợp với việc triển khai phần cứng thông lượng cao, vì có thể được thực thi mà không cần khoảng thời gian rỗi trong kỹ thuật pipeline.
A.3 Cơ chế 2 (Key Wrap)
Cơ chế này yêu cầu phải sử dụng mã khối có n = 128. Bắt buộc phải sử dụng một trong các mã khối được trình bày chi tiết trong tiêu chuẩn TCVN 11367-3:2016 (ISO/IEC 18033-3:2010), mục 5.
A.4 Cơ chế 3 (CCM)
Cơ chế này yêu cầu phải sử dụng mã khối có n = 128. Bắt buộc phải sử dụng một trong các mã khối được trình bày chi tiết trong tiêu chuẩn TCVN 11367-3:2016 (ISO/IEC 18033-3:2010), mục 5.
...
...
...
Cơ chế này yêu cầu sự chọn độ dài trường thông điệp w (tính theo octet) (từ tập hợp {2,3,4,5,6,7,8}). Việc chọn độ dài octet của trường độ dài thông điệp w cũng phụ thuộc vào môi trường sử dụng cơ chế này. Việc chọn w không ảnh hưởng đến mức an toàn mà cơ chế cung cấp. Giá trị w càng lớn càng cho phép độ dài thông điệp dài hơn, mặc dù chúng cũng làm giảm đi độ dài phần còn lại của biến khởi tạo. Tuy nhiên, ngay cả khi w được chọn bằng giá trị lớn nhất có thể, tức là w = 8,56-bit của biến khởi tạo S có thể được chọn để đảm bảo rằng một biến khởi tạo S khác được sử dụng cho mỗi thông điệp, phải đủ cho phần lớn, nếu không đủ cho tất cả các ứng dụng thiết thực. Với phần lớn các ứng dụng có giá trị w = 4, tức là cho một độ dài thông điệp lớn nhất 232 ≈ 4 × 109 octet, như vậy là đủ.
A.5 Cơ chế 4 (EAX)
Cơ chế này yêu cầu sự chọn tham số độ dài thẻ (tag) t (t ≤ n). Việc chọn độ dài tag t phụ thuộc vào môi trường sử dụng cơ chế này, tuy nhiên, trừ khi vì một số nguyên nhân bắt buộc nào đó mà phải chọn độ dài tag khác, còn lại khuyến nghị nên chọn độ dài tag t thỏa mãn t ≥ 64.
A.6 Cơ chế 5 (Encrypt-then-MAC)
Cơ chế này yêu cầu chọn phương thức vận hành và cơ chế tính toán MAC. Mức an toàn được cung cấp qua kết quả lược đồ mã hóa có sử dụng xác thực phụ thuộc vào mức độ an toàn của hai yêu cầu trên.
Đối với chế độ hoạt động mã hóa, cần tuân theo cơ chế an toàn trọng TCVN 12213:2018 (ISO/IEC 10116:2017). Đặc biệt, nếu chế độ CBC được sử dụng để mã hóa nhiều bản rõ với cùng một khóa, thì:
a) Một biến khởi tạo ngẫu nhiên nên được sử dụng để mã hóa mỗi bản rõ;
b) Khối bản rõ đầu tiên phải được đặt một cách đáng tin cậy thành một giá trị duy nhất cho bản rõ (ví dụ: bộ đếm).
Việc chọn cơ chế tính toán MAC trong trường hợp sử dụng kỹ thuật mã hóa được xác thực và cần tuân thủ cẩn thận lời khuyên được cung cấp trong TCVN 11495 (ISO/IEC 9797) (Tất cả các phần). Đặc biệt, nếu MAC dựa trên mã khối từ TCVN 11495-1:2016 (ISO/IEC 9797-1:2011) được chọn, thì:
...
...
...
b) Chỉ nên sử dụng phương pháp đệm 1 nếu độ dài thông báo được cố định.
A.7 Cơ chế 6 (GCM)
Cơ chế này yêu cầu phải sử dụng mã khối có n = 128. Bắt buộc phải sử dụng một trong các mã khối có đặc tính này được trình bày chi tiết trong tiêu chuẩn TCVN 11367-3:2016 (ISO/IEC 18033-3:2010), mục 5.
Độ dài biến khởi tạo S có thể thay đổi, phải được chọn sao cho 1 ≤ len(S) ≤ 264. Yêu cầu biến khởi tạo không bao giờ được tái sử dụng lại trong toàn bộ vòng đời của khóa là rất quan trọng đối với an toàn của cơ chế này.
Độ dài tag t phải được chọn ra sao cho t là một bội của 8 thỏa mãn 96 ≤ t ≤ 128 (t = 32) và t = 64 cũng được cho phép với các ứng dụng đặc biệt, mặc dù các tùy chọn này chỉ nên được sử dụng cực kỳ thận trọng - hướng dẫn chi tiết về sử dụng các độ dài tag đó được đưa ra trong phần Phụ lục C của [6]).
Chuỗi dữ liệu D phải thỏa mãn điều kiện sau thì mới áp dụng cơ chế mã hóa có xác thực:
len(D) ≤ 239 - 256
và chuỗi dữ liệu đã được xác thực bổ sung phải thỏa mãn len(A) ≤ 264. Tổng số các khối dữ liệu và các khối dữ liệu đã được xác thực bổ sung khi áp dụng GCM với một khóa K được ấn định phải ở mức tối đa 264. Ngoài ra, tổng số viện dẫn thủ tục mã hóa đối với bất kỳ khóa nào được đưa ra phải mức tối đa 232, trừ khi len(S) = 96 đối với mọi trường hợp sử dụng khóa đó.
...
...
...
(tham khảo)
Ví dụ
B.1 Giới thiệu
Phụ lục bao hàm các ví dụ về vận hành các cơ chế được trình bày chi tiết trong tiêu chuẩn này.
B.2 Cơ chế 2 (Key Wrap)
Ví dụ về vận hành cơ chế này với mã khối AES được đưa ra trong tiêu chuẩn IETF RFC 3394 [9].
B.3 Cơ chế 3 (CCM)
Sáu ví dụ về bộ ba thông điệp (Di), bản mã (Ci) và tag (Ti) được tạo ra bằng cách sử dụng mã khối AES, trong môi trường hợp sử dụng t = 128 và w = 2 (và vì vậy S phải chứa 104-bit). Tất cả các ví dụ đều được biểu diễn theo hệ Hexa. Khóa K và biến khởi tạo S được sử dụng trong 06 ví dụ:
...
...
...
C1: Chuỗi rỗng
CHÚ THÍCH: Các ví dụ khác về vận hành cơ chế này với mã khối AES được đưa ra trong IETF RFC 3610 [10].
B.4 Cơ chế 4 (EAX)
Sáu ví dụ về bộ ba: thông điệp (Di), bản mã (Ci) và tag (Ti) được tạo ra bằng cách sử dụng mã khối AES, trong môi trường hợp sử dụng t = 128. Tất cả các ví dụ dưới đều được biểu diễn theo hệ hexa. Khóa K và biến khởi tạo S được sử dụng trong 06 ví dụ:
...
...
...
D1: Chuỗi rỗng (tức là L = 0)
C1: Chuỗi rỗng
T1:
CHÚ THÍCH: Các ví dụ khác về vận hành cơ chế này với mã khối AES được đưa ra trong [2]
B.5 Cơ chế 5 (Encrypt-then-MAC)
Tham khảo trong tiêu chuẩn TCVN 11495 (ISO/IEC 9797) và TCVN 12213:2018 (ISO/IEC 10116:2017).
...
...
...
Hai ví dụ tiếp theo về bộ ba: thông điệp (Di), bản mã (Ci) và tag (DTi) được tạo ra bằng cách sử dụng mã khối AES, trong mỗi trường hợp sử dụng t = 128 và dữ liệu xác thực bổ sung bao hàm chuỗi rỗng. Tất cả các ví dụ dưới đều được biểu diễn theo Hệ hexa. Khóa K và biến khởi tạo S được sử dụng trong 02 ví dụ:
D1: Chuỗi rỗng (tức là L = 0)
C1: Chuỗi rỗng
T1:
CHÚ THÍCH: Các ví dụ khác về vận hành cơ chế này với mã khối AES được đưa ra trong phần tham khảo [6]
Phụ lục C
...
...
...
Mô-đun ASN.1
C.1 Định nghĩa định dạng
C.2 Sử dụng nhận diện đối tượng tiếp sau
Mỗi một cơ chế xác thực được trình bày trong tiêu chuẩn này sử dụng thuật toán mã khối, trong trường hợp sử dụng cơ chế mã hóa có xác thực (cơ chế 5), sử dụng chế độ hoạt động tương tự và sử dụng thuật toán MAC. Do đó, mã nhận dạng đối tượng cơ chế mã hóa có xác thực có thể được tuân theo bởi một trong các mã nhận dạng thuật toán cơ chế mã hóa đối với mã khối được chỉ định trong TCVN 11367-3:2016 (ISO/IEC 18033-3:2010) và bất kỳ tham số liên quan nào. Đối với trường hợp cơ chế 5, nhận dạng các chế độ hoạt động của mã khối (TCVN 12213:2018 (ISO/IEC 10116:2017)) và thuật toán MAC [TCVN 11495 (ISO/IEC 9797) (Tất cả các phần)] có thể được cung cấp.
Thư mục tài liệu tham khảo
[1] TCVN 11816 (ISO/IEC 10118), Công nghệ thông tin - Các kỹ thuật an toàn - Hàm băm.
[2] TCVN 7817-4:2010 (ISO/IEC 11770-4:2006), Công nghệ thông tin - Kỹ thuật an ninh quản lý khoá.
...
...
...
[4] BeLLARE M., NAMpREMpRE C.’Authenticated encryption: Relations among notions and analysis of the generic composition paradigm'. In: T. Okamoto (ed.), Advances in Cryptology - ASIACRYPT 2000, 6th International Conference on the Theory and Application of Cryptology and Information Security, Kyoto, Japan, December 3-7, 2000, Proceedings. Lecture Notes in Computer Science 1976, Springer-Verlag (2000) pp. 531-545
[5] BeLLARE M., RogAwAy P., WagneR D.’The EAX mode of operation, In: B. K. Roy, W.Meier (eds.): Fast Software Encryption, 11th International Workshop, FSE 2004, Delhi, India, February 5-7, 2004, Revised Papers. Lecture Notes in Computer Science 3017, Springer-Verlag (2004) pp.389-407
[6] National Institute of Standards and Technology, NIST Special Publication 800-38D: Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC. November 2007.
[7] National Institute of Standards and Technology, AES Key Wrap Specification. NIST, November 2001.
[8] National Institute of Standards and Technology, NIST Special Publication 800-38C: Recommendation for Block Cipher Modes of Operation: The CCM Mode For Authentication and Confidentiality. May 2004.
[9] SchAAd J., HousLEy R.RFC 3394: Advanced Encryption Standard (AES); Key Wrap Algorithm, IETF, September 2002.
[10] WhitiNg D., HousLey R., FeRguson N. RFC 3610: Counter with CBC-MAC (CCM). IETF, September 2003.
MỤC LỤC
...
...
...
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à chữ viết tắt
5 Các yêu cầu
6 Cơ chế mã hóa có xác thực 2 (Key Wrap)
6.1 Tổng quan
6.2 Ký hiệu riêng
...
...
...
6.4 Quá trình mã hóa
6.5 Quy trình giải mã
7 Cơ chế mã hóa có xác thực 3 (CCM)
7.1 Tổng quan
7.2 Ký hiệu riêng
7.3 Yêu cầu riêng
7.4 Quá trình mã hóa
7.5 Quy trình giải mã
8 Cơ chế mã hóa có xác thực 4 (EAX)
...
...
...
8.2 Ký hiệu riêng
8.3 Yêu cầu riêng
8.4 Định nghĩa hàm M
8.5 Quá trình mã hóa
8.6 Quy trình giải mã
9 Cơ chế mã hóa có xác thực 5 (Encrypt-then-MAC)
9.1 Tổng quan
9.2 Ký hiệu riêng
9.3 Yêu cầu riêng
...
...
...
9.5 Quy trình giải mã
10 Cơ chế mã hóa có xác thực (GCM)
10.1 Tổng quan
10.2 Ký hiệu riêng
10.3 Yêu cầu riêng
10.4 Định nghĩa về phép nhân •
10.5 Định nghĩa hàm G
10.6 Quá trình mã hóa
10.7 Quy trình giải mã
...
...
...
Phụ lục B (tham khảo) Ví dụ
Phụ lục C (quy định) Mô-đun ASN.1
Thư mục tài liệu tham khảo
Nguồn: https://thuvienphapluat.vn/TCVN/Dien-dien-tu/TCVN-12197-2024-ISO-IEC-19772-2020-An-toan-thong-tin-Ma-hoa-co-xac-thuc-921546.aspx
Bài viết liên quan:
- Tiêu chuẩn TCVN 14263:2024 mô tả mã khối MKV
- Tiêu chuẩn TCVN 14241-2:2024 về Giống chó Sông Mã
- Tiêu chuẩn TCVN 14223-2:2024 về Yêu cầu an toàn thiết bị lưu giữ ngoài nhà máy sản xuất, gia công kính phẳng
- Tiêu chuẩn TCVN 14223-3:2024 về Yêu cầu an toàn đối với Máy cắt kính
- Tiêu chuẩn TCVN 14213-1:2024 về Yêu cầu thiết kế thi công Tường Barrette
- Tiêu chuẩn TCVN 14212:2024 Thiết kế, thi công và nghiệm thu đối với móng cần trục tháp
- Tiêu chuẩn TCVN 13954:2024 về Thử nghiệm phản ứng với lửa để xác định tốc độ mất khối lượng của mẫu có bề mặt phẳng
- Tiêu chuẩn TCVN 13522-2:2024 về xác định tính lan truyền lửa tại mức thông lượng nhiệt 25kW/m2
- Tiêu chuẩn TCVN 14213-2:2024 về Yêu cầu kỹ thuật thi công tường Barrette
- Tiêu chuẩn TCVN 12783:2019 xác định tổng hàm lượng brom và iot bằng phương pháp phổ phát xạ quang plasma cặp cảm ứng
- Tiêu chuẩn TCVN 8064:2024 về Nhiên liệu điêzen 5 % Este metyl axit béo (DO B5)
- Tiêu chuẩn TCVN 8063:2024 về Xăng không chì pha 5 % Etanol (Xăng E5)
- Tiêu chuẩn TCVN 5740:2023 về Vòi đẩy chữa cháy
- Tiêu chuẩn TCVN 14262:2024 Định lượng Lactobacillus plantarum/Lactobacillus acidophilus bằng kỹ thuật đếm khuẩn lạc
- Tiêu chuẩn TCVN 14203:2024 về yêu cầu đối với mẫu tiêu bản côn trùng
- Tiêu chuẩn TCVN 14223-1:2024 về Thiết bị lưu giữ, xếp dỡ và vận chuyển trong nhà máy
- Tiêu chuẩn TCVN 13957:2024 về Yêu cầu thiết kế, thi công và nghiệm thu đối với Tuy nen kỹ thuật
- Tiêu chuẩn TCVN 9994:2024 về Quy phạm thực hành vệ sinh đối với rau quả tươi
- Tiêu chuẩn TCVN 14190-1:2024 về Khung tiêu chí và phương pháp luận đánh giá an toàn hệ thống sinh trắc học
- Tiêu chuẩn TCVN 14175:2024 về Phương pháp định lượng Bacillus amyloliquefaciens bằng kỹ thuật đếm khuẩn lạc