Nghiên cứu Khoa học

Thuật toán mã hoá AES

  • 18/12/2022
  • Nghiên cứu Khoa học

1.1.1       Giới thiệu về chuẩn mã hoá tiên tiến 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 (2­­8)

1.1.2       Các tham số, ký hiệu và hàm của thuật toán

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.

 

1.1.3       Quy trình mã hoá

Quy trình mã hoá sử dụng bốn phép biến đổi chính:

  • AddRoundKey: XORmã khoá của chu kỳ vào trạng thái hiện hành. Độ dài của mã khoá của chu kỳ bằng với kích thước của trạng thái.
  • SubBytes: thay thế phi tuyến mỗi byte trong trạng thái hiện hành thông qua bảng thay thế  (S-Box).
  • Mixcolumns: trộn thông tin của từng cột trong trạng thái hiện hành. Mỗi cột được xử lý độc lập.
  • ShiftRows: dịch chuyển xoay vòng từng dòng của trạng thái hiện hành với di chuyển số khác nhau.

Quy trình mã hoá được tóm tắt lại như sau:

  • Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu kỳ mã hoá.
  • N-1 chu kỳ mã hoá bình thường, mỗi chu kỳ bao gồm bốn bước biến đổi liên tiếp nhau: SubBytes, ShiftRows, Mixcolumns và AddRoundKey.

Thực hiện chu kỳ mã hoá cuối cùng: trong chu kỳ này thao tác Mixcolumns được bỏ qua.

undefined

Hình 1.1 Quá trình mã hoá

Các tin khác