Để nghiên cứu thuật toán AES, ta sẽ nghiên cứu tới những khái niệm có liên quan là nền tảng để xây dựng nên bộ cấu trúc và giải mã trước. Sau khi có được những khái niệm cơ bản đó, chúng ta sẽ tìm hiểu về cách xây dựng bộ mã hóa và giải mã dựa trên thuật toán AES trên nền tảng FPGA. Sau đó chúng ta sẽ tìm hiểu cách thiết kế phần cứng, và việc truyền và nhận qua cổng UART.
Trang 1Tr n Qu c Tuânầ ố B13DCDT082
Đ Th Th oỗ ị ả B13DCDT122
Đ Thanh Huyỗ B13DCDT063
Cù Quang Anh B13DCDT046
Trang 2M C L CỤ Ụ
L I NÓI Đ UỜ Ầ 2
PH N I : LÝ THUY T C SẦ Ế Ơ Ở 3
I. T ng quan v PLD và FPGAổ ề 3
1. Gi i thi u v c u ki n logic kh trình (PLD)ớ ệ ề ấ ệ ả 3
2. FPGA 4
3. Các bước thi t k cho FPGAế ế 5
4. Gi i thi u chung v FPGA c a Xilinxớ ệ ề ủ 7
5. Tìm hi u v ph n m m ISE c a Xilinxể ề ầ ề ủ 8
II. UART 9
1. UART nh nậ 9
2. UART truy nề 10
III. Thu t toán AESậ 11
1. Gi i thi u v chu n mã hóa tiên ti n AESớ ệ ề ẩ ế 11
2. Quy trình mã hóa 11
3. Quy trình gi i mãả 17
PH N II: XÂY D NG B MÃ HÓA VÀ GI I MÃ D LI U D A TRÊNẦ Ự Ộ Ả Ữ Ệ Ự THU T TOÁN AES TRÊN N N T NG CÔNG NGH FPGAẬ Ề Ả Ệ
18 I. Đ t v n đặ ấ ề 18
Trang 32. UART Transmitter 25
3. AES encoder/decoder 29
III. Ki m tra k t quể ế ả 35
L I NÓI Đ UỜ Ầ
Trong m t mã h cậ ọ , AES (vi t t t c a t ti ng Anh:ế ắ ủ ừ ế Advanced Encryption
Standard, hay Tiêu chu n mã hóa tiên ti nẩ ế ) là m tộ thu t toánậ mã hóa
kh iố đượ chính phủ Mỹ áp d ng làm tiêu chu n mã hóa. AES đc ụ ẩ ược k v ng áp ỳ ọ
d ng trên ph m vi th gi i ,đã đụ ạ ế ớ ược nghiên c u r t k lứ ấ ỹ ưỡng và được ch p thu n ấ ậ làm tiêu chu n liên bang b iẩ ở Vi n tiêu chu n và công ngh qu c gia Hoa kệ ẩ ệ ố ỳ (NIST) sau m t quá trình tiêu chu n hóa kéo dài 5 nămộ ẩ . V y nên thu t toán AES là m t ậ ậ ộ thu t toán có th áp d ng cho nhi u m c đích . ậ ể ụ ề ụ
Đ nghiên c u thu t toán AES, ta s nghiên c u t i nh ng khái ni m có liên quan ể ứ ậ ẽ ứ ớ ữ ệ
là n n t ng đ xây d ng nên b c u trúc và gi i mã trề ả ể ự ộ ấ ả ước. Sau khi có được nh ng ữ khái ni m c b n đó, chúng ta s tìm hi u v cách xây d ng b mã hóa và gi i mã ệ ơ ả ẽ ể ề ự ộ ả
d a trên thu t toán AES trên n n t ng FPGA. Sau đó chúng ta s tìm hi u cách thi tự ậ ề ả ẽ ể ế
k ph n c ng, và vi c truy n và nh n qua c ng UART.ế ầ ứ ệ ề ậ ổ
Cu i cùng là chố ương trình mô ph ng vi c mã hóa và gi i mã d a trên thu t toán ỏ ệ ả ự ậ AES d a trên n n t ng FPGA, thông qua ví d c th , qua đó chúng ta s th y ự ề ả ụ ụ ể ẽ ấ
được kh năng ng d ng c a công ngh này trong th c t ả ứ ụ ủ ệ ự ế
Trang 4P H N I: LÝ THUY T C S Ầ Ế Ơ Ở
I. T ng quan v PLD và FPGA.ổ ề
1. Gi i thi u v c u ki n logic kh trình (PLD).ớ ệ ề ấ ệ ả
Vào cu i th p k 70 th k XX, các thi t b logic chu n xu t hi n t, đi kèmố ậ ỷ ế ỷ ế ị ẩ ấ ệ ồ ạ
v i đó là s xu t hi n m ch in. Ngớ ự ấ ệ ạ ười ta đ t ra câu h i: “Chuy n gì x y ra n uặ ỏ ệ ả ế
người thi t k có th th c hi n các k t n i khác nhau trong m t thi t b l n h n?”.ế ế ể ự ệ ế ố ộ ế ị ớ ơ
Đi u này cho phép ngề ười thi t k tích h p nhi u thi t b logic chu n trong m t linhế ế ợ ề ế ị ẩ ộ
ki n. Đ có thi t k linh ho t nh t, nhà s n xu t Ron Cline t Signetics đ a ta ýệ ể ế ế ạ ấ ả ấ ừ ư
tường dùng hai ma tr n k t n i kh trình. Hai ma tr n k t n i kh trình này có thậ ế ố ả ậ ế ố ả ể
t h p tùy ý gi a các c ng AND và c ng OR, đ ng th i cho phép nhi u c ng ORổ ợ ữ ổ ổ ồ ờ ề ổ cùng s d ng chung m t c ng AND. Ki n trúc này r t linh ho t, nh ng t i th iử ụ ộ ổ ế ấ ạ ư ạ ờ
đi m đó, tr lan truy n t đ u vào t i đ u ra khá cao nên thi t b ho t đ ng tể ễ ề ừ ầ ớ ầ ế ị ạ ộ ươ ng
đ i ch m và d ng công ngh logic kh trình đ u tiên xu t hi n đó chính là SPLD.ố ậ ạ ệ ả ầ ấ ệ Sau này công ngh CPLD và FPGA ra đ i có m t đ tích h p cao h n, c u trúc linhệ ờ ậ ọ ợ ơ ấ
ho t h n cho phép t o ra nhi u m ch logic ph c t p h n.ạ ơ ạ ề ạ ứ ạ ơ
C u ki n logic kh trình, vi t t t là PLD là lo i c u ki n đi n t có nhi u uấ ệ ả ế ắ ạ ấ ệ ệ ử ề ư
đi m và hi n nay đang để ệ ược phát tri n r t m nh. V nguyên lý, chúng có c u t oể ấ ạ ề ấ ạ
r t gi ng v i PROM. Vi c l p trình cho PLD có th đấ ố ớ ệ ậ ể ược th c hi n b ng các côngự ệ ằ
Trang 5PLD l i r t khác v i PROM. M t PLD, đạ ấ ớ ộ ượ ạc t o thành b ng m t s c ng AND,ằ ộ ố ổ
OR, XOR ho c c các FlipFlop, có th th c hi n nhi u hàm Boole khác nhau.ặ ả ể ự ệ ề
2. FPGA
Năm 1985, công ty Xilinx đ a ra ý tư ưởng hoàn toàn m i, đó là k t h p th gian hoàn thành s nớ ế ợ ờ ả
ph m và kh năng đi u khi n đẩ ả ề ể ược c a PLD v i m t đ và u th v chi phí c aủ ớ ậ ọ ư ế ề ủ GateArray. T đó, FPGA ra đ i.ừ ờ
C u trúc FPGA đ n gi n g m các t bào logic, các kh i cách đ u nhau, liên k tấ ơ ả ồ ế ố ề ế
nh các đờ ường k t n i có th thay đ i đế ố ể ổ ược theo yêu c u c a ngầ ủ ười thi t k ế ế Nghĩa là người thi t k có quy n thi t k , l p trình và thay đ i m ch đi n. Hi nế ế ề ế ế ậ ổ ạ ệ ệ
Trang 6nay FPGA có m t đ khá cao, lên t i hàn trăm t c ng và c u trúc cũng đa d ngậ ộ ờ ỷ ổ ấ ạ
ph c t p h n. Nhi u ch c năng ph c t p đã đứ ạ ơ ề ứ ứ ạ ượ tích h p s n đ t n hi u qu sợ ẵ ể ằ ệ ả ử
d ng FPGA.ụ
Có hai lo i FPGA c b n: Lo i l p trình l i đạ ơ ả ạ ậ ạ ược, d a trên công ngh SRAM vàự ệ
lo i l p trình m t l n.ạ ậ ộ ầ
3. Các bước thi t k cho FPGA.ế ế
B ướ c 1: Nh p thi t k (Design Entry)ậ ế ế
Các công c thi t k cho phép nh p thi t k theo các cách:ụ ế ế ậ ế ế
Nh p thi t k theo s đ nguyên lý Schematic: ậ ế ế ơ ồ Người thi t k s d ng cácế ế ử ụ môđun s n có trong th vi n Schematic đ ghép n i chúng v i nhau t oẵ ư ệ ể ố ớ ạ thành b n thi t k theo yêu c u. T s đ nguyên lý đã thi t k đả ế ế ầ ừ ơ ồ ế ế ược công
c ph n m m s chuy n đ i sang file ngôn ng mô t ph n c ng HDL, màụ ầ ề ẽ ể ổ ữ ả ầ ứ
ph bi n là VHDL ho c Verilog.ổ ế ặ
Nh p thi t k s d ng ngôn ng mô t ph n c ng HDL (VHDL): ậ ế ế ử ụ ữ ả ầ ứ Ngườ ithi t k s d ng chế ế ử ụ ương trình so n th o đ th c hi n vi c mô t toàn bạ ả ể ự ệ ệ ả ộ
b n thi t k c a mình dả ế ế ủ ướ ại d ng ngôn ng HDL.ữ
Nh p thi t k d ậ ế ế ướ ạ i d ng s đ : ơ ồ Công c thi t k còn cho phép nh p thi tụ ế ế ậ ế
k vào dế ưới d ng s đ mà đi n hình là đ hình tr ng thái FSM, sau đóạ ơ ồ ể ồ ạ chúng cũng được chuy n đ i sang HDL.ể ổ
B ươ c 2: Ki m tra thi t k (Design Verification)ể ế ế
Th c hi n ki m tra, mô ph ng ch c năng ho t đ ng c a thi t k HDL đã t o raự ệ ể ỏ ứ ạ ộ ủ ế ế ạ trên. B c này có th không c n ph i th c hi n trong khi thi t k
Trang 7Sau khi hoàn thành mô ph ng thi t k , bỏ ế ế ướ ổc t ng h p ti p theo có nhi m vợ ế ệ ụ chuy n thi t k dể ế ế ướ ại d ng file văn b n HDL thành d ng file Netlist, th c hi n môả ạ ự ệ
t m ch th c m c th p dả ạ ự ở ứ ấ ướ ại d ng c ng logic và k t n i chúng v i nhau.ổ ế ố ớ
B ướ c 4: Th c hi n thi t k (Design Implementation)ự ệ ế ế
Bước này s d ng file Netlist và file ràng bu c “constrains file” (mô t cácử ụ ộ ả nguyên t c thi t k , các ràng bu c v v t lý nh gán v trí cho các đ u vào/ra trênắ ế ế ộ ề ậ ư ị ầ chip, các ràng bu c v t c đ , th i gian, t n s …) đ t o thi t k s d ng tàiộ ề ố ộ ờ ầ ố ể ạ ế ế ử ụ nguyên có s n c a FPGA. Bẵ ủ ước này bào g m các bồ ướ Translate, Map, Place and c:
Routing.
Translate: Bước này nh m th c hi n ki m tra thi t k và đ m b o fileằ ự ệ ể ế ế ả ả Netlist phù h p v i ki n trúc FPGA đã ch n, ki m tra file ràng bu cợ ớ ế ọ ể ộ
“constraints file” c a ngủ ườ ử ụi s d ng đ phát hi n các l i mâu thu n v i thamể ệ ỗ ẫ ớ
s c a FPGA đã ch n. ố ủ ọ Translate thường bao g m các quá trình: T i u hóa,ồ ố ư biên d ch thành các thành ph n v t lý c a c u ki n; ki m tra ràng bu c thi tị ầ ậ ủ ấ ệ ể ộ ế
k Khi k t thúc ế ế Translate , s có m t b n báo cáo v các chẽ ộ ả ề ương trình đượ c
s d ng, danh sách các c ng I/O và các c u ki n đử ụ ổ ấ ệ ược s d ng trong thi tử ụ ế
k ế
Map: T o b n phân b thi t k t i các tài nguyên c th trong FPGA. N uạ ả ố ế ế ớ ụ ể ế thi t k quá l n so v i thi t b đế ế ớ ớ ế ị ược ch n, quy trình này không th hoànọ ể thành nhi m v c a mình. Quá tình ệ ụ ủ Map có các tham s r ng bu c c a thi tố ạ ộ ủ ế
k , ví d nh tham s t c đ , th i gian c a thi t k và đôi khi quy t đ nhế ụ ư ố ố ộ ờ ủ ế ế ế ị
g n thêm các thành ph n logic đ đáp ng các yêu c u v th i gian. Bắ ầ ể ứ ầ ề ờ ướ cnày nh m đ a m ch thi t k vào m t thi t b c th Bằ ư ạ ế ế ộ ế ị ụ ể ước này cũng t o raạ báo cáo xác nh n các tài nguyên s d ng trong chip, mô t chính xác cácậ ử ụ ả thành ph n trong thi t k đầ ế ế ược đ t v trí nào trong chip th c t ặ ở ị ự ế
Place and Routing: Place là quá trình l a ch n v trí phù h p c a m i kh iự ọ ị ợ ủ ỗ ố
ch c năng trong thi t k và đ a các c ng logic c a ph n đó vào các kh iứ ế ế ư ổ ủ ầ ố logic hay các môđun c th trong FPGA trên c s t i u vi c k t n i vàụ ể ở ở ố ư ệ ế ố
Trang 8đ m b o v các ràng bu c v thòi gian. ả ả ề ộ ề Route là quá trình t o liên k t v t lýạ ế ậ
gi a các kh i logic. Sau bữ ố ước này t o ra đạ ược file mô t c u hình d ng *.jed.ả ấ ạ
B ướ c 5: Mô ph ng đ nh th i (Timing Simulation)ỏ ị ờ
Sau bướ Place and Routing ngc ười thi t k có th th c hi n mô ph ng thi t kế ế ể ự ệ ỏ ế ế
m c c ng logic đã đ c đ nh v trí và đ nh tuy n trên FPGA, ph n m m s d ng
file c u hình đã đấ ượ ạc t o ra và k t h p v i th vi n v mô hình th i gian c a cácế ợ ớ ư ệ ề ờ ủ
h FPGA (ví d ISE c a xilinx dùng th vi n VITAL), đ th c hi n mô ph ng ho tọ ụ ủ ư ệ ể ự ệ ỏ ạ
đ ng c a thi t k mà có tính đ n các tham s th i gian tr , th i gian thi t l p…ộ ủ ế ế ế ố ờ ễ ờ ế ậ
c a các c ng logic trong FPGA. Bủ ổ ước này r t quan trong v i nh ng thi t k ph cấ ớ ữ ế ế ứ
t p, t c đ l n.ạ ố ộ ớ
B ướ c 6: C u hình (Configuration)ấ
G i chọ ương trình đi u khi n vi c n p c u hình, th c hi n k t n i thi t b n pề ể ệ ạ ấ ự ệ ế ố ế ị ạ
đ n FPGA và n p file c u hình cho FPGA. Khác v i CPLD, FPGA có thêm bế ạ ấ ớ ướ c
“Creat Bit file” đ t o ra file “lu ng bit” đ n p vào b nh c u hình trong FPGAể ạ ồ ể ạ ộ ớ ấ
thường là b nh t m nh SRAM.ộ ớ ạ ư
4. Gi i thi u chung v FPGA c a xilinx.ờ ệ ề ủ
Công ngh FPGA đang đệ ược phát tri n r t m nh trên th gi i. Hi n nay Xilinxể ấ ạ ế ớ ệ
là hãng đi đ u trong công ngh FPGA, s n ph m c a Xilinx bao g m: các vi m chầ ệ ả ẩ ủ ồ ạ CPLD và FPGA, ph n m m thi t k , các d nh v h tr thi t k và các chầ ề ế ế ị ụ ỗ ợ ế ế ươ ngtrình ngu n.ồ
Xilinx cung c p 2 dòng FPGA là Spartan và Virtex.ấ
FPGA Spartan s d ng trong nh ng ng d ng v i s lử ụ ữ ứ ụ ớ ố ượng l n giá thành th p,ớ ấ
thương s d ng đ thay th cho m ng c ng logic c đ nh và cho các s n ph mử ụ ể ế ả ổ ố ị ả ẩ dùng cho t ng ng d ng c th ừ ứ ụ ụ ể
a) Spartan3
Trang 9Dòng FPGA Spartan3 được thi t k cho các ng d ng ti t ki m chi phí. So v iế ế ứ ụ ế ệ ớ các dòng FPGA trước đó, dòng Spartan3 được tăng thêm v tài nguyên logic, dungề
lương RAM, s I/O và kh năng qu n lý tín hi u clock.ố ả ả ệ
Các tính năng chính:
Giá thành th p.ấ
M t đ logic cao, có th lên t i 74.880 cells.ậ ộ ể ớ
S lố ương I/O l n, t i đa 784 chân.ớ ố
T c đ truy n d li u I/O l n.ố ộ ề ữ ệ ớ
H tr nhi u chu n giao ti p.ỗ ợ ề ẩ ế
K t cu i b ng DCI (tr kháng đi u khi n s ).ế ố ằ ở ề ể ố
C u t o c a Spartan3 có các thành ph n tấ ạ ủ ầ ương t nh các FPGA khác:ự ư
Các kh i logic có th c u hình đố ể ấ ược là các kh i LUT dang RAM. Ch c năngố ứ
c a các kh i này là đ thi t l p các logic và các kh i l u tr có th là Flipủ ố ể ế ậ ố ư ữ ểFlop ho c Latch.ặ
Các kh i I/O (IOB) có ch c năng đi u khi n d li u gi a các chân I/O và cácố ắ ề ể ữ ệ ữ
kh i logic bên trong c u ki n. M i kh i IOB có th h tr d li u 2 chi uố ấ ệ ỗ ố ể ỗ ợ ữ ệ ề
ho c ho t đ ng 3tr ng thái.ặ ạ ộ ở ạ
Các kh i RAM d ng 18kbit.ố ở ạ
Ngoài ra Spartan3 có thêm các thành ph nầ
Trang 10 Các kh i nhân nhúng c ng 18X18bit.ố ứ
Các kh i qu n ls tín hi u clock s DCM cung câp các kh năng phân ph i,ố ả ệ ố ả ố
tr , nhân, chia và đi u khi n pha c a tín hi u clock.ễ ề ể ủ ệ
5. Tìm hi u v ph n m m ISE c a xilinx.ể ề ầ ề ủ
Không ch là nhà cung c p các chip logic kh trình CPLD/FPGA, Xilinx còn cungỉ ấ ả
c p các công c thi t k đi n t hoàn ch nh, cho phép th c hi n thi t k trên cácấ ụ ế ế ệ ử ỉ ự ệ ế ế thi t b logic kh trình c a hãng. Các công c này k t h p công ngh CAD tiên ti nế ị ả ủ ụ ế ợ ệ ế
v i giao di n đ h a linh ho t, d s d ng đ ngớ ệ ồ ọ ạ ễ ử ụ ể ười thi t k có đế ế ược thi t k t iế ế ố
u. B công c ph n m m hi n đang đ c s d ng r ng rãi là ISE
II. UART
Trang 11UART là m t m ch đi n th c hi n g i d li u song song thông qua m t kênhộ ạ ệ ự ệ ử ữ ệ ộ
n i ti p. UART bao g m b truy n và b nh n. B truy n v c b n là m t thanhố ế ồ ộ ề ộ ậ ộ ề ề ơ ả ộ ghi d ch đ c bi t, l y d li u song song sau đó d ch t ng bít ra ngoài v i t c đ đ nhị ặ ệ ấ ữ ệ ị ừ ớ ố ộ ị
trước. Ngượ ạc l i, b nh n d ch t ng bít d li u nh n độ ậ ị ừ ữ ệ ậ ược và sau đó ph c h i l iụ ồ ạ
d li u.ữ ệ
Khi tr ng thái ngh , kênh n i ti p m c ‘1’. Quá trình truy n b t đ u v i m tở ạ ỉ ố ế ở ứ ề ắ ầ ớ ộ bít start khi kênh xu ng m c ‘0’, theo sau là các bit data, prity và bít stop, lúc nàyố ứ kênh m c ‘1’ và tr v tr ng thái ngh sau bít stop. S lở ứ ở ề ạ ỉ ố ượng bit d li u có th làữ ệ ể
6, 7, ho c 8 bít. Bít parity đặ ược dùng đ g l i.ể ỡ ỗ
Đ i v i UART tín hi u clock đ ng b không đố ớ ệ ồ ộ ược g i kèm các khung d li u.ử ữ ệ
Do đó, trước khi quá trình truy n b t đ u, b truy n và nh n ph i th a thu n trề ắ ầ ộ ề ậ ả ỏ ậ ướ c
v i nhau m t t p các tham s bao g m t c đ baud (s bít trên giây), s bít data vàớ ộ ậ ố ồ ố ộ ố ố stop, có s d ng bít parity hay không…ử ụ
1. UART nh nậ
Do không có xung clock đ ng b , b nh n s d ng các tham s xác đ nh trồ ộ ộ ậ ử ụ ố ị ướ c
đ truy n d li u. B nh n s d ng m t m ch l y m u đ ể ề ữ ệ ộ ậ ử ụ ộ ạ ấ ẫ ể ướ ược l ng đi m gi aể ữ
c a bit và sau đó khôi ph c l i bít.ủ ụ ạ
Trang 12T c đ l y m u ph bi n nh t là 16 l n t c đ baud, nghĩa là m i bít n i ti pố ộ ấ ẫ ổ ế ấ ầ ố ộ ỗ ố ế
đượ ấc l y m u 16 l n. M ch l y m u s làm vi c nh sau:ẫ ầ ạ ấ ẫ ẽ ệ ư
Ban đ u kênh tr ng thái ngh và m c ‘1’, m ch l y m uầ ở ạ ỉ ở ứ ạ ấ ẫ
s đ i cho đ n khi kênh đẽ ợ ế ược kéo xu ng m c ‘0’, b t đ u bít start. B đ mố ứ ắ ầ ộ ế bên trong m ch l y m u s đ m s m u đã l y.ạ ấ ẫ ẽ ế ố ẫ ấ
Khi b đ m tăng đ n 7, tín hi u đ n đ t t i đi m gi a c a bitộ ế ế ệ ế ạ ớ ể ữ ủ start (do 1 bit start tương đương 16 m u). B đ m đẫ ộ ế ược kh i đ ng l i.ở ộ ạ
Ti p theo b đ m ti p t c đ m s m u đã l y, khi đ m t iế ộ ế ế ụ ế ố ẫ ấ ế ớ
15, tín hi u đ n đ t t i đi m gi a c a bít data đ u tiên. Giá tr c a bít nàyệ ế ạ ớ ể ữ ủ ầ ị ủ
s đẽ ượ ấ ạc l y t i đi m l y m u này. D ch bít này vào thanh ghi và kh i đ ngể ấ ẫ ị ở ộ
L p l i bặ ạ ước 3 M (M là s bít stop) l n đ thu đố ầ ể ược bit stop
M ch l y m u v c b n th c hi n ch c năng c a tín hi u clock. Thay vì sạ ấ ẫ ề ơ ả ự ệ ứ ủ ệ ử
d ng sụ ườn dương c a tín hi u clock đ ch th khi nào thì tín hi u đ u vào là h pủ ệ ể ỉ ị ệ ầ ợ
l Nó t n d ng m ch l y m u đ ệ ậ ụ ạ ấ ẫ ể ướ ược l ng đi m gi a c a m i bít. Trong khi bể ữ ủ ỗ ộ
nh n không có thông tin chính xác v th i gian c a bít start, đi m gi a ậ ề ờ ủ ể ữ ướ ượ c l ng
c a m i bít sai l ch nhi u nh t là 1/16. V i quá trình l y m u, do t c đ baud cóủ ỗ ệ ề ấ ớ ấ ẫ ố ộ
th để ược chia nh t t c đ clock h th ng, nên m ch này không đỏ ừ ố ộ ệ ố ạ ượ ức ng d ngụ
v i t c đ d li u cao.ớ ố ộ ữ ệ
2. UART truy n.ề
Trang 13UART truy n v c b n là m t thanh ghi d ch, d ch ra ngoài t ng bít d li u t iề ề ơ ả ộ ị ị ừ ữ ệ ạ
m t t c đ ch đ nh trộ ố ộ ỉ ị ước. T c đ đố ộ ược đi u khi n b ng m ch l y m u. Do tínề ể ằ ạ ấ ẫ
hi u g i không đi kèm v i clock đ ng b nên t c đ l y m u b ng 16 l n t c đệ ử ớ ồ ộ ố ộ ấ ẫ ằ ầ ố ộ baud nh ng quá trình l y m u g i ch m h n so v i UART nh n. B UART truy nư ấ ẫ ử ậ ơ ớ ậ ộ ề
s d ng m t b đ m đ theo dõi s m u, m i bít đử ụ ộ ộ ế ể ố ẫ ỗ ược d ch ra ngoài sau 16 l n l yị ầ ấ
m u.ẫ
Sau khi xác nh n tín hi u tx_signal là tín hi u yêu c u b truy n th c hi nậ ệ ệ ầ ộ ề ự ệ truy n, Máy tr ng thái h u h n s l y t d li u (7 bits) và sau đó th c hi n d nề ạ ữ ạ ẽ ấ ừ ữ ệ ự ệ ầ
d n thông qua các tr ng thái start, data, stop đ d ch ra ngoài các bít tầ ạ ể ị ương ng. Tínứ
hi u báo hoàn thành b ng cách thi t l p tín hi u tx_done_tick cho 1 chu k truy n.ệ ằ ế ậ ệ ỳ ề
M t bít đ m, tx_reg, độ ệ ượ ử ục s d ng đ truy n.ể ề
III. Thu t toán AES.ậ
1. Gi i thi u v chu n mã hóa tiên ti n AES.ớ ệ ề ẩ ế
Chu n mã hóa d li u tiên ti n AES (Advanced ẩ ữ ệ ế Encryption Standard) là m t hộ ệ
mã khóa bí m t có tên là ậ Rijdael (do hai nhà m t mã h c ngậ ọ ười B là ỉ Joan Daemen
và Vincent Rijmen đ a ra và tr thành chu n t năm 2002) cho phép x lý các kh iư ở ẩ ừ ử ố
d li u ữ ệ input có kích thước 128 bit s d ng các khóa có đ dài 128, 192 ho c 256ử ụ ộ ặ bit Trong AES các phép toán c ng và nhân độ ược th c hi n trên các ự ệ byte trong
trường h u h n GF(ữ ạ
2 Quy trình mã hóa
Quy trình mã hóa s d ng b n phép bi n đ i chính: ử ụ ố ế ổ
AddRoundKey: c ng mã khóa c a 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.ạ
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 (Sbox).ả ế
Trang 14MixColumns: 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.ử ộ ậ
ShiftRows : d ch 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.ố
Quy trình mã hóa đ ượ c tóm t t l i nh sau: ắ ạ ư
Th c hi n thao tác AddRoundKey đ u tiên trự ệ ầ ước khi th c hi n các chu kự ệ ỳ
Các byte được th thông qua b ng traế ả Sbox. Đây chính là quá trình phi tuy nế
c a thu t toán. H p Sbox này đủ ậ ộ ượ ạc t o ra t m từ ộ phép bi n đ i kh ngh chế ổ ả ị trong
trườ h u h n ng ữ ạ GF (28) có tính ch t phi tuy n. Đ ch ng l i các t n công d a trênấ ế ể ố ạ ấ ự các đ c tính đ i s , h p Sbox này đặ ạ ố ộ ượ ạc t o nên b ng cách k t h p phép ngh chằ ế ợ ị
đ o v i m t phép bi n đ i ả ớ ộ ế ổ affine kh ngh ch. H p Sbox này cũng đả ị ộ ược ch n đọ ể tránh các đi m b t đ ng (fixed point). ể ấ ộ
Trang 15Bước này bi n đ i m i byte trong ma tr n thành byte v trí hàng là 4 bít trế ổ ỗ ậ ở ị ước
c a byte và c t là 4 bít sau c a byte trong sbox.ủ ộ ủ