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

Xây dựng mã hóa AES bảo mật thông tin trên nền FPGA

73 3,1K 28

Đ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

Định dạng
Số trang 73
Dung lượng 3,9 MB

Nội dung

Các khái niệm và ký hiệu Các khái niệm và định nghĩa được sử dụng để trình bày về chuẩn mã hóa cao cấp: Biến đổi Affine Phép biến đổi bao gồm phép nhân với ma trận sau đó là phép cộng c

Trang 1

TRƯỜNG ĐẠI HỌC VINH

KHOA ĐIỆN TỬ - VIỄN THÔNG

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC

Đề tài:

XÂY DỰNG MÃ HÓA AES BẢO MẬT

THÔNG TIN TRÊN NỀN FPGA

Người hướng dẫn : ThS Nguyễn Anh Quỳnh Sinh viên thực hiện : Trần Văn Huân

Trang 2

MỤC LỤC

CÁC TỪ VIẾT TẮT TRONG ĐỒ ÁN 4

DANH MỤC HÌNH VẼ 5

DANH MỤC BẢNG BIỂU 7

LỜI MỞ ĐẦU 8

Chương 1 Phương pháp mã hóa AES 1.1 Giới thiệu về chuẩn mã hóa nâng cao AES 10

1.2 Các khái niệm và định nghĩa 11

1.2.1 Các khái niệm và ký hiệu 11

1.2.2 Các hàm và các tham số của thuật toán AES 12

1.3 Một số khái niệm toán học AES 14

1.3.1 Phép cộng 14

1.3.2 Phép nhân 14

1.3.3 Đa thức với hệ số trên GF(2 ) 16

1.4 Quy trình mã hóa AES 17

1.4.1 Phép biến đổi SubBytes 20

1.4.2 Phép biến đổi ShiftRows 22

1.4.3.Phép biến đổi MixColumns 23

1.4.4 Thao tác AddRoundKey 24

1.4.5 Thuật toán sinh khóa (Key Expansion) 25

1.5 Quy trình giải mã AES 27

1.5.1 Phép biến đổi InvShifRows 28

1.5.2 Phép biến đổi InvSuBytes 28

1.5.3 Phép biến đổi InvMixColumns 30

1.5.4 Thuật toán giải mã tương đương 33

Trang 3

Chương 2 TỔNG QUAN VỀ FPGA VÀ VHDL

2.1 Tổng quan về FPGA 33

2.2 Ứng dụng của FPGA 34

2.3 Kiến trúc FPGA 34

2.3.1 Kiến trúc của chíp FPGA 34

2.3.2 Đặc điểm hoạt động của FPGA 37

2.4 Thiết kế và lập trình FPGA 40

2.4.1 Thiết kế sử dụng sơ đồ 41

2.4.2 Sử dụng ngôn ngữ HDL 43

2.5 Virtex-4 LC System Board 44

2.5.1 Giới thiệu chung 44

2.5.2 Các chức năng của bo phát triển 46

Chương 3 MÃ HÓA AES TRÊN NỀN FPGA 3.1 Sơ đồ tổng quan của hệ thống AES 50

3.1.1 Mô tả lưu đồ tổng quát của bộ mã hóa và giải mã AES 50

3.1.2 Sơ đồ thuật toán khối Data của bộ mã hóa 51

3.1.3 Sơ đồ thuật toán của khối KeyExpansion 52

3.1.4 Sơ đồ thuật toán khối CPU 53

3.1.5 Sơ đồ thuật toán khối Data của bộ giải mã AES 53

3.2 Thiết kế chi tiết các khối chức năng của bộ mã hóa 54

3.2.1 Khối AddRoundKey 54

3.2.2 Khối SubByte 56

3.2.3 Khối ShiftRow 56

3.2.4 Khối MixColumn 58

3.3 Thiết kế các khối chức năng của bộ giải mã 60

Trang 4

3.3.1 Nhân với 09h 61

3.3.2 Phép nhân với 0Bh 61

3.3.2 Phép nhân với 0Dh 61

3.3.3 Phép nhân với 0Eh 62

3.4 Thiết kế chi tiết cho khối KeyExpansion 63

3.4.1 Khối RotWord 63

3.4.2 Khối SubWord 64

3.4.3 Khối Rcon 64

3.4.4 Khối KeyStorage 65

3.4.5 Khối DemuxKey 66

3.5 Khối diều khiển bộ giải mã và bộ giao tiếp với máy tính 67

3.5.1 Khối CPU - điều khiển bộ giải mã 67

3.5.2 Khối giao tiếp với máy tính 69

KẾT LUẬN 71

TÀI LIỆU THAM KHẢO 73

Trang 5

CÁC TỪ VIẾT TẮT TRONG ĐỒ ÁN

Từ viết tắt Nghĩa tiếng Anh Nghĩa tiếng Việt

FPGA Field Programmable Gates Array Mảng cổng lập trình

được dạng trường

ASIC Application Specific Integrated

Circuit

Vi mạch tích hợpchuyên dụngCPLD Complex Programmable Logic

Device

Linh kiện (thiết bị)lôgic phức hợp có thể

lập trình

AES Advanced Encryption Standard

SRAM Static Random Memory Access Ram tĩnh

HDL Hardware Description Language Ngôn ngữ mô tả phần

Circuits Các mạch tích hợp tốc

độ cao

PLD Programmable Logic Device

GPIO General Purpose IO Các chân vào ra thông

DES Data Encryption Standard

Tiêu chuẩn mã hóa dữ

liệu

Trang 6

DANH MỤC HÌNH VẼ

Hình 1.1 Các trạng thái của AES 18

Hình 1.2 Thao tác SubBytes tác động trên từng byte của trạng thái 21

Hình 1.3 Thao tác ShiftRows tác động trên từng dòng của trạng thái 22

Hình 1.4 Hàm ShiffRows() 23

Hình 1.5 Thao tác MixColumns tác động lên mỗi cột của trạng thái 24

Hình 1.6 Thao tác AddRoundKey tác động lên mỗi cột của trạng thái 25

Hình 1.7 SubWord 26

Hình 1.8 RotWord 26

Hình 1.9 Thao tác InvShiftRows tác động lên từng dòng của trạng thái hiện hành 28

Hình 2.1 Kiến trúc FPGA 29

Hình 2.2 Logic block 35

Hình 2.3 Vị trí các chân của Logic block 36

Hình 2.4 Kết nối các khối logic 37

Hình 2.5 Kết nỗi các khối logic với các chân I/O của FPGA 38

Hình 2.6 Các đường kết nối chuyên dụng tốc dộ cao 38

Hình 2.7 FPGA kết hợp với RAM trong 39

Hình 2.8 RAM hai cổng 39

Hình 2.9 Quá trình thiết kế PLD 42

Hình 2.10 Thiết kế bộ nhân sử dụng Sơ đồ và ngôn ngữ VHDL 43

Hình 2.11 Bo mạch Virtex-4 LC 46

Hình 2.12 Sơ đồ khối chức năng của Virtex-4 LC 47

Hình 2.13 Cổng cấu hình và nạp chương trình cho Virtex-4 47

Hình 2.14 Giao tiếp giữa Virtex-4 và cổng RS232 49

Hình 3.1 Sơ đồ khối tổng quát hệ thống AES 50

Hình 3.2 Sơ đồ thuật toán Khối data của bộ mã hóa 51

Hình 3.3 Sơ đồ thuật toán Khối KeyExpansion 52

Trang 7

Hình 3.4 Sơ đồ thuật toán khối CPU 53

Hình 3.5 Sơ đồ thuật toán khối giải mã - Dạng 1 54

Hình 3.6 Khối AddRoundKey 55

Hình 3.7 Sơ đồ thuật toán khối giải mã - Dạng 2 55

Hình 3.8 Khối SubByte 56

Hình 3.9 Khối ShiftRow 57

Hình 3.10 Khối MixColumn 58

Hình 3.11 Khối Xtime 59

Hình 3.12 Phép biến đổi theo dòng 60

Hình 3.13 Khối SubMixColumn 61

Hình 3.14 Khối nhân 09h 61

Hình 3.15 Khối nhân 0Bh 62

Hình 3.16 Khối nhân 0Dh 62

Hình 3.17 Phép nhân 0Eh 63

Hình 3.18 Khối InverseMixColumn 63

Hình 3.19 Sơ đồ khối KeyExPansion 63

Hình 3.20 Khối RotWord 64

Hình 3.21 Khối SubWord 65

Hình 3.22 Khối Rcon 66

Hình 3.23 Khối KeyStorage 66

Hình 3.24 Khối DemuxKey 67

Hình 3.25 Khối CPU 67

Hình 3.26 Giản đồ thời gian điều khiển vòng key 68

Hình 3.27 Giản đồ thời gian điều khiển vòng data 68

Hình 3.28 Sơ đồ khối giao tiếp với máy tính 70

Trang 8

DANH MỤC BẢNG BIỂU

Bảng 1.1 Quy ước một số từ viết tắt và thuật ngữ của AES 12

Bảng 1.2 Các hàm, ký hiệu và các tham số của thuật toán AES 13

Bảng 1.3 Bảng độ dài khóa của AES 19

Bảng 1.4 Bảng thế S-Box của AES 22

Bảng 1.5 Bảng thế cho hàm InvSByte 29

Bảng 2.1 Sơ đồ chân LED 48

Bảng 2.2 Sơ đồ phím bấm 48

Bảng 2.3 Sơ đồ công tắc 48

Bảng 2.4 Giao tiếp với RS232 48

Bảng 2.5 Màn hình LCD 49

Trang 9

LỜI MỞ ĐẦU

Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sửdụng ngày càng phổ biến trong các lĩnh vực khác nhau trên thế giới, từ các lĩnhvực an ninh, quân sự, quốc phòng cho đến các lĩnh vực dân sự như thương mạiđiện tử, ngân hàng… Với sự phát triển ngày càng nhanh chóng của Internet vàcác ứng dụng giao dịch điện tử trên mạng, nhu cầu bảo vệ thông tin trong các hệthống và ứng dụng điện tử ngày càng được quan tâm và có ý nghĩa hết sức quantrọng Các ứng dụng mã hóa thông tin cá nhân, trao đổi thông tin kinh doanh,thực hiện các giao dịch điện tử qua mạng đã trở nên gần gũi và quen thuộc vớimọi người Cùng với sự phát triển của khoa học máy tính và Internet, các nghiêncứu và ứng dụng của các chuẩn mã hóa ngày càng trở nên đa dạng hơn, Có rấtnhiều chuẩn mã hóa đang được áp dụng trên thế giới như RSA, SHA, RC4/RC5,DES, Triple-DES, và nhìn chung các chuẩn mã hóa chỉ có hiệu lực trong mộtkhoảng thời gian nhất định Chuẩn mã hóa AES được viện tiêu chuẩn công nghệQuốc gia Hoa Kì NIST thông qua năm 2001 để thay thế cho DES có nguy cơ bịsụp đổ Công nghệ mã hóa có thể được thực hiện trên phần mềm, trên phần cứnghoặc kết hợp cả phần cứng và phần mềm Các bộ mã hóa thực hiện trên phầncứng có khả năng chống tấn công cao hơn so với phần mềm do đó nó ngày càngtrở nên phổ biến trên thế giới Mục đích của đồ án là sử dụng vi mạch khả trìnhFPGA để thực thi bộ mã hóa tiêu chuẩn nâng cao AES FPGA được ứng dụngđiển hình trong các lĩnh vực như: xử lý tín hiệu số, xử lý ảnh, thị giác máy, nhậndạng giọng nói, mã hóa, mô phỏng (emulation)

Nội dung đồ án bao gồm 3 chương:

 Chương 1 Chuẩn mã hóa nâng cao AES

 Chương 2 Tổng quan về FPGA và VHDL

Trang 10

 Chương 3 Mã hóa AES trên nền FPGA

FPGA đặc biệt mạnh trong các lĩnh vực hoặc ứng dụng mà kiến trúc của

nó yêu cầu một lượng rất lớn xử lý song song, đặc biết là mã hóa và giải mã.FPGA là một công nghệ ngày càng được phát triển trong khắp các lĩnh vực côngnghệ do các ưu điểm nổi trội của nó mang lại

Em xin chân thành cảm ơn thầy giáo Th.s Nguyễn Anh Quỳnh đã giúp

đỡ em tận tình trong quá trình thực hiện đồ án này

Vinh, tháng 1 năm 2012 Trần Văn Huân

Trang 11

Chương 1 CHUẨN MÃ HÓA NÂNG CAO AES 1.1 Giới thiệu về chuẩn mã hóa nâng cao AES

Chuẩn mã hóa dữ liệu cao cấp AES (Advanced Encryption Standard) làmột hệ mã khóa bị mật có tên là Rijdael (do hai nhà mật mã học người Bỉ làJoan Daemen và Vincent Rijmen đưa ra và trở thành chuẩn từ năm 2002) chophé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 Hệ mã Rijdael được thiết kế để có thể làm việc vớicác khóa và các khối dữ liệu có độ dài lớn hơn tuy nhiên khi được chọn là mộtchuẩn do Ủy ban tiêu chuẩn của Hoa Kỳ đưa ra năm 2001, nó được qui định chỉlàm việc với các khối dữ liệu 128 bit và các khóa có độ dài 128, 192 hoặc 256bit (do đó còn đặt cho các tên AES-128, AES-192, AES-256 tương ứng với độdài khóa sử dụng) Chuẩn AES bao gồm các yêu cầu sau:

 Thuật toán mã hóa theo khối 128 bit

 Chiều dài khóa 128 bit, 192 bit và 256 bit

 Không có khóa yếu

 Hiệu quả trên hệ thống Intel Pentium Pro và trên các nền phần cứng vàphần mềm khác

 Thiết kế dễ dàng (hỗ trợ chiều dài khóa linh hoạt, có thể triển khai ứngdụng rộng rãi trên các nền và các ứng dụng khác nhau)

 Thiết kế đơn giản: phân tích đánh giá và cài đặt dễ dàng

 Chấp nhận bất kỳ chiều dài khóa lên đến 256 bit

 Mã hóa dữ liệu thấp hơn 500 chu kỳ đồng hồ cho mỗi khối trênIntel Pentium, Pentium Pro và Pentium II đối với phiên bản tối ưu củathuật toán

 Có khả năng thiết lập khóa 128 bit (cho tốc độ mã hóa tối ưu) nhỏ hơnthời gian đòi hỏi để mã hóa các khối 32 bit trên Pentium, Pentium Pro vàPentium II

Trang 12

 Không chứa bất kỳ phép toán nào làm nó giảm khả năng trên các bộ vi xử

lý 8 bit, 16 bit, 32 bit và 64 bit

 Không bao hàm bất kỳ phần tử nào làm nó giảm khả năng của phần cứng

 Thời gian mã hóa dữ liệu rất thấp dưới 10/1000 giây trên bộ vi xử lý 8 bit

 Có thể thực hiện trên bộ vi xử lý 8 bit với 64 byte bộ nhớ RAM

1.2 Các khái niệm và định nghĩa

1.2.1 Các khái niệm và ký hiệu

Các khái niệm và định nghĩa được sử dụng để trình bày về chuẩn mã hóa cao cấp:

Biến đổi Affine Phép biến đổi bao gồm phép nhân với ma trận sau

đó là phép cộng của một vectơBit Một số nhị phân nhận giá trị 0 hoặc 1

Block Một dãy các bit nhị phân tạo thành input, output,

trạng thái (state) và các khóa sử dụng tại các vòng lặp (Round Key) của hệ mã Độ dài của dãy (khối)

là số lượng các bit mà nó chứa Các khối cũng có thể được xem là một dãy các byte

Cipher key Khóa của hệ mã, có thể được biểu diễn dưới dạng

một mảng 2 chiều gồm 4 hàng và Nk cột

Inverse Cipher Thuật toán giải mã

Thủ tục sinh khóa (key

Expansion)

Thủ tục được sử dụng để sinh ra các khóa sử dụng tại các vòng lặp của thuật toán mã hóa, giải mã từ khóa chính ban đầu

Round Key Là các giá trị sinh ra từ khóa chính bằng cách sử

dụng thủ tục sinh khóa Các khóa này được sử dụng tại các vòng lặp của thuật toán

Trạng thái (state) Các giá trị mã trung gian có thể biều diễn dưới dạng

một mảng 2 chiều gồm 4 hàng và Nb cộtS-box Một bảng phi tuyến được sử dụng trong thủ tục sinh

Trang 13

khóa và trong các biến đổi thay thế các byte để thực hiện các thay thế 1-1 đối với một giá trị 1 byte

Word Một nhóm 32 bit có thể được xem như 1 đơn vị tính

toán độc lập hoặc là một mảng 4 byteBảng 1.1 Quy ước một số từ viết tắt và thuật ngữ của AES

1.2.2 Các hàm và các tham số của thuật toán AES

Các tham số thuật toán, các ký hiệu và các hàm sử dụng trong mô tả thuật toán :

AddRoundkey() Hàm biến đổi được sử dụng trong thuật toán mã hóa và giải

mã trong đó thực hiện phép toán XOR bit giữa một trạng tháitrung gian (state) và một khóa của vòng lặp (Round key) Kích thước của một Round key bằng kích thước của trạng thái (chẳng hạn với Nb = 4 độ dài của một Round Key sẽ là

128 bit hay 16 byte)InvMixcolumns() Hàm biến đổi được sử dụng trong thuật toán giải mã, là hàm

ngược của hàm MixColumns()InvShiftRows() Hàm biến đổi trong thuật toán giải mã, là hàm ngược của

hàm ShiftRows()InvSubBytes() Hàm biến đổi trong thuật toán giải mã, là hàm ngược của

hàm SubBytes()

MixColumns() Hàm biến đổi trong thuật toán mã hóa nhận tất cả các cột của

một trạng thái (state) và trộn với dữ liệu của nó (không phụ thuộc lẫn nhau) để nhận được một cột mới

Nb Số lượng các cột (là các Word 32 bit) tạo thành một trạng

thái, Nb = 4

Nk Số lượng các word 32 bit tạo thành khóa mã hóa K (Nk và

Nb (là các giá trị cố định) (Nr = 10, 12 hoặc 14 tương ứng với các giá trị khác nhau của Nk)

Rcon[] Mảng Word hằng số sử dụng trong các vòng lặp

RotWord() Hàm sử dụng trong thủ tục sinh khóa nhận một word 4 –

Trang 14

byte và thực hiện một hoán vị vòngShiftRows() Hàm sử dụng trong quá trình mã hóa, xử lý các trạng thái

bằng cách dịch vòng ba hàng cuối của trạng thái với số lần dịch khác nhau

SubBytes() Hàm sử dụng trong quá trình mã hóa, xử lý các trạng thái

bằng cách sử dụng một bảng thế phi tuyến các byte (S-box) thao tác trên mỗi byte một cách độc lập

Subword() Hàm sử dụng trong thủ tục sinh khóa nhận một word input

4-byte và sử dụng một S–box trên mỗi giá trị 4-4-byte này để thuđược 1 word output

XOR Phép toán or bit tuyệt đối

⊕ Phép or bit tuyện đối

⊗ Phép nhân hai đa thức (mỗi đa thức có bậc < 4) modulo cho

đa thức ( x +1)

 Phép nhân trên trường hữu hạn

Bảng 1.2 Các hàm, ký hiệu và các tham số của thuật toán AES

1.3 Một số khái niệm toán học

Đơn vị thông tin được xử lý trong thuật toán AES là byte Mỗi bytexem như một phần tử của trường Galois GF(2) được trang bị phép cộng (ký hiệu

⊕) và phép nhân (ký hiệu •) Mỗi byte có thể được biểu diễn bằng nhiềucách khác nhau: dạng nhị phân (b b b b b b b b), dạng thập lục phân (hh) hay

dạng đa thức có các hệ số nhị phân b x

1.3.1 Phép cộng

Phép cộng hai phần tử trên GF(2) được thực hiện bằng cách “cộng” (thựcchất là phép toán XOR, ký hiệu ⊕) các hệ số của các đơn thức đồng dạng củahai đa thức tương ứng với hai toán hạng đang xét Như vậy, phép cộng và phéptrừ hai phần tử bất kỳ trên GF(2 ) là hoàn toàn tương đương nhau Nếu biểu diễn

Trang 15

lại các phần tử thuộc GF(2 ) dưới hình thức nhị phân thì phép cộng giữa {a a a a

a a a a }với{ b b bb b b b b } là {c c c c c c c c } với c = a b, 0≤ i ≤ 7

Ví dụ : ‘57’+‘83’ = “01010111”"10000011” = “11010100” = ‘D4’.1.3.2 Phép nhân

Khi xét trong biểu diễn đa thức, phép nhân trên GF(2 ) (ký hiệu •) tươngứng với phép nhân thông thường của hai đa thức đem chia lấy dư (modulo) chomột đa thức tối giản bậc 8 Đa thức được gọi là tối giản khi và chỉ khi đa thứcnày chỉ chia hết cho 1 và chính mình Đa thức tối giản được chọn là :

Trang 16

là xtime() Phép nhân với các lũy thừa của x có thể được thực hiện bằng cách ápdụng nhiều lần thao tác xtime() Kết quả của phép nhân với một giá trị bất kỳđược xác định bằng cách cộng () các kết quả trung gian này lại với nhau Khi

đó, việc thực hiện phép nhân giữa hai phần tử a, b bất kỳ thuộc GF(2 ) có thểđược tiến hành theo các bước sau:

1 Phân tích một phần tử (giả sử là a) ra thành tổng của các lũy thừa của 2

2 Tính tổng các kết quả trung gian của phép nhân giữa phần tử còn lại (là b)với các thành phần là lũy thừa của 2 được phân tích từ a

nhau: a( x ) + b( x ) = (a b ) x

Trang 17

Phép nhân giữa a(x) với b(x) được thực hiện thông qua hai bước Trước tiên,

thực hiện phép nhân thông thường c(x) = a( x )b( x ).

c( x ) = c x +c x +c x +c x +c x +c x +c

Với c = a • b c = a • ba •b c =a•b a•ba•b

c= a• ba •b a•ba•b c = a•b a •b a •b

c = a •ba•b c = a •b

Rõ ràng là c( x ) không thể được biểu diễn bằng một từ gồm 4 byte Đa thức c( x ) có thể được đưa về một đa thức có bậc nhỏ hơn 4 bằng cách lấy c(x) modulo cho một đa thức bậc 4 Đa thức bậc 4 được chọn là M( x ) = x +1 Do x mod( x +1) = x nên kết quả d(x) = a( x )b( x ) được xác định bằng d( x ) = d x +d x +d x +d

Với d = a •b a•ba •b a•b

d = a•b a •ba•b a •b d = a •b a•ba •b a •b d = a•b a•ba•b a •b

Trong trường hợp đa thức a( x ) cố định, phép nhân d(x) = a( x )b( x ) có thể được biểu diễn dưới dạng ma trận như sau 

      3 2 1 0 d d d d =           0 1 2 3 3 0 1 2 2 3 0 1 1 2 3 0 a a a a a a a a a a a a a a a a         3 2 1 0 b b b b

Phép nhân với x Xét đa thức b( x ) = b x +b x +b x +b

Kết quả của phép nhân c(x) = b( x )x được xác định bằng

c( x )= b x +b x +b x +b

Phép nhân với x tương đương với phép nhân ở dạng ma trận như đã trình bày ở phần trên với các giá trị a= a = a = {00} và a = {01} 

      3 2 1 0 c c c c =                 1 00 01 00 00 00 00 01 00 00 00 00 01 01 00 00 00 b b

Trang 18

Như vậy, phép nhân với x hay các lũy thừa của x sẽ tương ứng với phép dịch

chuyển xoay vòng các byte thành phần trong một từ Trong thuật toán AES cần

sử dụng đến đa thức x (a = a = a ={00}và a ={01}) trong hàm RotWord nhằm

xoay vòng 4 byte thành phần của một từ được đưa vào Như vậy, nếu đưa vào

từ gồm 4 byte [b , b , b , b ] thì kết quả nhận được là từ gồm 4 byte [b , b , b , b]

1.4 Quy trình mã hóa AES

Phương pháp mã hóa AES bao gồm nhiều bước biến đổi được thực hiệntuần tự, kết quả đầu ra của bước biến đổi trước là đầu vào của bước biến đổi tiếptheo Kết quả trung gian giữa các bước biến đổi được gọi là trạng thái (state).Một trạng thái có thể được biểu diễn dưới dạng một ma trận gồm 4 hàng cácbyte với Nb bằng với độ dài của khối block chia cho 32 Mảng trạng thái ký

hiệu là s trong đó mỗi byte của mảng có 2 chỉ số hàng r (0 < r < 4 ) và cột c (0 <

c < Nb ) Với thuật toán AES thì độ dài của input block, output block và State là

128 bit Nên Nb = 4 (đây chính là số cột – số từ 32 bit) trong State Mã khóachính (Cipher Key) cũng được biểu diễn dưới dạng một ma trận gồm 4 dòng và

Nk cột với Nk bằng với độ dài của khóa chia cho 32

Tại thời điểm bắt đầu input của thuật toán mảng các byte in, in,…in đượccopy vào mảng trạng thái theo qui tắc được minh họa bằng hình vẽ:

s s0,1 s0,2 s0,3

0 , 1

s s1,1 s1,2 s1,3

0 , 2

s s2,1 s2,2 s2,3

0 ,

3

s s3 , 1 s3,2 s3,3

Trang 19

State sang đầu ra out[r + 4c] = s[r, c] với 0  r 4 à 0v  c Nb

Với thuật toán AES thì độ dài của input block, output block và State là 128 bit

Do đó Nb = 4 (đây chính là số cột – số từ 32 bit) trong State Theo chuẩn AES,

độ dài của từ khóa K có thể là 128, 192,hoặc 256 bit Độ dài của Key tương ứng

là Nk = 4,6, hoặc 8 ( chính số cột của từ khóa ), số vòng thực hiện mã hóa dữ liệu

của thuật toán sẽ phụ thuộc vào độ lớn của từ khóa Số vòng quay kí hiệu là Nr, với Nr = 10 khi Nk = 4, Nr = 12 khi Nk = 6, và Nr = 14 khi Nk = 8 Ta có

bảng độ dài khóa của AES

Key Length

(Nk words)

Block Size

(Nb words)

Number ofRounds

Trang 20

cũng như độ dài của khối được xử lý) Nr − 1 chu kỳ đầu tiên là các chu kỳ biếnđổi bình thường và hoàn toàn tương tự nhau, Riêng vòng cuối cùng có một sựkhác biệt so với các vòng trên đó là không thực hiện MixColumns() Cuối cùng,nội dung của mảng trạng thái sẽ được chép lại vào mảng chứa dữ liệu đầu ra.Quy trình mã hóa được tóm tắt lại như sau:

1 Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu kỳ

Trang 21

AddRoundKey() Vòng cuối cùng, bộ mã hóa chỉ thực hiện SubBytes(),ShiftRows() và AddRoundKey() mà không thực hiện MixColumns().

1.4.1 Phép biến đổi SubBytes

Thao tác biến đổi SubBytes là phép thay thế các byte phi tuyến và tácđộng một cách độc lập lên từng byte trong trạng thái hiện hành Bảng thay thế

(S-box) có tính khả nghịch và quá trình thay thế 1 byte x dựa vào S-box bao

gồm hai bước:

1 Xác định phần tử nghịch đảo x ∈ GF(2 ) Quy ước {00} = {00}.

2 Áp dụng phép biến đổi affine (trên GF(2)) đối với x (giả sử x có biểu diễn nhị phân là { x x x x x x x x }):

1 1 1 1 1 0 0 0

0 1 1 1 1 1 0 0

1 0 0 0 1 1 1 1

1 1 0 0 0 1 1 1

1 1 1 0 0 0 1 1

1 1 1 1 0 0 0 1

7 5 3 0

7 5 3 1

x x x x

y y y y

Hay y = x x xx x c

với c là bit thứ i của {63}, 0 ≤ i ≤ 7

Hình 1.2 Thao tác SubBytes tác động trên từng byte của trạng thái

Tuy nhiên việc tính toán subbyte với các phép biến đổi nói trên là rất phức tạpkhi thực hiện trên phần cứng Người ta đã chứng minh được rằng phép biến đổiSubbyte là khả nghịch có nghĩa là: Với một byte A cho trước tồn tại một và chỉ

Trang 22

một byte Y thỏa mãn B = subbyte(A) Do đó người ta đã đưa ra phương phápánh xạ đầu vào của phép biến đổi subbyte qua một bảng S-box (xây dựng theocác phép biến đổi trên) để tìm đầu ra Hình 1.2 thể hiện bảng thay thế S-boxđược sử dụng trong phép biến đổi SubBytes ở dạng thập lục phân.

Ví dụ: nếu giá trị {xy} cần thay thế là {53} thì giá trị thay thế S-box({xy}) được xác định bằng cách lấy giá trị tại dòng 5 cột 3 của Bảng Như vậy,S-box ({xy}) = {ed}

Bảng 1.4 Bảng thế S-Box của AES

1.4.2 Phép biến đổi ShiftRows

Hình 1.3 Thao tác ShiftRows tác động trên từng dòng của trạng thái

Trong thao tác biến đổi ShiftRows, mỗi dòng của trạng thái hiện hànhđược dịch chuyển xoay vòng đi một số vị trí Byte S tại dòng r cột c sẽ dịchchuyển đến cột (c - shift(r, Nb)) mod Nb hay:

Trang 23

S,r,c= S

Thao tác này sẽ chuyển các byte tới các vị trí thấp hơn trong các hàng, trong khibyte thấp nhất sẽ được chuyển lên đầu hàng Giá trị di số shift(r, Nb) phụ thuộcvào chỉ số dòng r khối dữ liệu Tất các mô tả có thể minh họa qua hình dưới

Hình 1.4 Hàm ShiffRows()

1.4.3.Phép biến đổi MixColumns

Trong thao tác biến đổi MixColumns, mỗi cột của trạng thái hiện hành

được biểu diễn dưới dạng đa thức s( x ) có các hệ số trên GF(2 ) Thực hiện phép

c c c c

s s s s

s s s s

, 3 , 2 , 1 , 0

, 3 , 2 , 1 , 0 ,

02 01 01 03

03 02 01 01

01 03 02 01

01 01 03 02

Trang 24

Hình 1.5 Thao tác MixColumns tác động lên mỗi cột của trạng thái

1.4.4 Thao tác AddRoundKey

Thuật toán AES bao gồm nhiều chu kỳ mã hóa liên tiếp nhau, mỗi chu kỳ

có một mã khóa riêng (Round Key) có cùng kích thước với khối dữ liệu đangđược xử lý và được phát sinh từ mã khóa chính (Cipher Key) cho trước ban đầu

Mã khóa của chu kỳ cũng được biểu diễn bằng một ma trận gồm 4 dòng và Nbcột Mỗi cột của trạng thái hiện hành được XOR với cột tương ứng của mã khóacủa chu kỳ đang xét:

s,0 ,c,s,1 ,c,s,2 ,c,s,3 ,c s0c,s1,c,s2,c,s3,cw round*Nbc với 0  c < Nb Trong đó [w] là các word của khóa và round là lần lặp tương ứng với qui ước 0

≤ round ≤ N Trong thuật toán mã hóa phép cộng khóa vòng khởi tạo xảy ra vớiround = 0 trước khi các vòng lặp của thuật toán được thực hiện HàmAddRoundKey() được thực hiện trong thuật toán mã hóa khi 1≤ round≤N Việcthực hiện của hàm này có thể minh họa hình vẽ trong đó l = round*Nb Thao tácbiến đổi ngược của AddRoundKey cũng chính là thao tác AddRoundKey

Trang 25

Hình 1.6 Thao tác AddRoundKey tác động lên mỗi cột của trạng thái

1.4.5 Thuật toán sinh khóa (Key Expansion)

Thuật toán sinh khóa của AES nhận một khóa mã K sao đó thực hiện mộtthủ tục sinh khóa để sinh một dãy các khóa cho việc mã hóa Thủ tục sẽ sinhtổng số Nb*(Nr + 1) word, thủ tục sử dụng một tập hợp khởi tạo Nb word vàmỗi một lần lặp lại trong số Nr lần sẽ cần tới word của dữ liệu khóa Dãy khóakết quả là một mảng tuyến tính các word 4- byte được ký hiệu là [w] trong đó 0≤

i < Nb(Nr +1) Sự mở rộng khóa thành được mô tả qua đoạn mã sau:

KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk)

temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]

else if (Nk > 6 and i mod Nk = 4)

temp = SubWord(temp)end if

w[i] = w[i-Nk] xor temp

i = i + 1

Trang 26

end while

end

 Subword là một hàm nhận input 4 - byte áp dụng bảng thế s - box lên input đểnhận được một word output Thực hiện thế byte bằng bảng S-box đối với cácbyte trong từ ( Phép biến đổi này tương tự SubByte( ) )

diễn dưới dạng {02} trên GF(2) và bắt đầu từ 1)

Theo đoạn mã trên chúng ta có thể nhận thấy rằng Nk word của khóa kết quả sẽđược điền khóa mã hóa Các word sau đó w[i] sẽ bằng XOR với word đứngtrước nó w[i - 1] với w[i - Nk] Với các word ở vị trí cho Nk một biến sẽ đượcthực hiện với w[i - 1] trước khi thực hiện phép XOR bit, sau đó là phép XORvới một hằng số Rcon[i] Biến đổi này gồm một phép dịch vòng các byte củamột word (RotWord(), sau đó là áp dụng một bảng tra lên tất cả 4 byte của wordSubWord()

Trang 27

Trên đây là các phép biến đổi cho quá trình mã hóa, tiếp theo ta sẽ xem xétcác phép biến đổi sử dụng trong quá trình giải mã Đó là các phép biến đổi:InverseSubByte(), InverseShiftRows(), InverseMixCoulums(), AddRoundKey()

1 5 Quy trình mã hóa

Quy trình giải mã được thực hiện qua các giai đoạn sau:

1 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ã

2 Nr − 1 chu kỳ giải mã bình thường: mỗi chu kỳ bao gồm bốn biến đổi liêntiếp nhau: InvShiftRows, InvSubBtes, AddRoundKey, InvMixColumns

3 Thực hiện chu kỳ giải mã cuối cùng Trong chu kỳ này, thao tác

InvMixColumns được bỏ qua

Đoạn mã cho thuật toán giải mã như sau:

InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])

Trang 28

1.5.1 Phép biến đổi InvShifRows

Hình 1.9 Thao tác InvShiftRows tác động lên từng dòng

của trạng thái hiện hành

InvShiftRows chính là phép biến đổi ngược của phép biến đổiShiftRows Dòng đầu tiên của trạng thái sẽ vẫn được giữ nguyên, ba dòng cuốicủa trạng thái sẽ được dịch chuyển xoay vòng theo chiều ngược với phép biếnđổi ShiftRows với các di số Nb – shift (r, Nb) khác nhau Các byte ở cuối dòngđược đưa vòng lên đầu dòng trong khi các byte còn lại có khuynh hướng dichuyển về cuối dòng

c r

s Nb Nb

1.5.2 Phép biến đổi InvSuBytes

Phép biến đổi ngược của thao tác SubBytes, ký hiệu là InvSubBytes, sửdụng bảng thay thế nghịch đảo của S-box trên GF(2 ), ký hiệu là S-box Quátrình thay thế 1 byte y dựa vào S- box bao gồm hai bước sau:

1 Áp dụng phép biến đổi affine (trên GF(2)) sau đối với y (có biểu diễn nhị phân là {y y y y y y y y }) :

0 1 0 1 0 0 1 0

0 0 1 0 1 0 0 1

1 0 0 1 0 1 0 0

0 1 0 0 1 0 1 0

0 0 1 0 0 1 0 1

1 0 0 1 0 0 1 0

0 1 0 0 1 0 0 1

1 0 1 0 0 1 0 0

7 5 3 1 7

5 3 1

y y y y x

x x x

Hay

x = y y (i+5)mod8 y  d , với d là bit thứ i của giá trị {05},0 ≤ i ≤ 7

Trang 29

Rõ ràng đây chính là phép biến đổi affine ngược của phép biến đổi affine ởbước 1 của S-box.

1 Gọi x là phần tử thuộc GF(2 ) có biểu diễn nhị phân là { x x x x x x x

x } Xác định phần tử nghịch đảo x ∈ GF(2 ) với quy ước {00}= {00}

Bảng thể hiện bảng thay thế nghịch đảo được sử dụng trong phép biến đổiInvSubBytes

Bảng 1.5 Bảng thế cho hàm InvSBytes

1.5.3 Phép biến đổi InvMixColumns

InvMixColumns là biến đổi ngược của phép biến đổi MixColumns Mỗi

cột của trạng thái hiện hành được xem như đa thức s( x ) bậc 4 có các hệ số thuộc GF(2 ) và được nhân với đa thức a ( x ) là nghịch đảo của đa thức a( x ) (modulo M( x )) được sử dụng trong phép biến đổi MixColumns

a ( x ) = {0b} x + {0d} x + {09} x + {0e}

) ( ) (

c c c c

s s s s

e d b

b e d

d b e d b e

s s s s

, 3 2 , 1 0

, 3 , 2 , 1 , 0 ,

0 09 0 0

0 0 09 0

0 0 0 09

09 0 0 0

với 0 ≤ c < Nb

Trang 30

Kết quả là bốn byte trong mỗi cột sẽ được thay thế theo công thức sau:

b s

e s

s,1 ,c({09} 0,c)({0 } 1,c)({0 } 2,c)({0 } 3,c)

s b s

e s

s b

s,2 ,c ({ 0 }  0,c)  ({ 09 }  1,c ({ 0 }  2,c)  ({ 0 }  3,c)

) } 0 ({

) } 09 ({

) } 0 ({

) }

c c

1.5.4 Thuật toán giải mã tương đương

Trong thuật toán giải mã được trình bày ở trên chúng ta thấy thự tự củacác hàm biến đổi được áp dụng khác so với thuật toán mã hóa trong khi dạngcủa danh sách khóa cho cả 2 thuật toán vẫn giữ nguyên Tuy vậy một số đặcđiểm của AES cho phép chúng ta có một thuật toán giải mã tương đương có thự

tự áp dụng các hàm biến đổi giống với thuật toán mã hóa (tất nhiên là thay thếcác biến đổi bằng các hàm ngược của chúng) Điều này đạt được bằng cách thayđổi danh sách khóa Hai thuộc tính sau cho chúng ta một thuật toán giải mãtương đương:

1. Các hàm SuBytes() và ShitRows() hoán đổi cho nhau: có nghĩa là mộtphép biến đổi SubByte theo sau bởi điến đổi ShiftRows() tương đương với mộtbiến đổi ShiftRows() theo sau bởi một biến đổi SubByte() Điều này cũng đúngvới các hàm ngược của chúng

2. Các hàm trộn cột InvMixColumns và MixColumns() là các hàm tuyếntính đối với các cột input có nghĩa là:

InvMixcolumns( state XOR Round Key) = InvMixColumns(state) XOR

InvMixColumns(Round Key)

Các đặc điểm này cho phép thứ tự của các hàm InvSubBytes() và InvShiftRows()

có thể đổi cho Thứ tự của các hàm AddRoundKy() và InvMixColumns() cũng cóthể đổi chổ miễn là các cột của danh sách khóa giải mã phải được thay đổi bằngcách sử dụng hàm InvMixColumns()

Thuật toán giải mã tương đương được thực hiện bằng cách đảo ngược thứ thựcủa hàm InvSubBytes() và InvShifRows(), và thay đổi thứ tự của hàmAddRoundKey() và InvMixColumns() trong các lần lặp sau khi thay đổi cho giá trị

Trang 31

round = 1 to N - 1 bằng cách sử dụng biến đổi invMixcoulumns() Các word đầutiên và cuối cùng của danh sách khóa không bị thay đổi khi ta áp dụng phường phápnày Thuật toán giải mã tương đương cho một cấu trúc hiệu quả hơn so với thuậttoán giải mã trước đó

Đoạn giải mã như sau:

EqInvCipher(byte in[4*Nb], byte out[4*Nb], word dw[Nb*(Nr+1)])

Trang 32

Chương 2 TỔNG QUÁT VỀ FPGA VÀ VHDL 2.1 TỔNG QUÁT về FPGA

FPGA (Field Programable Gate Arrays) là một thiết bị bán dẫn bao gồm cáckhối logic lập trình được gọi là "Logic Block", và các kết nối khả trình Các khốilogic có thể được lập trình để thực hiện các chức năng của các khối logic cơ bảnnhư AND, XOR, NOT, OR hoặc các chức năng kết hợp phức tạp hơn nhưdecoder hoặc các phép tính toán học Trong hầu hết các kiến trúc FPGA, cáckhối logic cũng bao gồm cả các phần tử nhớ Đó có thể là các Flip-Flop hoặcnhững bộ nhớ hoàn chỉnh hơn Các kết nối khả trình cho phép các khối logic có

Trang 33

thể nối với nhau theo thiết kế của người xây dựng hệ thống, giống như một bảngmạch khả trình

Một kiến trúc khác tương tự nhưng đơn giản hơn FPGA là CPLD( Complex Programable Logic Device) Thực chất đây là tiền thân của FPGA.Năm 1984, Ross Freeman, một đồng sáng lập của Xilinx đã phát minh ra FPGA.FPGA và CPLC đều bao gồm một số lượng khá lớn các phần tử logic khả trình.Mật độ cổng logic (Logic Gate) của CPLD nằm trong khoản từ vài nghìn chođến 10 nghìn cổng Trong khi đó FPGA thông thường chứa từ 10 nghìn chođến vài triệu cổng Khác biệt cơ bản giữa FPGA và CPLD là ở kiến trúc củachúng CPLD có một kiến trúc bị giới hạn trong một hoặc một vài dãy logic khảtrình cùng với một lượng nhỏ thanh ghi định thời Do đó nó kém linh hoạt hơn,nhưng lại có ưu điểm là khả năng dự đoán trễ lớn hơn và tỉ lệ logic-kết nối caohơn Ngược lại, trong kiến trúc của FPGA lại có sự trội hơn về số lượng kết nối Điều này làm cho nó trở nên linh hoạt hơn ( về số lượng thiết kế được thực thibên trong) nhưng cũng đồng nghĩa với việc phức tạp hơn trong quá trình thiết

kế Một khác biệt đáng chú ý nữa giữa FPGA và CPLD là : hầu hết các FPGAhiện nay đều có các phần tử chức năng tích hợp cao hơn ( như bộ cộng, nhântích hợp), và bộ nhớ tích hợp

Một số kiến trúc FPGA hiện nay còn có thể cho phép cấu hình lại từngphần Có nghĩa là cho phép một phần của thiết kế được cấu hình lại trong khinhững thiết kế khác vẫn tiếp tục hoạt động Một ưu điểm khác của FPGA, làngười thiết kế có thể tích hợp vào đó các bộ xử lý mềm hay vi xử lý tích hợp.Các vi xử lý này có thể được thiết kế như các khối logic thông thường, mà mãnguồn do các hãng cung cấp, thực thi các lệnh theo chương trình được nạp riêngbiệt, và có các ngoại vi được thiết kế linh động ( khối giao tiếp UART, vào/ra đachức năng GPIO, ethernet ) Các vi xử lý này cũng có thể được lập trình lạingay trong khi đang chạy

2.2 Ứng dụng

Trang 34

FPGA được ứng dụng điển hình trong các lĩnh vực như: xử lý tín hiệusố,xử lý ảnh, thị giác máy, nhận dạng giọng nói, mã hóa, mô phỏng FPGAđặc biệt mạnh trong các lĩnh vực hoặc ứng dụng mà kiến trúc của nó yêu cầumột lượng rất lớn xử lý song song, đặc biết là mã hóa và giải mã FPGA cũngđược sử dụng trong những ứng dụng cần thực thi các thuật toán như FFT,nhân chập (convolution), thay thế cho vi xử lý.

Hiện nay công nghệ FPGA đang được sản xuất và hỗ trợ phần mềm bởicác hãng như :Xilinx, Altera, Actel, Atmel Trong đó Xilinx và Altera là 2hãng hàng đầu Xilinx cung cấp phần mềm miễn phí trên nền Windows,Linux, trong khi Altera cung cấp những công cụ miễn phí trên nền Windows,Linux và Solaris

2.3 Kiến trúc PFGA

2.3.1 Kiến trúc của chip FPGA

Kiến trúc bao gồm một mảng các khối logic và các kênh định tuyến.Mỗi hàng hay cột được đệm đày bởi 2 đệm I/O Tất cả các kênh định tuyến

Trang 35

Khối logic chuẩn của FPGA gồm một bảng tìm kiếm 4 đầu vào (LUT) vàmột flip-flop, như được biểu diễn ở hình 2.2 Khối logic chỉ có một đầu ra, đầu

ra này có thể là đầu ra LUT đã đăng kí hoặc không đăng kí Khối Logic có 4 đầuvào của LUT và một đầu vào xung Clock Vì xung clock thông thường đượcđịnh tuyến thông qua một mạng định tuyến đặc biệt nên nó được điều khiểnkhác so với các tín hiệu còn lại Vị trí các chân của khối logic của FPGA đượcbiểu diễn dưới đây

Hình 2.2 Logic blockMỗi đầu vào có khả năng truy nhập từ một chân của khối logic khi chânđầu ra có thể kết nối tới các dây định tuyến trong cả hai kênh bên phải và bêndưới của khối logic.( Hình 2.3 )

Hình 2.3 Vị trí các chân của Logic block

Trang 36

Mỗi chân đầu ra của khối logic có thể kết nối tới bất kì đoạn đi dây nào trongcác kênh gần với nó

Tương tự đệm I/O có thể kết nối tới bất kì đoạn đi dây nào trong các kênhgần với nó Ví dụ một đệm I/O tại đầu của chip có thể kết nối ngay lập tức tớibất kì dây W nào (trong đó W độ rộng kênh) trong kênh nằm ngang bên dưới nó Việc định tuyến FPGA không được phân đoạn (Hình 2.5) Mỗi đoạn đidây chỉ bắc cầu qua một khối logic trước khi nó kết thúc trong hộp chuyểnmạch Bằng cách mở một số các chuyển mạch có khả năng lập trình trong hộpchuyển mạch, các đường dẫn dài hơn có thể được tạo

Mỗi khi một kênh nằm dọc và một kênh nằm ngang giao nhau thì có một hộpchuyển mạch Trong kiến trúc này khi một dây đi vào hộp chuyển mạch thì có 3chuyển mạch có khả năng lập trình cho phép nó kết nối tới 3 dây khác trongđoạn kênh gần đó Mô hình hoặc topo của các chuyển mạch được sử dụng trongkiến trúc này là một tôpô của hộp chuyển mạch cơ sở bán dẫn hoặc vùng Trongtôpô hộp chuyển mạch này, một dây trong tuyến số 1 chỉ kết nối tới các dâytrong tuyến số 1 trong các đoạn kênh gần đó, các dây trong tuyến số 2 chỉ kếtnối tới các dây trong tuyến số 2 trong các đoạn kênh gần đó, Hình 2.6 mô tảcác kết nối trong hộp chuyển mạch

Các chân của FPGA được chia làm hai loại Chân chuyên dụng và chân I/

O thông thường Khoảng 20% đến 30 % số chân của FPGA là chân chuyêndụng Các chân chuyên dụng của FPGA chia làm ba loại nhỏ như sau :

 Các chân nguồn ;

 Các chân cấu hình, dùng để download chương trình xuống chip FPGA;

 Các đầu vào chuyên dụng hoặc các chân xung clock Các chân này đểđiều khiển các khối chức năng trong FPGA;

Còn lại là các chân I/O thông thường Người dùng có toàn quyền lập trìnhcho các chân này, có thể cấu hình chúng thành đầu vào, đầu ra hoặc đầu vào ra.2.3.2 Đặc điểm hoạt động của FPGA

Ngày đăng: 13/12/2013, 23:57

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w