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

Đề tài mã hóa advanced encryption standard sử dụng VHDL

26 2 0
Tài liệu được quét OCR, nội dung có thể không chính xác

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

Nội dung

Trang 1

Mã hĩa Advanced Encryption Standard si dung VHDL Nhĩm2: Trần Đình Cường Nguyễn Đức Hân Trần Trung Quang Mục lục Lời mở đầu Chương I: Phương pháp mã hĩa Rijndael 1.1 Mã hĩa Rijndael 1.2 Quá trình mã hĩa

1.2.1 Phép biến đổi SubBytes 1.2.2 Phép biến đổi ShiftRows

1.2.3 Phép biến đổi MixColumns

1.2.4 Thao tác AddRoundKey

1.3 Quá trình giải mã

1.3.1 Phép biến đổi InvShiftRows

1.3.2 Phép biến đổi InvSubBytes

Trang 2

Lời mở đầu:

Trong đồ án chúng ta tìm hiểu về phương pháp mã hĩa Rịjndael và sử dụng VHDL để lập trình mơ phỏng mã hĩa AES trên FPGA

Do tốc độ tính tốn của máy tính ngày càng tăng cao thuật tốn DES trở nên

khơng an tồn ( năm 1999 một mạng máy tính gồm 100.000 máy cĩ thể giải mã

một thư tín mã hĩa DES chưa đầy 24 giờ) Vì thế Cơng nghệ Hoa Kỳ chọn thuật

tốn thay thế DES và đã chính thức chọn Rijndael trở thành chuẩn mã hĩa nâng cao AES (Advanced Encryption Standard) từ ngày 02 tháng 10 năm 2000

Ưu điển của AES:

e _ Chúng em đã khơng đủ thời gian load đoạn mã DES để chạy thử thời gian

thực hiện thuật tốn nhưng theo tai liéu http://www.wattpad.com/137120?p=14

thì mã hĩa AES 10 vịng nhanh gấp 3 lần thuật tốn DES

° Mức độ an tồn AES đã khắc phục được điểm yếu của thuật tốn Square

(tiền thân của AES) bị phá bởi phương pháp thám mã phân tích do KNUDSENT khảo sát

e _ Bảng tra và phép thế trong AES cĩ tính chất phi thuyến mạnh dẫn đến

mức độ phân tán thơng tin phức tạp cũng tăng độ an tồn cho thuật tốn e _ Việc sử dụng các hằng số Reon[i ] trong bước sinh key mới được thay đồi

ứng với mỗi chu kỳ giúp hạn chế khả năng tính đối xứng trong thuật tốn

Những ưu điểm này đã giúp cho AES trở thành thuật tốn rất mạnh và đây triển

Trang 3

Chương 1: Phương pháp mã hĩa Rijndael

1.1 Mã hĩa Rindael

Phương pháp mã hĩa Rijndael bao gồm nhiều bước biến đổi được thự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ủa bước biến đổi tiếp

theo Kết quả trung gian giữa các bước biến đổi được goi la trang thai (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 dong va Nb

cột với Nb bằng với độ dài của khối chia cho 32 Ma khéa chinh (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 Trong một số tình huống, ma trận biểu diễn một trạng thái hay mã khĩa cĩ thể được khảo sát như mảng một chiều chứa các phần tử cĩ độ đài 4 byte, mỗi phần tử tương ứng với một cột của ma trận

1.2 Quá trình mã hĩa

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

1 AddRoundKey: cộng (@) mã khĩa cua chu kỳ vào trạng thái hiện hành Độ dài của mã khĩa của chu kỳ bằng với kích thước của trạng thái

2 SubBytes: thay thé phi tuyến mỗi byte trong trạng thái hiện hành thơng qua bảng thay thế (S-box) 3 MixColumns: trộn thơng tin của từng cột trong trạng thái hiện hành Mỗi cột được xử lý độc lập 4 ShiftRows: dich chuyên xoay vịng từng dịng của trạng thái hiện hành với di số khác nhau

Mỗi phép biến đổi thao tác trên trạng thái hiện hành S Kết quả S° của mỗi phép

Trang 4

biến đổi sé trở thành đầu vào của phép biến đổi kế tiếp trong quy trình mã hĩa

Trước tiên, tồn bộ dữ liệu đầu vào được chép vào mảng trạng thái hiện hành Sau khi thực hiện thao tác cộng mã khĩa đầu tiên, mảng trạng thái sẽ được trải qua Nr = 10, 12 hay 14 chu kỳ biến đổi (tùy thuộc vào độ dài của mã khĩa chính

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à hồn tồn tương tự nhau, riêng chu kỳ biến đổi cuối cùng cĩ sự khác biệt so với Nr—Il chu kỳ trước đĩ 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 Rijndael đượ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ỳ mã hĩa

2 Nr— I chu kỳ mã hĩa bình thường: mỗi chu kỳ bao gồm bốn bước biến đổi

liên tiếp nhau: SubBytes, ShiftRows, MixColumns, va AddRoundKey

3 Thực hiện chu kỳ mã hĩa cuối cùng: trong chu ky nay thao tac MixColumns

được bỏ qua

Trong thuật tốn dưới đây, mảng w[] chứa bảng mã khĩa mở rộng; mảng ïn[]

Trang 5

AđdRounđKay(State,RoundKey) wl i= ByteSub(State) ShiftRow(State) MixColumn¢State) 2 w[*NI| Š AddRoundKey(State,RoundKey) = RHR > 2 Z ByteSub(State) ShiftRow(State) AddRoundKey(State, RoundKey)

Hình 1 : Qua trinh ma hoa

1.2.1 Phép bién doi SubBytes

Thao tac biến đổi SubBytes là phép thay thé cac 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 hanh (dung bang thay thé (S-box) )

Trang 7

1.2.2 Phép biến đổi ShiftRows

Trong thao tác biến đổi ShitRows, 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 „ tại dịng r cột c sẽ dịch chuyển đến cột (c - shift(, Nb)) mod Nb hay: ,= « CG ) voi0<r<8 va0<c<Nb Giá trị đi sé shift(r, Nb) phụ thuộc vào chỉ số dong r va kich thước Nb của khối dữ liệu shift(r, Nb) Nb 6 1 4 ] 1 8 1

Hình 3: gid tri di sé shifi(r, Nb)

1.2.3 Phép bién doi MixColumns

Trong thao tac 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 nhân

(x) = a(x)@S(x) Voi a(x) ={03} + {01} + {01}x+r {02}

Trang 8

© a(x} Ẩ Ta ' '

Sop] “Ge for |S03 z So | Š0z loa |Soa So} Ste fia |i 5 S [So | She ha [Sa

L O i ; :

San| Š2- [a2 |#23 3 |Eio |5; faa |523

S30 53, 32 | $33 539 | 55, faa [33

Hinh4: Thao tac MixColumns tac động lên mỗi cột của trang thai 1.2.4 Thao tac AddRoundKey

Phương pháp Rijndael 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à Nb cộ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ĩa

của chu kỳ đang xét:

Trang 9

j =round *Nb " Ẩn, ' Soc + Sop 0p p 1S; |Š01 Ste 3 03 8ø 00 |Êml[| |& B |Ê03 nT a Pa - St, - %ø lai P——‡£” 5o |SM|}_——|5¿ w, |v, Mì ' iS L @® i aa 143 ' ‘ Ss '

S20 |S | 2 Paa 84p |SA| 22 |Êa3

53o |Êz1 | 33¿ ƑA3 Sp |Sa | Ša„ [833

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

1.2.4 Phát sinh khĩa của mỗi chu kỳ

Các khĩa của mỗi chu kỳ (RoundKey) được phát sinh từ khĩa chính Quy trình

phát sinh khĩa cho mỗi chu kỳ gồm 2 giai đoạn::

1 Mở rộng khĩa chính thành bảng khĩa mở rộng,

2 Chọn khĩa cho mỗi chu kỳ từ bảng khĩa mở rộng

* Xây dựng bảng khĩa mở rộng

Bảng khĩa mở rộng là mảng l chiều chứa các từ (cĩ độ dài 4 byte), được ký hiệu

là w[Nb*(Nr + 1)] Hàm phát sinh bảng khĩa mở rộng phụ thuộc vào giá tri Nk,

tức là phụ thuộc vào độ dài của mã khĩa chính

Hàm SubWord(W) thực hiện việc thay thế (sử dụng S-box) từng byte thành phần của từ 4 byte được đưa vào và trả kết quả về là một từ bao gồm 4 byte kết quả sau

khi thực hiệc việc thay thế

Hàm RotWord(W) thực hiện việc dịch chuyền xoay vịng 4 byte thành phần (a, b,

c, đ) của từ được đưa vào Kết qua trả về của hàm RotWord là một từ gồm 4 byte

thành phần là (b, c, đ, a)

Trang 10

Cac hang số của mỗi chu kỳ hồn tồn độc lập với giá trị Nk và được xác định

bằng Rcon[ï] = (RC[i], {00}, {00}, {00}) với RC[i] GF(2 ) và thỏa:

RCH]E1 (01))

RCH] =x ({02;)*(RCI-1]) =

Khĩa mở rộng được xác định như sau

- Tir W[0] đến W[Nk-1] lay tr Key ban dau

- Nk-1 <i<Nb*(Nr+ I) tính theo cơng thức

word temp = w[I - l]

temp = SubWord(RotWord(temp)) xor Rcon[ï / Nk] w[1] = w[i - Nk] xor temp

e Xac dinh khĩa của chu kỳ

Khĩa của chu kỳ thứ ¡ được xác định bao gồm các từ (4 byte) cĩ chỉ số từ Nb*i

đến Nb*(i+1) - Icủa bảng mã khĩa mở rộng Như vậy, mã khĩa của chu kỳ thứ

¡ bao gồm các phan tt w[Nb*i],w[Nb*i+1], ,w[Nb*(i+1) -1] Wo} 1] W2] 3) Wa) Ws] We |W) Wg) Wd | Wi) Wii] Mia] Wis] Wis] Wis] Wie] Wiz] - Mã khĩa chu kỳ 0 Mã khĩa chu kỳ I Mã khĩa chu kỳ 2 Hình 6: Đảng mã khĩa mở rộng và cách xác định mã khĩa của chu kỳ (Nb = 6 và Nk = 4) 1.3 Quy trình giải mã

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

2 Nr — 1 chu kỳ giải mã bình thường: mỗi chu kỳ bao gồm bĩn bước biến đổi

Trang 11

InvMixColumns được bỏ qua w IN," Ny} AddRoundKey(State, InvRoundKey) InvByteSub(State) InvShitRow(State) InvMixColumn(State) AddRoundKey(State,invRoundKey) InvByteSub(State) InvShiftRow(State) AddRoundKey(State, InvRoundKey) Hình 7: Quá frình giải mã 1.3.1 Phép biến đối InvShiftRows s op |801 |%0,2 |%03

S10 |Ê1 |ÊL2 |ÊL3 ellie,

Trang 12

Hinh 8 : Thao tac InvShiftRows tac động lên từng dịng của

trang thai hién hanh

InvShiftRows chính là phép biến đổi ngược của phép biến đổi ShitRows Dịng đầu tiên của trạng thái sẽ vẫn được giữ nguyên trong khác ba dịng cuối củ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 ShifRows với các di số Nb-shift (r, Nb) khác nhau

1.3.2 Phép bién déi InvSubBytes

Trang 13

1.3.3 Phép bién doi 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 đathức (x)={0b} + {0d} + {09)x+ {0e}

được sử dụng trong phép biến đổi MixColumns ;ÍJ 00 0 09 , ,109 0 0 0 , ‘Fo o9 0 o | | 9S § 0 0 09 0 , 1.4 Kết luận Khả năng an tồn

Việc sử dụng các hằng số khác nhau ứng với mỗi chu kỳ giúp hạn chế khả năng

tính đối xứng trong thuật tốn Sự khác nhau trong cấu trúc của việc mã hĩa và giải

mã đã hạn chế được các khĩa “yếu” như trong phương pháp DES Ngồi ra, thơng thường những điểm yếu liên quan đến mã khĩa đều xuất phát từ sự phụ thuộc vào giá trị cụ thê của mã khĩa của các thao tác phi tuyến như trong phương pháp IDEA (International Data Encryption Algorithm) Trong các phiên bản mở rộng, các khĩa được sử dụng thơng qua thao tác XOR và tất cả những thao tác phi tuyến đều được

cĩ định sẵn trong S-box mà khơng phụ thuộc vào giá trị cụ thể của mã khĩa Tính

chất phi tuyến cùng khả năng khuếch tán thơng tin trong việc tạo bảng mã khĩa mở rộng làm cho việc phân tích mật mã dựa vào các khĩa tương đương hay các khĩa cĩ liên quan trở nên khơng kha thi

Đối với phương pháp vi phân rút gọn, việc phân tích chủ yếu khai thác đặc tính

tập trung thành vùng của các vết vi phân trong một số phương pháp mã hĩa Trong trường hợp thuật tốn Rijndael với số lượng chu kỳ lớn hơn 6, khơng tồn tại

phương pháp cơng phá mật mã nào hiệu quả hơn phương pháp thử và sai Tính

Trang 14

chất phức tạp của biểu thức S-box trên GF(2 ) cùng với hiệu ứng khuếch tán giúp cho thuật tốn khơng thể bị phân tích bằng phương pháp nội suy( theo tài liệu [2]) 1.5 Ví dụ Sơ đồ ở dạng thập lục phân cho mã hĩa AES mảng state Đầu vào Nb=4 và khĩa Nk=4 Input = 3243f6a8885a308d3 I3 198a2e0370734 Key = 2b7el51628aed2a6abf7158809cf4f3c

Trang 15

£1|c1|7c|5d a1|78|10l4c a1|78|10|4c 6d|11|db 6 0092| c8|b5 63|4f|e8|d5 4f|e8|d5 |63 £ 6£|4c| 8b|d5 a8/29|3d/03 3d|03|a8|29 55|e£f|32|0c £c|d£|23|fe £fe| fc|d£|23 7a|l£fd 26|3d|e8|fd £#7|27|9b|54 £7|27|9b|54 14|46|27|34 4e|5£f£|84|4e 3 0e|41|64|d2 ab| 83 |43|b5 83|43|b5 |ab 15|16|46|2a ® 54|5£|a6la6J _

2e|b7|72|8b 31|a9|4o|3d 40|3ad| 31 |a9 b5|15| 56|d8 £#7|c9|4£f|dc 17|7d|a9|25 £O |££ |d3|3£ 3f|fO|ff|d3 b£|ec|d7|43 Oe|f3|b2|4£ Sa|l9|a3|7a be | d4 |0a| da be | d4 | 0a |da 00|b1|54|fa ea|b5| 31|7£ 8 41|49|e0|§c 83|3b|e1|64 3b|e1|64|83 51|c8|76|1b e d2|8d| 2b|8d| _

42|dc|19|04 2c|86|d4|£2 d4 | £2|2c|86 2£f|89| 6d| 99 73|ba| £5|29 b1|1f|65|Oc c8 |c0 |4d|£e £e| c8|c0 |4d di|ff|cdlea 21|d2|60|2£f£ ea|O04| 65|85 87|£2|4d|97 87|f£2|4d|97 47|40|a3|4c ac|19|28|57 9 83|45|5d| 96 ec | 6e |4c|90 6e| 4c| 90 |ec 37|d4|70|9£ e 77|fa|d1|5c| _

5c|33| 98|bO 4alc3|46|e7 46|e7|4a|c3 94|e4| 3a|42 66|dc|29|00 £0|2d| ad|c5 8c|d8 |95|a6 a6|8c|d8 |95 edla5|a6|bc f3|21|41|6e eb| 59| 8b|1b e9|cb |3d|a£ e9|cb|3d|a£ d0 |c9| e1 |b6 10 40|2e|lallc3 09/31|32|2e 31|32|2e|09 14|ee|3£|63| _ £2|38|13|42 89|07|7d|2c 7d|2c|89|07 £9|25|Oc|Oc 1e|84|e7|d2 72|5f|94|b5 b5| 72|5£|94 a8|89|c8la6 output Chương 2 VHDL sử dụng AES 2.1 Tống quan về ngơn ngữ VHDL

VHDL là cơng cụ đề mơ hình hĩa phần cứng phần cứng

Một chương trình viết bằng ngơn ngữ VHDL là một chương trình cĩ cấu

tric Top-Down Dé mé ta mét hệ thống lớn ta tiến hành chia nhỏ hệ thống đĩ ra

theo các nhĩm nhỏ hơn cĩ các đặc điểm chung nhất Rồi lại tiếp tục chia nhỏ các

nhĩm nhỏ hơn đĩ cho tới khi trở về thành các phần tử đơn giản thuận lợi cho

việc viết mã mơ tả cho đối tượng đĩ Ta cĩ thể gom những phần tử đơn giản đĩ

lại thành một đối tượng thư viện để thuận lợi sử dụng trong các thiết kế sau

Trang 16

Cau tric Top - Down entity Full_Add Macro entity Half_Add Leaf Cell

Ngơn ngữ VHDL cĩ các đơn vị thiết kế là: Entity, Architecture,

Configuration, Package, Package Body, Library Chúng được chia làm hai loại: Primary (khơng phụ thuộc vào các đơn vị thiết kế khác) và Secondary (phụ thuộc vào các đơn vị thiết kế Primary)

Cấu trúc của một chương trình viết bằng VHDL bao gồm phần khai báo Entity và thân chương trình Architecture Trong Architecture sẽ cĩ các Process và các lệnh nằm ngồi các Process Các lệnh nằm trong Process sẽ

được thực hiện tuần tự cịn các lệnh nằm ngồi Process sẽ được thực hiện đồng

thời Ngơn ngữ mơ ta phần cứng VHDL cịn hỗ trợ rất nhiều các cấu trúc lệnh và

các tiến trình đặc thù để quá trình mơ tả phần cứng cĩ thể diễn ra thuận lợi và

Trang 17

chat tré

Chúng em lựa chọn FPGA vì đây là thiết bị số cĩ những ưu điểm khả trình , dé

dàng trong quá trình kiểm thử, và tối ưu hĩa mã , khả năng xử lý song song nhanh

Đặc biệt FPGA cĩ thể đĩng vai trị prototyping các thiết kế , trước khi chuyển sang thành các mạch số chuyên dụng

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

State data out 128 bit

En=1 hay 0 Mã hĩa/ Giải mã Clk Round 128 key_in key Mã khĩa mở rộng

Thiết kế trên Chip FPGA của Xilinx

Ban đầu chúng em sử đụng trên chip mặc định của ISE 8.2i Family Spartan3

Device XC3S200

Package FT256 Speed -4

Kết quả mơ phỏng Entity Byte_sub số Slices là 1024 chiếm 53%, số LUTs là 2048 chiêm 53%, sơ IOBs là 258 chiêm 149 %

Trang 18

Số IOBs lớn hơn số lượng cĩ của chip dịng Spartan3 a0 Sources for| Synthesis: ¥| Number of[LUTs —_¥] Hierarchy [byte subt > (09 we3s200-4256 8 fig|eFbsbyte_sub - top_aes_RTL (byte_ sub1.vF| L ra Timing Constraints 1+ D Pinout Report © Dy clock Report

oe IBI|Í[ — Di Ptace and Route Messages | Sources snapshots | [Ư) Lbvaies E D Trưng Messages

Project Properties

21] © Enable Enhanced Design Summ _|

Processes: ^ F CO Enable Message Filtering “1 Display Incremental Messsages

[Enhanced Design Summary Contents | & Show Pattition Data > D Show Enors T=) Add Existing Source

FT Create New Source 4 Design tities xi Sau đĩ phải lựa chọn dịng chip mạnh hơn Family Virtex4 Device XC4VFX12 Package FF668 Speed -12 os ng SS Enrore .” — | 82 ere thi2 1228.33

Number of 4 input LUTs 2048 3840 53% Number of bonded IOBs 258 173 149% Number of GCLKs 1 8 12%

Kết quả mơ phỏng Entity sub_bytes sé Slices là 1024 chiếm 18%, số LUTs là 2048

chiếm 18%, số IOBs là 258 chiếm 80% Sources for| Syrthesis: v | Number of] LUIs | Hierarchy I Ế]bxe se (%-[X3 ¡be sub -top aes,RTL [byte_sub†.vF| + 2 Summary ro Propetties FL 1Timing Constraints LIPmoa Repott

& D) Clock Report

ors and Warnings ) Synthesis Messages + BB Translation Messages ~ [Map Messages } L)Place and Route Messages FL Timing Messages Project Properties

| @ Enable Enhanced Design sine F 1 Enable Message Fitering

C- Diplaylncremertal Messsages

[Enhanced Design Summary Contents

Trang 19

Két qua m6 phong Entity shift_row : sé Slices 1a 0, sé Slice Flip Flops là 128

chiếm 1%, số IOBs 1a 258 chiếm 80 %

_^I J[ 35 FPGA Design Summary

eon Overview [shit_romise | +2) Summary ath Ỉ F Lii08 Propetties 7 FD Timing Constraints F BDPnoutRepot —[eck Repot | Etos and Warings Synthesis Messages LD Translation Messages [MapMessages [Place and Route Messages es = [TimmngMessages

SSeS qed Enable Enhanced Design Summ:

- Dl Enable Fier Number of Sices

No flow available [ee “C1 Display incremental Messsages ||] | Number ene earn epee of Sice Fip Flops 128 10944 s| 8| |8

the Di 2usssg Co | & Show Pattition Data Nưnber oí bonded I0Bs 28 380

© D0 Show Enors «|| | Number of GLK | 1 3 |

Két qua m6 phong Entity mix_column : sé Slices la 131 chiếm 2%, số LUTs là

244 chiém 2%, s6 IOBs 1a 258 chiếm 80% 1 [| FPGA Design Summary Sources for] Synthesis x] Number off LUTs IIH Z5Design Overview Hierarchy F Summary FS] mix_column i L108 Properties bị Ch xcdvix 2121668 & Li Timing Constraints L [N9 mix_column - top_aes_ATL (mix_columi| ff -~ (2) Pinout Report = L ~D) Clock Report Errors and Wamings Bone — thi2 |) Synthesis Messages 12:51:28 2010 fF D Translation Messages FL) Map Messages } LiPlace and Route Messages ‘No partition information was found + [Timing Messages sz Project Properties ^ Gg Sources Snapshots | [P) Libraties

21} Enable Enhanced Design Sum - |

Processes: +L Enable Message Fitering a |_ Available | UHmaian

FED Add Existing Source “1 Display Incremental Messsages Number of Slices 131 5472

Enhanced Design Summary Contents | Number of 4 input LUTs 244 | 10944

TD Create New Source

i + aa [EM ShowPartion Data T Nưnbet oí bondedI0B: is 28 320 W

YB Design Uiites LD Show Etrors Is sẽ ĩ

Ki 1 gIÌ T1 sewzreas jn dell [Member of SLs a

Trong đồ án cĩ sử dụng các hàm

BYTE_SUB thay thé phi tuyến mỗi byte trong biến state độ dai 128 bit ( 16byte)

thơng qua bảng thay thế (S-box)

SHIFT_ROW dịch chuyên xoay vịng từng địng của bién state MIX_COLUMN trộn thơng tin của từng cột trong biến state

Trang 20

ADD_ROUNDKEY cộng mã khĩa của chu kỳ vào biến state

INV_BYTE_SUB thay thé phi tuyén mdi byte trong bién state thơng qua bảng

thay thế(_ — )

INV_SHIFT_ROW dich chuyén xoay vong tig dong cua bién state INV_MIX_COLUMN trộn thơng tin của từng cột trong biến state Tương ứng là các Entity sử dụng các funtion trên

Entity BYTE_SUB thực hiện bước subbyte , đây cũng là entity tốn nhiều dung lượng chip nhất , do kích thước của bảng tra

Entity SHIEFT_ROW thực hiện bước shiftRows

Entity MIX_COLUMN thực hiện bước mixcolumn Entity KEY_GEN thực hiện sinh mảng Key

Entity INV_BYTE_SUB thực hiện bước invsubbyte

Entty INV_SHIFT ROW thực hiện bước Invshiftrow Entty INV_MIX_COLUMN thực hiện bước invmixcolumn

Cấu trúc của code VHDL

> Xây dựng thư viện Rijndael

Thư viện Rijndael : Vì khối mã hĩa / giải mã gồm 4 entity nĩi tiếp với nhau ,

chúng đều cĩ truy nhập đến các kiểu dữ liệu chung, đặc biệt là bảng tra S_box nên cần I package đề tiện cho việc ghép nối các entity sau nay Package

rijndael_package gém cac funtion và các kiêu dữ liệu lưu trữ trong thư viện Các Entity déu str dung use work.rijndael_package.all;

Sau khi khai bao cac funtion trong Package Rijndael tiép dén phan Packagebody gom cac funtion

Trang 21

Thiết kế các Entiy thực hiện các bước mã hĩa Sau đĩ tổng hợp các Entity bằng

cach port map cdc chan vào ra, đầu ra của các entity liên kết với nhau , ví dụ đầu ra cua Entity sub_byte 1a đầu vào của Entity shift row

2.3 Kết quả mơ phỏng

Kết quả mơ phỏng cho một vịng mã hĩa gồm các bước ADD_ROUNDKEY , BYTE SUB, SHIFT ROW, MIX COLUMN Thời gian mã hĩa cho mỗi chu kỳ

đầy đủ 4 bước là khoảng 450 ns

ISE - E:\ise\AES1\AES1 ise - [Simulation]

[iQ File Edit View Project Source Process Test Bench Simulation Window Help

inaNZ#ZjšlIx fA x| 2 œÍ 3Í © 32 »x @Í Bì [[2xjIse 5 m H2 MljđA iã[mee=xe0els xỈ|| 2 ef ar el | Hee SH oH Olle E) =5%| 45% % % 9 XỈ|[Í đế 4 222230 a 6b yšJn00 - Now: 675 ns 0ns 135 270ns 405 540ns : 1 tot i SL Ì L1 1 Ỉ LS 4 ! Mark 1 J l J | J l J L Sst 0 Qlen 0 3i 8X state[127:0] 128' (2800 128°:3243F6A8885A308D31 31 98A2E0370734 —————— - |:¿(.s(1:0 128' đ28n00 X 128112B7E151628AED2ABABF7158809CF4F3C 2] & Heataoutti 27:0) 129 ( 128hUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU: X5E0CB19! Š Fie Edit View Project Source Process TestBench Simulation Window Help

JnaHø[ưšilIx à đ x|ø2 &[B|J22 3» ®[ m[[Alla 3 m m2 w|laaậ[ ————— xi9

[ef Fa # % s % 3t|l@ @|lE s=[= 3> 5 >[ 4 34x x 9 XI † s3 223⁄X[Đua 6b gi]ốn š

xd

oe a Se secon lệ | At poy a Pa a |

IrEbmam— I tc 0 i

E- €]xc35200-4f256 ll} ast 0

al [ee ei ave Tia # @state[127:0] 128" 128'.193DE3BEADF4E2289ACB8D2AE9F84808

Bg Sources Ay ener #¡ 8€ b[127:0] 128 128D42711AEEOBF 98F 1B8B45DE51E415230

entity shift_row

Trang 22

Xilinw - ISE - E:\ise\shift_row\shift_row-.ise - [Simulation]

1G File Edit View Project Source Process Test Bench Simulation Window Help

Ja3NĐ#| 5| tà ä x[ø œ[ 8|J22 Ð 3 »x @[ Bì Í[Allle ä m mịI 2£ [law NE

lea a (ere eS Olle =l=2 = eel facra(2exx 0 Gr zo 7

ad

Bố censia BỊ eee ae = Nor i 200 400 ns 600 800 ns

Fait row “Mak 0

‡c35200-4ft256 - mm ast 0

[aH a) sf |] © Ketaters27:0) 12 128ID42711AEEDBF 98F 1BBB45DE51E415230,

Dunas [ | = QKdataouttt27:0) 128 QX_ 128HD4BFSD30E0B452AEB84i1IFIiE2/98E5 7

entity mix_column

[Foes tune aiid Coty [a File Edit View Project Source Process Test Bench Simulation Window Help JjaĐø [Š|Iw à đ x| 9 œ[ |2 © 3 »x #| R [[2Alllsa 5 m mỊ||2 Xe || lif í# 6 [@ 3t $% % 34|I@ @lllS =[= > 5s 3[4+ 3xx 9 x|l† |2 2x[Ø ‹ Sĩ > 5 |[r0 „ 2d Sources for| Behavioral =] Number of [UT= = AC00%T Now: 200 0 800 80 tens rs Ị ee LÍ Pye F Mok 0 | J | | Ê-C1xc%20040258 Uist 0

+ Sea eee) 8 8€stale[l2701_ 128 C 128HD4BF5D30EDB452AEBB4I1IFIIE2/88E5

BH TESET |2 8Xeaounzro, 129 @28nU,X 128n048881E5E0©B198A48F8D37A28082040

entity key_gen

IEixilinx - 1E - E:\ise\key_gen\key_gen.se - [Simulation]

1G File Edit View Project Source Process TestBench Simulation Window Help

Ja32Hø[ư|Jx Ð ä x[s œÍ [J2 © x #[ 8 JAjj s_n B2 w[laa a[—_— —— xjJjg| —-

Jorg Ga 26% 20119 Oll; Eg|=°35%|4s+4 +» 9Xili h5 22243, a6 00 : ee = ee peel pr B 44ns 66 88ns [IFElaen ĐWroundkey[12 128' (eno, 1282B7E151828AED2ABABF7158809CF4F3C Sexe j|] ® Kroungos) 2 Co X 1 al ESRI fa ti (SE Trị a # MK dataouti 27:0) 128° @2enU.X 128hA0FAFE1788542CB123A339392A6C7605 i Sources Snapshots |_[Ð Libraies entity inv_byte_sub

ES Xilinx - 1SE - E:\ise\int_byte_sub\int_byte_sub.ise - [Simulation]

[i File Edt View Project Source Process Test Bench Simulation Window Help

a Enea eee OOsneilaw Ao!

figd GRRE Ole S(SLEZlAAAH OMT ACA SHR Ow Gd zl -

Trang 23

entity inv_shift_row

[iQ File Edit View Project Source Process Test Bench Simulation Window Help

toe ee ee ee ee eee ee OO) 2 |) OO i FI

[EZ Z2AAAH OBER CAZLEH OG Fito: Sources for| Behavioral] Number of [ LUT= ee la To ie ` ms ea 6= a6nni 666p T- ỂlÏinv_shữt ton Mak 0 Sr (3 xc3s200-41, 3t 0

& ie %@(sialell2701 128 428ND) 1281ID4BF5D30E0B452AEB84111F11E2788E5 aE ES # QC dataout{t27:0) 126' (2anuX 128hD42711AEEDBF 98F 188B45DE51E415230

entity inv_mix_column

[File Edit View Project Source Process Test Bench Simulation Window Help

JD3BZ[ưs[Jx tà â x[ø &[5iJ22 3» @[R[[Allle 3 miJ< w|l#@iã[ ——————5TIs (ir er fa [ESE SEE HO Oll= 2S2(444% Ow PACAP OX G Gd mịn Đ„ 24 x ze Now: Sources for] Behavioral _] Number of:] LUT =: 110ïns nine # đa 88 88ns pee ee Se FB Jinv_mix_column ek 0 E- £lxc3z200-4f256 Uist 0

& Fijieavhd © Mstatet27:0) 128' 428n0.X 17281046681 E5E0CB199A48F8D37A2806264C og 5 he & RK dataout{1 27:0) 128' đ28hU.X: 128hID4BF5D30E0B452AEB84111F11E2798E5

2.3 Kết luận

Ta da sir dung phan mém Xilinx ISE 8.2i để mơ phỏng được thuật tốn AES Kết quả mơ phỏng trên các entity là chính xác Trong thiết kế đã cố gắng khai

thác tính song song :

- Trong thao tác tra bang S_box , da tiền hành đồng thới với 16 Byte dữ liệu - Tach qua trình sinh Key (Key Gen) doc lập với quá trình mã hĩa, trao đồi

thơng tin qua tín hiệu Round

Nhược điểm : Số lượng chân vào ra là lớn nên phải sử dụng những dịng chip lớn

(Family Virtex4) Đĩ một phần là do kích thước của bảng tra , một phần khác là

do nhĩm để đơn giản trong thiết kế , đã chọn các entity cĩ quá nhiều đầu vào I/O song song ( 128 bit với các hàm như Sub_byte , và 258 đầu vào đối với entity tơng

)

Vấn đề về bảo mật key,Trong thiết kế , Key được đưa vào trực tiếp , chưa đảm

bảo an tồn thơng tin

Trang 24

2.4 Hướng phát triển

Sản phẩm nếu chuyên thành mạch cứng cĩ thể ứng dụng trong truyền tin , mã hĩa dữ liệu trước khi truyền đi và bên nhận sẽ cĩ bộ phận giải mã tín hiệu để khơi phuc thơng tin gốc Thiết bị cĩ thể phối hợp với các thiết bị mạng để tạo nên mạng riêng ảo ( VPN) Ứng dụng vào trong khĩa số dùng dé mã hĩa khĩa, tăng khả năng bảo mật của khĩa

Code cần được tối ưu hĩa nhiều hơn, để giảm số luong I/O dau vao Co thé dé

ra giải pháp , tạo một module truyền-nhận nĩi tiếp ở đầu vào và đầu ra của FPGA ,

sau đĩ lưu các khối đữ liệu vào RAM, như vậy, các khối mã hĩa sẽ xử lý dữ liệu nội bộ trong FPGA Bảng tra cĩ thể đặt trong ROM ngồi để tiết kiệm khơng gian nhớ

Trong tương lai , cac van dé vé bao mat Key ma hoa cần được cân nhắc , ví dụ ,

tạo một phan cig dé lu Key dang USB

2.5 , Nhận xét về nhĩm và phân cơng trong nhĩm

AES là một phương pháp mã hĩa | chiều rất phổ biến hiện nay , với câu trúc khá đơn giản về mặt tốn học , AES đã được thẻ hiện đưới nhiều ngơn ngữ và phần

mềm khác nhau , trong đĩ các đoạn code cũng như giả mã C là phổ biến nhất

Nhận thấy việc lập trình AES trên FPGA , nếu thực hiện từ bước đầu sẽ mắt quá

nhiều thời gian so với thời lượng 1Š tuần của mơn học , nên nhĩm đã lựa chọn giải

pháp : tham khảo thư viện sẵn cĩ , và áp dụng các bản lập trình trên ngơn ngữ C đê hồn thành các Entity cũng như các Function Cụ thể , nhĩm đã phát triên từ một thư viện rinjadael , bao gồm bảng tra S_box,, các hàm Byte_sub ,

inv byte sub, shift row func, và inv shift row_ func Tuy nhiên, 2 hàm trong thư viện mix _column, inv mix column, roundkey gen hoạt động khơng tốt, vì

vậy , nhĩm em đã tổ chức viết lại các hàm này , đặc biệt 2 hàm Mix_column và

inv_mix_column cĩ gọi đến 2 hàm POLY_MULTD_FUNCT và POLY_MULTE_FUNCT được viết dựa trên chương trình C

Về phân cơng cơng việc :

- _ Việc Download các tài liệu và tìm hiểu cơ sở tốn học của thuật tốn , phân

Trang 25

- Viết lại các function roundkey gen, entity tổng hợp , kiểm thử, viết báo cáo nhận xét cho entity và báo cáo tơng hợp - Nguyễn Đức Hân

-_ Viết lại các function POLY _MULTD_FUNCT và

POLY MULTE FUNCT ,Mix_column và inv mix_column - Trần Đình

Cường

Trang 26

Reference

1 http://vi.wikipedia.org/wiki/AES

2 Mã hĩa và ứng dụng - Ts Dương Anh Đức và Ths Trần Minh Triết Khoa cơng nghệ thơng tin, đại hoc khoa học tự nhiên TPHCM 3 www.fpgaworld.com

4 Bruce Schneier (1995), Applied Cryptography: Protocols,

Ngày đăng: 23/08/2022, 20:53

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

TÀI LIỆU LIÊN QUAN

w