Dựa trên hai sơ đồ thực hiện hai quá trình mã hóa( Hình 3.1) và giải mã(Hình 3.2) trên, tôi xây dựng sơ đồ khối chức năng cho thuật toán mã hóa Rijndael như sau(Hình 3.3).
Hình 3.3: Sơ đồ khối thuật toán Rijndael
Trong đó:
Khối Encryption/Decryption: thực hiện các biến đổi trong vòng lặp.
Khối Key Expansion: thực hiện sinh khóa con cho các vòng lặp
Khối Control: thực hiện điều khiển quá trình xảy ra ở hai khối Encryption/Decryption và Key Expansion.
Sơ đồ thực hiện các vòng lặp
Các vòng lặp trong quá trình mã hóa bao gồm các biến đổi: ByteSub,
ShiftRow, MixColumn, AddRoundKey, riêng vòng lặp cuối cùng không có
biến đổi MixColumn. Quá trình thực hiện vòng lặp mã hóa được thể hiện trong sơ đồ dưới đây (Hình 3.4).
Hình 3.4:Vòng lặp mã hóa
Các vòng lặp trong quá trình giải mã bao gồm các phép biến đổi:
đầu tiên không có phép biến đổi InvMixColumn. Quá trình giải mã được thiết kế giống với quá trình mã hóa, được thể hiện ở Hình 3.5.
Hình 3.5: Vòng lặp giải mã
Hinh 3.6: Sơ đồ khối modul Encryption/Decryption
Chức năng các chân tín hiệu trong sơ đồ hình 3.6:
Tên chân tín hiệu Cổng I/O Mô tả
Clock Input Hệ thống xung nhịp, cung cấp nhịp cho hoạt động của modul. Reset Input Khởi tạo lại trạng thái cho hệ
thống.
ALG_Start Input Tín hiệu xác định điểm bắt đầu thực hiện của thuật toán.
ALG_ENC Input Xác định thực hiện mã hóa hay giải mã.
ALG_DataIn Input Khối dữ liệu vào, 128 bit
ALG_Key Input Khóa con, 128 bit
ALG_CVSize Input Xác định chiều dài của khóa là 128, hay 192 hoặc 256 bit.
ALG_DataOut Output Dữ liệu ra, dài 128 bit
toán.
Sơ đồ khối của modul Key Expansion
Sơ đồ được miêu tả ở hình 3.7.
Hình 3.7 Sơ đồ khối của modul Key expansion
Chức năng các chân tín hiệu trong sơ đồ hình 3.7:
Tên chân tín hiệu Tín hiệu I/O Mô tả
Clock Input Hệ thống xung nhịp, cung cấp nhịp cho hoạt động của modul. Reset Input Khởi tạo lại trạng thái cho hệ
thống.
KS_LOADCV Input Tín hiệu báo bắt đầu đưa vào một khóa mới.
KS_START Input Tín hiệu báo bắt đầu tạo một khóa con.
256 bit.
KS_CV_SIZE Input Cho biết độ dài khóa đã dung là 128, 192 hay 256.
KS_ENC Input Quá trình mã hóa hay giải mã
KS_ROUND_KEY Output Khóa con cho mỗi vòng lặp, dài 128 bit.
Sơ đồ khối của modul Control(Hình 3.8)
Hình 3.8: Sơ đồ khối của modul Control
Chức năng các chân tín hiệu trong sơ đồ hình 3.8: Tên chân tín hiệu Tín hiệu I/O Mô tả
Clock Input Hệ thống xung nhịp, cung cấp nhịp cho hoạt động của modul. Reset Input Khởi tạo lại trạng thái cho hệ
thống.
CTRL_ENC Input Tín hiệu xác định mã hóa hay giải mã.
CTRL_ALG_START Output Bắt đầu thực hiện mã hóa hay giải mã.
CTRL_KS_START Output Bắt đầu tạo khóa con.