Trong các kiến trúc CGRA, em nhận thấy có kiếntrúc CGRA tăng tốc các thuật toán mật mã học là một kiến trúc có thể tuy chỉnh để có thé hỗ trợ tính toán cho phép nhân tích chập.. Trong số
Trang 1ĐẠI HOC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
NGUYEN QUOC VIÊN - 19521103
KHÓA LUẬN TÓT NGHIỆP
TUY CHỈNH VÀ PHAT TRIEN BỘ TANG TÓC DỰA TRÊN CGRA LINH HOẠT VÀ NHANH CHÓNG CHO
MẠNG THAN KINH TÍCH CHAP
Customizing and Developing a Flexible and Fast CGRA-Based
Accelerator for Convolutional Neural Networks
KY SU KY THUAT MAY TINH
GIANG VIEN HUONG DAN
TS Pham Hoai Luan
TS Lam Đức Khai
TP HO CHÍ MINH, 2024
Trang 2LỜI CẢM ƠN
Lời đầu tiên, em xin bày tỏ lòng biết ơn chân thành đến Tiến sĩ PhamHoài Luân và Tiến sĩ Lâm Đức Khải, hai thầy đã ân cần hướng dẫn em suốt quátrình nghiên cứu khóa luận, cung cấp các trang thiết bị cần thiết, và dành thời
gian quý báu để chỉnh sửa và góp ý, giúp em hoàn thành khóa luận một cách
xuất sắc nhất có thể
Em cũng muốn bày tỏ lòng biết ơn đến các thầy cô và bạn bè trong khoa
Kỹ thuật Máy tinh cũng như toàn thé trường Dai học Công nghệ Thông tin — Daihọc Quốc gia Thành phố Hồ Chí Minh đã dành tâm huyết dé truyền đạt kiến
thức hữu ích và hỗ trợ em suốt quá trình học tập tại trường Những kiến thức và
kinh nghiệm quý báu đó sẽ là nguồn động viên lớn giúp em tự tin hơn khi bước
vào thế giới làm việc
Cuối cùng, em muốn bày tỏ lòng biết ơn sâu sắc đến gia đình vì sự hỗ trợ,động viên và sự ủng hộ vững vàng trong suốt hành trình học tập của em
Trong quá trình thực hiện khóa luận, em gặp phải một số khó khăn và hạn
chế do tính chuyên sâu của đề tài Mong rằng các thầy cô và bạn bè có thể thông
cảm va góp ý dé khóa luận này có thé được hoàn thiện hơn trong tương lai
Thành phố Hồ Chí Minh, tháng 7 năm 2024
Sinh viên thực hiện
Nguyên Quoc Viên
Trang 3Hướng nghiên cứu đề tài 2-52 z+k+£E£+EE+EEeEErrxerkerrkerxee 4
Mục tiêu đề tài cư 40959000:00651 001057 5
Convolutional Neural Networks - Mang thần kinh tích chap 5
2.1.1 Convolution Layer — Lớp tích chập: - « «++s<++ 6
2.1.2 Pooling Layer — Lớp tổng hợp: -¿©s¿©c<+cxcse+zseres 72.1.3 Fully Connected Layer — Lớp kết nối đầy đủ: 9
2.1.4 Activation Functions — Các hàm kích hoạt - - - - 10
Floating Point — Dau cham động -2- 2 2 22 2+£z+£z+£z+sz2 11
2.4.2 Initial ROund - << 11v v9 9v 9 ng rưy 17
2.4.3 Round 1-92 nh 17
2.4.4 SubBytes trong AES-126 LH HH ng, 17 2.4.5 Final Round - 2 31111111 11115551111 ke 18
Trang 42.4.6 SHhIÍĐOWS Ăn HH HH it 18
2.4.7 MIXCỌUITS SG SG HH rưy 19
2.5 Thuật tốn mã hố khối đối xứng SM4 -2- 2525522522 21
2.5.1 SubBytes trong SÌM4 cv HH ng kg re, 22
2.5.2 Key Expansion SM4 - Mở rộng khố - -«- 22
2.5.3 Encryption SÌM4 - - cv ng ng key 23
Chương 3 HIỆN THUC PHAN MEM MẠNG CNN LENET-5 NHẬN DIEN9:0009A4I501V.50 25
3.1 I0 25 3.2 Prediction PhaSG: - 2s 1 ng ng ng rưệt 26
3.2.1 Lớp tích chập thứ nhất: -2¿©+¿ 22 ©+2x++£x++zxesrxesree 27
3.2.2 Lớp tích chập thứ haI - -¿- 5 5xx £svEseEseeserserserserske 29
Chương 4 KIÊN TRÚC CRYPTO CGRA -2-©5¿75+2c++2zxvszxczsee 31
4.1 Mang cĩ khả năng tái cau hình cấu trúc thơ (Coarse — Grained Reconfigurable Array — CTRA) -. Án LH HH HH HH HH 31
4.2 Kiến trúc tơng quan của Crypto CGRA -¿¿©5s+cs=+2 33
4.3 Don vi xử lý (Processing Element - PE) - s55 ss++s>+ss2 34
4.3.1 Đơn vi tải và lưu trữ nội bộ của PE( Load Store Unit) 35
4.3.2 Buffer giữ hăng số tức thời (Immediately PE — IM PE) 35
4.3.3 Buffer giữ các lệnh tái cấu hình (Context PE — CTX PE) 36
4.3.4 Buffer chuyền tiếp giá tri ceccecececceseeseessesseseseseeseesseseeseeseeseens 37
4.3.5 Đơn vi tính tốn ALU - ccceeessecccsssssscesesssssseeeeees 38
4.4 Kết nối hàng (Row Connection — R) - - «<< c+sceesee 39
4.5 Hoạt động tính tốn trong Crypto CGŒRA ‹ -<++csss+2 42
Trang 54.5.1 Kiến trúc Crypto CGRA ở cấp độ SoC - + 42
4.5.2 Xử lý tín hiệu và các phiên làm việc cua Crypto CGRA 43
4.5.3 Pineline trong Crypto CGRA ch n, 44
Chương 5 KET QUẢ 2-5252 E+EE‡EE2EEEE2E121121121121121 21.1 1e 46
5.1 Van hành Crypto CGRA trên mô phỏng es -<<5<<2 46
5.1.1 Thư việnC_ SimulafOr 5-5 << 5+ ‡++sessseeeeees 46
5.1.2 Mô phỏng Crypto CGRA trên Vivado -< << 47
5.2 Crypto CGRA vận hành thuật toán trên mô phỏng 48
5.3 Crypto CGRA vận hành thuật toán trên thực TẾ co tt rrerrrrkee 48
54 Tài nguyên thiết KẾ -¿ 2- 5-52-5552 SSSE‡EEEE‡EEEEEEEEEEEEErrerrerree 49
5.5 So sánh kết Quả - 22-56 Se+SE2E9E1E112E1E21111211111 111111111 xe, 50Chương 6 KET LUẬN -2E+EE+EEEEEEEEEEEEEEEEErrrrrreee 51
6.1 Kết quả của khoá luận -2- 2-2 2+£+S£+££+E£+EE£Ezrrrrrerreces 516.2 Phương hướng phat triỂn - 2 2 2 + £+££+££+££+EzEzEzrzzrs 51
IV 100I20092/904 61117 52 PHULUC 56
Trang 6DANH MỤC HÌNH
Hình 2.1 Kiến trúc mạng CNN Lenet-5 2-2 2 2 2+E++E++E++E£EE2EzEzEzrerreei 6Hình 2.2 Ví dụ về nhân tích chập với Kernel 3X3 - - 5c s + sserseree 7Hình 2.3 Ví dụ về lớp tổng hợp với Stride bằng - 2 2+ ©+2+++cx++zxesrxrees 9Hình 2.4 Lớp kết nối đầy đủ với 7 nốt đầu vào và 5 nốt đầu ra - - 10Hình 2.5 Hàm kích hoạt Softmax kết nối với lớp kết nối đầy đủ liHình 2.6 Sơ đồ thuật toán mã hoá AES-12 2 +¿©5222++2x++x+zrxerxezrxerxee 15
Hình 2.7 Bang S-Box 16x16 của thuật toán AES-128 cccccccccssessesssecsesssesseeseesseeses 18
Hình 2.8 Ma trận hằng số MixColumns - 2: 2:22 5£2£+£x++£x++£x+zzxrzrxerrxee 20Hình 2.9 Sơ đồ thuật toán mã hoá SÌM4 - + s+xÉEE+E£EE£EEEEEEEeEerkerkrrrrkeree 21
Hình 2.10 Bảng S-Box 16x16 của thuật toán SM4 2- 2 5c ©5s+cxccxzxserxez 22
Hình 4.1 Mang CGRA với 16 PE tạo thành ma trận PE 4x4 -«<<s+ 32
Hình 4.2 Kiến trúc tong quan của Cryptto CŒRA -. ¿-©¿cs++cx+2zxvzzxczsez 33Hình 4.3 Kiến trúc của đơn vị xử lý PE ¿+¿©++©++£x++tx++rx++rxezrxrsrxerrxee 35Hình 4.4 Kiến trúc của ALLU -:-©2¿©2<+5E+2E+2EE+EEEEEEEEEEEEEEEEEEEEErrkerkrrrkerkees 38Hình 4.5 Kiến trúc của thanh Kết nói hàng 1 trong Crypto CGRA . - 40Hình 4.6 Kiến trúc Crypto ở cấp độ SoC - 2 2+++E£+E++E+EE+EzEerrerrrreee 42
Hình 4.7 So đồ xử lý dữ liệu lớn bằng các phiên làm việc của Crypto CGRA 43
Hình 4.8 Crypto CGRA thực hiện Pipeline 8 tang theo thời gian -. - 44
Hình 5.1 Thư viện C_ SimuÏafOr - + << SE 2211 11113 2311111125111 1111 cerree 46 Hình 5.2 Waveform mô phỏng Crypto CGRA trên V1ivado .-«+<s «<< «+2 47
Hình 5.3 Mô tả vận hành Crypto CGRA thực tẾ -¿- 2 2 ++c++£++£zxzxzzeee 49
Trang 7DANH MỤC BANG
Bảng 3.1 Thông số liên quan đến quá trình Training của mạng CNN Lenet-5 25Bang 3.2 Bảng liệt kê chi tiết về các Layer của mạng CNN Lenet-5 26Bang 4.1 Dinh dạng lệnh thao tác với khối Load Store Unit - - 5 s+sec+2 36Bang 4.2 Định dạng lệnh cấu hình các tính toán xử lý của PE -: 36Bang 4.3 Chức năng của các khối trong khối tính toán căn bản -. - 39
Bảng 4.4 Định dạng lệnh cấu hình kết nối 0 1S: 41 Bảng 5.1 Số vòng lặp thực thi của hai thuật toán AES-128 và SM4 - 48
Bảng 5.2 Thông số vận hành thực tế của Crypto CGRA của AES-128 và SM4 48Bảng 5.3 Tài nguyên thiết kế của Crypto CGRA -2 2¿©5¿©cz+cx+zxzzserxez 49Bảng 5.4 So sánh với các kiến trúc CGRA liên quan trong thông lượng và hiệu quả
diện tích được mở rộng đến công nghệ 45nm - 2 2 2 2252222222222 50
Trang 8DANH MỤC TU VIET TAT
AXI Advanced eXtensible Interface
DMA Direct Memory Access
FPGA Field Programmable Gate Array
HDL Hardware Description Language
LUT Look — Up — Table
PC Personal Computer
SW SoftWare
CNN Convolutional Neutral Network
AES-128 Advanced Encryption Standard
CGRA Coarse-Grained Reconfiguable Array LDM Local Data Memory
PE Processing Element
IMM Immediately Memory
CTU Context Memory Unit
RC Row Connection
S-Box Substitutation Box
LSU Load Store Unit
ALU Arithmetic Logic Unit
PS Processing System
PL Programmable Logic
Trang 9dé đáp ứng nhu cầu ngày càng cao và mở rộng phạm vi ứng dụng cũng như hiệu suất
làm việc, CNN cần phải cải thiện một số khía cạnh như tốc độ nhận diện, hiệu quả
tính toán, kha năng tổng quát hoá, giảm thiểu tài nguyên va năng lượng
Hiện nay máy gia tốc được ứng dụng rất nhiều trong việc tăng tốc và cải thiệnhiệu suất tính toán Và máy gia tốc CGRA tăng tốc cho các thuật toán mật mã học làmột kiến trúc phần cứng thú vị nhờ vào tính linh hoạt và khả năng tính toán song
song Do đó, việc tìm hiểu va cau hình lại CGRA dé tăng tốc phép nhân tích chập từ
đó cải thiện tốc độ xử lý cua mô hình nhận diện anh CNN là một việc kha thi
Trong khoá luận này, em đề xuất sử dụng kiến trúc CGRA dé tăng tốc phépnhân tích chập trong mạng CNN Trong các kiến trúc CGRA, em nhận thấy có kiếntrúc CGRA tăng tốc các thuật toán mật mã học là một kiến trúc có thể tuy chỉnh để
có thé hỗ trợ tính toán cho phép nhân tích chập Em sẽ tiến hành tìm hiểu, phân tích
và đánh giá về kiến trúc CGRA tăng tốc cho hai thuật toán mật mã khối đối xứng làAES-128 và SM4 Từ đó tìm ra phương pháp phù hợp dé có thé thực hiện tính toánnhân tích chập trên CGRA, va cấu hình lại CGRA đề thực hiện nhân tích chập từ đónâng cao được tốc độ và hiệu suất của mạng thần kinh tích chap CNN
Phan cứng mô tả sẽ được thiết kế bởi ngôn ngữ miêu tả phan cứng Verilog vàsau đó sử dụng Vivado để mô phỏng và phân tích tài nguyên và tốc độ xử lý Cuốicùng thiết kế sẽ được hiện thực trên board Xilinx ZCU102 FPGA
Trang 10MỞ ĐẦU
Trong trí tuệ nhân tạo (AT), máy hoc là một lĩnh vực phô biến, nơi các hệ thống
từ dir liệu được cung cấp mà có thể học hỏi và cải thiện hiệu suất xử lý công việc theothời gian Nhờ đó, nó được áp dụng rộng rãi trong nhiều lĩnh vực như nhận diện hìnhảnh, xử lý ngôn ngữ tự nhiên, truyền thông giải trí và nhiều lĩnh vực khác Trong máy
học, mạng thần kinh tích chập (Convolutional Neural Network — CNN) là một loại
kiến trúc mạng thần kinh phé biến và hiệu quả trong việc xử lý hình ảnh và video.CNN được ứng dụng rộng rãi trong nhiều công việc cụ thé đòi hỏi khả năng nhận
diện và phân loại như nhận diện khuôn mặt, nhận diện hình ảnh, phát hiện và phân
loại đối tượng Chính vì lý do đó, nó đã trở thành một công cụ không thê thiếu Tuy
nhiên, để đáp ứng nhu cầu ngày càng cao và mở rộng phạm vi ứng dụng cũng nhưnâng cao hiệu suất làm việc, CNN cần phải cải thiện một số khía cạnh như tốc độnhận diện, hiệu quả tính toán, khả năng tổng quát hóa, giảm thiểu tài nguyên và năng
lượng.
Nhìn thấy được những khía cạnh cần cải thiện của mang CNN, em nhận thấyvấn đề tốc độ nhận diện và hiệu quả tính toán là hai vấn đề mà CNN cần được giảiquyết vì mô hình CNN ngày càng phức tạp và yêu cầu xử lý với lượng đữ liệu lớn
Bên cạnh đó, hiện này máy gia tốc được ứng dụng rất nhiều trong việc tăngtốc và nâng cao hiệu suất tính toán Và máy gia tốc CGRA tăng tốc cho các thuật toánmật mã học là một kiến trúc phần cứng thú vị nhờ vào tính linh hoạt và khả năng tínhtoán song song Do đó, việc tìm hiểu và cấu hình lại CGRA để tăng tốc phép nhântích chập từ đó cải thiện tốc độ xử lý của mô hình nhận diện ảnh CNN một trong
những mục tiêu quan trọng mà đề tài khoá luận này hướng tới.
Trang 11Chương 1 TONG QUAN
1.1 Dat van dé
Trong thé giới ma khoa học kỹ thuật ngày càng phát triển, máy học đã trở thành
một lĩnh vực ngày càng phô biến và quan trọng Trong đó mạng thần kinh tích chập
(CNN) nỗi bật với khả năng xử lý và nhận diện hình ảnh cũng như giọng nói một
cách chính xác, phục vụ cho nhu cầu xử lý dữ liệu khổng lồ trong thời gian ngắn.
Khái niệm này được đưa ra lần đầu tiên trong những năm 1980 bởi KunihikoFukushima, Sei Miyake, Takayuki Ito [1], mô phỏng cách thức hoạt động của tế bàothần kinh trong não bộ Từ đó, CNN đã không ngừng phát triển, với các mô hình ngàycàng tiên tiến hơn như Lenet (1997) [2] có 60 nghìn trọng số, AlexNet (2012) với 60triệu trọng số, VGGNet (2014) 138 triệu trọng số, và GoogleNet (2014) với 4 triệutrọng số Một kiến trúc CNN tiêu biểu bao gồm bốn phần chính: Convolution layer,
Pooling layer, Activation ReLU (Rectified Linear Unit) và Fully Connected layer
được ghép nối với nhau theo cấu trúc nhiều tang Trong đó phép nhân tích chập đóngvai trò trung tâm, tác động đến hiệu suất tông thé của mạng Do đó, việc nghiên cứu
và tôi ưu hóa phép nhân tích chập trong CNN sẽ là trọng tâm của công trình này,
hướng đên việc cải thiện đáng kê hiệu suat của các mô hình.
Z RK oK 2 A gre
1.2 Tinh cap thiệt của dé tài
Dé cải thiện khả năng tính toán và nâng cao hiệu suất của CNN, máy gia tốcphan cứng thường được sử dụng Các máy gia tốc này thường được thiết kế dé thựchiện tăng tốc các hoạt động tính toán cụ thé như phép nhân ma trận, hiệu quả hơn sovới các CPU đa năng về tốc độ tính toán và hiệu quả năng lượng Trong số các kiếntrúc phần cứng, mảng phần cứng có khả năng tái cấu hình cấu trúc thô (CoarseGrained Reconfigurable Array- CGRA [3]) là một kiến trúc đầy hứa hẹn vì khả nănglinh hoạt và hiệu quả của nó trong việc phát triển các bộ tăng tốc phần cứng tuỳ chỉnh.Máy gia tốc được thiết kế để nâng cao hiệu suất và hiệu quả năng lượng của CNNbăng cách tăng tốc hoạt động nhân tích chập đòi hỏi nhiều tính toán
Trang 121.3 Hướng nghiên cứu đề tài
Đầu tiên, em sẽ tiến hành tìm hiểu các lý thuyết liên quan về nhận diện ảnhtrong mạng thần kinh tích chập (CNN) cụ thé là mô hình Lenet-5 Tiếp theo, em sẽtiền hành hiện thực mô hình nhận diện ảnh CNN Lenet-5 bằng ngôn ngữ C với tat cả
các hàm của mô hình đêu sẽ được việt thủ công.
Tiếp theo, em sẽ tìm hiểu về lý thuyết, cách hoạt động và sử dụng của Mang có
khả năng tái cầu trúc cấu hình thô (CGRA) dựa trên máy gia tốc CGRA tăng tốc cácthuật toán mật mã học cho hai thuật toán mã hoá khối đối xứng AES-128 và SM4, từ
đó cấu hình lại CGRA dé hỗ trợ tính toán nhân tích chập cho mạng CNN CGRA sau
khi được cấu hình lại để thực hiện tính toán nhân tích chập sẽ tiễn hành tính toán, thực hiện tính toán xong sẽ đưa kết quả lên lại phần mềm đề thực hiện các layer tiếp theo.
Phần cứng sẽ được thiết kế sử dụng ngôn ngữ mô tả phần cứng Verilog và sau
đó sẽ tiến hành thiết kế và mô phỏng trên phan mềm Vivado Cuối cùng sẽ tiến hànhđánh giá tốc độ xử lý và tài nguyên phần cứng bằng phần mềm Vivado Design Suit.1.4 Mục tiêu đề tài
Trong khoá luận này, đầu tiên, em sẽ nghiên cứu, phân tích và tìm hiểu lýthuyết về nhận diện ảnh trong mạng thần kinh tích chập Thứ hai, em sẽ nghiên cứu,
phân tích, tìm hiểu lý thuyết và cách sử dụng của mảng phần cứng có khả năng tái
cấu hình cấu trúc thô (CGRA) dựa trên may gia tốc CGRA cho các thuật toán mật mãhọc Thứ ba, em sẽ nghiên cứu, phân tích và cấu hình lại CGRA dé có thé thực hiện
tăng tốc phép nhân tích chập Tiếp theo, em sẽ hoàn thành được hệ thống chạy mô
phỏng trên phan mềm Vivado dé kiêm chứng chức năng của khối IP Sau cùng, em
sẽ hiện thực phần cứng lên FPGA
Mục tiêu của đề tài là nghiên cứu, phân tích và tìm hiểu cách sử dụng máy giatốc CGRA tăng tốc các thuật toán mật mã học mà nhóm nghiên cứu trước đã hoànthành Sau đó cấu hình lại CGRA dé có thể hỗ trợ tính toán phép nhân tích chập
Trang 13Chương 2 CƠ SỞ LÝ THUYET
2.1 Convolutional Neural Networks - Mạng thần kinh tích chập
Mang thần kinh tích chập (CNN) là một bước tiến đáng ké trong lĩnh vực trí
tuệ nhân tạo, nó được lay cam hứng từ co chế xử lý ảnh của não bộ con người Khi
chúng ta nhìn thấy một vật thé, võ não thi giác sẽ lần lượt kích hoạt nhiều lớp tế bàothần kinh, mỗi lớp chuyên trách phát hiện các đặc trưng ngày càng phức tạp của đốitượng, từ hình dạng, góc cạnh, màu sắc cho đến kết câu cuối cùng là nhận diện hìnhảnh đầy đủ
Kiến trúc của CNN bao gồm lớp đầu vào, lớp đầu ra và các lớp ân năm ở giữa.Các lớp an bao gồm: lớp tích chập (Convolution Layer), lớp tổng hợp (PoolingLayer), lớp kết nối đầy đủ (Fully Connected Layer) và các hàm kích hoạt (Activation
Functions) Mỗi lớp trong mạng thần kinh tích chập đều có nhiệm vụ và chức năng
riêng của mình Lớp tích chập sẽ thực hiện nhân tích chập dữ liệu đầu vào với bộ lọcđược cung cấp sau quá trình Training, từ đó trích xuất các đặc trưng của ảnh Lớptổng hợp đóng vai trò giảm kích thước của dữ liệu đầu vào giúp giảm đữ liệu tính
toán và kiểm soát quá trình học của mô hình Các lớp kết nối đầy đủ phân tích cácđặc trưng bằng cách kết nói mỗi neuron của lớp này được kết nối với mỗi neural củalớp trước đó, sau đó sẽ đưa ra quyết định cuối cùng Các hàm kích hoạt như ReLU và
Softmax cung cấp tính phi tuyến tính và khả năng phân loại
Một số mang CNN tiêu biểu như: Lenet (1990), AlexNet (2012), VGGNet
(2014), GoogleLeNet (2014), ResNet (2015),
Trang 14fc 3 fc_4
Fully-Connected Fully-Connected
Neural Network Neural Network
Conv_1 Conv 2 ReLU activation
Convolution Convolution Ì _
(S x 5) kernel Max-Pooling (Sx5]kernel Max-Pooling (with
valid padding (2x2) valid padding (2x2) @ dfonoui}
Lớp tích chập là lớp diễn ra quá trình nhân tích chập giữa Input và các Kernel,
kết qua cho ra là các Future map Đối với Input, nếu là ảnh đen trang thì Input đầuvào sẽ là một mảng hai chiều với kích thước (chiều cao ảnh) x (chiều rộng ảnh), nếu
là ảnh màu thì Input đầu vào sẽ là một mảng ba chiều với kích thước (chiều cao ảnh)
x (chiều rộng ảnh) x (chiều sâu ảnh) Đối với Kernel, Kernel sẽ có kích thước tuy vào
từng mô hình, và có chiều sâu sẽ bằng chiều sâu của Input Các kích thước của kernel
phổ biến là 3x3, 5x5 hoặc 7x7
Quá trình nhân tích chập sẽ diễn ra như sau: Đầu tiên, ma trận Kernel được di
chuyền qua từng vị trí trên ma trận của Input đầu vào, theo chiều từ trái sang phải và
từ trên xuống dưới Tại mỗi vị trí của ma trận Kernel được đưa tới, ta thực hiện nhântừng phan tử của Kernel với từng phan tử ở vị trí trong ứng trong vùng ma trận Inputđược ma trận Kernel đưa tới Cuối cùng, tổng tất cả các giá trị sau khi được nhântương ứng sẽ là kết quả tại vị trí tương ứng cho ma trận đầu ra
Trong quá trình nhân tích chập ta cần chú ý đến hai thông số là Stride vàPadding Kernel sẽ trượt qua ảnh và thực hiện nhân tích chập, với mỗi lần trượt vàhoàn thành nhân tích chập sẽ cho ra một kết quả tại vị trí đầu ra Output Số bước ở
Trang 15mỗi lần trượt được gọi là Stride, thông thường ở lớp tích chập Stride sẽ bằng 1.Padding sẽ có hai loại là Same Padding và Valid Padding Đối với Same Padding, sẽtạo ra các giá trỊ bằng 0 ở rìa của ma trận đầu ra, sao cho ma trận đầu ra sẽ có kíchthước không đổi so với ma trận đầu vào Đối với Valid Padding, ma trận đầu ra sẽ có
kích thước là (Input_size — Kernel_size + 1), với Input_ size là kích thước ma trận đầu
vào, Kernel_ size là kích thước của ma trận Kernel.
Hình 2.2 là ví dụ về nhân tích chap hai với ma trận đầu vào có kích thước 5x5,
Kernel có kích thước là 3x3, Stride là 1 và Valid Padding Output thu được có kích thước là 3x3.
Lớp tổng hợp là lớp phụ trách việc giảm kích thước của các future map sau
khi tích chập Nhờ vào việc giảm kích thước đó, số lượng tính toán dữ liệu ở các lớp
kế tiếp cũng sẽ được giảm đáng kề Lớp tổng hợp này cũng rất hữu ích trong việc lọc
ra ra những đặc trưng nỗi bật, giúp cho mô hình huấn luyện nhanh và hiệu qua hon.Lớp tổng hợp cũng có hai thông số là Stride và Padding Stride được định nghĩa giốngvới ở lớp tích chập Về Padding cũng sẽ chia làm hai loại là Padding Same và PaddingValid Với Padding Valid, kích thước đầu ra sẽ được xác định theo công thức (2.1)
Trang 16và Padding Same thì kích thước đầu ra sẽ được xác định bằng công thức (2.2) Gọi
H_in và W_in là kích thước đầu vào, H_ out và W_ out là kích thước đầu ra, K là kích
thước của cửa số trượt
H_out = H_in/K va W_out = W_in/K (2.1) H_out = Ceil(H_in/K) va W_out = Ceil(W_in/K) (2.2)
Có hai loại Pooling là Max Pooling va Average Pooling.
Max Pooling: Đây là loại Pooling phổ biến nhất trong CNN Max Poolingchia nhỏ ma trận đầu vào thành các ma trận con nhỏ hon và chỉ lay gia tri lon nhat
trong mỗi ma trận con làm giá trị đại diện Quá trình này giúp giữ lại các đặc trưng
quan trọng trong ảnh và giảm kích thước ma trận.
Average Pooling: Đây là loại Pooling chia nhỏ ma trận đầu vào thành các matrận nhỏ con hơn và lấy giá trị trung bình trong mỗi ma trận con làm giá trị đại diện.Việc lấy giá trị trung bình có thê giúp mô hình ồn định hơn và giảm thiểu tác động
của các giá trị nhiễu.
Hình 2.3 là ví dụ của Max Pooling và Average Pooling với kích thước cửa số
trượt là 2x2, ma trận đầu vào có kích thước 4x4, Stride bằng 2
Trang 172.1.3 Fully Connected Layer — Lớp kết nối đầy đủ:
Sau khi thực hiện các lớp tích chập và tong hợp, mang CNN thường kết thúcbang lớp kết nối day đủ - kết nối tat cả nốt của lớp này với tất cả nốt của lớp khác.Lớp này thường dùng trong mục dich dé phân loại ảnh và dé dữ liệu dự đoán có thé
hiểu được, hàm kích hoạt Softmax sẽ được áp dụng, nó sẽ chuyên dữ liệu về dạng
xác suât.
Đâu vào của lớp sẽ được “làm phăng” thành một ma trận một chiêu (vector),
tat cả các not cua ma trận sẽ được nhân với một trọng sô đê tạo ra một not dau ra Lớp này được tính băng công thức (2.3), với N là sô not dau ra.
yi = xk * wkWxH-1k=0+bi,0<i<N (2.3)Lớp kết nối đầy đủ được thê hiện qua ví dụ trong Hình 2.4 với 7 nốt đầu vào và 5 nốt
đâu ra.
Trang 18saan dấu am ane eee ee ee eee eee ee ee cm
Hình 2.4 Lớp kết nối đầy đủ với 7 nót đầu vào và 5 not dau ra
2.1.4 Activation Functions — Các hàm kích hoạt
2.1.4.1 Hàm kích hoạt ReLU
ReLU tên day đủ là Rectified Linear Unit, loại bỏ các giá trị âm bằng cách đặt
nó về 0, làm tăng các đặc trưng phi tuyến tính của mạng tổng thé mà không ảnh hưởngtrực tiếp đến lớp tích chập Công thức đầy đủ của hàm ReLU được thể hiện ở (2.4)
f(x) = max (0, x) (2.4)
2.1.4.2 Hàm kích hoạt softmax
Hàm kích hoạt Softmax thường được dùng sau khi thực hiện Fully Connected
Layer, mục đích dé giá trị được chuẩn hoá dưới dạng xác suất Hình 5 mô tả lớp kếtnối đầy đủ và theo sau là hàm kích hoạt Softmax
10
Trang 19Hình 2.5 Hàm kích hoạt Softmax kết nối với lớp kết nối day đủ.
Công thức tổng quát của hàm kích hoạt Softmax, với z¡ là kết quả đề cập ởtrên, a¡ là xác suất dự đoán của từng lớp được thé hiện như công thức (2.5)
Số dạng dau cham động (Floating point) là một phương pháp biểu diễn số thực
trong máy tinh, cho phép biểu diễn một phạm vi rộng lớn các giá trị
Biểu diễn các số dưới dạng: X=M*RE-Mla phan dinh tri (Mantissa)
- R là cơ sé (Radix)
- E là phần mũ (Exponent)
11
Trang 202.2.2 Chuẩn dấu cham động IEEE754:
Chuan dấu cham động IEEE754 là một dạng chuẩn hoá dùng dé biéu diễn các
số dau cham động nhị phân được hiệp hội Kỹ sư Điện và Điện tử (IEEE) đưa ra Nóđặc biệt hữu ích cho các số rất lớn hoặc rất nhỏ Chuẩn IEEE được biểu diễn bangmột phần định trị (Mantissa), một cơ số (Base) và một số mũ (Exponent) Cấu trúc
cơ bản của một số dấu chấm động theo chuẩn IEEE được viết dưới dạng Số =Mantissa x Base^Exponent Thông thường, đối với hệ nhị phân, phần Base sẽ là 2,còn đối với hệ thập phân thì phần Base sẽ là 10
Chuẩn IEEE754 là một tiêu chuân phô biến nhất cho số dấu cham động, vớihai dạng chính là số dấu cham động với độ chính xác don (Single Precision) và số
dau cham động với độ chính xác kép (Double Precision) Ngoài ra còn có dạng số
dau chấm động với độ chính xác một nửa (Half Precision) Độ chính xác của số dấucham động phụ thuộc vào số bit được sử dụng cho phần Mantissa và phan Exponent.Đối với Single Precision, một số dấu chấm động sẽ sử dụng 32 bit, với 1 bit đành chophan dau, 8 bit dành cho phan Exponent và 23 bit dành cho phần Mantissa Đối vớiDouble Precision, một số đấu cham động sẽ sử dụng 64 bit, với 1 bit đành cho phầndấu, 11 bit đành cho phần Exponent và 52 bit dành cho phần Mantissa Đối với HalfPrecision, một số dau cham động sé sử dung 16 bit, với 1 bit dành cho phan dau, 5bit danh cho phan Exponent va 10 bit danh cho phan Mantisa
Từ su khác nhau về số lượng bit của được sử dụng dé biểu diễn sẽ dẫn đến độchính xác cũng khác nhau Độ chính xác của số dau cham động sẽ phụ thuộc vào sốbit được sử dụng cho phần định trị (Mantissa) va phần số mũ ( Exponent) Độ chínhxác của Single Precision là khoảng 7 chữ số thập phân, trong khi với Double Precision
là khoảng 15 chữ số thập phân và với Half Precision là khoảng 4 chữ số thập phân.Phạm vi biểu diễn của Single Precision trải dài từ khoàng 1.4 x 104-45 đến 3.4 x10^45, phạm vi biểu diễn của Double Precision trải đài từ khoảng 4.9 x 10^-324 đến
1.8 x 10^308.
12
Trang 21Số dấu chấm động mang lại nhiều ưu điểm như biểu diễn những số rất lớn và
rất nhỏ, cũng như tính linh hoạt và tiện dụng trong nhiều ứng dụng khoa học và kỹ
thuật Tuy nhiên, bên cạnh những ưu điểm thì nó cũng có những hạn chế đi kèm Độchính xác có thé bi ảnh hưởng do số lượng bit hạn chế, và các lỗi làm tròn có thé bịtích tụ, gây ra sai số lớn trong các phép tính lặp lại
Hiểu rõ về độ chính xác và giới hạn của số dấu chấm động là rất quan trọng
dé tránh những sai số không mong muốn và đảm bảo tính toán chính xác và hiệu quatrong các ứng dụng Nên cần phải cân nhắc kỹ lưỡng khi chọn loại số dấu châm động
phù hợp cho từng tình huống cụ thé, đảm bảo sử dụng loại phù hợp dé đáp ứng yêu
cầu về độ chính xác và phạm vi biểu diễn Điều này giúp tận dụng tối đa sức mạnhcủa số dấu chấm động trong các mô phỏng, tính toán khoa học và kỹ thuật, đảm bảokết quả đáng tin cậy và chính xác
2.3 Mật mã học - Cryptography:
Mật mã học là lĩnh vực khoa học chuyên về bảo vệ thông tin thông qua các kỹthuật mã hóa và giải mã Nó là nền tảng của truyền thông kỹ thuật số an toàn, đảmbảo tính toàn vẹn, bảo mật và xác thực trên nhiều nền tảng khác nhau Trong bối cảnhcông nghệ Blockchain và Internet of Things (IoT) dang phát triển mạnh mẽ, cơ chế
mã hóa trở nên thiết yếu trong việc bảo vệ các giao dịch dữ liệu và tương tác thiết bị
trong một môi trường ngày càng kết nối [4] [5] [6] [7] Các thuật toán mật mã họcphố biến như: các thuật toán băm như SHA256, BLAKE-256, các phương pháp mã
hoá như AES và SM4 và các mã dòng như Chacha20, Salsa20 được ứng dụng vào
trong các hệ thống IoT dựa trên Blockchain Các hàm băm không chỉ bảo vệ dữ liệu
ở trạng thái nghỉ và trong quá trình truyền tải bằng cách tạo ra các dấu vân tay kỹthuật số độc nhất mà còn đóng vai trò quan trọng trong khai thác blockchain thông
qua giao thức Proof of Work, nơi chúng xác minh và thêm các giao dịch vào
blockchain một cách an toàn Các mã khối thường được sử dụng dé bảo vệ các thôngtin nhạy cảm, trong đó AES và SM4 là hai thuật toán mã khối đối xứng tiêu biểuthường được sử dụng Trong Blockchain, những phương pháp được sử dụng dé mã
13
Trang 22hoá các dữ liệu giao dịch, đảm bảo rằng chỉ có những bên có khoá giải mã mới có thétruy cập được thông tin một cách chính xác[8][9][10] Đối với các hệ thống loT, các
mã khối bảo vệ dit liệu được truyền qua các mạng có thể không an toàn, ngăn chặntruy cập trái phép và đảm bảo quyên riêng tư của dữ liệu AES và SM4 đặc biệt quan
trọng trong việc mã hóa hệ thống tệp, bảo mật các liên lạc không dây, và bảo vệ các giao dich tài chính [11][12][13] Mã dòng, như ChaCha20 và Salsa20, được thiết kế
để mã hóa dữ liệu dòng, làm cho chúng đặc biệt phù hợp cho các ứng dụng giao tiếpthời gian thực trong các thiết bị loT [14][15][16] Những thuật toán này cung cấp cácgiải pháp mật mã nhanh và hiệu quả, bảo vệ các dòng dit liệu có độ dài thay đổi với
độ trễ tối thiểu Chúng được sử dụng dé bảo mật internet, bảo mật lưu lượng web
thông qua các giao thức TLS/SSL, tăng cường bảo mật ứng dụng phần mềm, và tạođiều kiện cho việc giao tiếp thời gian thực và truyền tệp an toàn [17], [18], [19], [20].Các mã dong cũng được sử dụng trong các mạng blockchain dé tăng cường bảo mật
giao dịch.
Từ đó chúng ta thấy được ứng dụng của các thuật toán mật mã học trong bốicảnh Blockchain và Internet of Things ngày càng phát triển Trong đồ án, về mật mãhọc, em sẽ tập trung vào hai thuật toán mã hoá đối xứng là AES-128 và SM4
14
Trang 232.4 Thuật toán mã hoá khối đối xứng AES-128 (Advanced Encryption
Standard)
AES (Advanced Encryption Standard) là một tiêu chuẩn mã hóa đối xứng được
sử dụng phô biến trong việc bảo mật dữ liệu AES phát triển từ thuật toán Rijndael,được thiết kế bởi hai nhà mật mã học người Bi, Vincent Rijmen va Joan Daemen Thuật toán nay được chọn thông qua một cuộc thi do Viện Tiêu chuẩn và Công nghệQuốc gia Hoa Ky (NIST) tổ chức vào năm 1997 dé thay thế thuật toán DES (Data
Encryption Standard) đã lỗi thời Đến năm 2001, Rijndael chính thức được công bố
là tiêu chuẩn mã hóa AES
AES-128 là một biến thể của AES, đây là một thuật toán mã hóa khối đối xứngvới độ dài của khối trạng thái, khối đầu vào và khối đầu ra đều là 128 bit
AE128 bao gồm các thành phần như: Khoá (Key), Khối dit liệu (Block),
S-Box (Substitution S-Box), ShiftRows, MixColumns, AddRoundKey.
AES-128 bao gồm hai quá trình va 10 vòng (round) với các bước theo trình
tự: Key Expansion, Initial Round, Round 1, Round 2, Round 3, Round 4, Round 5, Round 6, Round 7, Round 8, Round 9 va Final Round.
Plaintext Block ExpandedKey[0] Cipher Key
—————> AddRoundKey kK Key Expassion ee
MixColumns E————————> AddRoundKey |
Trang 242.4.1 Khoá (Key) va Key Expansion ( Mở rộng khoá)
Khoá trong AES-128 là một dãy binany có kích thước 128 bit Với 1 byte = 8
bit và 1 word = 4 bytes thì một Khoá trong AES-128 được chia làm 4 word.
Key Expansion sẽ mở rộng khoá chính 128 bit thành một chuỗi khoá con, mỗi
khoá con có độ dai 128 bit Tổng cộng có 11 khoá con bao gồm 1 khoá cho Initial
Round và 10 khoá cho 10 Round còn lai).
Day lưu các Word Key sẽ có kích thước là 44 Word (giả sử là từ WO đến W43)
Dé thực hiện Key Expansion, ta sẽ chia Key thành các word, từ đó ta có 4
word, giả sử gọi 4 word đó là KO, K1, K2, K3 Sau đó đặt các Word KO, K1, K2, K3 vào trong dãy lưu các Word Key theo vi trí tương ứng là WO, W1, W2, W3.
Trình tự thực hiện các bước như sau:
o Bước 1: Đặt Word cuối (ban dau sẽ là W3) là Temp và Word đầu là W_start
© Bước 2: Dịch trái theo vòng Temp | byte (Temp = Temp << 1 byte)
o Bước 3: Subbytes Temp - thay mỗi byte trong Temp bang byte trong S-Box
o Bước 4: XOR từng byte trong Temp vừa được Subbytes với từng byte trong
hang sé vòng (Recon)
o Bước 5: Tao Word Key mới bang cách XOR từng byte của Temp đã được
Subbytes ở bước 3 với W_start.
o Bước 6: Đặt Temp là Word Key mới vừa tính được, dat W_ start là Work Key
kế tiếp của W start trước đó
o_ Bước 7: XOR từng byte Temp và W_start và quay lại bước 6 cho đến khi dãy
lưu trữ Word Key có đủ 44 Word (từ W0 đến W43)
o Bước 8: Chia dãy lưu trữ Word Key thành các khoá con cho từng vòng mã
hoá, mỗi Round Key sẽ có 4 Word, Round Key 0 sẽ bắt đầu từ W0, RoundKey 10 sẽ bắt đầu từ W40
Sau khi thực hiện đủ tất cả các bước, ta có được 11 Khoá con và hoàn thành
quá trình Key Expansion.
16
Trang 25Thực hiện AddRoundKey: XOR mỗi byte của ma trận trạng thái ban đầu với
từng byte tương ứng của khóa vòng đầu tiên (Round Key 0) dé tạo ra ma trận trạng
thái sau Initial Round.
2.4.3 Round 1-9:
Tiếp theo sau Initial Round trong quá trình mã hóa AES-128 là các Rounds từ
1 đến 9 Các Rounds này là phần chính của quá trình mã hóa, mỗi vòng được thựchiện theo một chu kỳ giống nhau, bao gồm các bước: SubBytes, ShiftRows,
MixColumns và AddRoundKey.
Chỉ tiết về ShiftRows và MixColumms sẽ được nêu ở phần dưới
2.4.4 SubBytes trong AES-128
Subbytes là bước đầu tiên trong mỗi vòng mã hoá của AES-128 (ngoại trừInitial Round - AddRoundKey) Bước này thực hiện một phép thay thế không tuyếntính trên từng byte trong ma trận trạng thái, bằng cách sử dụng một bảng tra cứu là
Substitution Box (S-Box).
S-Box là một bang tra cứu 16x16, có tong cộng 256 giá tri , được thé kế déthay thế mỗi bytes trong ma trận trạng thái băng một byte khác Mỗi giá trị byte đầuvào được chia là hai nửa là 4 bit cao và 4 bit thấp Trong đó 4 bit cao dùng làm chỉ số
hàng, 4 bit thấp dùng làm chỉ số cột và dựa vào đó có thể dễ dàng tra cứu giá trị thay
thế từ S-Box
17
Trang 26Trong thuật toán AES-128, bước ShiftRows là một phần quan trọng trong các
vòng mã hóa, được thực hiện sau bước SubBytes và trước bước MixColumns (trừ
vòng cuôi cùng).
Ma trận trạng thái trong AES-128 là một ma trận 4x4, trong đó mỗi phần tử
là 1 byte ShiftRows sẽ thực hiện dịch chuyền vi trí các phần tử trong mỗi hàng, cụ
thể như sau:
o Hàng đầu tiên (Row 0) sẽ giữ nguyên vị trí các phần tử
o Hàng thứ 2 (Row 1) sẽ dịch sang trái 1 byte theo vòng.
o Hàng thứ 3 (Row 2) sẽ dich sang trái 2 byte theo vòng.
o Hàng thứ 4( Row 3) sẽ dich sang trái 3 byte theo vòng.
18
Trang 27Bước này có vai trò dịch chuyên các hàng của ma trận trạng thái theo một mẫu
cố định, tao ra sự phân tán và tránh được mẫu đối xứng làm tăng sự phức tạp củathuật toán và đồng thời làm cho quá trình giải mã khó khăn hơn, nâng cao tính bảo
mật chung của AES-128.
2.4.7 MixColumns
MixColums trong AES-128 là một trong những phần quan trọng và phức tạp
nhất của thuật toán, nó đảm nhiệm vai trò trộn các cột của ma trận trạng thái dé tang
cường tinh phân tán và khả năng chống lại các cuộc tan công phân tích thống kê
MixColums là bước thứ ba trong mỗi Round chính của AES-128 ( ngoại trừ
Final Round), nó thực hiện phép trộn các cột của ma trận trạng thái theo một phép nhân ma trận đặc biệt của trường Galois (GF(2^8)).
Trong GF(2^§), các phép toán được thực hiện trên các phần tử có độ dài 8 bit(1 byte) Mỗi phan tử trong GF(248) có thể biéu diễn bởi một số nguyên không âm
từ 0 đến 255
Tại bước MixColumns này, mỗi cột của ma trận trạng thái sau bước ShiftRows
sẽ được nhân với ma trận hằng số MixColumns ( Constant matrix) theo quy tắc nhântrong trường Galois ( GF(2^8)) Phép nhân trong GF(2^S) được thực hiện dé đảm bảotính chất không tuyến tính và giữ cho các giá trị thu được nằm trong khoảng từ 0 tới
255.
Vì trong ma trận MixColumn chỉ có ba số theo hệ thập lục phân tạo thành là:
01, 02 và 03 nên em sẽ sử dụng quy tắt nhân đơn giản như sau:
o Khi nhân với 1: giữ nguyên giá tri.
o_ Khi nhân với 2: Dich trái 1 bit Trong trường hợp sau khi dich, bit có trọng số
cao nhất sau khi dịch có giá trị là 1 thì ta sẽ thực hiện XOR kết quả vừa dịch
với |b (hexa).
o Khi nhân với 3: Làm tương tự khi nhân với 2 sau khi có kết quả, ta thực hiện
XOR với giá trị trị ban đầu
19
Trang 28Mỗi phần tử trong ma trận kết quả của MixColumns là kết quả của phép nhân
một cột của ma trận trạng thái với một hàng của ma trận hằng số MixColumns, sử
dụng phép nhân trong GF(2^8) Khi nhân hai ma trận và cộng kết quả trong GF(2^8),thay vì ding phép cộng giữa các kết quả của các phép nhân, ta sẽ sử dụng phép XOR
Trang 292.5 Thuật toán mã hoá khối đối xứng SM4
SM4 là một thuật toán mã hóa khối đối xứng, được phát triển bởi Viện Khoahọc và Công nghệ Tài chính Quốc gia Trung Quốc (NSC) Thuật toán này hoạt độngvới cả kích thước khối và khóa đều là 128 bit SM4 thực hiện mã hóa và giải mã thôngqua một chuỗi các biến đổi phức tạp như phép thay thế, dịch chuyền và hoán vị Vớithiết kế nhắm đến việc đảm bao tính bảo mật cao và hiệu suất 6n định, SM4 được sử
dụng rộng rãi trong các ứng dụng bảo mật thông tin nhạy cảm [22].
Trang 30SM4 có hai phan chính là: Key Expansion và các Round biến đổi (32 rounds).
2.5.1 SubBytes trong SM4
SubBytes thực hiện một phép thay thế không tuyến tính trên từng byte trong
ma trận trạng thái, bằng cách sử dụng một bảng tra cứu là Substitution Box (S-Box)
S-Box là một bang tra cứu 16x16, có tổng cộng 256 giá trị , được thế kế déthay thé mỗi bytes trong ma trận trạng thái bang một byte khác Mỗi giá tri byte đầuvào được chia là hai nửa là 4 bit cao và 4 bit thấp Trong đó 4 bit cao dùng làm chỉ sốhàng, 4 bit thấp dùng làm chỉ số cột và dựa vào đó có thé dé dàng tra cứu giá trị thaythế từ S-Box
8d 1b af 92 bb dd be 7f 11 d9 Sc 41 1f 10 5a đ8
0a ci 31 88 a5 cd 7b bd 2d 74 d0 12 b8 e5 b4 bO
89 69 97 4a Oc 96 77 Te 65 b9 fl 09 c5 6e c6 84
18 f0 7d ec 3a dc 4d 20 79 ee 5f 3e d7 ch 39 48
h ® B.ằñ Œ 0 BOON Ơ ƠI d> WHY CO
Hình 2.10 Bảng S-Box 16x16 của thuật toán SM4
2.5.2 Key Expansion SM4 - Mở rộng khoá
Cũng tương tự như thuật toán AES-128 đã được nêu ở phần trước, SM cũng
sẽ có phần mở rộng khoá, với khoá có kích thước 128 bit sẽ được chia làm 4 word
với mỗi word là 32 bit.
22
Trang 31Dé tìm hiểu rõ hơn về các bước tạo round key cho SM4, ta giả sử khoá củaSM4 sau khi được chia ra làm 4 phan sẽ là: MK0, MK1, MK2, MK3 Với các hang
số FK lần lượt là: FK0 = 0xA3B1BAC6, FK1= 0x56AA3350, FK2 = 0x677D9197,
FK3 = 0xB27022DC.
Ta lần lượt tim được bốn khoá khởi đầu với công thức:
K[i] = MK[i] XOR FK[i] với i=0, 1, 2, 3.
Sau khi tim được bốn khoá khởi dau, ta tiếp tục tính toán tạo ra 32 Round Keydựa vào bốn khoá khởi đầu và các giá trị hằng số CK đã được xác định từ trước
Quá trình tính toán Round Key diễn ra như sau:
o Sử dụng hàm phi biến đổi Lo: Lo (X) = X XOR (X <<< 13) XOR (X <<<23)
o_ Sử dụng bảng thay thé S-box S: B = S(A)
o_ Kết hợp lại thành hàm T’ : T’(X) = Lo (S(X))
o Tính toán Round Key: RK[i] = K[i+4] = K[i] XOR (K[i+1] XOR K[i+2] XOR
K[i+3] XOR CK[i]) với ¡= 0, 1, 2, , 31.
Round Key là một phan rat quan trong dé có thé tiếp tục tính toán ở phần mã hoá
2.5.3 Encryption SM4
Sau khi tạo được các Round key cho các vòng trong phần mã hoá bước tiếptheo ta sẽ vào phần mã hoá
Đầu tiên ta sẽ chia khối plaintext ban đầu thành 4 word là: X0, X1, X2,X3
Kế tiếp ta tiếp tục thực hiện tính toán đề đưa ra các Word X kế tiếp theo công thức:
X iva = X[i] XOR T’(X[i+1] XOR X[i+2] XOR X[i+3] XOR RK[i])
Trong đó T’ là ham biến đổi sử dụng ham phi tuyến tính Lo va S-Box đã đượcnêu ở phần tạo Round Key ở trên
Sau khi thực tính toán 32 vòng, Ciphertext sẽ được hình thành từ 4 Word cuối cùng:
Ciphertext = X[35] Il X[34] II X[33] II X[32]
23
Trang 32Ciphertext chính là kết quả cuối cùng sau khi mã hoá với 128 bit.
24
Trang 33Chương 3 HIỆN THỰC PHAN MEM MẠNG CNN LENET-5 NHẬN
DIEN CHU SO VIET TAY
Mang than kinh tich chap CNN Lenet-5 nhan dién chit số viết tay được thiết
kế bao gồm hai phan chính là Training và Prediction Với phan Training dé tạo ra các
trọng số weight và bias cần thiết cho việc tính toán sau này, em sử dụng ngôn ngữPython với sự hỗ trợ của thư viện Tensorflow và Keras Kế tiếp là phần Prediction,
sử dụng ngôn ngữ C để thiết kế và test accuracy của cả Model
Mục tiêu của model CNN này là nhận diện chữ số viết tay trên tập dữ liệu
MNIST với accuracy lớn nhất có thê.
3.1 Training Phase
Ở giai đoạn Training, em sử dụng ngôn ngữ Python dé thực hiện quá trình
training nhờ vao thư viện Keras và Tensorflow Hai thư viện này cực kì mạnh mẽ
giúp quá trình Training diễn ra nhanh và dữ liệu có độ chính xác cao.
Một vai thông số liên quan đến quá trình Training được thé hiện rõ ở Bảng 3.1
Epochs 100 Số lượng lần mà toàn bộ tập dữ liệu huấn luyện được sử
dụng đề huấn luyện mạng nơ-ron
Optimizer Adam | Thuật toán tôi ưu hóa
Validation 0.1 | Tỷ lệ phan tách từ tập dữ liệu huấn luyện dé dùng cho
split việc đánh giá (validation)
25