1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán AES 256 Sử Dụng Công Nghệ FPGA

74 5 0

Đ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

Thông tin cơ bản

Tiêu đề Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán AES 256 Sử Dụng Công Nghệ FPGA
Tác giả Nguyen Thanh Long
Trường học Đại Học Bách Khoa Hà Nội
Chuyên ngành Khoa Học Máy Tính và Công Nghệ Thông Tin
Thể loại Luận văn thạc sĩ
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 74
Dung lượng 1,78 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán AES 256 Sử Dụng Công Nghệ FPGA “ Nghiên cứu thực hiện cài đặt thuật toán AES sử dụng công nghệ FPGA” nhằm xem xét khả năng cứng hóa thuật toán AES sử dụng công nghệ FPGA và ứng dụng trong các thiết bị có sử dụng máy 2 tính nhúng. Nội dung của đồ án tốt nghiệp gồm ba chương: Chương 1: Tổng quan về công nghệ FPGA và KIT phát triển, bao gồm những hiểu biết cơ bản về công nghệ FPGA, lịch sử ra đời, phát triển của công nghệ FPGA, cấu trúc và các loại FPGA phổ biến cùng với các công nghệ, quy trình thiết kế và ngôn ngữ dùng để lập trình FPGA. Khái niệm KIT phát triển và cấu tạo Chương 2: Tìm hiểu về thuật toán AES và khả năng thực hiện thuật toán AES trên FPGA, bao gồm cấu trúc cơ bản, đầu vào ra cho mã hóagiải mã, các phép biến đổi trong biến đổi vòng trong mã hóagiải mã, lược đồ tạo khóa và thuật toán giải mã của AES, khả năng và phương hướng để thực hiện thuật toán AES trên FPGA và thực tế thực hiện. Chương 3: Thực hiện thuật toán AESCBC trên FPGA bằng ngôn ngữ verilog, gồm phân tích thiết kế cùng kết quả mô phỏng và kiểm tra

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI

LUẬN VĂN THẠC SĨ

NGHIÊN CỨU THỰC HIỆN CÀI ĐẶT THUẬT TOÁN

AES SỬ DỤNG CÔNG NGHỆ FPGA

Nguyen Thanh Long

Hà Nội - 2023

Trang 2

MỤC LỤC

LỜI CẢM ƠN i

LỜI CAM ĐOAN ii

MỤC LỤC iii

DANH MỤC TỪ VIẾT TẮT v

DANH MỤC HÌNH VẼ vii

DANH MỤC BẢNG BIỂU ix

MỞ ĐẦU 1

CHƯƠNG 1: TỔNG QUAN VỀ CÔNG NGHỆ FPGA 3

1.1 Lịch sử ra đời FPGA 3

1.2 Sự phát triển của FPGA, cấu trúc và phân loại FPGA 3

1.2.1 Sự phát triển của FPGA 3

1.2.2 Cấu trúc FPGA 5

1.2.3 Phân loại FPGA 6

1.3 Các lĩnh vực ứng dụng của công nghệ FPGA 7

1.4 Qui trình thiết kế FPGA 8

1.5 Ngôn ngữ lập trình trong FPGA 11

1.5.1 Ngôn ngữ Verilog 11

1.6 Tổng quan về KIT ZC706 Zynq-7000 XC7Z045-2FFG900C AP SoC 15

CHƯƠNG 2: TÌM HIỂU VỀ THUẬT TOÁN AES-CBC VÀ KHẢ NĂNG THỰC HIỆN THUẬT TOÁN AES TRÊN FPGA 19

2.1 Cơ sở lý thuyết của thuật toán mã hóa AES-CBC 19

2.1.1 Tiêu chuẩn mật mã hóa tiên tiến - Advanced Encrytion Standard (AES) 19

2.1.2 Chế độ xích liên kết khối mã - Cipher Block Chaining (CBC) 29

2.2 Khả năng thực hiện thuật toán AES trên FPGA 31

2.2.1 Khối AES Encryption 32

Trang 3

2.2.2 Khối AES Decryption 33

2.2.3 Khối Key Expansion 34

2.2.4 Khối Controller 35

CHƯƠNG 3: THỰC HIỆN THUẬT TOÁN AES-CBC TRÊN FPGA BẰNG NGÔN NGỮ VERILOG 37

3.1 Thiết kế lõi AES-CBC tổng 37

Phân tích thiết kế 37

3.1.1 Chức năng 37

3.1.2 Cấu trúc 37

3.1.3 Mô tả tín hiệu 38

3.2 Thiết kế các khối bên trong lõi IP AES-CBC 40

3.2.1 Thiết kế khối RRCrypto 40

3.2.2 Thiết kế khối AES-CBC-Encryption/AES-CBC-Decryption 45

3.3 Kết quả mô phỏng và kiểm tra 62

TÀI LIỆU THAM KHẢO 66

Trang 4

DANH MỤC TỪ VIẾT TẮT

FPGA Field-Programmable Gate

Array Mạch tích hợp cổng lập trình

AES Advanced Encryption Standard Chuẩn mã hóa tiên tiến

PLA Programmable Logic Array

Vi mạch lập trình dùng mảng logic dùng trong điện tử học

DSP Digital Storage Oscilloscop

Máy hiện sóng lưu trữ kỹ thuật

số

RAM

Ramdom Access Memory

Bộ nhớ truy cập ngẫu nhiên

ADC Analog-to-Digital Converter

Bộ chuyển đổi tương tự sang

Trang 5

DRAM Dynamic Ramdom Access

Language Ngôn ngữ mô tả phần cứng

Trang 6

DANH MỤC HÌNH VẼ

Hình 1.1 Cấu trúc FPGA 5

Hình 1.2 Các loại cấu trúc FPGA 7

Hình 1.3 Sơ đồ quy trình thiết kế FPGA 9

Hình 1.4 Mô hình cấu trúc mô tả kết nối các thực thể 12

Hình 1.5 Mô hình bộ dồn kênh 14

Hình 1.6 Sơ đồ khối mô tả ZC706 15

Hình 1.7 Các vị trí thành phần của Bảng thànhphần ZC706 15

Hình 2.1 Cấu trúc tổng thể thuật toán AES 20

Hình 2.2 Mô tả quá trình mã hóa AES 21

Hình 2.3 Thủ tục biến đổi AddRoundKey() 21

Hình 2.4 Thủ tục biến đổi SubBytes() 22

Hình 2.5 Thủ tục biến đổi ShiftRows() 23

Hình 2.6 Phép nhân ma trận trong thủ tục biếnđổi MixColumns() 24

Hình 2.7 Mô tả quá trình giải mã AES 24

Hình 2.8 Thủ tục biến đổi InvShiftRows() 25

Hình 2.9 Phép nhân ma trận trong thủ tục biếnđổi InvMixColumns() 26

Hình 2.10 Thiết lập ma trận khóa khởi tạo 27

Hình 2.11 Thủ tục biến đổi RotWord() 28

Hình 2.12 Cơ chế thực hiện quá trình mở rộng khóa trong thuật toán AES với độ dài khóa 128 bit 29

Hình 2.13 Mã hóa chế độ CBC 30

Hình 2.14 Giải mã chế độ CBC 30

Hình 2.15 Sơ đồ khối ví dụ thiết kế FPGA thực hiện thuật toán AES- CBC 32

Trang 7

Hình 2.16 Sơ đồ khối khối AES Encryption trong thiết kế AES-CBC ví

dụ 33

Hình 2.17 Sơ đồ khối khối AES Decryption trong thiết kế AES-CBC ví dụ 34

Hình 2.18 Sơ đồ khối khối Key Expansion trong thiết kế AES-CBC ví dụ 35 Hình 3.1 Sơ đồ giao diện lõi IP AES-CBC 37

Hình 3.2 Cấu trúc của module AES-CBC 38

Hình 3.3 Sơ đồ tín hiệu module RoundRobinCrypto 40

Hình 3.4 Cấu trúc của module RoundRobinCrypto 41

Hình 3.5 Máy trạng thái của module RoundRobinCrypto 43

Hình 3.6 Sơ đồ tín hiệu module AES-CBC-Encryption/AES-CBC- Decryption 46

Hình 3.7 Sơ đồ khối chức năng của module AES-CBC-Encryp/Decryp 48

Hình 3.8 Sơ đồ khối AES-Top 49

Hình 3.9 Sơ đồ khối AES Transformation 49

Hình 3.10 Sơ đồ khối AES Key Expander 54

Hình 3.11 Sơ đồ khối AES Key RAM 62

Hình 3.12 Mô hình kiểm thử lõi IP AES-CBC 64

Hình 3.13.Dạng sóng các tín hiệu vào/ra của module AES-CBC-Encryp 65

Hình 3.14.Dạng sóng các tín hiệu vào/ra của module AES-CBC-Decryp 65

DANH MỤC BẢNG BIỂU • Bảng 1.1 Bảng thành phần ZC706 16

Bảng 2.1 Các thông số của thuật toán AES 19

Bảng 2.2 Hộp S thuận 23

Bảng 2.3 Hộp S đảo 26

Trang 8

Bảng 2.4 Các từ Hằng số vòng (RCON) 28

Bảng 3.1 Bảng mô tả tín hiệu lõi IP AES-CBC 38

Bảng 3.2 Bảng mô tả tín hiệu module RoundRobinCrypto 41

Bảng 3.3 Bảng mô tả tín hiệu module AES-CBC-Encryp/Decryp 46

Trang 9

MỞ ĐẦU

Vào năm 1997, trong cuộc thi xây dựng chuẩn mã hóa dữ liệu mới thay thế cho chuẩn mã hóa dữ liệu cũ DES của Viện tiêu chuẩn và công nghệ quốc gia (NIST), thuật toán AES đã được ra đời với tên gọi thuật toán Rijndael Khác với DES sử dụng mạng Feistel, AES sử dụng mạng thay thế - hoán vị ngày 26 tháng 11 năm 2001, mã khối Rijndael được chính thức công nhận là Chuẩn mã

dữ liệu tiên tiến AES (được công bố là chuẩn FIPS 197) sau khi trải qua cuộc tuyển chọn kéo dài 5 năm của Viện tiêu chuẩn và công nghệ quốc gia Mỹ (NIST-National Institute of Standards and Technology) Mục đích ra đời của AES là nhằm thay thế cho chuẩn mã hóa dữ liệu DES đã cũ Sau khi được công nhận chính thức, AES được sử dụng để bảo vệ các thông tin nhạy cảm, không thuộc phạm vi bí mật của chính phủ Mỹ Sau đó, AES nhanh chóng trở thành một chuẩn mã hóa dữ liệu trên Thế giới và được sử dụng rộng rãi cho nhiều lĩnh vực như tài chính, thương mại, các ứng dụng phần mềm và phần cứng có sử dụng

mã hóa AES đã được Ủy ban An ninh quốc gia Mỹ công nhận là một trong số những mã pháp có độ an toàn cao nhất Tại thời điểm đó, NIST đã dự đoán rằng AES sẽ còn an toàn cho 20 đến 30 năm nữa Ngày nay AES đã trở thành hệ mật được sử dụng rộng rãi nhất trên thế giới AES có thể dễ dàng thực hiện với tốc

độ cao bằng phần mềm hoặc phần cứng mà không đòi hỏi nhiều bộ nhớ.Việc cứng hóa thuật toán mã hóa AES sẽ giúp tăng tốc độ quá trình mã hóa và giải

mã dữ liệu, từ đó nâng cao hiệu quả hoạt động của hệ thống

Bên cạnh đó, công nghệ thiết kế số FPGA là một công nghệ hiệu quả và mang những thuộc tính thích hợp cho an toàn mật mã (như cấu trúc chip được đốt vật lý, đảm bảo toàn vẹn, chống tấn công thám thiết kế và không phụ thuộc

vào hệ điều hành nào ) đồng thời cũng có tính mềm dẻo và phù hợp để phát

triển Do vậy em đã chọn đề tài “ Nghiên cứu thực hiện cài đặt thuật toán AES

sử dụng công nghệ FPGA” nhằm xem xét khả năng cứng hóa thuật toán AES

sử dụng công nghệ FPGA và ứng dụng trong các thiết bị có sử dụng máy tính nhúng

Chính vì vậy, em đã chọn đề tài “ Nghiên cứu thực hiện cài đặt thuật toán AES sử dụng công nghệ FPGA” nhằm xem xét khả năng cứng hóa thuật toán AES sử dụng công nghệ FPGA và ứng dụng trong các thiết bị có sử dụng máy

Trang 10

tính nhúng

Nội dung của đồ án tốt nghiệp gồm ba chương:

Chương 1: Tổng quan về công nghệ FPGA và KIT phát triển, bao

gồm những hiểu biết cơ bản về công nghệ FPGA, lịch sử ra đời, phát triển của công nghệ FPGA, cấu trúc và các loại FPGA phổ biến cùng với các công nghệ, quy trình thiết kế và ngôn ngữ dùng để lập trình FPGA Khái niệm KIT phát triển và cấu tạo

Chương 2: Tìm hiểu về thuật toán AES và khả năng thực hiện thuật

mã, các phép biến đổi trong biến đổi vòng trong mã hóa/giải mã, lược đồ tạo khóa và thuật toán giải mã của AES, khả năng và phương hướng để thực hiện thuật toán AES trên FPGA và thực tế thực hiện

Chương 3: Thực hiện thuật toán AES-CBC trên FPGA bằng ngôn ngữ verilog, gồm phân tích thiết kế cùng kết quả mô phỏng và kiểm tra.

Trang 11

CHƯƠNG 1: TỎNG QUAN VỀ CÔNG NGHỆ FPGA

1.1 Lịch sử ra đời FPGA

Năm 1984 Ross Freeman là người đầu tiên thiết kế PFGA và cũng là người sáng lập công ty Xilinx Kiến trúc mới của FPGA cho phép tích hợp số lượng lớn các phần tử bán dẫn vào một vi mạch so với kiến trúc trước đó là CPLD FPGA

có khả năng chứa từ 100.000 đến vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic, con số này đối với PAL vá PLA còn thấp hơn rất nhiều chỉ đạt vài nghìn đến 10.000 cổng logic

SPLD thường là một mảng logic AND/OR lập trình được có kích thước

xác định và chứa một số lượng hạn chế các phần tử nhớ đồng bộ (clocked register)

Cấu trúc này hạn chế khả năng thực hiện những hàm phức tạp và thông thường hiệu xuất làm việc của vi mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán

Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic nhỏ hơn nhiều nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thể chứa nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử logic và hệ thống mạch kết nối, để đạt được mục đích này thì kiến trúc của FPGA phức tạp hơn nhiều so với CPLD Một điểm khác biệt với CPLD là trong những FPGA hiện đại được tích hợp nhiều những bộ logic số học đã sơ bộ tối ưu hóa hỗ trợ RAM, ROM tốc độ cao, hay các bộ nhân

Ngoài khả năng tái cấu trúc vi mạch toàn cục, FPGA hiện tại còn hỗ trợ tái cấu trúc một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác

1.2 Sự phát triển của FPGA, cấu trúc và phân loại FPGA

1.2.1 Sự phát triển của FPGA

Các thiết bị lập trình được, gọi chung là các thiết bị khả trình, có vai trò rất quan trọng trong thiết kế phần cứng số Chúng là các chíp đa dụng có thể được cấu hình theo nhiều cách cho nhiều ứng dụng khác nhau

Loại đầu tiên của thiết bị khả trình được sử dụng rộng rãi là Programmable read-only Memory-PROM PROM là thiết bị lập trình chỉ được một lần gồm một dãy các ô nhớ chỉ đọc PROM có thể thực hiện bất kỳ một hàm logic theo bảng

sự thật nào đó, bằng cách sử dụng các đường địa chỉ như các ngõ nhập vào và ngõ

Trang 12

xuất đựơc xác định nội dung các bít nhớ Có hai loại PROM cơ bản là Programmable và Field-Programmable

Mask-> Mask-Programmable là loại thiết bị được lập trình bởi nhà sản xuất Các

chíp này thường sản xuất các chíp lôgíc tốc độ cao vì các kết nối bên trong thiết

bị được thực hiện bằng phần cứng ngay từ khi sản xuất

> Field-Programmable là thiết bị được lập trình bởi người dùng Các kết

nối bên trong của Field-Programmable luôn cần đến một số chuyển mạch lập trình được (cầu chì, transistor truyền ) vì vậy tốc độ truyền chậm hơn của thiết bị nối

cứng (Mask-Programmable) Tuy nhiên nó có nhiều ưu điểm như:

• Các chip Field-Programmable có thể lập trình trong thời gian ngắn (khoảng vài phút hay vài giờ đồng hồ) còn các chíp Mask-Programmable khi sản xuất phải thực hiện trong thời gian dài (hàng tuần hay hàng tháng)

• Các chíp Field-Programmable rẻ hơn nhiều so với Mask- Programmable khi sản xuất với số lượng nhỏ

Hai biến thể của PROM là EPROM chúng đều có chung ưu điểm là có khả năng xoá và lập trình lại nhiều lần

Tiếp đến là các thiết bị PLD, chúng thông thường có cấu tạo gồm một dãy các cổng AND được nối với một dãy các cổng OR Loại cơ bản của PLD là PAL, PAL gồm một khối các cổng AND lập trình được nối đến các khối cổng OR cố

định Một loại nữa của PLD linh hoạt hơn PAL là PLA PLA cũng có cấu trúc

giống PAL nhưng các kết nối khả trình Trong PLA cũng có hai loại là Programmable và Field-Programmable

Mask-Cả hai loại PLD trên cho phép thực hiện các mạch logic có tốc độ cao tuy nhiên cấu trúc đơn giản của chúng chỉ cho phép thực hiện được các mạch logic

cỡ nhỏ

Loại thiết bị khả trình tổng quát nhất gồm dãy các phần tử rời rạc có thể kết nối với nhau theo mô tả của người sử dụng, được gọi là Mask- Programmable Gate Array (MPGA) chúng có cấu trúc cơ bản nhất là gồm các hàng transistor có thể được kết nối với nhau để thực hiện các mạch logic Các kết nối do người dùng định nghĩa này có thể trong cả hàng và cả cột Ưu điểm chính của MPGA so với PLD là nó cung cấp các kiến trúc tổng quát cho phép thực hiện các mạch logic lớn hơn Vì cấu trúc của chúng có thể mở rộng lớn hơn cùng với số lượng logic lớn hơn

Trang 13

FPGA đã kết hợp khả năng lập trình của PLD và kết cấu nối có thể mở rộng của MPGA Do đó các thiết bị lập trình loại này có mật độ logíc cao hơn FPGA được công ty Xilinx giới thiệu lần đầu tiên vào năm 1985 và đến nay đã có nhiều công ty phát triển như: Actel, Altera, Plessey, Plus logic, Quick

1.2.2 Cấu trúc FPGA

FPGA là mạch tích hợp chứa nhiều (64 đến hơn 10.000) ô logic (logic cell) giống nhau có thể xem là các thành phần chuẩn Mỗi ô logic giữ một hay một số chức năng độc lập (Hình 1-1) Các ô giống nhau được kết nối bởi một ma trận đường dẫn và các chuyển mạch khả trình Người thực hiện thiết kế bằng các đặc trưng lôgic đơn của mỗi ô và lựa chọn đóng các chuyển mạch trong ma trận kết nối Mảng của các ô lôgic và kiểu kết nối là kết cấu xây dựng khối cơ bản trong mạch lôgic Các thiết kế phức tạp được tạo ra bằng cách kết hợp các khối cơ bản

để tạo ra các mạch được mô tả

Mô hình tổng quát của FPGA gồm một dãy hai chiều các khối lôgic (logic

block) có thể được kết nối bằng các nguồn kết nối chung Các nguồn kết nối gồm

các đoạn kết nối (segment) có thể có chiều dài khác nhau

Hình 1.1 Cấu trúc FPGA

Mô hình tổng quát của FPGA gồm một dãy hai chiều các khối lôgic (logic

block) có thể được kết nối bằng các nguồn kết nối chung Các nguồn kết nối gồm

các đoạn kết nối (segment) có thể có chiều dài khác nhau Bên trong các kết nối

là các chuyển mạch lập trình được dùng để nối các khối lôgic với các đoạn dây, các khối vào/ra hay các đoạn dây với nhau Mạch lôgic cài đặt trong FPGA bằng

Trang 14

cách ánh xạ lôgic vào các khối lôgic riêng rẽ và sau đó nối các khối lôgic cấu hình

(Configurable logic Block) cần thiết qua các chuyển mạch Các khối CLB cung

cấp các phần tử chức năng với cấu trúc sử dụng logic Các khối vào/ra (I/O Block)

cung cấp giao diện giữa các gói chân và các đường tín hiệu bên trong Tài nguyên

kết nối khả trình cung cấp các bộ phận truyền dẫn tới kết nối đầu vào và đầu ra

của các CLB và các IOB trong mạng riêng

Vậy cấu trúc FPGA gồm ba phần tử chính: Các khối lôgic cấu hình (CLB),

các khối vào/ra (IOB) và các kết nối

a Các khối lôgic cấu hình:

Cấu trúc và nội dung của logic block được gọi theo kiến trúc của nó Kiến

trúc của khối lôgic có thể thiết kế theo nhiều cách khác nhau, có thể là các cổng

AND 2 ngõ nhập, các bộ dồn kênh (Multiplexer) hay các bảng tìm kiếm (Lock-up

Table) Ngoài ra có thể chứa các Flip-Flop để hỗ trợ cho việc thực hiện một cách

tuần tự

b Các nguồn kết nối:

Các nguồn kết nối có cấu trúc và nội dung được gọi là kiến trúc đường

(Routing Architecture) Kiến trúc Routing gồm các đoạn đây nối và các chuyển

mạch khả trình Các chuyển mạch khả trình có cấu tạo khác nhau như

pass-transistor, được điều khiển bởi các cell SRAM, các phần tử cầu chì nghịch,

EPROM transistor và EEROM transitor Giống như các khối lôgic có nhiều cách

khác nhau để thiết kế các kiến trúc routing Một số FPGA cung cấp nhiều kết nối

đơn giản giữa các khối logic, một số khác cung cấp ít kết nối hơn nên routing

phức tạp hơn

1.2.3 Phân loại FPGA

FPGA có nhiều loại khác nhau có cấu trúc và đặc tính riêng tuỳ theo từng

hãng sản xuất, tuy nhiên chúng có bốn loại chính sau: cấu trúc mảng đối

Trang 15

xứng (Symmetrical Array), cấu trúc PLD phân cấp (hierachircal PLD), cấu trúc hàng (Row base) và cấu trúc đa cổng (Sea of Gate) mô tả dưới đây

Hình 1.2 Các loại cấu trúc FPGA 1.3 Các lĩnh vực ứng dụng của công nghệ FPGA

FPGA là thế hệ sau của IC khả trình nên chúng có thể ứng dụng trong hầu hết các ứng dụng của hiện đang dùng MPGA, PLD và các mạch tích hợp loại nhỏ (SSI)

a Các mạch tích hợp là ứng dụng đặc biệt

FPGA là thiết bị tổng quát nhất để thực hiện các mạch lôgic số Chúng đặc biệt thích hợp cho các mạch tích hợp chuyên dụng đặc biệt (ASIC) như bộ cộng,

bộ điều khiển lôgic Flip-Flop

b Thiết kế mạch ngâu nhiên

Mạch lôgic ngẫu nhiên thường được thực hiện bằng PAL Nếu tốc độ của mạch không đòi hỏi khắt khe (các PAL nhanh hơn hầu hết các FPGA) thì mạch

có thể thực hiện bằng FPGA Hiện nay một FPGA cần từ 10 đến 20 PAL

c Thay thế các chip SSI cho mạch ngâu nhiên

Các mạch hiện tại trong các sản phẩm thương mại thường chứa nhiều chíp SSI Trong nhiều trường hợp có thể thay thế bằng FPGA để giảm diện tích bo mạch

d Chế tạo mâu

FPGA rất lý tưởng cho việc tạo mẫu các sản phẩm Giá thành thực hiện thấp và thời gian thực hiện thiết kế vật lý ngắn, cung cấp các ưu điểm hơn nhiều

Trang 16

so với các phương tiện truyền thống khác để chế tạo mẫu phần cứng Các mẫu ban đầu có thể thực hiện rất nhanh và những thay đổi sau đó được thực hiện rất nhanh và ít tốn kém

e Máy tính dựa trên FPGA

Một loại máy tính dựa trên FPGA có thể tái lập trình ngay trên FPGA Các máy này có một bo mạch chứa các FPGA với các chân nối với các chíp lân cận giống như thông thường Ý tưởng là là một chương trình phần mềm có thể được

“biên dịch” (sử dụng kỹ thuật tổng hợp mức cao, mức lôgic và mức sơ đồ bằng tay) vào ngay phần cứng Phần cứng này sẽ được thực hiện bằng cách lập trình bo mạch FPGA Phương pháp này có hai ưu điểm chính: một là không cần quá trình lấy lệnh như các bộ xử lý truyền thống vì phần cứng đã gộp cả lệnh Kết quả là tốc độ có thể tăng lên hàng trăm lần Hai là, môi trường tính toán có thể thực hiện song song mức cao, làm tăng tốc thêm nữa

f Tái cấu hình thành phần trực tiếp

FPGA cho phép có thể thay đổi theo mong muốn cấu trúc của một máy đang hoạt động Một ví dụ là các thiết bị máy tính từ xa có thể thay đổi trực tiếp

để khắc phục sự cố hay có lỗi thiết kế Kiểu FPGA thích hợp nhất cho ứng dụng này là những FPGA có các chuyển mạch lập trình được

1.4 Qui trình thiết kế FPGA

Quy trình thiết kế tổng quát trên FPGA được trình bày trong sơ đồ dưới đây:

> Mô tả thiết kế (Design specification)

Trong bước này, từ những yêu cầu của thiết kế và dựa trên khả năng của công nghệ hiện có, người thiết kế kiến trúc sẽ xây dựng nên toàn bộ kiến trúc tổng quan cho thiết kế Nghĩa là trong bước này người thiết kế kiến trúc phải mô tả được những vấn đề sau:

• Thiết kế có những khối nào?

• Mỗi khối có chức năng gì?

• Hoạt động của thiết kế và của mỗi khối ra sao ?

Trang 17

• Phân tích các kỹ thuật sử dụng trong thiết kế và các công cụ, phần mềm

hỗ trợ thiết kế

Một thiết kế có thể được mô tả sử dụng ngôn ngữ mô tả phần cứng, như VHDL hay Verilog HDL hoặc có thể mô tả qua bản vẽ mạch (schematic capture) Một thiết kế có thể vừa bao gồm bản vẽ mạch mô tả sơ đồ khối chung, vừa có thể dùng ngôn ngữ HDL để mô tả chi tiết cho các khối trong sơ đồ

Hình 1.3 Sơ đồ quy trình thiết kế FPGA

> Mô phỏng chức năng (Function simulation):

Sau khi mô tả thiết kế, người thiết kế cần mô phỏng tổng thể thiết kế về

Trang 18

mặt chức năng để kiểm tra thiết kế có hoạt động đúng với các chức năng yêu cầu

> Tổng hợp logic (Logic Synthesis)

Tổng hợp logic là quá trình tổng hợp các mô tả thiết kế thành sơ đồ bố trí mạch (netlist) Quá trình chia thành 2 bước: chuyển đổi các mã RTL, mã HDL thành mô tả dưới dạng các biểu thức đại số Boolean và dựa trên các biểu thức này kết hợp với thư viện tế bào chuẩn sẵn có để tổng hợp nên một thiết kế tối ưu

> Hiệu chỉnh các kết nối (Datapath Schematic)

Nhập netlist và các ràng buộc về thời gian vào một công cụ phân tích thời gian (timing analysic) Công cụ phân tích này sẽ tách rời tất cả các kết nối của thiết kế, tính thời gian trễ của các kết nối dựa trên các ràng buộc Dựa trên kết quả phân tích (report) của công cụ phân tích, xác định các kết nối không thỏa mãn về thời gian Tùy theo nguyên nhân dẫn đến không thỏa mãn mà ta có thể viết lại mã

và tiến hành lại tổng hợp logic hoặc hiệu chỉnh lại các ràng buộc

Thực thi (Implementation)

Ta đã có sơ đồ bố trí netlist mô tả tổng thể thiết kế tại mức cổng (chỉ gồm các cổng logic cơ bản và các mạch logic khác như: MUX) Quá trình này sẽ đặt

sơ đồ netlist này lên chip, gọi là quá trình thực thi (Device Implementation)

Quá trình này gồm các bước:

> Ánh xạ (mapping hay còn gọi fitting - ăn khớp) : chuẩn bị dữ liệu đầu

vào, xác định kích thước các khối Các khối này sẽ phải phù hợp với cấu trúc của

1 tế bào cơ bản của FPGA (gồm nhiều cổng logic) và đặt chúng vào các vị trí tối

ưu cho việc chạy dây

> Đặt khối và định tuyến (Place & Route):

Đặt khối: đặt các khối ánh xạ vào các tế bào (cell) ở vị trí tối ưu cho việc chạy dây

• Định tuyến: Bước này thực hiện việc nối dây các tế bào Để thực hiện việc này, chúng ta cần có các thông tin sau:

+ Các thông tin vật lý về thư viện tế bào, ví dụ kích thước tế bào, các điểm

để kết nối, định thời, các trở ngại trong khi đi dây

+ Một netlist được tổng hợp sẽ chỉ ra chi tiết các instance và mối quan hệ kết nối bao gồm cả các đường dẫn bị hạn chế trong thiết kế

Trang 19

+ Tất cả các yêu cầu của tiến trình cho các lớp kết nối, bao gồm các luật thiết kế cho các lớp chạy dây, trở kháng và điện dung, tiêu thụ năng lượng, các luật về sự dẫn điện trong mỗi lớp

Quá trình Nạp (download) và lập trình (program)

• Sau quá trình thực hiện, thiết kế cần được nạp vào FPGA dưới dạng dòng bit (bit stream)

• Quá trình nạp thiết kế (download) vào FPGA thường nạp vào bộ nhớ bay hơi, ví dụ như SRAM Thông tin cấu hình sẽ được nạp vào bộ nhớ Dòng bit được truyền lúc này sẽ mang thông tin định nghĩa các khối logic cũng như kết nối của thiết kế Tuy nhiên, lưu ý rằng, SRAM sẽ mất dữ liệu khi mất nguồn nên thiết

kế sẽ không lưu được đến phiên làm việc kế tiếp

• Lập trình (program) là thuật ngữ để mô tả quá trình nạp chương trình cho các bộ nhớ không bay hơi, ví dụ như PROM Như vậy, thông tin cấu hình vẫn

sẽ được lưu trữ khi mất nguồn

1.5 Ngôn ngữ lập trình trong FPGA

Có nhiều ngôn ngữ có thể lập trình cho FPGA như VHDL, Verilog, C, Mỗi ngôn ngữ lại có ưu điểm và nhược điểm riêng Ví dụ như Verilog là ngôn ngữ được phát triển và sử dụng chủ yếu ở Mỹ Đây là ngôn ngữ rất gần với C, chính vì vậy sẽ rất thuận tiện cho ai đó đã quen với lập trình ngôn ngữ C Ở châu

Âu thì người ta lại quen dùng VHDL hơn, ưu điểm của ngôn ngữ này giúp người làm việc với nó sẽ có cái nhìn rất thấu đáo về phần cứng

1.5.1 Ngôn ngữ Verilog

> Behavior Modeling: là một thành phần được mô tả bởi đáp ứng

Input/output của nó

> Structural Modeling: là một thành phần được mô tả bởi các kết nối mức

thấp giữa các thành phần con của mạch

Trong Behavior Modeling, bạn sẽ mô tả chức năng của mạch chứ không phải cấu trúc của mạch Hành vi output được mô tả theo mối quan hệ với các input Phía dưới là một ví dụ về HDL code hướng hành vi Ở đây, mô tả thao tác dịch bit Kiểu mô hình này dựa vào synthesis engine để tạo ra mạch thực hiện đúng như hành vi đã được mô tả

Trang 20

cả mô hình hướng hành vi và mô hình hướng cấu trúc

Hình 1.4 Mô hình cấu trúc mô tả kết nối các thực thể

Hình dưới minh hoạ tiến trình tổng hợp RTL Ở bước đầu tiên, synthesis engine chuyển đổi code của bạn thành phần cứng bằng cách sử dụng các thành phần kiến trúc được có sẵn trong thư viện Sau đó nó sẽ đến bước tối ưu hoá để đảm bảo bạn có mô tả mạch có thể hiện thực tốt nhất

Xem xét một ví dụ bên dưới, khi người kỹ sư viết mô tả cho một mạch như bên dưới (mã verilog), thì sau đó các công cụ synthesis đầu tiên sẽ tổng hợp ra một mạch với các thành phần có sẵn trong thư viện, bước kế tiếp là các công cụ synthesis sẽ sử dụng các thuật toán tối ưu dựa trên các ràng buộc mà người kỹ sư

Trang 21

đưa vào để tối ưu lại mạch như trong Hình1.5, dễ dàng nhận ra đoạn mã Verilog trên mô tả cho một bộ MUX như hình bên dưới

Trang 22

Hình 1.5 Mô hình bộ dồn kênh

Trong ví dụ này, câu lệnh case được thực thi trong một khối always điển hình cho một multiplexer Phần dưới em sẽ trình bày rõ về những loại cấu trúc như thế

Mô hình Verilog được viết có thể được gửi thông qua 2 nhánh khác nhau, synthesis hoặc simulation Theo synthesis flow, trình biên dịch synthesis (ví dụ Synplify của Synopsys hay Native Synthesis Engine của Altera) sẽ sử dụng công nghệ có sẵn trong thư viện thiết bị để chuyển đổi và tối ưu hoá mô hình Veril của bạn thành một công nghệ netlist cụ thể mà có thể được sử dụng cho Timing Analysis hay P&R cho thiết bị cụ thể Theo simulation flow, sử dụng cho ví dụ Mentor Graphics Modelsim, trình biên dịch simulation sẽ mô phỏng mô hình Verilog với các bổ sung được cung cấp từ Verilog testbench hay thông qua các test vector Hầu hết các synthesis tool cũng xuất ra một tập tin post-synthesis Verilog sao cho các kỹ sư có thể kiểm tra kế quả synthesis trước khi thực hiện việc sắp xếp và đi dây (P&R) Trong trường hợp này, tập tin Verilog được xuất ra bởi synthesis tool đều có thể thay thế tập tin Verilog ban đầu trong trình mô phỏng Testbench và test vector có thể được sử dụng cho việc kiểm tra này Thêm vào

đó, các tập tin mô hình simulation có thể được yêu cầu phụ thuộc vào synthesis tool Chúng có thể được cung cấp bởi nhà cung cấp synthesis tool hoặc được tạo bởi synthesis tool cùng với mô hình p

Trang 23

1.6 Tổng quan về KIT ZC706 Zynq-7000 XC7Z045-2FFG900C AP SoC

Sơ đồ khối và bảng các thành phần của KIT ZC706

Sơ đồ khối mô tả ZC706 được hiển thị trong Hình 1.6

Hình 1.6 Sơ đồ khối mô tả ZC706

Hình 1.7 Các vị trí thành phần của Bảng thành phần ZC706

Trang 24

5

Giao diện thẻ SD, trang 29 Đầu nối

giao diện thẻ SD (J30) Molex 67840-8001

6

Bộ thu phát USB 2.0 ULPI

Giao diện USB JTAG w / Đầu nối

Chương trình I2C Đồng hồ người

dùng 3,3V LVDS (U37, dưới cùng của

bảng)

SI570BAB0000544DG, mặc định 156.250 MHz

9

Nguồn đồng hồ SMA của người dùng

Đồng hồ SMA khác biệt người dùng P

/ N (J67 / J68)

Rosenberger 32K10K- 400L5

Trang 25

Đồng hồ SMA khác biệt GTX P / N

(J36 / J31)

11

Đồng hồ suy yếu Jitter

Đồng hồ suy yếu Jitter (U60, dưới

Đầu nối mô-đun SFP / SFP +

Đầu nối mô-đun SFP / SFP + (P2) Molex 74441-0010

16 TXX khác biệt SMA TX và RX P / N

(J35 / J34 và J32 / J33)

Rosenberger 32K10K- 400L5

17

Cầu nối USB-UART

Cầu nối USB-to-UART với đầu nối

Mini-B (U52, J21)

Cầu nối phòng thí nghiệm Silicon CP2103GM

18

Đầu ra video HDMI

Bộ điều khiển HDMI (U53), Đầu nối

video HDMI (P1)

Thiết bị tương tự ADV7511KSTZ-P,

Molex 500254-1927,

19

Bộ thu phát USB 2.0 ULPI

Bộ điều khiển USB 2.0 ULPI w /

Đầu nối Micro-B (U12, J2)

SMSC USB3320C-EZK

20 Xe buýt I2C

Xe buýt I2C MUX (U65, cuối bảng) TI PCA9548ARGER

21

Đèn LED người dùng Ethernet PHY

Đèn LED trạng thái Ethernet PHY

Trang 26

27 Công tắc trượt bật / tắt nguồn

Công tắc bật / tắt nguồn (SW1) C & K 1201M2S3AQE2

28

Chương trình_B Nút bấm

Nút ấn PROG (SW10)

E-Switch TL3301EF100QG

29

SoC MIO Cấu hình Công tắc DIP

(SW11)

5 cực 206-125 DPDT CTS

30 Đầu nối HPC J37, trang 65 Đầu nối

Quản lý điện năng

Hệ thống quản lý năng lượng (trên

cùng và dưới cùng của bảng)

TI UCD90120ARGC kết hợp với các bộ điều chỉnh khác nhau

34

Logic lập trình JTAG Chọn Switch

Công tắc nhúng cấu hình JTAG

(SW4)

C & K SDA02H1SBD 2 cực

35 Tiêu đề bay đầu JTAG (J62) 2x10 0,1 inch nam,

Samtec TST-110-01-G-D

36 Đầu nối PMBus có vỏ bọc 2x5 J4 ASSMAN HW10G-0202

37 2x7 2 mm kết nối cáp JTAG J3 MOLEX 87832-1420

38 Đầu nối 2x6 đầu vào 2x6 J22 MOLEX-39-30-1060

Trang 27

CHƯƠNG 2: TÌM HIỂU VỀ THUẬT TOÁN AES-CBC VÀ KHẢ NĂNG THỰC HIỆN THUẬT TOÁN AES TRÊN FPGA 2.1 Cơ sở lý thuyết của thuật toán mã hóa AES-CBC

2.1.1 Tiêu chuẩn mật mã hóa tiên tiến - Advanced Encrytion Standard (AES)

Thuật toán AES được khuyến nghị bởi Viện tiêu chuẩn và công nghệ quốc gia Hoa Kỳ - National Institute of Standards and Technology (NIST) Phần này

sẽ cung cấp mô tả tổng quan của thuật toán AES được định nghĩa bởi NIST

Cấu trúc thiết kế của AES là mạng thay thế - hoán vị (SPN: Substitution - Permutation Network) AES làm việc với từng khối dữ liệu đầu vào (data block)

cố định là 128 bit, tức 4x4 byte Thuật toán AES hỗ trợ các độ dài khóa là: 128 bit, 192 bit, và 256 bit Độ dài khóa khác nhau sẽ dẫn tới số vòng (số chu trình) thực hiện cũng sẽ khác nhau như trong bảng 1.1 sau:

Bảng 2.1 Các thông số của thuật toán AES

Mục đích của thuật toán AES là mã hóa thông tin của khối dữ liệu đầu vào,

và ẩn đi tính tương quan giữa khối dữ liệu đầu vào, khóa, và khối dữ liệu đầu ra

Về cơ bản, AES gồm hai hàm toán học chính: AESenc dùng cho mã hóa, và AESdecdùng cho quá trình giải mã, với quan hệ nghịch đảo:

AESenc -1= AESdec

AESenc có hai ngõ vào: Khối dữ liệu vào (D), khóa (K) Đầu ra của hàm (Q) là dữ liệu được mã hóa:

Q = AESenc(D,K)

Trang 28

AESdec có hai đầu vào : một khối dữ liệu đã được mã hóa (Q), và khóa

ngược (K-1) Đầu ra của hàm là khối dữ liệu (D):

D = AESdec(Q,K-1)

Cấu trúc tổng thể của thuật toán AES được biểu diễn như trong hình

2.1

Hình 2.1 Cấu trúc tổng thể thuật toán AES

2.Í.Í.Í Quá trình mã hóa AES

Quá trình mã hóa AES là một chuỗi tính toán ma trận được lặp lại 10, 12,

hoặc 14 lần (phụ thuộc vào độ dài Khóa mật mã), các lần lặp được gọi

Trang 29

là các vòng Mã hóa AES bao gồm một chuỗi các thủ tục biến đổi ma trận, được thực hiện xoay vòng (với số vòng phụ thuộc độ dài khóa), sử dụng một khóa mở rộng gồm có mảng một chiều của Từ - 4 byte là kết quả của quá trình Mở rộng khóa

Hình 2.2 Mô tả quá trình mã hóa AES

Có 4 thủ tục biến đổi:

Thủ tục biến đổi AddRoundKey()

AddRoundKey() thực hiện trên một ma trận 4x4 byte và một khóa đầu vào 128 bit Thủ tục thực hiện phép XOR từng bit giữa ma trận và khóa đầu vào Trong đó, khóa được chuyển đổi thành dạng ma trận trước khi tiến hành phép XOR, bằng cách đặt 4 byte đầu tiên vào cột 0, 4 byte kế tiếp vào cột 1, Thủ tục biến đổi AddRoundKey() được minh họa như hình 2.3

Bàn mà

Quá trình mớ rộng khữú

* AddRữundKeyị)

Bàn gốc

■4 AddRoundKeyi) k

SubBytesị) ShiftRowsQ

MixCơỉumnsị)

Trang 30

Thủ tục biến đổi SubBytes()

Thủ tục biến đổi SubBytes() là một thủ tục thay thế byte không tuyến tính, thông qua một bảng tra gọi là Hộp S Hình 1.4 biểu diễn thủ tục chuyển đổi SubBytes()

Hình 2.4 Thủ tục biến đổi SubBytes()

Hộp S sử dụng cho quá trình mã hóa được gọi là Hộp S thuận Hộp S thuận được viết dưới dạng Hexadecimal như trong bảng 1.2

Phương pháp tra Hộp S như sau:

Giả sử x là giá trị 4 bit MSB và y là giá trị của 4 bit LSB trong một byte

Ví dụ: si,i = {53} thì: x = 5 và y = 3

Giá trị đầu ra thu được sẽ nằm ở hàng x và cột y trong bảng tra Hộp S, ở ví dụ này là {ed}

Trang 31

Thủ tục biến đổi ShiftRows()

Thủ tục biến đổi ShiftRows() thực hiện trên một khối ma trận đầu vào 4x4 byte, tiến hành như một chuỗi dịch vòng sang trái trên mỗi hàng: hàng 0 không thay đổi, hàng 1 dịch vòng 1 lần, hàng 2 dịch vòng sang trái 2 lần, và hàng 3 được dịch vòng 3 lần Hoạt động này được mô tả như trong hình 2.5

Hình 2.5 Thủ tục biến đổi ShiftRows()

Trang 32

Thủ tục biến đổi MixColumns()

Thủ tục biến đổi MixColumns() cũng thực hiện với đầu vào là một ma trận 4x4 byte, tiến hành một phép nhân ma trận cho từng cột với một véc-tơ hằng số Ý tưởng phía sau phép nhân ma trận này là mỗi cột được đối xử như một đa thức bốn số hạng, nhân với một đa thức hằng a(x) Đa thức hằng được định nghĩa bởi NIST như sau:

ư(%) = {03}% 3 + {01}% 2 + {01}% + {02}

Phép nhân ma trận cho mỗi cột được biểu diễn như hình 2.6, với c là số thứ tự của cột (0 - 3)

Hình 2.6 Phép nhân ma trận trong thủ tục biến đổi MixColumns()

2.Í.Í.2 Quá trình giải mã AES

Quá trình giải mã AES cũng là một chuỗi các thủ tục biến đổi ma trận tương tự như Mã hóa AES Tuy nhiên, các thủ tục biến đổi nghịch đảo về mặt toán học và được thực hiện theo thứ tự ngược lại

Hình 2.7 Mô tả quá trình giải mã AES

Quá trình giải mã AES cũng có 4 thủ tục biến đổi:

Đúng Bán rõ

ỉnvMixCoỉumnsCì * “

*• In vShifíRowsị}

Trang 33

Thủ tục biến đổi AddRoundKey()

Thủ tục biến đổi AddRoundKey() trong trường hợp Giải mã chỉ khác trường hợp Mã hóa ở tham số đầu vào cho phép toán XOR Ở đây, các khóa vòng có thứ tự ngược lại với quá trình Mã hóa như biểu diễn trong hình 2.7

Thủ tục biến đổi InvShiftRows()

Thủ tục biến đổi InvShiftRows() là nghịch đảo của thủ tục biến đổi ShiftRows() InvShiftRows() tiến hành dịch vòng sang phải trên mỗi hàng của

ma trận đầu vào 4x4 byte: hàng 0 không thay đổi, hàng 1 dịch vòng phải 1 lần, hàng 2 dịch vòng phải 2 lần, và hàng 3 dịch vòng phải 3 lần

Thủ tục biến đổi InvSubBytes()

Thủ tục biến đổi InvSubBytes() là nghịch đảo của thủ tục biến đổi SubBytes() Nội dung của Hộp S đảo được chỉ ra bởi NIST, hoặc cũng có thể được suy ra từ Hộp S thuận trong bảng 2.2 Ví dụ như giá trị {53}, sau khi tra Hộp S thuận, ta được kết quả {ed}, thì ngược lại, nếu giá trị vào Hộp S đảo là {ed} thì giá trị đầu ra dưới dạng Hexadecimal sẽ là {53} Hộp S đảo được trình bày như trong bảng 2.3

Trang 34

Thủ tục biến đổi InvMixColumns()

Thủ tục biến đổi InvMixColumns() là nghịch đảo của thủ tục biến đổi

MixColumns() Ở đây, đa thức hằng được sử dụng là a-1(x) ) Đa thức hằng

được định nghĩa bởi NIST như sau:

Trang 35

2.1.1.3.Quá trình mở rộng khóa

Quá trình mở rộng khóa là nền tảng của thuật toán AES Ở mỗi vòng, khóa được thay đổi bằng việc mở rộng khóa, khóa sau khi thay đổi sẽ được sử dụng như là đầu vào của vòng kế tiếp Quá trình mở rộng khóa chia khóa thành các từ có độ dài 4 byte để xử lý Quá trình này bao gồm các phép biến đổi như: tra Hộp S cho mỗi từ 4 byte, dịch vòng trái từng byte, phép XOR giữa các từ, XOR với hằng số vòng (RCON) Kết quả là một mảng tuyến tính các từ 4 byte, gồm các Khóa vòng, gọi là Khóa mở rộng

Quá trình Mở rộng khóa trong thuật toán AES gồm các thủ tục biến đổi như sau:

Thiết lập ma trận khóa khởi tạo

Véc-tơ khóa đầu vào được chuyển đổi thành một ma trận khởi tạo gồm 4 hàng, số cột là 4, 6, hoặc 8 tùy thuộc vào độ dài của khóa là 128 bit, 192 bit, hay

256 bit Hình 2.10 mô tả việc thiết lập một ma trận khởi tạo 4x4 byte

Hình 2.10 Thiết lập ma trận khóa khởi tạo

Thủ tục biến đổi SubWord()

Thủ tục này tương tự như thủ tục biến đổi SubBytes() được đề cập bên trên nhưng đầu vào và đầu ra là các từ 4 byte

Thủ tục biến đổi RotWord()

Thủ tục biến đổi RotWord() thực hiện một phép dịch vòng sang trái của

từ 4 byte, như mô tả trong hình 2.11

Hình 2.11 Thủ tục biến đổi RotWord()

Trang 36

Cơ chế thực hiện quá trình mở rộng khóa:

Gọi Nk là số cột của ma trận khóa Với Nk = 4, 6, từ kết quả được tạo ra bằng cách XOR từ đi trước liền kề và từ cách Nk từ kết quả Với Nk = 8, trong trường hợp 4 là số dư của số thứ tự của từ kết quả chia cho Nk, từ đi trước liền

kề được biến đổi SubWord() trước khi thực hiện XOR Tuy nhiên, tại từ có số thứ tự chia hết cho Nk (số thứ tự đếm từ 0) thì từ kề trước đó phải trải qua các thủ tục biến đổi RotWord() và SubWord() rồi mới XOR với từ Hằng số vòng (RCON) thích hợp Các RCON được mô tả trong bảng 2.4 bên dưới Sau đó, thực hiện phép XOR với từ cách Nk trước đó

Jtaw[10] 36// 00/7 00/7 00/7

Trang 37

Hình 2.12 biểu diễn Quá trình mở rộng khóa cho khóa đầu vào có độ dài

128 bit (Nk = 4)

Hình 2.12 Cơ chế thực hiện quá trình mở rộng khóa trong thuật toán

AES với độ dài khóa 128 bit

2.1.2 Chế độ xích liên kết khối mã - Cipher Block Chaining (CBC)

Trong thuật toán CBC, bản mã của một lần mã hóa sẽ được sử dụng ở lần

mã hóa tiếp theo Để mã hóa cho khối dữ liệu đầu tiên, người ta dùng một khối

dữ liệu giả, được chọn ngẫu nhiên gọi là véc-tơ khởi tạo - Initiator Vector (IV) Bên mã hóa và bên giải mã phải sử dụng chung một véc-tơ khởi

Ngày đăng: 21/08/2023, 08:22

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] National Institute of Standards and Technology (NIST), "Advanced Encryption Standard (AES)," FIPS Publication 197, November 2001.http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf Sách, tạp chí
Tiêu đề: Advanced Encryption Standard (AES)
Tác giả: National Institute of Standards and Technology (NIST)
Nhà XB: FIPS Publication 197
Năm: 2001
[2] TS. Nguyễn Khanh Văn, Giáo trình An toàn & Bảo mật Thông tin.: Viện CNTT-TT, Đại học Bách khoa Hà Nội, 2012 Sách, tạp chí
Tiêu đề: Giáo trình An toàn & Bảo mật Thông tin
[3] Trần Minh Văn, Bài giảng An toàn và Bảo mật thông tin.: Khoa CNTT, Đại học Nha Trang, 06/2008 Sách, tạp chí
Tiêu đề: Bài giảng An toàn và Bảo mật thông tin
[4] Gaj Kris and Chodowiec Pawel , "FPGA and ASIC Implementations of AES," in Cryptographic engineering. Boston: Springer, 2009, ch. 10, pp.235-294 Sách, tạp chí
Tiêu đề: Cryptographic engineering
Tác giả: Gaj Kris, Chodowiec Pawel
Nhà XB: Springer
Năm: 2009
[5] Ghada Farouk Naiem, Salwa Elramly, Bahaa Eldeen Hasan, and Kaled Shehata, "An Efficient Implementation of CBC Mode Rijndeal AES on an FPGA," March 2008 Sách, tạp chí
Tiêu đề: An Efficient Implementation of CBC Mode Rijndeal AES on an FPGA
[6] Marcio Juliato and Catherine Gebotys, "FPGA Implementation of an HMAC Processor based on the SHA-2 Family of Hash Functions," , 2011 Sách, tạp chí
Tiêu đề: FPGA Implementation of an HMAC Processor based on the SHA-2 Family of Hash Functions
Tác giả: Marcio Juliato, Catherine Gebotys
Năm: 2011
[7] Toke Herholdt Groth, "FPGA Optimization of Advanced Encryption Standard Algorithm for Biometric Images," Lulea University of Technology, Sweden, Master ‘s Thesis 2014 Sách, tạp chí
Tiêu đề: FPGA Optimization of Advanced Encryption Standard Algorithm for Biometric Images
[8] Dobre Blazhevski, Adrijan Bozhinovski, Biljana Stojchevska, Veno Pachovski, "MODES OF OPERATION OF THE AES ALGORITHM," The Sách, tạp chí
Tiêu đề: MODES OF OPERATION OF THE AES ALGORITHM
Tác giả: Dobre Blazhevski, Adrijan Bozhinovski, Biljana Stojchevska, Veno Pachovski

HÌNH ẢNH LIÊN QUAN

Hình 1.3. Sơ đồ quy trình thiết kế FPGA - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 1.3. Sơ đồ quy trình thiết kế FPGA (Trang 17)
Sơ đồ khối và bảng các thành phần của KIT ZC706 - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Sơ đồ kh ối và bảng các thành phần của KIT ZC706 (Trang 23)
Hình 2.1. Cấu trúc tổng thể thuật toán AES - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 2.1. Cấu trúc tổng thể thuật toán AES (Trang 28)
Hình 2.2. Mô tả quá trình mã hóa AES - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 2.2. Mô tả quá trình mã hóa AES (Trang 29)
Hình 2.15. Sơ đồ khối ví dụ thiết kế FPGA thực hiện thuật toán AES- - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 2.15. Sơ đồ khối ví dụ thiết kế FPGA thực hiện thuật toán AES- (Trang 40)
Hình 2.16. Sơ đồ khối khối AES Encryption trong thiết kế AES-CBC ví - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 2.16. Sơ đồ khối khối AES Encryption trong thiết kế AES-CBC ví (Trang 41)
Hình 2.17. Sơ đồ khối khối AES Decryption trong thiết kế AES-CBC ví - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 2.17. Sơ đồ khối khối AES Decryption trong thiết kế AES-CBC ví (Trang 42)
Hình 2.18. Sơ đồ khối khối Key Expansion trong thiết kế AES-CBC ví dụ - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 2.18. Sơ đồ khối khối Key Expansion trong thiết kế AES-CBC ví dụ (Trang 43)
Hình 3.4. Cấu trúc của module RoundRobinCrypto - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 3.4. Cấu trúc của module RoundRobinCrypto (Trang 49)
Hình 3.5. Máy trạng thái của module RoundRobinCrypto - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 3.5. Máy trạng thái của module RoundRobinCrypto (Trang 51)
Hình 3.6. Sơ đồ tín hiệu module AES-CBC-Encryption/AES-CBC- - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 3.6. Sơ đồ tín hiệu module AES-CBC-Encryption/AES-CBC- (Trang 54)
Hình 3.7. Sơ đồ khối chức năng của module AES-CBC-Encryp/Decryp - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 3.7. Sơ đồ khối chức năng của module AES-CBC-Encryp/Decryp (Trang 56)
Hình 3.8. Sơ đồ khối AES-Top - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 3.8. Sơ đồ khối AES-Top (Trang 57)
Hình 3.11. Sơ đồ khối AES Key RAM  3.3.  Kết quả mô phỏng và kiểm tra - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 3.11. Sơ đồ khối AES Key RAM 3.3. Kết quả mô phỏng và kiểm tra (Trang 70)
Hình 3.12. Mô hình kiểm thử lõi IP AES-CBC - Nghiên Cứu Thực Hiện Cài Đặt Thuật Toán  AES 256 Sử Dụng Công Nghệ FPGA
Hình 3.12. Mô hình kiểm thử lõi IP AES-CBC (Trang 72)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm