Nghiên cứu Khoa học
Thuật toán mã hoá AES
Chuẩn mã hóa dữ liệu tiên tiến AES (Advanced Encryption Standard) là một hệ mã khóa bí mật có tên là Rijdael (do hai nhà mật mã học người Bỉ là Joan Daemen và Vincent Rijmen đưa ra và trở thành chuẩn từ năm 2002) cho phép xử lý các khối dữ liệu vào có kích thước 128 bit sử dụng các khóa có độ dài 128, 192 hoặc 256 bit. Trong AES các phép toán cộng và nhân được thực hiện trên các byte trong trường hữu hạn GF (28)
Bảng 1.1 Các tham số, ký hiệu và hàm của thuật toán
AES |
Tiêu chuẩn mã hóa nâng cao |
Bit |
Một chữ số nhị phân có giá trị bằng 0 hoặc 1. |
Byte |
Một nhóm tám bit được coi là một thực thể duy nhất hoặc là một mảng gồm 8 bit riêng lẻ. |
Cipher |
Một loạt các phép biến đổi chuyển đổi văn bản thuần túy thành bản mã bằng khóa mật mã. |
Cipher Key |
Khóa bí mật, mật mã được sử dụng bởi quy trình mở rộng khóa để tạo ra một bộ khóa tròn; có thể được hình dung như một mảng byte hình chữ nhật, có bốn hàng và cột Nk. |
Ciphertext |
Dữ liệu đầu ra từ mật mã hoặc đầu vào đến mật mã nghịch đảo |
Inverse Cipher |
Một loạt các phép biến đổi chuyển đổi bản mã thành văn bản thuần túy bằng khóa mật mã |
Key Expansion |
Thói quen được sử dụng để tạo một loạt các khóa tròn từ khóa mật mã. |
Plaintext |
Dữ liệu đầu vào mật mã hoặc đầu ra từ mật mã nghịch đảo. |
Rijndael |
Thuật toán mật mã được chỉ định trong tiêu chuẩn mã hóa nâng cao (AES). |
Round Key |
Khóa tròn là các giá trị bắt nguồn từ khóa mật mã sử dụng quy trình Mở rộng khóa; chúng được áp dụng cho Trạng thái trong Mật mã và Mật mã nghịch đảo. |
S-box |
Bảng thay thế phi tuyến tính được sử dụng trong một số phép biến đổi thay thế byte và trong quy trình mở rộng khóa để thực hiện thay thế một cho một của giá trị byte. |
AddRoundKey() |
Chuyển đổi trong mật mã và mật mã nghịch đảo trong đó khóa tròn được thêm vào trạng thái bằng cách sử dụng thao tác XOR. Độ dài của Khóa tròn bằng kích thước của trạng thái (tức là đối với Nb = 4, độ dài Khóa tròn bằng 128 bit / 16 byte). |
InvMixColumns() |
Biến đổi trong mật mã nghịch đảo là nghịch đảo của MixColumns(). |
InvShiftRows() |
Biến đổi trong mật mã nghịch đảo là nghịch đảo của ShiftRows(). |
InvSubBytes() |
Phép biến đổi trong Mật mã nghịch đảo là nghịch đảo của SubBytes(). |
K |
Khóa mật mã. |
MixColumns() |
Phép biến đổi trong mật mã lấy tất cả các cột của trạng thái và trộn dữ liệu của chúng (độc lập với nhau) để tạo ra các cột mới. |
Nb |
Số cột (từ 32 bit) bao gồm trạng thái. Đối với tiêu chuẩn này, Nb = 4. |
Nk |
Số lượng từ 32 bit bao gồm khóa mật mã. Đối với tiêu chuẩn này, Nk = 4, 6 hoặc 8. |
Nr |
Số vòng, là một hàm của Nk và Nb (được cố định). Đối với tiêu chuẩn này, Nr = 10, 12 hoặc 14. |
Rcon[] |
Mảng từ không đổi tròn. |
RotWord() |
Hàm được sử dụng trong quy trình Key Expansion lấy một từ bốn byte và thực hiện hoán vị theo chu kỳ. |
ShiftRows() |
Biến đổi trong mật mã xử lý trạng thái bằng cách dịch chuyển theo chu kỳ ba hàng cuối cùng của trạng thái bằng các phần bù khác nhau. |
SubBytes() |
Phép biến đổi trong mật mã xử lý trạng thái bằng cách sử dụng bảng thay thế byte phi tuyến (S-box) hoạt động trên mỗi byte Trạng thái một cách độc lập |
SubWord() |
Hàm được sử dụng trong quy trình Key Expansion lấy một từ đầu vào bốn byte và áp dụng một bảng S-box cho mỗi trong số bốn byte để tạo ra một từ đầu ra. |
XOR |
Toán tử Ex-OR |
⊕ |
Toán tử Ex-OR |
Ⓧ |
Phép nhân của hai đa thức (mỗi đa thức có độ < 4) modulo x 4 +1. |
• |
Phép nhân trường hữu hạn. |
Quy trình mã hoá sử dụng bốn phép biến đổi chính:
Quy trình mã hoá được tóm tắt lại như sau:
Thực hiện chu kỳ mã hoá cuối cùng: trong chu kỳ này thao tác Mixcolumns được bỏ qua.