Đề 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

Trong mật mã 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) là 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 và đượ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 mã 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 mã 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, và việc truyền và 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 mã 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ế.

docx 37 trang Minh Tâm 29/03/2025 280
Bạn đang xem 20 trang mẫu của tài liệu "Đề 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

Tóm tắt nội dung tài liệu: Đề 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 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 MÃ DỮ LIỆU DỰA 
 TRÊN THUẬT TOÁN AES TRÊN NỀN TẢNG CÔNG 
 NGHỆ FPGA
 Nhóm: 6
 Sinh viên thực hiện:
 Trần Quốc Tuân B13DCDT082
 Đỗ Thị Thảo B13DCDT122
 Đỗ Thanh Huy B13DCDT063
 Cù Quang Anh B13DCDT046 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 MÃ 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 mã 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) là 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 và đượ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 mã 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 mã 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, và việc truyền và 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 mã 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 
đó là sự xuất hiện mạch in. Người ta đặt ra câu hỏi: “Chuyện gì xảy ra nếu người thiết 
kế có 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. Để có 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 và 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 có 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ử có 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, đó là kết hợp thờ gian hoàn 
thành sản phẩm và khả năng điều khiển được của PLD với mật đọ và ư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 có thể thay đổi được theo yêu cầu của người thiết kế. Nghĩa là người 
thiết kế có 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 và 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ữ mô 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ữ mô 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 mô 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ơ đồ mà đ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 mô 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 lý 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ế và đả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 lý của cấu kiện; kiểm tra ràng buộc thiết kế. Khi kết thúc Translate , sẽ 
 có 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ế, ví dụ như tham 
 số tốc độ, thời gian của thiết kế và đô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ế và đư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 và đả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 lý 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: Mô phỏng định thời (Timing Simulation)
 Sau bước Place and Routing người thiết kế có thể thực hiện mô 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 về mô 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 mô 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 là 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ữ có 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ó được thiết kế tối ưu. Bộ cô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 và bộ nhận. Bộ truyền về cơ bản là 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 có 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 và 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 là 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

File đính kèm:

  • docxde_tai_xay_dung_bo_ma_hoa_va_giai_ma_du_lieu_dua_tren_thuat.docx