Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 47 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
47
Dung lượng
304,7 KB
Nội dung
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA TOÁN ———————o0o——————– KHÓA LUẬN TỐT NGHIỆP PHÂN TÍCH THỪA SỐ NGUYÊN TỐ VÀ ỨNG DỤNG TRONG MẬT MÃ Chuyên ngành: TOÁN ỨNG DỤNG Giảng viên hướng dẫn: Sinh viên: Trần Vĩnh Đức Đặng Kiều Trang Lớp: K37-sp Toán HÀ NỘI, 5/2015 LỜI CẢM ƠN Bài khóa luận hoàn thành hướng dẫn nhiệt tình thầy giáo T.S Trần Vĩnh Đức Qua em xin gửi lời cảm ơn sâu sắc tới thầy cô tổ Toán ứng dụng thầy cô khoa Toán trường ĐHSP Hà Nội giúp đỡ em trình học tập để thuận lợi cho việc nghiên cứu Đặc biệt, em xin gửi lời cảm ơn chân thành tới thầy giáo T.S Trần Vĩnh Đức người dành cho em hướng dẫn nhiệt tình, chu đáo bảo cho em suốt trình học tập nghiên cứu thực khóa luận Dù cố gắng, lần làm quen với việc nghiên cứu khoa học lực hạn chế nên khó tránh khỏi sai sót Em mong muốn nhận bảo, đóng góp quí thầy cô khóa luận tốt Em xin chân thành cảm ơn! Hà Nội, tháng 05 năm 2015 Sinh viên Đặng Kiều Trang LỜI CAM ĐOAN Sau thời gian nghiên cứu với cố gắng, nỗ lực thân hướng dẫn nhiệt tình bảo thầy giáo T.S Trần Vĩnh Đức em hoàn thành khóa luận Em xin cam đoan khóa luận thân nghiên cứu với hướng dẫn thầy giáo T.S Trần Vĩnh Đức không trùng với đề tài Hà Nội, tháng 05 năm 2015 Sinh viên Đặng Kiều Trang MỤC LỤC Lời cảm ơn Lời cam đoan Phân tích thừa số nguyên tố ứng dụng mật mã 1.1 Công thức Euler 1.2 Hệ mật mã khóa công khai RSA 1.3 Kiểm tra tính nguyên tố 1.4 Thuật toán phép nhân tử hóa Pollard p-1 1.5 Phân tích thừa số qua hiệu bình phương Số 2.1 2.2 2.3 trơn, sàng xây Số trơn Sàng bậc hai Sàng trường số Tài liệu tham khảo dựng quan hệ cho phép nhân tử RSA 4 10 14 19 23 hoá 33 33 34 41 46 CHƯƠNG PHÂN TÍCH THỪA SỐ NGUYÊN TỐ VÀ ỨNG DỤNG TRONG MẬT MÃ RSA 1.1 Công thức Euler Phương pháp thay đổi khóa Diffie-Hellman hệ thống mật mã khóa công khai ElGamal nghiên cứu dựa thực tế dễ để tính lũy thừa an mod p, khó để tìm lại số mũ n ta biết giá trị a an mod p Một kết quan trọng mà sử dụng để phân tích tính đắn Diffie-Hellman ElGamal Định lý Fermat nhỏ, ap−1 ≡ 1(mod p) với a ≡ (mod p) Định lý Fermat nhỏ thể tính chất tốt số nguyên tố Nó cho ta biết điều xảy thay p số m số nguyên tố, tức am−1 ≡ (mod p) có không? Ta thấy câu trả lời không Trong phần ta tìm hiểu khái quát tính đắn Định lý Fermat nhỏ m = pq tích hai số nguyên tố phân biệt, trường hợp quan trọng ứng dụng mã hóa Ta bắt đầu với ví dụ Với lũy thừa modun 15 làm nào? Nếu ta thực bảng lũy thừa bậc bậc mod 15, chúng trông không thật thú vị, nhiều lũy thừa bậc đồng dư với mod 15 Cụ thể, ta thấy a4 ≡ (mod 15) với a = 1, 2, 4, 7, 8, 11, 13 14; a4 ≡ (mod 15) với a = 3, 5, 6, 9, 10 12 Vậy khác dãy số 1, 2, 4, 7, 8, 11, 13, 14 với dãy số 3, 5, 6, 9, 10, 12, 15 gì? Ta thấy, số 3, 5, 6, 9, 10, 12, 15 có bội chung 15, số 1, 2, 4, 7, 8, 11, 13, 14 số nguyên tố với 15 Điều cho thấy số phiên Định lý nhỏ Fermat số a số nguyên tố với modun m, số mũ không thiết phải m − Cho m = 15 ta thấy số mũ Tại 4? Ta dễ dàng kiểm tra với giá trị a, có thuật toán cụ thể tốt Để chứng minh a4 ≡ (mod 15) ta cần kiểm tra đồng dư thức Từ (1.1) ta thấy a4 ≡ (mod 3) a4 ≡ (mod 5) (1.1) a4 − a4 − Do a4 − 15 Hai đồng dư thức (1.1) nguyên tố theo modun nên ta sử dụng Định lý Fermat nhỏ để kiểm tra chúng Thật a4 = (a2)2 = (a(3−1))2 ≡ 12 ≡ (mod 3), a4 = a5−1 ≡ (mod 5) Nếu quan sát hai đồng dư thức này, ta thấy tính chất thiết yếu lũy thừa p − bội với p = p = Bằng việc quan sát này, ta có công thức làm tảng cho hệ thống mật mã khóa công khai RSA Định lí 1.1.1 (Công thức Euler cho pq) Cho p q số nguyên tố khác cho Khi g = UCLN(p − 1, q − 1) a(p−1)(q−1)/g ≡ (mod pq) ∀a thỏa mãn UCLN(a, pq) = Đặc biệt, p q số nguyên tố lẻ, a(p−1)(q−1)/2 ≡ (mod pq) ∀a thỏa mãn UCLN(a, pq) = Chứng minh Theo giả thiết ta thấy p a g q − 1, nên ta tính a(p−1)(q−1)/g = (a(p−1))(q−1)/g (q − 1)/g số nguyên, ≡ 1(q−1)/g (mod p) ap−1 ≡ (mod p) theo Định lý Fermat nhỏ, ≡ (mod p) lũy thừa 1! Tương tự, thay đổi vai trò p q, ta có a(p−1)(q−1)/g ≡ (mod q) Như a(p−1)(q−1)/g − chia hết cho p q, chia hết cho pq Ta điều phải chứng minh Phương pháp thay đổi khóa Diffie-Hellman hệ thống mật mã khóa công khai ElGamal phụ thuộc vào khó khăn giải phương trình dạng ax ≡ b (mod p) Trong a, b p số biết, p số nguyên tố, x ẩn Hệ thống mật mã khóa công khai RSA mà nghiên cứu phần phụ thuộc vào độ khó việc giải phường trình dạng xe ≡ c (mod N), Với e, c N số biết x ẩn Nói cách khác, việc bảo mật RSA dựa giả thiết khó để tính bậc e modun N Đây có phải giả thuyết hợp lý? Nếu modun N số nguyên tố tương đối dễ dàng việc để tính bậc e modun N, trình bày mệnh đề Mệnh đề 1.1.2 Cho p số nguyên tố e ≥ số nguyên thỏa mãn UCLN(e, p − 1) = Ta thấy e có modun nghịch đảo p − 1, ta nói de ≡ (mod p − 1) Khi đồng dư thức xe ≡ c (mod p) có nghiệm x ≡ cd (mod p) Chứng minh Nếu c ≡ (mod p), x ≡ (mod p) nghiệm mà ta cần tìm Giả sử c ≡ (mod p) Đồng dư thức de ≡ (mod p − 1) có nghĩa tồn số nguyên k cho de = + k(p − 1) Bây ta kiểm tra cd nghiệm phương trình xe ≡ c (mod p) : (cd )e ≡ cde (mod p) ≡ c1+k(p−1) (mod p) ≡ c(cp−1)k (mod p) ≡ c · 1k (mod p) ≡ c (mod p) luật số mũ, de = + k(p − 1), luật số mũ, từ Định lý Fermat nhỏ, Như x = cd nghiệm xe ≡ c (mod p) Để chứng minh nghiệm nhất, ta giả sử x1 x2 hai nghiệm đồng dư thức 1.1.2 Ta cần chứng minh z de ≡ z (mod z) với z bất kỳ, ta thấy x1 ≡ x1 de ≡ (x1e )d ≡ cd ≡ (x2e)d ≡ x2de ≡ x2 (mod p) Vậy Mệnh đề 1.1.2 có nghiệm Ví dụ 1.1.3 Giải đồng dư thức sau x1583 ≡ 4714 (mod 7919), Với modun p = 7919 số nguyên tố Theo Mệnh đề 1.1.2, ta cần giải đồng dư thức 1583d ≡ (mod 7918) Để tìm d ta sử dụng thuật toán Euclide mở rộng, ta tìm d ≡ 5277 (mod 7981) Từ Mệnh đề 1.1.2 ta thấy x ≡ 47145277 ≡ 6059 (mod 7919) nghiệm x1583 ≡ 4714 (mod 7919) Mệnh đề 1.1.2 cho thấy dễ để tính nghệm modun p số nguyên tố Trong trường hợp cho modun N hợp số có khác biệt quan trọng Nếu biết phân tích N lại dễ dàng để tính nghiệm Các mệnh đề sau trình bày phương pháp làm trường hợp N = pq tích hai số nguyên tố Các trường hợp tổng quát để lại xem Bài tập Mệnh đề 1.1.4 Cho p q số nguyên tố khác e ≥ thỏa mãn UCLN(e, (p − 1)(q − 1)) = Ta thấy e có modun nghịch đảo (p − 1)(q − 1), ta nói de ≡ (mod (p − 1)(q − 1)) Khi đồng dư thức xe ≡ c (mod pq), có nghiệm x ≡ cd (mod pq) (1.2) Chứng minh Giả sử UCLN(c, pq) = 1, (làm tương tự cho trường hợp khác) Chứng minh Mệnh đề 1.1.4 tương tự phần chứng minh Mệnh đề 1.1.2, thay sử dụng định lý Fermat nhỏ, ta sử dụng công thức Euler (Định lý 1.1.1) Các đồng dư thức de ≡ (mod (p − 1)(q − 1)) có nghĩa tồn số nguyên k cho de = + k(p − 1)(q − 1) Bây ta kiểm tra cd nghiệm xe ≡ c (mod pq) : (cd )e ≡ cde (mod pq) ≡ c1+k(p−1)(q−1) (mod pq) ≡ c(cp−1 )k (mod pq) ≡ c.1k (mod pq) ≡ c (mod pq) luật số mũ, de = + k(p − 1)(q − 1), luật số mũ, từ công thức Euler (Định lý 1.1.1), Do x = cd nghiệm đồng dư thức (1.2) Ta chứng minh nghiệm Giả sử x = u nghiệm (1.2), u ≡ ude−k(p−1)(q−1) de = + k(p − 1)(q − 1) ≡ (ue)d (u(p−1)(q−1))−k ≡ (ue)d 1−k (mod pq) sử dụng công thức Euler (Định lý 1.1.1) ≡ cd (mod pq) u nghiệm (1.2) Do đó, tất nghiệm (1.2) đồng dư với cd (mod pq), nghiệm Nhận xét 1.1.5 Mệnh đề 1.1.4 đưa thuật toán để giải xe ≡ c(mod pq) Đầu tiên giải de = 1(mod (p − 1)(q − 1)), tính cd (mod pq) Ta làm cho tính toán nhanh cách sử dụng giá trị nhỏ d Cho g = UCLN(p − 1, q − 1) giả sử ta giải đồng dư thức sau với d : de ≡ mod (p − 1)(q − 1) g Từ công thức Euler (Định lý 1.1.1) ta có a(p−1)(q−1)/g ≡ (mod pq) Do chứng minh Mệnh đề 1.1.4, ta viết de = + k(p − 1)(q − 1)/g, (cd )e = cd e = c1+k(p−1)(q−1)/g = c.(c(p−1)(q−1))k ≡ c (mod pq) Vì sử dụng giá trị nhỏ d, ta thấy cd mod pq nghiệm xe ≡ c (mod pq) Ví dụ 1.1.6 Giải đồng dư thức x17389 ≡ 43927 (mod 64349), với modun N = 64 · 349 = 229 · 281 tích hai số nguyên tố p = 229 q = 281 Bước giải đồng dư thức 17389 ≡ (mod 63840), với 63840 = (p − 1)(q − 1) = 228 · 280 Giải đồng dư thức, ta d = 53509 (mod 63840) Sau đó, từ Mệnh đề 1.1.4 ta có x ≡ 4391253509 ≡ 14458 (mod 64349), nghiệm x17389 ≡ 43927 (mod 64349) Ta giảm chút công việc cách sử dụng ý tưởng trình bày Nhận xét 1.1.5 Ta có g = UCLN(p − 1)(q − 1) = UCLN(228, 280) = Dó (p − 1)(q − 1)/g = (228)(280)/4 = 15960, từ ta tìm giá trị d cách giải đồng dư thức 17389 ≡ (mod 15960), v1 = (0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) 31312 · 31742 · 34812 ≡ (2 · 53 · · 113 · 43)2 = 1001577502 UCLN(9788111 · 3131 · 3174 · 3481 − 100157750) = 9788111 v2 = (0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) 31302 · 31312 · 31662 · 31742 · 32152 ≡ (2 · 52 · 73 · 112 · 17 · 31 · 43 · 47)2 = 22101737850502 UCLN(9788111, 3130 · 3131 · 3166 · 3174 · 3215 − 2210173785050) = v3 = (0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) 31312 · 31662 · 35612 ≡ (2 · 52 · 72 · 312 · 43)2 = 1012413502 UCLN(9788111, 3131 · 3166 · 3561 − 101241350) = 9788111 v4 = (1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) 31292 · 31312 · 43942 ≡ (2 · 53 · · 11 · 23 · 43)2 = 190382502 UCLN(9788111, 3129 · 3131 · 4394 − 19038250) = 9788111 v5 = (1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0) 31292 · 31312 · 31742 · 33132 · 44322 ≡ (22 · · 52 · 72 · 112 · 17 · 23 · 31 · 43)2 = 9270637761002 UCLN(9788111, 3129 · 3131 · 3174 · 3313 · 4432 − 927063776100) = v6 = (1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0) 31292 · 34492 · 44262 · 44422 ≡ (22 · 32 · · · 11 · 13 · 17 · 23 · 47)2 = 33111678602 UCLN(9788111, 3129 · 3449 · 4426 · 4442 − 3311167860) = v7 = (1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0) 31292 · 33132 · 34492 · 44262 · 46512 ≡ (22 · · · 72 · 11 · 17 · 232 · 312 · 47)2 = 131360821145402 UCLN(9788111, 3129 · 3313 · 3449 · 4426 · 4651 − 13136082114540) = 2741 v8 = (1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1) 31292 · 34492 · 44252 · 44262 · 46842 ≡ (22 · 32 · · 72 · 11 · 13 · 17 · 23 · 37 · 47)2 = 8575924757402 UCLN(9788111, 3129 · 3449 · 4425 · 4426 · 4684 − 857592475740) = Bảng 1.6: phân tích thừa số N = 9788111 32 CHƯƠNG SỐ TRƠN, SÀNG VÀ XÂY DỰNG QUAN HỆ CHO PHÉP NHÂN TỬ HOÁ Trong phần trình bày nhanh hai phương pháp biết đến để làm khó toán phép nhân tử hoá, nghĩa là, phân tích số có dạng N = pq, p q số nguyên tố Chúng ta bắt đầu với thảo luận số trơn, hình thành nên công cụ cần thiết để xây dựng quan hệ Tiếp theo trình bày cách chi tiết sàng bậc hai, phương pháp nhanh để tìm số trơn Cuối cùng, trình bày ngắn gọn sàng trường số, giống sàng bậc hai chỗ cung cấp phương pháp nhanh để tìm số trơn dạng định Tuy nhiên, N vô lớn, sàng trường số nhanh nhiều so với sàng bậc hai 2.1 Số trơn Các bước xây dựng quan hệ quy trình phân tích thừa số ba bước trình bày Bảng 1.4 đòi hỏi tìm thấy nhiều số nguyên với tính chất a2 mod N tích số nguyên tố nhỏ Như nói phần cuối Phần 1.4, số phân tích tốt phải có tên gọi Định nghĩa 2.1.1 Một số nguyên n gọi B -trơn tất thừa số nguyên tố nhỏ B Ví dụ 2.1.2 Dưới vài số 5-trơn vài số 5-trơn: 5-trơn: 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36, Không 5-trơn: 7, 11, 13, 14, 17, 19, 21, 22, 23, 26, 28, 29, 31, 33, 34, 35, 37, 33 Định nghĩa 2.1.3 Hàm ψ(X, B) đếm số B−trơn, ψ(X, B) = Số số nguyên B-trơn n cho < n ≤ X Ví dụ, ψ(25, 5) = 15, số 5-trơn từ đến 25 15 số 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25 2.2 Sàng bậc hai Trong phần này, xác định phần cuối câu hỏi khó cần phải giải nhằm phân tích số lớn nhờ hiệu phương pháp bình phương √ Làm để tìm nhiều số a > N cho MRI a2 (mod N) số B -trơn? √ Như thảo luận phần trước, biết ta cần lấy B ≈ L(N )1/ để phân tích N Một cách tiếp cận nhanh để tìm bình phương B -trơn modun N tìm √ phân số ab mà xấp xỉ kN với k = 1, 2, 3, Khi a2 ≈ b2 kN, a2 giá trị nhỏ phù hợp, mà số B -trơn Lý thuyết liên phân số đưa thuật toán để tìm phân số ab Một phương pháp khác nhanh nhiều thực tế cho giá trị lớn chút a sử dụng quy trình giản ước hiệu gọi sàng để lúc tạo nhiều giá trị a2 ≈ b2 kN B -trơn Tiếp theo trình bày sàng bậc hai Pomerance, phương pháp nhanh biết đến để phân tích số lớn N = pq lên đến khoảng 2350 Đối với số lớn đáng kể, lớn 2450 sàng trường số phức tạp giữ kỷ lục giới phép nhân tử hoá nhanh Phần lại, ta trình bày phiên đơn 34 giản sàng bậc hai minh họa cho phương pháp phân tích thừa số đại Chúng ta bắt đầu với toán đơn giản cách tìm nhanh số B -trơn số ràng buộc X cho dù số có dạng a2 (mod N) Để làm điều này, cần phải quen với sàng Eratosthenes, phương pháp người Hy Lạp cổ để lập danh sách số nguyên tố Ý tưởng Eratosthenes để tìm số nguyên tố sau Bắt đầu cách khoanh tròn số nguyên tố gạch bội lớn Sau khoanh tròn số (số buộc phải số nguyên tố) gạch bội lớn Số nhỏ chưa khoanh 5, khoanh bỏ bội lớn 5, vân vân Cuối cùng, số khoanh tròn số nguyên tố Phương pháp sàng minh họa Bảng 2.1, ta lọc tất số nguyên tố nhỏ 10 (Những số nguyên tố số nằm ô bảng) Những số lại không gạch số nguyên tố lại nhỏ 100 21 41 11 12 13 14 15 16 17 18 19 20 23 24 25 26 27 28 29 20 31 32 33 34 35 36 37 38 39 40 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 22 42 61 62 81 82 63 83 84 10 √ Bảng 2.1: Quá trình L(X) = e (ln X)(ln ln X) Khi có vài số nguyên tố bị gạch vài lần Ví dụ 6, 12, 18 bị gạch hai lần chúng có bội Tương tự số 30 42 số bị gạch lần Giả sử thay gạch số đi, ta thực chia Đầu tiên thực phép chia với 2, sau chia bội cho 3, sau lại chia bội cho 5, v.v Nếu ta làm phép chia với tất số nguyên tố nhỏ B số bị chia xuống 1? Câu trả lời số tích số nguyên tố nhỏ B, đặc biệt chúng số B -trơn Vì thu dãy số B -trơn Thật không may, bỏ qua vài số B − trơn, cụ thể số chia hết cho lũy thừa số nguyên tố nhỏ, dễ khắc phục toán cách sàng lũy thừa nguyên tố Do đó, sau sàng 3, thay tiếp tục với 5, ta sàng Để làm điều này, ta giản ước từ 35 bội (Nhận thấy ta giản ước từ số này, chúng chẵn, ta giản ước nhân tử bổ sung 2.) Nếu ta làm việc này, cuối cùng, số B − trơn nhỏ X số quy đến Ta thấy tất phép chia yêu cầu phải xấp xỉ X ln(ln(B)) Hàm số logarit kép ln(ln(B)) tăng chậm, nên số trung bình phép chia cần để kiểm tra số riêng lẻ để xác định tính trơn xấp xỉ số Tuy nhiên, mục đích lập dãy số từ đến X số B -trơn Cái mà ta cần dãy số dạng a2 (mod N) số B -trơn Để đạt điều ta sử dụng đa thức F (T ) = T − N √ Bắt đầu với giá trị a mà lớn N chút, ta đặt √ a = ⌊ N + 1⌋, đó, ⌊x⌋ số nguyên lớn nhỏ x Sau ta quan sát dãy số: F (a), F (a + 1), F (a + 2), , F (b) (2.1) Mục đích tìm số B -trơn dãy số cách sàng số nguyên tố nhỏ B xem số dãy số sàng xuống đến Ta chọn số B đủ lớn cho để kết thúc trình sàng ta tìm đủ số B -trơn nhằm phân tích N Định nghĩa sau có ích việc mô tả trình Định nghĩa 2.2.1 Tập hợp số nguyên tố nhỏ B (hay tập lũy thừa nguyên tố nhỏ B ) gọi sở nhân tử Giả sử p số nguyên tố sở nhân tử Những số dãy (2.1) chia hết cho p? Tương đương với, số t a b thỏa mãn: t2 ≡ N (mod 0)? (2.2) Nếu đồng dư thức (2.2) nghiệm ta loại số nguyên tố p không số dãy (2.1) chia hết cho p Ngược lại đồng dư thức (2.2) có chia 36 nghiệm, ta ký hiệu sau: t = αp t = βp (Nếu p = 2, có nghiệm αp ) Cho nên số F (αp ), F (αp + p), F (αp + 2p), F (αp + 3p), số F (βp ), F (βp + p), F (βp + 2p), F (βp + 3p), chia hết cho p Như sàng nhân tử p từ tất mục pth danh sách (2.1), bắt đầu với giá trị nhỏ a thoả mãn a ≡ αp (mod p), đồng dạng sàng nhân tử p từ tất mục pth danh mục (2.1), bắt đầu với giá trị nhỏ thoả mãn a ≡ βp (mod p) Ví dụ 2.2.2 Chúng ta minh hoạ sàng bậc hai áp dụng cho hợp số N = 221 √ Số nhỏ có bình phương lớn N a = ⌊ 221⌋ + = 15 Ta đặt F (T ) = T − 221 sàng số từ F (15) = đến F (30) = 679 dùng số mũ nguyên tố từ tới Danh sách số T − N 35 68 103 140 179 220 263 308 355 404 455 508 563 620 679 Đầu tiên ta sàng p = 2, có nghĩa ta giản ước từ tất mục thứ hai danh sách Từ ta 35 68 ↓2 ↓2 35 34 103 140 179 220 263 308 355 404 455 508 563 620 679 ↓2 103 70 ↓2 ↓2 ↓2 ↓2 ↓2 179 110 263 154 355 202 455 254 563 310 679 Tiếp theo ta sàng p = Tuy nhiên, đồng dư thức t2 ≡ 221 ≡ (mod 3) nghiệm nên mục danh mục chia hết cho 37 Ta chuyển sang lũy thừa nguyên tố 22 Mọi số lẻ nghiệm đồng dư thức t2 ≡ 221 ≡ (mod 4), có nghĩa sàng nhân tử khác từ tất mục thứ hai danh sách Tiếp theo ta sàng cách giản ước nhân tử từ mục ↓4 35 34 103 70 ↓4 ↓4 35 17 103 35 179 110 263 154 355 202 455 254 563 310 679 ↓4 179 55 ↓4 ↓4 263 77 ↓4 ↓4 355 101 455 127 563 155 679 Tiếp theo ta chuyển sang p = Đồng dư thức t2 ≡ 221 ≡ (mod 5) có hai nghiệm, α5 = β5 = Giá trị t danh sách mà đồng dư với modun t = 16, nên bắt đầu với F (16), ta nhận thấy tất mục thứ năm chia hết cho Sàng nhân tử ta 35 17 103 35 179 55 ↓5 ↓5 17 103 35 179 11 263 77 355 101 455 127 563 155 679 ↓5 263 77 355 101 91 127 563 155 679 Tương tự vậy,tất mục thứ năm bắt đầu với F (19) chia hết cho 5, ta sàng nhân tử 17 17 103 35 ↓5 103 179 11 263 77 179 11 263 77 355 101 91 ↓5 71 101 91 127 563 155 679 ↓5 127 563 31 679 Để kết thúc ví dụ , sàng số nguyên tố p = Đồng dư thức t2 ≡ 221 ≡ (mod 7) có hai nghiệm α7 = β7 = Như sàng từ tất mục thứ bảy bắt đầu với F (16), tất mục thứ bảy bắt đầu với F (19) Từ ta 38 ↓7 1 1 17 103 179 11 263 77 ↓7 17 103 179 11 263 77 ↓7 17 103 179 11 263 77 71 101 91 71 101 91 ↓7 71 101 13 127 563 31 679 ↓7 127 563 31 97 127 563 31 97 Nhận thấy mục ban đầu F (15) = 4, F (16) = 35, F (19) = 140 sàng tất xuống đến Điều cho ta biết F (15) = 152 = 221, F (16) = 162 = 221, F (19) = 192 − 221 tích số nguyên tố nhỏ, ta tìm số bình phương modun 221 tích số nguyên tố nhỏ: 152 ≡ 22 (mod 221), 162 ≡ · (mod 221), 192 ≡ 22 · · (2.3) (mod 221) Chúng ta dùng đồng dư thức (2.3) để có quan hệ khác bình phương Ví dụ, (16 · 19)2 ≡ (2 · · 7)2 (mod 221) Tính UCLN(221, 16 · 19 − · · 7) = UCLN(221, 234) = 13 cho ta nhân tử không tầm thường 221 Ta nhân tử thành công N = 221, để minh hoạ phương pháp sàng xa hơn, ta tiếp tục sàng đến B = 11 Lũy thừa nguyên tố để sàng 32 Tuy nhiên, đồng dư thức t ≡ 221 (mod 3) nghiệm, nghĩa t2 ≡ 221 ≡ (mod 11) nghiệm, ta chuyển sang đến số nguyên tố p = 11 Đồng dư thức t2 ≡ 221 ≡ (mod 11) có nghiệm α11 = β11 = 10, cho phép ta sàng nhân tử 11 từ F (23) từ F (21) Chúng tóm lại toàn 39 phương pháp sàng Bảng 1.7, hàng đầu cho giá trị t hàng sàng giá trị F (t) = t2 − 221 sử dụng lũy thừa nguyên tố lên đến 11 Nhận thấy hai mục F (21) F (23), sàng xuống đến 1, cho hai quan hệ bổ sung F (21) ≡ 212 ≡ 22 · · 11 (mod 221) F(23) ≡ 232 ≡ 22 · · 11 (mod 221) Chúng ta kết hợp quan hệ với quan hệ (2.3) để có đẳng thức bình phương mới, ví dụ (19 · 21 · 23)2 ≡ (23 · · · 11)2 (mod 211) Đây cách khác cho nhân tử 221 : UCLN(221, 19 · 21 · 23 − 23 · · 7) = UCLN(221, 6097) = 13 Nhận xét 2.2.3 Nếu p số nguyên tố lẻ, đồng dư thức có ngiệm modun p Khái quát hơn, đồng dư thức t2 ≡ N (mod pe ) lũy thừa modun p có nghiệm Điều làm cho việc sàng lũy thừa nguyên tố lẻ tương đối đơn giản 40 15 16 17 18 35 68 103 140 179 220 ↓2 ↓4 1 1 1 35 35 ↓5 7 1 ↓2 20 21 ↓2 22 23 263 308 ↓2 34 103 70 179 110 263 154 ↓4 ↓4 ↓4 ↓4 17 17 17 ↓7 ↓2 19 17 17 17 17 103 35 103 35 ↓5 103 103 ↓7 103 103 103 179 55 179 11 179 11 179 11 179 11 179 11 ↓ 11 179 263 77 ↓5 263 77 263 77 ↓7 263 11 263 11 24 25 26 27 28 29 30 355 404 455 508 563 620 679 ↓2 ↓2 ↓2 ↓4 ↓4 ↓4 355 202 455 254 563 310 679 355 101 455 127 563 155 679 355 101 91 ↓5 71 71 101 91 101 91 ↓7 ↓5 127 563 155 679 ↓5 127 563 31 127 563 31 679 ↓7 97 71 101 13 127 563 31 97 263 71 101 13 127 563 31 97 263 71 101 13 127 563 31 97 ↓ 11 Hình 2.1: Sàng N = 221 sử dụng số nguyên tố B = 11 lũy thừa phức tạp chút, số nghiệm khác modun 2, modun 4, modun lũy thừa cao Ngoài ra, có nghiệm hai Chẳng hạn như, t2 ≡ N (mod 8) có bốn nghiệm khác modun N = (mod 8) Vì sàng lũy thừa thực chất không khó khăn, phải xử lý trường hợp đặc biệt 2.3 Sàng trường số Sàng trường số phương pháp phân tích thừa số làm việc vành với số nguyên thường lớn Trong phần có nội dung giải thích ngắn gọn số ý tưởng vào làm sàng trường số phương pháp nhanh để phân 41 tích số có dạng N = pq, p q số nguyên tố cách xấp xỉ độ lớn Để phân tích N ta bắt đầu cách tìm số nguyên m khác không đa thức lồi bất khả quy f (x) ∈ Z[x] có bậc nhỏ thoả mãn f (m) ≡ (mod N) Ví dụ 2.3.1 Giả sử ta muốn phân tích số N = 22 + Khi ta lấy m = 2103 f (x) = x5 + 8, f (m) = f (2103 = 2515 + = 8(2515 + 1) ≡ (mod 22 + 1) Cho d bậc f (x) cho β nghiệm f (x) (Lưu ý β số phức.) Ta làm việc vành Z[β] = {c0 + c1 β + c2 β + · · · + cd−1 β d−1 ∈ C : c0 , c1 , , cd−1 ∈ Z} Ví dụ 2.3.2 Chúng ta đưa ví dụ để minh hoạ cách thực phép cộng phép nhân vành Z[β] Cho f (x) = + 3x − 2x3 + x4 , cho β nghiệm f (x), xét vành Z[β] Để cộng phần tử u = − 4β + 7β + 3β v = + 2β − 4β − 2β 3, ta cần cộng hệ số, u + v = − 2β + 3β + β Phép nhân phức tạp chút Đầu tiên ta nhân u v, xem β biến số, uv = 92 + 308β + 111β − 133β ∈ Z[β] Sau ta chia cho f (β) = + 3β − 2β + β , xem β biến số, giữ số dư Bước sàng trường số để tìm nhiều cặp số nguyên (a1, b1), , (ak , bk ) đồng thời thoả mãn k (ai − bi m) bình phương Z i=1 k (ai − bi β) bình phương Z[β] i=1 42 Do có số nguyên A ∈ Z phần tử α ∈ Z[β] cho k k (ai − bi m) = A i=1 i=1 (ai − bi β) = α2 (2.4) Theo định nghĩa Z[β], ta tìm biểu thức cho α có dạng α = c0 + c1 β + c2 β + · · · + cd−1 β d−1 với c0 , c1 , c2, , cd−1 ∈ Z (2.5) Theo giả thiết f (m) ≡ (mod N) Từ ta có m ≡ β (mod N) vành Z[β], Vậy, mặt ta có, (2.4) trở thành A2 ≡ α2 (mod N) vành Z[β], mặt khác, (2.5) trở thành α ≡ c0 + c1 m + c2 m2 + · · · + cd−1 md−1 (mod N) vành Z[β] Do A2 ≡ (c0 + c1 m + c2 m2 + · · · + cd−1 md−1 )2 (mod N) Như ta tạo đồng dư thức A2 ≡ B tồn vành số nguyên Z, thường lệ, có khả cao mà UCLN (A − B, N ) cho thừa số không tầm thường N Làm tìm cặp (ai , bi) để hai tích (2.4) thành bình phương? Với tích số thứ nhất, ta dùng thuật toán sàng mà tương tự phương pháp dùng sàng bậc hai để tìm giá trị a − bm trơn dùng đại số tuyến tính để tìm tập với tính chất mong muốn Ý tưởng Pollard thực tương tự với tích số thứ hai làm vành Z[β] Do đó, tìm cặp số nguyên (a, b) cho số a − bβ "trơn" Z[β] Có nhiều vấn đề nghiêm trọng phát sinh làm điều này, là: 1) Vành Z[β] phần tử thường phép nhân tử hóa thành số nguyên tố hay phần tử bất khả quy Vì vậy, thay vào đó, 43 phân tích (a − bβ) thành tích iđêan nguyên tố Ta nói a − bβ trơn iđêan nguyên tố xuất phép phân tích thừa số nhỏ 2) Thật không may, iđêan vành Z[β] phép phân tích thừa số thành tích iđêan nguyên tố Tuy nhiên, có vành lớn chút, gọi vành số nguyên Q(β), phân tích thừa số iđêan 3) Giả sử vừa chuyển iđêan ( (ai − bi β)) thành bình phương iđêan Z[β] Có hai vấn đề xảy Thứ nhất, không cần phải bình phương iđêan tạo phần tử Thứ hai, chí iđêan có dạng (γ)2, ta kết luận (ai − biβ) = uγ với đơn vị u ∈ Z[β]∗, nói chung vành Z[β] có vô số đơn vị Ta bình luận kỹ bước thuật toán Để bắt đầu, ta cần số nguyên m, đa thức lồi bất khả quy f (x) có bậc nhỏ thỏa mãn f (m) ≡ (mod N) Thủ thuật để chọn bậc mong muốn d hàm số f, chọn số nguyên m thỏa mãn: (N/2)1/d < m < N 1/d, sau viết N số với sở m, N = c0 + c1 m + c2 m2 + · · · + cd−1 md−1 + cd md với ≤ ci < m Điều kiện cho m đảm bảo cd = 1, lấy f đa thức lồi f (x) = c0 + c1 x + c2 x2 + · · · + cd−1 xd−1 + cd xd Chúng ta cần f (x) đa thức bất khả quy, f (x) thuộc Z[x], nói f (x) = g(x)h(x), N = f (m) = g(m)h(m) cho nhân tử hóa N ta thực Vậy ta có f (x) m, cho phép ta bắt đầu sử dụng sàng trường số Định nghĩa 2.3.3 Với < ǫ < ta xác định hàm số: ǫ 1−ǫ Lǫ(X) = e(ln X) (ln ln X) 44 Chú ý với ký hiệu này, hàm số L(X) phần 1.7.1 L1/2(X) Khi ta thể thấy số sử dụng sàng trường số có số mũ nhỏ L2/3 (N ) Để đưa điều vào thực tiễn, sàng trường số sử dụng số K thoả mãn (Số chữ số củaK) ≈ (Số chữ số củaN )2/3 Điều dẫn đến cải thiện lớn lần chạy cho giá trị đủ lớn N Định lí 2.3.4 Theo số giả thiết hợp lý, thời gian chạy mong đợi sàng trường số để phân tích số N L1/3 (N )c với c nhỏ 45 TÀI LIỆU THAM KHẢO [1] M Ajtai, The shortest vector problem in L2 is NP-hard for randomized reductions (extended abstract), ACM Press (1998) [2] M Ajtai and C Dwork, A public-key cryptosystem with worstcase/averagecase equivalence, ACM, New York, 1999 [3] L Babai, On Lovász’ lattice reduction and the nearest lattice point problem, Combinatorica, 1981 [4] M Bellare and P Rogaway, Optimal asymmetric encryption In Advances in Cryptology—EUROCRYPT ’94, Springer, Berlin, 1995 46 [...]... cuối cùng cho ta một thừa số không tầm thường p = 3823 của N Thừa số này là số nguyên tố, và thừa số q = N/p = 13927189/3823 = 3643 cũng là số nguyên tố Lý do số mũ 14! được làm trong ví dụ này là thừa số p − 1 phân tích được thành tích của các số nguyên tố nhỏ, p − 1 = 3822 = 2 · 3 · 72 · 13 Các thừa số khác thỏa mãn p − 1 = 3642 = 2 · 3 · 607, mà không phải là tích của các số nguyên tố nhỏ Ví dụ 1.4.3... để có tích số của một số ci để làm mỗi số nguyên tố trong vế phải của đẳng thức trên phải có số mũ chẵn Nói cách khác, bài toán của chúng ta quy về để tìm u1 , u2 , u3 , , ur ∈ {0, 1} sao cho cu1 1 · cu2 2 · · · cur r là số chính phương Ở đây chúng ta lấy ui = 1 nếu tính cả ci trong tích số, và lấy ui = 0 nếu không tính ci trong tích số Viết tích số dưới dạng của phép phân tích thừa số nguyên tố của... khoanh tròn số 3 (số buộc phải là số nguyên tố) và cũng gạch đi những bội lớn hơn của 3 Số nhỏ nhất chưa được khoanh là 5, vì vậy khoanh 5 và bỏ đi những bội lớn hơn của 5, và vân vân Cuối cùng, những số được khoanh tròn là số nguyên tố Phương pháp sàng được minh họa ở Bảng 2.1, trong đó ta lọc tất cả những số nguyên tố nhỏ hơn 10 (Những số nguyên tố là những số nằm trong ô trong bảng) Những số còn lại... tương đương với modun và số mũ mã hóa Số d mà Bod sử dụng giải mã thông tin của Alice mà d thỏa mãn ed ≡ 1 (mod (p − 1)(q − 1)), (1.3) được gọi là chỉ số mã hóa Rõ ràng là mã hóa sẽ hiệu quả hơn nếu chỉ số mã hóa e là một số nhỏ và tương tự như vậy thì giải mã sẽ hiệu quả hơn nếu chỉ số giải mã d là số nhỏ Tất nhiên, Bob không thể chọn cả mã hóa và giải mã đều là giá trị nhỏ vì khi một trong hai được lựa... những người khác Hệ thống mật mã khóa công khai RSA được tóm tắt trong Bảng 1.1 Khóa bí mật của Bob là một cặp số nguyên tố lớn p và q Khóa công khai của ông là cặp (N, e) gồm tích N = pq và một số mũ mã hóa e nguyên tố cùng nhau Alice có bản rõ của mình và biến đổi nó thành số nguyên m trong khoảng từ 1 đến N Cô mã hóa m bằng cách tính đại lượng c ≡ me (mod N) Số nguyên c là bản mã của cô, mà cô gửi cho... để giải mã thông tin của Alice Nhưng thậm chí tệ hơn, nếu p và q là những số nguyên tố nhỏ, thì Eve có thể sẽ phân tích được pq và phá vỡ hệ thống của Bob Do đó, Bob cần phải tìm ra những số nguyên tố lớn hơn Chính xác hơn là ông cần một cách nào đó để phân biệt số nguyên tố và hợp số vì nếu ông tìm ra cách làm này, thì ông có thể chọn ngẫu nhiên những số cho tới khi ông thấy nó là số nguyên tố Chúng... tính nguyên tố Bob đã đọc xong các phần trên và bây giờ sẵn sàng truyền thông tin cho Alice bằng cách dùng cặp khóa công khai/bí mật RSA của ông Để tạo ra cặp khóa mã hóa RSA, Bob cần chọn hai số nguyên tố rất lớn là p và q Ông không chọn được hai số nguyên tố đủ lớn nhưng có thể là hợp số, đó là những số p và q Trước hết, nếu p và q không phải là số nguyên tố thì Bob sẽ cần phải biết cách phân tích. .. Quy trình 3 bước phân tích thừa số Ví dụ 1.5.4 Cho N = 914387 sử dụng quy trình được trình bày trong Bảng 1.4 Đầu tiên, ta tìm a nguyên có tính chất a2 mod N là tích của các số nguyên tố nhỏ Đối với ví dụ này, ta cần a2 mod N là tích của các số nguyên tố trong tập {2, 3, 5, 7, 11} Ta thấy 18692 ≡ 750000) (mod 914387) và 19092 ≡ 901120) (mod 914387) và 33872 ≡ 499125) (mod 914387) và 25 750000 = 24... là tích của các thừa số nhỏ, p − 1 = 350436 = 22 · 3 · 19 · 29 · 53 22 1.5 Phân tích thừa số qua hiệu của các bình phương Phương pháp phân tích thừa số có ảnh hưởng lớn được biết đến ngày nay dựa trên một trong những đồng nhất thức đơn giản của toán học, X 2 − Y 2 = (X + Y )(X − Y ) (1.9) Công thức này nói rằng hiệu của các bình phương bằng tích số Áp dụng trực tiếp công thức này để phân tích thừa số. .. tìm thấy nhiều số nguyên với tính chất là a2 mod N là tích của các số nguyên tố nhỏ Như đã nói ở phần cuối của Phần 1.4, các số phân tích được tốt phải có một tên gọi Định nghĩa 2.1.1 Một số nguyên n được gọi là B -trơn nếu tất cả các thừa số nguyên tố của nó là nhỏ hơn hoặc bằng B Ví dụ 2.1.2 Dưới đây là một vài các số 5-trơn đầu tiên và một vài các số không phải là 5-trơn: 5-trơn: 2, 3, 4, 5, 6, 8, ... cho ta thừa số không tầm thường p = 3823 N Thừa số số nguyên tố, thừa số q = N/p = 13927189/3823 = 3643 số nguyên tố Lý số mũ 14! làm ví dụ thừa số p − phân tích thành tích số nguyên tố nhỏ,... xuất phép phân tích thừa số nhỏ 2) Thật không may, iđêan vành Z[β] phép phân tích thừa số thành tích iđêan nguyên tố Tuy nhiên, có vành lớn chút, gọi vành số nguyên Q(β), phân tích thừa số iđêan... Vì vậy, sử dụng 253! − ta kết thừa số nguyên tố p = 350437 N, thừa số (nguyên tố) khác 480661 Tất nhiên, p − tích thừa số nhỏ, p − = 350436 = 22 · · 19 · 29 · 53 22 1.5 Phân tích thừa số qua hiệu