1. Trang chủ
  2. » Luận Văn - Báo Cáo

NGHIÊN CỨU HỆ MẬT KHÁNG LƯỢNG TỬ MCELIECE

87 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

NGHIÊN CỨU HỆ MẬT KHÁNG LƯỢNG TỬ MCÉLIECE Các nghiên cứu đầu tiên về máy tính lượng tử bắt đầu từ năm 1980 và cho đến năm 1994 thuật toán Shor được công bố đã cho thấy được sự ảnh hưởng của máy tính lượng tử đối với mật mã. Đứng trước nguy cơ máy tính lượng tử có thể phá được mật mã khóa công khai, các nhà khoa học đã đề xuất các hướng nghiên cứu mới là “mật mã kháng lượng tử” để chống lại ảnh hưởng của máy tính lượng tử trong tương lai. Năm 2016, NIST đã khởi động một dự án nhằm thu hút, đánh giá và tiêu chuẩn hóa các thuật toán mật mã khóa công khai kháng lượng tử nhằm bảo vệ các thông tin nhạy cảm trước sự ra đời của máy tính lượng tử. Một trong số ứng viên đã lọt vào vòng 3 là hệ mật mã McEliece được đề xuất năm 1978, tác giả là Robert McEliece và qua các phiên bản mức độ bảo mật của hệ mật mã McEliece vẫn rất ổn định và có khả năng kháng lại tấn công máy tính lượng tử. Nội dung đồ án được chia làm 3 chương như sau: Chương 1: Tổng quan về máy tính lượng tử và mật mã hậu lượng tử Chương này giới thiệu về máy tính lượng tử và mật mã kháng lượng tử Chương 2: Hệ mật McEliece Chương này tìm hiểu về cơ sở toán học của hệ mật: lý thuyết mã sửa sai, mã tuyến tính và mã Goppa, hệ mật McEliece và đánh giá độ an toàn của hệ mật. Chương 3: Cài đặt chương trình mô phỏng hệ mật Chương này trình bày các tham số của hệ mật McEliece, mô phỏng hệ mật McEliece và đánh giá hiệu quả của hệ mật McEliec với Keyber, SABER, NTRU.

1 ĐẠI HỌC BÁCH KHOA HÀ NỘI LUẬN VĂN THẠC SĨ NGHIÊN CỨU HỆ MẬT KHÁNG LƯỢNG TỬ MCÉLIECE Nguyen Thanh Long Hà Nội - 2023 MỤC LỤC LỜI CẢM ƠN i LỜI CAM ĐOAN ii MỤC LỤC iii DANH MỤC HÌNH VẼ v DANH MỤC BẢNG BIỂU vi LỜI MỞ ĐẦU vii CHƯƠNG 1: TỔNG QUAN VỀ MÁY TÍNH LƯỢNG TỬ VÀ MẬT MÃ KHÁNG LƯỢNG TỬ 1.1 Tổng quan máy tính lượng tử 1.1.1 Khái niệm máy tính lượng tử 1.1.2 Nguyên lý hoạt động máy tính lượng tử 1.1.3 Ưu nhược điểm máy tính lượng tử 1.1.4 Các máy tính lượng tử 1.2 Mật mã kháng lượng tử CHƯƠNG 2: HỆ MẬT MCELIECE 11 2.1 Cơ sở toán học 11 2.1.1 Lý thuyết mã sửa lỗi 11 2.1.2 Mã tuyến tính 20 2.1.3 Mã Goppa 27 2.1.3.3 34 2.2 Hệ mật McEliece 37 2.2.1 Q trình tạo khóa 37 2.2.2 Q trình mã hóa 37 2.2.3 Quá trình giải mã 37 2.3 Đánh giá độ an toàn hệ mật 38 2.3.1 Tấn công thông thường 38 2.3.2 Tấn công lượng tử 43 CHƯƠNG CÀI ĐẶT CHƯƠNG TRÌNH MƠ PHỎNG HỆ MẬT 55 3.1 Các tham số hệ mật McEliece 55 3.2 Mô hệ mật 55 3.2.1 Mơ-đun tạo khóa .55 3.2.2 Mơ-đun mã hóa 56 3.2.3 Mô-đun giải mã 57 3.2.4 Đánh giá hiệu thuật toán 58 KẾT LUẬN 60 TÀI LIỆU THAM KHẢO 61 PHỤ LỤC 63 DANH MỤC HÌNH VẼ Hình 1.1 Mặt cầu Block Hình 3.1 Lưu đồ thuật tốn tạo khóa McEliece 56 Hình 3.2 Kết tạo khóa McEliece .56 Hình 3.3Lưu đồ mã hóa McEliece 57 Hình 3.4 Kết mã hóa McEliece 57 Hình 3.5 Lưu đồ giải mã McEliece 58 Hình 3.6 Kết giải mã McEliece 58 DANH MỤC BẢNG BIỂU Bảng 1.1 Ví dụ lược đồ mật mã triển khai rộng rãi độ an toàn lược đồ chống lại công tiền lượng tử hậu lượng tử tốt biết đến [7] Bảng 3.1 Các tham số McEliece 55 Bảng So sánh hệ mật McEliece, NTRU, SABER Kyber 58 LỜI MỞ ĐẦU Các nghiên cứu máy tính lượng tử năm 1980 năm 1994 thuật tốn Shor cơng bố cho thấy ảnh hưởng máy tính lượng tử mật mã Đứng trước nguy máy tính lượng tử phá mật mã khóa cơng khai, nhà khoa học đề xuất hướng nghiên cứu “mật mã kháng lượng tử” để chống lại ảnh hưởng máy tính lượng tử tương lai Năm 2016, NIST khởi động dự án nhằm thu hút, đánh giá tiêu chuẩn hóa thuật tốn mật mã khóa cơng khai kháng lượng tử nhằm bảo vệ thông tin nhạy cảm trước đời máy tính lượng tử Một số ứng viên lọt vào vòng hệ mật mã McEliece đề xuất năm 1978, tác giả Robert McEliece qua phiên mức độ bảo mật hệ mật mã McEliece ổn định có khả kháng lại cơng máy tính lượng tử Nội dung đồ án chia làm chương sau: Chương 1: Tổng quan máy tính lượng tử mật mã hậu lượng tử Chương giới thiệu máy tính lượng tử mật mã kháng lượng tử Chương 2: Hệ mật McEliece Chương tìm hiểu sở tốn học hệ mật: lý thuyết mã sửa sai, mã tuyến tính mã Goppa, hệ mật McEliece đánh giá độ an toàn hệ mật Chương 3: Cài đặt chương trình mơ hệ mật Chương trình bày tham số hệ mật McEliece, mô hệ mật McEliece đánh giá hiệu hệ mật McEliec với Keyber, SABER, NTRU CHƯƠNG 1: TỔNG QUAN VỀ MÁY TÍNH LƯỢNG TỬ VÀ MẬT MÃ KHÁNG LƯỢNG TỬ 1.1 Tổng quan máy tính lượng tử 1.1.1 Khái niệm máy tính lượng tử Máy tính lượng tử (cịn gọi siêu máy tính lượng tử) thiết bị tính tốn sử dụng trực tiếp hiệu ứng học lượng tử tính chồng chập vướng víu lượng tử để thực phép toán liệu đưa vào Máy tính lượng tử có phần cứng khác hẳn với máy tính kỹ thuật số dựa tranzitor Trong máy tính kỹ thuật số địi hỏi liệu phải mã hóa thành chữ số nhị phân (bit), mà số gán cho hai trạng thái (0 1), tính tốn lượng tử sử dụng qubit (bit lượng tử) mà chúng trạng thái chồng chập lượng tử Các thuật toán lượng tử tận dụng điều biến đổi tất trạng thái lúc Các thuộc tính cho phép máy tính lượng tử chạy thuật tốn giải tốn coi khó máy tính cổ điển, vốn bị hạn chế trạng thái 1.1.2 Nguyên lý hoạt động máy tính lượng tử Nguyên lý hoạt động máy tính lượng tử đại hồn tồn nằm lý thuyết ứng dụng học lượng tử Trong máy tính lượng tử, liệu khơng xử lý electron qua transistor nữa, mà xử lý nguyên tử "giam giữ" với tên gọi quantum bit hay qubits 1.1.2.1 Thông tin qubit Máy tính lượng tử thực hoạt động với qubit (quantum bit, hay gọi bit lượng tử) thay bit nhị phân máy tính vốn dựa bóng bán dẫn Qubit mở tiềm cho máy tính lượng tử thơng qua thuật tốn phức tạp thực phép tính nhanh nhiều so với hệ thống có Bit đơn vị thông tin công nghệ truyền thơng tin Mỗi bit mang giá trị hay dựa vào tín hiệu điện: khơng có Qubit có vài thuộc tính nhìn chung tồn diện khác Các khác biệt giúp cho qubit có khả vượt trội Một qubit hay bit lượng tử, đơn vị thông tin lượng tử Thơng tin miêu tả hệ học lượng tử có hai trạng thái bản, thường ký hiệu |0> |1> Một trạng thái qubit túy chồng chập lượng tử tuyến tính hai trạng thái Điều khác với bit thông tin cổ điển, nhận hai giá trị 1.1.2.2 Các trạng thái qubit, khả mang vô hạn thông tin Các trạng thái qubit xác định dựa vào trạng thái |0> |1> Như nói, khác với bit cổ điển, qubit khơng nhận giá trị ứng với trạng thái mà cịn nhận giá trị chồng chập tổ hợp tuyến tính trạng thái đó: |P> = a|0> + b|1> Với a, b số tỉ lệ với cường độ trạng thái tổ hợp ứng với trạng thái tương ứng |a|2 + |Ạ| = Hình 1.1 Mặt cầu Block Theo hệ thức đó, ta thấy rằng, khơng gian trạng thái tổ hợp |P> đơn qubit phương diện hình học biểu diễn mặt cầu, gọi mặt cầu Block Đây không gian chiều Về chất, điểm mặt cầu biểu diễn cho trạng thái qubit Mặt cầu có vơ hạn điểm, đó, ta thấy khả biểu diễn thông tin lượng tử lên đến vô hạn bit cổ điển 1.1.2.3 Trao đổi thông tin lượng tử giữ qubit Mỗi qubit mang thông tin lượng tử Thông tin phải trao đổi qua lại qubit lĩnh vực tìm hiểu chế trao đổi thơng tin qubit cách xử lý thông tin thu Thơng tin máy tính lượng tử biểu diễn chồng chất lượng tử đồng thời hai mã (bit lượng tử hay “qubit”) Trong thời gian thực chồng chất, qubit tương tác tính tốn với qubit khác thông qua lượng tử thành phần xung quan Cuối cùng, qubit thực phân biệt lượng tử chọn mã hình thức làm việc cổ điển Trạng thái chồng chất lượng tử yếu tố lượng tử trả kết tiêu chuẩn đo lường Tiếp theo nguyên tắc “vướng víu lượng tử”, hiểu q trình tương đối phức tạp, nói lên tương tác điện tử, phân tử, photon hạt khác: “Vướng víu lượng tử xem tương quan trạng thái qubit khác với Khi thực hoạt động phép đo qubit vướng mắc với qubit khác, chúng tự động tìm hiểu thay đổi trạng thái đối tác Điều cung cấp loại giao thức song song, gần cho phép hệ thống lượng tử thực số tính tốn nhanh so với hệ thống máy tính cổ điển” Tính chất "song song lượng tử'' mạnh máy tính lượng tử Thuật toán sử dụng để chạy qubit giống thuật toán mà Simon đưa ra, cho nhanh điều so với máy tính dựa bóng bán dẫn để thực thuật tốn Theo phân tích Ars Technica cho biết: “Các máy tính lượng tử đơn giản, hai qubit đăng ký thực từ SQUID (được hiểu thiết bị giao thoa lượng tử siêu dẫn), hai SQUID bổ sung cho hoạt động khơng đăng ký trước (chẳng hạn hoạt động đọc/xuất) kết hợp với tượng cộng hưởng sóng nhằm tạo sản phẩm nhớ Tuy nhiên, phần quan trọng băng thơng bus cho cặp qubit giao tiếp với nhau, thực hoạt động logic khác Các cộng hưởng có hình học cố định cộng hưởng tần số sóng Vì vậy, nhớ điều dọc văn thông qua thay đổi từ trường để giống tượng cộng hưởng Do hiểu hoạt động qubit thực cách áp dụng cơng nghệ vi sóng dựa cơng nghệ bus trang bị sẵn bên trong” Cuối cùng, chấm dứt hợp thuật toán, kết cần phải đọc Trong trường hợp máy tính cổ điển, lấy mẫu từ phân bố xác suất sổ đăng ký bit để có chuỗi bit xác định Quantum máy móc, đo lường trạng thái qubit, tương đương với sụp đổ lượng tử nhà nước xuống đến phân phối cổ điển (với hệ số trạng thái cổ điển độ lớn bình phương hệ số trạng thái lượng tử), lấy mẫu từ phân phối Lưu ý điều phá hủy trạng thái lượng tử ban đầu Nhiều thuật toán cung cấp cho câu trả lời xác với xác suất định Tuy nhiên, cách liên tục khởi tạo, chạy đo lường máy tính lượng tử, xác suất nhận câu trả lời xác tăng lên 1.1.3 Ưu nhược điểm máy tính lượng tử 1.1.3.1 Ưu điểm Máy tính lượng tử thực nhiệm vụ mà máy tính cổ điển làm Nếu sử dụng thuật toán cổ điển máy tính lượng tử, đơn giản thực tính tốn cách tương tự máy tính cổ điển Máy tính lượng tử quy mơ lớn có khả giải vấn đề phức tạp cách nhanh máy tính cổ điển sử dụng thuật tốn tốt nay, thuật tốn Shor để phân tích số tự nhiên thành tích số ngun tố, mơ hệ lượng tử nhiều hạt Cũng có thuật toán lượng tử, thuật toán Simon, cho phép máy tính hoạt động nhanh máy tính dựa thuật tốn xác suất cổ điển Có khả ứng dụng thực tế Được sử dụng ngành khoa học cần độ xử lý cao tốc độ lớn, liệu nhiều như: trung tâm khí tượng thủy văn,y khoa, Được sử dụng vào dòng sản phẩm điện tử Trên máy tính lượng tử thực lúc phép tính lên giá trị đầu vào khác nhau, tức thực tính tốn song song, thay làm phép tính cho đầu vào máy tính truyền thống Sự phát triển "máy tính lượng tử" dựa vật liệu silicon khơng cịn giấc mơ Giáo sư Murdin cho rằng: "Máy tính lượng tử giải số vấn đề hiệu nhiều so với máy tính thơng thường chúng đặc biệt hữu ích cho an ninh họ nhanh chóng giải mã số có tạo mã giải” 67 inv = gf_inv(mat[j][j]); for (c = j; SYST + mat[ c 1; C++) gf_mul(mat[ c ][ j ] inv) for (k SYST; 0; k++) { if (k != j) { t = mat[ j ][ k ]; for (c = j; c < SYS_T + 1; C++) mat[ c ][ k ] ][ j ], t); for (i = 0; i < SYST; i++) out[i] = mat[ SYST ][ i ]; return 0; /* A = gf_mul(mat[ c 68 This file is for public-key generation */ #include #include #include #include #include "controlbits.h" #include "uint64sort.h" #include "pk_gen.h" #include "params.h" #include "benes.h" #include "root.h" #include "util.h" /* input: secret key sk */ /* output: public key pk */ int pk_gen(unsigned char * pk, unsigned char * uint32_t * perm, int16_t * pi) { int i, j, k; int row, c; uint64t buf[ > k) & 1; k) & 1; b >= j; mask &= 1; mask -mask; A mat[ k ][ i ]; 72 for (c = 0; c < SYS-N/8; C++) mat[ row ][ c ] A = mat[ k ][ c ] & mask; } if ( ((mat[ row ][ i ] return if not systematic >> j) & 1) == ) // { return -1; } for (k = 0; k < PKNROWS; k++) { if (k != row) { mask = mat[ k ][ i ] >> j; mask &= 1; mask = -mask; for (c = 0; c < SYS-N/8; c++) & mask; mat[ k ][ c ] A = mat[ row ][ c ] 73 for (i = 0; i < PK-NROWS; i++) memcpy(pk + i*PK_ROW_BYTES, PK_NROWS/8, PK-ROW-BYTES); mat[i] return 0; } /* This file is for encryption */ #include "encrypt.h" #include "util.h" #include "params.h" #include "randombytes.h" #include #include #include #include 74 #include "gf.h" static inline unsigned char uint16_t y) same_mask(uint16_t x, { uint32 t mask; _ mask = x A y; mask -= = 1; mask >> = 31; mask = -mask; return mask & 0xFF; } /* output: e, an error vector of weight t */ static void gen_e(unsigned char *e) { int i, j, eq, count; union { uint16t nums[ SYST*2 ]; unsigned sizeof(uint16_t) ]; char bytes[ SYS_T*2 * 75 } buf; 76 uint16_t ind[ SYS_T ]; unsigned char mask; unsigned char val[ SYS_T ]; while (1) randombytes(buf.bytes, sizeof(buf)); for (i = 0; i < SYST*2; i++) buf.nums[i] load_gf(buf.bytes + i*2); // moving and correct range counting indices in the count = 0; for (i = 0; i < SYS T*2 && count < SYS T; i + +) if (buf.nums[i] < SYSN) ind[ count++ ] = buf.nums[i]; if (count < SYST) continue; // check for repetition eq = 0; for (i = 1; i < SYST; i++) for (j = 0; j < i; j++) if (ind[i] == ind[j]) 77 eq = 1; if (eq == 0) break; } for (j = 0; j < SYS-T; j++) val[j] = > 3)); e[i] |= val[j] & mask; } } } /* input: public key pk, error vector e */ /* output: syndrome s */ static void syndrome(unsigned char *s, const unsigned char *pk, unsigned char *e) 78 { unsigned char b, row[SYS_N/8]; const unsigned char *pk_ptr = pk; int i, j; for (i = 0; i < SYND-BYTES; i++) s[i] = 0; for (i = 0; i < PKNROWS; i++) for (j = 0; j < SYS_N/8; j++) row[j] = 0; for (j = 0; j < PK_ROW_BYTES; j++) row[ SYS_N/8 - PK_ROW_BYTES + j ] pk_ptr[j]; row[i/8] |= > 4; b A= b >> 2; b A — b >> 1; b &— 1; = 79 s[ i/8 ] |= (b

Ngày đăng: 25/08/2023, 14:54

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w