Tải bản đầy đủ (.pdf) (74 trang)

thiết kế bộ tăng tốc ntt cho mã hóa sau lượng tử crystals kyber

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.63 MB, 74 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

ĐẠI HỌC QUỐC GIA TP. HCM

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA </b>

---

<b>NGUYỄN HỮU TOÀN </b>

<b>THIẾT KẾ BỘ TĂNG TỐC NTT CHO MÃ HOÁ SAU LƯỢNG TỬ CRYSTALS-KYBER </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA –ĐHQG -HCM Cán bộ hướng dẫn khoa học: TS. Trần Hoàng Linh

Cán bộ chấm nhận xét 1: TS. Nguyễn Minh Sơn Cán bộ chấm nhận xét 2: TS. Bùi Trọng Tú

Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp. HCM ngày 12 tháng 01 năm 2024

Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: 1. PGS. TS. Hoàng Trang ... - Chủ tịch 2. TS. Nguyễn Lý Thiên Trường ... - Thư ký 3. TS. Nguyễn Minh Sơn ... - Phản biện 1 4. TS. Bùi Trọng Tú ... - Phản biện 2 5. PGS. TS. Trương Quang Vinh ... - Uỷ viên

Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có).

<b>ĐIỆN – ĐIỆN TỬ </b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b> </b>

<b>NHIỆM VỤ LUẬN VĂN THẠC SĨ </b>

Họ tên học viên: Nguyễn Hữu Toàn ... MSHV: 2070624 Ngày, tháng, năm sinh: 26/08/1998 ... Nơi sinh: An Giang Chuyên ngành: Kỹ thuật điện tử ... Mã số: 8520203

<b>I. TÊN ĐỀ TÀI </b>

Thiết kế bộ tăng tốc NTT cho mã hoá sau lượng tử CRYSTALS-Kyber

<i>Design of NTT accelerator for Post-Quantum Cryptography CRYSTALS-Kyber </i>

<b>II. NHIỆM VỤ VÀ NỘI DUNG: </b>

Kiểm tra hiệu năng của mã nguồn CRYSTALS-Kyber bằng phần mềm trên vi xử lý nhúng ARM-Cortex A9 của vi xử lý Cyclone V. Thiết kế bộ tăng tốc NTT cho mã hoá sau lượng tử CRYSTALS-Kyber trên nền tảng FPGA sử dụng ngôn ngữ mô tả phần cứng Verilog. Từ các kết quả thu được, đánh giá và bàn luận cũng như đưa ra hướng phát triển nghiên cứu trong tương lai.

<b>III. NGÀY GIAO NHIỆM VỤ : 05/09/2022</b>

<b>TRƯỞNG KHOA ĐIỆN – ĐIỆN TỬ </b>

<small>ĐẠI HỌC QUỐC GIA TP.HCM </small>

<b><small>TRƯỜNG ĐẠI HỌC BÁCH KHOA</small></b>

<b><small>CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc</small></b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<i><b>LỜI CÁM ƠN </b></i>

<i>Để hoàn thành luận văn không thể không kể đến sự giúp đỡ của q thầy cơ, gia đình, bạn bè và đồng nghiệp. Học viên xin chân thành cảm ơn vì sự động viên, tạo mọi điều kiện để em có thể hoàn thành luận văn đúng hạn. </i>

<i>Đặc biệt, học viên xin cảm ơn chân thành nhất đến thầy Trần Hồng Linh. Thầy đã hết lịng giúp đỡ và tạo mọi điều kiện tốt nhất cho học viên trong suốt quá trình thực hiện luận văn. Cảm ơn thầy đã định hướng, góp ý và hướng dẫn em để em có thể hồn thành luận văn một cách tốt nhất. </i>

<i>Xin cảm ơn anh Nguyễn Tuấn Hùng, anh Trịnh Vũ Đăng Nguyên đã giúp đỡ em những kiến thức về FPGA trong suốt quá trình thực hiện luận văn. </i>

<i>Bên cạnh đó em cũng muốn gửi lời cảm ơn đến q thầy cơ trong Khoa Điện – Điện tử nói chung và Bộ mơn Kỹ thuật Điện tử nói riêng. Cảm ơn quý thầy cô đã chỉ bảo em những kiến thức góp phần tạo nên thành quả của ngày hơm nay. </i>

<i>Tp. Hồ Chí Minh ngày 24 tháng 12 năm 2023 Học viên </i>

<i>Nguyễn Hữu Toàn </i>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<i><b>TÓM TẮT LUẬN VĂN THẠC SĨ </b></i>

Năm 2022, Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (National Institute of Standards and Technology – NIST) đã lựa chọn ra được các thuật toán để chuẩn hố sau vịng 3 của q trình tiêu chuẩn hố mật mã sau lượng tử (Post-Quantum Cryptography – PQC). Cùng với 3 thuật toán chữ ký số (Digital Signature Algorithms) được lựa chọn, CRYSTALS-KYBER là thuật toán duy nhất được lựa chọn cho Mã hoá Khố Cơng Khai (Public-key Encryption) và Thiết lập khố (Key Establishment). Kyber thuộc họ các thuật toán dựa trên mạng lưới (lattice-base), nơi mà sự an toàn dựa trên khả năng giải quyết các vấn đề lưới mật mã. Do đó, CRYSTALS-KYBER đặt nặng yêu cầu xử lý vào NTT và INTT để nhân đa thức. Luận văn này trình bày việc chỉnh sửa mã nguồn tham chiếu được cơng bố bởi nhóm nghiên cứu Kyber để có thể chạy và kiểm thử mã nguồn tham chiếu Kyber trên SoCFPGA Linux để có cái nhìn sơ bộ về tốc độ của thuật tốn. Từ đó, luận văn trình bày một thiết kế bộ tăng tốc phần cứng hiệu quả cho NTT/INTT trên FPGA. Luận văn thực hiện trên phần cứng DE-10 Standard với bộ xử lý Intel (Altera) Cyclone V với Quartus.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<i><b>ABSTRACT </b></i>

In 2022, the National Institute of Standards and Technology (NIST) of the United States selected the algorithms to standardize after round 3 of the post-quantum cryptography (PQC) standardization process. Along with the 3 digital signature algorithms selected, CRYSTALS-KYBER is the only algorithm selected for public-key encryption and key establishment. Kyber belongs to the family of lattice-based algorithms, where security is based on the ability to solve lattice problems. Therefore, CRYSTALS-KYBER places heavy processing requirements on NTT and INTT for polynomial multiplication. This thesis presents the modification of the reference source code published by the Kyber research group to be able to run and test the Kyber reference source code on SoCFPGA Linux, thereby having a preliminary view of the speed of the algorithm. Next, the thesis also presents an efficient hardware accelerator design for NTT/INTT on FPGA. From this hardware, build a design to be able to access and control the NTT/INTT computing block on the hardware to verify the feasibility of the idea of reducing software computation by hardware computing block. The thesis is implemented on the DE-10 Standard hardware with the Intel (Altera) Cyclone V processor with Quartus.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<i><b>LỜI CAM ĐOAN </b></i>

<i>Học viên cam đoan rằng, ngoại trừ các kết quả tham khảo từ các công trình khác đã trích dẫn và nêu rõ trong luận văn này, các cơng việc nghiên cứu và trình bày trong luận văn này là do chính học viên thực hiện. </i>

<i>Học viên </i>

<i>Nguyễn Hữu Toàn</i>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<i><b>MỤC LỤC </b></i>

<i><b>1 MỞ ĐẦU ... 1 </b></i>

<b>1.1 Lý do chọn đề tài ... 2 </b>

<b>1.2 Mục đích ... 4 </b>

<b>1.3 Đối tượng và phạm vi nghiên cứu ... 5 </b>

1.3.1 Đối tượng nghiên cứu ... 5

<i><b>3 NHỮNG NGHIÊN CỨU LÝ THUYẾT ... 10 </b></i>

<b>3.1 Sơ bộ về mã hoá, mã hoá đối xứng và mã hoá bất đối xứng ... 11 </b>

<b>3.2 Lý thuyết về CRYSTALS-Kyber ... 13 </b>

<b>3.3 Number-Theoretic Transform (NTT) ... 17 </b>

<b>3.4 Bộ cộng Brent-Kung (Brent-Kung Adder) ... 19 </b>

<b>3.5 Rút gọn Barrett ... 20 </b>

<b>3.6 Phép nhân module Montgomery ... 20 </b>

<i><b>4 TRIỂN KHAI CRYSTALS-KYBER TRÊN ARM ... 21 </b></i>

<b>4.1 Intel (Altera) Cyclone V và HPS trên Cyclone V ... 22 </b>

<b>4.2 Core Concepts và Boot Flow ... 23 </b>

<b>4.3 Mã nguồn CRYSTALS-Kyber ... 24 </b>

<b>4.4 Từ kiến trúc X86 đến ARM ... 24 </b>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>4.5 Cycle Count Register (PMCCNTR) ... 25 </b>

<b>4.6 Kết quả thực thi phần mềm trên HPS ... 27 </b>

<i><b>5 THIẾT KẾ PHẦN CỨNG HIỆU QUẢ CHO NTT VÀ INTT THEO THAM SỐ KYBER ... 28 </b></i>

5.1.1 Vị trí của dữ liệu được lưu trong RAM ... 31

5.1.2 Bộ tạo địa chỉ (Address Generator) ... 31

5.1.3 Giá trị twiddle factor ... 32

5.1.4 Thiết kế phần cứng của BU ... 32

5.1.5 Bộ cộng Brent-Kung 16 bit ... 34

5.1.6 Rút gọn Barrett với tham số Kyber ... 36

5.1.7 Rút gọn Montgomery trong Kyber ... 36

5.1.8 RAM và ROM ... 37

<b>5.2 Kết quả tổng hợp và mô phỏng ... 37 </b>

5.2.1 Kết quả tổng hợp mạch trên Vivado (Xilinx Artix-7 XC7A200T) ... 37

5.2.2 Kết quả tổng hợp mạch trên Quartus (Cyclone V) ... 39

5.2.3 Kết quả mô phỏng QuestaIntel ... 40

5.2.4 Kết quả từ phần mềm Kyber ... 41

<b>5.3 Đánh giá và bàn luận kết quả ... 44 </b>

<i><b>6 KẾT LUẬN VÀ KIẾN NGHỊ NHỮNG NGHIÊN CỨU TIẾP THEO ... 46 </b></i>

<b>6.1 Kết luận ... 47 </b>

<b>6.2 Kiến nghị những nghiên cứu tiếp theo ... 47 </b>

<i><b>7 DANH MỤC CÁC CƠNG TRÌNH KHOA HỌC ... 49 </b></i>

<i><b>8 TÀI LIỆU THAM KHẢO ... 50 </b></i>

<i><b>9 PHỤ LỤC ... 54 </b></i>

<b>9.1 Kernel ... 54 </b>

9.1.1 Kernel module cho pmccntr: ... 54

9.1.2 Xây dựng lại kernel và kernel module: ... 55

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>9.2 Các tiền xử lý cho NTT ... 58 </b>

9.2.1 Bảng dữ liệu twiddle factor ... 58

9.2.2 Bảng map vị trí dữ liệu 16 – 32 bit: ... 59

<b>9.3 Sơ đồ Netlist Viewer ... 61</b>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<i><b>DANH SÁCH HÌNH MINH HOẠ </b></i>

Hình 3.1 Mã hố đối xứng ... 12

Hình 3.2 Mã hố bất đối xứng ... 13

Hình 3.3 Q trình tạo khố của CRYSTALS-Kyber ... 14

Hình 3.4 Quá trình encryption/decryption của kyber ... 14

Hình 3.5 Hai Butterfly Unit với thuật toán giảm độ phức tạp. ... 18

Hình 3.6 NTT/INTT với n=8 ... 18

Hình 3.7 Cấu trúc hình cây của bộ cộng Brent-Kung ... 19

Hình 4.1 Sơ đồ khối đơn giản của Cyclone V ... 22

Hình 4.2 Altera (Intel) SoC boot flow ... 23

Hình 5.1 Block diagram cho thiết kế phần cứng bộ tăng tốc NTT ... 30

Hình 5.2 Sơ đồ máy trạng thái của bộ tăng tốc NTT ... 30

Hình 5.3 Sơ đồ khối của Butterfly Unit ... 33

Hình 5.4 Sơ đồ ngõ vào/ra của BU ... 33

Hình 5.5 Bộ cộng Brent-Kung 16 bit ... 34

Hình 5.6 Gray cell ... 34

Hình 5.7 Black cell ... 35

Hình 5.8 Bộ đệm ... 35

Hình 5.9 Kết quả tổng hợp tốc độ mạch trên Xilinx Artix-7 ... 37

Hình 5.10 Tài nguyên tiêu thụ trên Xilinx Artix-7 ... 38

Hình 5.11 Kết quả tổng hợp trên Cyclone V ... 39

Hình 5.12 Tần số mạch tổng hợp trên Cyclone V ... 39

Hình 5.13 Kết quả mơ phỏng dạng sóng ngõ ra đầu của phép tính NTT ... 40

Hình 5.14 Kết quả mơ phỏng dạng sóng ngõ ra cuối của phép tính NTT ... 40

Hình 5.15 Kết quả mơ phỏng dạng sóng ngõ ra đầu của phép tính INTT ... 40

Hình 5.16 Kết quả mơ phỏng dạng sóng ngõ ra cuối của phép tính INTT ... 41

Hình 9.1 Giao diện cửa sổ cấu hình kernel ... 56

Hình 9.2 Netlist Viewer trên Quartus ... 61

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<i><b>DANH SÁCH BẢNG SỐ LIỆU </b></i>

Bảng 3.1 Thông số của các phiên bản Kyber ... 15

Bảng 4.1 Kết quả hiệu năng trên phần mềm ... 27

Bảng 5.1 Bảng mô tả chức năng chân khối phần cứng BU xử lý CT/GS ... 33

Bảng 5.2 Thiết kế đề xuất so với cái nghiên cứu NTT tương tự trước đây ... 44

Bảng 9.1 Bảng 128 giá trị Twiddle Factor ... 58

Bảng 9.2 Bảng map vị trí dữ liệu 16 - 32 bit ... 59

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>1 MỞ ĐẦU </b>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>1.1 Lý do chọn đề tài </b>

Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (National Institute of Standards and Technology – NIST) đã trình bày dự thảo tiêu chuẩn chuẩn hố của Cơ chế mã hoá Khoá dựa trên lưới module (Module-Lattice-Based Key-Encapsulation Mechanism – MLBKEM), chọn CRYSTALS-Kyber là mã hoá cơ sở. Việc triển khai phần cứng hiện tại của mật mã hiện đại sẽ cần xử lý tiêu chuẩn mới này một cách có hiệu quả.

Việc chuẩn hố của NIST được giải thích là để tìm ra một loại mã hố mới an tồn trước sự phát triển của máy tính lượng tử trong tương lai. Điều này có nghĩa là các loại mã bất đối xứng hiện đại (ECDSA, RSA, …) hiện đang sử dụng rộng rãi trong việc mã hố thơng tin sẽ khơng cịn an tồn nếu bị tấn cơng bởi máy tính lượng tử. Vì vậy nhu cầu phát triển chuẩn mã hoá để sử dụng cho thời kỳ hậu lượng tử là cấp thiết để giảm rủi ro và tăng cường bảo mật trong truyền thơng thơng tin.

Mục tiêu của chuẩn hố bao gồm việc đảm bảo tính an tồn, hiệu quả và tương thích giữa các hệ thống khác nhau. Việc này hỗ trợ sự đồng nhất trong cộng đồng quốc tế, giúp các quốc gia và tổ chức thảo luận và triển khai các giải pháp mã hoá lượng tử một cách có trách nhiệm và chuẩn mực.

Vượt qua nhiều ứng cử viên và nhiều vịng của quy trình chuẩn hoá, CRYSTALS-Kyber là thuật toán duy nhất được lựa chọn cho Mã hố Khố Cơng Khai (Public-key Encryption) và Thiết lập khoá (Key Establishment) cho tiêu chuẩn mã hố sau lượng tử năm 2022. Kyber địi hỏi nỗ lực tính tốn nghiêm túc, chủ yếu là phép nhân đa thức trên một vành đa thức giới hạn. Mã hố dựa trên mạng mơ-đun (module lattice) mang lại cân bằng tốt giữa hiệu năng và bảo mật. Tuy nhiên q trình tạo khố, mã hố và giải mã khố có thể chiếm một tỷ lệ lớn trong khả năng tính tốn và chu kì clock của bộ vi xử lý.

Nhiều nghiên cứu đã triển khai mã hoá lattice-based bằng phần mềm để chứng minh tính khả thi cho nghiên cứu của họ cũng như một phần thể hiện tốc độ tính tốn của giải thuật đề xuất. Tuy nhiên, khi một thuật toán mã hoá đã được chuẩn hoá, để

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

tối ưu tối đa tốc độ tính tốn và phân bổ tài ngun cho hợp lý thì các thuật tốn mã hố này thường được triển khai trên các phần cứng chuyên biệt đảm nhiệm cơng việc tính tốn. Nhiều nghiên cứu về mã hoá lượng tử gần đây cũng chọn ASIC, FPGA dưới dạng độc lập hoặc làm các nhân tính tốn phụ đảm nhận việc tính tốn cho các giải thuật đặc biệt cho các kiến trúc CPU như RISC-V, ARM, x86_64,… mà trong đó, FPGA là một nền tảng được sử dụng rất nhiều trong các nghiên cứu và đánh giá sức mạnh giải thuật cũng như ứng dụng tăng tốc bằng phần cứng.

Intel (Altera) và AMD (Xilinx) là những nhà sản xuất hang đầu trong lĩnh vực FPGA với các công cụ phát triển như Quartus hay Vivado cho phép người thiết có được những thiết kế mạch kỹ thuật số chính xác và có phần lớn quyền quyết định với các kết quả thiết kế của mình.

Với những lý do kể trên, đây là tổng quan về các lý do để học viên chọn “Thiết kế bộ tăng tốc NTT cho mã hoá sau lượng tử CRYSTALS-Kyber” làm đề tài nghiên cứu cho luận văn của mình.

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>1.2 Mục đích </b>

Với việc Kyber được chọn để chuẩn hoá vào năm 2022 cho thấy tiềm năng ứng dụng rộng rãi của Kyber nói chung và mã hố sau lượng tử nói riêng vào lĩnh vực bảo mật thông tin. Các thiết kế và tiêu chuẩn cho mã hoá lượng tử sẽ ngày càng được mở rộng nghiên cứu và cải tiến liên tụ về các thơng số thiết kế nhằm hồn thiện về khả năng bảo mật và hiệu năng của mã hố lượng tử. Vì vậy, mục đích nghiên cứu của đề tài này nhằm kiểm chứng khả năng tương thích của CRYSTALS-Kyber khi chạy trên phần cứng Arm, từ đó cho thấy sự cần thiết của phần cứng hoá những phép toán này khi triển khai ứng dụng của máy tính nhúng năng lượng thấp. Cuối cùng như xây dựng được phần cứng xử lý NTT và INTT trên nền tảng FPGA, qua đó đánh giá và bàn luận các kết quả cũng như hướng phát triển cho đề tài nói chung và phần cứng hố các họ mã hố sau lượng tử nói riêng.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>1.3 Đối tượng và phạm vi nghiên cứu </b>

1.3.1 Đối tượng nghiên cứu

Đối tượng nghiên cứu của đề tài là phần mềm tham chiếu mã hoá lượng tử CRYSTALS-Kyber cùng với phần cứng xử lý NTT và INTT cho Kyber trên nền tảng FPGA. Phần mềm tham chiếu Kyber được viết bằng ngơn ngữ lập trình C, phần cứng NTT được viết bằng ngôn ngữ phần cứng Verilog và kiểm tra đánh giá trên nền tảng FPGA. Phiên bản Kyber được chọn cho đánh giá hiệu năng phần mềm là Kyber512.

1.3.2 Phạm vi nghiên cứu

Phạm vi nghiên cứu của luận văn là mã nguồn phần mềm CRYSTALS-Kyber trên vi xử lý ARM Cortex-A9 và thuật tốn NTT/INTT trên phần cứng theo thơng số của mã hoá lượng tử CRYSTALS-Kyber. Tập trung chủ yếu vào nghiên cứu cách ứng dụng để phần cứng hoá thuật toán NTT/INTT mà mã nguồn phần mềm sử dụng trên phần cứng. Phần cứng thiết kế dựa trên ngôn ngữ FPGA, phần mềm chạy trên ARM Cortex-A9 của Intel (Altera) Cyclone V, tổng hợp phần cứng trên Cyclone V (Quartus) và Xilinx Artix-7 (Vivado).

1.3.3 Ý nghĩa khoa học

Đề tài đóng góp ý nghĩa khoa học trong việc nghiên cứu cách ứng dụng của mã hoá lượng tử CRYSTALS-Kyber trong q trình chuẩn hố. Ngồi ra, cũng đóng góp phương pháp ứng dụng phần cứng trong việc tăng tốc tính tốn cho mật mã lượng tử CRYSTALS-Kyber đã được chọn chuẩn hoá năm 2022.

1.3.4 Ý nghĩa thực tiễn

Đánh giá tính khả thi của phần mềm tham chiếu trên phần cứng ARM tạo tiền đề cho việc ứng dụng của mã hoá lượng tử CRYTALS-Kyber trên thiết bị điện tử sau này. Ứng dụng việc giảm tải các quy trình tính tốn phức tạp của phần mềm bằng bộ tăng tốc tính tốn phần cứng NTT cho Kyber có thể áp dụng rộng rãi dưới nhiều hình thức như tích hợp phần cứng tính tốn chun biệt thành một phần của vi xử lý hoặc tách ra đảm nhiệm như một vi xử lý phụ độc lập đảm nhiệm việc tính tốn chun biệt.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>2 TỔNG QUAN </b>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>2.1 Tình hình nghiên cứu trong và ngồi nước </b>

Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (National Institute of Standards and Technology – NIST) đã trình bày dự thảo tiêu chuẩn chuẩn hố của Cơ chế mã hoá Khoá dựa trên lưới module (Module-Lattice-Based Key-Encapsulation Mechanism – MLBKEM) trong Tiêu chuẩn xử lý thông tin Liên Bang (Federal Information Processing Standards - FIPS) 203[1]. Tiêu chuẩn quy định cơ một cơ chế đóng gói khố (Key-Encapsulation Mechanism – KEM) sử sụng phương pháp module lưới (Module Lattice) gọi là ML-KEM, dựa trên thông số kỹ thuật của CRYSTALS-Kyber. CRYSTALS-Kyber hay Kyber là một cơ chế đóng gói khố module dựa trên lưới, u cầu việc nhân các đa thức trên một vòng đa thức[2].

Rào cản chính trong hầu hết các triển khai của CRYSTALS-Kyber hiện tại là phương pháp nhân nhanh sử dụng Biến đổi số lý thuyết (Number Theoretic Transform – NTT). Triển khai của Kyber trên phần mềm cần lặp lại nhiều lần các biến đổi NTT thuận và nghịch (Inverse NTT – INTT) làm cho nó trở thành phần tốn thời gian nhất trong tính tốn của Kyber [3]. Khơng giống như cơ chế mã hoá đường cong Elliptic (Elliptic Curve Cryptography – ECC) hay Rivest-Shamir-Adleman (RSA), các phương pháp tính tốn chủ yếu theo tuyến tính, NTT có thể thực hiện song song hố trong việc tính tốn để có thể tăng thông lượng (throughput).

Các thiết kế phần cứng hiện tại của Kyber và các giải thuật mã hoá sau tượng tử (Post Quantum Cryptography – PQC) dựa trên lưới tương tự cố gắng cải thiện thuật toán bằng nhiều phương pháp. Hai phương pháp chính để cải thiện hiệu suất NTT là cải tiến cấu trúc Butterfly Unit (BU) và giao tiếp giữa các giai đoạn của NTT, bao gồm việc lấy dữ liệu từ bộ nhớ và sắp xếp chúng theo thứ tự cho các giai đoạn NTT tiếp theo. Zhang và cộng sự [3] hợp nhất quá trình tiền xử lý của NTT và sau xử lý của INTT với một BU tối ưu hoá cho các phép toán modular trên ước lượng mới số nguyên tố q (NEWHOPE prime q). Cơng trình [4] sử dụng phương pháp tương tự cho NTT và INTT với một thuật toán modular được điều chỉnh cho số nguyên tố Kyber được gọi là Exact KRED và một cấu hình BU 2x2 và độ phức tạp thấp. Ye và cộng sự [5] cải thiện nghiên cứu của Zhang và cộng sự, đã cố định thuật toán giảm

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

số dư modulo (modular reduction) vào ước lượng mới số nguyên tố q. Họ cũng giới thiệu một cấu trúc pipeline hồn chỉnh giữa các giai đoạn của NTT và tính toán với lõi NTT. Cấu trúc BP-NTT[6] sử dụng SRAM (Static Random Access Memory) và nhân modulo bit song song để cải thiện quá trình NTT của họ. Rút gọn Barret là một thuật toán modulo phổ biến để tối ưu hoá BU [7]. Fritzman và cộng sự [8] đã thảo luận về các cuộc tấn công kênh phụ khả năng có thể xảy ra trên phần cứng NTT và đề xuất một thiết kế tiết kiệm năng lượng với một bộ nhớ RAM đơn cổng (single-port RAM). Để tăng cường thông lượng dữ liệu, một kế hoạch truy cập bộ nhớ ping-pong được đề xuất trong [9].

Giải thuật tăng tốc bằng phần cứng có nhiều ứng dụng và áp dụng trên các nền tảng khác nhau như Xilinx FPGA (Xilinx Field Programmable Gate Array) và vi mạch tích hợp ứng dụng - ASIC (Application Specific Integrated Circuit) [10-13]. Paludo và cộng sự [14] đã tích hợp BU vào một hệ thống RISC-V 5 tầng pipeline sẵn sàng hoạt động với linux. Họ đánh giá hiệu suất trên cả FPGA và 28nm ASIC. CoHA-NTT là kiến trúc nhân đa thức dựa trên NTT đầu tiên với khả năng cấu hình lại trong thời gian chạy và thời gian biên dịch [15]. Geelen và cộng sự [16] giới thiệu một phần mở rộng kiến trúc tập lệnh (Instruction Set Architecture – ISA) mới vào kiến trúc RISC-V của họ để tích hợp NTT. Kuang và cộng sự vector hố thuật tốn NTT để kết hợp nó tốt hơn với kiến trúc RISC-V của họ. Chen và cộng sự [18] cải tiến NTT trong bộ xử lý của họ, tận dụng lợi ích của truy cập bộ nhớ kép (dual memory access). Việc tích hợp NTT qua các nền tảng khác nhau để hỗ trợ PQC mới đang phát triển [19-22]

Một số nghiên khác như của Huang và cộng sự [30] trình bày một thiết kế phần cứng đầy đủ tương tự của CRYSTALS-Kyber, giúp tăng tốc hiệu suất nhiều lần so với việc triển khai thuật toán trên bộ xử lý ARM Cortex-M4 [31]. Nghiên cứu [32] trình bày thiết kế chống tấn công kênh ngoại (side-channel attack) đầu tiên của CRYSTALS-Kyber trên phần cứng với hiệu suất ấn tượng. Một số nghiên cứu khác trình bày việc tối ưu thiết kế của Kyber bằng cách phân tích phần mềm cũng mang lại hiệu quả tích cực.

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>2.2 Nhiệm vụ đề tài </b>

Từ mục đích đã đề ra ở trên, các nhiệm vụ cần thực hiện của đề tài bao gồm: Nội dung 1: Tìm hiểu lý thuyết mã hoá bất đối xứng, mã hoá lượng tử CRYSTALS-Kyber, NTT/INTT và các thành phần toán học cần thiết cho thiết kế phần cứng NTT/INTT

Nội dung 2: Tìm hiểu cách sử dụng Linux trên HPS, thực hiện chỉnh sửa, biên dịch phần mềm tham chiếu của Kyber để kiểm tra hiệu suất phần mềm Kyber trên phần cứng HPS (ARM Cortex-A9) của Intel (Altera) Cyclone V.

Nội dung 3: Xây dựng và thiết kế bộ tăng tốc phần cứng NTT (bao gồm NTT và INTT – Inverse NTT) theo các tham số Kyber, tổng hợp thiết kế và mô phỏng kiểm tra so sánh với kết quả NTT chạy được bằng mã nguồn Kyber. Đánh giá, bàn luận về các thiết kế và kết quả.

Nội dung 4: Kết luận và bàn luận hướng phát triển của nghiên cứu trong lương lai.

Phần tiếp theo của luận văn sẽ trình bày các lý thuyết đề cập trong nội dung 1. Phần 4 của luận văn trình bày nội dung 2. Phần 5 của luận văn trình bày các thiết kết và kết quả trong nội dung 3. Kết luận và bàn luận hướng phát triển (nội dung 4) sẽ được học viên trình bày trong phần 6. Phần 7 là danh mục các cơng trình khoa học. Phần 8 là danh mục tài liệu tham khảo và phần 9 là phụ lục.

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<b>3 NHỮNG NGHIÊN CỨU LÝ THUYẾT </b>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<b>3.1 Sơ bộ về mã hoá, mã hoá đối xứng và mã hoá bất đối xứng </b>

<i>Mã hoá là một trong những lĩnh vực được quan tâm và phát triển từ rất lâu. Sở </i>

dĩ mã hoá được quan tâm và nghiên cứu một cách mạnh mẽ với vơ số phương thức mã hố - giải mã khác nhau được nghiên cứu và phát triển hoàn thiện từng ngày là do nhu cầu bảo mật dữ liệu, mã hoá đảm bảo việc trao đổi dữ liệu chỉ để hai bên trao đổi có thể trao đổi thơng tin có thể hiểu được. Chung quy lại, mã hố thực hiện việc thay đổi dữ liệu ban đầu thành một chuỗi dữ liệu khác mà khơng có ý nghĩa nếu khơng thực hiện q trình giải mã. Việc thực hiện mã hoá, giải mã tuân thủ các nguyên tắc tốn học để chuỗi dữ liệu có thể bảo tồn ngun vẹn sau khi thực hiện quy trình mã hố - truyền tải - giải mã. Việc mã hoá giải mã được yêu cầu sử dụng khoá (key) mã hoá. Khoá mã hoá được phổ biến trước cho bên truyền và bên nhận hoặc thông qua một bên xác thực thứ ba để đảm bảo sự thấu hiểu giữa bên truyền và bên nhận về mã hoá và giải mã. Mã hố được coi là an tồn đảm bảo việc mã hoá được tiến hành một cách hợp lý và khơng thể giải mã được bằng cách đốn.

Các thuật tốn mã hố hiện nay vơ cùng đa dạng và phong phú với nhiều biến thể và ngày càng được cải thiện về hiệu suất cũng như tính bảo mật, được ứng dụng rộng rãi trong nhiều lĩnh vực. Trong đó, mã hoá đối xứng (Symmetric Key Cryptography) và mã hoá bất đối xứng (Asymmetric Key Cryptography) là hai dạng mật mã được sử dụng trong việc mã hoá và giải mã.

<i>Mã hoá đối xứng sử dụng một khoá mật mã (Crypto Key) được chia sẻ giữa </i>

bên truyền tin và bên nhận tin để thông qua một thuật tốn biết trước để bên truyền có thể mã hoá dữ liệu muốn gửi thành một dữ liệu mã hố (Ciphertext), bên nhận có thể giải mã dữ liệu mã hoá thành dữ liệu ban đầu.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<i>Hình 3.1 Mã hố đối xứng </i>

<i>Mã hoá bất đối xứng sử dụng một cặp khoá: khoá cơng khai (public key) và </i>

khố bí mật (secret/private key) trong việc xử lý mã hoá và giải mã. Public key sẽ được chia sẻ khi có yêu cầu, nếu bên gửi muốn gửi dữ liệu đến bên nhận thì sẽ yêu cầu public key của bên nhận, người gửi dùng public key này để mã hoá dữ liệu, chỉ người nhận có private key tương ứng mới giải mã được dữ liệu mã hố. Ngồi ra, một số thuật tốn cịn mở rộng theo chiều ngược lại (dữ liệu mã hoá bằng private key sẽ được chia sẻ cho mọi người, nếu mọi người có public key thì có thể giải mã được dữ liệu này). Ưu điểm của mã hố bất đối xứng là có thể sử dụng trong môi trường phức tạp và dễ dàng trau đổi an toàn với nhau bằng cách chia sẻ public key của nhau. Tuy nhiên, nhược điểm của phương pháp này là do thuật toán thường phức tạp hơn nên tốc độ giải mã chậm hơn và đòi hỏi tài nguyên tính tốn nhiều hơn, vì vậy cần phải tối ưu bài tốn về tính bảo mật, tài ngun tính tốn với thời gian thực hiện sao cho phù hợp.

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<i>Hình 3.2 Mã hố bất đối xứng</i>

<b>3.2 Lý thuyết về CRYSTALS-Kyber </b>

CRYSTALS-Kyber là một phần của bộ mật mã gọi là Bộ công cụ mật mã cho lưới đại số (Cryptographic Suite for Algebraic Lattices – CRYSTALS). Mật mã dựa trên lưới được đặt trên cơ sở sự phức tạp của của giải quyết các vấn đề lưới, được cho là phức tạp ngay cả với máy tính lượng tử [23].

Thiết kế của Kyber bắt nguồn từ sơ đồ mã hoá dựa trên LWE (Learning with errors) của Regev. Kể từ cơng trình ban đầu của của Regev, hiệu quả thực tế của các lược đồ mã hoá LWE đã được cải thiện bằng cách quan sát thấy bí mật trong LWE có thể đến từ sự phân bố giống nhiễu và nhận thấy các lược đồ “tương tự LWE” có thể xây dựng một ma trận hình vng (chứ khơng phải hình chữ nhật) làm khố cơng khai. Một cải tiến khác là áp dụng một ý tưởng ban đầu sử dụng trong hệ thống mật mã NTRU để xác định các bài toán Ring-LWE và Modul-LWE sử dụng các vành đa thức thay vì số ngun. Chi tiết về Kyber có thể được tìm thấy trong nghiên cứu của của Bob và cộng sự [2]. Kyber có hai phần: mã hóa cơng khai chống được phương pháp tấn công chọn văn bản hoặc CPAPKE, cơ chế đóng gói khóa bảo mật hoặc CCAKEM. CPAPKE được bao gồm trong CCAKEM như một bước bắt buộc để tạo mã khóa và mã hóa cũng như giải mã. Trong khi CPAPKE có ba bước khác nhau (tạo khóa, mã hóa và giải mã), cả ba bước đều yêu cầu một bước nhân đa thức lớn có độ phức tạp 𝑂(𝑛!). Về bản chất, CRYSTALS-Kyber hiểu đơn giản là mã hóa bất đối

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

xứng, bao gồm một phép tốn có độ phức tạp lớn (MLWE) và giao thức trao đổi kết quả từ phép tốn đó.

Mã hố dựa trên LWE: - Q trình tạo khố:

<i>Hình 3.3 Q trình tạo khố của CRYSTALS-Kyber </i>

- Encryption/decryption:

<i>Hình 3.4 Quá trình encryption/decryption của kyber </i>

Các đa thức của Kyber được thể hiện dưới dạng các hệ số của đa thức, sắp sếp theo bậc trong ngôn ngữ lập trình thơng thường. Giải thuật tạo khố, mã hố và giải mã của Kyber như sau:

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

Trong thông số kỹ thuật [2], Kyber cung cấp 3 phiên bản KEM là: Kyber512, Kyber768 và Kyber1024. Ngoài ra họ cũng cung cấp các phiên bản 90s tương ứng: Kyber512-90s, Kyber768-90s và Kyber1024-90s. Các phiên bản này thay thế việc sử dụng Keccak SHA3 bằng họ SHA2. Các tham số cho mỗi phiên bản của Kyber được

<b>liệt kê trong Error! Reference source not found., được công bố trong thông số kỹ t</b>

<b>5: return (𝑝𝑘 ∶= (𝐭, 𝜌), 𝑠𝑘: = 𝐬) </b>

<b>Algorithm 2 Kyber.CPA.Enc(</b>𝑝𝑘 = (𝑡, 𝜌), 𝑚 ∈ ℳ): Encryption 1: 𝑟 ← {0,1}<small>+,)</small>

<b>2: 𝐭 ≔ Decompress</b><sub>2</sub>(𝐭, 𝑑<sub>1</sub>) 3: 𝐀 ∼ 𝑅<sub>-</sub><small>.×.</small> ≔ Sam(𝜌)

4: (𝒓, 𝒆<sub>𝟏</sub>, 𝑒<sub>+</sub>) ∼ 𝛽<sub>0</sub><small>.</small>× 𝛽<sub>0</sub><small>.</small> × 𝛽<sub>0</sub> ≔ Sam(𝑟) 5:𝐮: = Compress<sub>-</sub>(𝐀<small>𝑻</small>𝐫 + 𝐞<sub>𝟏</sub>, 𝑑<sub>4</sub>)

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

Kyber1024 256 4 3329 2 2 (11,5) 2<small>%&6*</small>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>3.3 Number-Theoretic Transform (NTT) </b>

Trong CRYSTALS-Kyber, Bos và cộng sự [2] sử dụng Biến đổi số lý thuyết (NTT) để nhân nhanh giữa các đa thức. Nghịch đảo của NTT là INTT. Với NTT và INTT, kết quả nhân của phương trình ℎ = 𝑓 ∗ 𝑔 có thể được tính bằng cơng thức (1) để cải thiện tốc độ nhân đa thức [2]. Cho việc triển khai và đánh giá phần mềm, Scott và cộng sự [24] chỉ ra các điểm chi tiết để thích nghi từ một bản tham chiếu triển khai (phần mềm) C của PQC. Ở đây sử dụng phiên bản Tích chập bọc âm (Negative Wrap Convolution – NWC) của thuật toán NTT để ngăn chặn việc bao hàm các hệ số zero-padding trong đa thức đầu vào 𝑓 và 𝑔 cho NTT và INTT [4]. Dựa trên hai thuật tốn trước đó từ [4], nghiên cứu này sử dụng phiên bản mới của thuật toán lai NTT/INTT trong Algorithm 4:

ℎ = 𝐼𝑁𝑇𝑇 ∗ l𝑁𝑇𝑇(𝑓) ∗ 𝑁𝑇𝑇(𝑔)m(1)

<b>Algorithm 4 Hybrid NTT and INTT Algorithm </b>

<b>1: Input: 𝑎(𝑥) = 𝑎</b><sub>!</sub>, 𝑎<sub>"</sub>… 𝑎<sub>#</sub> for NTT

<b>2: Input: 𝑎((𝑥) = 𝑎(</b><sub>!</sub>, 𝑎(<sub>"</sub>… 𝑎(<sub>#</sub> for INTT

<b>3: Input: Pre-computed twiddle factor 𝜁[𝑖] = 𝛾</b><small>$%&'()(*+(</small>[𝑖]

<b>4: Output: 𝑁𝑇𝑇(𝑎(𝑥)) for NTT; 𝐼𝑁𝑇𝑇1𝑎((𝑥)2 for INTT </b>

13: 𝑟<sub>"</sub> ← 𝑢<sub>!</sub> (NTT) or 𝑎(<sub>,-.(#</sub> (INTT) 14: 𝑢<sub>"</sub> ← 𝑎<sub>,</sub> + 𝑟<sub>"</sub> (NTT) or 𝑎(<sub>,</sub>+ 𝑟<sub>"</sub> (INTT) 15: 𝑡<sub>!</sub> ← 𝑢<sub>"</sub>

16: 𝑡<sub>"</sub> ← (𝑎<sub>,</sub> − 𝑢<sub>!</sub>) (NTT) or 𝑢<sub>!</sub> (INTT) 17: 𝑎<sub>,</sub> (NTT) or 𝑎(<sub>,</sub> (INTT) ← 𝑡<sub>!</sub>

18: 𝑎<sub>,-.(#</sub> (NTT) or 𝑎(<sub>,-.(#</sub> (INTT) ← 𝑡<sub>"</sub>

<b>19: end for 20: end for 21: end for </b>

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

Mỗi giai đoạn NTT yêu cầu một Cooley – Turkey (CT) BU và mỗi trạng thái INTT yêu cầu Gentleman – Sande (GS) BU. Sử dụng NWC, cấu hình BU phải tính đến tiền xử lý và hậu xử lý tương ứng. Hình [1] cung cấp sơ đồ BU đơn giản cho NWC NTT và INTT [4]. Hình (1) là cấu trúc CT BU cho NTT, và Hình (2) là cấu trúc GS BU.

<i>Hình 3.5 Hai Butterfly Unit với thuật tốn giảm độ phức tạp. </i>

(1) Cooley-Turkey Butterfly Unit và (2) Gentleman-Sande Butterfly Unit Tuỳ thuộc vào số lượng phần tử của đa thức đầu vào mà NTT/INTT sẽ trải qua số tầng tính tốn tương ứng:

<i><small>Hình 3.6 NTT/INTT với n=8 </small></i>

Trong Hình , với 𝑛 = 8 số tầng tính tốn cần tính là log<sub>+</sub>𝑛 = 3. Với kết quả 𝑎s sau khi thực hiện NTT ở thứ tự bit reverse (đảo bit).

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<b>3.4 Bộ cộng Brent-Kung (Brent-Kung Adder) </b>

Bộ cộng bổ sung sử dụng giải thuật carry-lookahead (CLA) có một biến thể của bộ cộng tiền tố song song (PPA) gọi là bộ cộng Brent-Kung (BKA). Sử dụng cấu trúc của bộ cộng này để cải thiện hiệu suất của phép cộng và trừ modulo BU. Trái ngược với bộ cộng Kogge-Stone, nó có ít nghẽn về dây và đơn giản hơn về cấu trúc. Nó được đề xuất lần đầu bởi Richard Peirce Brent và Hsiang Te Kung vào năm 1982 (KSA) [26].

Trong bộ cộng Brent-Kung, cờ nhớ được tính tốn đồng thời, giảm thiểu thời gian hoạt động đáng kể. Ngoài ra, cờ nhớ phải đi qua ít giai đoạn hơn, giảm tiêu thụ năng lượng. Brent-Kung đã cách mạng hoá quá trình sinh và truyền các bit nhớ bằng cách giới thiệu một toán tử 𝑜 được định nghĩa như sau: (𝑎<sub>&</sub>, 𝑏<sub>&</sub>)𝑜(𝑎<sub>+</sub>, 𝑏<sub>+</sub>) = (𝑎<sub>&</sub>∨(𝑏<sub>&</sub>∧ 𝑎<sub>+</sub>), 𝑏<sub>&</sub>∧ 𝑏<sub>+</sub>), cùng với hàm (𝐺<sub>7</sub>, 𝑃<sub>7</sub>) = (𝑔<sub>&</sub>, 𝑝<sub>&</sub>) với 𝑖 = 1; và (𝑔<sub>7</sub>, 𝑝<sub>7</sub>)𝑜(𝐺<sub>7</sub>−1, 𝑃<sub>7</sub>− 1) với 𝑖 = 2,3, … 𝑛. Có thế suy ra rằng 𝐺<sub>7</sub> trong hàm tương đương với 𝑐<sub>7</sub>.

Ngoài ra (𝐺<sub>8</sub>, 𝑃<sub>8</sub>) có thể được viết khơng đệ quy là (𝑔<sub>8</sub>, 𝑝<sub>8</sub>)𝑜(𝑔<sub>8%&</sub>, 𝑝<sub>8%&</sub>)𝑜 … 𝑜(𝑔<sub>&</sub>, 𝑝<sub>&</sub>). Lợi dụng tính kết hợp của tốn tử 𝑜(𝐺𝑛, 𝑃𝑛), theo định nghĩa, có thể được tính tốn trong một cấu trúc giống cây, tương tự Hình .

<i>Hình 3.7 Cấu trúc hình cây của bộ cộng Brent-Kung </i>

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

<b>3.5 Rút gọn Barrett </b>

Rút gọn Barrett là một thuật toán rút gọn modulo, được giới thiệu vào năm 1986 bởi P.D. Barrett. Một cách đơn giản để tính tốn 𝑐 = 𝑎𝑚𝑜𝑑𝑞 là sử dụng một thuật toán chia nhanh. Thuật toán này được thiết kế để tối ưu hoá phép tính modulo khi số chia 𝑞 là hằng số. Ý tưởng chung của Barrett reduction algorithm là sử dụng một hàm xấp xỉ nguyên để ước lượng . Sau đó, trừ đi một lần để thu được phần dư. Thuật tốn này có thể được áp dụng cho các số nguyên lớn, hoặc cho các số nguyên nhỏ hơn nhưng có số mũ cao.

<b>3.6 Phép nhân module Montgomery </b>

Phép nhân module Montgomery là một phương pháp tính nhanh phép nhân modulo, được giới thiệu bởi nhà toán học Peter L. Montgomery vào năm 1985. Phương pháp này dựa trên một biểu diễn đặc biệt của các số gọi là dạng Montgomery. Thuật toán sử dụng dạng Montgomery của 𝑎 và 𝑏 để tính hiệu quả dạng Montgomery của 𝑎𝑏𝑚𝑜𝑑𝑁. Hiệu quả đến từ việc tránh các phép chia tốn kém. Phép nhân modulo truyền thống giảm tích hai chiều 𝑎𝑏 bằng cách chia cho 𝑁 và chỉ giữ lại phần dư. Phép chia này yêu cầu ước lượng và sửa chữa chữ số thương số. Dạng Montgomery, ngược lại, phụ thuộc vào một hằng số 𝑅 > 𝑁 mà nguyên tố cùng nhau với 𝑁, và phép chia duy nhất cần thiết trong phép nhân Montgomery là phép chia cho 𝑅. Hằng số 𝑅 có thể được chọn sao cho phép chia cho 𝑅 là dễ dàng, cải thiện đáng kể tốc độ của thuật tốn. Trong thực tế, 𝑅 ln là một lũy thừa của hai, vì phép chia cho các lũy thừa của hai có thể được thực hiện bằng cách dịch bit

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<b>4 TRIỂN KHAI CRYSTALS-KYBER TRÊN ARM </b>

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

<b>4.1 Intel (Altera) Cyclone V và HPS trên Cyclone V </b>

Cyclone V SoC trên DE-10 Standard bao gồm 2 thành phần: Hệ thống xử lý cứng (Hard Processor System – HPS) và FPGA. Kiến trúc HPS bao gồm bộ xử lý Arm Cortex-A9 lõi kép, các thiết bị ngoại vi và giao diện bộ nhớ được liên kết liền mạch với kết cấu FPGA.

HPS trên Cyclone V là một hệ thống bộ xử lý cứng (HPS) tích hợp một bộ xử lý kép lõi Arm Cortex-A9 với một số giao diện và bộ điều khiển ngoại vi. HPS trên Cyclone V cho phép bạn tận dụng sức mạnh của bộ xử lý Arm và khả năng linh hoạt của FPGA trong một thiết bị duy nhất:

+ Hỗ trợ các giao diện bộ nhớ ngoài như DDR2, DDR3, LPDDR2.

+ Hỗ trợ các giao diện ngoại vi như USB, Ethernet, SPI, I2C, UART, CAN, GPIO, QSPI, NAND, SD/MMC.

+ Hỗ trợ các bộ xử lý tín hiệu số (DSP) biến độ chính xác để tăng tốc các ứng dụng xử lý tín hiệu.

+ Hỗ trợ các cầu nối AXI để kết nối HPS với FPGA và các thiết bị ngoài. + Hỗ trợ các module quản lý đồng hồ, reset, nguồn, scan, debug, và trace.

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

<b>4.2 Core Concepts và Boot Flow </b>

Mọi thiết kế embedded Linux dựa trên Altera (Intel) SoC sẽ tuân theo một quy trình tương tự để khởi động:

<i>Hình 4.2 Altera (Intel) SoC boot flow </i>

Như có thể thấy ở trên, phần đầu tiên được chạy khi khởi động là Boot ROM, sau đó tải PreLoader lên, sau đó là U-boot rồi cuối cùng là Linux. Chuỗi phần mềm này được gọi là “luồng khởi động – boot flow” và đối với hầu hết các thiết kế Linux nhúng trên Cyclone V, sẽ khơng có nhiều sai lệch với mẫu này.

Các binary cho PreLoader, U-boot và Linux có thể được đặt trên nhiều loại thiết bị NvM (Non-volatile Memory) khác nhau (QSPI flash, SD card, v.v). Để biết vị trí của preloader (giai đoạn 2 trong boot flow), chúng ta sẽ cần đặt các chân BSEL (Boot SELect) tương ứng để có thể chọn đúng vị thiết bị boot (trong phạm vi của luận văn này là SD Card).

Altera cung cấp Linux image được build sẵn dựa trên Angstrom với Linux kernel 4.5. Trong phạm vi luận văn này, học viên sử dụng linux image được cung cấp

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

này và chỉ thực hiện xây dựng lại kernel mới để phù hợp với các tính năng cần thiết để mã nguồn CRYSTALS-Kyber có thể thực thi trên ARM.

<b>4.3 Mã nguồn CRYSTALS-Kyber </b>

Mã nguồn tham chiếu phần mềm Kyber được cung cấp miễn phí tại [33]. Cho mỗi phiên bản Kyber512, Kyber512-90s, Kyber768, Kyber768-90s, Kyber1024, Kyber1024-90s, phần mềm tham chiếu này có thể tạo ra các tệp thực thi test_kyber, test_kex, test_vector, test_speed. Trong đó:

+ test_kyber: kiểm tra 1000 lần tạo khố, đóng gói một khố ngẫu nhiên và giải mã lại một cách chính xác. Ngồi ra, chương trình cịn kiểm tra xem các khố khơng thể được giải mã chính xác bằng cách sử dụng khố bí mật ngẫu nhiên hoặc văn bản mã hố trong đó một byte ngẫu nhiên duy nhất bị biến dạng ngẫu nhiên để kiểm tra các lỗi nhỏ của bảo mật CCA. Chương trình sẽ bị huỷ với thơng báo lỗi và trả về 1 nếu có lỗi. Nếu khơng nó sẽ xuất kích thước khố và văn bản mã hố và trả về 0. Chương trình này sẽ đảm bảo tính đúng đắn cho các triển khai của Kyber.

+ test_kex: kiểm tra các chương trình trao đổi khoá được xác thực bắt nguồn từ Kyber KEM.

+ test_vectors: tạo ra 10000 bộ vector kiểm tra chứa các khoá, ciphertexts và share secrets key được xuất ra dưới dạng hex. Các byte ngẫu nhiên bắt buộc đến từ việc mở rộng xác định đơn giản của một seed cố định được xác định trong test_vector.c.

+ test_speed: phục vụ cho benchmark cho việc triển khai của Kyber. Sử dụng Time Step Counter (TSC) hoặc Performance Measurement Counters (PMC) để đo hiệu suất (cho CPU x86).

<b>4.4 Từ kiến trúc X86 đến ARM </b>

Mã nguồn tham chiếu của CRYSTALS-Kyber được thực hiện trên kiến trúc x86_64 cho các vi xử lý Intel/AMD (kết quả trong trang chủ của thuật toán Kyber [33] được thực hiện trên vi xử lý Intel Core-i7 4770K). Để mã nguồn này có thể biên dịch và thực thi đầy đủ các tính năng trên kiến trúc ARM Cortex-A9 (ARM v7

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

architecture instruction set) cần có một số chỉnh sửa mã nguồn để có thể biên dịch và thực thi đầy đủ trên HPS.

Mã nguồn tham chiếu của CRYSTALS-Kyber sử dụng rdpmc (Read Performance Monitoring Counters) hoặc rdtsc (Read Time Stamp Counters) làm bộ đếm để thực hiện việc đánh giá hiệu năng của chương trình. Hai bộ đếm này là hai bộ đếm 64-bit được cung cấp sẵn bởi bộ đếm hiệu suất của các CPU x86_64 của Intel/AMD với mục đích là đếm các giá trị đo lường hiệu suất hay đo lường thời gian giữa các sự kiện trong mã máy. Đối chiếu với ARM Cortex-A9, nó cũng cung cấp bộ đếm 32-bit có tính năng tương tự gọi là pmccntr (Performance Monitor Cycle Counter), thay thế việc sử dụng rdpmc/rdtsc bằng pmccntr sẽ có thể giải quyết được vấn đề khơng tương thích khi biên dịch mã nguồn tham chiếu của CRYSTALS-Kyber trên Arm-Cortex A9.

<b>4.5 Cycle Count Register (PMCCNTR) </b>

Trong kiến trúc ARM, Coprocessor là một phần quan trọng, và System Control Coprocessor (Coprocessor 15 - CP15) là một trong những coprocessor quan trọng nhất. CP15 thường được sử dụng để kiểm sốt và cấu hình hệ thống. Một số chức năng quan trọng mà CP15 đảm nhiệm trong kiến trúc ARM:

+ Cấu hình đặc tính hệ thống: CP15 được sử dụng để cấu hình các đặc tính của hệ thống, chẳng hạn như cơ sở dữ liệu bộ nhớ và tùy chọn cache.

+ Quản lý bộ nhớ: CP15 chứa các thanh ghi để quản lý bộ nhớ, chẳng hạn như thanh ghi cấu hình TTBR (Translation Table Base Register) và thanh ghi cấu hình TLB (Translation Lookaside Buffer).

+ Quản lý quyền truy cập: Cung cấp các thanh ghi để kiểm soát quyền truy cập bộ nhớ, bao gồm các cơ chế kiểm soát quyền truy cập cơ bản.

+ Quản lý hiệu suất: Hỗ trợ các thanh ghi bộ đếm hiệu suất và bộ đếm sự kiện hiệu suất thông qua cơ chế Performance Monitoring.

</div>

×