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 oá 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