Việc sinh các số nguyên tố “an toàn”
Khoa học Cơng nghệ lĩnh vực An tồn thơng tin Số ngun tố an tồn giao thức DH-KE Nguyễn Thanh Sơn Tóm tắt—Việc sinh số ngun tố “an tồn” 𝒑, mà tất ước nguyên tố khác 𝟐 𝒑 − 𝟏 ước nguyên tố lớn, cần thiết để tránh cơng nhóm nhỏ hai tác giả Chao Hoom Lim Pil Joong Lee Một thuật tốn có để sinh số nguyên tố trình bày hai tác giả Tuy nhiên, hạn chế phương pháp thuật tốn khơng phải trả số nguyên tố an toàn Một phần lý cho vấn đề thuật tốn khơng (và khó có thể) phân tích đánh giá kỹ lưỡng mặt tốn học Do đó, mục đích báo đề xuất thuật toán để sinh số nguyên tố an toàn kèm theo đánh giá chi tiết mặt toán học Abstract—The generate of “safe” primes 𝒑, where all prime divisors of 𝒑 − 𝟏 are large prime divisors, is essential to avoid small subgroup attacks which are point out by two authors Chao Hoom Lim and Pil Joong Lee An existing algorithm for generating such primes has also been presented by these two authors However, the drawback of that method is that the algorithm does not always return safe prime numbers Part of the reason for this is that the algorithm is not (and hardly) be thoroughly analyzed and evaluated mathematically Therefore, the main purpose of this paper is to propose a new algorithm for generating safe prime numbers, including detailed mathematical evaluations Từ khóa—Thuật tốn sinh số ngun tố an tồn; giao thức DH-KE Keywords—Safe prime generation algorithm; DH-KE protocol theo phương pháp giải toán logarit Pollard Lambda, Pollard Rho [3], Pollig Hellman [1],… Cụ thể, tham số 𝑝, 𝑞 khuyến cáo để sử dụng chuẩn mật mã phải số nguyên tố lớn Chẳng hạn, chuẩn FIPS PUB 186-3 [4] quy định 𝑝 có kích thước tối thiểu 1024-bit độ dài bit 𝑞 tương ứng 160-bit Khi ứng dụng thực tế lược đồ chữ ký số giao thức thỏa thuận khóa kiểu Diffie-Hellman (DH-KE) nảy sinh kiểu cơng người tham gia hệ thống nhằm tìm khóa mật người cịn lại Loại công Chao Hoom Lim Pil Joong Lee (Lim-Lee) công bố năm 1997 [2] tác giả [11] nghiên cứu, xem xét để đề xuất tiêu chuẩn cho tham số modulo 𝑝 Cũng để chống lại công trên, năm 2006, Tổ chức Tiêu chuẩn hóa quốc tế (ISO) ban hành chuẩn ISO/IEC 11770-4:2006 (xem ISO/IEC 11770-4:2006, Clause 5) phát biểu sau: Tiêu chuẩn (Tiêu chuẩn phân rã 𝑝 – 1) Số nguyên tố p dùng giao thức thỏa thuận khóa DH-KE với phần tử sinh g ∈ GF(p) có cấp 𝑞, phải thỏa mãn điều kiện sau: a) 𝑝 = 2𝑞𝑞1 𝑞2 … 𝑞𝑘 + với 𝑞𝑖 số nguyên tố (không thiết khác nhau) b) 𝑞𝑖 > 𝑞 (1 𝑖 𝑘) I ĐẶT VẤN ĐỀ (1) Đối với ứng dụng mật mã hệ mật khóa cơng khai lược đồ chữ ký số có độ an tồn dựa độ khó tốn logarit 𝐺𝐹(𝑝) tham số (𝑝, 𝑞, 𝑔) (với 𝑝 số nguyên tố, 𝑞 ước nguyên tố 𝑝 – 𝑜𝑟𝑑(𝑔) = 𝑞) lựa chọn để sử dụng cần chống công Trong Phần II, tác giả rằng: Để chống cơng Lim-Lee điều kiện (b) cần là: Bài báo nhận ngày 12/7/2020 Bài báo nhận xét phản biện thứ ngày 27/7/2020 chấp nhận đăng ngày 27/7/2020 Bài báo nhận xét phản biện thứ hai ngày 03/8/2020 chấp nhận đăng ngày 03/8/2020 Định nghĩa Bộ tham số (𝑝, 𝑞, 𝑔) việc thỏa mãn việc giải toán logarit rời rạc theo số g khó cịn thỏa mãn thêm điều kiện 𝑞𝑖 ≥ 𝑞 (1 ≤ 𝑖 ≤ 𝑘) (2) Trên sở đưa định nghĩa tham số (𝑝, 𝑞, 𝑔) an toàn cho DH-KE sau Số 1.CS (11) 2020 23 Journal of Science and Technology on Information security (1) (2) gọi tham số an toàn cho giao thức DH-KE 𝐺𝐹(𝑝) Cũng cơng trình [2], Lim-Lee đưa thuật tốn mang tính thực nghiệm để sinh số nguyên tố an toàn Thuật tốn sau sử dụng để sinh số nguyên tố an toàn thư viện mật mã Miracl [9], PGP [6], GNU PG [8] Gutmann’s cryptlib [7] Tuy nhiên đề cập, thuật toán đề xuất Lim-Lee mang ý nghĩa thực nghiệm Điều thuật tốn hai tác giả khơng phải trả kết không phân tích chi tiết mặt tốn học Do vậy, mục tiêu báo đề xuất thuật tốn sinh số ngun tố “an tồn” kèm theo đảm bảo tốn học cho Cụ thể, thuật tốn đề xuất trình bày Phần III phân tích tính đắn, độ phức tạp thuật toán đánh giá Phần IV II SỐ NGUYÊN TỐ AN TOÀN TRONG CÁC GIAO THỨC DH-KE A Độ phức tạp cơng tìm khóa mật giao thức DH-KE Lim-Lee Để hiểu rõ việc cần sử dụng tham số an toàn giao thức DH-KE, mục trình bày lại cơng hai tác giả trên, đưa phân tích để lý giải cho chuẩn Trong viết mình, Lim-Lee thực việc công1 lên họ giao thức trao đổi khóa MTI [5] với kết thu là: Bổ đề (Độ phức tạp cơng tìm xB mod u) Như việc tìm 𝑥𝐵 (hoặc 𝑘𝐵 ), cần tìm nốt 𝑥𝐵 𝑑𝑖𝑣 𝑢 (hoặc 𝑘𝐵 𝑑𝑖𝑣 𝑢) Việc thực giải toán sau Bài toán Cho 𝑔 ∈ 𝐺𝐹(𝑝) với 𝑜𝑟𝑑(𝑔) = 𝑞 𝑢 > số nguyên cho 𝑔𝑐𝑑(𝑢, 𝑞) = Xét phương trình: 𝑏 = 𝑔 𝑥 𝑚𝑜𝑑 𝑝 (3) Hãy tìm 𝑥 biết 𝑥0 = 𝑥 𝑚𝑜𝑑 𝑢 Cách giải toán Ký hiệu 𝐵 = 𝑏 𝑔−𝑥0 𝑚𝑜𝑑 𝑝, 𝐺 = 𝑔𝑢 𝑚𝑜𝑑 𝑝 𝑥1 = 𝑥 𝑑𝑖𝑣 𝑢 (3) trở thành 𝐵 = 𝐺 𝑥1 𝑚𝑜𝑑 𝑝 Do từ 𝑥 < 𝑞 nên 𝑥1 < 𝑞/𝑢 nên lấy 𝑚 = ⌈√𝑞/𝑢⌉ 𝑥1 = 𝑥′1 + 𝑥"1 𝑚 với ≤ 𝑥′1 , 𝑥"1 < 𝑚 Với việc sử dụng phương pháp Daniel Shank, tìm 𝑥1 với không 𝑚 phép nhân 𝐺𝐹(𝑝) lưu trữ 𝑚 phần tử 𝐺𝐹(𝑝) Cùng với Bổ đề 1, ta thu kết sau Kết (Độ phức tạp cơng tìm xB ) Độ phức tạp cơng tìm 𝑥𝐵 𝑚𝑎𝑥{𝑢, ⌈√𝑞/𝑢⌉} (4) Chú ý Trong giao thức DH-KE có xác thực biết khóa ngắn hạn theo phiên 𝑘𝐵 , từ lược đồ chữ ký sử dụng giao thức nên ln tính khóa bí mật 𝑥𝐵 B Vai trò tham số an toàn giao thức DH-KE Trong mục kết luận sau: Với u ước p – sau 𝑥𝐵 𝑚𝑜𝑑 𝑢 (hoặc 𝑘𝐵 𝑚𝑜𝑑 𝑢) bước tính tốn A tìm 𝑥𝐵 𝑚𝑜𝑑 𝑢 (hoặc 𝑘𝐵 𝑚𝑜𝑑 𝑢) với 𝑥𝐵 khóa ký B (hoặc 𝑘𝐵 khóa ngắn hạn theo phiên B thực giao thức) Kết luận Nếu (p, q, g) tham số an tồn theo Định nghĩa 1, cơng Lim-Lee để tìm khóa mật 𝑥𝐵 khơng thể (theo nghĩa người công thực thời gian thực) Nói cách khác, độ phức tạp công Lim-Lee O(u) Chứng minh Hơn nữa, cơng Lim-Lee áp dụng lên giao thức trao đổi khóa HMQV, giao thức trao đổi khóa KEA+ trường hợp số ngun tố 𝑝 khơng phải số nguyên tố an toàn 24 No 1.CS (11) 2020 Biết ứng dụng mật mã có độ an tồn dựa tính khó giải tốn logarit 𝐺𝐹(𝑝) tham số 𝑞 cần chọn cho việc giải toán logarit rời rạc 𝐺𝐹(𝑝) khơng thể Trong việc thực ⌈√𝑞⌉ người giải Khoa học Cơng nghệ lĩnh vực An tồn thơng tin Các tham số khóa mật 𝑥𝐵 khóa ngắn hạn theo phiên 𝑘𝐵 chọn đủ lớn, khơng thể tìm theo phương pháp vét cạn (việc thực 𝑥𝐵 phép toán khơng thể người giải) Thuật tốn Với (𝑝, 𝑞, 𝑔) an tồn xảy hai khả 𝑢 là: while (𝑝 is not prime) u = Khi đó, theo (4) cơng Lim-Lee có chi phí thực tính tốn ⌈√𝑞/2⌉ ≈ ⌈√𝑞⌉ nên u ≠ Theo điều kiện (2) 𝑢 𝑞 nên 𝑥𝐵 𝑚𝑜𝑑 𝑢 = 𝑥𝐵 , cơng Lim-Lee khơng thể Như vậy, Kết luận chứng minh.■ III THUẬT TỐN SINH CÁC SỐ NGUN TỐ AN TỒN Trong phần đưa thuật toán sinh cặp số nguyên tố 𝑝, 𝑞 có độ dài tương ứng 𝑙𝑒𝑛(𝑝) = 𝐿, 𝑙𝑒𝑛(𝑞) = 𝑁 cho 𝑞 | (𝑝 – 1) 𝑝 thỏa mãn yêu cầu số nguyên tố an toàn đưa Định nghĩa A Một số ký hiệu Output: 𝑝 ∈ 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) 𝑝 ∈𝑅 [𝐴, 𝐵] 𝑝 ← 𝑁𝑒𝑥𝑡[𝐴,𝐵] (𝑝) return 𝑝 Hàm 𝑁𝑒𝑥𝑡Prime(A,B) () thực theo thuật toán sau: Thuật toán Input: 𝑝 ∈ 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) Output: 𝑞 ∈ 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) thỏa mãn định nghĩa hàm 𝑁𝑒𝑥𝑡 với việc đánh số số nguyên tố 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) theo thứ tự tăng dần 𝑞 ← 𝑁𝑒𝑥𝑡[𝐴,𝐵] (𝑝) while (𝑞 is not prime) 𝑞 ← 𝑁𝑒𝑥𝑡[𝐴,𝐵] (𝑞) return 𝑞 Chú ý Cho 𝑆 → {𝑎𝑗 } Khi đó: Input: [𝐴, 𝐵] 𝑗=1,…,𝑚 tập hữu hạn Việc lấy ngẫu nhiên phần tử 𝑎 𝑆 ký hiệu 𝑎 = 𝑅𝑎𝑛𝑑𝑜𝑚(𝑆) (hoặc 𝑎 ∈𝑅 𝑆) Hàm 𝑁𝑒𝑥𝑡: 𝑆 → 𝑆 xác định sau 𝑁𝑒𝑥𝑡𝑆 (𝑎𝑗 ) = [ 𝑎𝑗+1 𝑎1 𝑗 < 𝑚 𝑗=𝑚 Cho 𝑆 tập số tự nhiên Khi đó: Tập số nguyên 𝑎 thỏa mãn 𝐴 𝑎 𝐵 ký hiệu [𝐴, 𝐵] Tập số nguyên tố 𝑆 ký hiệu 𝑃𝑟𝑖𝑚𝑒(𝑆), đặc biệt 𝑆 = [𝐴, 𝐵] tập 𝑃𝑟𝑖𝑚𝑒([𝐴, 𝐵]) viết gọn lại 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) Hàm 𝑁𝑒𝑥𝑡𝑆 : 𝑆 → 𝑆 xác định sau: Hàm 𝑁𝑒𝑥𝑡[𝐴,𝐵] (𝑎) = [𝑎 + 𝑎 < 𝐵 𝐴 𝑎 = 𝐵 a) Do phải duyệt toàn hợp số số nguyên tố đầu vào đến số nguyên tố đầu Thuật toán 2, Thuật toán cần duyệt từ số số ngun tố đầu chi phí trung bình để thực hàm Next Prime(A,B) ( ) gấp đơi chi phí trung bình để thực hàm 𝑅𝑎𝑛𝑑𝑜𝑚(𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵)) Như ký #[A,B] hiệu: 𝜌 = #Prime(A,B) gọi khoảng cách trung bình hai số nguyên tố [𝐴, 𝐵] việc thực hàm 𝜌 𝑅𝑎𝑛𝑑𝑜𝑚(𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵)) cần trung bình phép kiểm tra tính ngun tố, cịn hàm 𝑁𝑒𝑥𝑡𝑃𝑟𝑖𝑚𝑒(𝐴,𝐵) ( ) cần trung bình 𝜌 phép kiểm tra tính ngun tố b) Đối với Thuật toán 1, 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) = ∅ khơng dừng Để tránh lỗi ta kiểm tra việc duyệt toàn số nguyên [𝐴, 𝐵] hay chưa, chẳng hạn sửa Thuật toán thành Thuật toán 1a sau Hàm 𝑅𝑎𝑛𝑑𝑜𝑚(𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵)) thực theo thuật toán sau: Số 1.CS (11) 2020 25 Journal of Science and Technology on Information security Thuật toán 1a 𝑖 ← Input: [𝐴, 𝐵] while (𝑖 < 𝑘) Output: 𝑝 ∈ 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) ≠ ∅ Ngược lại đưa thông báo "𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) = ∅" 5.1 𝑁𝑖 ∈𝑅 [𝑁, 𝐿 − 𝑀𝑖−1 − (𝑘 − 𝑖) ∗ 𝑁 − 1] 𝑝 ∈𝑅 [𝐴, 𝐵]; stop ← 𝑝; ok ← ok ← (𝑝 is prime) if (ok) then return 𝑝 else then: 4.1 𝑝 ← 𝑁𝑒𝑥𝑡[𝐴,𝐵] (𝑝) 4.2 ok ← (𝑝 is prime) 5.2 if (𝑁𝑖 = 𝑁) then 𝑞𝑖 ← 𝑅𝑎𝑛𝑑𝑜𝑚(𝑃𝑟𝑖𝑚𝑒(𝑞, 2𝑁 − 1)); 5.3 else 𝑞𝑖 ← 𝑅𝑎𝑛𝑑𝑜𝑚(𝑃𝑟𝑖𝑚𝑒(2𝑁𝑖−1 , 2𝑁𝑖 − 1)) 5.4 𝑓𝑖 ← 𝑓𝑖−1 ∗ 𝑞𝑖 ; 𝑀𝑖 ← 𝑙𝑒𝑛(𝑓𝑖 ) 5.5 𝑖 ← 𝑖 + [Sinh số nguyên tố p] 2𝐿−1 2𝐿 −1 4.3 while (ok = 0) and (stop ≠ 𝑝) 𝐴 ← ⌈ 4.3.1 𝑝 ← 𝑁𝑒𝑥𝑡[𝐴,𝐵] (𝑝) 𝑞𝑘 ← 𝑅𝑎𝑛𝑑𝑜𝑚(𝑃𝑟𝑖𝑚𝑒[𝐴, 𝐵]) 4.3.2 ok ← (𝑝 is prime) 𝑝 ← 𝑓𝑘−1 ∗ 𝑞𝑘 + if (ok = 0) then return "𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) = ∅" while 𝑝 is not prime do: else return 𝑝 9.1 𝑞𝑘 ← 𝑁𝑒𝑥𝑡𝑃𝑟𝑖𝑚𝑒[𝐴,𝐵] (𝑞𝑘 ) Kỹ thuật áp dụng sử dụng hàm 𝑁𝑒𝑥𝑡𝑃𝑟𝑖𝑚𝑒(𝐴,𝐵) nhiều lần với thêm vào đầu thông báo “Đã duyệt hết phần tử 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵)” trường hợp đầu hàm 𝑁𝑒𝑥𝑡𝑃𝑟𝑖𝑚𝑒(𝐴,𝐵) lần thực thứ 𝑗 đầu vào hàm lần thực 9.2 𝑝 ← 𝑓𝑘−1 ∗ 𝑞𝑘 + B Thuật toán sinh số nguyên tố an tồn Thuật tốn Input: 𝐿, 𝑁 hai số nguyên 𝑁 > 𝐿 2(𝑁 + 1) Output: 𝑝, 𝑞 hai số nguyên tố, thỏa mãn 𝑙𝑒𝑛(𝑝) = 𝐿, 𝑙𝑒𝑛(𝑞) = 𝑁 𝑝 số nguyên tố an toàn theo Định nghĩa [Sinh số nguyên tố 𝑞] 𝑞 ← 𝑅𝑎𝑛𝑑𝑜𝑚(𝑃𝑟𝑖𝑚𝑒(2𝑁−1 , 2𝑁 − 1)) 𝑓0 ← ∗ 𝑞, 𝑀0 ← 𝑙𝑒𝑛(𝑓0 ) [Xác định số ước 𝑞𝑖 ] 𝐿−𝑀0 −1 𝑘 ∈𝑅 [1 , ⌊ 𝑁 ⌋] //Từ 𝐿 2(𝑁 + 1) 𝑀0 = 𝑁 + nên 𝐿 − 𝑀0 − ≥ 𝑁 [Sinh 𝑘 – số nguyên tố 𝑞𝑖 với 𝑖 = 1, … , 𝑘 – 1] 26 No 1.CS (11) 2020 𝑓𝑘−1 ⌉; 𝐵 ← ⌊ 𝑓 𝑘−1 ⌋ 10 return (𝑝, 𝑞) Chú ý Theo phần a) Chú ý bước 9.1 thuật tốn thay 𝑞𝑘 ← 𝑅𝑎𝑛𝑑𝑜𝑚(𝑃𝑟𝑖𝑚𝑒[𝐴, 𝐵]) hiệu Tuy nhiên trường hợp không tồn số nguyên tố 𝑝 = 𝑓𝑘−1 ∗ 𝑞𝑘 + với 𝑞𝑘 ∈ 𝑃𝑟𝑖𝑚𝑒[𝐴, 𝐵] ta khơng có giải pháp nêu phần b) Chú ý để định dừng thuật toán với đầu thơng báo “𝑁𝑢𝑙𝑙” IV PHÂN TÍCH THUẬT TỐN A Một số kết hỗ trợ Bổ đề Với ≤ 𝑖 < 𝑘 𝐿 − 𝑀𝑖−1 − ≥ (𝑘 − 𝑖 + 1)𝑁 (5) Chứng minh Trước tiên theo bước bước 5.4 thì: 𝑀0 = 𝑙𝑒𝑛(2 ∗ 𝑞) 𝑀𝑖 = 𝑙𝑒𝑛(2 ∗ 𝑞 ∗ 𝑞1 ∗ … ∗ 𝑞𝑖 ) (6) Cịn theo bước 5.2 5.3 𝑙𝑒𝑛(𝑞𝑖 ) = 𝑁𝑖 (7) Tiếp theo chứng minh bất đẳng thức (5) phương pháp quy nạp sau Khoa học Cơng nghệ lĩnh vực An tồn thơng tin Với 𝑖 = 1, theo cơng thức tính 𝑘 bước 𝐿−𝑀 −1 𝐿−𝑀 −1 𝑘 = 𝑅𝑎𝑛𝑑𝑜𝑚 [1 , ⌊ ⌋] tức 𝑘 ≤ ⌊ ⌋ 𝑁 𝑁 hay 𝐿 − 𝑀𝑖−1 − = 𝐿 − 𝑀0 − ≥ 𝑘𝑁 = (𝑘 − 𝑖 + 1)𝑁 Ta có: 𝐴,𝐵 (𝑥)~ 𝜑(𝐴) (𝑥) Như vậy, với 𝑥 đủ lớn viết: 𝐴,𝐵 (𝑥) ≈ 𝜑(𝐴) (𝑥) Từ Bổ đề 4, thu số hệ sau Chứng tỏ bất đẳng thức (5) với 𝑖 = Giả thiết quy nạp (5) đến 𝑖 với ≤ 𝑖 < 𝑘 − 1, xét 𝐿 − 𝑀(𝑖+1)−1 − = 𝐿 − 𝑀𝑖 − (8) Hệ Các tập sử dụng bước 5.1 khác rỗng, tức [𝑁, 𝐿 − 𝑀𝑖−1 − (𝑘 − 𝑖) ∗ 𝑁 − 1] ≠ ∅ Chứng minh Theo (5) 𝐿 − 𝑀𝑖−1 − ≥ (𝑘 − 𝑖 + 1)𝑁 Từ (6) (7) ta có: 𝐿 − 𝑀𝑖−1 − (𝑘 − 𝑖)𝑁 ≥ 𝑁 𝑀𝑖 = 𝑙𝑒𝑛(2 ∗ 𝑞 ∗ 𝑞1 ∗ … ∗ 𝑞𝑖 ) Suy ra, có tập ≤ 𝑙𝑒𝑛(2 ∗ 𝑞 ∗ 𝑞1 ∗ … ∗ 𝑞𝑖−1 ) + 𝑙𝑒𝑛(𝑞𝑖 ) = 𝑀𝑖−1 + 𝑁𝑖 (9) Hệ Mọi số nguyên tố 𝑞𝑘 thỏa mãn 𝑞𝑘 𝑞 Mặt khác, theo bước 5.1 𝑁𝑖 ≤ 𝐿 − 𝑀𝑖−1 − − (𝑘 − 𝑖)𝑁 Chứng minh hay 𝐿 − 𝑀𝑖−1 − 𝑁𝑖 − ≥ (𝑘 − 𝑖)𝑁 = (𝑘 − (𝑖 + 1) + 1)𝑁 [𝑁, 𝐿 − 𝑀𝑖−1 − (𝑘 − 𝑖) ∗ 𝑁 − 1] ≠ ∅.■ (10) Thay (9) vào vế phải (8) vế phải trở thành vế trái (10), nên theo bất đẳng thức có: 𝐿 − 𝑀(𝑖+1)−1 − 𝐿 − 𝑀𝑖−1 − 𝑁𝑖 − (𝑘 − (𝑖 + 1) + 1)𝑁 Bất đẳng thức cho thấy (5) với 𝑖 + 1, bổ đề chứng minh.■ Nhắc lại định lý Gauss định lý Drichlet trình bày [10] số nguyên tố Định lý Gauss Do 𝑞𝑘 ∈ 𝑃𝑟𝑖𝑚𝑒[𝐴, 𝐵] nên cần chứng minh 𝐴 𝑞 hệ hiển nhiên Do 𝑓𝑘−1 = 𝑓𝑘−2 𝑞𝑘−1 nên 𝑀𝑘−1 ≤ 𝑙𝑒𝑛(𝑓𝑘−2 ) + 𝑙𝑒𝑛(𝑞𝑘−1 ) = 𝑀𝑘−2 + 𝑁𝑘−1 (11) Theo cách xác định 𝑁𝑘−1 𝑁𝑘−1 ≤ 𝐿 − 𝑀(𝑘−1)−1 − (𝑘 − (𝑘 − 1))𝑁 − = 𝐿 − 𝑀𝑘−2 − 𝑁 − Hay 𝑀𝑘−2 + 𝑁𝑘−1 ≤ 𝐿 − 𝑁 − Từ (11) (12) thu 2𝐿−1 Ký hiệu (𝑥) số số nguyên tố 𝑥 Ta có: 𝑥 (𝑥) ~ 𝑙𝑛𝑥 𝑥 theo nghĩa 𝑙𝑖𝑚 (𝑥)𝑙𝑛𝑥 = 𝑥→∞ Như với 𝑥 đủ lớn, ta viết 𝑥 (𝑥) ≈ 𝑙𝑛𝑥 Định lý Drichlet Cho A B hai số tự nhiên thỏa mãn 𝑔𝑐𝑑(𝐴, 𝐵) = Ký hiệu 𝐴,𝐵 (𝑥) số số nguyên tố 𝑝 = 𝑡 𝐴 + 𝐵 𝑥 (𝑡 = 0, 1, 2, … ) (12) 𝐴 = ⌈𝑓 𝑘−1 2𝐿−1 ⌉≥𝑓 𝑘−1 ≥ 2𝐿−1−𝑀𝑘−1 ≥ 2𝐿−1−(𝐿−𝑁−1) = 2𝑁 > 𝑞 Đây điều cần chứng minh.■ Hệ Với A B xác định bước Thuật tốn thì: a) B < 2𝐿−𝑁 (13) 𝑁 b) 𝐵 − 𝐴 + ≥ (14) Chứng minh 2𝐿 −1 Từ 𝐵 = ⌊ 𝑓 𝑘−1 ⌋ nên 𝐵 lớn 𝑘 = 1, 𝑓𝑘−1 = 𝑓0 = 2𝑞 số (N+1)-bit nên 𝑓𝑘−1 ≥ 2𝑁 Cho nên: Số 1.CS (11) 2020 27 Journal of Science and Technology on Information security 2𝐿 −1 𝐵=⌊ 𝑓𝑘−1 ⌋≤ 2𝐿 −1 2𝐿 < 𝑓𝑘−1 2𝑁 2𝑁−1 = 2𝐿−𝑁 nguyên 𝑡 thỏa mãn ⌈ Theo (12) 𝑙𝑒𝑛(𝑓𝑘−1 ) = 𝑀𝑘−1 ≤ 𝑀𝑘−2 + 𝑁𝑘−1 ≤ 𝐿 − 𝑁 − 1, hay 𝑓𝑘−1 < 2𝐿−𝑁−1 Nên 2𝐿 −1 ≥ = ⌊𝑓 𝑘−1 2𝐿 −1 (𝑓 𝑘−1 2𝐿−1 𝑓𝑘−1 2𝐿−1 ⌋ − ⌈𝑓 𝑘−1 2𝐿−1 𝑘−1 2𝐿−1 Như vậy, Hệ chứng minh.■ 2𝑁−1 c) Hơn f chẵn nhỏ 2𝑁−1 𝜌𝑓 (𝑁) ≤ 𝑁 (16) 𝜋(2𝑁 ) − 𝜋(2𝑁−1 ) ≈ 2𝑁 2𝑁−1 − 𝑁𝑙𝑛2 (𝑁 − 1)𝑙𝑛2 2𝑁−1 (𝑁−2) = 𝑁(𝑁−1)𝑙𝑛2 Còn số số nguyên N-bit 2𝑁−1 nên: 𝑁→∞ +1= 2𝑁−1 +𝑓−1 𝑓 N 2N − ( φ(f) Nln2 𝐷𝑓 (𝑁) 𝑁 𝑓 (2 )−𝑓 (2𝑁−1 ) 𝜑(𝑓) 𝑁(2𝑁−1 +𝑓−1) 𝑓 2𝑁−1 Như chứng minh xong bất đẳng thức phần b) Bổ đề Từ giả thiết 𝑓 số chẵn nên 𝜑(𝑓) (2𝑁−1 +𝑓−1) 𝑓 < 2, từ 𝑓 < 2𝑁−1 nên 2𝑁−1 ≤ 2, thay vào vế phải bất đẳng thức có bất đẳng thức (16) Bổ đề chứng minh.■ B Các đánh giá Thuật toán 2𝑁 Số số nguyên tố N-bit, theo định lý Gauss là: Do 𝑙𝑖𝑚 𝑓 Đánh giá Thuật toán đắn, Chứng minh 𝜌(𝑁) = = (15) 𝜑(𝑓) 𝑁(2𝑁−1 +𝑓−1) 2𝑁−1 2𝑁−1 + 𝑓 − 1 2𝑁−1 ≤( ):( ) 𝑓 𝜑(𝑓) 𝑁 a) Khoảng cách trung bình số nguyên tố tập số nguyên N-bit, ký hiệu 𝜌(𝑁), đánh giá theo biểu thức sau: b) Khoảng cách trung bình số nguyên tố tập số nguyên N-bit dạng 𝑡 𝑓 + với f số tự nhiên lớn 1, ký hiệu 𝜌𝑓 (𝑁), đánh giá theo biểu thức sau 2N−1 Do đó, 𝜌𝑓 (𝑁) = Bổ đề Với số tự nhiên 𝑁 đủ lớn thì: 𝑓 ) > φ(f) (N−1)ln2 𝜌(𝑁) < 𝑁 − f (2N ) − f (2N−1 ) ≈ 2N−1 = − 𝑓 Theo định lý Drichlet số số ngun tố N-bit có dạng 𝑡 𝑓 + là: − > 2𝐿−𝑁−1 − 𝑁 𝜌𝑓 (𝑁) ≤ 2𝑁 −1 ≤ + 1) + 𝑘−1 −𝑓 ⌋−1 2𝑁 − 2𝑁−1 𝐷𝑓 (𝑁) = (⌊ ⌋ − 1) − (⌈ ⌉ − 1) + 𝑓 𝑓 ⌉+1 − 1) − (𝑓 𝑓 nên có ước lượng sau: Vậy (13) chứng minh 𝐵−𝐴+1= 𝑓 2𝑁 −1 ⌉−1≤𝑡 ≤⌊ 2𝑁−1 𝜋(2𝑁 )−𝜋(2𝑁−1 ) (𝑁−1)𝑙𝑛2 (𝑁−2) = 𝑁(𝑁−1)𝑙𝑛2 (𝑁−2) = 𝑙𝑛2 < nên với 𝑁 đủ lớn, ta có vế phải < 𝑁 hay (15) chứng minh Trước hết, số số nguyên N-bit có dạng 𝑡 𝑓 + 1, ký hiệu 𝐷𝑓 (𝑁) số số (𝐿−𝑁)𝐿 > thuật tốn ln sinh (𝑝, 𝑞) an tồn theo Định nghĩa Chứng minh Biết với số nguyên dương a 𝑃𝑟𝑖𝑚𝑒(𝑎, 2𝑎) ≠ ∅ nên với 𝑁 ta có 𝑃𝑟𝑖𝑚𝑒(2𝑁−1 , 2𝑁 − 1) = 𝑃𝑟𝑖𝑚𝑒(2𝑁−1 , 2𝑁 ) ≠ ∅, 𝑞 số nguyên tố N-bit nên 𝑃𝑟𝑖𝑚𝑒(𝑞, 2𝑁 − 1) ≠ ∅ nên bước 1, 5.2 5.3 thực số nguyên tố 𝑞𝑖 tìm bước thỏa mãn 𝑞𝑖 𝑞 Từ giả thiết 𝐿 2(𝑁 + 1) từ 𝑀0 = 𝑙𝑒𝑛(2𝑞) = 𝑁 + nên: 𝐿−𝑀0 −1 ⌊ 𝑁 𝐿−𝑀0 −1 [1, ⌊ 2(𝑁+1)−(𝑁+1)−1 ⌋≥⌊ 𝑁 𝑁 ⌋=1 ⌋] ≠ ∅ Vậy bước thực 28 No 1.CS (11) 2020 hay Khoa học Cơng nghệ lĩnh vực An tồn thơng tin Hệ điều kiện để bước 5.1 thực ký hiệu 𝑇𝑇𝑒𝑠𝑡 (𝑁) để đại diện cho chi phí kiểm tra tính nguyên tố số nguyên N-bit Muốn chứng tỏ bước thực ta cần 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) ≠ ∅ Đánh giá Chi phí để sinh cặp (𝑝, 𝑞) an tồn với 𝑝 – có 𝑘 + ước nguyên tố kể bội, ký hiệu 𝑇𝐺𝑒𝑛 (𝑘), cho công thức sau Quả 2𝐿 −1 : 2𝐿−1 𝑓𝑘−1 𝑓𝑘−1 thật, 𝐵 2𝐿 −1 2𝐿−1 𝑘−1 𝑘−1 = ⌊𝑓 𝐴 ⌋ : ⌈𝑓 ⌉≤ < nên [𝐴, 𝐵] gồm số nguyên T-bit gồm hai loại số nguyên T-bit (T–1)-bit (ở 𝑇 = 𝑙𝑒𝑛(𝐵)) Trong trường hợp thứ nhất, theo phần a) Bổ đề thì: # 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) ≥ 𝐵−𝐴+1 𝑇 Cịn trường hợp thứ hai, theo Bổ đề thì: # 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) = # 𝑃𝑟𝑖𝑚𝑒(𝐴, 2𝑇−1 − 1) + # 𝑃𝑟𝑖𝑚𝑒(2𝑇−1 , 𝐵) 2𝑇−1 −𝐴 𝑇−1 + 𝐵−2𝑇−1 +1 𝑇 ≥ 𝐵−𝐴+1 𝑇 Mặt khác, giá trị 𝐵 ứng với trường hợp 𝑘 = lớn nhất, 𝑓 = 2𝑞, nên 𝐵 < 2𝐿−𝑁 Bất đẳng thức có nghĩa 𝑇 = 𝑙𝑒𝑛(𝐵) < 𝐿 – 𝑁 kết hợp với bất đẳng thức (6) Hệ 7, thu bất đẳng thức sau: # 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) > 2𝑁 𝐿−𝑁 Cuối cùng, xét đến bước thuật toán Trong bước số duyệt có dạng 𝑝 ← 𝑓𝑘−1 ∗ 𝑞𝑘 + với 𝑞𝑘 ∈ 𝑃𝑟𝑖𝑚𝑒(𝐴, 𝐵) 2𝑁 Chúng gồm không (𝐿−𝑁) số L-bit 𝑓𝑘−1 số chẵn nhỏ 2𝐿 , nên theo phần c) Bổ đề số số nguyên tố số là: # 𝑃𝑟𝑖𝑚𝑒(𝐴,𝐵) 𝜌𝑓𝑘−1 (𝐿) 2𝑁 (𝐿−𝑁)𝐿 Từ bất đẳng thức trên, ta thấy vế phải bất đẳng thức lớn thuật tốn tìm cặp (𝑝, 𝑞) Tính an tồn (𝑝, 𝑞) cho Hệ Kết trình bày đánh giá chi phí tính tốn Thuật toán Do thuật toán sử dụng đến việc kiểm tra tính nguyên tố số nguyên mà việc làm có chi phí phụ thuộc vào phương pháp kiểm tra (chẳng hạn chi phí theo phương pháp Miller Rabin 𝑂(𝑁 ) theo AKS 𝑂(𝑁 )) nên tác giả dùng 𝑘.𝑁 𝑇𝐺𝑒𝑛 (𝑘) ≤ 𝑇𝑇𝑒𝑠𝑡 (𝑁) + 𝐿(𝑇𝑇𝑒𝑠𝑡 (𝐿) + 𝑀 𝑇𝑇𝑒𝑠𝑡 (𝑀)) (17) Với 𝑀 = 𝐿 − 𝑘𝑁 + 𝑘 − Chứng minh Từ giả thiết 𝑝 – có 𝑘 + ước nguyên tố kể bội, bỏ qua hai ước nguyên tố 𝑞 cịn thêm 𝑘 ước ngun tố (đương nhiên 𝐿−𝑀 −1 theo thuật toán ≤ 𝑘 ≤ ⌊ ⌋) Ngồi 𝑁 𝑇𝑇𝑒𝑠𝑡 (𝑁) ln có bậc cao phép tính số học dùng thuật tốn nên ta quan tâm đến chi phí với thực tế đại lượng đơn điệu tăng theo 𝑁 Theo phần a) Bổ đề chi phí trung bình cho việc sinh số nguyên tố N-bit (thực 𝑞 ← 𝑅𝑎𝑛𝑑𝑜𝑚(𝑃𝑟𝑖𝑚𝑒(2𝑁−1 , 2𝑁 − 1)) theo 𝑁 Thuật toán 1) 𝑇𝑇𝑒𝑠𝑡 (𝑁) Trong Thuật toán 3, cần đến việc sinh số nguyên tố N-bit q bước 𝑘 – số nguyên tố Ni -bit 𝑞𝑖 (𝑖 = 1, , 𝑘 − 1) bước Như hết bước cần chi phí tính toán là: 𝑇1 = (𝑁 𝑇𝑇𝑒𝑠𝑡 (𝑁) + ∑𝑘−1 𝑖=1 𝑁𝑖 𝑇𝑇𝑒𝑠𝑡 (𝑁𝑖 )) Bước bước thực sinh số nguyên tố 𝑞𝑘 kiểm tra tính nguyên tố số L-bit 𝑝 Tương tự lần lặp bước 9, 9.1 thực tìm số nguyên tố (thực 𝑞𝑘 ← 𝑁𝑒𝑥𝑡𝑃𝑟𝑖𝑚𝑒[𝐴,𝐵] (𝑞𝑘 ) theo Thuật toán 2) kiểm tra tính nguyên tố số L-bit p (điều kiện dừng cho vòng 𝑤ℎ𝑖𝑙𝑒) Do giá trị 𝑝 = 𝑓𝑘−1 ∗ 𝑞𝑘 + kiểm tra bước số liền tập số dạng 𝑝 = 𝑓𝑘−1 ∗ 𝑡 + 1, nên số lần lặp trung bình bước 𝜌𝑓𝑘−1 (𝐿) < 𝐿 Như vậy, chi phí cho bước 7, trung bình là: 𝑇2 = 𝐿(𝑇𝑇𝑒𝑠𝑡 (𝐿) + 𝑁𝑘 𝑇𝑇𝑒𝑠𝑡 (𝑁𝑘 )) (18) với 𝑁𝑘 = 𝑙𝑒𝑛(𝑞𝑘 ) Do 𝑘 < 𝐿 nên 𝑇𝐺𝑒𝑛 (𝑘) = 𝑇1 + 𝑇2 lớn 𝑁𝑘 lớn nhất, từ quan hệ: Số 1.CS (11) 2020 29 Journal of Science and Technology on Information security 2𝐿−1 < 𝑓𝑘−1 ∗ 𝑞𝑘 + ≤ 2𝐿 − nên điều xảy 𝑓𝑘−1 bé tức 𝑓𝑘−1 = 𝑞 𝑘 Khi đó: 𝑇1 = 𝑘.𝑁 𝑇𝑇𝑒𝑠𝑡 (𝑁) 𝑁−1 Do 𝑞 > Số nguyên tố 𝒒 (224 bit): nên: 𝑘(𝑁−1)+1 𝑓𝑘−1 > 𝐿−(𝑘(𝑁−1)+1) 𝑞𝑘 < 𝑁𝑘 < 𝑀 𝑀 =2 (19) 𝑘.𝑁 𝑇𝐺𝑒𝑛 (𝑘) = 𝑇1 + 𝑇2 < 𝑇𝑇𝑒𝑠𝑡 (𝑁) + 𝐿(𝑇𝑇𝑒𝑠𝑡 (𝐿) + 𝑀 𝑇𝑇𝑒𝑠𝑡 (𝑀)) Và điều cần chứng minh.■ Đánh giá Thuật tốn khơng thể sinh toàn cặp (p, q) an toàn Chứng minh Xét Thuật toán với cặp đầu vào (𝐿, 𝑁) = (8, 2) Với bước Thuật toán số ước nguyên tố lẻ 𝑝 – 1, không kể 𝑞, tối đa là: 𝐿−𝑀0 −1 𝑁 8−3−1 ⌋=⌊ ⌋ = Như Thuật toán sinh (𝑝, 𝑞) = (163, 3) 163 = 34 + tương ứng với 𝑘 = V MỘT SỐ KẾT QUẢ CỦA CÀI ĐẶT THUẬT TỐN Sử dụng cơng cụ lập trình Visual Studio 2013 kết hợp với thư viện mật mã Miracl để cài đặt Thuật toán 3, kết thu tham số dùng cho giao thức thỏa thuận khóa DHKE an tồn, chống lại công Ví dụ tham số sinh chương trình: Bộ tham số: Số nguyên tố 𝒑 (2048 bit): 8BF76C050D3DFB10C9FB37D722F986388 DE867CA00499826C96562867844430F74 BB0E04E141BED83E4930ECDCB268C8852 6E6A1F2E37D43543D60F9775A0F83F17D 523A8DF64A3A12CBC667E78F9BD0F4019 599D1E186AE9AAF6E56BD93CA053DE0E7 D6066A466D0E60DC96991B9006DC18EA1 B9C70726EDF99028DAD6E632B9A1B6E4B 070BA1C975250B986E6993EB58853A2AE CC2B9F2CBE903338752ED080222192C08 30 No 1.CS (11) 2020 8BF59EC7A4FA0349F4D76BF6D26BBE668 6D07B8B2DAFB3283D397337 Các số nguyên tố 𝒑𝒊 : p0 (692 bit): Thay (19) vào (18) ta được: 𝑘=⌊ 1D757AED91E30DC6C5AC904AF07BFD723 87335331C279701849D2F652DD0A9EB35 ACD8C3F644B71D20635D34940FF7F9AC8 0E7A72AAF60A11D53FA8B08D4A8336749 CE9A723C5545461E11FDA4B7A9556B768 07F81948652F677A7 DAC8F4EDD3FC57287873DC63AB8B6AD83 7722E0D211194CA80CEA267C24233FAA8 94E90DD62C89DCFA81663B83477468E8E 8280758A1507E36DF0876C07F498BD6B0 A54DF7E57B7B013DBC651AD019B1494E3 4A213581 p1 (1132 bit): 95C7B7C6166A3AB9CC497D086A82E87CF 32E2153FF491771BE334F45EE678C7B6F E062DD86C07232E6B0CF29A53A1ACFC83 C870AD062335ECEB18D2350E6DE107A67 265B6E02923DFA621B19CAF96444D61D1 0EE946A6806342D6E97733683A108C4B0 F97B62828145C8AF53FA0AB44DA0F3EA3 DDCEA50B2229CBE583EB89570CDB2C8E2 1E3E0892C9A056616C5 VI KẾT LUẬN Đối với việc triển khai giao thức trao đổi khóa kiểu DH-KE ứng dụng bảo mật thơng tin, việc sinh tham số an tồn quan trọng, đảm bảo cho giao thức DH-KE chống lại số công để tìm khóa bí mật người dùng (cụ thể cơng liên quan đến nhóm nhỏ) Bài báo đề xuất, xây dựng thuật tốn sinh số ngun tố an tồn đánh giá, phân tích tính đắn, độ phức tạp thuật toán mặt toán học Đây ưu điểm thuật tốn đề xuất so với thuật tốn sinh số ngun tố an tồn Lim-Lee, thuật tốn trọng vào việc sinh thực nghiệm cho số nguyên tố dạng đảm bảo chắn mặt tốn học cho việc sinh chúng Bài báo đưa kết cài đặt thực tế thuật toán để minh chứng cho tính khả thi thuật tốn đưa Khoa học Cơng nghệ lĩnh vực An tồn thơng tin TÀI LIỆU THAM KHẢO [1] S C Pohlig and M E Hellman (1978), An improved algorithm for computing logarithms over GF(p) and its cryptographic significance, IEEE Trans Inform Theory, IT-24 (1), pp.106-110 [2] C Lim and P Lee (1997), A Key Recovery Attack on Discrete Log-based Schemes Using a Prime Order Subgroup, EUROCRYPT 1997 [3] J.M.Pollard (1978), Monte Carlo methods for index computation (rood p), Math Comp., 32(143), pp.918-924 SƠ LƯỢC VỀ TÁC GIẢ ThS Nguyễn Thanh Sơn Đơn vị công tác: Cục Quản lý mật mã dân Kiểm định sản phẩm mật mã, Ban Cơ yếu Chính phủ Email: vuphongthanhson@gmail.com Q trình đào tạo: Tốt nghiệp Kỹ sư Kỹ thuật mật mã (1993-1998); Thạc sĩ Kỹ thuật mật mã (2002-2005) Học viện Kỹ thuật mật mã Hướng nghiên cứu nay: An toàn bảo mật thông tin, Kỹ thuật mật mã [4] FIPS PUB 186-3 (2009), Digital Signature Standard (DSS), https://csrc.nist.gov/csrc/media/publications/fips/ 186/3/archive/2009-06-25/documents/fips_1863.pdf, Accessed on 10/9/2020 [5] T Matsumoto, Y Takashima and H Imai (1986), On seeking smart public-key distribution systems, The Transactions of the [EICE of Japan, E69, pp.99-106 [6] FSF, Gnu privacy guard, http://www.gnupg.org/, Accessed on 10/9/2020 [7] Gutmann P, cryptlib, https://www.cs.auckland.ac.nz/~pgut001/cryptlib/, Accessed on 10/9/2020 [8] PGP I, OpenPGP, https://www.openpgp.org/, Accessed on 10/9/2020 [9] MIRACL, MIRACL Cryptographic SDK, https://github.com/miracl/MIRACL, Accessed on 10/9/2020 [10] Rechard Crandall, Carl Pomerance (2005), Prime Numbers: A Computational Perspetive, Springer, https://www.springer.com/gp/book/9780387252 827, Accessed on 10/9/2020 [11] Nguyễn Quốc Toàn, Đỗ Đại Chí, Triệu Quang Phong (2016), Về tiêu chuẩn tham số cho toán logarithm rời rạc, Nghiên cứu Khoa học Cơng nghệ lĩnh vực An tồn thông tin, ISSN 2615-9570 No 02 Vol 01 2016 Số 1.CS (11) 2020 31 ... sinh số ngun tố an tồn Thuật tốn Input: