0
Tải bản đầy đủ (.pdf) (100 trang)

II PHÁP TRI2N KHAI TH UT TOÁN AES TRÊN NN FPA

Một phần của tài liệu SỬ DỤNG CÔNG NGHỆ CỨNG HÓA FPGA TRONG MÃ HÓA DỮ LIỆU (Trang 73 -95 )

Ch ng này t p trung xây d ng gi i pháp t#ng quát 67389:3?85 ?3?CDA3 67389:3EFG3?KLA3BXA=3A=8 3MNOE3W :3?KLA3BDB3SL53B 53; 3=> >3T8DT3; >3B8 3

cài t cho thu t toán mã hóa trên công ngh FPGA.

3.1. Gi/i pháp t3ng quát v0 tri4n khai thu+t toán AES trên n0n FPGA 3.1.1. Mô t/ l$u , t3ng quát c*a b1 mã hóa và gi/i mã AES

L u t#ng quát c a h th ng AES (hình 3.1) có th chia làm ba kh i l n: Kh i KeyExpasion, kh i Data và kh i i u khi n trung tâm CPU, c) th :

- Kh i KeyExpansion: Có nhi m v) t o ra các t+ khóa phát sinh t+

khóa g c thông qua quá trình sinh khóa. Các t+ khóa sinh ra c l u vào trong kh i Key Storage.

- Kh i Data là kh i ch u trách nhi m chính trong quá trình mã hóa (gi i mã). Nó quay vòng Data và k t h p v i các t+ khóa trong quá trình sinh khóa. - Kh i CPU i u khi n ho t ng c a hai kh i Data và kh i KeyExpansion. Nó t o ra các tín hi u giúp ng b các quá trính x lí ó.

3.1.2. Kh i Data c*a b1 mã hóa

Theo tính ch$t c a chu trình mã hóa thì ( vòng quay $u tiên không th c hi n bi n #i d li u qua các kh i SubByte, ShiftRow và MixColumn mà d li u c a thˆng vào kh i AddRoundKey k t h p v i t+ khóa g c O_key.

T+ vòng th hai t i vòng quay th 9, th c hi n bi n #i d li u qua y các kh i bi n #i: SubByte, ShiftRow, MixColumn và AddRoundKey. Cu i m%i vòng này d li u l i k t h p v i m t t+ khóa phái sinh S_Key t ng

ng v i s th t c a vòng.

Vòng quay cu i cùng, d li u sau khi qua các phép bi n #i SubByte và ShiftRow thì c a thˆng vào kh i AddRoundKey k t h p v i t+

khóa cu i cùng mà không qua kh i MixColumn. D li u ra c a vòng này chính là d li u ã c mã hóa.

3.1.3. Kh i KeyExpansion

Không gi ng kh i Data, kh i KeyExpansion c a b mã hóa và gi i mã là hoàn toàn gi ng nhau. i u này lý gi i là do b mã hóa và gi i mã s d)ng chung m t t p t+ khóa.

T+ khóa trong kh i KeyExpansion s& c x lí theo các t+ 32 bit. i v i b gi i mã 128 bit khóa b gi i mã s& th c hi n vi c bi n #i 40 l n, m%i l n bi n #i t o ra m t t+ khóa con có dài 32 bit (Wi ). i v i quá trình sinh khóa có ba phép bi n #i chính: SubWord, Rotword, Rcon. i v i các l n bi n #i chia h t cho 4, Wi th c hi n bi n #i l n l t qua các kh i: SubWord, Rotword, Xor v i Rcon và Xor v i Wi-3. i v i các l n bi n #i còn l i, Wi ch th c hi n phép Xor v i Wi-3. Cu i m%i chu trình bi n #i, các t+ khóa con c l u trong vào kh i Key Storage.

3.1.4. Kh i CPU và kh i Data c*a b1 gi/i mã

Kh i CPU có ch c n ng i u khi n quá trính sinh khóa và quá trình quay vòng d li u. CPU nh n yêu c u t+ thi t b ngo i vi (nh n d li u t+

máy tính x lí). N u d li u là m t t+ chìa khóa, CPU s& a chân ra “key” lên m c cao ng th i a chân ra “data” xu ng m c th$p và b m “req_key_in” i u khi n các vòng quay c a kh i KeyExpansion. N u là d li u c n mã hóa CPU s& a chân “data” lên m c cao ng th i chân “key” xu ng m c th$p và t o b m “req_key_out” i u khi n quá trình quay vòng data và quá trình xu$t Key c a kh i Key Storage. Trong s thu t toán d i ây, ta th$y rõ quá trình x lí c a CPU là m t vòng liên t)c.

Do tính ch$t kh ngh ch c a các phép bi n #i SubByte, ShiftRow, MixColumn và AddRoundKey nh ã nói ( ch ng tr c, ta s& có hai cách xây d ng b gi i mã. D i ây là s thu t toán c a c hai ph ng pháp ó.

Theo hai s này ta có th d2 dàng nh n ra, s th nh$t có thi t k ph c t p và c ng k nh h n nhi u so v i s th hai (có l i d)ng tính ch$t c bi t c a các phép bi n #i). Ngoài ra s th hai có thi t k t ng t nh so thu t toán c a b mã hóa ch khác ( ch% có thêm kh i InverseMixColumn bi n #i S_Key tr c kh i AddRoundKey. i u này s&

khi n cho vi c th c thi b gi i mã h t s c n gi n, vì ta ch c n thay các kh i SubByte, ShiftRow và MixColumn bPng InverseSubByte, InverseShiftRow và InverseMixColumn ng th i thêm kh i InverseMixColumn vào sau kh i Key Storage là hoàn thành b gi i mã.

Nh c i m l n nh$t c a ph ng pháp này chính là vi c ph i thêm kh i InverseMixColumn, i u này làm t ng dung l ng c a h th ng. Tuy nhiên nó gi m thi u c ph c t p trong i u khi n và công s c thi t k .

Hình 3.6. S thu t toán kh i gi i mã - D ng 2

3.1.5. Thi t k chi ti t các kh i ch-c n ng c*a b1 mã hóa

- Kh i AddRoundKey: AddRoundKey th c ch$t là m t c#ng XOR hai u vào 128 bít c a d li u và t+ khóa.

Hình 3.7. Kh i AddRoundKey

- Kh i SubByte: Nh ã c p, u ra c a kh i SubByte là ánh x c a u vào qua b ng s-box.

Hình 3.8. Kh i SubByte

S-box là m t b ng g m 16 hàng và 16 c t t ng ng v i 256 tr ng h p u vào.

- Kh i ShiftRow:

+ Kh i ShiftRow có u vào 128 bit (127 downto 0) và u ra 128 bit (127 downto 0).

+ u vào và u ra c a kh i này c b trí thành m t b ng 4 x 3. Kh i Demux s& th c hi n chia u vào thành b ng u vào và kh i Mux s&

bi n #i b ng u ra thành u ra.

- Kh i MixColumn: ây là kh i có c$u t o ph c t p nh$t trong các kh i ch c n ng c a h th ng AES. S kh i c a MixColumn nh sau:

Hình 3.10. Kh i MixColumn

Hai kh i Demux_4 và Mux_4 th c hi n t ng t nh kh i Demux và Mux trong kh i ShiftRow ( trên. Các kh i SubMixColumn l n l t bi n #i các byte trong các c t t ng ng.

Vi c th c hi n kh i SubMixColum d a trên các kh i XOR_8 và kh i Xtime. Kh i XOR_8 th c hi n phép XOR v i hai u vào 8 bit.

Hình 3.11. Kh i Xtime

V i các u ra khác nh b1, b2, b3 , th c hi n t ng t ch c n thay #i th t u vào, ta c các phép bi n #i “dòng” :

b1 = ‘01’*a0 ⊕ ‘02’*a1 ‘03’ * a2 ‘01’*a3 b2 = ‘01’*a0 ⊕ ‘01’*a1 ‘02’ * a2 ‘03’*a3 b3 = ‘03’*a0 ⊕ ‘01’*a1 ‘01’ * a2 ‘02’*a3

K t h p các phép bi n #i “dòng” trên ta có kh i SubMixColumn.

3.1.6. Thi t k các kh i ch-c n ng c*a b1 gi/i mã

Các kh i ch c n ng c a b gi i mã có th th c hi n m t cách hoàn toàn t ng t nh b mã hóa. Tuy nhiên kh i InverseMixColumn thì th c hi n ph c t p h n r$t nhi u do ph i th c hi n các phép nhân v i các ch s r$t l n: Nhân v i 09h, 0Bh, 0Dh, 0Eh thay vì các phép nhân 01, 02, 03 ( b mã hóa.

Hình 3.13. Kh i SubMixColumn

- Nhân vAi 09h: Phép nhân v i 09h (9 = 8 + 1) th c hi n nh sau:

- Phép nhân vAi 0Bh: Phép nhân v i 0Bh (B = 8 + 2 + 1) th c hi n nh sau: Hình 3.15. Kh i nhân 0Bh - Phép nhân vAi 0Dh: Phép nhân v i 0Dh (D = 8 + 4 + 1) th c hi n nh sau: Hình 3.16. Kh i nhân 0Dh

- Phép nhân vAi 0Eh: Phép nhân v i 0Eh (E = 8 + 4 + 2) th c hi n nh sau:

K t qu cu i cùng là kh i InverseMixColumn có k t c$u t ng t nh MixColumn c a b mã hóa.

Hình 3.18. Kh i InverseMixColumn

3.1.7. Thi t k chi ti t cho kh i KeyExpansion

Hình 3.19. S kh i KeyExPansion

- Kh i RotWord

Hình 3.20. Kh i RotWord

- Kh i SubWord: Kh i SubWord chính là b n kh i SubByte ghép l i v i nhau.

- Kh i Rcon:

Hình 3.22. Kh i Rcon

- Kh i KeyStorage:

Kh i KeyStorage có ch c n ng l u tr t+ khóa g c và các t+ khóa phát sinh t o ra. ng th i, nó c ng có nhi m v) a ra các t+ khóa thích h p theo yêu c u c a b mã hóa hay gi i mã.

Hình 3.23. Kh i KeyStorage

Kh i DemuxKey có nhi m v) nh n chìa khóa gôc (O_key) và các t+

khóa phái sinh h i ti p r i phân chia chúng thành các word cho vòng sinh khóa ti p theo.

Hình 3.24. Kh i DemuxKey

3.1.8. Kh i CPU - ,i0u khi4n b1 gi/i mã

Kh i CPU có nhi m v) nh n d li u t+ kh i giao ti p v i máy tính, phân lo i d li u thành hai ng: Data và key d a trên tín hi u select. Sau ó CPU t o ra các tín hi u req_key_in và req_key_out i u khi n kh i

KeyExpansion và kh i Data. Ngoài ra khi nh n c tín hi u Reset thì kh i CPU s& tr( v tr ng thái kh(i t o ban u.

Hình 3.25. Kh i CPU

Các tín hi u req_key_in và req_key_out có gi n th i gian nh sau: Tr ng h p select = “01” - Quá trình x lí Key.

Hình 3.26. Gi n th i gian i u khi n vòng key Tr ng h p select = “10” – Quá trính x lí Data

3.1.9. Kh i giao ti p vAi máy tính

H AES giao ti p v i máy tính thông qua c#ng RS232. D li u c n mã hóa (gi i mã) và t+ khóa t ng ng s& c truy n t+ máy tính xu ng kit thông qua c#ng COM. Sau khi hoàn t$t quá trình mã hóa (gi i mã) d li u ta xây d ng kh i giao ti p v i máy tính d a trên kh i RX có s[n c a Xilinx Inc. Sau kh i RX là kh i m d li u. Nh ta ã bi t u vào c a kh i AES là 128 bit trong khi d li u nh n t+ c#ng COM là 8 bit do ó c n có kh i m d li u này. phân bi t âu là t+ chìa khóa âu là d li u c n mã hóa (gi i mã) ta ph i g i thêm m t byte ng b : N u là byte “01”h thì ó là t+ khóa, n u là byte “02”h thì ó là d li u.

Hình 3.28. S kh i giao ti p v i máy tính

3.1.10. SD dHng ch ,1 cài ,Kt ECB cho gi/i pháp

H u h t các ch cài t òi h"i m t chu%i nh phân, th ng c g i là m t vector kh(i t o, cho m%i ho t ng mã hóa, vector kh(i t o c s d)ng m b o là b n mã khác nhau c s d)ng ngay c khi b n rõ t ng

t c mã hóa nhi u l n m t cách c l p. Thu t toán mã hóa kh i có m t ho c nhi u kích th c kh i khác nhau, nh ng trong quá trình chuy n #i kích th c kh i là luôn luôn c nh. Ch mã hóa kh i ho t ng trên toàn b kh i và yêu c u ph n cu i cùng c a d li u c thêm n m t kh i y n u nó là nh" h n so v i kích th c kh i ang th c hi n.

M t vector kh(i t o có yêu c u b o m t khác nhau ph) thu c vào vi c l a ch n dài khóa ban u c a thu t toán mã hóa, vì v y vector kh(i t o th ng không c n ph i là bí m t. Tuy nhiên, trong nhi u tr ng h p i u quan tr ng là m t vector kh(i t o là không bao gi s c d)ng l i v i nhi u ch cài t khác nhau. Thông i p c chia thành các kh i và m%i kh i

c mã hóa riêng. c trình bày trong hình sau:

V y trong th c hi n c ng hóa thu t toán mã hóa AES trên công ngh FPGA v i ch cài t ECB này thì c n ph i xây d ng mô hình c a thu t toán trên FPGA nh sau:

Kh i mã hóa B n rõ B n mã khóa Kh i mã hóa B n rõ B n mã khóa Kh i mã hóa B n rõ B n mã khóa C h , 1 m ã h E C B Kh i gi i mã hóa B n mã B n rõ khóa Kh i gi i mã hóa B n mã B n rõ khóa Kh i gi i mã hóa B n mã B n rõ khóa C h , 1 g i / i m ã E C B >?=@83.29.3H8 3 3FHI

>?=@83.30.3G 3 3J8 >3B :3?85 ?3?CDA367389:3EFG3?KLA3MNOE

S x lý thu t toán mã hóa AES trên FPGA v i ch cài t ECB trong hình 3.29 là s kh i th hi n quá trình thu t toán mã hóa AES x lý m t vòng d li u v i kh i d u vào là 128 bits quá trình x lý trên s hình 3.30 chia làm hai ph n ph n mã và ph n gi i mã.

Ph n mã v i tín hi u Enc/Dec=0 c x lý nh sau: u tiên kh i d li u u vào 128 bits s& c chia thành các state ti p theo th c hi n phép nhân MI trên tr ng GF(28) sau ó th c hi n phép bi n #i SR và bi n #

affine, cu i cùng là x lý phép bi n #i MC c phân tích theo ph ng pháp bits.

Ph n gi i mã v i tín hi u Enc/Dec=1 c x lý nh sau: u tiên kh i d li u mã hóa 128 bits s& c chia thành các State ti p theo th c hi n phép bi n #i ng c ISR và bi n #i ng c c a hàm affine ti p t)c th c hi n phép toán MI v i ma trên T-1 sau cùng là th c hi n phép bi n #i IMC c phân tích theo ph ng pháp bytes và bits.

Trong su t c hai ph n x lý mã hóa và gi i mã luôn luôn t o ra khóa vòng cho m%i vòng x lý ( phép bi n #i ARK. Ngoài ra s hình 3.36 cho th$y rPng c$u trúc x lý c a thu t toán mã hóa AES c x lý trên ng d li u song song i u này làm cho t c tính toán c a thu t toán s& nhanh h n c quá trình x lý này c i u khi n b(i m t xung i u khi n.

3.2. Các yêu c u c*a gi/i pháp và ,ánh giá 3.2.1. T c ,1 và tài nguyên

Có r$t nhi u cách thi t k thu t toán mã hóa AES trên FPGA a ph n các cách thi t k u t p trung vào vi c t ng thông l ng cao cho thi t k thu t toán. Chính vì lý do ó các thi t k này h u h t d a vào c$u trúc l p c a thu t toán mã hóa AES thi t k pipeline cho m%i m t vòng m)c ích là t ng t c c a thu t toán trong vi c c ng hóa. Vi c này cho phép k t qu c tính toán ( m%i vòng tr c ó c thêm vào giá tr u vào ( vòng tính toán sau m%i m t chu kY xung clock nh ng vi c này l i làm t ng tr2 nh ng l i làm t ng t i a vi c t n s tính toán do ó t ng t c lên áng k . Thi t k này th ng tránh vi c s d)ng các kh i RAMs vì khi s d)ng các kh i RAMs trong vi c thi t k này s& làm làm tr2 l n và phá v c$u trúc c a thi t pipeline.

Theo [3], các thu t toán AES tiêu th) t ng i nhi u tài nguyên ph n c ng khi thi t k trên FPGA do tính ph c t p c a chúng. K t qu cu i cùng (v hi u su$t s d)ng tài nguyên, t c ) s& r$t khác nhau khi s d)ng các ph ng pháp thi t k khác nhau (d a trên ngôn ng mô t ph n c ng hay d a trên s ) và các công c) thi t k (các kit phát tri n, các ph n m m t#ng h p và mô ph"ng c a các hãng khác nhau). i u này c ng t ng t nh l p trình cho máy tính bPng ngôn ng b c cao nào ó, các trình compiler c a các hãng khác nhau s& k t xu$t các file th c hi n có kích th c khác nhau và t c th c hi n c ng khác nhau.

Nhi u cách thi t k thu t toán mã hóa AES trên công ngh FPGA ti t ki m c tài nguyên s d)ng trên FPGA. a s cách c ng hóa thu t toán m t mã AES này t p trung vào ph n thi t k t i u s d)ng càng ít tài nguyên


Một phần của tài liệu SỬ DỤNG CÔNG NGHỆ CỨNG HÓA FPGA TRONG MÃ HÓA DỮ LIỆU (Trang 73 -95 )

×