Đồ án thiết kế hệ thống số 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

35 22 0
Đồ án thiết kế hệ thống số 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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin 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 TỐ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 B13DCDT082 Đỗ Thị Thảo B13DCDT122 Đỗ Thanh Huy B13DCDT063 Cù Quang Anh B13DCDT046 MỤC LỤC LỜI NÓI ĐẦU PHẦN I : LÝ THUYẾT CƠ SỞ .3 I Tổng quan PLD FPGA Giới thiệu cấu kiện logic khả trình (PLD) FPGA Các bước thiết kế cho FPGA Giới thiệu chung FPGA Xilinx Tìm hiểu phần mềm ISE Xilinx II UART UART nhận UART truyền 10 III Thuật toán AES 11 Giới thiệu chuẩn mã hóa tiên tiến AES 11 Quy trình mã hóa 11 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 TỐ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 UART Receiver 20 UART Transmitter 25 AES encoder/decoder .29 III Kiểm tra kết 35 LỜI NÓI ĐẦU Trong mật mã học, AES (viết tắt từ tiếng Anh: Advanced Encryption Standard, hay Tiêu chuẩn mã hóa tiên tiến) thuật tốn mã hóa khối phủ Mỹ áp dụng làm tiêu chuẩn mã hóa AES kỳ vọng áp dụng phạm vi giới ,đã nghiên cứu kỹ lưỡng chấp thuận làm tiêu chuẩn liên bang Viện tiêu chuẩn công nghệ quốc gia Hoa kỳ (NIST) sau trình tiêu chuẩn hóa kéo dài năm Vậy nên thuật tốn AES thuật tốn áp dụng cho nhiều mục đích Để nghiên cứu thuật toán AES, ta nghiên cứu tới khái niệm có liên quan tảng để xây dựng nên cấu trúc giải mã trước Sau có khái niệm đó, tìm hiểu cách xây dựng mã hóa giải mã dựa thuật toán AES tảng FPGA Sau 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 chương trình mơ việc mã hóa giải mã dựa thuật tốn AES dựa tảng FPGA, thơng qua ví dụ cụ thể, qua thấy khả ứng dụng công nghệ thực tế PHẦN I: LÝ THUYẾT CƠ SỞ I Tổng quan PLD FPGA Giới thiệu cấu kiện logic khả trình (PLD) Vào cuối thập kỷ 70 kỷ XX, thiết bị logic chuẩn xuất ạt, kèm với xuất mạch in Người ta đặt câu hỏi: “Chuyện xảy người thiết kế thực kết nối khác thiết bị lớn hơn?” Điều cho phép người thiết kế tích hợp nhiều thiết bị logic chuẩn 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 tổ hợp tùy ý cổng AND cổng OR, đồng thời cho phép nhiều cổng OR sử dụng chung cổng AND Kiến trúc linh hoạt, thời điểm đó, trễ lan truyền từ đầu vào tới đầu cao nên thiết bị hoạt động tương đối chậm dạng công nghệ logic khả trình xuất SPLD Sau công nghệ CPLD FPGA đời có mật đọ tích hợp cao hơn, cấu trúc linh hoạt cho phép tạo nhiều mạch logic phức tạp Cấu kiện logic khả trình, viết tắt PLD loại cấu kiện điện tử có nhiều ưu điểm phát triển mạnh Về nguyên lý, chúng có cấu tạo giống với PROM Việc lập trình cho PLD thực công nghệ khác nhau, dựa sở bẻ cầu trì chuyển mạch Tuy nhiên, ứng dụng PLD lại khác với PROM Một PLD, tạo thành số cổng AND, OR, XOR Flip-Flop, thực nhiều hàm Boole khác FPGA Năm 1985, công ty Xilinx đưa ý tưởng hồn tồn mới, kết hợp thờ gian hoàn thành sản phẩm khả điều khiển PLD với mật đọ ưu chi phí GateArray Từ đó, FPGA đời Kiến trúc chung FPGA Cấu trúc FPGA đơn giản gồm tế bào logic, khối cách nhau, liên kết nhờ đường kết nối thay đổi theo yêu cầu người thiết kế Nghĩa người thiết kế có quyền thiết kế, lập trình thay đổi mạch điện Hiện FPGA có mật độ cao, lên tời hàn trăm tỷ cổng cấu trúc đa dạng phức tạp Nhiều chức phức tạp đượ tích hợp sẵn để tằn hiệu sử dụng FPGA Có hai loại FPGA bản: Loại lập trình lại được, dựa cơng nghệ SRAM loại lập trình lần 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ách: - Nhập thiết kế theo sơ đồ nguyên lý Schematic: Người thiết kế sử dụng mơđun sẵn có thư viện Schematic để ghép nối chúng với tạo thành thiết kế theo yêu cầu Từ sơ đồ nguyên lý thiết kế công cụ phần mềm chuyển đổi sang file ngôn ngữ mô tả phần cứng HDL, mà phổ biến VHDL - 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 việc mơ tả tồn thiết kế - dạng ngơn ngữ HDL Nhập thiết kế dạng sơ đồ: Cơng cụ thiết kế cịn cho phép nhập thiết kế vào dạng sơ đồ mà điển hình đồ hình trạng thái FSM, sau chúng chuyển đổi sang HDL Bươc 2: Kiểm tra thiết kế (Design Verification) Thực kiểm tra, mô chức hoạt động thiết kế HDL tạo Bước khơng cần phải thực thiết kế Bước 3: Tổng hợp thiết kế (Design Synthesis) Sau hoàn thành mơ thiết kế, bước tổng hợp có nhiệm vụ chuyển thiết kế dạng file văn HDL thành dạng file Netlist, thực mô tả mạch thực mức thấp dạng cổng logic kết nối chúng với Bước 4: Thực thiết kế (Design Implementation) Bước sử dụng file Netlist file ràng buộc “constrains file” (mô tả nguyên tắc thiết kế, ràng buộc vật lý gán vị trí cho đầu vào/ra chip, ràng buộc tốc độ, thời gian, tần số…) để tạo thiết kế sử dụng tài nguyên có sẵn FPGA Bước bào gồm bước: Translate, Map, Place and Routing - Translate: Bước nhằm thực 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” người sử dụng để phát lỗi mâu thuẫn với tham số FPGA chọn Translate thường bao gồm q trình: Tối ưu hóa, biên dịch thành thành phần vật lý cấu kiện; kiểm tra ràng buộc thiết kế Khi kết thúc Translate , có báo cáo chương trình sử dụng, danh sách - cổng I/O cấu kiện sử dụng thiết kế Map: Tạo phân bố thiết kế tới tài nguyên cụ thể FPGA Nếu thiết kế lớn so với thiết bị chọn, quy trình khơng thể hồn thành nhiệm vụ Q tình Map có tham số rạng buộc thiết kế, ví dụ tham số tốc độ, thời gian thiết kế định gắn thêm thành phần logic để đáp ứng yêu cầu thời gian Bước nhằm đưa mạch thiết kế vào thiết bị cụ thể Bước tạo báo cáo xác nhận tài nguyên sử dụng chip, mơ tả xác thành phần thiết kế - đặt vị trí chip thực tế Place and Routing: Place trình lựa chọn vị trí phù hợp khối chức thiết kế đưa cổng logic phần vào khối logic hay mơ-đun cụ thể FPGA cở sở tối ưu việc kết nối đảm bảo ràng buộc thòi gian Route trình tạo liên kết vật lý khối logic Sau bước tạo file mơ tả cấu hình dạng *.jed Bước 5: Mơ định thời (Timing Simulation) Sau bước Place and Routing người thiết kế thực mơ thiết kế mức cổng logic định vị trí định tuyến FPGA, phần mềm sử dụng file cấu hình tạo kết hợp với thư viện mơ hình thời gian họ FPGA (ví dụ ISE xilinx dùng thư viện VITAL), để thực mô hoạt động thiết kế mà có tính đến tham số thời gian trễ, thời gian thiết lập… cổng logic FPGA Bước quan với 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 kết nối thiết bị nạp đến FPGA 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 file “luồng bit” để nạp vào nhớ cấu hình FPGA thường nhớ tạm SRAM Giời thiệu chung FPGA xilinx Công nghệ FPGA phát triển mạnh giới Hiện Xilinx hãng đầu công nghệ FPGA, sản phẩm Xilinx bao gồm: vi mạch CPLD FPGA, phần mềm thiết kế, dịnh vụ hỗ trợ thiết kế chương trình nguồn Xilinx cung cấp dịng FPGA Spartan Virtex FPGA Spartan sử dụng ứng dụng với số lượng lớn giá thành thấp, thương sử dụng để thay cho mảng cổng logic cố định cho sản phẩm dùng cho ứng dụng cụ thể a) Spartan-3 Dòng FPGA Spartan-3 thiết kế cho ứng dụng tiết kiệm chi phí So với dịng FPGA trước đó, dịng Spartan-3 tăng thêm tài nguyên logic, dung lương RAM, số I/O khả quản lý tín hiệu clock Các tính chính: - Giá thành thấp Mật độ logic cao, lên tới 74.880 cells Số lương I/O lớn, tối đa 784 chân Tốc độ truyền liệu I/O lớn Hỗ trợ nhiều chuẩn giao tiếp Kết cuối DCI (trở kháng điều khiển số) Hỗ trợ DDR, DDR2 SDRAM Có chân nhúng 18X18 Có quản lý tín hiệu clock DCM Hỗ trợ nhân vi xử lý nhúng MicroBlaze PicoBlaze Các đặc điểm kiến trúc: Cấu tạo Spartan-3 có thành phần tương tự FPGA khác: - Các khối logic cấu hình khối LUT dang RAM Chức khối để thiết lập logic khối lưu trữ Flip-Flop - Latch Các khối I/O (IOB) có điều khiển liệu chân I/O khối logic bên cấu kiện Mỗi khối IOB hỗ trợ liệu chiều hoạt động 3-trạng thái - Các khối RAM dạng 18kbit Ngồi Spartan-3 có thêm 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 khả phân phối, trễ, nhân, chia điều khiển pha tín hiệu clock Tìm hiểu phần mềm ISE xilinx Không nhà cung cấp chip logic khả trình CPLD/FPGA, Xilinx cịn cung cấp cơng cụ thiết kế điện tử hồn chỉnh, cho phép thực thiết kế thiết bị logic khả trình hãng Các cơng cụ 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 Bộ công cụ phần mềm sử dụng rộng rãi ISE II UART UART mạch điện thực gửi liệu song song thông qua kênh nối tiếp UART bao gồm truyền nhận Bộ truyền ghi dịch đặc biệt, lấy liệu song song sau dịch bít với tốc độ định trước Ngược lại, nhận dịch bít liệu nhận sau phục hồi lại 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 bít start kênh xuống mức ‘0’, theo sau bit data, prity bít stop, lúc kênh mức ‘1’ trở trạng thái nghỉ sau bít stop Số lượng bit liệu 6, 7, bít Bít parity dùng để gỡ lỗi Đối với UART tín hiệu clock đồng không gửi kèm khung liệu Do đó, trước q trình truyền bắt đầu, truyền nhận phải thỏa thuận trước với tập tham số bao gồm tốc độ baud (số bít giây), số bít data stop, có sử dụng bít parity hay khơng… UART nhận Do khơng có xung clock đồng bộ, nhận sử dụng tham số xác định trước để truyền liệu Bộ nhận sử dụng mạch lấy mẫu để ước lượng điểm bit sau khơi phục lại bít Tốc độ lấy mẫu phổ biến 16 lần tốc độ baud, nghĩa bít nối tiếp lấy mẫu 16 lần Mạch lấy mẫu làm việc sau: • Ban đầu kênh trạng thái nghỉ mức ‘1’, mạch lấy mẫu đợi kênh kéo xuống mức ‘0’, bắt đầu bít start Bộ đếm bên mạch lấy mẫu đếm số mẫu lấy 10 Để thuận tiện cho việc thay đổi tương lai, hai số sử dụng numdbit numstopbit tương ứng số bít data truyền số mẫu cho bit stop Số mẫu cho bit stop 16, 24 32 tương ứng với thời gian bit stop 1, 1.5 bít Trong thiết kế đề tài numdbit = numstopbit = 16 Thuật toán bao gồm trạng thái idle, start, data, stop tương ứng biểu diễn giai đoạn xử lý bit start, data, stop Tín hiệu s_tick tín hiệu cho phép tạo tốc độ baud tạo tín hiệu lấy mẫu Ở có hai đếm biểu diễn ghi s n Thanh ghi s trì theo dõi số lần lấy mẫu đếm đến trạng thái start, tới 15 trạng thái data, tới numstopbit trạng thái stop Thanh ghi n trì theo dõi số bít liệu nhận trạng thái data Các bít nhận được dịch vào tập hợp lại ghi b Tín hiệu trạng thái rx_done_tick thêm vào Nó xác nhận cho chu kỳ nhận hoàn thành Sơ đồ khối UART nhận b_reg rx rx clk q d bits datain rx_done_tick rx bits datain rx_empty en Register rd_uart rx_empty rst Receiver Tick set_flag clr_flag clk baud rate generator Flag FF Sơ đồ chân vào en 21 Sơ đồ khối bên rd_uart Giải thích khối: • Khối “baud rate generator” tạo tốc độ baud để truyền nhận bít liệu (19200 baud = 19200 bits/s) UART truyền thông không đồng khơng có tín hiệu clock đồng kèm, trình nhận phải thỏa thuận trước thông qua tập tham số Để lấy mẫu bít, nhận tạo tín hiệu clock để xác định điểm bít truyền Khối bau rate generator tạo tín hiệu lấy mẫu tần số 16 lần tốc độ baud • Khối “receiver” xác định bits start, data, stop chuyển bit liệu vào ghi dịch bit Sau nhận xong bits tín hiệu rx_done_tick thiết lập báo nhận xong bits, cần chuyển tới mã hóa • Khối “register” đệm tránh tình trạng ghi đè liệu chưa xử lý xong bits liệu trước • Khối AES kiểm tra xem có bits liệu gửi tới mã hóa cách kiểm tra tín hiệu “rx_empty” xem thiết lập hay chưa Sau đọc xong bits khối AES thiết lập tín hiệu rd_uart để xóa “rx_empty” 22 Thuật tốn thiết kế nhận UART FPGA: IDLE F If rx==0 T DATA s=0 F If s_tick==1 START T F F If s_tick==1 If s == 15 s = s+1 T T F s = s+1 s=0 b = rx&(b>>1) If s == T F s=0 n=0 If n == numdbit-1 T F T Rx_done_tick=1 T If s==numstopbit If s_tick==1 F s = s+1 23 STOP Giải thích thuật tốn: Ban đầu kênh trạng thái nghỉ, tín hiệu Rx= ‘1’ Bộ UART nhận liên tục lấy mẫu tín hiệu Rx gửi tới từ PC với tốc độ lấy mẫu 16 lần tốc độ Baud, tốc độ baud chọn thiết kế 19200 baud, trình lấy mẫu tiếp tục mẫu lấy = ‘0’, lúc PC báo cho nhận biết bắt đầu trình trao đổi liệu Bộ UART nhận tiếp tục lấy mẫu tín hiêu Rx để khơi phục liệu đến Sau Rx=’0’, nhận chuyển sang trạng thái START Nếu tín hiệu s_tick=’1’, nhận thực lấy mẫu bit start, đếm khởi động tăng ghi s Khi s=7 nghĩa trình lấy mẫu lấy mẫu đến điểm bit start Thì bít start khơi phục nhận, khởi động lại đếm (s=0, n=0) Bộ nhận chuyển sang trạng thái data Nếu tín hiệu cho phép s_tick=’1’, nhận bắt đầu trình lấy mẫu bit liệu Ban đầu mẫu lấy, ghi s tăng tăng đến s=15, mẫu lấy điểm bit liệu (do mẫu trước bít start chưa lấy nên cần 16 mẫu để điểm bit start đến điểm bit liệu đầu tiên), bit liệu khôi phục dịch vào ghi b, ghi n tăng cho biết nhận bit, đếm khởi đơng lại (s=0) Q trình tiếp tục bit khôi phục dịch dần vào ghi b nhận numdbit liệu tương ứng với n=numdbit-1 Sau nhận chuyển qua trạng thái STOP Tùy thuộc vào số mẫu lấy cho bit stop quy định numstopbit, mà đếm lựa chọn cho phù hợp Với số mẫu 16, nhận khởi động đếm đếm số mẫu để xác định điểm bit stop Sau khôi phục lại bit stop, nhận set tín hiệu rx_done_tick lên ‘1’ để báo q trình nhận xong Sau nhận quay trạng thái nghỉ để đợi tín hiệu chuyển đổi Tín hiệu rx_done_tick báo cho khối mã hóa biết nhận nhận xong numdbit liệu Khi khối mã hóa lấy liệu từ ghi đệm UART nhận, sau lấy xong, khối mã hóa thiết lập tín hiệu rd_uart để xóa tín hiệu rx_done_tick UART nhận để nhận báo cho khối mã hóa nhận bít liệu Clock hệ thống 50MHz, để có tần số lấy mẫu 16 lần tốc độ baud (16*19200 = 307200) ta tạo chia tần sử dụng đếm mod-163 Để tránh lỗi ghi đè liệu (dữ liệu cũ chưa xử lý xong bị ghi đè liệu mới) ta sử dụng đệm để lưu liệu gửi tới vào, đếm ghi dịch 24 stack hoạt động theo chế FIFO Thiết kế có q trình xử lý liệu tương đối nhanh (dữ liệu đưa vào mã hóa theo tín hiệu đồng clock hệ thống liệu nhận kênh theo tốc độ lấy mẫu) nên ta sử dụng ghi dịch đơn giản để đệm liệu Chương trình VHDL mơ tả nhận có process chính: • Chiatan : process(clk,rst); có nhiệm vụ chia clock hệ thống để tạo tốc độ lấy mẫu • Capnhat : process (clk,tick); có nhiệm vụ cập nhật trạng thái cho ghi b, n, s • Uart : process (cst,s_reg,n_reg,b_reg,rx_done_tick,rx); process nhận có nhiệm vụ cập nhật trạng thái nhận khôi phục lại bit nhận • Flag : process (rx_done_tick,rd_uart,rst); process để thiết lập tín hiệu giao tiếp với khối mã hóa: báo cho mã hóa biết nhận numdbit liệu thơng qua tín hiệu rx_done_tick nhận tín hiệu rd_uart từ khối mã hóa để xóa tín hiệu rx_done_tick cho lần nhận liệu UART Transmitter Bộ UART truyền tương tự nhận Nó bao gồm khối truyền, tạo tốc độ baud mạch giao diện UART truyền sử dụng số numdbit numstopbit với chức nằng tương tự nhận để tiện thay đổi tương lai Thuật toán bao gồm trạng thái idle, start, data, stop tương ứng biểu diễn giai đoạn truyền bit start, data, stop Tín hiệu s_tick tín hiệu cho phép tạo tốc độ baud tạo tín hiệu lấy mẫu Ở có hai đếm biểu diễn ghi s n Thanh ghi s trì theo dõi số lần lấy mẫu đếm đến 15 trạng thái start, tới 15 trạng thái data, tới numstopbit trạng thái stop Thanh ghi n trì theo dõi số bít liệu truyền trạng thái data Các bít truyền được dịch dần sau 16 lần lấy mẫu Tín hiệu trạng thái tx_done_tick thêm vào Nó xác nhận cho chu kỳ truyền hoàn thành 25 Sơ đồ khối UART truyền: tx bits dataout tx_empty en tx wr_uart tx clk rst b_reg d q bits dataout tx_done_tick clk Register Sơ đồ chân vào Transmitter Tick baud rate generator clr_flag set_flag tx_start Flag FF tx_empty wr_uart en Sơ đồ khối bên Giải thích khối: • Khối “baud rate generator” tạo tốc độ baud để truyền bít liệu (19200 baud = 19200 bits/s) Tạo tín hiệu lấy mẫu tần số 16 lần tốc độ baud • Khối “Transmitter” truyền bits start, data, stop Sau truyền xong bits, tín hiệu tx_done_tick thiết lập báo truyền xong bits, cần truyền bits 26 • Khối “register” đệm tránh tình trạng ghi đè liệu chưa xử lý xong bits liệu trước IDLE F If tx_start==1 T DATA s=0 F If s_tick==1 START T F F If s_tick==1 If s == 15 s = s+1 T T F s = s+1 s=0 (b&tx)>>1 If s == 15 T F If n == numdbit-1 s=0 n=0 T F T If s==numstopbit Rx_done_tick=1 T If s_tick==1 STOP F s = s+1 • Sau truyền xong tín hiệu tx_empty thiết lập Khối AES gửi bits tới đệm thiết lập tín hiệu wr_uart báo hiệu cho truyền thực truyền - Thuật toán thiết kế nhận UART FPGA: Giải thích thuật tốn: Ban đầu UART truyền trạng thái nghỉ liên tục lấy mẫu với tốc độ mẫu 16 lần tốc độ baud đồng thời liên tục kiểm tra tín hiệu tx_start 27 xem thiết lập chưa, trạng thái nghỉ truyền thiết lập tín hiệu tx= ‘1’ để truyền lên kênh Khi khối mã hóa yêu cầu truyền cách thiết lập tín hiệu wr_uart tín hiệu tx_start thiết lập Lúc truyền chuyển sang trạng thái START, chuyển tín hiệu tx = ‘0’, tín hiệu cho phép s_tick thiết lập, lấy mẫu tạo tín hiệu mẫu đếm khởi động để đếm số mẫu lấy (s=0), mẫu lấy s tăng s=15, tức nghĩa số mẫu lấy 16 kết thúc bit start (1 bit 16 lần lấy mẫu), truyền chuyển sang trạng thái data, đếm khởi động lại (s=0, n=0) Bộ truyền tiếp tục lấy mẫu đếm mẫu lấy, s=15 dịch bít liệu từ ghi b n tăng 1, tiếp tục khởi động lại đếm Khi n= numdbit-1, truyền truyền hết bit liệu, truyền chuyển sang trạng thái stop Các mẫu tiếp tục lấy đếm đếm số mẫu, số mẫu băng numstopbit-1 truyền quay lại trạng thái nghỉ đợi tín hiệu từ khối mã hóa truyền numdbit đồng thời tín hiệu tx_done_tick thiết lập để xóa tín hiệu tx_start cho lần truyền đồng thời tín hiệu tx_done_tick đưa tới đầu để báo cho khối mã hóa biết sẵn sàng gửi liệu Tương tự nhận truyền cần mạch chia tần để tạo tín hiệu lấy mẫu từ clock hệ thống Chương trình VHDL mơ tả nhận có process chính: • Chiatan : process(clk,rst); có nhiệm vụ chia clock hệ thống để tạo tốc độ lấy mẫu • Capnhat : process (clk,tick); có nhiệm vụ cập nhật trạng thái cho ghi b, n, s • Uart : process (cst1,c_reg,n_reg,b_reg,tx_done_tick,tx_start) process truyền có nhiệm vụ cập nhật trạng thái truyền gửi bit liệu • Flag : process (tx_done_tick,wr_uart,rst); process để thiết lập tín hiệu giao tiếp với khối mã hóa: báo cho mã hóa biết gửi numdbit liệu thơng qua tín hiệu tx_done_tick nhận tín hiệu wr_uart từ khối mã hóa để xóa tín hiệu tx_start cho lần nhận liệu AES encoder/decoder Sơ đồ khối mã hóa/giải mã AES: 28 edsel bits datain bits dataout tx_empty rx_empty rd_uart rst wr_uart clk Sơ đồ chân vào Datain buf 128 bit datain AES 128 bit dataout Dataout buf Sơ đồ khối bên Giải thích khối: Từ bước thực mã hóa giải mã ta xậy dựng mã hóa/giải mã AES máy trạng thái hữu hạn FSM Với trạng thái start, init, subbytes, shiftrows, mixclumns, getroundkey, addroundkey 29 • Datain buf : AES làm việc với khối liệu (đầu vào đầu ra) 128 bít khóa có độ dài 128, 192 256 bít Do cần chuyển bits thành khối 128 bit trước thực mã hóa, khối datain buf thực nhiệm vụ • Dataout buf : tương tự với khối datain buf khối thực chuyển byte khối 128 bits mã hóa khối uart transmitter để chuyển tới PC • AES : Khối thực mã hóa giải mã theo thuật tốn AES Khối máy trạng thái hữu hạn với trạng thái tương ứng với bước thực mã hóa thuật tốn AES : subbytes, shiftrows, mixcolumns, addroundkey 30 Sơ đồ máy trạng thái hữu hạn FSM: Reset Reset Idle Flag2=’0’ Count=9 Flag=’0’ Idle Flag2=’0’ Count=0 Flag=’1’ Flag=’0’ Flag=’1’ Init Flag2=’0’ Init Flag2=’0’ Mix Columns Flag2=’0’ SubBytes Flag2=’0’ ShiftRows Flag2=’0’ ShiftRows Flag2=’0’ Count=0 Count>0 SubBytes Flag2=’0’ Mix Columns Flag2=’0’ Get Roundkey Flag2=’0’ Get Roundkey Flag2=’0’ Count=0 Count>0 Count>0 Count=0 Add RoundKey If count>0 Count ; Flag2=’0’; Else flag2=’1’; Add RoundKey If count

Ngày đăng: 25/08/2021, 14:25

Mục lục

    a) Phép biến đổi SubBytes

    b) Phép biến đổi ShiftRows

    c) Phép biến đổi MixColumns

    d) Thao tác AddRoundKey

    e) thuật toán sinh khóa (KeyExpansion)

    3. Quy trình giải mã

    a) Phép biến đổi InvShifRows

    b) Phép biến đổi InvSuBytes

    c) Phép biến đổi InvMixColumns