Thuật toán mật mã - Phần 3: Mã khối - Bkav Corporation - nacis.gov.vn - Cổng thông tin điện tử Ban Cơ yếu Chính phủ
BAN CƠ YẾU CHÍNH PHỦ
CỤC QUẢN LÝ MẬT MÃ DÂN SỰ VÀ KIỂM ĐỊNH SẢN PHẨM MẬT MÃ
NATIONAL AGENCY OF CRYPTOGRAPHY AND INFORMATION SECURITY
Thuật toán mật mã - Phần 3: Mã khối
07:47:00 | 01-07-2020

    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 i = 1 đến Nr-1

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 i = Nr - 1 xuống 1

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ã và thực hiện thủ tục mở rộng khóa để tạo ra lược đồ khóa. Việc mở rộng khóa tạo ra tổng cộng 4(Nr + 1) từ: Thuật toán đòi hỏi tập khởi đầu gồm 4 từ, và mỗi vòng Nr vòng đòi hỏi 4 từ dữ liệu khóa. Lược đồ khóa nhận được là một mảng tuyến tính gồm các từ 4-byte, ký hiệu là wj, với j nằm trong khoảng 0 ≤ j˂ 4(Nr + 1). Việc mở rộng khóa đầy đủ cho AES-128 và AES-192 được mô tả chi tiết trong TCVN 11367-3:2016.

    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.

TS. Hồ Văn Hương, Cục QLMMDS & KĐSPMM

Các tin khác
Đường dây nóng
Phòng QLMMDS: 024 3775 6896
Trung tâm ĐGSPH: 024 3232 3313
Cục trưởng: 0903 234 845
P.Cục trưởng phụ trách: 0913 592 170