Các giảithuật này đều hoạt động chính xác và đạt được hiệu suất cao với tan số 210MHz, chứng minh khả năng tích hợp và ứng dụng của RISC-V trong các hệ thống bảo mật hiện đại... Quá trìn
Trang 1ĐẠI HOC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
LE DUC HONG AN - 20521048
HO VIET ANH - 20521063
KHOA LUAN TOT NGHIEP
THIET KE VA HIEN THUC BO DONG XU LY RISC-V TOC DO CAO HO TRO CAC THUAT TOAN MA HOA
DESIGN AND IMPLEMENTATION OF A HIGH-SPEED RISC-V
COPROCESSOR SUPPORTING CRYPTOGRAPHIC
ALGORITHMS
CU NHAN NGANH KY THUAT MAY TINH
GIANG VIEN HUONG DAN
TS PHAM HOAI LUAN
TS LAM DUC KHAI
TP HO CHÍ MINH, 2024
Trang 2LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Kỹ Thuật Máy Tính trường Đại
học Công nghệ Thông tin - ĐHQG TP.HCM, chúng em đã được trang bị các kiếnthức cơ bản và các kỹ năng dé có thé thực hiện Khóa Luận Tốt Nghiệp của mình
Đầu tiên, chúng em muốn gửi lời cảm ơn tới Nhà trường vì sự đầu tư và tận
tâm trong việc xây dựng một môi trường học tập chất lượng cao dé hỗ trợ chúng em
về mọi mặt trong suốt quá trình học tập
Chúng em cũng xin bày tỏ lòng biết ơn đến thầy Phạm Hoài Luân và thầy Lâm
Đức Khai vì đã tận tâm và kiên nhẫn hướng dẫn chúng em trong quá trình thực hiện
Khóa luận Những lời giải thích, sự chỉ bảo và những gợi ý quý báu từ Thay đã giúpchúng em vượt qua những khó khăn, hiểu sâu hơn về đề tài và hoàn thiện đồ án mộtcách tốt nhất
Cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trongkhoa, bạn bè, là những người đã luôn đồng hành, sẵn sàng chia sẻ và giúp đỡ chúng
em trong suốt quá trình học tập và trong cuộc sóng
Vì đây là lần đầu thực hiện Khóa luận, nên những sai sót của chúng em là điềukhó tránh khỏi, chúng em kính mong nhận được sự chỉ dẫn và góp ý của quý thầy
cô dé chúng em có thé phát triển và hoàn thiện đồ án hơn trong tương lai
Chúng em xin chân thành cảm ơn!
Hồ Chí Minh, 2024
Sinh viên thực hiện
Lê Đức Hồng Ân Hồ Viết Anh
Trang 3MỤC LỤCChương 1 TONG QUAN DE TÀI - 2-52 52St+EE£EE2EE2EE2EEEEEEEErrkrrerrree 15Chương 2 CO SỞ LÝ THUYÊT - 2-2 £+S++E£+E++EE+EE+EEEEEErEerrerrerreee 17
2.1 Kiến trúc RISC-V: -:-2+¿+22+222x2221222112211211127112111221112111.211 1x 17
2.1.1 Lịch sử phát triỂn: -¿- ¿2£ +£+x+2Ex+2EktEEEtEEEEEEEEEEEerkrerkesrkesree 17
VN) S6 Ai 00 0n 6 135 18
2.1.3 RV32I và RVOA4I Instruction S€(: - - -c c1 13+ v3 se 23
2.2 Các thuật toán mã ha: - - c G0122 21011111119311 1111110 111111882 111 11882111 re 28
2.2.1 Tổng quan về Hash: 2- 22 5¿2++2E+2EEtEEEtEEEEEEEEEEEEEEerrkrerkrsree 282.2.2 Tổng quan về mật mã hóa SHA-256: 2-2: ¿2 +++£+++£+z+z 292.2.3 Tổng quan về mật mã hóa SHA -5 12: 2 ++++:x++zx++zs+2 312.2.4 Tổng quan về thuật toán SMB: ccccccsesesessessessessessessessessessessessesessessens 332.2.5 Tổng quan về thuật toán BLAKE2: 2-2 252 £+£2£+EzEzez 362.2.6 Tổng quan về thuật toán mã hóa luỗng: - 2-2 s2 2+££+£z+£z+£z 382.2.7 Tổng quan về thuật toán mật mã luồng Salsa20: -2- 2-2-2 392.2.8 Tổng quan về thuật toán mật mã luồng ChaCha20: - 5- 412.2.9 Tổng quan về thuật toán AES? ccccccccccessessessessessessssessessesssssesseseseeasees 44
2.2.10 Tổng quan về thuật toán mã hóa SM4: .: 2- 2: 5252222 46
2.3 Bộ xử lý mã hóa dựa trên kiến trúc RISC-V 64 Dit: - c©ccxscxseerxez 48
2.3.1 Tổng quan về kiến trúc kết hợp ARM và RISC-V 64 bit: 48
2.3.2 Các công cụ hỗ tTỢ: ¿- ¿2:22 2x+2x+Ex‡EEEEEEEEEEEEEEEEEEEEEEkerrrrrrrrrrrei 50
2.3.2.1 RISC-V GNU Toolcha1n: cc ccssscs**sskseesesereeeeees 50
PC i2 291 51
Trang 4Chương 3 _ PHƯƠNG PHAP THỰC HIỆN - 2-2 2 52+ z+£x+£Ezzzserxez 54
3.1 Thiết kế IP RISC-V hỗ trợ các thuật toán mật mã hóa: - 2s z=s 54
3.1.1 Chi tiết thiết kế Buffer hỗ trợ lưu trữ dữ liệu tạm cho các thuật toán mật
mã hÓa: E0 1101111122 SĐT vế 56
3.1.2 Chi tiết thiết kế bộ mô-đun tính thuật toán mật mã hóa “256,
SHA-512, SM3”” - St tt 211 215115111111211111111111111111111111111111111111111 1.11 ce 58
3.1.3 Chi tiết thiết kế bộ mô-đun tính thuật toán mật mã hóa “ChaCha20,
BLAKE2S, Salsa207” 2-5 5c221 2k2 2E122112112711211211711211 1111.111111 re 66
3.1.1 Thiết kế mô-đun tính toán cho thuật toán AES: - 713.1.2 Thiết kế mô-đun tinh toán cho thuật toán SM4: 2-52 753.2 Tùy biến lệnh trong RISC-V: -¿-¿- +2+¿2+2EEtEEEtEEEeEEeerkeerkrsrkrrrree 76
3.2.1 Tổng quan về tùy biến lệnh trong kiến trúc RISC-V: .- 763.2.2 Chi tiết tùy biến nhóm lệnh cho các thuật toán mật mã hóa: 78Chuong 4 KIEM TRA VÀ ĐÁNH GIA KET QUA HIỆN THỰC 81
4.1 Kịch bản kiỂm trat ccccecsccccseccssssescssesecsesseccscscecsvsucsesucacsesucarsveusarsncasstsecacaveecars 814.2 Chi tiết kết quả kiểm tra hiện thựC: 2- 2 + 5+2c++2x+2zxvzzxezrxerseees 824.3 Đánh giá kết quả hiện thực: -+- + + x+Ex+EE+EE+EEEEEEEEeErExrrkrrerreee 90Chương 5 KẾT LUẬN VÀ HƯỚNG PHAT TRIÉN 2-2-2525: 95
5.1 KẾt luận: oecccccccscsssessesssessessvsssecsecsusssessessusssscssssusssecsessusssessussusssecsusssessessueaseeses 955.2 Hướng phat triỂn: - 2-2 E+SE+SESE£EEEEEEEEEEEEE1EE121121122121111 111.1 xe 96
Trang 5DANH MỤC HÌNH
Hình 2.1: Minh họa về thuật toán băm [3] 2- 2 + + E+EeEE+EeEEeEE+Eerkerxreerxez 29 Hình 2.2: Sơ đồ thuật toán băm SHA-256 -:- 2-22 ©5222+2E2+E++£xvzx+zrxerxez 31 Hình 2.3: Sơ đồ thuật toán băm SHA -5 12 - 2-22 2£ +2E£+EE+EE£+EEeEEerxerrserxee 33
Hình 2.4: Hàm nén của thuật toán SÌM3 - c5 5 221 1E*** 22 EkkSssseeeerse 35 Hình 2.5: Hàm nén của thuật toán BLAKEs - << 55522222 ‡++sseeeeeeezes 37
Hình 2.6: Mô tả về mật mã luỖng - 2-2 2 2 £+EE+EE+EE2EE+E2EE+EEzErrerrerreee 39
Hình 2.7: Ham Quarter Round của thuật toán Salsa20 - +55 ++c<<<+++sss 40
Hình 2.8: Ham Quarter Round của thuật toán ChaCha20 55555555 +++++ 43
i06.) 0010.0002.111 46
Hinh 2.10: Giadi thudt SM4 oo eee 48
Hình 2.11: Tổng quan kiến trúc kết hợp ARM và Co-RISC-V - 48
Hình 2.12: Kiến trúc tong quan của giao thức AXI4 -2 ¿-cs¿5cx++cxz5sse2 52 Hình 2.13: Kênh đọc của giao thức A XL4 6 1xx nh rưy 53 Hình 2.14 Kênh ghi của giao thức AXI4 ooo cccccesccescesseeeeseeeeeeceeeeeeesseeeeseeees 53 Hình 3.1: Tổng quan kiến trúc RISC-V woccecccccccecccscesessesessesesssessessessesessesessesseseeaees 54 Hinh 3.2: Co ché hoat động của BufÍ€T - - 5 1S ng 56 Hình 3.3: Tổng quan thiết kế SHA256 2-2 2 2+S£+EE2EE+E2EE2E2E2EzEerreee 59 Hình 3.4: Khối Block Function -¿++++tE+++ttEEEktttEkkrrttrrrrrireeriee 59 Hình 3.5: Khối Hash Function -2- 2: 2£ +2E££SE£EE£EE£EEtEEESEEEEErEEerkerrerrrervee 61 Hình 3.6: Khối Block Function kết hợp SHA256 và SHA512 - 62
Hình 3.7: Khối Hash Function kết hợp SHA256 và SHA512 - 62
Hình 3.8: Tổng quan thiết kế kết hợp SHA256 và SHA512 - 63
Hình 3.9: Khối Block Function kết hợp SHA256, SHA512 và SM3 64
Hình 3.10: Kiến trúc kết hợp Hash Function của SHA256, SHA512 và SM3 65
Hình 3.11: Tổng quan kiến trúc kết hợp SHA256, SHA512, SM3 - 65
Hình 3.12: Kiến trúc kết hợp G Function và QuaterRound 2-2-5 +: 67
Hình 3.13: Khối tính 2 round cho ChaCha và BLAKE2S 2-2 2 2 25+ 68 Hình 3.14: Khối tính Salsa20 QuaterRound - 55 3+ x 3+ seeersrreersee 69
Trang 6Hình 3.15: Khối tính 2 round cho Salsa - ¿2 +2 SE EEEE+E+E+EeEeEEEErEzErEsrrrersrs 70 Hình 3.16: Khối tính kết hợp BLAKE2S, ChaCha20, Salsa20 - 71
Hình 3.17: Khối ShifÑows - -252c 22 t2 ttttrtrrttrkrrrttrirrrtiirrrrirerieg 72
Hình 3.18: Khối MixColumns 2-2552 E2++ttEEkrEEEkkrttrtrrrrtirrrrirerriee 73
Hình 3.19: Khối AddRoundKeyy - 2 2 2 +2 ++E£+E++E++E++E£EE+EzErrerrerreee 74
Hình 3.20: Mô-đun tính Cipher cho giải thuật AES -.- 5-5525 s++scrseeess 75 Hình 3.21: Mô-đun tinh Cipher cho giải thuật SÌM4 7 ScS+ssrsersereeres 75
Hình 4.1: Kết quả tính toán AES của RISC-V va ARM được in ra Terminal dé so
Hình 4.12: Kết qua của giải thuật SM3 khi xem trong ILA_ Debug - 88
Hình 4.13: Kết quả tính toán SM4 của RISC-V và ARM được in ra Terminal dé so
0:0 ồỒÚẦẢ 88
Trang 7Hình 4.15: Kết quả tính toán Salsa20 của RISC-V va ARM được in ra Terminal dé
Hình 4.16: Kết quả của giải thuật Salsa20 khi xem trong ILA_Debug 89
Hình 4.17: So sánh hiệu quả năng lượng của nghiên cứu này với các CPUs 93
Trang 8DANH MUC BANG
Bộ thanh ghi của RISC- V - «ch eg 19
Lệnh định dạng lR -5-ccsecskrtrkrrrrirtrrirtirtiirtiiriiriirriirrirriee 20 Lệnh định dạng Ì -s«-55<Sc+cSEeEEEtEEitErirEirririiiiriiririe 21 Lệnh định dạng S s-5<-5c<ScteerttriEkrErHH 1 1 gi 22 Lệnh định dạng UƯ 5s-ccxc+ketrkittrirtErirEirtiirtiiriiririirrerrree 22
RV32I Instruction S@( -cccsersrrrrrrrrrrrtrirrrirrrirrriirrrirrrrrirrrrrrree 23
RV64 Instruction SG( -ssccctcrkirtrkitrkirtrrirriiiriiriirirririrrierrree 26 BLAKE2S GF và ChaCha20 QR ccs-Scsiicsriieiiriiiiierrie 66
Sự tương đồng giữa 2 Round ChaCha20 va BLAKE28 67Lợi ích và bắt lợi của Macro Assembly và chỉnh sửa trình biên dịch 77
Bảng tín hiệu Opcode RISC-V c«ccccccesrkekkrekkrerirtrirrriirrrrrrrrreree 78
Các trường tùy biến cho tám thuật toán -.ceerrcceerrrrecerre 79Message kiểm tra với các Độ lớn khối dữ liệu tương ứng 82Tổng hợp tài nguyên sau Implementation -cs css.ee 90Tổng hợp thông số các giải thuật mật mã hóa . - 90
So sánh số lượng Cycle khi xử lí một Block dữ liệu qua các giải thuật 91
So sánh thông lượng với các bài nghiên cứu khác . -‹ - 91
Trang 9DANH MỤC TU VIET TAT
Tir viet tat Nghia day du
ALU Arithmetic Logic Unit
SHA Secure Hash Algorithm
AES Advanced Encryption Standard
wn Chinese National Standard for Block
Cipher ECC Elliptic Curve Cryptography
Rivest-Shamir-Adleman RSA
(Cryptosystem) BFM Bus Functional Model
HDL Hardware Description Language
RTL Register Transfer Level
FSM Finite State Machine
ISA Instruction Set Architecture
Trang 10GCC GNU Compiler Collection
LSB Least Significant Bit
MSB Most Significant Bit
FIFO First In, First Out
LUT Look-Up Table
DSP Digital Signal Processing
FFT Fast Fourier Transform
I2C Inter-Integrated Circuit
SPI Serial Peripheral Interface
UART Universal Asynchronous
Receiver-Transmitter GPIO General Purpose Input/Output
PWM Pulse Width Modulation
ADC Analog-to-Digital Converter
DAC Digital-to-Analog Converter
PLL Phase-Locked Loop
RAM Random Access Memory
ROM Read-Only Memory
SRAM Static Random Access Memory
DRAM Dynamic Random Access Memory
DDR Double Data Rate
USB Universal Serial Bus
PCIE Peripheral Component Interconnect
Express
JTAG Joint Test Action Group
SOC System on Chip
Asc Application-Specific Integrated
Circuit
Trang 11FPGA Field-Programmable Gate Array
HDMI
High-Definition Multimedia
Interface
Trang 12TOM TAT KHÓA LUẬN
Trong bối cảnh Internet of Things (IoT) ngày càng phát triển và kết nối hàng
tỷ thiết bị, vấn đề bảo mật phần cứng trở nên vô cùng quan trọng Các thiết bị kết
nối đa dạng với tài nguyên giới hạn và các biện pháp bảo mật khác nhau đặt ra
thách thức lớn trong việc đảm bảo tính bảo mật mạnh mẽ cho phần cứng Những
mối đe dọa như truy cập trái phép, vi phạm dữ liệu, gia mao thiết bị, và các cuộc tan
công ác ý đòi hỏi các giải pháp bảo mật toàn diện.
Cùng với đó, sự xuất hiện của kiến trúc tập lệnh RISC-V (ISA) như một sựthay thế cho các kiến trúc sở hữu đã mở ra nhiều cơ hội và thách thức trong việc
bảo mật phan cứng Tinh chất mở của RISC-V khuyến khích sự đổi mới, tùy biến
và minh bạch, nhưng cũng đòi hỏi phải xem xét can thận các biện pháp bảo mật dégiải quyết các lỗ hồng tiềm tàng
Khóa luận này tập trung vào việc thiết kế và hiện thực kiến trúc RISC-V bit trên phan cứng FPGA ZCU102 với tan số hoạt động 210MHz mà không gặp
64-phải vấn đề về vi phạm thời gian Điều này cho thấy hệ thống có khả năng xử lý tốc
độ cao và ôn định Nhóm nghiên cứu đã hiện thực thành công 8 giải thuật mật mã
hóa: SHA2-256, SHA2-512, SM3, ChaCha20, BLAKE2S, Salsa20, SM4, và AES,
tất cả đều chạy đúng chức năng khi triển khai trên FPGA ZCU102
Những thành tựu này không chỉ chứng minh khả năng của kiến trúc RISC-V
trong việc hỗ trợ các giải thuật mật mã phức tạp ma còn mở ra hướng đi mới trong
việc phát triển các hệ thống phần cứng bảo mật cao, đáp ứng nhu cầu ngày càng
tăng về bảo mật trong thé giới IoT
14
Trang 13Chương 1 TONG QUAN DE TÀI
Trong thoi dai phat trién manh mé cua Internet of Things (IoT), sự pháttriển của kiến trúc vi xử lý mã nguồn mở RISC-V đã trở thành một chủ đề nóngtrong ngành công nghệ thông tin Khởi nguồn từ một dự án nghiên cứu tại Đại
hoc California, Berkeley vào năm 2010, RISC-V nhanh chóng trở thành một lựa
chọn phổ biến với khả năng tùy biến cao và chi phí thấp, phù hợp cho cả nghiên
cứu và phát triên sản phâm.
Các nghiên cứu về mã hóa trên RISC-V đã ghi nhận những tiến bộ quantrọng Một nghiên cứu gần đây đã giới thiệu việc tích hợp các thuật toán mã hóanhư AES và SHA trên nền tảng RISC-V, cho thấy hiệu suất cao và khả năng bảomật mạnh mẽ Nghiên cứu này sử dụng bộ công cụ phần mềm Vivado 2021.2 từXilinx trên nền tảng FPGA ZCU102 dé thuc nghiệm va dat được tan số hoạtđộng lên đến 210MHz mà không gặp phải bat kỳ van đề về việc trễ chu kỳ như ở
nghiên cứu [1] va [2].
Ngoài ra, một số nghiên cứu khác cũng đã khai thác tiềm năng của RISC-V
trong lĩnh vực mã hóa Ví dụ, một bài nghiên cứu đã chỉ ra việc tối ưu hóa thuật
toán Curve25519 trên nền tang Cortex-M4, mang lại hiệu quả tính toán cao hơn
và khả năng chống tan công tốt hơn [1] Một nghiên cứu khác về AES-GCM đãcho thay sự cải thiện đáng ké về hiệu suất và khả năng chống tan công theo thời
gian [1] Bên cạnh đó, việc triển khai thuật toán BLAKE2 và ChaCha20 trên
RISC-V cũng được báo cáo với kết quả đáng khích lệ, đặc biệt trong các ứngdụng yêu cầu độ bảo mật cao và tốc độ xử lý nhanh [2]
Dựa trên những nghiên cứu và kết quả đạt được, nhóm đã thực hiện hiện
thực các giải thuật mã hóa: SHA2-256, SHA2-512, SM3, ChaCha20,
BLAKE2S, Salsa20, SM4 và AES trên phần cứng FPGA ZCU102 Các giảithuật này đều hoạt động chính xác và đạt được hiệu suất cao với tan số 210MHz,
chứng minh khả năng tích hợp và ứng dụng của RISC-V trong các hệ thống bảo
mật hiện đại.
15
Trang 14Bài viết này bao gồm:
Chương 2 Cơ sở lý thuyết: Phần này mô tả các lý thuyết về kiến trúcRISC-V, các thuật toán mật mã hóa được sử dụng trong bài viết
Chương 3 Phương pháp hiện thực: Phần này mô tả chỉ tiết các ý tưởngthiết kế phần cứng bao gồm: RISC-V, buffer và các thuật toán mật mã hóa
Chương 4 Kiểm tra và đánh giá kết quả hiện thực: Phần này mô tả kịchbản kiểm tra, chi tiết kết quả kiểm tra thiết kế khi chạy thực tế và đánh giá kết
quả.
Chương 5 Kết luận và hướng phát triển: Phần này nêu kết quả đạt được
sau quá trình nghiên cứu và hướng phát triên sau này.
16
Trang 15Chuong 2 CƠ SỞ LÝ THUYET
Architecture: A Quantitative Approach" của David Patterson va John L.
Hennessy [3] Day là bước dau tiên trong việc ứng dung RISC vào giáo dục và
nghiên cứu, mở đường cho những tiên bộ sau này trong lĩnh vực vi xử lý.
Các bộ vi xử lý ARM, phiên bản đầu tiên của kiến trúc RISC, đã nhanhchóng trở thành tiêu chuẩn trong ngành công nghiệp với sự hỗ trợ của GNU
Compiler Collection (GCC) [4] Tuy nhiên, các tập lệnh RISC vẫn chưa trở
thành lựa chọn phổ biến cho thị trường thương mại vào thời điểm đó
Krista Asanovi¢, một giáo su tại Đại hoc California, Berkeley, đã nhận ra
tiềm năng của một hệ thống máy tính mã nguồn mở Vào năm 2010, ông cùngcác đồng nghiệp đã quyết định thực hiện và công bố một dự án mang tên
"short three-month summer project," mục tiêu là tạo ra một tập lệnh RISC mở,
linh hoạt và có thé tùy biến cho moi ứng dụng từ thiết bị nhúng đến siêu máytính [5] Dự án này nhanh chóng phát triển thành RISC-V, một kiến trúc ISA(Instruction Set Architecture) có thé được áp dụng trong cả lĩnh vực giáo dục
và công nghiệp [5].
17
Trang 16RISC-V không chỉ là một ISA mã nguồn mở, mà còn là một cộng đồnglớn mạnh với nhiều tổ chức và công ty tham gia đóng góp và phát triển Cácnghiên cứu gần đây đã ứng dụng RISC-V trong nhiều lĩnh vực, từ các hệthống nhúng hiệu năng thấp đến các máy tính hiệu năng cao, nhờ vào tính linhhoạt và khả năng tùy biến của nó [5].
2.1.2 RISC-V Instrucsion Set:
Thiết kế tập lệnh RISC-V32 tuân theo một số nguyên tắc quan trọngnhằm đảm bảo tính đơn giản và hiệu quả trong quá trình xử lý:
e Cấu trúc lệnh đơn giản và dựa trên quy tắc: Tập lệnh có kích
thước cố định là 32 bit, trong đó 7-bit cuối là Opcode Điều này
giúp dễ dàng giải mã và thực hiện các lệnh một cách nhanh chóng
và hiệu quả.
RISC-V tối ưu hóa quá trình xử lý băng cách sử dụng các lệnh nhỏ gọn
và bộ nhớ hiệu quả Các nguyên tặc cụ thê bao gôm:
e Các lệnh và bộ nhớ nhỏ hon để xử lý nhanh hơn: Số lượng lệnh,
thanh ghi và chế độ địa chỉ được giới hạn để giảm thiêu độ phứctạp và tăng tốc độ xử lý
e Tăng tốc độ xử lý cho các trường hợp phô biến: Các toán hang
thường được lấy trực tiếp từ các thanh ghi hoặc là các toán hạngtức thời, giúp tăng tốc độ thực thi các lệnh phổ biến
e Tuân thủ ba định dạng lệnh chung: Các lệnh được chuẩn hóa
thành ba định dạng cơ bản, giúp đơn giản hóa quá trình giải mã và
thực hiện.
Về lưu trữ dữ liệu trong bộ nhớ, RISC-V tuân theo các nguyên tắc sau đểđảm bảo tính nhất quán và hiệu quả:
e Nguyên tắc giới hạn căn chỉnh: Các đối tượng bộ nhớ phải được
đặt tại các địa chỉ là bội số của kích thước của đối tượng, thường
18
Trang 17là bội số của 4 Điều này đảm bảo rằng dữ liệu được truy cập mộtcách hiệu quả và nhất quán.
e Nguyên tắc Big Endian: Trong hệ thống này, các byte có giá trị
cao hơn được lưu trữ tại các địa chỉ thấp hơn, trong khi các byte
có giá tri thấp hơn được lưu trữ tại các địa chỉ cao hơn Cách sắpxếp này giúp dé dang quan lý và xử lý dữ liệu
Kiến trúc RISC-V dựa trên hệ tư tưởng "thanh ghi tới thanh ghi" và
"load/store" Các lệnh hoạt động chủ yếu trên các thanh ghi, và khi cần truycập bộ nhớ, các lệnh riêng biệt được sử dụng dé tải dữ liệu từ bộ nhớ vào
thanh ghi.
Mỗi thanh ghi trong hệ thống RISC-V lưu trữ một giá trị trong tập tin
thanh ghi số nguyên 32-bit, ngoại trừ các thanh ghi dấu phây động có kíchthước 64-bit Khác với các biến trong ngôn ngữ lập trình cấp cao, các thanhghi trong assembly không có kiểu dữ liệu cỗ định; cách sử dụng thanh ghi sẽxác định kiểu dữ liệu
Bộ xử lý RISC-V bao gồm 32 thanh ghi số nguyên mục đích chung, mỗithanh ghi có kích thước 32 bit, và 32 thanh ghi dấu phẩy động, mỗi thanh ghi
có kích thước 64 bịt Sự phân chia này cho phép bộ xử lý thực hiện các phép tính phức tạp một cách hiệu quả và nhanh chóng.
Bảng 2.1: Bộ thanh ghi của RISC-V [5]
Tên thanh ghi | Chỉ số thanh ghi (Thập phân) Chức năng thanh ghi
Trang 18X5 — X7 5-7 Thanh ghi tam thoi
X8 8 Thanh ghi lưu trữ / Con
tro khung
x9 9 Thanh ghi lưu trữ
XI0-XII 10-11 Luu tham sé dau vao /
Giá trị trả về
XI12- XI? 12-17 Lưu tham số đầu vào
của hàm
X18 — X27 18-27 Thanh ghi lưu trữ
X28 — X31 20 - 31 Thanh ghi tam thoi
Tiếp theo là cấu trúc của các lệnh assembly khi được dich sang ngôn ngữmáy Mỗi lệnh trong RISC-V có độ dài 32 bịt Mỗi lệnh có thể được xem nhưmột hàm trong ngôn ngữ lập trình Do đó, cần có một tên lệnh, các tham số
dau vào và loại các tham sô đâu vào, trong trường hợp nay là kích thước cua
từng tham sô dau vào (vì không có khái niệm về kiêu dt liệu trong assembly).
RISC-V nhắn mạnh tính đơn giản của tập lệnh, do đó có bốn định dạng
lệnh chính: R-format, I-format, S-format và U-format Mỗi lệnh máy có kích thước 32 bit và được chia thành các nhóm bit khác nhau gọi là các trường,
trong đó moi trường có vai trò riêng trong lệnh Tùy thuộc vào câu trúc của
lệnh, mỗi trường có các thông số kỹ thuật khác nhau Lệnh định dạng R có 6
tham sô sau:
Bảng 2.2: Lệnh định dạng R
Func7 Rs2 Rsl Func3 Rd Opcode
7-bit 5-bit 5-bit 3-bit 5-bit 7-bit
20
Trang 19Bảng 2.2 mô tả về lệnh định dạng R trong RISC-V32 với 32 bit bao gồm
Func7 (7 bit), Rs2 (5 bit), Rs1 (5 bit), Func3 (3 bit), Rd (5 bit) và Opcode (7
bit).
Opcode: Trường này thông báo cho máy về lệnh cụ thé Tronglệnh định dạng R, chúng đều chia sẻ mã opcode 0110011
Rs (Register Source): Thanh ghi nguồn, chứa toán hạng đầu tiên
Rs1 và toán hang thứ hai Rs2.
Rd (Register Destination): Thanh ghi đích, chứa kết quả của lệnh.
Func3: Vì các lệnh định dạng R chia sẻ cùng một mã opcode
0110011, trường này được sử dụng dé xác định thao tác cụ thécần thực hiện
Mỗi lệnh trong RISC-V được thiết kế dé thực hiện các tác vụ mộtcách hiệu quả, tuân thủ các nguyên tắc thiết kế đơn giản và dễhiểu Các trường trong lệnh giúp xác định các thành phần của
lệnh, bao gồm toán hạng, địa chỉ thanh ghi và các thao tác cần
thực hiện.
Tiếp theo là lệnh định dạng I, được sử dụng cho các phép toán giữa các
thanh ghi và một giá tri tức thời có trong lệnh:
Bang 2.3: Lệnh định dạng I
12-bit | 5-bit 3-bit 5-bit 7-bit
Bang 2.3 mô tả về lệnh định dang I trong RISC-V32 với 32 bit bao gồm
Imm (Immediate, 12 bit), Rs1 (Register Source 1, 5 bit), Func3 (Function 3 bit), Rd (Register Destination, 5 bit), Opcode (Operation Code, 7 bit).
Opcode: Trường này thông báo cho máy về lệnh cụ thể Nó xác
định loại hoạt động mà lệnh sẽ thực hiện.
21
Trang 20e Rsl (Register Source 1): Thanh ghi nguồn, chứa toán hạng đầu
tiên Rs1.
e Immediate: Trường này chứa giá tri tức thời, được sử dụng dé
tính toán dia chỉ trong các lệnh load và store, hoặc làm giá tri tức
thời cần thiết cho các phép toán
Lệnh định dang I cho phép thực hiện các phép toán giữa các thanh ghi va
các giá tri tức thời Điều này đặc biệt hữu ích trong các lệnh load/store và cácphép toán cần sử dung giá trị tức thời dé tính toán
Lệnh định dạng S được sử dụng cho các lệnh lưu trữ:
Bang 2.4: Lệnh định dạng S
Func7 Rs2 Rs1 | Func3 Imm Opcode
7-bit 5-bit 5-bit | 3-bit 5-bit 7-bit
Bảng 2.4 mô tả về lệnh định dạng S trong RISC-V32 với 32 bit bao gồm
Imm (Immediate, 7 bit và 5 bit), Rs2 (Register Source 2, 5 bit), Rs1 (Register Source 1, 5 bit), Func3 (Function 3 bit), Opcode (Operation Code, 7 bit).
e Opcode, Func3: Mã hoạt động, chi ra loại lệnh lưu trữ, chăng hạn
như sw, sh, sb.
e Immediate: Được sử dụng để xác định địa chỉ sẽ lưu trữ trong bộ
nhớ Dia chỉ được tính như sau: địa chỉ cơ sở được lưu trữ trong
Rs1 + dịch chuyển (Imm*4)
e Rs2: Chứa dữ liệu sẽ được ghi vào bộ nhớ.
Lệnh định dạng U được sử dụng cho các lệnh LUI và AUIPC:
Bảng 2.5: Lệnh định dạng U
Imm Rd Opcode
20-bit 5-bit 7-bit
22
Trang 21Bảng 2.5 mô tả về lệnh định dạng U trong RISC-V32 với 32 bit bao gồm
Imm (Immediate, 20 bit), Rd (Register Destination, 5 bit), Opcode (Operation
Code, 7 bit):
e Opcode: Chỉ ra lệnh nào sé thực hiện cho máy.
e Rd (Register Destination): Thanh ghi dich được sử dụng dé lưu
trữ kết quả tính toán
e Immediate: Giá trị tức thời cần thiết cho việc tính toán
2.1.3 RV32I và RV64I Instruction Set:
Bảng 2.6: RV32I Instruction Set [5]
Instruction Full Name Processing Action
Arithmetic Logic Operation Instruction for Integers
Trang 22XORI Exclusive Or Immediate R[rd] = R[rs1] ^ Imm
R[rd] = PC + mm, AUIPC Add Upper Immediate To PC
R[rs2]
R[rd] = R[rs1] >>> SRLI Shift Right Logical Immediate
Imm
24
Trang 23BGEU PC += (Imm, 1'bO) *
Unsigned
4
If (R[rs1] != R[rs2]) BNE Branch On Not Equal PC += (Imm, I'b0) *
4
If (R[rsl] < R[rs2]) BLT Branch On Less Than PC += (Imm, I'b0) *
4
If (R[rs1] < R[rs2]) Branch On Less Than
BLTU PC += (Imm, 1'b0) *
Unsigned
4
R[rd] = PC + 4; PC JAL Jump And Link
+= (Imm, I'b0) * 4
R[rd] = PC + 4; PC = JALR Jump And Link Register
Trang 24R[rd] = {56 b0, LBU Load Byte Unsigned M[R[rs1] + Imm *
Bang 2.6 mô ta 37 lệnh trong RV32I bao gồm các lệnh xử lý số nguyên,
dich bit, rẽ nhánh, và doc/ghi bộ nhớ.
RV64I là mở rộng tập lệnh RV32I dé hỗ trợ các phép toán trên số nguyên
64-bit, bao gồm các phép cộng, trừ, dịch bit và tai/luu số nguyên 64-bit Điềunày cho phép xử lý các dữ liệu lớn hơn và phức tạp hơn, đáp ứng nhu cầu của
các ứng dụng hiện đại yêu câu hiệu năng cao Dưới đây là bảng mô tả:
Bảng 2.7: RV64I Instruction Set [5]
Instruction Full Name Processing Action
26
Trang 25Arithmetic Logic Operation Instruction for 64-bit Integers
R[rs2]
Shift Right Logical R[rd] = R[rsl] >>> SRLIW
Immediate Word Imm
Shift Right Arithmetic R[rd] = R[rs1] >>
Trang 26Bang 2.7 mô tả các lệnh trong RV64I bao gồm các lệnh xử lý số nguyên,dịch bit, nhánh, doc/ghi bộ nhớ, và các lệnh xử lý số học cho số nguyên 64-bit.
2.2 Các thuật toán mã hóa:
2.2.1 Tổng quan về Hash:
Trước khi tìm hiểu về các thuật toán mã hóa băm, chúng em muốn trìnhbày về lý do tại sao chúng em lại chọn hiện thực cho các thuật toán SHA256,
SHA512, SM3, BLAKES Các thuật toán SHA-256, SHA-512, SM3 và
BLAKE2 được chọn vì chúng đều cung cấp mức độ bảo mật cao và khả năngchống lại các cuộc tan công mật mã SHA-256 và SHA-512, thuộc họ SHA-2,nổi bật với hiệu suất và tính toàn vẹn dữ liệu, thường được ứng dụng trong
blockchain và bảo mật mật khẩu SM3 được tiêu chuẩn hóa tại Trung Quốc, có
hiệu suất tương đương với SHA-256, phù hợp cho các hệ thống bảo mật quốcgia BLAKE2, với tốc độ và hiệu suất cao, là một lựa chọn lý tưởng cho các
ứng dụng yêu cầu xử lý nhanh và hiệu quả năng lượng Sự linh hoạt và khả
năng tương thích của các thuật toán này với nhiều nền tảng phần cứng và phầnmềm khác nhau, cùng với tính tiêu chuẩn hóa quốc tế, làm cho chúng trởthành lựa chọn phù hợp cho nghiên cứu và triển khai thực tế
Sau đây thì chúng ta cần hiểu rõ về khái niệm Hash — nền tảng quan trọngcủa thuật toán băm Hash, hay còn gọi là ham băm, là quá trình chuyên đổiđầu vào là một nội dung có kích thước và độ dài bat kỳ thành một đầu ra có độdài cô định thông qua việc sử dung các thuật toán và công thức toán học phức
tạp.
Hàm băm hoạt động dựa trên nguyên tắc rằng bất kỳ thay đổi nhỏ nàotrong đầu vào sẽ tạo ra một giá trị băm hoàn toàn khác biệt Đây là một tínhchất quan trọng giúp đảm bảo tính toàn vẹn của đữ liệu, vì chỉ cần một thayđổi nhỏ trong thông điệp gốc sẽ dẫn đến một giá trị băm mới, giúp dễ dàngphát hiện các thay đổi không mong muốn
28
Trang 27Hashing Algorithm
ề cco
&”(#df
=> #.ˆ LE | acca:
Plain Text Hash Function Hashed Text
Hình 2.1: Minh họa về thuật toán băm [6]
Hình 2.1 minh họa quá trình hoạt động của thuật toán băm Đầu tiên, nộidung văn bản gốc (Plain Text) được đưa vào hàm băm (Hash Function) Thuậttoán băm sẽ xử lý và chuyền đổi nội dung này thành một chuỗi ký tự có độ dài
có định gọi là giá trị băm (Hashed Text) Giá trị băm này mang tính chất duynhất và bat ky thay đối nhỏ nào trong văn bản gốc cũng sẽ tạo ra một giá trị
băm hoàn toàn khác.
2.2.2 Tổng quan về mật mã hóa SHA-256:
SHA-256 (Secure Hash Algorithm 256-bit) là một ham bam (hash
function) thuộc ho thuật toán mã hóa hash (cryptographic hash algorithm).
Được thiết kế bởi Cơ quan An ninh Quốc gia Hoa Ky (NSA), SHA-256 làphiên bản của thuật toán SHA-2, với độ dài băm đầu ra là 256 bit Trong
nghiên cứu "SHA-256 and its Applications in Data Security" (SHA-256 va
ứng dụng trong bảo mật dữ liệu), các tác gia đã chỉ ra rang SHA-256 cung cấpmột lớp bảo mật vững chắc, đảm bảo rằng dữ liệu không thể bị thay đổi màkhông bị phát hiện [7] SHA-256 hoạt động băng cách lấy một thông điệp đầuvào và thực hiện một loạt các phép toán học trên nó, bao gồm các phép toán
logic bitwise, phép cộng theo mô-đun, và các hàm logic như XOR va AND.
Quá trình này tiếp tục cho đến khi tạo ra giá trị băm cuối cùng dai 256 bit,đảm bảo rằng bất kỳ sự thay đổi nhỏ nào trong thông điệp đầu vào đều dẫnđến một giá tri băm hoàn toàn khác biệt [8] Thuật toán có các giai đoạn sau :
Tiên xử lý:
29
Trang 28e Thêm bit'I': Đầu tiên, một bit '1' được thêm vào cuối thông điệp.
e Thêm các bit '0': Sau đó, một chuỗi các bit '0' được thêm vào dé
độ dài của thông điệp trở thành 448 bit mod 512.
e Thêm độ dài thông điệp: Cuối cùng, độ dài của thông điệp gốc
(trước khi thêm các bit) được biểu diễn bằng 64 bit và được thêmvào cuối
Khởi tạo bộ đệm:
e© SHA-256 sử dụng tám từ 32-bit dé khởi tạo bộ đệm Các giá trị
khởi tạo này được xác định trước và là các giá trị băm của các sốnguyên tố đầu tiên
Xử lý khối:
e Thông điệp đã được tiền xử lý được chia thành các khối 512 bit
Mỗi khối được xử lý qua một vòng lặp gồm 64 vòng Trong mỗivòng, một tập hợp các phép toán logic và số học được áp dụng lêncác từ của khối và các từ trong bộ đệm
Hàm nén:
e Trong mỗi vòng, hàm nén lay giá trị hiện tai của bộ đệm va khối
thông điệp, và áp dụng các phép toán logic và số học để cập nhậtgiá trị của bộ đệm Kết quả cuối cùng sau khi tất cả các khối đã
được xử lý là giá trị băm của thông điệp.
Xuất giá trị băm:
e Giá trị băm cuối cùng được kết hợp từ các từ trong bộ đệm và
xuất ra dưới dang một giá tri 256 bit
30
Trang 29SHA256 Hash Function
Hình 2.2: Sơ đồ thuật toán băm SHA-256
Hình 2.2 mô tả quá trình hoạt động của thuật toán băm SHA-256 qua các
hàm tính toán Sơ đồ bao gồm các bước tính toán và nén trong một vòng lặpcủa thuật toán SHA-256 Dưới đây là mô tả chi tiết các thành phan trong hình
2-2:
e Kt: Hằng số vòng, thay đôi theo từng vòng
e Wt: Khối mở rộng từ khối thông điệp ban dau
e Ch(e, f, g): Hàm chọn, một trong các ham logic chính của
SHA-256.
e 0 và >I: Hàm hoán vj và tính toán logic.
e Tl và T2: Tổng tạm thời được sử dụng dé cập nhật các giá tri
băm trung gian.
e a,b,c, d,e, f, g, h: Các giá trị băm trung gian, được cập nhật sau
mỗi vòng lặp.
2.2.3 Tổng quan về mật mã hóa SHA-512:
SHA-512 là một thuật toán mã hóa băm (hashing algorithm) thuộc họ
SHA-2 (Secure Hash Algorithm 2), được phát triển bởi Cơ quan An ninhQuốc gia Hoa Ky (NSA) SHA-512 tương tự như SHA-256 nhưng có độ dàigiá trị băm lớn hơn, với 512 bit Điều này làm cho SHA-512 cung cấp mức độbảo mật cao hơn và khó bị tấn công hơn so với SHA-256 [9] SHA-512 được
sử dụng rộng rãi trong các ứng dụng yêu câu bảo mật mạnh mẽ hơn như chữ
31
Trang 30ký số, chứng chỉ số và các giao thức bảo mật khác [9] Thuật toán cũng trải
qua các giai đoạn sau:
Tiền xử lý:
e Thêm bit '1': Một bit '1' được thêm vào cuối thông điệp
e Thêm các bit '0: Chuỗi các bit '0' được thêm vào dé độ dài của
thông điệp trở thành 896 bit mod 1024.
e Thêm độ dài thông điệp: Độ dài của thông điệp sốc (trước khi
thêm các bit) được biểu diễn bằng 128 bit và được thêm vào cuối
Khởi tạo bộ đệm:
e SHA-512 sử dụng tám từ 64-bit để khởi tạo bộ đệm Các giá tri
khởi tạo này được xác định trước và là các giá trị băm của các sốnguyên tổ đầu tiên
Xử lý khối:
e Thông điệp đã được tiền xử lý được chia thành các khối 1024 bit
Mỗi khối được xử lý qua một vòng lặp gồm 80 vòng Trong mỗivòng, một tập hợp các phép toán logic và số học được áp dụng lêncác từ của khối và các từ trong bộ đệm
Hàm nén:
e Trong mỗi vòng, hàm nén lay giá trị hiện tại của bộ đệm va khối
thông điệp, và áp dụng các phép toán logic và số học để cập nhậtgiá trị của bộ đệm Kết quả cuối cùng sau khi tất cả các khối đã
được xử lý là giá trị băm của thông điệp.
Xuất giá trị băm:
e Giá trị băm cuối cùng được kết hợp từ các từ trong bộ đệm và
xuất ra dưới dang một giá tri 512 bit
32
Trang 31SHA512 Hash Function
Hình 2.3: So đồ thuật toán băm SHA-512
Hình 2.3 mô tả quá trình hoạt động của thuật toán băm SHA-512 qua các
hàm tính toán Sơ đồ bao gồm các bước tính toán và nén trong một vòng lặpcủa thuật toán SHA-512 Dưới đây là mô tả chỉ tiết các thành phần trong hình:
Kt: Hằng số vòng, thay déi theo từng vòng
Wt: Khối mở rộng từ khối thông điệp ban đầu.
Chee, f, g): Ham chọn, một trong các ham logic chính của 512.
SHA->0 và >1: Hàm hoán vị và bổ sung logic
Tl và T2: Tổng tạm thời được sử dụng dé cập nhật các giá trị
băm trung gian.a, b, c, d, e, f, g, h: Các giá tri băm trung gian,
được cập nhật sau mỗi vòng lặp.
2.2.4 Tổng quan về thuật toán SM3:
SM3 là một thuật toán băm mật mã được thiết kế bởi Trung Quốc và
được tiêu chuân hóa bởi Cơ quan Quản lý Tiêu chuân Quôc gia Trung Quôc
(SAC) Thuật toán này được sử dụng rộng rãi trong nhiều ứng dụng bảo mật
33
Trang 32tại Trung Quốc, tương tự như cách SHA-256 được sử dụng ở nhiều quốc gia
khác SM3 tạo ra giá trị băm có độ dài cố định 256 bit, giúp bảo vệ tính toàn
vẹn va bao mật của đữ liệu [10] Thuật toán SM3 được xử lý qua các quá trình
sau:
Tiền xử ly:
e Thêm bit 'l': Thêm một bit 'I' vào cuối thông điệp gốc.
e Thêm các bit '0: Thêm một chuỗi các bit '0' để độ dài của thông
điệp trở thành 448 bit mod 512.
e Thêm độ dài thông điệp: Độ dài của thông điệp gốc (trước khi
thêm các bit) được biểu diễn bằng 64 bit và được thêm vào cuối
Khởi tạo bộ đệm:
e SM3 sử dụng tám từ 32-bit để khởi tạo bộ đệm Các giá trị khởi
tạo này được xác định trước và là các giá trị băm của các sỐnguyên tô đầu tiên
Xử lý khối:
e Thông điệp đã được tiền xử lý được chia thành các khối 512 bit
Mỗi khối được xử lý qua một vòng lặp gồm 64 vòng Trong mỗivòng, một tập hợp các phép toán logic và số học được áp dụng lêncác từ của khối và các từ trong bộ đệm
Hàm nén:
e Hàm nén của SM3 là trung tâm của thuật toán, với các phép toán
logic và số học quan trọng nhất được áp dụng dé cập nhật giá trị
của bộ đệm.
34
Trang 33Hinh 2.4: Ham nén cua thuat toan SM3
Hình 2.4 minh hoa quá trình hoạt động của ham nén trong SM3 Dưới
đây là mô tả chi tiết các thành phan trong hình:
e Aj, Bj, Cj, Dj, Ej, Fj, Gj, Hj: Các giá tri băm trung gian, được cập
nhật sau mỗi vòng lặp.
e FF và GG: Các hàm logic chính của SM3, tương tự như các ham
Ch và Maj trong SHA-256.
e_ Wj: Các từ mở rộng từ khối thông điệp ban dau
e T: Hằng số vòng, thay đổi theo từng vòng
Quá trình băm bắt đầu với các giá trị khởi tạo và thông điệp được tiền xử
lý Mỗi khối thông điệp được xử lý qua 64 vòng lặp, trong đó các giá trị trung
gian và các hằng số vòng được sử dụng để tạo ra giá trị băm cuối cùng Kếtquả là một giá trị băm duy nhất, không thé đảo ngược và có độ dài cố định 256bit SM3 cung cấp bảo mật mạnh mẽ và hiệu suất cao, làm cho nó trở thànhlựa chọn lý tưởng cho nhiều ứng dụng yêu cầu bảo mật dữ liệu tại Trung Quốc
[11].
35
Trang 342.2.5 Tổng quan về thuật toán BLAKE2S:
BLAKE2s là một thuật toán băm mật mã nhanh va an toàn, được phát
triển bởi Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn vaChristian Winnerlein vào năm 2013 [12] BLAKE2s là một phan cua hoBLAKE2 và được thiết kế để cung cấp tốc độ nhanh hon và hiệu suất tốt hơn
so với các thuật toán băm khác như SHA-2 và MD5, trong khi vẫn duy trì mức
độ an toàn cao.
BLAKE2s được tối ưu hóa cho các nền tảng 32-bit và tạo ra giá trị băm
có độ dài cố định 256 bit Nó sử dụng các phép toán đơn giản và nhanh chóng,giúp giảm tải tính toán và tiết kiệm năng lượng [13] Quá trình xử lý của thuật
toán băm BLAKES sẽ qua quá trình sau:
Khởi tạo bộ đệm:
e Bo đệm khởi tạo của BLAKE2s bao gồm tám từ 32-bit, được thiết
lập với các giá trị cố định Các giá trị này dựa trên các hằng số
được xác định trước.
Xử lý khối:
e Thông điệp được chia thành các khối 512 bit Mỗi khối được xử
lý qua một vòng lặp gồm 10 vòng, trong đó mỗi vòng sử dụng
hàm nén G dé xử lý và cập nhật các giá trị băm trung gian.
Hàm nén G:
e Hàm nén G là trái tim của BLAKE2s, được thiết kế dé thực hiện
các phép toán đơn giản và hiệu quả trên các từ 32-bit Nó bao
gồm các phép cộng, XOR, và dich vòng (rotation)
36
Trang 35Hình 2.5: Ham nén của thuật toán BLAKEs
Hình 2.5 mô tả quá trình hoạt động của hàm nén G trong BLAKE2s Hàm nén này thực hiện các phép toán trên bon giá tri a, b, c và d:
e Mix(a, b,c, d): Thực hiện các phép toán cộng, XOR và dịch vòng
trên các giá trị a, b, c và d.
© ø(2i) và o(2i+1): Là các hang số được sử dụng trong mỗi vòng dé
hoán vi các giá tri.
e Cộng, XOR, và dịch vòng: Các phép toán cơ bản được thực hiện
trong hàm nén G, bao gồm cộng giá trị a và b, XOR giá trị a với
c, và dịch vòng các giá trỊ này.
Xuất giá trị băm:
e Sau khi tất cả các khối đã được xử lý, giá trị băm cuối cùng được
kết hợp từ các từ trong bộ đệm và xuất ra dưới dạng một giá tri
256 bịt.
37
Trang 362.2.6 Tổng quan về thuật toán mã hóa luồng:
Tương tự như trên thì ChaCha20, Salsa20, AES và SM4 được chúng em
chọn để hiện thực vì chúng cung cấp mức độ bảo mật cao và hiệu suất vượttrội trong mã hóa luồng ChaCha20 và Salsa20 thì nỗi bật với tốc độ và khảnăng chống lại các cuộc tan công mật mã, thường được sử dung trong các giaothức bảo mật mạng và di động AES là tiêu chuẩn mã hóa toàn cầu, đảm bảo
an toàn cao với các độ dài khóa 128, 192 và 256 bit, phù hợp cho các hệ thốngbảo mật cao cấp SM4 thì lại cung cấp hiệu suất và độ an toàn tương đươngAES, được tối ưu hóa cho cả phần cứng và phần mềm, phù hợp cho các hệ
thống bảo mật tại Trung Quốc Những thuật toán này đảm bảo tính toàn vẹn
và bảo mật dữ liệu, phù hợp cho nghiên cứu và triển khai thực tế nhờ vào tính
tiêu chuân hóa quôc tê và khả năng tương thích với nhiêu nên tảng.
Tiếp đến là chúng ta hãy đi đến với định nghĩa thuật toán mã hóa luồng(stream cipher) là một phương pháp mã hóa trong đó đữ liệu gốc được mã hóa
từng bit hoặc từng byte một theo một chuỗi khóa (keystream) Khác với thuật
toán mã hóa khối (block cipher), nơi dir liệu được chia thành các khối cố định
để mã hóa, mã hóa luồng xử lý dữ liệu dưới dạng luồng liên tục Điều nàygiúp cho mã hóa luồng linh hoạt và hiệu quả hơn trong một số ứng dụng, đặcbiệt là khi cần mã hóa đữ liệu trong thời gian thực
Nguyên tắc hoạt động
e©_ Mã hóa luồng hoạt động bang cách sử dụng một khóa ban dau và
một số khởi tạo (nonce) để tạo ra một chuỗi khóa dài và giả ngẫunhiên Chuỗi khóa này sau đó được XOR với dữ liệu gốc để tạo ra
dữ liệu mã hóa Quá trình giải mã thực hiện ngược lại, sử dụng
cùng một chuỗi khóa dé XOR với dữ liệu mã hóa, từ đó khôi phụclại dit liệu gốc
38
Trang 37Stream Cipher
Keystream Random Generator Value
Plaintext " Ciphertext C+ Plaintext
Encryption Decryption
Hình 2.6: Mô tả về mật mã luồng
Hình 2.6 minh họa cách hoạt động của một thuật toán mã hóa luồng.
Chuỗi khóa (keystream) được tạo ra từ khóa ban đầu và số khởi tạo, sau đóđược XOR với dữ liệu gốc (plaintext) dé tạo ra dit liệu mã hóa (ciphertext).Quá trình giải mã sử dụng lại chuỗi khóa này đề khôi phục lại dữ liệu gốc
2.2.7 Tổng quan về thuật toán mật mã luồng Salsa20:
Salsa20 là một thuật toán mã hóa luỗng (stream cipher) được thiết kế bởiDaniel J Bernstein vào năm 2005 Salsa20 được biết đến với tốc độ mã hóa
nhanh và mức độ bảo mật cao Thuật toán này sử dụng các phép toán đơn giản
nhưng hiệu quả, bao gồm cộng, XOR và dịch vòng (rotation) trên các từ
32-bit Salsa20 đã được chấp nhận rộng rãi trong nhiều ứng dụng bảo mật nhờkhả năng chống lại các loại tấn công mật mã phổ biến [14]
Salsa20 sử dụng một khóa bí mật dài 256 bit và một nonce (số ngẫu nhiêndùng một lần) dài 64 bit để tạo ra chuỗi khóa giả ngẫu nhiên Chuỗi khóa nàysau đó được XOR với dữ liệu gốc dé tạo ra dữ liệu mã hóa Salsa20 thực hiệncác phép toán trên một trạng thái gồm 16 từ 32-bit, được tô chức thành một
ma trận 4x4 Quy trình thực hiện mã hóa của Salsa20 được thể hiện ở các
bước sau [15]:
Khởi tạo trạng thái:
39
Trang 38e Trang thái ban đầu của Salsa20 bao gồm 16 từ 32-bit, được thiết
lập từ khóa bí mật, nonce và một hang số cố định Trạng thái này
sẽ được cập nhật qua các vòng lặp của thuật toán.
Quá trình mã hóa:
e Salsa20 thực hiện 20 vòng (round) của các phép toán cộng, XOR
và dịch vòng trên trạng thái Mỗi vòng bao gồm hai giai đoạn:
Quarter Round và Diagonal Round Các giai đoạn này giúp trộn
lẫn các từ trong trạng thái dé tạo ra chuỗi khóa an toàn
Ham Quarter Round:
e Ham Quarter Round là một phan quan trong cua Salsa20, thuc
hiện các phép toán trên bốn từ trong trang thái dé tao ra các từmới Các phép toán bao gồm:
o Cộng: Cộng hai từ lại với nhau.
o XOR: Thực hiện phép XOR trên hai từ.
o Dịch vòng: Dịch vòng các bit của từ theo một số lượng xác
định.
Hình 2.7: Ham Quarter Round của thuật toán Salsa20
Hình 2.7 minh họa quá trình hoạt động của hàm Quarter Round trong
Salsa20 Hàm này thực hiện các phép toán trên bốn giá trị a, b, c và d:
40
Trang 39e Cộng: Giá tri a được cộng với b.
e XOR: Giá trị d được XOR với a và dịch xoay phải 7 bịt.
e Dịch vòng: Các giá tri được dich theo các bit khác nhau 9, 13, 18)
dé tạo ra các giá tri mới ai+1, bi+1, ci+1, di+1Xuất dữ liệu mã hóa:
e Khi hoàn thành 20 vòng của các phép toán, trạng thái cuối cùng
được sử dụng để tạo ra khối mã hóa (keystream block) Khối mãhóa này sau đó được XOR với dữ liệu gốc dé tạo ra dữ liệu mã
hóa.
Tóm tại thì Salsa20 cung cấp một giải pháp mã hóa luồng nhanh chóng
và an toàn, làm cho nó trở thành lựa chọn lý tưởng cho nhiều ứng dụng yêucầu mã hóa dữ liệu thời gian thực và bảo mật mạnh mẽ
2.2.8 Tổng quan về thuật toán mật mã luồng ChaCha20:
ChaCha20 là một thuật toán mã hóa dòng (stream cipher) được thiết kếbởi Daniel J Bernstein ChaCha20 là một biến thé cải tiến của thuật toán
Salsa20, nổi tiếng với tính năng bảo mật mạnh mẽ và hiệu suất cao [16].
ChaCha20 được thiết kế để cung cấp khả năng mã hóa nhanh chóng và antoàn, đặc biệt là trên các thiết bị có tài nguyên hạn chế như điện thoại di động
và thiết bị nhúng
ChaCha20 sử dụng một khóa bí mật (secret key) dai 256 bit và một nonce
(số ngẫu nhiên dùng một lần) dài 96 bit dé mã hóa dữ liệu Thuật toán này
thực hiện các phép toán đơn giản như cộng, XOR, và dịch vòng (rotation) trên
các từ 32-bit, giúp tối ưu hóa hiệu suất và giảm thiểu rủi ro bảo mật Quá trình
mã hóa ChaCha20 sẽ trai qua các bước sau:
Khởi tạo trạng thái:
e Trạng thái của ChaCha20 bao gồm 16 từ 32-bit, được khởi tạo từ
khóa bí mật, nonce, và một hằng số cố định Trạng thái này sẽđược cập nhật trong suốt quá trình mã hóa
41
Trang 40Quá trình mã hóa:
ChaCha20 thực hiện 20 vòng (round) của các phép toán cộng,
XOR, và dịch vòng trên trạng thái Mỗi vòng bao gồm bốn phép
toán Quarter Round, giúp trộn lẫn các từ trong trạng thái để tạo ra
kêt quả mã hóa an toàn.
Hàm Quarter Round:
Hàm Quarter Round là trái tim của ChaCha20, thực hiện các phép
toán trên bốn từ trong trạng thái để tạo ra các từ mới Các phéptoán bao gồm:
Cộng: Cộng hai từ lại với nhau.
XOR: Thực hiện phép XOR trên hai từ.
Dịch vòng: Dịch vòng các bit của từ theo một số lượng xác định.Mặc dù ChaCha20 và Salsa20 đều sử dụng cau trúc ham QuarterRound dé thực hiện các phép toán cộng, XOR và dịch vòng,nhưng có một số khác biệt chính giữa hai thuật toán:
các biến thê khác nhau của chuỗi khóa, ảnh hưởng đến hiệu suất
va bao mật của môi thuật toán.
Cấu trúc vòng lặp:
ChaCha20: ChaCha20 sử dụng 20 vòng (round), trong đó mỗi
vòng bao gồm hai giai đoạn: Column Round và Diagonal Round
Salsa20: Salsa20 cũng sử dụng 20 vòng, nhưng các giai đoạn
trong mỗi vòng khác nhau với cách sắp xếp và ứng dụng các hàm
Quarter Round và Diagonal Round.
Tôc độ và hiệu suât:
42