Thuật toán sinh số nguyên tố lớn

25 1.9K 14
Thuật toán sinh số nguyên tố lớn

Đ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

HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA AN TOÀN THÔNG TIN  BÁO CÁO BÀI TẬP LỚN MÔN HỌC MẬT MÃ HỌC NÂNG CAO Chủ đề số 02 TÌM HIỂU CÁC THUẬT TOÁN SINH SỐ NGUYÊN TỐ Giảng viên: TS. Nguyễn Tuấn Anh Thực hiện: sinh viên Đặng Văn Huân HÀ NỘI, 2015 Ý KIẾN CỦA GIẢNG VIÊN MỤC LỤC 3 DANH MỤC CÁC BẢNG 4 LỜI NÓI ĐẦU Mật mã học là một ngành có lịch sử hàng nghìn năm nay, nó gắn liền với nhu cầu bảo mật an toàn thông tin của con người ngay từ thời cổ đại. Sự ra đời của mạng máy tính đã có tác động rất lớn đến sinh hoạt chung của loài người. Mạng máy tính ra đời giúp cho con người dễ dàng trao đổi thông tin, chia sẻ dữ liệu, v.v… một cách nhanh chóng mà không cần quan tâm đển khoảng cách về địa lý. Bên cạnh ích lợi cũng tồn tại hiểm họa. Tiêu biểu là hiểm họa lộ thông tin. Để phòng chống hiểm họa này các nhà khoa học đã nghiên cứu, phát triển các hệ mật khác nhau. Nhằm đảm bảo an toàn thông tin, nhiều hệ mật mã ra đời gần đây có sử dụng các số nguyên tố như là một tham số thiết yếu. Vì vậy, số nguyên tố là một đề tài thu hút được nhiều sự quan tâm của các chuyên gia mật mã. Nhận thấy tầm quan trọng của số nguyên tố, cùng tinh thần học tập cao nhóm chọn đề tài nghiên cứu “Tìm hiểu các thuật toán sinh số nguyên tố”. Do kiến thức còn hạn chế, bản báo cáo không thể tránh khỏi những thiếu sót mong sự góp ý của thầy cô và các bạn đọc giúp bản báo cáo hoàn thiện hơn. 5 Chương I. TỔNG QUAN VỀ SỐ NGUYÊN TỐ I.1. Định nghĩa số nguyên tố Số nguyên tố là số chỉ có 2 ước, đó là 1 và chính nó. Tức là nó chỉ chia hết cho số 1 và chính nó. I.2. Tính chất của số nguyên tố 1. Ước tự nhiên khác 1 nhỏ nhất của một số tự nhiên n là số nguyên tố. 2. Cho p là số nguyên tố; a N; a 0. Khi đó 3. Nếu tích của nhiều số chia hết cho một số nguyên tố p thì có ít nhất một thừa số chia hết cho p. 4. Ước số dương bé nhất khác 1 của một hợp số a là một số nguyên tố không vượt quá 5. 2 là số nguyên tố nhỏ nhất và cũng là số nguyên tố chẵn duy nhất 6. Tập hợp các số nguyên tố là vô hạn (tương đương với việc không có số nguyên tố lớn nhất). I.3. Ứng dụng của số nguyên tố trong mật mã Các số nguyên tố lớn là một trong các tham số an toàn quan trọng trong các thuật toán lược đồ mật mã hiện đại như thuật toán mã hoá khoá công khai RSA, lược đồ chữ ký số RSA, lược đồ trao đổi khoá Diffie-Hellman, lược đồ mã hoá Elgammal. Số nguyên tố lớn góp phần vào việc tăng độ an toàn của các hệ mật. 6 Chương II. MỘT SỐ THUẬT TOÁN SINH SỐ NGUYÊN TỐ Theo chuẩn ISO/IEC 18032, các thuật toán sinh số nguyên tố được chia thành hai loại: - Các thuật toán dựa trên các phép kiểm tra tính nguyên tố xác xuất - Các thuật toán sinh số nguyên tố tất định. II.1. Một số thuật toán sinh số nguyên tố xác suất Xác suất sai phụ thuộc vào phép kiểm tra được dùng. Xác suất mà một hợp số được chấp nhận là không đáng kể. Để giảm thiểu xác suất sai, người ta thường thực hiện nhiều vòng lặp với cùng một đầu vào. II.1.1. Một số phép kiểm tra tính nguyên tố II.1.1.1. Phép kiểm tra tính nguyên tố Miller-Rabin a. Định lý Cho n là số nguyên dương lẻ, ta viết 1 2 h n m− = , với m là số lẻ. Nếu n là số nguyên tố thì với mọi số nguyên dương a n< : ( ) ( ) 2 1 mod 1 mod . k m m a n k h a n ≡ ∨ ∃ < ≡ − Nếu n là hợp số thì : ( ) { } 2 1 : 1 1, ( 1mod ) 1 mod 4 k m m n a a n a n k h a n − ≤ ≤ − ≡ ∨ ∃ < ≡ − ≤ b. Thuật toán Thuật toán kiểm tra số nguyên n có dạng –1 2 h n m= với m lẻ. Đầu vào: h,m,n Đầu ra: “n là số nguyên tố” hoặc “n là hợp số” Các bước thực hiện: 7 1. Chọn ngẫu nhiên một số nguyên a thoả mãn 1 – 1a n< < 2. Tính gcd ( , )d a n= Nếu 1d > thì “n là hợp số” và dừng. 3. Tính mod m b a n= Nếu 1b = thì “n là số nguyên tố” và dừng. 4. Với 0 -1b h= ÷ thực hiện: Nếu 1b n = − thì “n là số nguyên tố” và dừng. Ngược lại tính, tính 2 modb b n= . 5. Kết luận “n là hợp số” và dừng. Chú ý: - Phép kiểm tra chỉ chấp nhận các số mà tất cả các vòng lặp đều chấp nhận. Bởi vậy phép kiểm tra có thể dừng sớm khi một cơ sở không dẫn đến việc chấp nhận. - Với mỗi a, xác suất để chấp nhận nhầm n là số nguyên tố không quá 1/ 4 . - Nếu chọn k số a độc lập với nhau và cả k lần đều kết luận “n là số nguyên tố” thì xác suất phạm sai lầm không quá 1/ 4 k . - Các thuật toán xác suất tuy không khẳng định chính xác được một số có là nguyên tố hay không nhưng chúng lại được dùng làm công cụ kỹ thuật cho các thuật toán tất định. 8 II.1.1.2. Phép kiểm tra tính nguyên tố Lehman Phép kiểm tra Lehmann dựa trên một thực tế sau: Số nguyên lẻ N > 1 là nguyên tố khi và chỉ khi * ( 1)/ 2 : 1 mod N N a Z a N − ∀ ∈ ≡ ± và * ( 1)/ 2 : 1 mod N N a Z a N − ∃ ∈ ≡ − . Đầu vào: số cần kiểm tra N và một tham số t Đầu ra: “N là số nguyên tố” hoặc “N là hợp số” Các bước thực hiện: 1. Lấy f = “false” 2. Thực hiện t lần - Chọn ngẫu nhiên một số nguyên b, 1 < b < N – 1 - Lấy y = b (N-1)/2 mod N - Nếu y ≠ 1 và y ≠ N – 1 thì trả về “không chấp nhận” - Nếu y = N – 1 thiết lập f = “true” 3. Nếu f = “true” thì trả về “chấp nhận”, ngược lại trả về “không chấp nhận” II.1.1.3. Thuật toán sàng Eratosthenes a. Định lý Số nguyên dương n là nguyên tố nếu và chỉ nếu nó không chia hết cho bất kỳ số nguyên d nào thoả mãn 1 d < n< b. Thuật toán Đầu vào: Số N cần kiểm tra. Đầu ra: Trả lời N là số nguyên tố hoặc N là hợp số. 9 Các bước thực hiện: 1. Đặt 2;a = 2. Phân tích N q a r= × + . 3. Kiểm tra - Nếu 0r = thì trả lời “ N là hợp số”. - Nếu 0r ≠ thì kiểm tra:  Nếu a N ≥ thì dừng: N là số nguyên tố;  Nếu a N< thì đặt 1a a= + ; và quay về bước 2. II.1.1.4. Thuật toán Lucas- Lehmer kiểm định các số Mersenne a. Định nghĩa số Mersenne Cho số nguyên 2s ≥ . Số Mersenne là số nguyên dạng 2 1 s − . Nếu 2 1 s − là số nguyên tố thì nó được gọi là số nguyên tố Mersenne. b. Định lý Cho 3s ≥ . Số Mersenne 2 1 s n = − là nguyên tố nếu và chỉ nếu hai điều kiện sau đây được thỏa mãn: - s là nguyên tố. - Dãy các số nguyên được xác định bởi 0 4u = và 2 1 ( 2)mod k k u u n + = − với 0k ≥ thỏa mãn 2 0 s u − = . c. Mô tả thuật toán 10 [...]... một số nguyên tố trong khoảng đầu tiên và phân bố của các số nguyên tố tìm được hầu như là đều II.2 Một số thuật toán sinh số nguyên tố tất định II.2.1 Cơ sở lý thuyết II.2.1.1 Định lý Pocklington N −1 s > N Cho s là ước dương của , Giả sử có một số nguyên a thoả mãn: với mọi ước nguyên tố q của s Khi đó N là số nguyên tố II.2.1.2 Phép chia thử kiểm tra tính nguyên tố Tính nguyên tố của một số nguyên. .. nguyên tố của các số nguyên Chuẩn này không thiết lập giá trị cho L II.2.2 Thuật toán sinh số nguyên tố của Maurer Đầu vào: k (độ dài của số nguyên tố cần sinh) Đầu ra: Số nguyên tố p và một chứng nhận tính nguyên tố của nó, C ( p) Các bước thực hiện: 1 Nếu 2k < L thì sinh ngẫu nhiên một số nguyên lẻ p có độ dài k bít, sau đó kiểm tra tính nguyên tố bằng phép chia thử kiểm tra tính nguyên tố Lặp lại cho... khác, bước 2 của thuật toán q là số nguyên tố có số bít làk1  k/2 + 1 Do đó q  N Thỏa mãn được các điều kiện trên, số N đã thỏa mãn định lý Pocklington Như vậy N là số nguyên tố 16 Chương III CÀI ĐẶT THUẬT TOÁN SINH SỐ NGUYÊN TỐ CỦA SHAWE-TAYLOR III.1 Cài đặt thuật toán Công cụ được nhóm lựa chọn để thực hiện việc cài đặt thuật toán gồm : - Ngôn ngữ lập trinh C++ - Thư viện tính toán số lớn GMP 1 Giới... phần nguyên mpz_add(za,zb,zc): thực hiện cộng số nguyên lớn za = zb + zc mpz_sub(za,zb,zc): thực hiện trừ số nguyên lớn za = zb - zc 18 III.1.2 Cài đặt thuật toán a Chương trình gồm 4 module: - Sinh ngẫu nhiên nguyên lẻ k bit long OddRandom(…) - Chia thử để kiểm tra tính nguyên tố của số N int trial_div(…) - Sinh ngẫu nhiên số nguyên có A trong khoảng giới hạn GenRandomINT(…) - Sinh số nguyên tố N... một số nguyên a với 1 < a < p – 1 Nếu thỏa mãn các điều kiện : • • a ( p −1) (mod p ) = 1 gcd(a 2 R − 1, p) = 1 thì cho đầu ra p và chứng nhận ( p , q, a ) , C ( q ) 7 Ngược lại, lặp lại các bước từ 5 đến 7 II.2.3 Thuật toán sinh số nguyên tố của Shawe-Taylor II.2.3.1 Thuật toán Thuật toán sử dụng duy nhất một tham số: L, giới hạn phép chia thử Đầu vào: số nguyên k – số bit của số nguyên tố cần sinh. .. tính nguyên tố Xác suất sai của T phụ thuộc vào số vòng lặp kiểm tra Các thuật toán sinh số nguyên tố xác suất có sử dụng chung đầu vào k – độ dài của số nguyên tố cần sinh (đơn vị tính là bit) II.1.2.1 Thuật toán lựa chọn ngẫu nhiên Các bước thực hiện 1 Chọn ngẫu nhiên một số nguyên lẻ N sao cho 2k-1 < N < 2k 2 Nếu N qua được phép kiểm tra T thì dừng Còn không quay lại bước 1 II.1.2.2 Thuật toán tìm... nguyên tố cần sinh Đầu ra: số nguyên tố N Các bước thực hiện: 1 Nếu 2k < L thì sinh ngẫu nhiên một số nguyên lẻ k bít, N, và kiểm tra tính nguyên tố bằng cách chia thử Lặp lại cho đến khi N là một số nguyên tố Cho đầu ra N và dừng 2 Nếu k lẻ, lấy k1 = Nếu k chẵn lấy k 1 = Gọi đệ qui thuật toán này với đầu vào là k1, để tìm một số nguyên tố k1 bít q 3 Chọn ngẫu nhiên số nguyên x, 2k-1 ≤ x < 2k 4 Lấy... Thời gian sinh (giây) modulus Bộ sinh Bộ sinh lâu Tổng thời Thời gian (bít) nhanh nhất nhất gian trung bình 1024 0.08 5 17.8 1.78 2048 2 40 127 12.7 3072 9 111 491 49.1 23 KẾT LUẬN Vấn đề sinh các số nguyên tố lớn, đặc biệt là các số nguyên tố lớn dùng trong mật mã, là một lĩnh vực khá rộng, trong một thời gian ngắn học viên không thể nghiên cứu hết toàn bộ các thuật toán sinh số nguyên tố đã được...Đầu vào: Số Mersenne n = 2s − 1 với s≥3 Đầu ra: Trả lời n là số nguyên tố hoặc n là hợp số Các bước thực hiện: 1 Chia thử để kiểm tra xem s có ước nào nằm giữa 2 và  s  Nếu có, trả lời “n là hợp số Dừng; 2 Đặt u=4 3 Với k từ 1 đến 4 Nếu u = 0 s−2 , tính u = u 2 − 2 (mod n) thì trả lời “n là số nguyên tố , dừng Ngược lại, trả lời “n là hợp số Dừng II.1.2 Một số thuật toán sinh số nguyên tố xác... chỉ giới hạn tập trung nghiên cứu thuật toán sinh số nguyên tố của Shawe- Taylor Sau một thời gian lỗ lực nghiên cứu mặc dù đây là thuật toán khó số lượng tài liệu để nghiên cứu không nhiều, kết quả chính nhóm đạt được là việc chứng minh tính đúng đắn của thuật toán, mô phỏng thuật toán bằng ngôn ngữ lập trình C++ và thống kê được thời gian sinh của các số nguyên tố có độ dài 1024, 2048, 3072 bít 24 . hợp số a là một số nguyên tố không vượt quá 5. 2 là số nguyên tố nhỏ nhất và cũng là số nguyên tố chẵn duy nhất 6. Tập hợp các số nguyên tố là vô hạn (tương đương với việc không có số nguyên tố. TỔNG QUAN VỀ SỐ NGUYÊN TỐ I.1. Định nghĩa số nguyên tố Số nguyên tố là số chỉ có 2 ước, đó là 1 và chính nó. Tức là nó chỉ chia hết cho số 1 và chính nó. I.2. Tính chất của số nguyên tố 1. Ước tự. sinh số nguyên tố được chia thành hai loại: - Các thuật toán dựa trên các phép kiểm tra tính nguyên tố xác xuất - Các thuật toán sinh số nguyên tố tất định. II.1. Một số thuật toán sinh số nguyên

Ngày đăng: 06/08/2015, 15:51

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • DANH MỤC CÁC BẢNG

  • LỜI NÓI ĐẦU

  • Chương I. TỔNG QUAN VỀ SỐ NGUYÊN TỐ

    • I.1. Định nghĩa số nguyên tố

    • I.2. Tính chất của số nguyên tố

    • I.3. Ứng dụng của số nguyên tố trong mật mã

    • Chương II. MỘT SỐ THUẬT TOÁN SINH SỐ NGUYÊN TỐ

      • II.1. Một số thuật toán sinh số nguyên tố xác suất

        • II.1.1. Một số phép kiểm tra tính nguyên tố

          • II.1.1.1. Phép kiểm tra tính nguyên tố Miller-Rabin

          • II.1.1.2. Phép kiểm tra tính nguyên tố Lehman

          • II.1.1.3. Thuật toán sàng Eratosthenes

          • II.1.1.4. Thuật toán Lucas- Lehmer kiểm định các số Mersenne

          • II.1.2. Một số thuật toán sinh số nguyên tố xác suất

            • II.1.2.1. Thuật toán lựa chọn ngẫu nhiên

            • II.1.2.2. Thuật toán tìm kiếm tăng dần

            • II.2. Một số thuật toán sinh số nguyên tố tất định

              • II.2.1. Cơ sở lý thuyết

                • II.2.1.1. Định lý Pocklington

                • II.2.1.2. Phép chia thử kiểm tra tính nguyên tố

                • II.2.2. Thuật toán sinh số nguyên tố của Maurer

                • II.2.3. Thuật toán sinh số nguyên tố của Shawe-Taylor

                  • II.2.3.1. Thuật toán

                  • II.2.3.2. Tính đúng đắn của thuật toán

                  • Chương III. CÀI ĐẶT THUẬT TOÁN SINH SỐ NGUYÊN TỐ CỦA SHAWE-TAYLOR

                    • III.1. Cài đặt thuật toán

                      • 1 Giới thiệu về ngôn ngữ lập trình C++

                      • III.1.1. Giới thiệu thư viện tính toán số lớn GMP

                      • III.1.2. Cài đặt thuật toán

Tài liệu cùng người dùng

Tài liệu liên quan