TOM TAT KHÓA LUẬNCRYSTALS-Kyber, gọi tắt là Kyber, là một thuật toán mã hóa dữ liệu mớiđây đã được NIST chuẩn hóa đề bảo vệ dữ liệu trước sự phát triển nhanh chóng củamáy tính lượng tử,
Trang 1ĐẠI HOC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
NGUYEN ĐÌNH NHAT - 20521707
KHÓA LUẬN TÓT NGHIỆP
BO TANG TÓC DA CHE ĐỘ HIỆU SUAT CAO CHO
MAT MA HAU LUONG TU CRYSTALS-KYBER
HIGH-PERFORMANCE MULTIMODE ACCELERATOR FOR
POST-QUANTUM CRYPTOGRAPHY CRYSTALS-KYBER
CU NHAN 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
Đầu tiên, em xin gửi lời tri ân sâu sắc và chân thành nhất đến quý thầy côtai Trường Đại học Công nghệ Thông tin — Dai học Quốc gia Thanh phố Hồ Chí
Minh Chính những kiến thức bổ ích và những bai học quý báu mà thầy cô đã
truyền đạt trong suốt quá trình học tập đã giúp em có nền tảng vững chắc để hoàn thành đề tài khóa luận tốt nghiệp này Đặc biệt, em xin bày tỏ lòng biết ơn
chân thành đến các thầy cô trong Khoa Kỹ thuật Máy tính đã tận tâm giảng dạy
và tạo mọi điều kiện thuận lợi cho em
Em cũng xin gửi lời cảm ơn sâu sắc đến cha mẹ, bạn bè và những ngườithân yêu đã luôn ủng hộ và tạo điều kiện tốt nhất dé em có thé tập trung học tập
và nghiên cứu.
Em xin chân thành cảm ơn sự giúp đỡ tận tình của thầy TS Phạm Hoài
Luân — giảng viên Khoa Kỹ thuật Máy tính và thầy TS Lâm Đức Khải — giảng
viên Khoa Kỹ Thuật Máy Tính kiêm Trưởng Phòng Đào Tạo Trường Đại học
Công nghệ Thông tin — Dai học Quốc gia Thành phố Hồ Chí Minh, những ngườithầy đã hướng dẫn em với sự nhiệt huyết và trách nhiệm cao trong suốt quátrình thực hiện đề tài Chính sự hướng dẫn tận tình và những góp ý quý báu củacác thầy đã giúp em hoàn thành luận văn này một cách tốt nhất
Cuối cùng, em xin bày tỏ lòng biết ơn sâu sắc đến tất cả quý thầy côtrong Khoa Kỹ thuật Máy tính, chúc thầy cô luôn mạnh khỏe, hạnh phúc và tiếptục gặt hái nhiều thành công trong sự nghiệp giáo dục Những thành quả hômnay của em đều nhờ sự chỉ dạy tận tâm của quý thay cô
Một lần nữa, em xin chân thành cảm ơn!
TP Ho Chí Minh, ngày 01 tháng 08 năm 2024
Sinh viên thực hiện
Nguyễn Đình Nhất
Trang 3MỤC LỤC
Chương 1 MỞ ĐẦU 2 E2E2EE2EEE1EE121121121121121121121111211 1.11 xe 4
1.1 Lý do chọn đề tài -:- St St EEEE1211211211211211211 211211211 cree 41.2 Mục đích và mục tiêu của đỀ tài -c-c St keEEEkSEEEEkekerkrkerrxerrre 5
1.2.1 Mục đích SG 11H SH 5 1.2.2 Mục tiêu - G Q Q90 HT ng xxx ven 6
1.3.1 Đối tượng nghiên cứu ¿+¿©2+22++2E+tEEEtEEterkeerxerrkerree 6
1.3.2 Pham vi nghiÊn CỨU - d5 + 3E khớp 7
14 Ý nghĩa khoa học và thực tiỄn - ¿2-5 2 5 5£ +E+EEE£E+EEEzEeErkrrrrsreee 7
1.4.1 Ý nghĩa khoa học - 22Et+EE+EE+EE+EE2EEEEEEEEEEEEErkrrrerkeee 71.4.2 Ý nghĩa thực tiễn .2c ke E1 11c crre, 8Chương2 TONG QUAN -:-5E- 2 E2 EEEE2E1211211211211211211 1121.11.11 te 9
2.1 Tổng quan về mã hÓa -©+- 2 + E+SE+EE+EE£EEEEEEEEEEEEEEEEEEEEEEEEErrkrkrree 92.2 Tổng quan về mật mã hậu lượng tử - 2-2 s2 2+++££+E++x++£zzzzzzzzxez 102.3 Tổng quan về thuật toán mật mã hậu lượng tử CRYSTALS-Kyber 10Chương 3 CƠ SỞ LÝ THUYÊT - 2: 2 2+ St+EE£EE2EE2EE+EEEEEEEEEerrrrrerreee 12
3.1 Các tham số CRYSTALS-Kyber 2- 22: 5+2++2x++zxezrxrsrxrrrxee 123.2 Lý thuyết về Kyber -¿-©2+©+++x2EkC2EE2E1E21122112711271.211.211 21c 13
3.2.1 Kyber.CPAPKE - Án nn TT HH HH HH net 15 3.2.2 Kyber.CCAKEM -.SQ TH nH TH HH HH rệt 21
Chương 4 THIET KE PHAN CỨNG -¿ 2 +++£2£++£E£+E+£Exerxezrxrrxee 25
4.1 Kiến trúc tổng quan của phần cứng CRYSTALS-Kyber - 254.2 Thiết kế Hash-Core dựa trên SHA3 ¿-2- 5t +x+EeEE+E+EEEE+EeErxerererxee 26
Trang 44.3 _ Thiết kế phan cứng lấy mẫu đồng nhất - 2-2 2+2+z+s+zsezs++z 30
4.4 _ Thiết kế phần cứng lấy mẫu phân phối nhị thức trung tâm 31
4.5 _ Thiết kế phan cứng Unified NTT/INTT cccccccsscssseseessessessesesseeseeseesesees 34
4.5.1 Kiến trúc phần cứng Fully-Pipelined Butterfly Unit (FPBU) 394.5.2 Kiến trúc phần cứng Barret-Reduce -¿ s¿©csz2:xccs+2 414.6 _ Thiết kế phan cứng Pointwise Multiply Accumulate 2-5: 424.7 Thiết kế phần cứng Unified Add/Sub mod q, .: -:-2z5z 444.8 _ Thiết kế phần cứng các Compress, Decompress, Encode và Decode 45Chương 5 ĐÁNH GIÁ KET QUẢ - 2-52 2+S£+E++EE+E2EE+EzErErrerreee 49
5.1 _ Đánh giá trên phần mềm Vivado 2020.2.2 -2¿©¿c++csz2s++zx+cse2 49
5.3 So sánh CKA trên FPGA với các CPU mạnh nhất 2-5-5 ssc+ 54
5.4 So sánh với các nghiên cứu khác dựa trên FPGA «++-«<+++ 56
5.4.1 Phan cứng Unified NTT/INTT 2-2 22s ++c+£+rzrszes 565.4.2 Phần cứng CRYSTALS-Kyber Accelerator -: :-s+ 57Chương 6 KẾT LUẬN VÀ HƯỚNG PHAT TRIÊỀN . ¿¿s+¿ 59
OL KGt lua nh 596.2 Hướng phát triển -¿-2¿++2E++2E+tEEEEEEEEEEEEEEEEkrrrkrrrkerrree 60
Trang 5DANH MỤC HÌNH
Hình 2.1: Mô hình mã hóa đối xứng - 2-2 2 + £+E£+EE+E++E++EE£EE2E£EzEzEerreee 9Hình 2.2: Mô hình mã hóa bất đối xứng - 2-2 2 + £+++E+E+E+EzEzEzrerree 9Hình 3.1: Khái quát độ khó của bài toán giải quyết van đề LWE trên Lattice-based
¬ gỔẦ , 14Hình 3.2: Khái quát cơ chế giao tiếp với Kyber 2-2-2 2+c£+£z+£z+zzzzzeee 14
Hình 3.3: Kyber.CPAPKE.KeyGenQ: key generation [ Ï] -««<<s«><<s++ 15 Hình 3.4: Kyber.CPAPKE.Enc(pk, m, r): encryption [ Ï ] .-« -««<ss«+<ss++ 16 Hình 3.5: Kyber.CPAPKE.Dec(sk, c): decryption [ Ï] - «-+-««<<<ec<sseessees 17
Hình 3.6: Thuật toán Parse [1] << 6+ 1333211111111 1£82 1182115811118 1 1211k cez 17 Hinh 3.7: Dinh nghia Bn 0777 18 Hình 3.8: Thuật toán CBD [ [] - c2 S2 22 21151121151 kg HH re 18 Hình 3.9: Thuật toán Decodee [1] - -¿- c 6 2221132211133 E335 xxe+ 18 Hình 3.10: Kyber.CCAKEM.KeyGen\(() - - Sc s11 nề 21
Hình 3.11: Kyber.CCAKEM.ENnc(pRk) ccccccccccsescccseessesssessesseeseeeseeseeeseeseesseeneeesseneees 22
Hình 3.12: Kyber.CCAKEM.Dec(c, SK) ceccececceseesceseeseesceseeeeeeeneeeeeneeeeeeneeneeaeeaees 23
Hình 4.1: Kiến trúc tong quan của phan cứng CRYSTALS-Kyber 25Hình 4.2: (a) Kiến trúc phần cứng Hash-Core với (b) phần cứng Keccak 26Hình 4.3: Kiến trúc phần cứng lấy mẫu đồng nhất 2-2 2 2+z+sz+sz 2š 31Hình 4.4: (a) Phần cứng lấy mẫu phân phối nhị thức trung tâm với (b) phần cứng
0:00699 11 33
Hình 4.5: Hai đơn vi Butterfly NTT/INTT: (a) Cooley- Tuckey (CT) Butterfly, (b)
Gentleman-Sande (GS) Butterfly . c2 113111 9 1 vn ng rệt 35
Hình 4.6: Thuật toán NTT độ phức tạp thấp - 2 s¿+£2++x£+x++£xerxzzxserxee 36
Hình 4.8: (a) Kiến trúc tong quan của phan cứng Unified NTT/INTT trong Kyber
với (b) bảy NTT-Core và một NTT-Core cho xử lý hậu kỳ - -«++ 38
Hình 4.9: Kiến trúc phần cứng Fully-Pipelined Butterfly Unit - 39Hình 4.10: Kiến trúc phần cứng (a) cộng mod q và (b) trừ mod q - 40
Trang 6Hình 4.11: Thuật toán Modified Barrett Reduce [6T] - -<- 5555 ++5<<<<<++<+<+ 41
Hình 4.12: Kiến trúc phần cứng Modified Barrett Reduce : s¿+¿ 42Hình 4.13: Kiến trúc phần cứng (a) Pointwise Multiply Accumulate, (b) Pointwise
Multiply Fully-Pipelined KẾ 43
Hình 4.14: Kiến trúc phan cứng (a) Unified Add/Sub mod q, (b) Unified Add/Sub
0058000 44
Hình 4.15: Kiến trúc phần cứng (a) Compressdu, (b) Divider - 46
Hình 4.16: Kiến trúc phần cứng (a) Decompressdu, (b) Multiplier by Q 46Hình 4.17: Kiến trúc phần cứng Encode1 -. -¿: + ©z++++cx++zx+zxtzrxerrsez 47Hình 4.18: Kiến trúc phần cứng Decode1 -¿-2-+¿+s2+++++£+£++£x++xzzzs+rsez 47
Hình 5.1: Mô hình kiểm tra trên phần mềm Vivado 2020.2.2 cccscsssecsesssessesseesseeses 49
Hình 5.2: Kết quả so sánh 2 file ciphertext của phần mém và phan cứng mô phỏng
trên Vivado 2020.2.2 ta0 Ta - c 00101122211 1111112301 11111001111 11g 11 ng vế 50
Hình 5.3: Kết quả so sánh 2 file message của phần mềm và phần cứng mô phỏng
trên Vivado 2020.2.2 {ẠO Ta - - -.-c 1 001111221111 111261 111111001111 11g 1v ng vn gưy 50
Hình 5.4: Mô hình SoC dé triển khai và đánh giá hệ thống .2- 5: 5¿ 52Hình 5.5: Sơ đồ khối khi triển khai IP Kyber trên FPGA .: -¿-¿5+¿ 53Hình 5.6: Phân tích định lượng về thời gian thực thi CKA và tích năng lượng với độtrễ trên các tần số khác nhau và kích thước đầu vào khác nhau 5: 54
Hình 5.7: So sánh thời gian thực thi và tích năng lượng với độ trễ giữa CKA va
Trang 7DANH MỤC BANG
Bảng 3.1: Tập tham số của Kyberr - :- 2 + E+SE+EE+EE£EE+EE2EEEEEEEEEEEEEErErrrerreree 12Bang 4.1: Các chế độ của phần cứng Hash-COre 2-2 2 2 2+££+£z+£z+£z22z+‡ 28Bảng 5.1: So sánh kiến trúc phần cứng Unified NTT/INTT được đề xuất với các
nghiên cứu tiên tiến khác trên Artix-7 FPGA 2-2 2 2+ +2 E++EE+E+EzEzEzrxee 56Bảng 5.2: So sánh với các nghiên cứu tiên tiến dựa trên kết quả sau triển khai
CRYSTALS-Kyber Accelerator với Artix 7 FPGA - cv sssereeres 57
Trang 8DANH MỤC TU VIET TAT
Viết tắt Tiếng Anh Tiếng Việt
Al Artificial Intelligence Tri tuệ nhân tao
Application Specific Mach tich hop danh riéng ASIC ,
Integrated Circuit cho ứng dung
ADP Area-Delay Product Hiệu qua ela Diện Tích
và Độ Trê
CPU Central Processing Unit Bộ xử lý trung tâm
Digital Signature A2 ~Lự, A
DSA Algorithm Thuật toán chữ ký sô
ECC Elliptic-Curve Mật mã đường cong
Cryptography Elliptic
Field-Programmable Gate | Lap Trinh Trường Mang
FPGA R
Array Công loT Internet of Things Internet vạn vật
Inverse Number Theoretic Biến đôi lý thuyết số
INTT : ;
Transform nghich dao
LWE Learning-With-Errors Học với lỗi
NIST National Institute of Viện Tiêu Chuân và Công
Standards and Technology |_ nghệ Quoc Gia Hoa Ky
NTT died’ i Biến đổi ly thuyết số
Transform
PQC Post-Quantum Computer Mật mã hậu lượng tử
PWM Pointwise Multyply Nhân theo điểm
Hiệu quả giữa Năng PDP Power-Delay Product Lượng Tiêu Thụ và Độ
Tré
RSA Rivest-Shamir-Adleman
SoC System on Chip Hệ thống trên chip
Trang 9TOM TAT KHÓA LUẬN
CRYSTALS-Kyber, gọi tắt là Kyber, là một thuật toán mã hóa dữ liệu mớiđây đã được NIST chuẩn hóa đề bảo vệ dữ liệu trước sự phát triển nhanh chóng củamáy tính lượng tử, đe doa đáng ké đến các hệ thống mật mã truyền thống như RSA
và ECC Do đó, nhiều nghiên cứu về phần cứng đã được thực hiện dé tối ưu hóahiệu suất và hiệu quả năng lượng của Kyber cho các hệ thống hiện đại như Internetvạn vật (IoT) Tuy nhiên, hầu hết phần cứng hiện tại của Kyber vẫn gặp khó khăn
trong việc đạt được tôc độ cao với hiệu suât phân cứng cao.
Vì vậy, nghiên cứu này đề xuất một thiết kế phần cứng cho bộ tăng tốcCRYSTALS-Kyber (CKA) đa chế độ hiệu suất cao nhằm hỗ trợ tất cả các hoạtđộng chế độ, bao gồm tạo khóa, mã hóa và giải mã, với tốc độ cao và tiêu thụ điệnnăng thấp Ba ý tưởng sáng tạo được đề xuất cho CKA đề đạt được những mục tiêunay là: chia sẻ tài nguyên module dé tái sử dung hầu hết các module chính trong bachế độ hoạt động: triển khai mô-đun Unified NTT/INTT được tối ưu hóa tốc độ vàdiện tích do đây là tính toán phức tạp và tốn thời gian nhất; và loại bỏ MontgomeryReduce chỉ sử dụng phương pháp rút gọn tối ưu Barrett Reduce và PipelinedPointwise Multiply Accumulate dé tăng tốc hoạt động nhân phức tap
Đáng chú ý, module Unified NTT/INTT của nghiên cứu cũng tốt hơn từ 1.64đến 8.3 lần so với các nghiên cứu NTT/INTT trước đây về Area-Delay Product(ADP) CKA đã được triển khai thành công trên Zynq UltraScale+MPSoC ZCU102FPGA, trong đó Power-Delay Product (PDP) của CKA ít nhất tốt hơn 12.3 lần sovới CPU mạnh mẽ So với các kiến trúc Kyber trước đây ở ba chế độ hoạt động,CKA nhanh hơn ít nhất 1.38 lần và tốt hơn ít nhất 1.9 lần về ADP
Trang 10CRYSTALS-Kyber, briefly called Kyber, is an asymmetric encryption algorithm standardized by NIST to maintain data security in the face of the rapid
development of quantum computers, which significantly threaten traditional
cryptographic systems such as RSA and ECC Accordingly, multiple hardware studies have been conducted for Kyber to optimize performance and energy
efficiency for modern systems such as the Internet of Things However, most
existing Kyber hardware still faces challenges in achieving high speed with high hardware efficiency.
Therefore, this research proposes a hardware design for a high-performance,
multimode CRYSTALS-Kyber accelerator (CKA) to support all operating modes,
including key generation, encryption, and decryption, with high speed and low power Three innovative ideas are proposed for CKA to achieve these goals: resource-sharing modules to reuse almost all main modules in three operating
modes, implement a Unified NTT/INTT module to optimize the speed and area of
the most complex and time-intensive module, and pipelined pointwise
multiply-accumulate and eliminate the Montgomery Reduce method, and use only the modified Barrett Reduce optimal reduction method to accelerate the complex
multiplication operation.
Notably, compared to NTT/NTT works, our Unified NTT/INTT is also 8.3 times better in area-delay product The CKA is successfully implemented on the Zynq UltraScale+ MPSoC ZCU102 FPGA, where the power-delay product of CKA
1.64-is at least 12.3 times better than powerful CPUs Compared to previous Kyber architectures in three operating modes, the CKA is at least 1.38 times and 1.9 times
better in execution time and area-delay product, respectively.
Trang 12Chương 1 MỞ ĐẦU
1.1 Lý do chọn đề tài
Hiện nay, sự phát triển mạnh mẽ trong các lĩnh vực như chăm sóc sức khỏe,
trò chơi điện tử, viễn thông, trí tuệ nhân tao (Artificial Intelligence — AI) và Internet
vạn vật (Internet of Things — IoT), thì các mối đe dọa trên về bảo mật cũng đang
gia tăng Sự phát triển nhanh chóng của máy tính lượng tử, với khả năng vượt qua
siêu máy tính hiện đại, đang trở thành mối đe dọa về vấn đề bảo mật Các thuật toán
bao mật hiện tại như Rivest-Shamir-Adleman (RSA) hay Elliptic-Curve
Cryptography (ECC) có thé dé dàng bị tan công bởi các thuật toán trên máy tínhlượng tử như thuật toán Shor Dé chống lại điều này, Viện Tiêu chuẩn và Công
nghệ Quốc gia (National Institute of Standards and Technology — NIST) của Hoa
Ky đã khởi xướng chương trình chuẩn hóa các thuật toán mật mã hậu lượng tử
(Post-Quantum Computer — PQC) vào năm 2016.
Trải qua nhiều vòng đánh giá nghiêm ngặt, nhiều thuật toán không vượt qua,nhưng cũng có nhiều thuật toán cho thay khả năng bảo mật mạnh mẽ va đủ sứcchống lại các cuộc tấn công của máy tính lượng tử trong tương lai Các thuật toánnày chủ yếu dựa trên: Lattice-based (dựa trên lưới), Code-based (dựa trên mã),Multivariate Quadratic Equations (dựa trên phương trình bậc hai đa biến), Hash-
based (dựa trên ham băm), Supersingular Elliptic Curve Isogeny (dựa trên isogeny
của đường cong elliptic siêu đặc) và Symmetric-key (khóa đối xứng) Trong đó, cácthuật toán Lattice-based đang cho thấy tiềm năng to lớn của mình với nhiều thuậttoán mã hóa hậu lượng tử đã triển khai Lattice-based Các thuật toán Lattice-based,
bao gồm CRYSTALS-Kyber (Kyber), CRYSTALS-Dilithium, Falcon, Saber va
NewHope, đã nổi lên như những ứng cử viên day triển vọng cho chuẩn hóa Vượtqua tất cả, CRYSTALS-Kyber hay gọi tắt là Kyber đang là thuật toán cho thấy khảnăng bảo mật vượt trội và được đánh giá TẤt cao trong giới học thuật và doanh
nghiệp Kyber là thuật toán mã hóa bất đối xứng đã được NIST công bố là đã được
Trang 13chuân hóa và có thê giúp máy tính cô điên chông lại các cuộc tân công bởi máy tính lượng tử trong tương lai.
Bat chấp những hứa hẹn về các thuật toán Lattice-based như Kyber lại gặpphải những thách thức do tính phức tạp vốn có của phép nhân đa thức, có độ phứctạp O(n”) đối với n hệ số (n = 256 đối với Kyber) Bên cạnh phép nhân đa thức thìKyber còn dựa vào một số phép tính và thuật toán cũng khá phức tạp và chiếmlượng lớn thời gian tính toán và xử lý như hàm băm (hash) theo chuẩn FIPS-202.Hiện nay, đã có nhiều nghiên cứu triển khai Kyber trên nhiều nền tảng và nhiềucách thức khác nhau như đồng phần cứng-phần mềm, RISC-V, ASIC, FPGA, Các nghiên cứu triển khai Kyber trên phần cứng như FPGA hay ASIC cho thấy cáccải thiện rõ rệt về thời gian thực thi cũng như tài nguyên sử dụng Những nghiêncứu dù đã đạt được những thành tựu to lớn nhưng vẫn còn hạn chế khi đa số cácphần cứng này chỉ hoạt động như Server (máy chủ: tạo khóa và giải mã) hoặc Client(máy khách: mã hóa) Dù có một số ít đã triển khai thành công phần cứng Kyber cóthé hoạt động linh hoạt như Server hoặc Client trên cùng phan cứng duy nhất nhưng
vẫn chưa đạt được hiệu quả cao giữa diện tích và thời gian thực thi (Area-Delay
Product — ADP) Đồng thời việc triển khai trên FPGA cũng cho thấy sự linh độngkhi có các chỉnh sửa cho thiết kế FPGA cho thấy nó là một nền tảng tốt dé pháttriển các thuật toán phức tạp xuống phần cứng thuần cho các nghiên cứu và đánh
Trang 14phần cứng Verilog và đồng thời sử dụng các ngôn ngữ lập trình để thiết kế phầnmềm hỗ trợ truyền nhận dữ liệu cho phần cứng trong hệ thống SoC Giải quyết vấn
đề phát triển một phần cứng duy nhất có cả khả năng chuyền đổi linh hoạt giữaServer và Client Sau đó sẽ tổng hợp kết quả và đánh giá cũng như so sánh với cácnghiên cứu khác Cuối cùng sẽ bàn luận về các hướng nghiên cứu có khả năng đểphát triển của đề tài
1.2.2 Mục tiêu
Nghiên cứu, phân tích và tìm hiểu lý thuyết về thuật toán CRYSTALS-Kyber,
cũng như triển khai thuật toán này trên phần cứng
Hoàn thiện việc thiệt kê phân cứng và xác minh chức năng của nó thông qua
mô phỏng sử dụng phần mềm Vivado
Triển khai phần cứng trên ZCU102 FPGA, dé chạy phục vụ cho việc xác minhphần cứng thực hiện đúng chức năng trong thực tế
Mục tiêu chính của đề tài bao gồm:
1) Thiết kế phần cứng sao cho có thé thực hiện 3 chế độ chính: Tạo khóa (Key
Generation — Key.), Mã hóa (Encryption — Enc.) và Giải mã (Decryption —
Dec.), hay nói cách khác là có thé hoạt động như một Client hoặc Server
2) Triển khai thành công trên SoC dé xác minh độ chính xác của phần cứng.
3) Đảm bảo phan cứng đạt được hiệu suất cao với ADP tổng thấp hơn 0.8
1.3 Đối tượng và phạm vi nghiên cứu
1.3.1 Đối tượng nghiên cứu
Khóa luận nghiên cứu và hiện thực một thiết kế phần cứng cho thuật toán mật
mã hậu lượng tử CRYSTALS-Kyber bằng việc sử dụng ngôn ngữ mô tả phần cứngVerilog và đánh giá, so sánh với các nghiên cứu khác trên nền tảng FPGA Khóaluận cũng sẽ hiện thực một hệ thống SoC dé xác minh độ chính xác của phần cứng
trong hệ thống thực tế.
Trang 151.3.2 Pham vi nghiên cứu
Phạm vi của khóa luận là thuật toán mật mã hậu lượng tử CRYSTALS-Kyber
với tham số k là 3 (k có thé là 1, 3 và 5 tương ứng với Kyber-512, Kyber-768 vàKyber-1024) nói cách khác phạm vi của đề tài là thực hiện thuật toán CRYSTALS-Kyber-512 Ứng với các giá trị k khác nhau thì Kyber sẽ có mức độ bảo mật sẽ khácnhau với Kyber-1024 là phiên bản được cho là có khả năng bảo mật cao nhất Con
số 512, 768, 1024 không phải là độ dài của khóa hay bất kỳ đầu ra nào của thuật
toán Nhưng có thé đoán được đó là kích thước của tổng số lượng các hệ số nhiễu
trong thuật toán Với k = 2 thuật toán sẽ có 2 vector đa thức nhiễu e với 2 phần tửvới mỗi phan tử là 1 đa thức gồm 256 hệ sé Suy ra, với k = 2 thì sẽ có 512 hệ số
nhiễu khi thực hiện thuật toán.
Nhưng với kiến thực, khả năng và cũng như thời gian hạn chế thì khóa luậnchỉ dừng lại ở việc hiện thực một thiết kế phần cứng cho Kyber-512 Khóa luận tậptrung chủ yếu vào việc phải hiện thực và triển khai được phần cứng Kyber-512 nhưtên đề tài là “Bộ tăng tốc đa chế độ hiệu suất cao cho mật mã hậu lượng tửCRYSTALS-Kyber” Khóa luận cũng sẽ hiện thực một hệ thống SoC đề thực hiện
việc xác minh độ chính xác của phân cứng khi đưa vào hệ thông thực tê.
1.4 Y nghĩa khoa học và thực tiễn
1.4.1 Y nghĩa khoa học
Mật mã hậu lượng tử thực sự đang mở ra một cánh cửa mới về viễn cảnh bảomật Việc triển khai các thuật toán mật mã hậu lượng tử lên phần cứng thuần hayđồng phần cứng-phần mềm cũng như các nền tảng khác như RISC-V, ASIC,
CGRA, không chỉ là một sự cần thiết, mà còn là một bước đột phá quan trọng
trong việc bảo vệ thông tin Việc này không chỉ đảm bảo an toàn cho dữ liệu cá
nhân mà còn mở ra cơ hội cho sự phát triển bền vững của các lĩnh vực như tàichính, y tế, loT và trí tuệ nhân tạo Trên hết, nó tạo ra nền tảng cho sự tin cậy và anninh trong thế giới số ngày nay và trong tương lai
Trang 161.4.2 Y nghĩa thực tiễn
Việc triển khai thuật toán mật mã hậu lượng tử CRYSTALS-Kyber lên phầncứng thuần hoặc đồng phần cứng/phần mềm cũng như các nền tảng khác như RISC-
V, ASIC, CGRA, có ý nghĩa rất lớn trong các hệ thống mật mã và hệ thống IoT
Nó không chỉ mang tính ứng dụng thực tế mà còn đóng góp quan trọng vào việcđánh giá và phát triển bảo mật trong lĩnh vực này, đặc biệt trong việc truyền thông
dữ liệu và quản lý các thiết bị kết nồi
Trang 17Chuong 2 TONG QUAN
2.1 Tổng quan về mã hóa
Mã hóa là phương pháp biến đổi dit liệu sao cho chỉ có các bên được phép mới
có thê truy cập được nội dung thông qua việc giải mã dữ liệu đã được mã hóa Quá
trình này chuyển đổi dữ liệu gốc thành dữ liệu mã hóa bằng khóa mật mã Chỉ
những người có đúng khóa mật mã mới có khả năng giải mã và đọc được dữ liệu đã
được mã hóa Có hai loại mã hóa chính: mã hóa đối xứng và mã hóa bat đối xứng
Hình 2.1 trình bày mô hình mã hóa đối xứng sử dụng duy nhất một khóa màtất cả các bên đều dùng chung đòi hỏi người gửi và người nhận phải chia sẻ khóamột cách an toàn và bí mật trước khi trao đôi thông tin
Secret Key
N v y N
= Encryption Fy Decryption =
Plain Text Cipher Text Plain Text
Hình 2.1: Mô hình mã hóa đối xứng
Hình 2.2 trình bày mô hình mã hóa bất đối xứng sử dụng hai khóa khác nhau:
một khóa để mã hóa và một khóa để giải mã Khóa dùng để mã hóa là khóa công
khai, trong khi khóa dùng dé giải mã là khóa bí mật
2
Public Key Secret Key
N v M N
= Encryption Fy Decryption =
Plain Text Cipher Text Plain Text
Hình 2.2: Mô hình mã hóa bat đối xứng
Trang 182.2 Téng quan về mật mã hậu lượng tử
Ké từ khi NIST khởi động chương trình chuẩn hóa các thuật toán với mục đíchtìm kiếm các thuật toán mật mã có khả năng bảo vệ máy tính cô điển hiện này khỏi
các cuộc tấn công mạng của máy tính lượng tử trong tương lại Mật mã hậu lượng
tử hay Post-Quantum Computer là trở thành một dé tài đang rất sôi nổi trong giới
nghiên cứu cũng như ngoài doanh nghiệp Máy tính lượng tử được cho rằng sẽ phá
vỡ các hệ thống bảo mật truyền thống như RSA, ECC hay DSA trong thời gian
ngắn, gây đe dọa lớn tới bảo mật dữ liệu.
Với nhiều vòng đánh giá và thử nghiệm dựa trên các lý thuyết của NIST nhiềuthuật toán đã đáp ứng được các nhu cầu như khả năng chống lại các cuộc tấn côngcủa máy tính lượng tử, độ an toàn cao cũng như khả năng triển khai thuật toán với
các công nghệ hiện có.
Các thuật toán chủ yếu dựa vào Lattice-based (dựa trên lưới, Code-based (dựatrên mã), Multivariate Quadratic Equations (dựa trên phương trình bậc hai đa biến),
Hash-based (dựa trên ham băm), Supersingular Elliptic Curve Isogeny (dựa trên
isogeny của đường cong elliptic siêu đặc) và Symmetric-key (khóa đối xứng)
Dù đã có nhiều thuật toán được chuẩn hóa nhưng các thuật toán này lại đanggặp phải nhiều hạn chế như tài nguyên tính toán Mỗi thuật toán mật mã hậu lượng
tử có rất nhiều các thuật toán phức tạp khác nhau được áp dụng vào dé tăng độ baomật song cũng dẫn đến việc tạo ra một lượng lớn các phép tính mà CPU phải xử lýdẫn đến sự thiếu hiệu quả khi triển khai vào các hệ thống thực tế khi tốc độ tínhtoán là quá lâu Do đó, các nghiên cứu về việc tối ưu các thuật toán mật mã hậulượng tử đang rất được sự quan tâm từ giới học thuật và doanh nghiệp
2.3 Tổng quan về thuật toán mật mã hậu lượng tử CRYSTALS-Kyber
Trãi qua nhiều vòng đánh giá thì CRYSTALS-Kyber hay Kyber đang là mộtthuật toán dành được rất nhiều sự quan tâm Kyber là một trong số nhiều thuật toán
mà NIST đã chuẩn hóa với khả năng bảo mật đáng kinh ngạc Kyber có thể được
10
Trang 19triển khai có các ứng dụng mã hóa, IoT hay chữ ký số Kyber là một cơ chế đóng
gói khóa bảo mật IND-CCA2 (KEM), có tính bảo mật dựa trên độ khó của việc giải
quyết vấn đề Learning-With-Errors (LWE) trên Lattice-based Các thuật toánLattice-based được cho là có khả năng chống lại các tắn công bằng máy tính lượng
tử.
Kyber là một thuật toán thé hiện được sự cân bằng đến kinh ngạc giữa độ antoàn và hiệu suất thông qua việc điều chỉnh các tham số Điều này làm cho Kybertrở thành khả thi hơn khi triển khai vào các hệ thống IoT hay hệ thống bảo mật yêucầu xử lý nhanh chóng
Dù vậy, thời gian xử lý các tính toán cho Kyber vẫn còn đang rất lớn do đó đã
có rất nhiều các nghiên cứu tối ưu Kyber trên nhiều nền tảng khác nhau tử phần
mềm thuần, đồng kiến trúc phần cứng-phần mềm, phần cứng thuần, ASIC, RISC-V,
CGRA, Giải quyết việc tối ưu cho Kyber có thể nói là một bước tiến quan trọngtrong công cuộc phát triên các thuật toán dé chống lại các cuộc tan công của máy
tính lượng tử trong tương lại.
11
Trang 20Chương 3 CƠ SỞ LÝ THUYET
3.1 Các tham số CRYSTALS-Kyber
Lý thuyết về CRYSTALS-Kyber, do tác giả Roberto Avanzi và các nhóm
nghiên cứu trình bày, có thể được tìm thấy trong tài liệu [1] và trên trang web chínhthức của CRYSTALS-Kyber, nơi cập nhật các phiên bản mới nhất của thuật toán
Thuật toán CRYSTALS-Kyber là thuật toán mật mã hậu lượng tử dựa trên loại mã
hóa bat đối xứng là một trong số nhiều thuật toán đã được chuẩn hóa [2] Thuật toánCRYSTALS-Kyber là một cơ chế đóng gói khóa bảo mật IND-CCA2 (KEM), cótính bảo mật dựa trên mức độ khó giải quyết vấn đề Learning-With-Errors (LWE)trên Lattice-based Kyber có ba bộ tham số khác nhau nhằm vào các mức độ bảomật khác nhau Cụ thể, Kyber-512 hướng đến khả năng bảo mật gần tương đươngAES-128, Kyber-768 hướng đến khả năng bảo mật tương đương AES-192 vàKyber-1024 hướng đến khả năng bao mật tương đương AES-256 Lý thuyết vềthuật toán CRYSTALS-Kyber được trình bày chủ yếu trong tài liệu [1] Việc xâydựng thuật toán CRYSTALS-Kyber tuần theo cách tiếp cận hai giai đoạn: trước tiêngiới thiệu sơ đồ mã hóa khóa công khai bảo mật INDCPA mã hóa các tin nhắn có
độ dài cố định là 32-byte, mà họ gọi là Kyber.CPAPKE Sau đó, sử dụng phép biếnđổi Fujisaki-Okamoto (FO) đã được tinh chỉnh một chút để xây dựng KEM bảo mật
IND-CCA2, gọi nó là Kyber.CCAKEM Bảng 3.1 trình bày tập tham của Kyber ứng
Trang 21Giá trị được đặt là 256 vì mục tiêu là đóng các khóa với 256-bit entropy (tức là sử dụng kích thước plain-text là 256-bit trong Kyber.CPAPKE.Enc) Giá tri
nhỏ hơn của n sẽ yêu cầu mã hóa nhiều bit khóa vào một hệ số đa thức, điều nàyyêu cầu mức độ nhiễu thấp hơn và do đó giảm bảo mật Giá trị lớn hon của n sẽgiảm khả năng tăng cường bảo mật dễ dàng thông qua tham số k
Chọn q là một số nguyên tố nhỏ thỏa mãn ø | (q — 1) tức là q là một sốnguyên tố nhỏ thỏa việc gq — 1 chia hết cho n; điều này cần thiết dé cho phép nhândựa trên Number-Theoretic Transform nhanh chóng Có hai số nguyên tố nhỏ hơnthỏa mãn tính chất này, đó là 257 và 769 Tuy nhiên, với những số nguyên tổ này,
chúng sẽ không thé đạt được xác suất thất bại không đáng ké yêu cầu cho tính bao
mật CCA, do đó chọn số nguyên tố lớn tiếp theo, tức là q = 3329
Giá trị k được chon để có định kích thước mang tinh thé (lattice) là bội sốcủa n, việc thay đôi k là cơ chế chính trong Kyber dé tăng cường bảo mật (cũngnhư kết quả hiệu quả) ở các mức độ khác nhau
Các tham số còn lại ?Ọ,?†a, đ„ và đ„ được chọn dé cân bằng giữa bảo mật,
kích thước ciphertext và xác suất thất bại Lưu ý rằng cả ba tập tham số đều đạt
2—128
được xác suât thât bại nhỏ hơn với một mức độ an toàn nhât định.
Tham sô 7, và nz xác định mức nhiều của s, e, e,va e; trong thuật toán CRYSTALS-Kyber.
3.2 Lý thuyết về Kyber
Như đã đề cập ở Mục 3.1, thuật toán CRYSTALS-Kyber là dạng mã hóa bấtđối xứng với độ khó dựa trên mức độ khó giải quyết vẫn đề Learning-With-Errors(LWE) trên Lattice-based Độ khó về bài toán này được mô tả khái quát ở Hình 3.1
Bài toán dựa trên việc tạo một ma trận A thông qua việc lấy mẫu đồng nhất trong
trường Z„, các ma trận nhiễu e và ma trận s được lay mẫu thông qua lay mẫu từphân phối nhị thức trong trường Z„ Có thể thấy khi có ma trận 4 và ma trận £ thì
việc tim ma trận s rat dé dàng thông qua nhân ma trận nghịch đảo của A với t: s =
13
Trang 22AT1ot£ Nhung với LWE thì việc cộng thêm ma trận nhiễu e thì sẽ rất khó dé tìmchính xác được ma trận s khi chỉ biết được ma trận A và ma trận t Ở đây có théhiểu A va t là khóa công khai còn s là khóa bí mật.
TT 6 n ố S6 Šố €
Hình 3.1: Khái quát độ khó của bài toán giải quyết van đề LWE trên Lattice-based
Hình 3.2 trình bày khái quát cơ chế tạo khóa, mã hóa và giải mã với Kyber với
mô hình Client-Server Khi Client gửi yêu cầu thì Server sẽ gửi về một khóa công
khai cho Client mã hóa một đoạn văn ban (msg) còn khóa bí mật thì Server sé gift.
Khi Client gửi về cho Server bản mã (ciphertext) thu được từ việc mã hóa msg thì
Server với khóa bí mật đang giữ sẽ giải mã dé thu vê đoạn văn bản ban đâu.
Server Client
request
At: public key
Hinh 3.2: Khai quat co ché giao tiép voi Kyber
Việc xây dựng thuật toán CRYSTALS-Kyber tuân theo cách tiếp cận hai giai
đoạn: trước tiên giới thiệu sơ đồ mã hóa khóa công khai bảo mật INDCPA mã hóa
các tin nhắn có độ dài cố định là 32-byte, mà họ gọi là Kyber.CPAPKE Sau đó, sử
14
Trang 23dụng phép biến đổi Fujisaki-Okamoto (FO) đã được tinh chỉnh một chút để xây
dựng KEM bảo mật IND-CCA2, gọi nó là Kyber.CCAKEM.
3.2.1 Kyber.CPAPKE
Kyber.CPAPKE tương tự như lược đồ mã hóa LPR (LPR là tên viết tắt từ tên
của ba nhà nghiên cứu: Vadim Lyubashevsky, Chris Peikert, và Oded Regev) đã
được giới thiệu (cho Ring-LWE) bởi Lyubashevsky, Peikert và Regev trong phầntrình bày tại hội nghị Eurocrypt 2010 Nguồn gốc của sơ đồ này bắt nguồn từ sơ đồ
mã hóa dựa trên LWE đầu tiên do Regev trình bày với sự khác biệt chính là vòngbên dưới không phải là Z, và cả vecto bi mật và lỗi đều có hệ số nhỏ Y tưởng sử
dụng vành đa thức (thay vì Z„) có từ hệ thống mật mã NTRU do Hoffstein, Pipher
và Silverman trong khi tính đối xứng giữa bí mật và lỗi đã được sử dụng trong các
sơ đồ mã hóa rất giống nhau Sự khác biệt chính so với sơ đồ mã hóa LPR là sử
dụng Module-LWE thay vì Ring-LWE.
Algorithm 1 KybBER.CPAPKE.KeyGen(): key generation
Output: Secret key sk € BI?! "/8
Output: Public key pk € B12 *"/8+82
Trang 24Ngoài ra, áp dung cách tiếp cận của Alkim, Ducas, Pöppelmann và Schwabe
đê tạo ra ma trận công khai A Ngoài ra, rút ngăn các bản mã băng cách làm tròn các
bit thấp như trong các lược đồ dựa trên học vòng, đây là một kỹ thuật phố biến dégiảm kích thước bản mã trong các lược đồ dựa trên LWE Kyber.CPAPKE gồm
“Kyber.CPAPKE.KeyGenQ: key generation”, “Kyber.CPAPKE.Enc(pk, m, r):
encryption” và “Kyber.CPAPKE.Dec(sk, c): decryption” Hình 3.3, Hình 3.4 và Hình 3.5 mô tả các thuật toán tạo khóa, mã hóa và giải mã trong giai đoạn CPAPKE của Kyber.
Algorithm 2 KyBer.CPAPKE.Enc(pk, m,r): encryption
Input: Public key pk € B12*-n/8+32
Input: Message m € 632
Input: Random coins r € 832
Output: Ciphertext ¢ € Ba kn/8+de-n/8
for i from 0 tok — 1 do > Generate matrix A € Ri *È* in NTT domain
for j from 0 tok — 1 do
A’ [i][j] = Parse(XOF(p, i, j))
end for end for
for i from 0 to k— 1 do > Sample r € RE from By,
ri] := CBD„, (PRF(r, N))
N:=N+1 end for
for i from 0 to k —1 do > Sample e; € RE from By,
v= NTT (t7 of) + ea + Decompress, (Decode; (77), 1) put r+eo+ Decompress, (7m, 1)
c¡ := Encodeg, (Compress, (u, d.,))
ca := Encodeg, (Compress, (0, đ,))
return e = (e||ca) > c := (Compress, (u, đ„), Compress, (0, đ„))
Hình 3.4: Kyber.CPAPKE.Enc(pk, m, r): encryption [1]
Trong Hình 3.3 và Hình 3.4 sử dụng thuật toán Parse dé tạo các ma trận A và
AT Thuật toán Parse là lay mẫu đồng đều trong R, (Rejection-Uniform sampling inR,) Thuật toán CRYSTALS-Kyber sử dụng một phương pháp xác định dé lấy mau
các phần tử trong Rg gan với phân phối ngẫu nhiên đồng đều (uniformly random
16
Trang 25distribution) Để thực hiện việc lấy mẫu này, người phát triển thuật toánCRYSTALS-Kyber sử dụng một ham Parse: B*— Rg, với dau vao 1a mét luồngbyte B = bạ, bị, bz, luồng byte này không có giới hạn nhất định bởi vì trong quátrình lấy mẫu sẽ có các phần tử bị bỏ qua do không đáp ứng đủ điều kiện Do đó,trong quá trình lấy mau thì luồng byte này nếu thiếu sẽ được bổ sung dự vào mộthàm khác Ham Parse này tính toán biểu diễn NTT(a) = â = âo +â¡X + +ân_-+X”~1 € R, của a € Rạ Thuật toán Parse được mô tả ở Hình 3.6 với các mô tảchỉ tiết.
Algorithm 3 KyBER.CPAPKE.Dec(sk,c): decryption
Input: Secret key sk € 8!2#'”⁄8
Input: Ciphertext ¢ € 8® /8tdurn/8
return âo + â¡X + - +â„_¡X~!
Hình 3.6: Thuật toán Parse [1]
Thuật toán CBD (Centered Binomial Distribution) sử dụng ở thuật toán tạo
khóa và mã hóa trong Hình 3.3 và Hình 3.4 là lay mẫu từ phân phối nhị thức
17
Trang 26(binomial distribution) Nhiễu trong Kyber được lấy mẫu từ phân phối nhị thứctrung tâm của Bị với n = 2 hoặc n = 3 Độ dài của luồng byte B,, phụ thuộc vào giátrị 7 định nghĩa B„ như Hình 3.7 Thuật toán CBD được mô tả chi tiết trong Hình
return fo + ƒ\X + foX? + - + ƒfassX?55
Hình 3.9: Thuật toán Decoder [1]
18
Trang 27Trong thuật toán Decoder ở Hình 3.9, đưa ra một mô tả mã giả cua hàm
Decoder, giải mã một mảng gồm 32¢ byte thành một đa thức f = fo + X + : +fssX?°5 (n = 256 trong mô tả này) với mỗi hệ số f; trong {0, ,2@- 1} Định
nghĩa ham Encode, là hàm nghịch đảo của Decoder Khi áp dung Encoder cho một
vector của các đa thức, chúng ta mã hóa từng đa thức riêng lẻ và nối các mảng byte
dau ra.
Ngoài việc sử dụng lại các hàm và các thuật toán đã đề cập ở trên thì ở thuậttoán Kyber.CPAPKE.KeyGen(): key generation còn sử dụng một số hàm khác như
G, XOF và PRF Ba hàm được xây dựng lần lượt từ các hàm SHAKE-128,
SHA3-512, SHAKE-256 theo tiêu chuẩn FIPS-202 [3] [4] [5] Cùng với đó thuật toán còn
sử dụng ham NTT đây là hàm khá phức tạp và quan trọng của Kyber Hai thuật toán ở Hình 3.4 và Hình 3.5 mô tả quá trình mã hóa và giải mã một message ở bước
Kyber.CPAPKE Ở 2 thuật toán này có sử dụng 2 hàm là Compress và Decompress.Trong đó, hàm Compress(x, d) sẽ lay một phan tử x € Zq và xuất ra một số nguyên
trong {0, , 2# - 1}, với d < [log,(q)] Hàm Decompress sẽ được định nghĩa như
sau:
x' = Decompress,(Compress, (x, d), đ)
, q
|x“—xmod + q| < By:= [Savill
Hai ham này phải thõa các điều kiện sau:
19
Trang 28trong các phép tính, có thé được phân tích thành q — 1 = 2 13 Điều nay có nghĩa
là trường cơ sở Z, (các số nguyên modulo q) chứa các gốc nguyên thủy bậc 256nhưng không chứa các gốc nguyên thủy bậc 512 Do đó, đa thức xác định X75° + 1
của R phân tích thành 128 đa thức bậc 2 modulo q Phân tích nay cho phép NTT
của một đa thức f trong R, được biểu diễn dưới dạng một vectơ gồm 128 đa thức,mỗi đa thức có bậc một Khi thực hiện NTT, kết quả thường được sắp xếp theo thứ
tự đảo bit Điều này có nghĩa là thứ tự của đầu ra bị đảo ngược ở mức bit, một kỹthuật phô biến trong các triển khai NTT va FFT dé đạt hiệu qua Nhưng ở đây NTTđược triển khai dựa trên dữ liệu ban đầu không thay đổi vị trí các hệ số của đa thức
Cụ thể về gốc nguyên thủy, gốc nguyên thủy bậc 256 đầu tiên theo modulo q là ø =
17 và {œ,ø3,@°, @2°5} là tất cả các gốc nguyên thủy bậc 256 Do đó đa thứcX56 + 1 có thê được viết dưới dang phù hợp cho NTT là:
X255 +1= TIẾT <> pitt) — TÁC? _ @2P720)31), (3.1)
Ở đây br,(i) với i = 0, ,127 là phép đảo ngược bit của số nguyên 7 bit
không dấu i Thứ tự sau khi sắp xếp lại các hệ số thông qua phép đảo ngược bit là
một yêu tô rât hữu ích cho việc tương thích với các đặc điêm riêng của các lệnh AVX Khi đó NTT của ƒ € Ry nhận được là:
(f mod X2? — G0700 11, woof mod X2 — @2Pr;427)+1) (3.2)
Vectơ đa thức tuyến tính này sau đó được tuần tự hóa thành vectơ trong Z aotheo cách chính tắc Ngoài ra, để không tạo ra các kiểu dữ liệu khác và tạo điều kiệnthuận lợi cho việc triển khai NTT mà không cần sắp xếp lại thứ tự các hệ số, NTTđược định nghĩa: R, — R, là một phép đối xứng ánh xạ ƒ € R, tới đa thức vớivectơ hệ số đã nêu ở trên Do đó,
NTTỢ) = f = fo + AX +++ f2ssX?5Š (3.3)
Với:
lại = 3JS fej 9 POM! BA)
20
Trang 29lúa: = D720 fjp 02000997 (3.5)
Biểu diễn đại số của Mặc dù chúng ta viết dưới dạng một đa thức trongR,, thực ra nó không có ý nghĩa đại số theo cách đó Cách biểu diễn tự nhiên củaNTT(f) = f là dưới dang 128 đa thức bậc 1 như ở phương trình (3.2) và sử dungcác định nghĩa cho Ê ở phương trình (3.4) và (3.5) thì ta có:
NTTỢ) = Ệ = (Ñ + ñX.ƒ› + feX, fase + Í2ssX)( 6)
Dé tính ƒ g ta có thé sử dụng NTT và NTT~! dé nhân thi với việc có thé tínhtích của hai phần tử ƒ và g trong R, một cách hiệu qua băng cách sử dụng phépbiến đổi NTT và phép biến đổi ngược của nó như sau: NTT~1(NTT(f) s NTT(g))với NTT(f) s NTT(g) = Ệsậ=ñ Khi nhân các kết quả của NTT, ta thực hiện
128 phép nhân của các đa thức bac 1 và sau đó áp dụng phép biến đổi ngược dé có
kêt quả cuôi cùng.
hại + Rạ¡L\+X = (fai + lúa X)ai + Goin X) mod X* — g2°770)11(3,7)
Khi áp dung NTT hoặc NTT? lên các vector hoặc ma trận, chúng ta thực hiệnphép biến đổi trên từng phần tử một cách riêng lẻ Khi nhân các ma trận hoặc
vector, chúng ta thực hiện phép nhân thông thường nhưng sử dụng phép nhân cơ bản đã định nghĩa.
3.2.2 Kyber.CCAKEM
Algorithm 7 KyBER.CCAKEM.KeyGen()
Output: Public key pk € B!2*'^/3132
Output: Secret key sk € B24*7/8+96
Kyber.CCAKEM, cơ chế đóng gói khóa (Key Encapsulation
Mechanism-KEM) bảo mật IND-CCA2 (Indistinguishability under Chosen Ciphertext Attack)
21
Trang 30từ cơ chế mã hóa khóa công khai bảo mật IND-CPA(Indistinguishability under
Chosen Plaintext Attack).
Hình 3.10 trình bay thuật toán Kyber.CCAKEM.KeyGen0) trong đó thuật toán
Kyber.CPAPKE.KeyGenQ được gọi lại có chức năng tạo khóa sẽ tạo ra một cặp
khóa bao gồm khóa công khai (pk) và khóa bí mật (sk) Quá trình này bat đầu bangviệc tao ra ma trận A trực tiếp trong miền NTT thông qua lấy mẫu thống nhất
(Uniform Sampling-Parse).
Tiép theo, cac vecto s va e duoc tao ra bang cach lay mau theo phan phối nhị
thức Vector s và e sau khi được tạo ra sẽ được đưa vào miền NTT, trong đó vector
s sau khi vào miền NTT sẽ là khóa bí mật (sk) Sau đó, việc tạo ra khóa công khai
(pk) sẽ thông qua việc tính đa thức Ê ghép với chuỗi bit được tạo ngẫu nhiên p với
È=Â-§+ ê, các kí hiệu có mũ trên đầu được hiểu là đang biểu diễn trong miềnNTT, cuối cùng pk sẽ bằng Ê ghép với ø
Algorithm 8 KyBER.CCAKEM.Enc(pk)
Input: Public key pk ¢ B12 *"/8+82
Output: Ciphertext ¢ € Ba! "/Stdv-n/8
Output: Shared key K € B*
Cuối cùng, sau khi sử dụng thuật toán Kyber.CCAKEM.KeyGenQ thì khóacông khai (pk) cuối cùng mà thu được sẽ là khóa công khai (pk) được tao ra từ
22
Trang 31thuật toán Kyber.CPAPKE.KeyGenQ còn khóa bí mật sẽ được ghép từ khóa bí mật (sk) tạo ra từ thuật toán Kyber.CPAPKE.KeyGenQ ghép với khóa công khai (pk)
cùng với kết quả của H(pk) cuối cùng là z, với z trong thuật toán sẽ được tạo ra
ngau nhiên.
Hình 3.11 trình bày thuật toán Kyber.CCAKEM.Enc(pk), đây là quá trình mã
hóa trong Kyber sử dụng khóa công khai (pk) để tạo ra bản mã (ciphertext) vakhóa chia sẻ (shared key) Đầu vào của quá trình này là khóa công khai (pk), vàđầu ra là bản mã c cùng với khóa chia sẻ K Quá trình bắt đầu bang việc tạo một
chuỗi ngẫu nhiên văn bản ngẫu nhiên mm, sau đó tính giá trị băm của m.
Algorithm 9 KyBER.CCAKEM.Dec(c, sk)
Input: Ciphertext ¢ € Blk n/8+4du-n/8
Input: Secret key sk € B24!"/5+96
Output: Shared key € B*
Tiép theo, két qua cua H(pk) sẽ được đưa vào ham bam G với m dé tạo ra K
và r cho quá trình mã quá thông qua việc gọi là thuật toán
Kyber.CPAPKE.Enc(0k,m,r) với kết quả cuối cùng là bản mã c Cuối cùng, khóachia sẻ K được tính từ kết quả của hàm băm H với đầu vào là c và K thông qua hàm
băm KDF tương ứng với ham băm SHAKE256 Trong quá trình mã hóa với thuật
toán Kyber.CPAPKE.Enc(pk,m,r), ma trận A’ được tạo trong miền NTT bằngcách lây mẫu thống nhất, và các vectơ r, €; Va e› được tạo ra Sau đó, vector r va
e, sẽ được đưa vào miền NTT dé tính vecto u và ø với w = NTT~1(ẤT : #) +e, và
v = NTT"1(ÊT - ?) + e¿ + Decompress„(Decode;(m), 1) Các vectơ u và v sau
23
Trang 32đó được nén và mã hóa dé tạo ra c¡ và cz , ở đây c, và cp sau khi ghép lại sẽ thu
được bản mã ciphertext (c) với cy = Encodeg,(C ompress,(u, du)) va Co =
Encodeg,(Compress,(v, dv)).
Hình 3.12 Mô ta chi tiết thuật toán giải mã trong Kyber với thuật toán
Kyber.CCAKEM.Dec(c, sk) Thuật toán Kyber.CCAKEM.DecQ thực hiện quá trình giải mã và chia sẻ khóa dựa trên bản mã (c) và khóa bí mật (sk) Quy trình
giải mã này bao gồm nhiều bước chỉ tiết như sau Với đầu vào là bản mã c và kháo
bí mật (sk), Kyber sẽ trích xuất các thành phan từ khóa bí mật (sk) dé thu được
khóa công khai (pk), h và z Tiếp theo Kyber sẽ thực hiện quá trình giải mã thông
qua thuật toán Kyber.CPAPKE.Dec(s, (u,v)) ở bước này Kyber sử dụng khóa bi
mật (s) đã được lược bỏ thành phần khóa công khai (pk), h và z và bản mã c =(u,v) dé khôi phục thông điệp m’ Sau khi có được thông điệp m’ thì Kyber sẽ thựchiện lại quá trình mã hóa m’ dé thu về bản c' điều này là để xác minh rằng sau khi
mã hóa thì thông điệp m’ thu được là chính xác, quy trình mã hóa đã được trình bày
ở trên.
Quy trình chỉ tiết của quá trình giải mã gồm các bước như sau Đầu tiên,
Kyber sẽ giải nén các thành phan từ ban mã (c) dé thu về vector và ø, đối với u
thi sẽ giải nén và giải mã thành phần c, để thu được u=Decompress, (Decode, (c,), du) Phan còn lại của c là cy sẽ được giải nén và giải
ma để thu được vector v với cách tính như sau v=Decompressạ(Decode„(c;), du) Sau đó, sẽ giải mã khóa bí mật (s) va kết quảđược gán vào vector với § = Decode,,(s) Bước cuối cùng là tính m’ với m' =Encode,(Compress,(v — NTT~1(§T - NTT(u)), 1)), và trả về giá trim’
24
Trang 33Chương 4 THIẾT KE PHAN CỨNG
4.1 Kiến trúc tổng quan của phần cứng CRYSTALS-Kyber
Decode, Encode, | Pointwise Multiply Accumulate
Decode,2 Encode.
Decode i, Encode
Sampling Unit | |JUt}o -Í_- _- Pointwise
Unified NTT/INTT First Stage
Pointwise Multiply 0 Multiply 1
ee Simple Dual Unified ;
a eee ` Port RAM Add/Sub
Single Port RAM 2 fT ee nHGBEGGGGSGSOSSGEUW !
ram } | Decompressq, có] | Compressqu | h
Single Port RAM 3 1 h
i ' '
XU Leni aa ' ' 1 q
; i ẳ " ' Decompress Compress
-=—==n=—=S———=——~ == E==—=h=r-—=-=—=—=—~- -1-—~- -4- [_]medute for each separate mode
seed pko sko mi pki cto ss cti pki mo verify
Hình 4.1: Kiến trúc tổng quan của phan cứng CRYSTALS-Kyber
Hình 4.1 trình bày kiến trúc tổng quan của phần cứng CRYSTALS-Kyber vớiController sẽ đảm nhận việc điều khiển các đường dữ liệu theo các chế độ mà ngườidùng cấu hình Dé phần cứng Kyber hỗ trợ cả ba chế độ tạo khóa, mã hóa và giải
mã với kích thước nhỏ gọn và hiệu suất cao, có hai ý tưởng chính được đề xuất Đầu
tiên, các khôi chức năng con được sử dung trong cả ba chê độ chia sẻ tai nguyên dé
25
Trang 34giảm diện tích, chang hạn như Decode, Sampling Unit, Hash-Core, Compress,
Unified NTT/INTT, Memory Bank, Unified Add/Sub mod q, Pointwise Multiply
Accumulate (PWMA) được điều khiển bởi khối dé phù hợp với trình tự tính toáncủa từng chế độ Thứ hai, các khối chức năng con được cân bằng critical path tươngđương với một nửa phép nhân 12 bit có không dấu trong Unified NTT/INTT vàPWM, cho phép các khối sử dụng các phép toán logic, chang hạn như Hash-Core,Sampling Unit và Decode, thực hiện nhiều toán tử trong một chu kỳ để cải thiện
thông lượng.
4.2 Thiết kế Hash-Core dựa trên SHA3
Thuật toán CRYSTALS-Kyber áp dụng một số hàm băm quan trọng trong quátrình tạo khóa, mã hóa và giải mã Hash-Core đóng vai trò chủ chốt trong việc tạo ra
các mẫu phân phối ngẫu nhiên cho các khối chức năng lấy mẫu như Sampling Unit
Điều này khiến Hash-Core có thé trở thành nút cổ chai tính toán tiềm năng trongtoàn bộ thiết kế Các hàm băm được sử dụng bao gồm SHAKEI28, SHAKE256,SHA3-256 và SHA3-512, tat cả đều tuân theo tiêu chuẩn FIPS-202 [3] [4] [5] Dovậy, việc đảm bảo thông lượng của Hash-Core phù hợp với các khối tính toán khác
Hình 4.2: (a) Kiến trúc phần cứng Hash-Core với (b) phần cứng Keccak
Điểm chung của các hàm băm này là đều được triển khai dựa trên thuật toán
Keccak [4], với sự khác biệt nam ở phân rate r và phân hậu tô sau mỗi đâu vào đê
26
Trang 35phân tách miền Điều này cho phép tái sử dung phan cứng Keccak dé thực hiện cáchàm băm cần thiết trong quá trình thực thi thuật toán CRYSTALS-Kyber Trongthiết kế Hash-Core, phần cứng Keccak được tham khảo từ [4] và tinh chỉnh dé phùhop với yêu cầu của thiết kế Phần cứng Keccak cần 24 chu kỳ clock dé thực hiệnmột lần hoán vị, tương ứng với 24 vòng Phần cứng Keccak được mô tả khái quát
trong Hình 4.2.
Trong thiết kế này, một lõi Keccak được triển khai tuần tự để phục vụ cho cácchức năng SHA-3 khác nhau Lõi Keccak này yêu cầu một lượng tài nguyên phầncứng đáng kể, chiếm tới 54,2% tổng số LUT trong thiết kế Kyber [6] Đây là một
con số khá lớn, và việc tối ưu hóa sử dụng tài nguyên phan cứng cho lõi Keccak là
một thách thức cần được giải quyết
Bằng cách tinh chỉnh và tối ưu hóa lõi Keccak, chúng ta có thể cải thiện hiệu
suất tổng thé của phan cứng CRYSTALS-Kyber Điều này không chỉ giúp giảmthiêu nút cổ chai tính toán mà còn đảm bảo tính hiệu quả và khả năng mở rộng của
hệ thống mã hóa Việc xem xét can thận các yếu tố như phân bồ tài nguyên và thônglượng giữa các khối chức năng là cần thiết dé đạt được hiệu suất tối ưu trong các
từ FIFO sẽ lưu vào Buffer Input dé padding hoặc thêm các bit 0 vào dé đủ 1344 bit
vì phần cứng Keccak nhận chuỗi bit đầu vào tối đa 1344 bit Dữ liệu đi ra từ Buffer
Input sẽ được đưa vào phần cứng Keccak để hoán vị Sau 24 chu kỳ phần cứng
Keccak sẽ đưa 1344-bit đầu ra là kết quả vào Buffer Output dé đưa từng khối 32-bitmột ra ngoài cho các khối khác dùng bởi vì phần cứng tổng Kyber sẽ có đường dữ
27