TCVN 11367-3:2016 hoàn toàn tương đương với ISO/IEC 18033-3:2010. TCVN 11367-3:2016 do Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã biên soạn, Ban Cơ yếu Chính phủ đề nghị, Tổng cục Tiêu chuẩn Đo lường Chất lượng thẩm định, Bộ Khoa học và Công nghệ công bố.
Tiêu chuẩn này đặc tả các loại mã khối. Mã khối ánh xạ các khối n bit vào các khối n bit dưới sự kiểm soát của khóa có độ dài k-bit. Có tất cả bảy loại mã khối khác nhau được mô tả và chúng được phân loại như Bảng sau.
Đặc tả mã khối
Độ dài khối |
Tên thuật toán |
Độ dài khóa |
64 bit |
TDEA |
128 hoặc 192 bit |
MISTY1 |
128 bit |
|
CAST-128 |
||
HIGHT |
||
128 bit |
AES |
128,192 hoặc 256 bit |
Camellia |
||
SEED |
128 bit |
Thuật toán AES là mã khối đối xứng, có thể xử lí các khối dữ liệu 128 bit, sử dụng khóa mật mã độ dài 128,192 và 256 bit. Thuật toán AES còn được biết đến là Thuật toán Rijndael. Thuật toán AES có thể được sử dụng với ba độ dài khóa khác nhau như đã chỉ ra ở trên và do đó có ba tham chiếu là “AES -128”, “AES-192”, và “AES-256”.
Trong thuật toán AES, độ dài của khối đầu vào và đầu ra là 128 bit (4 từ). Độ dài của khóa K là 128, 192 và 256 bit. Số vòng Nr, là 10, 12 và 14, tùy thuộc độ dài khóa, được mô tả như sau.
Số vòng trong AES
Độ dài khóa |
Số vòng (Nr) |
AES-128 |
10 |
AES-192 |
12 |
AES-256 |
14 |
Đối với cả hai phép mã hóa và giải mã, thuật toán AES sử dụng hàm vòng bao gồm bốn phép biến đổi khác nhau trên byte: 1) phép thay thế byte sử dụng bảng thay thế (S-box), 2) dịch hàng của mảng Trạng thái bằng các phép bù khác nhau, 3) trộn dữ liệu trong mỗi cột của mảng Trạng thái, 4) bổ sung khóa vòng vào Trạng thái.
Phép mã hóa
Phép mã hóa đầy đủ có thể được mô tả như sau:
(1) S = AddRoundKey(P,W0)
(2) với
S = SubBytes(S)
S = ShiftRows(S)
S = MixColumns(S)
S = AddRoundKey(S,Wi)
(3) S = SubBytes(S), S = ShiftRows(S)
(4) C = AddRoundKey(S,WN r)
Các phép biến đổi riêng biệt SubBytes(), ShiftRows(), MixColumns(), AddRounkey() xử lí Trạng thái và được mô tả chỉ tiết tại TCVN 11367 - 3:2017.
Phép giải mã
Phép giải mã đầy đủ có thể mô tả như sau:
1. S = AddRoundKey (C, WNr)
2. với
S = ShiftRows-1(S)
S = SuBytes-1(S)
S = AddRoundKey(S,Wi)
S = MixColumns-1(S)
3. S = ShiftRows-1(S)
S = SubBytes-1(S)
4. P = AddRoundKey(S,W0)
Các phép biến đổi SubBytes-1(), ShiftRows-1(), MixColumns-1() thực hiện xử lí Trạng thái và được mô tả chỉ tiết tại TCVN 11367-3:2016.
Lược đồ khóa
Thuật toán AES nhận khóa mật mã
Các véc tơ kiểm tra (test vector) và các ví dụ cụ thể đối với mã khối AES với các độ dài khóa khác nhau được mô tả chi tiết trong phụ lục D của TCVN 11367-3:2016.
Hiện nay, theo khuyến nghị mới nhất của Cộng đồng chung Châu âu (tháng 2/2018) với AES-128 nên được sử dụng không quá năm 2028; AES-256 có thể được dùng đến năm 2068. Trong tương lai 10 đến 50 năm tới, các loại mã khối có thể được dùng như: AES, Camellia, Serpent.