Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 179 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
179
Dung lượng
3,99 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ NGUYỄN ĐỨC TÂM MỘT SỐ PHƯƠNG PHÁP MÃ HÓA CÓ THỂ CHỐI TỪ DỰA TRÊN MÃ HÓA XÁC SUẤT MẬT MÃ TỐT NHẰM XÂY DỰNG TẦNG KHUẾCH TÁN/KHUẾCH TÁN ĐỘNG HIỆU QUẢ CHO MÃ KHỐI CẤU TRÚC SPN LUẬN ÁN TIẾN SĨ KỸ THUẬT MẬT MÃ Hà Nội – 2021 i LỜI CAM ĐOAN Tơi xin cam đoan cơng trình nghiên cứu riêng hướng dẫn tập thể cán hướng dẫn khoa học Các nội dung, số liệu kết trình bày Luận án hồn tồn trung thực chưa có tác giả cơng bố cơng trình khác, liệu tham khảo trích dẫn đầy đủ Tác giả Luận án Nguyễn Đức Tâm ii LỜI CẢM ƠN Luận án nghiên cứu sinh thực Học viện Kỹ thuật mật mã Ban Cơ yếu Chính phủ Nghiên cứu sinh xin bày tỏ lịng biết ơn sâu sắc tới nhà khoa học: Phó Giáo sư Tiến sĩ Lê Mỹ Tú Tiến sĩ Nguyễn Nam Hải, Thầy tận tình giúp đỡ, trang bị phương pháp nghiên cứu, kinh nghiệm, kiến thức khoa học kiểm tra, đánh giá kết suốt trình thực Luận án Nghiên cứu sinh xin trân trọng cảm ơn Học viện Kỹ thuật mật mã sở đào tạo đơn vị quản lý chun mơn, Đồng chí lãnh đạo Học viện Kỹ thuật mật mã - Ban Cơ yếu Chính phủ, nơi nghiên cứu sinh công tác tạo điều kiện thuận lợi, hỗ trợ giúp đỡ nghiên cứu sinh suốt trình học tập, nghiên cứu thực Luận án Xin chân thành cảm ơn nhà giáo, nhà khoa học, đồng chí đồng nghiệp thuộc Khoa Mật mã, Phịng Sau Đại học - Học viện Kỹ thuật mật mã; nhà khoa học Viện Khoa học Công nghệ mật mã - Ban Cơ yếu Chính phủ giúp đỡ, hỗ trợ nghiên cứu sinh trình thực Luận án Nghiên cứu sinh chân thành cảm ơn động viên, giúp đỡ to lớn từ phía gia đình, đồng nghiệp hỗ trợ nghiên cứu sinh suốt q trình thực hồn thành Luận án Nghiên cứu sinh Nguyễn Đức Tâm Nguyễn Đức Tâm iii MỤC LỤC trang DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT vi BẢNG ĐỐI CHIẾU THUẬT NGỮ viii DANH MỤC CÁC BẢNG ix DANH MỤC CÁC HÌNH VẼ x MỞ ĐẦU .1 Chương TỔNG QUAN VỀ MÃ HÓA CÓ THỂ CHỐI TỪ 1.1 Tổng quan mã hóa chối từ 1.1.1 Khái niệm mã hóa chối từ 1.1.2 Ứng dụng mã hóa chối từ 10 1.1.3 Khái niệm không phân biệt mặt tính tốn 10 1.1.4 Tính đắn, an tồn, chối từ mã hóa chối từ 11 1.1.5 Một số định nghĩa phân loại lược đồ mã hóa chối từ 13 1.1.6 Tấn cơng cưỡng ép mã hóa chối từ 20 1.1.7 Thẩm quyền đối phương thực cưỡng ép 22 1.2 Các hướng nghiên cứu mã hóa chối từ 23 1.2.1 Các cơng trình nghiên cứu mà hóa chối từ 23 1.2.2 Nhận xét cơng trình nghiên cứu mã hóa chối từ 27 1.3 Phương thức gài đặt mã hóa chối từ dựa mã hóa xác suất 29 1.3.1 Mã hóa xác suất ứng dụng mã hóa xác suất để gài đặt MHCTCT 29 1.3.2 Hai chế độ hoạt động giao thức mã hóa chối từ 31 1.4 Mơ tả toán cần giải Luận án 32 1.5 Kết luận chương 33 Chương ĐỀ XUẤT PHƯƠNG PHÁP MÃ HÓA CÓ THỂ CHỐI TỪ DỰA TRÊN GIAO THỨC BA BƯỚC SHAMIR 34 2.1 Giao thức ba bước Shamir 34 iv 2.1.1 Thuật tốn mã hóa giao hốn 34 2.1.2 Giao thức ba bước Shamir 34 2.2 Phương pháp mã hóa chối từ dựa giao thức ba bước Shamir 35 2.2.1 Phương pháp thực MHCTCT ngữ cảnh công 35 2.2.2 Một số thuật toán sử dụng 37 2.3 Đề xuất số giao thức mã hóa chối từ dựa giao thức ba bước Shamir 38 2.3.1 Giao thức 2.1: giao thức mã hóa chối từ sử dụng thuật toán Pohlig-Hellman 38 2.3.2 Giao thức 2.2: giao thức MHCTCT sử dụng thuật toán SRA 53 2.3.3 Giao thức 2.3: giao thức mã hóa chối từ sử dụng mã hóa Vernam kết hợp thuật tốn ElGamal 62 2.4 Nhận xét khuyến nghị sử dụng giao thức đề xuất 72 2.4.1 Đánh giá độ phức tạp thời gian tính tốn giao thức đề xuất 72 2.4.2 So sánh giao thức đề xuất với số cơng trình hướng nghiên cứu 73 2.4.3 Nhận xét khuyến nghị sử dụng giao thức đề xuất 76 2.5 Kết luận chương 78 Chương ĐỀ XUẤT PHƯƠNG PHÁP MÃ HÓA CÓ THỂ CHỐI TỪ DỰA TRÊN MÃ KHỐI 79 3.1 Mơ hình truyền tin, ngữ cảnh cơng tiêu chí thiết kế 79 3.2 Phương pháp mã hóa xác suất dựa mã khối 81 3.2.1 Lược đồ tổng quát mã hóa xác suất dựa mã khối 81 3.2.2 Lược đồ mã hóa xác suất dựa mã khối với hai giai đoạn mã hóa 83 3.3 Đề xuất phương pháp mã hóa chối từ dựa mã khối 84 3.3.1 Lược đồ gài đặt mã hóa chối từ dựa mã khối 84 v 3.3.2 Thuật tốn mã hóa chối từ dựa mã khối 93 3.4 Kết luận chương 108 KẾT LUẬN .109 DANH MỤC CÁC CƠNG TRÌNH CƠNG BỐ .111 TÀI LIỆU THAM KHẢO .113 PHỤ LỤC A: MỘT SỐ THUẬT TOÁN SỬ DỤNG .118 PHỤ LỤC B: MỘT SỐ KẾT QUẢ THỰC NGHIỆM VÀ MÃ NGUỒN CHƯƠNG TRÌNH THỰC NGHIỆM .121 vi DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT AES Chuẩn mã hóa tiên tiến (Advanced Encryption Standard) A Bên gửi A a|b a ước số b B Bên nhận B C Tập mã c CA Đơn vị cấp phát chứng thư (Certificate Authority) CPA Tấn công rõ chọn lựa (CPA: Chosen Plaintext Attack) Dk (c) Hàm giải mã D , giải mã mã DES Chuẩn mã hóa liệu (Data Encryption Standard) ĐPTC Đối phương cơng e c C với khóa k K Tập khóa mã riêng mã hóa khóa bất đối xứng Ek (m) Hàm mã hóa E , mã hóa thơng điệp m M với khóa k K gcd(a, b) Ước chung lớn a b (greatest common divisor) fr (Z ) Hàm trích chuỗi bit từ chuỗi bit z theo thuật tốn bí mật f (m) Hàm gài đặt mã hóa thơng điệp bí mật m H ( x) Hàm băm x IND-CPA Không phân biệt mặt tính tốn cơng lựa chọn rõ (Indistinguishability under chosen-plaintext attack) I K Khối mã trung gian MHCTCT Mã hóa chối từ m m Thơng điệp giả mạo m1 m2 Phép nối chuỗi bit m1 với chuỗi bit m2 m Kích thước theo bit M Tập thơng điệp mod p Phép tốn modulo p Tập tham số, khóa mã bí mật người dùng Thơng điệp bí mật m Tập số tự nhiên NIST Viện công nghệ chuẩn quốc gia Hoa Kỳ (National Institute of Standards and Technology) vii OTP Mã hóa khóa sử dụng lần (one-time pad) ord (t ) Cấp phần tử t nhóm PKE Mã hóa khóa cơng khai (Public-key encryption) R Tập ngẫu nhiên RSA Rivest -Shamir-Adlerman SRA Shamir-Rivest -Adlerman SKE Mã hóa khóa bí mật (Secret-key encryption) XOR * n Phép toán cộng modulo Tập phân bố xác suất biến ngẫu nhiên X n {X n }n c {X n }n {Yn }n {X n }n {Yn }n khơng phân biệt mặt tính tốn Tập số nguyên p Trường * p Nhóm nhân số nguyên theo modulo p p : tập hợp số nguyên nhỏ số nguyên p z Tham số bí mật dùng chung hai bên A B sử dụng giao thức trao đổi khóa an tồn để thống ( n) Hàm phi Eurler n viii BẢNG ĐỐI CHIẾU THUẬT NGỮ Nghĩa tiếng Anh Nghĩa tiếng Việt Active coercives Tấn công chủ động (cưỡng ép chủ động) Bi-deniable encryption Mã hóa chối từ đồng thời hai bên Coercer Người/ quan ép buộc Computational indistinguishability Khơng phân biệt mặt tính tốn Correctness Tính xác Coercive adversary Tấn cơng cưỡng ép Coercer adversary Đối phương cưỡng ép Deniability Tính chối từ Deniable Encryption Mã hóa chối từ Flexible-deniable encryption Mã hóa chối từ linh hoạt Fully-deniable encryption Mã hóa chối từ hồn tồn Negligible Không đáng kể Passive coercives Tấn công bị động (cưỡng ép bị động) Plan-ahead deniable encryption Mã hóa chối từ kế hoạch trước Probabilistic encryption Mã hóa xác suất Sender-deniable encryption Mã hóa chối từ bên gửi Receiver-deniable encryption Mã hóa chối từ bên nhận Security Tính an tồn Shamir three-pass protocol Giao thức ba bước Shamir ix DANH MỤC CÁC BẢNG trang Bảng 1.1 Phân loại MHCTCT theo bên chối từ 14 Bảng 2.1 Độ phức tạp tính tốn giao thức 2.1 chế độ gài đặt MHCTCT 73 Bảng 2.2 Độ phức tạp tính tốn giao thức 2.2 chế độ gài đặt MHCTCT 73 Bảng 2.3 Độ phức tạp tính toán giao thức 2.3 73 Bảng 2.4 So sánh giao thức Luận án đề xuất cơng trình nghiên cứu tương tự trước MHCTCT dựa giao thức ba bước Shamir 73 Bảng 2.5 So sánh giao thức 2.3 cơng trình nghiên cứu tương tự MHCTCT sử dụng hệ mã khóa bí mật OTP 75 Bảng B.1 Kết thực nghiệm tính đắn hiệu tính tốn giao thức 2.1 122 Bảng B.2 Kết thực nghiệm tính đắn hiệu tính toán Lược đồ MHCTCT dựa mã khối 140 153 mpz_clear(big_r3); mpz_clear(big_s1); mpz_clear(big_s2); mpz_clear(big_s3); mpz_clear(big_u1); mpz_clear(big_u2); mpz_clear(big_u3); mpz_clear(big_m_true_A); mpz_clear(big_m_true_B); mpz_clear(big_m_fake_A); mpz_clear(big_m_fake_B); mpz_clear(big_c11); mpz_clear(big_c12); mpz_clear(big_c21); mpz_clear(big_c22); mpz_clear(big_c31); mpz_clear(big_c32); return 1; } /* CAC HAM, THU TUC DUNG TRONG CHUONG TRINH CHINH */ /* HAM TINH DINH THUC: D = (z - z * kz)-1 mod p */ void get_D(mpz_t big_p, mpz_t big_z, mpz_t big_kz, mpz_t big_D) { mpz_t big_tmp1; mpz_init(big_tmp1); mpz_t big_tmp2; mpz_init(big_tmp2); mpz_t big_tmp3; mpz_init(big_tmp3); /* big_tmp1 = (z * kz) */ mpz_mul(big_tmp1, big_z, big_kz); /* big_tmp2 = (z - (z * kz)) = z - big_tmp1 */ mpz_sub(big_tmp2, big_z, big_tmp1); /* big_tmp3 = ((z - (kz * z))^-1 mod p) = big_tmp2^-1 mod p */ mpz_invert(big_tmp3, big_tmp2, big_p); /* Copy big_tmp3 to big_D */ mpz_set(big_D, big_tmp3); mpz_clear(big_tmp1); mpz_clear(big_tmp2); mpz_clear(big_tmp3); return; } /* HAM TINH DINH THUC: DC’ = (z - (kz * z *s)) mod p */ void get_DC1(mpz_t big_p, mpz_t big_z, mpz_t big_kz, mpz_t big_r, mpz_t big_s, mpz_t big_DC1) { 154 mpz_t big_tmp1; mpz_init(big_tmp1); mpz_t big_tmp2; mpz_init(big_tmp2); mpz_t big_tmp3; mpz_init(big_tmp3); mpz_t big_tmp4; mpz_init(big_tmp4); /* big_tmp1 = (z * kz) */ mpz_mul(big_tmp1, big_kz, big_z); /* big_tmp2 = (kz * z * s) */ mpz_mul(big_tmp2, big_tmp1, big_s); /* big_tmp3 = (z * r) */ mpz_mul(big_tmp3, big_z, big_r); /* big_tmp4 = ((z * r) - (kz * z *s)) = big_tmp3 - big_tmp2 */ mpz_sub(big_tmp4, big_tmp3, big_tmp2); /* big_DC1 = (((z * r) - (kz * z *s)) mod p) = big_tmp4 mod p */ mpz_mod(big_DC1, big_tmp4, big_p); mpz_clear(big_tmp1); mpz_clear(big_tmp2); mpz_clear(big_tmp3); mpz_clear(big_tmp4); return; } /* HAM TINH DINH THUC: DC” = (s - r) mod p */ void get_DC2(mpz_t big_p, mpz_t big_s, mpz_t big_r, mpz_t big_DC2) { mpz_t big_tmp1; mpz_init(big_tmp1); /* big_tmp1 = (s - r) */ mpz_sub(big_tmp1, big_s, big_r); /* big_DC2 = (s - r) mod p */ mpz_mod(big_DC2, big_tmp1, big_p); mpz_clear(big_tmp1); return; } /* HAM TINH CAC GIA TRI si: si = (c’i + (z * c”i)) mod p */ void get_s(mpz_t big_p, mpz_t big_c1, mpz_t big_c2, mpz_t big_z, mpz_t big_s1) { mpz_t big_tmp1; mpz_init(big_tmp1); mpz_t big_tmp2; mpz_init(big_tmp2); /* big_tmp1 = (z * c2) */ mpz_mul(big_tmp1, big_z, big_c2); /* big_tmp2 = c1 + big_tmp1 */ mpz_add(big_tmp2, big_c1, big_tmp1); 155 /* big_s1 = big_tmp2 mod p */ mpz_mod(big_s1, big_tmp2, big_p); mpz_clear(big_tmp1); mpz_clear(big_tmp2); return; } /* HAM TINH CAC GIA TRI ui = (c’i + (kz *z * c”i)) mod p */ void get_u(mpz_t big_p, mpz_t big_c1, mpz_t big_c2, mpz_t big_z, mpz_t big_kz, mpz_t big_s2) { mpz_t big_tmp1; mpz_init(big_tmp1); mpz_t big_tmp2; mpz_init(big_tmp2); mpz_t big_tmp3; mpz_init(big_tmp3); /* big_tmp1 = (z * c2) */ mpz_mul(big_tmp1, big_z, big_c2); /* big_tmp2 = (kz * z * c2) */ mpz_mul(big_tmp2, big_kz, big_tmp1); /* big_tmp3 = (c1 + (kz * z * c2)) = c1 + big_tmp2 */ mpz_add(big_tmp3, big_c1, big_tmp2); /* big_s2 = big_tmp3 mod p */ mpz_mod(big_s2, big_tmp3, big_p); mpz_clear(big_tmp1); mpz_clear(big_tmp2); mpz_clear(big_tmp3); return; } /* HAM KIEM TRA m CO LA PHAN TU NGUYEN THUY CUA Zp * */ void test_m(mmpz_t big_m, mpz_t big_p, mpz_t big_p1, mpz_t test_value) { mpz_t big_tmp1; mpz_init(big_tmp2); mpz_mul(big_tmp1, big_m, big_m); mpz_mod(big_tmp1, big_tmp1, big_p); mpz_powm(big_tmp2, big_m, big_p1, big_p); if(big_tmp1 != 1) && (big_tmp2 != 1) { test_value = 1; } else { test_value = 0; } mpz_clear(big_tmp1); mpz_clear(big_tmp2); return; } /* HAM GIAI HE PHUONG TRINH DONG DU */ void ProcPH(mpz_t big_p, mpz_t big_r, mpz_t big_z, 156 mpz_t big_kz, mpz_t big_e, mpz_t big_m, mpz_t big_c1, mpz_t big_c2) { int ret = 0; mpz_t big_s; mpz_init(big_s); mpz_t big_r; mpz_init(big_r); mpz_t big_D; mpz_init(big_D); mpz_t big_DC1; mpz_init(big_DC1); mpz_t big_DC2; mpz_init(big_DC2); mpz_t big_tmp1; mpz_init(big_tmp1); mpz_t big_tmp2; mpz_init(big_tmp2); /* s = m^e mod p */ mpz_powm(big_s, big_m, big_e, big_p); /* D = (z - (kz * z))^-1 mod p */ get_D(big_p, big_z, big_kz, big_D); /* DC1 = (z*r - (z * kz *s)) mod p */ get_DC1(big_p, big_z, big_kz, big_r, big_s, big_DC1); /* DC2 = (z - r) mod p */ get_DC2(big_p, big_s, big_r, big_DC2); /* big_c1 = (D * DC1) mod p */ mpz_mul(big_tmp1, big_D, big_DC1); mpz_mod(big_c1, big_tmp1, big_p); /* big_c2 = (D * DC2) */ mpz_mul(big_tmp2, big_D, big_DC2); mpz_mod(big_c2, big_tmp2, big_p); mpz_clear(big_r); mpz_clear(big_s); mpz_clear(big_D); mpz_clear(big_DC1); mpz_clear(big_DC2); mpz_clear(big_tmp1); mpz_clear(big_tmp2); return; } static char* hex2char(char *dst, unsigned char b) { unsigned char v = b >> 4; *dst++ = (v > 4; *dst++ = (v