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

đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”

74 603 2

Đ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 74
Dung lượng 2,94 MB

Nội dung

Chương III: Thực hiện thuật toán Rijndael trên FPGA Trong quá trình làm đồ án tôi đã được các thầy giáo, đặc biệt thầygiúp đỡ trong việc tìm hiểu các kiến thức cần thiết cho đồ án, và ph

Trang 1

LỜI NÓI ĐẦU

Sự phát triển ngày càng nhanh chóng của Internet và các ứng dụnggiao 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 kết quả của khoa học mật mã ngày càng được triển khai trongnhiều lĩnh vực khác nhau của đời sống xã hội, trong đó phải kể đến rấtnhiều ứng dụng dân sự, thương mại, quân sự… Các ứng ụng mã hoá thôngtin 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ới mọi người Nhất là tronglĩnh vực quân sự cần phải có độ bảo mật cao

Với sự phát triển của công nghệ hiện nay, các bộ xử lý có tốc độ vàkhả năng xử lý ngày càng cao, nhiều phương pháp mã hoá đã không cònđảm bảo độ an toàn cao, đòi hỏi cần phải có một phương pháp mã hoá mới

có thể đảm bảo độ an toàn cho thông tin Phương pháp mã hoá Rijndael rađời đã đáp ứng được phần nào độ an toàn mà các phương pháp mật mãtrước còn hạn chế

Bên cạnh đó, các phương pháp thiết kế với trợ giúp đắc lực của máytính dựa trên nền tảng công nghệ FPGA đã và đang tỏ rõ tính ưu việt của

nó Không những chúng đáp ứng được yêu cầu về mặt tích hợp, về tính bảomật mà còn giúp giảm thiểu giá thành thiết kế và rút ngẵn thời gian thiết

kế Mặc dù ra đời từ cách đây hơn 2 thập kỷ, công nghệ FPGA ở nước tavẫn còn là một lĩnh vực tương đối mới mẻ, đặc biệt là đối với các sinh viên

Vì thế tôi chọn đề tài: “ Tích hợp thuật toán mật mã Rijndael trên FPGA”.Nhệm vụ đặt ra của đề tài là: nghiên cứu về công nghệ FPGA, tìmhiểu về thuật toán mật mã Rijndael và cài đặt thuật toán bằng ngôn ngữ mô

tả phần cứng VHDL, sử dụng phần mềm tích hợp để mô phỏng thực hiện

Trang 2

của thuật toán khi tích hợp trên FPGA Từ nhiệm vụ đặt ra đó đề tài chialàm 3 chương sau:

Chương I : FPGA và ngôn ngữ mô tả phần cứng VHDL.

Chương II: Thuật toán mật mã Rijndael.

Chương III: Thực hiện thuật toán Rijndael trên FPGA

Trong quá trình làm đồ án tôi đã được các thầy giáo, đặc biệt thầygiúp đỡ trong việc tìm hiểu các kiến thức cần thiết cho đồ án, và phươngpháp để hoàn thành đồ án; đồng thời cán bộ chỉ huy các cấp đã tạo điềukiện rất nhiều về mặt thời gian cho tôi thực hiện nhiêm vụ đồ án được giao.Tôi rất chân thành cảm ơn các thầy và cán bộ chỉ huy các cấp là nhữngngười đóng góp một phần rất lớn cho việc hoàn thành đồ án này của tôi

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU 1

CHƯƠNG 1 FPGA VÀ NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL 5

1.1 TỔNG QUAN VỀ CÔNG NGHỆ FPGA 5

1.1.1 Sự phát triển của các thiết bị lập trình được 6

1.1.2 Cấu trúc cơ bản của FPGA 9

1.1.3 Ứng dụng của FPGA 13

1.2 GIỚI THIỆU NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL 14

1.2.1 Ngôn ngữ mô phỏng phần cứng (HDL) 14

1.2.1.1 Các phương pháp truyền thống 14

1.2.1.2 Ngôn ngữ mô phỏng phần cứng (HDL) 16

1.2.2 Ngôn ngữ mô phỏng phần cứng VHDL 16

1.2.2.1 Giới thiệu 16

1.2.2.2 VHDL có một số ưu điểm hơn hẳn các ngôn ngữ mô phỏng phần cứng khác 17

1.2.2.3 Cấu trúc một mô hình hệ thống mô tả bằng VHDL 19

1.3 Kết luận chương 1 25

CHƯƠNG 2 THUẬT TOÁN MẬT MÃ RIJNDAEL 26

2.1 GIỚI THIỆU THUẬT TOÁN 26

2.2 KÝ HIỆU VÀ QUY ƯỚC 26

2.2.1 Các đầu vào và các đầu ra 26

2.2.2 Bytes 27

2.2.3 Các mảng của Bytes 27

2.2.4 Trạng thái 28

2.3 MỘT SỐ KHÁI NIỆM TOÁN HỌC 28

2.3.1 Phép cộng 29

2.3.2 Phép nhân 29

2.3.3 Phép nhân với x 30

2.3.4 Đa thức với hệ số trên GF( 2 8 ) 32

2.3.5 Phép nhân đa thức bậc 3 với x 34

2.4 PHƯƠNG PHÁP RIJNDAEL 35

2.4.1 Quá trình mã hoá 36

2.4.1.1 Phép biến đổi SubBytes 39

2.4.1.2 Phép biến đổi ShiftRows 41

2.4.1.3 Phép biến đổi MixColumns 42

2.4.1.4 Thao tác AddRoundKey 43

2.4.1.5 Phát sinh khoá của mỗi chu kỳ 44

2.4.2 Quá trình giải mã 46

2.4.2.1 Phép biến đổi InvShiftRows 48

2.4.2.2 Phép biến đổi InvSubBytes 49

2.4.2.3 Phép biến đổi InvMixColumns 50

2.4.2.4 Phép biến đổi AddRoundKey() 52

2.5 MỘT SỐ ỨNG DỤNG 52

2.6 KẾT LUẬN CHƯƠNG 2 53

2.6.1 Khả năng an toàn 53

2.6.2 Đánh giá 54

CHƯƠNG 3 THỰC HIỆN THUẬT TOÁN RIJNDAEL TRÊN FPGA VÀ 55

Trang 4

3.1 THỰC HIỆN THUẬT TOÁN RIJNDAEL TRÊN FPGA 55

3.1.1 Quá trình mã hóa và giải mã 55

3.1.2 Xây dựng các modul 57

3.1.3 Thực hiện thiết kế 63

3.2 KẾT QUẢ THỰC HIỆN 69

KẾT LUẬN 73

TÀI LIỆU THAM KHẢO 74

Trang 5

CHƯƠNG 1 CÔNG NGHỆ FPGA VÀ NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL

1.1 TỔNG QUAN VỀ CÔNG NGHỆ FPGA

Công nghệ chế tạo vi mạch điện tử ngày nay đang có sự thay đổi lớn:

từ một mạch tích hợp vi điện tử với cơ sở thiết bị công nghệ tiên tiến chếtạo ra với số lượng lớn chuyển dần sang các mạch chuyên dụng sản xuấtvới lô nhỏ tại các cơ sở có điều kiện công nghệ chưa phát triển Sự thay đổi

đó được hình thành nhờ các công cụ thiết kế tự động Động lực chính củaquá trình thay đổi này là nhằm giảm thời gian thiết kế, chế tạo vi mạch vàtăng tính linh hoạt cho người thiết kế lập trình với những ứng dụng riêngbiệt

FPGA (Field-programmable Gate Array) là một thiết bị bán dẫn (IC)

chứa các cổng logic có khả năng lập trình được Chúng bao gồm các khốilogic thực hiện các chức năng cơ bản như AND, OR… hay phức tạp hơnnhư các hàm toán học, bộ giải mã, trigger, register… và cả các phần tử nhớ,các mạng lưới kết nối có thể lập trình và các khối vào ra với các mạchkhác FPGA còn được gọi là thiết bị có khả năng tái cấu hình, được ứngdụng rộng rãi cho việc thiết kế các vi mạch chuyên dụng Và chúng ta cóthể biến nó thành một con IC có chức năng và tốc độ rất cao

Một cách tổng quát FPGA được cấu tạo từ 3 thành phần:

Trang 6

Có thể tổ hợp tuỳ ý các thành phần này để tạo ra các mạch chức năngnhư ý muốn.

1.1.1 Sự phát triển của các thiết bị lập trình được

Các thiết bị lập trình được đóng vai trò quan trọng lâu dài trong thiết

kế các vi mạch với những ứng dụng riêng biệt trong ngành điện tử - viễnthông Chúng là các chíp đa dụng có thể được cấu hình theo nhiều cách choứng dụng Loại đầu tiên của thiết bị lập trình được sử dụng rộng rãi là

PROM (Programmable Read Only Memory) PROM là thiết bị lập trình

được một lần gồm một dãy các ô nhớ chỉ đọc

Có hai loại PROM cơ bản, một loại chỉ có thể lập trình bởi nhà sản

xuất gọi là mask programmable và một loại có thể lập trình bởi người sử dụng gọi là field programmable Các chíp mask programmable có tốc độ

làm việ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 Ngược lại, các kết nối của field programmable

luôn cần đến một số loại chuyển mạch lập trình được (cầu chì, transistos )

vì vậy tốc độ chậm hơn kết nối cứng Tuy nhiên, thiết bị field programmable có nhiều ưu điểm giá trị hơn là sự hạn chế về tốc độ như :

programmable khi sản xuất với số lượng nhỏ

thời gian rất ngắn, trong khi các chíp mask programmable khi sản xuất phải

mất hàng tháng

Hai biến thể của PROM là EPROM (Erasable Programmble Read Only Memory) và EEPROM (Electrically Erasable Programmable Read Only Memory) chúng đều có chung một ưu điểm là có thể xóa và lập trình

nhiều lần

Trang 7

Một loại thiết bị lập trình được khác được thiết kế đặc biệt để thể hiện

các mạch logic là PLD (Programmable Logic Device) : Một PLD thông

thường 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 nhất của PLD là PAL ( Programmable Array Logic) PAL gồm

một khối các cổng AND lập trình được nối đến một khối các cổng OR cố

định Một loại PLD khác linh hoạt hơn đó là PLA (Programmable Logic Array) cũng có cấu trúc giống PAL nhưng tất cả các kết nối là lập trình

được Cấu trúc này có các mắt lưới của các đường nối theo chiều ngang vàchiều đướng Tại mỗi điểm giao nhau là một cầu chì, với sự trợ giúp củacác công cụ phần mềm, người thiết kế có thể lựa chọn mỗi nối nào khôngđược nối thì hủy cầu chì mà không cần dùng đó đi ( nung nóng và đốt đứtcầu chì đó) Điều nầy được thực hiện bởi một bộ nạp chương trình Cả hailoại PAL và PLA cho phép thực hiện các mạch logic tốc độ cao, tuy nhiêncấu trúc đơn giản của chúng chỉ cho phép thực hiện các mạch logic cỡ nhỏ

Hình1.1: Cấu trúc của PLA Hình1.2: Cấu trúc của PAL

Để thực thi các mạch yêu cầu nhiều đầu vào và nhiều đầu ra có nhiều

chíp tinh vi hơn gọi là thiết bị logic lập trình phức hợp CPLD ( Complex Programmable Logic Device), họ này là kết quả của việc tăng mật độ của

họ PLDs lên nhiều lần Khái niệm này được hiểu là có một số khối PLDhoặc macrocell (tế bào vĩ mô ) ở trong một thiết bị đơn cùng với các đường

Trang 8

nối liền đa năng giữa chúng Các đường nối của các đơn vị logic đơn giản

có thể được thực thi ở trong một khối đơn Nhiều đơn vị logic phức tạp yêucầu nhiều khối và sử dụng các đường nối đa năng giữa chúng để tạo nêncác kết nối phức tạp hơn

Các CPLDs cực kỳ thích hợp trong việc mô tả các cổng logic phức tạpvới tốc độ lớn 200 Mhz Khuôn mẫu thời gian cho CPLD rất dễ tính toán,bởi thế trước khi bắt đầu thiết kế chúng ta có thể tính toán các tốc độ từ đầuvào đến đầu ra của mình dựa trên khuôn mẫu này CPLDs đưa ra cách đơngiản nhất để thực hiện một thiêt kế, một thiết kế có thể được mô tả bởi các

sơ đồ hoặc bằng một ngôn ngữ mô tả phần cứng, đơn giản khi sử dụng cáccông cụ phát triển để tối ưu hóa, nạp và mô phỏng thiết kế Các công cụthiết kế tạo ra một file chương trình ma file này được dùng để đưa cácchuẩn logic vào trong một chíp CPLD cùng với chức năng mong muốn.Giả sử nếu cần có một sự thay đổi về thiết kế, chúng ta có thể đưa sự thayđổi dó vào trong công cụ phát triển CPLD và thực thi trên nó sau đó có thểkiểm tra lại ngay thiết kế CPLD có mức tích hợp rất cao và được đóng góitrong một khuôn dạng rất nhỏ Điều này đã cung cấp một giải pháp tuyệtvời cho những người thiết kế cần sản phẩm của mình được gói nhỏ gọn vớidiện tích bo mạch bị giới hạn về khoảng không gian

Hình 1.3 : Cấu trúc của CPLD

Trang 9

FPGA được công ty Xilinx giới thiệu lần đầu vào năm 1985 nhằm tạo

ra một thiết bị lập trình có độ tích hợp cao FPGA cho phép tính hợp sốlượng tương đối lớn các phần tử bán dẫn vào một vi mạch so với kiến trúctrước đó là CPLD FPGA có khả năng chứa tới từ 100 000 đến hàng 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, PLA còn thấp hơn nữa chỉ đạt vài nghìn đến10000

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 ( SPLD thường là mộtmả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ử logic đồng bộ), ư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ủacá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 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 đượctí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 cộng

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

1.1.2 Cấu trúc cơ bản của FPGA

FPGA gồm một dãy các phần tử rời rạc có thể được kết nối với nhaubằng các nguồn kết nối chung, các kết nối giữa các phần tử có thể lập trìnhđược Hình 1.4 giới thiệu về mô hình tổng quát của một FPGA Nó gồmdãy 2 chiều các logic block có thể được kết nối bằng các nguồn kết nối

Trang 10

chung Nguồn kết nối là các đoạn dây (segment) có thể có chiều dài khácnhau, bên trong các kết nối là các chuyển mạch lập trình được dùng để nốicác logic block với các segment hoặc giữa các segment với nhau Mạchlogic được cài đặt trong FPGA bằng cách ánh xạ logic vào các logic blockriêng rẽ và sau đó nối các logic block cần thiết qua các chuyển mạch.Trong đó có các khối:

logic được gọi là kiến trúc của nó Kiến trúc của khối logic có thể đượcthiết kế theo nhiều cách khác nhau Một số khối logic có thể chỉ là các cổngNAND 2 đầu vào, tuy nhiên cũng có thể nó là một bộ dồn kênh, hay cácbảng tìm kiếm LUT ( Luck-Up Table ) Trong một số loại FPGA các khốilogic có thể có cấu trúc hoàn toàn giống như PAL Hầu hết các khối logicchứa một số loại flip-flop để hỗ trợ cho việc thực hiện các mạch tuần tự

nguồn kết nối trong FPGA được gọi là kiến trúc routing Kiến trúc routinggồm các đoạn dây nối và các chuyển mạch lập trình được Các chuyểnmạch lập trình được có thể có nhiều cấu tạo khác nhau Giống như khốilogic, có nhiều cách để thiết kế kiến trúc routing như : Transistor truyền( pass - transistor) được điều khiển bởi cell SRAM, cầu chì nghịch ( anti -fuse), EPROM transistor và EEPROM transistor

được hỗ trợ tới 19 các chuẩn tín hiệu khác nhau bao gồm : LVDS, BLVDS,LVPECL, LVCMOS, HSTL, SSTL và GTL

Trang 11

Hình 1.4 : Mô tả mô hình của một FPGA

Các khối cơ bản của LB ( Logic block ) của FPGA chính là logic cell (

LC : gọi là tế bào logic)

hàm ) 4 đầu vào, logic nhớ và phần tử lưu trữ ( Filip – Flop loại D ) Đầu ra

bộ tạo chức năng của mỗi Logic Cell điều khiển cả đầu ra LB hoặc đầu vào

D của Flip – Flop Mỗi một LB có chứa 4 Logic Cell và được tổ chức thànhhai Slice tương tự nhau, một slice đơn có dạng như hình 1.5

thực hiện như LUT có bốn đầu vào Để hoạt động như một bộ tạo chứcnăng, mỗi một LUT có thể cung cấp một RAM 16 x 1 bit đồng bộ Hơnnữa hai LUT trong một Slice có thể được kết hợp để tạo RAM 16 x 2 bithoặc 32 x 1 bit đồng bộ

có thể được xếp đặt như một Flip – Flop loại D kích hoạt bằng sườn, hoặcnhư một bộ đốt nhạy mức Các đầu vào D có thể được điều khiển hoặc bởi

bộ tạo chức năng trong Slice hoặc trực tiếp từ đầu vào các Slice ( bỏ qua bộ

Trang 12

tạo chức năng) Thêm các đường Clock ( CLK ) và Clock Enable ( CE )( Hình 1.5 ), mỗi Slice có các tín hiệu Set và Reset đồng bộ ( SR và BY ).Đường SR ép các phần tử lưu trữ về trạng thái khởi tạo, đặc biệt trongtrường hợp nhồi cấu hình Đường BY ép phần tử lưu trữ về trạng tháingược lại Như đã được lựa chọn hai đường này có thể được sắp xếp đểhoạt động không đồng bộ Tất cả các tín hiệu điều khiển có thể đảo ngượcmột cách hoàn toàn độc lập và chúng được chia sẻ bởi hai Flip – Flop trongmột Slice.

theo khối thành khối lớn hơn ( gọi là SelectRAM+ ), điều này cần bổ sungcác LUT RAM đã được phân phối và kiến trúc bộ nhớ không bền vững nàyđược thực hiện trong các LB, các khối bộ nhớ Block RAM được tổ chứctheo các cột

Hình 1.5: Cấu trúc Logic Cell trong FPGA

Trang 13

Một FPGA có cấu trúc của các Logic Cell và các đường nối ( Hình1.6), mà các đường nối này nằm dưới sự điều khiển của người thiết kế Với

họ FPGA hiện nay đã vượt quá giới hạn 10 triệu cổng

 Thiết kế mạch ngẫu nhiên: Mạch logic 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 thìmạch có thể thực hiện thay thế bằng FPGA

mạch trong các sản phẩm thương mại thường chứa nhiều chíp SSI ( SmallScale Intergrated ) Trong nhiều trường hợp các chíp SSI này có thể đượcthay thế bằng FPGA và kết quả giảm dienj tích của bo mạch đi đáng kể

Trang 14

 Chế tạo mẫu: FPGA rất lý tưởng cho các ứng dụng tạo sảnphẩm mẫu Giá thành thực hiện thấp và thời gian ngắn.

chế tạo với các 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 mà các chân nối với các chíp lân cận giốngnhư thông thường

1.2 GIỚI THIỆU NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL

Hiện nay các mạch tích hợp ngày càng thưc hiện được nhiều chứcnăng hơn, do đó chúng ngày càng trở nên phức tạp hơn Các phương phápthiết kế mạch truyền thống như dùng tối thiểu hóa hàm Boolean hay dùng

sơ đồ các phần tử không còn đáp ứng được các yêu cầu đặt ra khi thiết kế.Hơn nữa các mạch thiết kế ra yêu cầu phải được thử nghiệm kỹ lưỡng trướckhi đưa vào chế tạo hàng loạt

Hơn nữa cần phải xây dựng một bộ tài liệu hướng dẫn vận hành hệthống hoàn chỉnh dễ hiểu và thống nhất Vì thế người ta thường sử dụngcác ngôn ngữ mô phỏng phần cứng làm phương tiện thiết kế, mô phỏng thửnghiệm các hệ thống số

1.2.1 Ngôn ngữ mô phỏng phần cứng (HDL)

1.2.1.1 Các phương pháp truyền thống

Phương pháp thiết kế dùng hàm Boolean

Tất cả các mạch dựa trên các phần tử logic cơ bản gồm cổng logic vàcác mạch flip-flop đều có thể thiết kế bằng các hàm Boolean Có nhiềuphương pháp đã được sử dụng để tối thiểu hóa hàm Boolean nhằm tăngtính hiệu quả sử dụng các phần tử logic, chẳng hạn như phương pháp dùngbìa cacno Về mặt lý thuyết bất kỳ hệ thống số nào cũng có thể biểu diễn

Trang 15

dưới dạng hàm Boolean Nhưng việc tối thiểu hóa cũng như xử lý hàngnghìn hàm logic rõ ràng là không thể Trong khi các yêu cầu thiết kế hệthống hiện nay đòi hỏi tới hàng nhiều nghìn hàm Boolean.

Phương pháp thiết kế dựa trên sơ đồ

Trong phương pháp này, người thiết có thể sử dụng thêm các mạchchức năng thông dụng khác ngoài các phần tử cơ bản là cổng và flip-flop.Như vậy, phương pháp này cho phép thiết kế hệ thống một cách có cấutrúc Phương pháp thiết kế dựa trên sơ đồ được dùng phổ biến và có rấtnhiều phần mềm thiết kế cung cấp cho người thiết kế một giao diện thiết kế

đồ họa thuận tiện Trong nhiều năm phương pháp này là phương pháp được

sử dụng chủ yếu trong ngành công nghiệp chế tạo phần cứng số

Nhược điểm của các phương pháp thiết kế truyền thống

Mặc dù có ưu điểm là dễ hiểu và dễ sử dụng, phương pháp thiết kếdùng hàm Boolean và phương pháp thiết kế dựa trên sơ đồ có một số nhượcđiểm Nhược điểm lớn nhất của các phương pháp này là chúng chỉ mô tả hệthống dưới dạng mảng các phần tử nối với nhau Nhìn vào một hệ thốngđược mô tả bằng hai phương pháp trên ta không thể lập tức chỉ ra được cácchỉ tiêu và chức năng chung nhất của hệ thống Để thiết kế một hệ thốngbằng phương pháp truyền thống, người thiết kế cần phải đi qua hai bướcthực hiện toàn thủ công : đó là chuyển từ các yêu cầu về chức năng của hệthống sang sơ đồ mạch của hệ thống Cũng tương tự khi cần hiểu được một

hệ thống người phân tích cần phân tích sơ đồ mạch của hệ thống chuyển nóthành các hàm Boolean sau đó mới lập lại được các chức năng, hoạt độngcủa hệ thống Và các bược nói trên hoàn toàn phải thực hiện thủ côngkhông có bất kỳ sự trợ giúp nào của máy tính Ở đây người thiết kế chỉ cóthể sử dụng máy tính làm cộng cụ hỗ trợ trong việc vẽ sơ đồ mạch của hệthống và chuyển từ sơ đồ mạch sang công cụ tổng hợp mạch vật lý

Trang 16

Một nhược điểm khác của phương pháp thiết kế truyền thống là sựgiới hạn trong độ phức tạp của hệ thống Phương pháp dùng hàm Booleanchỉ có thể dùng để thiết kế các hệ thống lớn nhất biểu diễn bởi vài trămhàm phương pháp dựa trên sơ đồ chỉ có thể dùng để thiết kế lớn nhất chứatới 6000 phần tử.

1.2.1.2 Ngôn ngữ mô phỏng phần cứng (HDL)

Ngôn ngữ mô phỏng phần cứng giải quyết được nhược điểm lớn nhấtcủa các phương pháp thiết kế trước đây Nếu các phương pháp cũ đòi hỏiphải chuyển đổi từ mô tả hệ thống sang tập hợp các hàm logic bằng tay thìbước chuyển đổi đó hoàn toàn không cần thiết khi dùng ngôn ngữ môphỏng phần cứng Hầu hết các công cụ thiết kế dùng ngôn ngữ mô phỏngphần cứng đều cho phép sử dụng biểu đồ trạng thái cho các hệ thống tuần

tự cũng như cho phép sử dụng bảng chân lý cho hệ thống tổng hợp Việcchuyển đổi từ các biểu đồ trạng thái và bảng chân lý sang mã ngôn ngữ môphỏng phần cứng được thực hiện tự động Ngôn ngữ mô phỏng phần cứngđược dùng nhiều nhất để thiết kế cho các thiết bị logic lập trình được từloại đơn giản đến các loại phức tạp như ma trận cổng lập trình được

1.2.2 Ngôn ngữ mô phỏng phần cứng VHDL

1.2.2.1 Giới thiệu

VHDL là viết tắt của cụm từ Very High Speed Intergrated CỉcuitHardware Description Language – ngôn ngữ mô phỏng phần cứng cho cácmạch tích hợp tốc độ cao VHDL là ngôn ngữ mô phỏng phần cứng đượcphát triển dùng cho chương trình VHSIC ( Very High Speed IntergratedCircuit) của bộ quốc phòng Mỹ Mục tiêu của việc phát triển VHDL là cóđược ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho phépphát triển thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễdàng đưa các hệ thống đó vào ứng dụng trong thực tế Ngôn ngữ VHDL

Trang 17

được ba công ty Intermetics, IBM và Texas Intruments bắt đầu nghiên cứuphát triển vào 7/1983 Phiên bản đầu tiên được công bố vào 8/1985 Sau đóVHDL được đề xuất để tổ chức IEEE xem xét thành một tiêu chuẩn Năm

1987, đã đưa ra tiêu chuẩn về VHDL – tiêu chuẩn IEEE – 1076 -1987.VHDL được phát triển để giải quyết các khó khăn trong việc pháttriển, thay đổi và lập tài liệu cho các hệ thống số Như ta đã biết, một hệthống số có rất nhiều tài liệu mô tả Để có thể vận hành bảo trì sửa chữamột hệ thống ta cần tìm hiểu tài liệu đó kỹ kưỡng Với ngôn ngữ mô phỏngphần cứng tốt việc xem xét các tài liệu mô tả trở nên dễ dàng hơn vì bộ tàiliệu đó có thể được thực thi để mô phỏng hoạt động của hệ thống Như thế

ta có thể xem xét toàn bộ các phần tử của hệ thống hoạt động trong một môhình thống nhất

Trước khi VHDL ra đời, có nhiều ngôn ngữ mô phỏng phần cứngđược sử dụng nhưng không có một tiêu chuẩn thống nhất Các ngôn ngữ

mô phỏng phần cứng đó được phát triển để phục vụ các bộ mô phỏng chạychúng Vì các ngôn ngữ mô phỏng phần cứng đó được các nhà cung cấpthiết bị phát triển, nên mang các đặc trưng gắn với các thiết bị của nhà cungcấp đó và thuộc sở hữu của nhà cung cấp

Trong khi đó, VHDL được phát triển như một ngôn ngữ độc lậpkhông gắn với bất kỳ một phương pháp thiết kế, bộ mô phỏng hay côngnghệ phần cứng nào Người thiết kế có thể tự do lựa chọn công nghệ,phương pháp thiết kế trong khi vấn sử dụng một ngôn ngữ duy nhất

1.2.2.2 VHDL có một số ưu điểm hơn hẳn các ngôn ngữ mô phỏng phần cứng khác

Thứ nhất là tính công cộng

VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay

là một tiêu chuẩn của IEEE, VHDL không thuộc sở hữu của bất kỳ cá nhân

Trang 18

hay tổ chức nào Do đó VHDL được sự hỗ trợ của nhiều nhà sản xuất thiết

bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống Đây

là một ưu điểm nổi bật của VHDL, giúp VHDL trở nên ngày càng phổbiến

Khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế

VHDL cho phép thiết kế bằng nhiều phương pháp như phương phápthiết kế từ trên xuống, hay từ dưới lên dựa vào các thư viện sẵn có VHDLcũng hỗ trợ cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệđồng bộ hay không đồng bộ, sử dụng ma trận lập trình được hay sử dụngmảng logic ngẫu nhiên Như vậy VHDL có thể phục vụ tốt cho nhiều mụcđích thiết kế khác nhau, từ việc thiết kế các phần tử phổ biến đến việc thiết

kế các IC ứng dụng đặc biệt

Tính độc lập với công nghệ

VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng Một mô tả

hệ thống dùng VHDL thiết kế ở mức cổng có thể được chuyển thành cácbản tổng hợp mạch khác nhau tùy thuộc công nghệ chế tạo phần cứng mới

ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế Đây cũng

là một ưu điểm quan trọng của VHDL, nó cho phép người thiết kế khôngcần quan tâm đến công nghệ chế tạo phần cứng mới ra đời

Khả năng mô tả mở rộng:

VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống sốcho đến mức cổng VHDL có khả năng mô tả hoạt động của hệ thống trênnhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọimức Như thế ta có thể mô phỏng một bản thiết kế bao gồm cẩ các hệ conđược mô tả ở mức cao và các hệ con được mô tả chi tiết

Khả năng trao đổi kết quả

Trang 19

Vì VHDL là một tiêu chuẩn được chấp nhận, nên một mô hình VHDL

có thể chạy trên mọi bộ mô tả đáp ứng được tiêu chuẩn VHDL Các kết quả

mô tả hệ thống có thể được trao đổi giữa các nhà thiết kế sử dụng công cụthiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL Cũng như, mộtnhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trongmột hệ thống lớn; trong khi các hệ thống con được thiết kế độc lập

Khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế

VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó

có thể được sử dụng để thiết kế một hệ thống lớn với sự tham gia của mộtnhóm nhiều người Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợviệc quản lý, thử nghiệm và chia sẻ thiết kế Và nó cũng cho phép dùng lạicác phần đã có sẵn

1.2.2.3 Cấu trúc một mô hình hệ thống mô tả bằng VHDL

Phần này sẽ nhằm giới thiệu sơ qua về cấu trúc khung cơ bản củaVHDL khi mô tả cho một mô hình thiết kế thực

Thông thường một mô hình VHDL bao gồm ba phần: thực thể(Entity), kiến trúc (Architecture), gói (Package) và các cấu hình Trong một

số trường hợp mô hình còn có thêm các môi trường kiểm tra

Thực thể (Entity )

Khai báo thực thể trong VHDL là câu lệnh định nghĩa các chỉ tiêuphía ngoài của một phần tử hay một hệ thống Các thông tin có trong phầnkhai báo thực thể cho phép kết nối phần tử ( hệ thống) mà thực thể đó đạidiện với phần tử ( hệ thống) khác Thực chất việc khai báo thực thể chính làkhai báo giao diện của hệ thống với bên ngoài Hoạt động thực chất của hệ

Trang 20

thống không được mô tả trong khai báo thực thể Cú pháp của khai báothực thể là:

được dùng để điều khiển kiến trúc và sự hoạt động của thực thể

của thực thể

Khai báo Entity_declaration_item dùng để khai báo các hằng,

kiểu dữ liệu hoặc tín hiệu mà nó có thể được sử dụng trong khi

mô tả hoạt động hoặc cấu trúc của thực thể

Dưới đây là một ví dụ khai báo thực thể cho một cổng NAND ( Hình1.7)

&

b a

LIBRARY IEEE;

USE IEEE.std_logic_1164.ALL;

ENTITY nand IS GENERIC (delay := 5 ns);

Trang 21

Hình 1.7 : Khai báo thực thể một cổng NAND

Câu lệnh LIBRARY IEEE và USE IEEE.std_logic_1164.ALL chophép thực thể sử dụng các định nghĩa trong thư viện về các tiêu chuẩn củaIEEE Khai báo thực thể bao gồm tên của thực thể và một tập các cổng vàphần chung Trong đó phần chung GENERIC là các hằng số được truyềncho phần tử ( hệ thống) Phần chung có thể coi là các tham số định trướccủa phần tử, chẳng hạn như độ trễ Các cổng là phần giao diện vào ra củaphần tử Các cổng có thể tương ứng với các chân IC, hay các đầu nối trênbảng mạch Các cổng được khai báo là cổng vào, cổng ra, cổng hai chiềuhay bộ đệm

Kiến trúc ( Arrchitecture)

Một khai báo thực thể đều phải đi kèm với ít nhất một kiến trúc tươngứng VHDL cho phép khai báo nhiều kiến trúc cho một thực thể Một khaibáo kiến trúc có thể bao gồm các khai báo về các tín hiệu bên trong, cácphần tử bên trong hệ thống hay mô tả theo mô hình cấu trúc Tuy nhiên một

hệ thống có thể bao gồm cả mô tả theo mô hình hoạt động và mô tả theo

mô hình cấu trúc

Mô tả kiến trúc theo mô hình hoạt động

Mô hình hoạt động mô tả các hoạt động của hệ thống dưới dạng cáccâu lệnh của ngôn ngữ lập trình bậc cao Các câu lệnh đó có thể làPROCESS, WAIT, IF, CASE, FOR-LOOP Ví dụ, kiến trúc của cổngNAND nói trên có thể mô tả theo mô hình hoạt động như sau:

ARCHITECTURE behaviour OF nand IS

BEGIN

c <= NOT (a AND b) AFTER delay;

Trang 22

Mô tả kiến trúc theo mô hình cấu trúc

Mô hình cấu trúc của một phần tử ( hệ thống) có thể bao gồm nhiềucấp cấu trúc bắt đầu từ một cổng logic đơn giản để xây dựng mô tả cho một

hệ thống hoàn thiện Thực chất của việc mô tả theo mô hình cấu trúc là mô

tả các phần tử con bên trong hệ thống và sự kết nối của các phần tử con đó.Như với ví dụ mô tả mô hình cấu trúc một flip-flop RS gồm hai cổngNAND như sau:

Trang 23

Một gói bao gồm hai thành phần: phần khai báo gói và phần thân gói.

Trang 24

 Phần khai báo gói

Một khai báo gói được dùng để cất giữ hang loạt các khai báo dùngchung, chẳng hạn như các phần tử, các kiểu, các thủ tục, các hàm Các khaibáo này có thể nhập vào đơn vị thiết kế khác bởi việc sử dụng một mệnh đề

USE.

 Phần than gói

Sự khác biệt giữa khai báo gói và than gói cũng giống như sự khácnhau giữa khai báo của một thực thể và phần than kiến trúc của nó Cúpháp của một phần than gói như sau:

Package body package_name is

{package_declaration_item}

End[package_name]

Một than gói được dùng để lưu các định nghĩa của một hàm và thủtục, mà các hàm và thủ tục này đã được khai báo trong phần khai báo góitương ứng Vì vậy, phần than gói luôn được kết hợp với phần khai báo củachúng, ngược lại một khai báo gói luôn luôn có ít nhất một than gói kết hợpvới nó

Việc khai báo cấu hình tương tự như việc liệt kê các phần của bảnthiết kế Khai báo cấu hình thực chất là chỉ ra kiến trúc nào được gắn vớithực thể nào Như vậy các kiến trúc khác nhau có thể cùng được gắn vớimột thực thể Điều này cho phép thay đổi bản mô tả ở thời điểm mô phỏnghay tổng hợp hệ thống Việc khai báo cấu hình là tùy chọn, cũng có thể sửdụng cấu hình mặc định do VHDL cung cấp – khi đó kiến trúc được khaibáo cuối cùng cho một thực thể sẽ được gắn với thực thể

Trang 25

Môi trường kiểm tra

Một trong các nhiệm vụ rất quan trọng là kiểm tra vản mô tả thiết kế.Kiểm tra một mô hình VHDL được thực hiện bằng cách quán sát hoạt độngcủa nó trong khi mô phỏng và các giá trị thu được có thể đem so sánh vớiyêu cầu thiết kế

Hình 1.8 Sơ đồ tổng quát chương trình thử

Thông thường các bộ mô phỏng có cung cấp khả năng kiểm tra,nhưng cũng có thể xây dựng một môi trường kiểm tra VHDL Môi trườngkiểm tra có thể hiểu như một mạch kiểm tra ảo Môi trường kiểm tra sinh racác tác động lên bản thiết kế và cho phép quan sát hoặc so sánh kết quảhoạt động của bản mô tả thiết kế Thông thường thì các bản mô tả đều cungcấp chương trình thử Nhưng ta cũng có thể xây dựng chương trình thử(testbench) Mạch thử thực chất là sự kết hợp của tổng hợp nhiều thànhphần Nó gồm ba thành phần: mô hình VHDL đã qua kiểm tra, nguồn dữliệu và bộ quan sát Hoạt động của mô hình VHDL được kích thích bởi cácnguồn dữ liệu và kiểm tra tính đúng đắn thông qua bộ quan sát Trên đây là

sơ đồ tổng quát của một chương trình thử (Testbench) ( Hình 1.8 )

Trong đó : DUT : ( device under test) mô hình VHDL cần kiểm tra Observer: khối quan sát kết quả

Trang 26

Data source : nguồn dữ liệu

Chương một đồ án đã trình bày một cách khái quát về công nghệFPGA và ngôn ngữ mô tả phần cứng VHDL Từ lịch sử phát triển của cácthiết bị lập trình được tới sự ra đời của FPGA, định nghĩa, cấu trúc của mộtFPGA và một số ứng dụng của FPGA hiện nay, giúp chúng ta có cơ sở vềFPGA Và cũng nắm một cách khái quát ngôn ngữ VHDL sẽ được dùng đểxây dựng chương trình cho đồ án

Trang 27

CHƯƠNG 2 THUẬT TOÁN MẬT MÃ RIJNDAEL

2.1. GIỚI THIỆU THUẬT TOÁN

Với tốc độ và khả năng xử lý ngày càng được nâng cao của các bộ vi

xử lý hiện nay, các phương pháp mã hoá trước trở nên không an toàn trongbảo mật thông tin Do đó, Viện Tiêu Chuẩn và Công Nghệ Hoa kỲ( National Institute of Standards and Technology - NIST) đã quyết địnhchọn một chuẩn mã hoá mới với độ an toàn cao nhằm phục vụ nhu cầu bảomật thông tin trong liên lạc của Chính phủ Hoa Kỳ cũng như trong ứngdụng dân sự Thuật toán Rijndael do Vincent Rijmen và Joan Deaman đãđược chính thức chọn trở thành chẩn mã hoá nâng cao AES ( AdvancedEncryption Standard) từ ngày 02 tháng 10 năm 2000

Phương pháp mã hoá Rijndael là phương pháp mã hoá khối đối xứng,

nó có thể thực hiện với các khối dữ liệu 128 bit thông qua sử dụng các khoá

mã hoá với các kích thước 128, 192, hay 256 bit Phương pháp này thíchhợp ứng dụng trên nhiều hệ thống khác nhau từ các thẻ thông minh cho đếncác máy thính cá nhân

2.2. KÝ HIỆU VÀ QUY ƯỚC

2.2.1. Các đầu vào và các đầu ra

Đầu vào và đầu ra của thuật toán Rijndael gồm chuỗi 128 bit, đượcxem như một khối (block) Khoá mật mã cho thuật toán Rijndael là mộtchuỗi 128, 192 hoặc 256 bit Chiều dài của đầu vào, đầu ra, khoá mật mãkhác không được chấp nhận bởi chuẩn mã hoá này

Trang 28

a hoặc a[n], với n phụ thuộc vào chiều dài của khoá, chiều dài của khoá

là 128 bít thì 0 < n < 16, dài 192 bit thì 0 < n < 24, dài 256 bit thì 0 < n <32

Các byte trong thuật toán Rijndael được biểu diễn dưới dạng xíchchuỗi các bit 0 hoặc 1, dạng như sau{b7,b6,b5,b4,b3,b2,b1,b0}, hoặcbiểu diễn dưới dạng một đa thức:

7 0

0 0

1 1

2 2

3 3

4 4

5 5

6 6

7

7

i

i x b x

b x b x b x b x b x b b b

a0=Input0 input1input2…input7

a1=Input8 input9input10…input15

a15=Input120 input121 input121…input127

Có thể mở rộng với chuỗi 192 và 256 bit :

a n=Input8n input8 n 1input8 n 2…,input8 n 7

2.2.4. Trạng thái

Trang 29

Hoạt động của thuật toán Rijndael được thực hiện trên một mảng haichiều, được gọi là trạng thái Một mảng trạng thái có 4 hàng, và N b cột, ởđây N b được tính bằng chiều dài của khối dữ liệu chia cho 32 Mảng trạngthái được ký hiệu là S[r,c], với 0  r  3, 0  c  N b 1 Mỗi phần tửtrong mảng trạng thái chứa một byte dữ liệu Khi thực hiện mã hoá hoặcgiải mã bằng thuật toán Rijndael đầu vào được copy vào mảng trạng tháivới :

2.3. MỘT SỐ KHÁI NIỆM TOÁN HỌC

Mỗi byte trong thuật toán Rijndael được biểu diễn như trên đã trìnhbày, mỗi byte xem như một phần tử của trường Galois GF( 2 8), Trường GF(2 8)( Galois Field(2 8)) là trường nhị phân đồng thời phép cộng là phép cộng modul 2( kí hiệu ), còn phép nhân là phép và (AND) Cụ thể :

0 0 = 0 0 1 = 1 1 1 = 0

Trang 30

( modulo) cho một đa thức tối giản (irreducible polynomial) bậc 8 Đa thức

được gọi là tối giản khi và chỉ khi đa thức này chỉ chia hết cho 1 và chínhmình Trong thuật toán Rijndael, đa thức tối giản được chọn là

Kết quả nhận được là một đa thức bậc nhỏ hơn 8 nên có thể được biểudiễn dưới dạng 1 byte

Trang 31

3 4 5 6 8 9

số nhị phân với bậc nhỏ hơn 8 tồn tại phần tử nghịch đảo của b(x), ký hiệu

b 1 (x), được thực hiện bằng cách sử dụng thuật toán Euclide mở rộng

để tính toán đa thức a(x) và c(x) sao cho:

1 1

2 2

3 3

4 4

5 5

6 6

7 7

x b x b x b x b x b x b x b x

4 3

5 4

6 5

7 6

Trang 32

 x b x b x b x b x b x b x b x b

1

3 2

4 3

5 4

6 5

4 3

5 4

6 5

7 6

8

7x b x b x b x b x b x b x b x m x b

4 3

5 4

6 5

7 6

8

7x b x b x b x b x b x b x b x m x

Như vậy, phép nhân với đa thức x ( hay phần tử {00000010}GF( 2 8 )

) có thể được thực hiện ở mức độ byte bằng một phép dịch trái và sau đóthực hiện tiếp phép toán XOR với giá trị {1b} nếu b7  1 Thao tác này

được ký hiệu là xtime() Phép nhân với các luỹ thừa của x có thể được thực hiện bằng cách áp dụ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ả trunggian 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ộcGF(2 8) có thể được tiến hành theo các bước sau:

cả các luỹ thừa của 2

giữa phần tử còn lại ( là b) với các thành phần là luỹ thừa của 2 được phântích từ a

Trang 33

) (

i

i

i x a x

3 0

) (

i

i

i x b x

) (

) ( ) (

i

i i

a x

b x a

Phép nhân giữa a(x) và 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).

2 2

3 3

4 4

5 5

6 6

Trang 34

c6 a3 b3

Rõ ràng 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 Trong thuật toán Rijndael, đa thức bậc

3 3

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:

d d d d

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

x không phải là một đa thức tối giản trên GF(2 8) nên phép

nhân với một đa thức a(x) cố định được chọn bất kỳ không đảm bảo tính khả nghịch Vì vậy, trong phương pháp Rijndael đã chọn đa thức a(x) có phần tử nghịch đảo (modulo M(x))

Trang 35

c c c c

00 00 01 00

00 00 00 01

01 00 00 00

b b b b

Như vậy, phép nhân với x hay các luỹ thừa của x sẽ tương ướng vớiphép dịch chuyển xoay vòng các byte thành phần trong một từ

Trong thuật toán Rijndael cần sử dụng đến đa thức x3 (

 00

2

1

được sử dụng trong quá trình mở rộng khoá, thực hiện thao tác dịch chuyểnxoay vòng N w byte thành phần một từ.) nhằm xoay vòng 4 byte thànhphần của một từ được đưa vào Như vậy, nếu đưa vào tử gồm 4 byte

b0 ,b1 ,b2 ,b3 thì kết quả nhận được là từ gồm 4 byte b1 ,b2 ,b3 ,b0

2.4. PHƯƠNG PHÁP RIJNDAEL

Phương pháp mã hoá Rijndael bao gồm nhiều bước biến đổi đượcthực hiện tuần tự, kết quả đầu ra của bước biến đổi trước là đầu vào củabước biến đổi tiếp theo Kết quả trung gian giữa các bước biến đổi được gọi

là trạng thái.

Trang 36

Một trạng thái có thể dược biểu diễn dưới dạng ma trận gồm 4 dòng

N b cột với N b bằng với độ dài của khối dữ liệu chia cho 32 Mã khoáchính cũng được biểu diễn dưới dạng một ma trận gồm 4 dòng và N k cộtvới N k bằng với độ dài của khoá chia cho 32 Trong một số tình huống ,

ma trận biểu diễn một trạng thái hay mã khoá có thể được khảo sát nhưmảng một chiều chứa các phần tử có độ dài 4 byte, mỗi phần tử tương ứngvới một cột của ma trận

Một số ký hiệu sử dụng trong thuật toán:

N w : Số lượng byte trong một đơn vị dữ liệu “từ” Trong thuậttoán Rijndael, với 128 bit vào thì N w là 4

Trang 37

AddRoundKey(State, RoundKey)

i = 0

ByteSub(State) ShiftRow(State) MixColumn(State)

AddRoundKey(State, RoundKey)

i = i + 1

i < Nr

ByteSub(State) ShiftRow(State)

AddRoundKey(State, RoundKey)

No Yes

Quy trình mã hoá Rijndael sử dụng bốn phép biến đổi chính sau:

hiện hành Độ dài của mã khoá của chu kỳ bằng với kích thước của trạngthái

Ngày đăng: 18/06/2014, 22:10

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1) Tống Văn On, Thiết kế mạch số với VHDL &amp; Verilog, Nhà xuất bản lao động Hà Nội Khác
2) TS. Dương Anh Đức, ThS. Trần Minh Triết, Mã hóa và ứng dụng Khác
3) Đặng Hoài Bắc, Đinh Sỹ Quảng, Đỗ Mạnh Hà Khoa, Ngôn ngữ mô tả phần cứng VHDL và ứng dụng vào đào tạo, Học viện công nghệ bưu chính viễn thông Khác
4) Nguyễn Bình (1996), Mật mã: Lý thuyết và thực hành, Học viện kỹ thuật quân sự, Hà Nội Khác
5) Joan Daemen, Vincent Rijmen, A Specification for Rijndael, the AES Algorithm Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.8 Sơ đồ tổng quát chương trình thử - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 1.8 Sơ đồ tổng quát chương trình thử (Trang 24)
Hình 2.1. Sơ đồ mảng trạng thái - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 2.1. Sơ đồ mảng trạng thái (Trang 28)
Hình 2.3: Thao tác  SubBytes tác động trên từng byte của trạng thái - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 2.3 Thao tác SubBytes tác động trên từng byte của trạng thái (Trang 40)
Bảng 2.1: Bảng thay thế S-Box - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Bảng 2.1 Bảng thay thế S-Box (Trang 41)
Hình 2.4: Thao tác ShiftRows tác động trên từng dòng của trạng thái - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 2.4 Thao tác ShiftRows tác động trên từng dòng của trạng thái (Trang 42)
Bảng2.2: Bảng giá trị di số Shift(r, N b ) - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Bảng 2.2 Bảng giá trị di số Shift(r, N b ) (Trang 42)
Hình 2.5: Thao tác MixColumns tác động lên mỗi cột của trạng thái - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 2.5 Thao tác MixColumns tác động lên mỗi cột của trạng thái (Trang 44)
Hình 2.6: Thao tác AddRoundKey tác động lên mỗi cột của trạng thái - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 2.6 Thao tác AddRoundKey tác động lên mỗi cột của trạng thái (Trang 45)
Hình 2.8: Thao tác InvShiftRows tác động lên từng dòng của trạng thái hiện hành - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 2.8 Thao tác InvShiftRows tác động lên từng dòng của trạng thái hiện hành (Trang 49)
Hình 2.9: Thao tác InvSubBytes tác động lên từng byte của trạng thái - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 2.9 Thao tác InvSubBytes tác động lên từng byte của trạng thái (Trang 51)
Bảng 2.4: Bảng thay thế  S − box − 1 - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Bảng 2.4 Bảng thay thế S − box − 1 (Trang 51)
Hình 2.10. Thao tác InvMixColumns() tác động lên từng cột của trạng thái - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 2.10. Thao tác InvMixColumns() tác động lên từng cột của trạng thái (Trang 53)
Hinh 3.6: Sơ đồ khối modul Encryption/Decryption - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
inh 3.6: Sơ đồ khối modul Encryption/Decryption (Trang 62)
Sơ đồ được miêu tả ở hình 3.7. - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
c miêu tả ở hình 3.7 (Trang 63)
Hình 3.8: Sơ đồ khối của modul Control - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.8 Sơ đồ khối của modul Control (Trang 64)
Hình 3.9. Giao diện làm việc của ISE 9.2i - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.9. Giao diện làm việc của ISE 9.2i (Trang 66)
Hình 3.10. Đặt project name là Doan_TN. - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.10. Đặt project name là Doan_TN (Trang 66)
Hình 3.11. Cửa sổ chọn các loại thiết bị phần cứng - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.11. Cửa sổ chọn các loại thiết bị phần cứng (Trang 67)
Hình 3.13. Cửa sổ chọn mã soản thảo chương trình - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.13. Cửa sổ chọn mã soản thảo chương trình (Trang 68)
Hình 3.12. Cửa sổ tạo một new file nguồn - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.12. Cửa sổ tạo một new file nguồn (Trang 68)
Hình 3.14. Cửa sổ tạo một thực thể - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.14. Cửa sổ tạo một thực thể (Trang 69)
Hình 3.15. Cửa sổ soạn thảo chương trình - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.15. Cửa sổ soạn thảo chương trình (Trang 69)
Hình 3.16 Cửa sổ khởi tạo tín hiệu Clock - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.16 Cửa sổ khởi tạo tín hiệu Clock (Trang 70)
Hình 3.17. Cửa sổ khởi tạo quá trình mô phỏng - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.17. Cửa sổ khởi tạo quá trình mô phỏng (Trang 71)
Hình 3.21. Kết quả giải mã với 192 bit Key và 128 bit data - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.21. Kết quả giải mã với 192 bit Key và 128 bit data (Trang 73)
Hình 3.20. Kết quả mã hóa với 192 bit Key và 128 bit data - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 3.20. Kết quả mã hóa với 192 bit Key và 128 bit data (Trang 73)
Hình 2.23. Kết quả giải mã với 256 bit Key và 128 bit data - đề tài “ tích hợp thuật toán mật mã rijndael trên FPGA”
Hình 2.23. Kết quả giải mã với 256 bit Key và 128 bit data (Trang 74)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w