Đồ án Thiết kế hệ thống số - Đề tài: Xây dựng bộ mã hóa và giải mã dữ liệu dựa trên thuật toán AES trên nền tảng công nghệ FPGA

ĐỒ ÁN THIẾT KẾ HỆ THỐNG SỐ  
ĐỀ TÀI  
XÂY DỰNG BỘ MÃ HÓA VÀ GIẢI DỮ LIỆU DỰA  
TRÊN THUẬT TOÁN AES TRÊN NỀN TẢNG CÔNG  
NGHỆ FPGA  
Nhóm:  
Sinh viên thực hiện:  
Trần Quốc Tuân  
6
B13DCDT082  
B13DCDT122  
B13DCDT063  
B13DCDT046  
Đỗ Thị Thảo  
Đỗ Thanh Huy  
Cù Quang Anh  
MỤC LỤC  
LỜI NÓI ĐẦU ...........................................................................................................2  
PHẦN I : LÝ THUYẾT CƠ SỞ................................................................................3  
I. Tổng quan về PLD và FPGA.................................................................................3  
1. Giới thiệu về cấu kiện logic khả trình (PLD)......................................................3  
2. FPGA...................................................................................................................4  
3. Các bước thiết kế cho FPGA...............................................................................5  
4. Giới thiệu chung về FPGA của Xilinx ................................................................7  
5. Tìm hiểu về phần mềm ISE của Xilinx ...............................................................8  
II. UART .....................................................................................................................9  
1. UART nhận .........................................................................................................9  
2. UART truyền.......................................................................................................10  
III. Thuật toán AES ...................................................................................................11  
1. Giới thiệu về chuẩn mã hóa tiên tiến AES ..........................................................11  
2. Quy trình mã hóa ................................................................................................11  
3. Quy trình giải mã.................................................................................................17  
PHẦN II: XÂY DỰNG BỘ MÃ HÓA VÀ GIẢI DỮ LIỆU DỰA TRÊN  
THUẬT TOÁN AES TRÊN NỀN TẢNG CÔNG NGHỆ FPGA ..........................18  
I. Đặt vấn đề................................................................................................................18  
II. Thiết kế phần cứng................................................................................................19  
1. UART Receiver...................................................................................................20  
2. UART Transmitter ..............................................................................................25  
3. AES encoder/decoder..........................................................................................29  
III. Kiểm tra kết qu..................................................................................................35  
1
LỜI NÓI ĐẦU  
Trong mật học, AES (viết tắt của từ tiếng Anh: Advanced Encryption Standard,  
hay Tiêu chuẩn mã hóa tiên tiến) một thuật toán mã hóa khối được chính phủ Mỹ áp  
dụng làm tiêu chuẩn mã hóa. AES được kỳ vọng áp dụng trên phạm vi thế giới ,đã  
được nghiên cứu rất kỹ lưỡng được chấp thuận làm tiêu chuẩn liên bang bởi Viện  
tiêu chuẩn và công nghệ quốc gia Hoa kỳ (NIST) sau một quá trình tiêu chuẩn hóa kéo  
dài 5 năm . Vậy nên thuật toán AES là một thuật toán có thể áp dụng cho nhiều mục  
đích .  
Để nghiên cứu thuật toán AES, ta sẽ nghiên cứu tới những khái niệm có liên quan là  
nền tảng để xây dựng nên bộ cấu trúc và giải trước. Sau khi có được những khái  
niệm cơ bản đó, chúng ta sẽ tìm hiểu về cách xây dựng bộ mã hóa và giải dựa trên  
thuật toán AES trên nền tảng FPGA. Sau đó chúng ta sẽ tìm hiểu cách thiết kế phần  
cứng, việc truyền nhận qua cổng UART.  
Cuối cùng là chương trình mô phỏng việc mã hóa và giải dựa trên thuật toán AES  
dựa trên nền tảng FPGA, thông qua ví dụ cụ thể, qua đó chúng ta sẽ thấy được khả  
năng ứng dụng của công nghệ này trong thực tế.  
2
PHẦN I: LÝ THUYẾT CƠ SỞ  
I.  
Tổng quan về PLD và FPGA.  
1. Giới thiệu về cấu kiện logic khả trình (PLD).  
Vào cuối thập kỷ 70 thế kỷ XX, các thiết bị logic chuẩn xuất hiện ồ ạt, đi kèm với  
đó sự xuất hiện mạch in. Người ta đặt ra câu hỏi: “Chuyện xảy ra nếu người thiết  
kế thể thực hiện các kết nối khác nhau trong một thiết bị lớn hơn?”. Điều này cho  
phép người thiết kế tích hợp nhiều thiết bị logic chuẩn trong một linh kiện. Để thiết  
kế linh hoạt nhất, nhà sản xuất Ron Cline từ Signetics đưa ta ý tường dùng hai ma trận  
kết nối khả trình. Hai ma trận kết nối khả trình này có thể tổ hợp tùy ý giữa các cổng  
AND và cổng OR, đồng thời cho phép nhiều cổng OR cùng sử dụng chung một cổng  
AND. Kiến trúc này rất linh hoạt, nhưng tại thời điểm đó, trễ lan truyền từ đầu vào tới  
đầu ra khá cao nên thiết bị hoạt động tương đối chậm dạng công nghệ logic khả trình  
đầu tiên xuất hiện đó chính là SPLD. Sau này công nghệ CPLD và FPGA ra đời mật  
đọ tích hợp cao hơn, cấu trúc linh hoạt hơn cho phép tạo ra nhiều mạch logic phức tạp  
hơn.  
Cấu kiện logic khả trình, viết tắt là PLD là loại cấu kiện điện tử nhiều ưu điểm và  
hiện nay đang được phát triển rất mạnh. Về nguyên lý, chúng có cấu tạo rất giống với  
PROM. Việc lập trình cho PLD có thể được thực hiện bằng các công nghệ khác nhau,  
dựa trên cơ sở bẻ cầu trì hoặc chuyển mạch. Tuy nhiên, ứng dụng PLD lại rất khác với  
PROM. Một PLD, được tạo thành bằng một số cổng AND, OR, XOR hoặc cả các Flip-  
Flop, có thể thực hiện nhiều hàm Boole khác nhau.  
3
2. FPGA.  
Năm 1985, công ty Xilinx đưa ra ý tưởng hoàn toàn mới, đó kết hợp thờ gian hoàn  
thành sản phẩm khả năng điều khiển được của PLD với mật đọ ưu thế về chi phí  
của GateArray. Từ đó, FPGA ra đời.  
Kiến trúc chung của FPGA  
Cấu trúc FPGA đơn giản gồm các tế bào logic, các khối cách đều nhau, liên kết nhờ  
các đường kết nối thể thay đổi được theo yêu cầu của người thiết kế. Nghĩa người  
thiết kế quyền thiết kế, lập trình và thay đổi mạch điện. Hiện nay FPGA có mật độ  
khá cao, lên tời hàn trăm tỷ cổng cấu trúc cũng đa dạng phức tạp hơn. Nhiều chức  
năng phức tạp đã đượ tích hợp sẵn để tằn hiệu quả sử dụng FPGA.  
Có hai loại FPGA cơ bản: Loại lập trình lại được, dựa trên công nghệ SRAM và loại  
lập trình một lần.  
4
3. Các bước thiết kế cho FPGA.  
Bước 1: Nhập thiết kế (Design Entry)  
Các công cụ thiết kế cho phép nhập thiết kế theo các cách:  
- Nhập thiết kế theo sơ đồ nguyên lý Schematic: Người thiết kế sử dụng các mô-  
đun sẵn có trong thư viện Schematic để ghép nối chúng với nhau tạo thành bản  
thiết kế theo yêu cầu. Từ sơ đồ nguyên lý đã thiết kế được công cụ phần mềm sẽ  
chuyển đổi sang file ngôn ngữ tả phần cứng HDL, mà phổ biến là VHDL  
hoặc Verilog.  
- Nhập thiết kế sử dụng ngôn ngữ tả phần cứng HDL (VHDL): Người thiết kế  
sử dụng chương trình soạn thảo để thực hiện việc tả toàn bộ bản thiết kế của  
mình dưới dạng ngôn ngữ HDL.  
- Nhập thiết kế dưới dạng sơ đồ: Công cụ thiết kế còn cho phép nhập thiết kế vào  
dưới dạng sơ đồ điển hình là đồ hình trạng thái FSM, sau đó chúng cũng được  
chuyển đổi sang HDL.  
Bươc 2: Kiểm tra thiết kế (Design Verification)  
Thực hiện kiểm tra, mô phỏng chức năng hoạt động của thiết kế HDL đã tạo ra ở  
trên. Bước này có thể không cần phải thực hiện trong khi thiết kế.  
Bước 3: Tổng hợp thiết kế (Design Synthesis)  
Sau khi hoàn thành mô phỏng thiết kế, bước tổng hợp tiếp theo có nhiệm vụ chuyển  
thiết kế dưới dạng file văn bản HDL thành dạng file Netlist, thực hiện tả mạch thực  
ở mức thấp dưới dạng cổng logic và kết nối chúng với nhau.  
Bước 4: Thực hiện thiết kế (Design Implementation)  
Bước này sử dụng file Netlist và file ràng buộc “constrains file” (mô tả các nguyên  
tắc thiết kế, các ràng buộc về vật như gán vị trí cho các đầu vào/ra trên chip, các ràng  
buộc về tốc độ, thời gian, tần số…) để tạo thiết kế sử dụng tài nguyên có sẵn của FPGA.  
Bước này bào gồm các bước: Translate, Map, Place and Routing.  
- Translate: Bước này nhằm thực hiện kiểm tra thiết kế đảm bảo file Netlist phù  
hợp với kiến trúc FPGA đã chọn, kiểm tra file ràng buộc “constraints file” của  
5
người sử dụng để phát hiện các lỗi mâu thuẫn với tham số của FPGA đã chọn.  
Translate thường bao gồm các quá trình: Tối ưu hóa, biên dịch thành các thành  
phần vật của cấu kiện; kiểm tra ràng buộc thiết kế. Khi kết thúc Translate , sẽ  
một bản báo cáo về các chương trình được sử dụng, danh sách các cổng I/O  
và các cấu kiện được sử dụng trong thiết kế.  
- Map: Tạo bản phân bố thiết kế tới các tài nguyên cụ thể trong FPGA. Nếu thiết  
kế quá lớn so với thiết bị được chọn, quy trình này không thể hoàn thành nhiệm  
vụ của mình. Quá tình Map có các tham số rạng buộc của thiết kế, dụ như tham  
số tốc độ, thời gian của thiết kế đôi khi quyết định gắn thêm các thành phần  
logic để đáp ứng các yêu cầu về thời gian. Bước này nhằm đưa mạch thiết kế vào  
một thiết bị cụ thể. Bước này cũng tạo ra báo cáo xác nhận các tài nguyên sử  
dụng trong chip, mô tả chính xác các thành phần trong thiết kế được đặt ở vị trí  
nào trong chip thực tế.  
- Place and Routing: Place là quá trình lựa chọn vị trí phù hợp của mỗi khối chức  
năng trong thiết kế đưa các cổng logic của phần đó vào các khối logic hay các  
mô-đun cụ thể trong FPGA trên cở sở tối ưu việc kết nối đảm bảo về các ràng  
buộc về thòi gian. Route là quá trình tạo liên kết vật giữa các khối logic. Sau  
bước này tạo ra được file mô tả cấu hình dạng *.jed.  
Bước 5: phỏng định thời (Timing Simulation)  
Sau bước Place and Routing người thiết kế thể thực hiện phỏng thiết kế ở  
mức cổng logic đã được định vị trí và định tuyến trên FPGA, phần mềm sử dụng file  
cấu hình đã được tạo ra và kết hợp với thư viện vmô hình thời gian của các họ FPGA  
(ví dụ ISE của xilinx dùng thư viện VITAL), để thực hiện phỏng hoạt động của thiết  
kế mà có tính đến các tham số thời gian trễ, thời gian thiết lập… của các cổng logic  
trong FPGA. Bước này rất quan trong với những thiết kế phức tạp, tốc độ lớn.  
Bước 6: Cấu hình (Configuration)  
Gọi chương trình điều khiển việc nạp cấu hình, thực hiện kết nối thiết bị nạp đến  
FPGA và nạp file cấu hình cho FPGA. Khác với CPLD, FPGA có thêm bước “Creat Bit  
file” để tạo ra file “luồng bit” để nạp vào bộ nhớ cấu hình trong FPGA thường bộ nhớ  
tạm như SRAM.  
6
4. Giời thiệu chung về FPGA của xilinx.  
Công nghệ FPGA đang được phát triển rất mạnh trên thế giới. Hiện nay Xilinx là  
hãng đi đầu trong công nghệ FPGA, sản phẩm của Xilinx bao gồm: các vi mạch CPLD  
và FPGA, phần mềm thiết kế, các dịnh vụ hỗ trợ thiết kế và các chương trình nguồn.  
Xilinx cung cấp 2 dòng FPGA là Spartan và Virtex.  
FPGA Spartan sử dụng trong những ứng dụng với số lượng lớn giá thành thấp,  
thương sử dụng để thay thế cho mảng cổng logic cố định và cho các sản phẩm dùng cho  
từng ứng dụng cụ thể.  
a) Spartan-3  
Dòng FPGA Spartan-3 được thiết kế cho các ứng dụng tiết kiệm chi phí. So với các  
dòng FPGA trước đó, dòng Spartan-3 được tăng thêm về tài nguyên logic, dung lương  
RAM, số I/O và khả năng quản lý tín hiệu clock.  
Các tính năng chính:  
- Giá thành thấp.  
- Mật độ logic cao, có thể lên tới 74.880 cells.  
- Số lương I/O lớn, tối đa 784 chân.  
- Tốc độ truyền dữ liệu I/O lớn.  
- Hỗ trợ nhiều chuẩn giao tiếp.  
- Kết cuối bằng DCI (trở kháng điều khiển số).  
- Hỗ trợ DDR, DDR2 SDRAM.  
- Có các bộ chân nhúng 18X18.  
- Có quản lý tín hiệu clock DCM.  
- Hỗ trợ các nhân vi xử lý nhúng MicroBlaze và PicoBlaze.  
Các đặc điểm kiến trúc:  
Cấu tạo của Spartan-3 có các thành phần tương tự như các FPGA khác:  
- Các khối logic có thể cấu hình được là các khối LUT dang RAM. Chức năng của  
các khối này là để thiết lập các logic và các khối lưu trữ thể là Flip-Flop hoặc  
Latch.  
7
- Các khối I/O (IOB) có chắc năng điều khiển dữ liệu giữa các chân I/O và các  
khối logic bên trong cấu kiện. Mỗi khối IOB có thể hỗ trợ dữ liệu 2 chiều hoặc  
hoạt động ở 3-trạng thái.  
- Các khối RAM ở dạng 18kbit.  
Ngoài ra Spartan-3 có thêm các thành phần  
- Các khối nhân nhúng cứng 18X18bit.  
- Các khối quản ls tín hiệu clock số DCM cung câp các khả năng phân phối, trễ,  
nhân, chia và điều khiển pha của tín hiệu clock.  
5. Tìm hiểu về phần mềm ISE của xilinx.  
Không chỉ là nhà cung cấp các chip logic khả trình CPLD/FPGA, Xilinx còn cung  
cấp các công cụ thiết kế điện tử hoàn chỉnh, cho phép thực hiện thiết kế trên các thiết bị  
logic khả trình của hãng. Các công cụ này kết hợp công nghệ CAD tiên tiến với giao  
diện đồ họa linh hoạt, dễ sử dụng để người thiết kế được thiết kế tối ưu. Bcông cụ  
phần mềm hiện đang được sử dụng rộng rãi là ISE.  
8
II.  
UART.  
UART là một mạch điện thực hiện gửi dữ liệu song song thông qua một kênh nối  
tiếp. UART bao gồm bộ truyền bộ nhận. Bộ truyền về cơ bản một thanh ghi dịch  
đặc biệt, lấy dữ liệu song song sau đó dịch từng bít ra ngoài với tốc độ định trước. Ngược  
lại, bộ nhận dịch từng bít dữ liệu nhận được và sau đó phục hồi lại dữ liệu.  
Khi ở trạng thái nghỉ, kênh nối tiếp ở mức ‘1’. Quá trình truyền bắt đầu với một bít  
start khi kênh xuống mức ‘0’, theo sau là các bit data, prity và bít stop, lúc này kênh ở  
mức ‘1’ và trở về trạng thái nghỉ sau bít stop. Số lượng bit dữ liệu thể là 6, 7, hoặc 8  
bít. Bít parity được dùng để gỡ lỗi.  
Đối với UART tín hiệu clock đồng bộ không được gửi kèm các khung dữ liệu. Do  
đó, trước khi quá trình truyền bắt đầu, bộ truyền nhận phải thỏa thuận trước với nhau  
một tập các tham số bao gồm tốc độ baud (số bít trên giây), số bít data và stop, có sử  
dụng bít parity hay không…  
1. UART nhận  
Do không có xung clock đồng bộ, bộ nhận sử dụng các tham số xác định trước để  
truyền dữ liệu. Bộ nhận sử dụng một mạch lấy mẫu để ước lượng điểm giữa của bit và  
sau đó khôi phục lại bít.  
Tốc độ lấy mẫu phổ biến nhất là 16 lần tốc độ baud, nghĩa mỗi bít nối tiếp được  
lấy mẫu 16 lần. Mạch lấy mẫu sẽ làm việc như sau:  
9
Ban đầu kênh ở trạng thái nghỉ ở mức ‘1’, mạch lấy mẫu sẽ đợi cho đến khi  
kênh được kéo xuống mức ‘0’, bắt đầu bít start. Bộ đếm bên trong mạch lấy mẫu  
sẽ đếm số mẫu đã lấy.  
Khi bộ đếm tăng đến 7, tín hiệu đến đạt tới điểm giữa của bit start (do 1 bit start  
tương đương 16 mẫu). Bộ đếm được khởi động lại.  
Tiếp theo bộ đếm tiếp tục đếm số mẫu đã lấy, khi đếm tới 15, tín hiệu đến đạt  
tới điểm giữa của bít data đầu tiên. Giá trị của bít này sẽ được lấy tại điểm lấy  
mẫu này. Dịch bít này vào thanh ghi và khởi động lại bộ đếm.  
Lặp lại bước 3 N-1 lần nữa (N là số bít data) để nhận các bít data còn lại.  
Nếu bít parity được sử dụng, lặp lại bước 3 một lần nữa để lấy bit parity.  
Lặp lại bước 3 M (M là số bít stop) lần để thu được bit stop.  
Mạch lấy mẫu về cơ bản thực hiện chức năng của tín hiệu clock. Thay vì sử dụng  
sườn dương của tín hiệu clock để chỉ thị khi nào thì tín hiệu đầu vào là hợp lệ. tận  
dụng mạch lấy mẫu để ước lượng điểm giữa của mỗi bít. Trong khi bộ nhận không có  
thông tin chính xác về thời gian của bít start, điểm giữa ước lượng của mỗi bít sai lệch  
nhiều nhất là 1/16. Với quá trình lấy mẫu, do tốc độ baud có thể được chia nhỏ từ tốc độ  
clock hệ thống, nên mạch này không được ứng dụng với tốc độ dữ liệu cao.  
2. UART truyền.  
UART truyền về cơ bản một thanh ghi dịch, dịch ra ngoài từng bít dữ liệu tại một  
tốc độ chỉ định trước. Tốc độ được điều khiển bằng mạch lấy mẫu. Do tín hiệu gửi không  
đi kèm với clock đồng bộ nên tốc độ lấy mẫu bằng 16 lần tốc độ baud nhưng quá trình  
lấy mẫu gửi chậm hơn so với UART nhận. Bộ UART truyền sử dụng một bộ đếm để  
theo dõi số mẫu, mỗi bít được dịch ra ngoài sau 16 lần lấy mẫu.  
Sau khi xác nhận tín hiệu tx_signal là tín hiệu yêu cầu bộ truyền thực hiện truyền,  
Máy trạng thái hữu hạn sẽ lấy từ dữ liệu (7 bits) và sau đó thực hiện dần dần thông qua  
các trạng thái start, data, stop để dịch ra ngoài các bít tương ứng. Tín hiệu báo hoàn  
thành bằng cách thiết lập tín hiệu tx_done_tick cho 1 chu kỳ truyền. Một bít đệm, tx_reg,  
được sử dụng để truyền.  
10  
III. Thuật toán AES.  
1. Giới thiệu về chuẩn mã hóa 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 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  
input 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(  
8
2 ).  
2. Quy trình mã hóa.  
Quy trình mã hóa sử dụng bốn phép biến đổi chính:  
AddRoundKey: cộng mã khóa của chu kỳ vào trạng thái hiện hành. Độ dài  
của mã khóa 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ử độ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  
số khác nhau.  
Quy trình mã hóa đượ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ã  
hóa.  
N - 1 chu kỳ mã hóa 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ã hóa cuối cùng: trong chu kỳ này thao tác MixColumns  
được bỏ qua.  
11  
PlainText  
Key  
Key Expansion  
Add Round Key  
Round  
Subbytes  
ShiftRows  
Nr - 1 Round  
Key Register  
Round Key  
MixColumns  
AddRoundKey  
Final Round  
Subbytes  
ShiftRows  
Final Round Key  
AddRoundKey  
Cipher  
a) Phép biến đổi SubBytes  
Các byte được thế thông qua bảng tra S-box. Đây chính là quá trình phi tuyến của  
thuật toán. Hộp S-box này được tạo ra từ một phép biến đổi khả nghịch trong trường  
hữu hạn GF (28) có tính chất phi tuyến. Để chống lại các tấn công dựa trên các đặc tính  
đại số, hộp S-box này được tạo nên bằng cách kết hợp phép nghịch đảo với một phép  
biến đổi affine khả nghịch. Hộp S-box này cũng được chọn để tránh các điểm bất động  
(fixed point).  
12  
Thao tác SubBytes tác động trên từng byte của trạng thái  
19  
d4  
S-box  
Bước này biến đổi mỗi byte trong ma trận thành byte ở vị trí hàng là 4 bít trước của  
byte và cột là 4 bít sau của byte trong s-box.  
13  
b) Phép biến đổi ShiftRows  
Các hàng được dịch vòng một số bước nhất định. Đối với AES, hàng đầu được giữ  
nguyên. Mỗi byte của hàng thứ 2 được dịch vòng trái một vị trí. Tương tự, các hàng thứ  
3 và 4 được dịch vòng 2 và 3 vị trí. Do vậy, mỗi cột khối đầu ra của bước này sẽ bao  
gồm các byte ở đủ 4 cột khối đầu vào. Đối với Rijndael với độ dài khối khác nhau thì số  
vị trí dịch chuyển cũng khác nhau  
Thao tác ShiftRows tác động trên từng dòng của trạng thái  
c) Phép biến đổi MixColumns  
Thao tác MixColumns tác động lên mỗi cột của trạng thái  
Bốn byte trong từng cột được kết hợp lại theo một phép biến đổi tuyến tính khả  
nghịch. Mỗi khối 4 byte đầu vào sẽ cho một khối 4 byte ở đầu ra với tính chất mỗi  
byte ở đầu vào đều ảnh hưởng tới cả 4 byte đầu ra. Cùng với bước ShiftRows,  
MixColumns đã tạo ra tính chất khuyếch tán cho thuật toán. Mỗi cột được xem như một  
đa thức trong trường hữu hạn được nhân với đa thức c(x) = 3x3 + x2 + x + 2 (modulo  
14  
x4 + 1). Vì thế, bước nàycó thể được xem là phép nhân ma trận trong trường hữu hạn.  
Bước này được mở rộng thực hiện nhân ma trận từ bước shiftrows với ma trận  
các hệ số như quy tắc trên để thu được ma trận 128 bít đầu ra. Ma trận nhân:  
02 03 01 01  
01 02 03 01  
01 01 02 03  
03 01 01 01  
d) Thao tác AddRoundKey  
Tại bước này, khóa con được kết hợp với các khối. Khóa con trong mỗi chu trình  
được tạo ra từ khóa chính với quá trình tạo khóa con Rijndael; mỗi khóa con có độ dài  
giống như các khối. Quá trình kết hợp được thực hiện bằng cách XOR từng bít của khóa  
con với khối dữ liệu.  
Thao tác AddRoundKey tác động lên mỗi cột của trạng thái  
e) thuật toán sinh khóa (KeyExpansion)  
Là quá trình tạo các vòng khóa từ khóa chính, mỗi khóa con chứa 4 byte. Giả sử ta  
có khóa ban đầu. Mạch tạo khóa sử dụng 128 bít khóa của vòng mã hóa trước làm đầu  
vào để tạo khóa.  
15  
K1,1  
K2,1  
K3,1  
K4,1  
K1,2  
K2,2  
K3,2  
K4,2  
K1,3  
K2,3  
K3,3  
K4,3  
K1,4  
K2,4  
K3,4  
K4,4  
Quá trình tạo khóa như sau:  
Lấy cột cuối cùng trong ma trận khóa và dịch byte đầu xuối dưới cùng. Và thế các  
byte trong cột này bằng các byte trong S-box như bước subbytes, sau đó được xor từng  
bít với cột đầu tiên và cột thứ i ứng với vòng mã hóa thứ i của ma trận Rcon. Kết quả là  
cột đầu tiên trong ma trận khóa kết quả của vòng i+1.  
P1,  
P2,  
P3,  
P4,  
Rc1,  
Rc2,  
Rc3,  
Rc4,  
K2,  
K3,  
K4,  
K1,  
K2,  
K3,  
K4,  
K1,  
S-  
Box  
=
01  
00  
00  
00  
02  
00  
00  
00  
04  
08  
00  
00  
00  
10  
00  
00  
00  
20  
00  
00  
00  
40  
00  
00  
00  
80  
00  
00  
00  
1b  
00  
00  
00  
36  
00  
00  
00  
00  
00  
00  
Ma trận Rcon  
K1,  
K1,  
K2,  
K3,  
K4,  
K1,  
K2,  
K3,  
K4,  
K1,  
P1,1  
P2,1  
P3,1  
P4,4  
P1,1  
P2,1  
P3,1  
P4,1  
P1,2  
P2,2  
P1,3  
P1,4  
P2,4  
P3,4  
P4,4  
K2,  
K3,  
K4,  
K2,  
K3,  
K4,  
P2,3  
P3,3  
P4,3  
P3,2  
P4,2  
Tiếp đến ta xor lần từng bít của các cột 2->4 của ma trận khóa đầu vào, với cột vừa  
16  
tạo để tạo ra các cột còn lại cho ma trận khóa vòng i+1.  
3. Quy trình giải mã  
Quy trình giải được thực hiện qua các giai đoạn sau:  
Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu kỳ giải  
mã.  
Nr - 1 chu kỳ giải mã bình thường: mỗi chu kỳ bao gồm bốn biến đổi liên tiếp  
nhau: InvShiftRows, InvSubBtes, AddRoundKey, InvMixColumns.  
Thực hiện chu kỳ giải cuối cùng. Trong chu kỳ này, thao tác InvMixColumns  
được bỏ qua.  
a) Phép biến đổi InvShifRows  
InvShiftRows chính là phép biến đổi ngược của phép biến đổi ShiftRows. Bước này  
dịch vòng ngược lại với bước ShifRows.  
b) Phép biến đổi InvSuBytes  
Phép biến đổi ngược của thao tác SubBytes, ký hiệu là InvSubBytes. Bước này hoạt  
động tương tự như bước SubBytes nhưng sử dụng ma trận invS-box là ma trận nghịch  
với S-box.  
c) Phép biến đổi InvMixColumns  
InvMixColumns là biến đổi ngược của phép biến đổi MixColumns. Bước này thực  
hiện tương tự bước MixColumns nhưng ma trận nhân là nghịch đảo nhân trong bước  
MixColumns.  
00009  
09 000푑  
009 00푏  
0009 0푒  
17  
PHẦN II: XÂY DỰNG BỘ MÃ HÓA VÀ GIẢI DỮ LIỆU DỰA TRÊN  
THUẬT TOÁN AES TRÊN NỀN TẢNG CÔNG NGHỆ FPGA  
I.  
Đặt vấn đề.  
Trong thời đại toàn cầu hóa hiện nay, vấn đề bảo mật an toàn thông tin internet trở  
nên hết sức cấp thiết. nhiều thuật toán được đưa ra nhằm bảo đảm an toàn thông tin  
trao đổi trên mạng internet. Tuy nhiên theo thời gian các thuật toán này dễ dàng bị các  
đối tượng xấu khám phá và có thể hiệu hóa với các mục đích khác nhau.  
AES (Advanced Encryption Standard) hay chuẩn mã hóa tiên tiến, một thuật toán mã  
hóa khối được chính phủ Hoa Kỳ áp dụng làm tiêu chuẩn mã hóa cho những giao dịch  
dân sự qua internet được sử dụng phổ biến gần đây vẫn thể hiện những ưu việt của  
nó. Từ đó việc thiết kế IC thực hiện hóa/giải dựa trên thuật toán AES là rất cần  
thiết.  
Mạch xây dựng về cơ bản yêu cầu một khối nhiệm vụ mã hóa và giải dựa trên  
thuật toán AES. Dữ liệu mã hóa được đưa vào từ Máy tính và gửi lên từ FPGA để hiện  
thị kết quả nên cần một chuẩn giao tiếp giữa FPGA và PC để trao đổi dữ liệu. Chuẩn  
giao tiếp được sử dụng trong thiết kế này là RS232.  
Chuẩn giao tiếp RS232 là một trong những kỹ thuật được sử dụng rộng rãi hiện  
nay để nối ghép các thiết bị ngoại vi với máy tính. Nó là một chuẩn giao tiếp nối tiếp  
dùng định dạng không đồng bộ, kết nối nhiều nhất là hai thiết bị , chiều dài kết nối  
lớn nhất cho phép để đảm bảo dữ liệu là 15m, tốc độ 20kbit/s. Các máy tính thường  
một hoặc hai cổng nối tiếp theo chuẩn RS232 được gọi cổng COM. Để làm việc  
với cổng RS232 ta sử dụng bộ truyền nhận UART điểu khiển ghép nối PC và  
FPGA.  
Thiết kế được hoàn thiện sử dụng VHDL và được thực thi trên Spartan-3 sử dụng  
công cụ thiết kế ISE 14.7.  
18  
II.  
Thiết kế phần cứng.  
Sơ đồ khối:  
rx  
tx  
rx  
UART Receiver  
8 bit datain  
AES  
encoder/decoder  
8bit dataout
tx  
en  
UART Transmitter  
rst  
clk  
edsel  
Sơ đồ các khối bên trong  
Giải thích các chân tín hiệu:  
rx  
tx  
clk  
rst  
en  
: Chân đầu vào dữ liệu qua cổng nối tiếp.  
: Chân đầu ra dữ liệu qua cổng nối tiếp.  
: Tín hiệu đồng bộ hệ thống.  
: Khởi động lại hệ thống.  
: Chân cho phép truyền / nhận dữ liệu.  
edsel : Chân lựa chọn mã hóa / giải dữ liệu.  
19  
Tải về để xem bản đầy đủ
docx 36 trang yennguyen 30/03/2022 7500
Bạn đang xem 20 trang mẫu của tài liệu "Đồ án Thiết kế hệ thống số - Đề tài: Xây dựng bộ mã hóa và giải mã dữ liệu dựa trên thuật toán AES trên nền tảng công nghệ FPGA", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docxdo_an_thiet_ke_he_thong_so_de_tai_xay_dung_bo_ma_hoa_va_giai.docx