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

Số nguyên tố và ứng dụng trong phương pháp chứng minh không tiết lộ thông tin

58 41 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

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 1,32 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Kiểm tra một số có phải số nguyên tố hay không, làm sao sinh được các số nguyên tố càng lớn càng tốt là những bài toán khá quan trọng trong khoa học máy tính.. Chương 1 giới thiệu số ngu

Trang 1

i

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

THÁI NGUYÊN - 2016

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

_ 

TẠ THỊ HẰNG

SỐ NGUYÊN TỐ VÀ ỨNG DỤNG TRONG PHƯƠNG PHÁP

CHỨNG MINH KHÔNG TIẾT LỘ THÔNG TIN

Chuyên ngành: Khoa học máy tính

Mã số: 60 48 0101

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Người hướng dẫn khoa học: TS Nguyễn Thị Hồng Minh

THÁI NGUYÊN - 2016

Trang 2

Dưới sự giúp đỡ nhiệt tình và chỉ bảo chi tiết của giáo viên hướng dẫn, tôi đã hoàn thành luận văn của mình Tôi xin cam kết luận văn này là của bản thân tôi làm và nghiên cứu, không hề trùng hay sao chép của bất kỳ ai

Trang 3

thông tin và các ứng dụng trong thự tế của nó

Tôi cũng xin chân thành cảm ơn quý Thầy, Cô trong trường Đại học Công nghệ Thông tin & Truyền thông - Đại học Thái Nguyên; quý Thầy, Cô trong Viện Công nghệ thông tin đã tận tình truyền đạt kiến thức cho chúng tôi trong 2 năm học tập và nghiên cứu Với vốn tiếp thu trong khóa học không chỉ là nền tảng cho quá trình nghiên cứu luận văn này mà còn là hành trang quý báu, nền tảng vững chắc để tôi tiếp tục nghiên cứu, hoạt động trong lĩnh vực công nghệ thông tin

Cuối cùng xin cảm ơn gia đình, bạn bè, đồng nghiệp đã giúp đỡ và động viên tôi trong công việc và học tập cũng như trong quá trình thực hiện luận văn này

Xin chúc mọi người luôn mạnh khoẻ, đạt được nhiều thành tích cao trong công tác, học tập và nghiên cứu khoa học!

Trân trọng cảm ơn!

Thái Nguyên, ngày 12 tháng 5 năm 2016

Tác giả

Tạ Thị Hằng

Trang 4

iv

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Danh mục viết tắt

Viết tắt Giải thích

CMKTTTT Chứng minh không tiết lộ thông tin

GMR Goldwasser, Micali và Rackoff

Trang 5

v

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Danh mục các hình và bảng

Hình 1.1: Sơ đồ quy trình bỏ lá phiếu điện tử……… 35

Hình 1.2: Sơ đồ giai đoạn đăng ký bỏ phiếu……… 36 Hình 1.3: Sơ đồ giai đoạn bỏ phiếu……… 38

Trang 6

vi

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Lời nói đầu

Ngày nay, công nghệ thông tin đang phát triển mạnh mẽ, Internet đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày thì các hoạt động trao đổi thông tin, mua bán,…trên mạng Internet diễn ra thường xuyên và ngày phổ biến hơn Chính vì vậy mà việc bảo mật, đảm bảo an toàn thông tin đang là nhu cầu cấp thiết Trước các nhu cầu cấp thiết đó, lý thuyết về mật mã thông tin

đã ra đời nhằm đảm bảo tính an toàn dữ liệu tại nơi lưu trữ cũng như khi dữ liệu đang được truyền trên mạng Mật mã học là một trong những vấn đề quan trọng trong lĩnh vực bảo mật và an toàn thông tin.Trên thế giới mật mã học được ra đời từ thời La Mã cổ đại và ngày càng được nghiên cứu, phát triển đạt những thành tựu to lớn Trong mật mã học thì vấn đề bảo mật luôn đi đôi với vấn đề xác thực thông tin, đặc biệt trong hệ thống mã hóa khóa công khai vấn đề xác thực là vô cùng quan trọng, để giải quyết vấn đề trên người ta đưa ra một cách giải quyết hiệu quả, đó là phương pháp chứng minh không tiết lộ thông tin Với

sự bùng nổ của mạng Internet hiên nay, mạng máy tính đang ngày càng đóng vai trò thiết yếu trong lĩnh vực hoạt động xã hội, và khi nó trở thành phương tiện điều hành các hệ thống thì nhu cầu bảo mật thông tin được đặt lên hàng đầu Việc sử dụng phương pháp chứng minh không tiết lộ thông tin là một giải pháp hữu hiệu, ngày càng được ứng dụng nhiều trong thực tế, không chỉ giới hạn trong nghành công nghệ thông tin, mật mã học mà còn được áp dụng nhiều trong lĩnh vực khác như ngân hàng, viễn thông…”Chứng minh không tiết lộ thông tin (zero Knowledge Proofs” là phương pháp chứng minh không có nghĩa là “ không để lộ thông tin” mà là “để lộ thông tin ở mức thấp nhất” về sự vật, sự việc cần chứng minh Với việc “không để lộ” người xác minh sẽ không có nhiều hiểu biết về sự vật, sự việc, họ chỉ thu được chút ít thông tin (coi như là không) về tính chất của nó nhưng vẫn đảm bảo được nhận thức về tính đúng của đối tượng cần xác minh

Trang 7

vii

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Số nguyên tố, một phát minh kì diệu của con người, được quan tâm không chỉ bởi cộng đồng toán học mà cả cộng đồng tin học do tính chất đặc biệt của nó

và cả những ứng dụng thực tế hiệu quả Ứng dụng chính của số nguyên tố là trong lĩnh vực mã hóa (cryptography), trong đó chúng ta cần tạo ra những số nguyên tố với hàng trăm chữ số Kiểm tra một số có phải số nguyên tố hay không, làm sao sinh được các số nguyên tố càng lớn càng tốt là những bài toán khá quan trọng trong khoa học máy tính

Trong đề tài này em tập trung nghiên cứu về một số vấn đề liên quan tới số nguyên tố lớn và ứng dụng trong phương pháp chứng minh không tiết lộ thông tin (bỏ lá phiếu điện tử và tiền điện tử)

Bố cục luận văn gồm 3 chương Chương 1 giới thiệu số nguyên tố và các bài toán liên quan và cách phân tích thừa số nguyên tố.Tiếp theo chương 2 trình bày

về thuật toán kiểm tra số nguyên tố lớn và ứng dụng trong phương pháp chứng minh không tiết lộ thông tin như bỏ lá phiếu điện tử, tiền điện tử từ đó chúng tôi

sẽ có những vị trí đặt trạm làm tiền đề cho chương 3 với thuật toán kiểm tra số nguyên tố lớn để ứng dụng trong bỏ lá phiếu điện tử Chương 3 sẽ trình bày một

số kết quả thực nghiệm để kiểm chứng hiệu quả của thuật toán trên hệ thống máy tính để kiểm tra và sinh số nguyên tố lớn, lồng ghép vào chương trình chứng minh không tiết lộ thông tin trong việc mô tả quá trình bỏ lá phiếu điện

tử

Trang 8

1

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Trang 9

Ký hiệu "b a" nghĩa là b là ước của a, ký hiệu a b nghĩa là a chia hết cho b

Ước tự nhiên khác 1 nhỏ nhất của một số tự nhiên là số nguyên tố

Chứng minh: Giả sử d a; d nhỏ nhất; d 1

Nếu d không nguyên tố d = d1.d2; d1, d2 > 1

d1|a với d1 < d: mâu thuẫn với d nhỏ nhất Vậy d là nguyên tố

Cho p là số nguyên tố; a N; a 0 Khi đó

Trang 10

ở phía tây, thách thức các nhà toán học

Có lẽ chúng ta cũng đã từng nghe đến phương pháp sàng lọc của nhà toán học Eratosthenes, dùng phương pháp này có thể tìm ra các số nguyên tố rất tiện lợi Nó giống như là sàng lấy sỏi trong cát, sàng lọc lấy những số nguyên tố trong tập hợp số tự nhiên, bảng các số nguyên tố chính là được làm theo phương pháp này

Thế nhưng, các nhà toán học chưa thỏa mãn với việc dùng phương pháp này để tìm ra số nguyên tố, bởi vì nó có chút mò mẫm nhất định, bạn không thể biết trước được số nguyên sẽ “sàng” ra số nào Điều mà các nhà toán học muốn

là tìm ra quy luật của số nguyên tố để nghiên cứu sâu hơn về nó

Từ trong bảng các số nguyên tố, chúng ta có thể thấy chúng được phân bố như sau: từ 1 đến 1000 có 168 số nguyên tố; từ 1000 đến 2000 có 135 số; từ

2000 đến 3000 có 127 số; từ 3000 đến 4000 có 120 số; từ 4000 đến 5000 có 119

số Khi số các số tự nhiên càng lớn thì tỉ lệ phân bố các số nguyên tố càng thưa

Số nguyên tố đã "hoá trang" cho mình rồi lẩn khuất trong các số tự nhiên, khiến việc tìm ra chúng trở nên khó khăn hơn

Ví dụ, 101, 401, 601, 701 đều là số nguyên tố, nhưng 301 và 901 thì lại không phải Có người thử tính như thế này: 12 + 1 + 41 = 43, 22 + 2 + 41 = 47,

32 + 3 + 41 = 53, , 392 + 39 + 41 = 1601 Có 39 số từ 43 cho đến 1601 đều là

số nguyên tố, thế nhưng tiếp sau đó: 402 +40 +41 =1681 = 41 x 41 thì lại là một hợp số

Trang 11

3

Nhà toán học người Pháp Ferma từng nghiên cứu lâu dài về số nguyên tố, ông từng đưa ra một suy đoán thế này: số (22n + 1) (với n là số nguyên) thì nhất định là số nguyên tố Ferma đã thử 5 "số Ferma" đầu thì đều là số nguyên tố, nhưng đến số "ferma" thứ sáu thì lại là hợp số, hơn nữa từ số "Ferma thứ 6" trở

đi, không thể phát hiện thấy số nguyên tố nào nữa, toàn là hợp số Xem ra số nguyên tố đã cố trêu đùa Ferma

Năm 1644, nhà toán học người Pháp Mason đã đưa ra "số Mason", hình thức của nó là (2p - 1) Khi ông còn sống, ông tìm ra 11p để cho (2p - 1) là số nguyên tố, người ta tiến hành kiểm chứng đối với 8p, chúng đều là số nguyên tố

250 năm sau, năm 1903, các nhà toán học tìm ra số Mason thứ 9 không phải là

số nguyên tố mà là hợp số Mặc dù Mason cũng không thực sự tìm ra quy luật của số nguyên tố, nhưng dùng phương pháp của ông, người ta tìm được nhiều số nguyên tố hơn Trong đó, số nguyên tố Mason thứ 33 được tìm ra nhờ máy tính điện tử , nó có 378632 là số nguyên tố lớn nhất mà loài người tìm được đến lúc

đó

Mersenne, tu sĩ người Pháp sinh năm 1588, đã khám phá ra dạng

số nguyên tố 2p-1 Một nhóm các nhà khoa học thuộc Đại học Missouri (Mỹ) đã

sử dụng hơn 700 máy tính để tìm ra số nguyên tố lớn nhất cho đến nay, một con

số khổng lồ với 9.152.052 con số Phát hiện này được thực hiện vào ngày 15/12/2005 và đã được xác nhận lại vào ngày 24/12/2005 Sự kiện này đánh dấu lần thứ hai trong năm nay dự án kết hợp máy tính có tên Tìm kiếm số nguyên tố Mersenne trên Internet (GIMPS - Great Internet Mersenne Prime Search) tìm ra

số nguyên tố lớn nhất Nhưng cũng tương tự như phát hiện hồi tháng Hai, con số mới được tìm ra này vẫn chưa đạt được kích thước 10 triệu con số cần thiết để giành được giải thưởng 100.000 USD từ Quỹ điện tử có tên là Electronic Frontier Foundation Dự án GIMPS khai thác sức mạnh của hơn 200.000 máy tính được cung cấp một cách tình nguyện với nhiệm vụ tìm kiếm tất cả các số nguyên tố Mersene Một số nguyên tố là một số chỉ có thể chia hết cho 1 và

Trang 12

số nguyên tố Mersenne Chúng được đặt tên theo tên của Marin Mersenne, một

tu sĩ người Pháp sinh năm 1588, người đã khám phá ra dạng số này Các số nguyên tố Mersenne trong nhiều trường hợp đã được các cá nhân tìm ra, nhưng lần này thì thành quả lại là của một nhóm tình nguyện viên Nhóm này tới nay

đã cống hiến một năng lực xử lý nhiều hơn bất cứ ai: tương đương với khả năng

xử lý của của một máy tính Pentium 90MHz chạy liên tục trong 67.000 năm Hai giáo sư Curtis Cooper và Steven Boone là những người phụ trách dự án này Con số nguyên tố được phát hiện lần này là số nguyên tố Mersenne thứ 43 được tìm ra

1.3.2 Phân tích ra thừa số nguyên tố

Các số có dạng Mq = 2q - 1 (với q là nguyên tố) được gọi là các số Mersenne và đã được nghiên cứu công phu

Vào năm 1640 , Mersenne đã cho rằng Mq là số nguyên tố đối với q=13,17,19,31,67,127,257; ông đã nhầm đối với 67 và 257 và đã không đưa 61,

89 và 107 vào danh sách trên Những số này còn sinh ra các số nguyên tố Mersenne Phát hiện của ông thực sự đáng kinh ngạc về mặt độ lớn của các số Một bài toán khá hiển nhiên là: Xét xem một số Mersenne có là số nguyên tố không, và nếu không thì xác định các thừa số của nó ( hay còn gọi là bài toán phân tích ra thừa số) Một kết quả cổ điển do Euler đưa ra năm 1750 và sau đó được Lagrange (1775) và Lucas (1875) chứng minh là:

Nếu q là một số nguyên tố đồng dư modul log 4(q(3) (mod 4)) thì M q chia hết cho 2q + 1 khi và chỉ khi 2q + 1 là nguyên tố; trong trường hợp này, nếu q> 3 thì

Mq là hợp số

Trang 13

5

Thật vậy: Cho n = 2q + 1 là một thừa số của M qVì 22# 1 (mod n) nên 2q# 1 (mod n), và 22q - 1 = (2q+1)Mq º0 (mod n), từ đó bằng phép thử của Lucas suy ra

n là một số nguyên tố

Ngược lại, cho p = 2q + 1 là một số nguyên tố Vì pº7(mod 8) nên

(2/p)=1, do vậy tồn tại m sao cho 2ºm2 (mod p) Điều này chứng tỏ rằng 2 qº2

(p-1)/2ºm p - 1 º1(mod p) Vì vậy Mq chia hết cho p

Hơn nữa, nếu q > 3 thì Mq = 2q -1>29+1=p, vì vậy M q là hợp số Vì vậy

nếu

q =11, 23, 83, 131, 179, 191, 239, 251, thì Mq có các ước tương ứng là 23,

47, 167, 263, 350, 383, 479, 503 Còn rất dễ để xác định hình dạng của các thừa

số của các số Mersenne:

" Nếu M q chia hết cho n thì nº±1 (mod 8) và nº1 (mod q)"

Vậy cho nên ta chỉ cần chỉ ra rằng mọi thừa số nguyên tố p của M q có dạng trên

Phương pháp tốt nhất hiện nay dùng để xác định Mq là một số nguyên tố

hay là một hợp số được phát triển dựa vào việc tính toán một số đệ qui do Lucas (1878) và Lemer (1930) đưa ra Tuy nhiên, bằng cách này vẫn không tìm ra được các thừa số cụ thể

Nếu n lẻ, n³3 thì M n = 2n - 1º7 (mod 12) Đồng thời, nếu Nº7 (mod 12) thì

ký hiệu Jacobi:

1 )

1 )(

3 ( )

3

(  N  (N1)/2  

N

Trang 14

6

Như vậy khi phân tích một số a > 1thành một tích những thừa số nguyên tố,

ta có thể gặp cùng một thừa số nhiều lần Nếu p1,p2, ,pn xuất hiện theo thứ

m

m n

m p p p a

p p p a

1 12 11

2 1

2 1 1

Phần đầu nói về định nghĩa và các tính chất của số nguyên tố

Tiếp theo là những vấn đề về sinh số nguyên tố và phân tích số nguyên tố

đó ra thừa số

Nội dung chính chương giúp hiểu được số nguyên tố và mô hình hóa lập kế hoạch giải quyết các bài toán về số nguyên tố Đây là cơ sở quan trọng để tiến hành xây dựng các thuật toán kiểm tra số nguyên tố và sinh số nguyên tố lớn đảm bảo hiệu quả, sẽ trình bày ở các chương tiếp theo

Trang 15

- Nếu n là 1, thì n không là số nguyên tố

- Xét tất cả số nguyên i nhỏ hơn (n - 1), kiểm tra xem n có chia hết x không, nếu tất cả không thì n là số nguyên tố

Thuật toán có thể viết dạng giả mã như sau:

Giải thuật 1: Kiểm tra số nguyên tố

Chúng ta có thể nhận thấy rằng giải thuật 1 kiểm tra số nguyên tố có số lần

lặp tuỳ thuộc vào giá trị của n, nếu n quá lớn, giải thuật sẽ tính toán với thời

gian lớn Có thể làm giảm bớt thời gian tính toán trong thuật toán 1 bằng cách thêm và điều chỉnh một số lệnh như sau:

- Thêm lệnh kiểm tra trường hợp n là số chẵn (n%2==0) kết thúc thuật

toán trả về giá trị 0

- Điều chỉnh vòng lặp for với i chạy từ 2 tới n mà vẫn nhận được kết

quả đúng Vì nếu một số n không là nguyên tố có ước a thì sẽ có ước n/a, một trong hai giá trị a hoặc n/a sẽ có nhỏ hơn n, vậy chúng ta chỉ cần thực hiện vòng lặp đến n để tìm ra ước của n nếu có Giải thuật 2 có thể được viết lại

như sau:

Trang 16

Độ phức tạp của giải thuật 2 trong trường hợp xấu nhất là O( n) Tuy

có giảm được thời gian tính toán so với giải thuật 1, nhưng với giá trị n rất

lớn thì đây cũng chưa phải là giải thuật có thể đáp ứng được yêu cầu về mặt thời gian tính toán Chúng ta sẽ xem xét một số kĩ thuật phân tích và thiết kế thuật toán kiểm tra số nguyên tố lớn một cách hiệu quả trong những phần tiếp theo của chương này

2.1.1 Kiểm tra số nguyên tố bằng thuật toán Konigin-Pomerans

Nếu nN và một số được phân tích ra thừa số nguyên tố n-1, thì để kiểm

tra n là hợp số hay là số nguyên tố ta đánh giá độ phức tạp theo đa thức

Input: n

Output: Số n cần kiểm tra là hợp số hay số nguyên tố

Thuật toán Konigin-Pomerans

Đặt F(1):=1 log2n 1

Sau đó đối với từng số a=2,3,…, log2n 1chúng ta thực hiện cho đến khi chúng ta không chứng minh được n là hợp số hay nguyên tố

Trang 17

9

1 Nếu a là hợp số, thì F(a) : F(a 1 )và nhảy lên bước 6 Nếu a là số nguyên tố, và a F(a1)  1 (modn), thì F(a) : F(a 1 ) và nhảy đến bước 6 Ngược lại chúng ta kiểm tra điều kiện sau, xem có thỏa mãn không:

) (mod 1

1

n

a n  Nếu như không, thì n là hợp số

2 Khi phân tích n-1 ra thừa số nguyên tố, ta tìm bậc của a (mod n), nghĩa

là số tự nhiên nhỏ nhất E(a), thỏa mãn a E(a) 1 (modn)

3 Kiểm tra điều kiện sau có thỏa mãn hay không:

) (

|

/ )

( (

a E q

q a E a UCLN, q là số nguyên tố

Nếu như điều kiện trên không hoàn thành thì n là hợp số

4 F(a) : BCNN(F(a 1 ),E(a)), BCNN-bội số chung nhỏ nhất

5 Nếu như F(a)  n, thì n là số nguyên tố

6 Nếu như alog2n, thì quay về tầng 2 với a là giá trị tiếp theo Nếu như alog2n 1, thì n là hợp số

Đánh giá độ phức tạp của thuật toán Konigin- Pomerans

j

q n

1

1 Lúc này việc kiểm tra tính

nguyên tố của n có thể có chi phí là  

log log log 17/7 Thật vậy với nN,n 1, n là số

lẻ, n 1 F1.R1, ở đây UCLN(F1,R1)  1, và biết được sự phân chia F1 ra thừa số nguyên tố Nếu Fn4n

1

1 , với là số dương không đổi, thì việc kiểm tra tính nguyên tố của n có thể chi phí là O((logn)c())( c(  ) là số nguyên dương không đổi, phụ thuộc vào 

Chúng ta chứng minh tính đúng đắn của thuật toán và nhận đánh giá về độ phức tạp của thuật toán

Trang 18

p n

1

1  - tức là biết được sự phân tích ra thừa số

nguyên tố của số n-1

Output :là bậc của a (mod n) trong Z n

Thuật toán tìm bậc của phần tử

1 Mn 1 ,j:  0

j A a p

M M j

j:   1 , :  / j, : 

3.(Chu trình) Đối với l 0 , 1 , , j, kiểm tra xem điều kiên sau có thỏa mãn không

) (mod

Và chuyển đến giá trị tiếp theo của l trong chu trình

4 Nếu như j<N, thì quay về bước 2, ngược lại thì đưa ra M

Tính đúng đắn của thuật toán tìm bậc của phần tử thì quá rõ ràng Để nhận được đánh giá về độ phức tạp của thuật toán này ta chú ý rằng

1

2

Trang 19

f  - hàm số trên tập số tự nhiên, với f(n)<n Tương tự

Konhiagin-Pomerans chúng ta xem thuật toán Miller

Input :Số tự nhiên lẻ n, n>1

Output : Flase nếu n là số nguyên, True nếu n là hợp số

Thuật toán Miller

1 Kiểm tra điều kiện sau có thỏa mãn hay không s

m

n , với 2

,

,mN s

s Nếu như thỏa mãn, thì n là hợp số, và thuật toán dừng

2 Thực hiện các bước nhỏ (i)-(iii) đối với tất cả af (n)

(i) Kiểm tra điều kiện a|n

(ii) Kiểm tra điều kiện a n1 (modn)

(iii) Kiểm tra xem có đúng hay không, với một số giá trị của k,

) 1 (

1 kv2 n ,

n n n a

1

Nếu như một trong ba điều kiện (i)-(iii) thỏa mãn thì n là hợp số, và thuật

toán dừng

3 Nếu như chúng ta đi đến được bước này thì n là số nguyên tố

2.1.3 Kiểm tra tính nguyên tố của số bằng phép kiểm tra xác suất

Các phép kiểm tra tính nguyên tố hay dùng nhất là các thuật toán ngẫu

nhiên Giả sử có một mệnh đề Q(p,a) nào đó đúng với mọi số nguyên tố p và một số tự nhiên a <= p Nếu n là một số tự nhiên lẻ và mệnh đề Q(n,a) đúng với một a<= n được lấy ngẫu nhiên, khi đó a có khả năng là một số nguyên tố Ta đưa ra một thuật toán, kết luận rằng n là số nguyên tố Nó là một thuật toán ngẫu

Trang 20

12

nhiên hay thuật toán xác suất Trong các thuật toán loại này, dùng để kiểm tra ngẫu nhiên không bao giờ kết luận một số nguyên tố là hợp số nhưng có thể kết luận một hợp số là số nguyên tố Xác suất sai của phép kiểm tra có thể giảm

xuống nhờ việc chọn một dãy độc lập các số a nếu với mỗi số a xác suất để

thuật toán kết luận một hợp số là số nguyên tố là nhỏ hơn một nửa thì sau k lần thử độc lập, xác suất sai là nhỏ hơn 2−k,độ tin cậy của thuật toán sẽ tăng lên theo

k

Cấu trúc cơ bản của một phép kiểm tra ngẫu nhiên là:

Input: n

Output: Số n cần kiểm tra là hợp số hay là số nguyên

Thuật toán kiểm tra xác suất

2.1.4 Kiểm tra trên cơ sở định luật nhỏ của Fermat

Phương pháp này dựa trên định luật nhỏ của Fermat: Nếu như n là số nguyên

tố thì bất kỳ số aZthỏa mãn phương trình sau

Trang 21

13

(1) a na (mod n)

Nếu như UCLN(a,n)  1, thì

(2) a n1 1 (modn) Cho nên để kiểm tra tính nguyên tố của n, chúng ta chọn một số bất kỳ aZ

và kiểm tra xem có thỏa mãn định lý của Fermat hay không? Nếu như định lý Fermat không thỏa với một giá trị a nào đó thì n là hợp số Nếu thỏa mãn, thì chúng ta cũng không thể kết luận rằng n là số nguyên tố, bởi nó chỉ đúng trong điều kiện cần Vì vẫn tồn tại n là hợp số, thì đối với bất kỳ số aZ, thì ta vẫn có được đằng thức a na (mod n), số này còn được gọi là số giả nguyên tố

Ví dụ, chúng ta xem số 561=3.11.17 Chúng ta chứng số này là số giả nguyên

tố Đồng dư thức a561a(mod 561 )sẽ tương đương với hệ

) 3

(mod

561

a

a  Tương tự kiểm tra đối với hai số 11 và 17

Như vậy việc kiểm số nguyên tố theo Fermat là có khuyết điểm

Ta có thể nêu ra các bước kiểm tra tính nguyên tố như sau:

Input : Chọn ngẫu nhiên a tập 1 , 2 , ,n 1

Output: Số n cần kiểm tra là hợp số hay là số nguyên

Thuật toán kiểm tra của Fermat

1: Kiểm tra điều kiện UCLN(a,n)=1

2: Nếu như điều kiện trên không thỏa mãn thì n là hợp số

3: Kiểm tra đẳng thức (2)

4: Nếu như đẳng thức (2) không thỏa mãn thì trả lời n là hợp số

5: Nếu như đẳng thức đúng thì trả lời là chưa biết, nhưng có thể kiểm tra lại một số lần với các a khác nhau

Giải thuật Fermat kiểm tra tính nguyên tố của số

Trang 22

Khi dùng thuật toán tính nhanh luỹ thừa theo mođun, thời gian thi hành của

thuật toán là O(k × log3n), ở đó k là số lần kiểm tra với mỗi số a ngẫu nhiên, và

n là giá trị ta muốn kiểm tra Và từ việc kiểm tra này dẫn ta đến phần sau

Cho n>1 là số tự nhiên lẻ, n 1  22.d, ở đây d là số lẻ Số n gọi là số giả

nguyên tố

Chặt chẽ trong cơ sở a, aN, nếu như UCLN(a,n)  1 hoặc a d  1 (modn), hoặc

) (mod

Vậy cho nên nếu n là số nguyên tố, thì a n1 1 (modn), tức là a2s d  1 (modn)

Từ đây ta có a2s1d   1 (modn) Nếu như a2s1d   1 (modn), thì chúng ta dừng, nếu

như a2s1d  1 (modn), thì chúng ta lại khai căn cho đến khi tìm được d

a hay căn đó đồng dư với -1

Để kiểm tra tính nguyên tố của các số lẻ n, 9

10 25

7 n , ta dùng quá trình như sau:

Bước 1: Kiểm tra tính chặt chẽ giả nguyên tố của n trong cơ sở 2,3,5,7 Nếu

n không là chặt chẽ giả nguyên tố một trong các cơ sở đó thì n là hợp số

Bước 2: Nếu n = 3215031751, thì n là hợp số, ngược lại n là số nguyên tố

Trang 23

15

Như vậy chúng ta thấy việc kiểm tra trên cơ sở tính chặt chẽ giả nguyên tố là hiệu quả đối với việc tìm số hợp số, thế nhưng cách này cũng chỉ đúng trong một điều kiện cần thiết

2.1.5 Kiểm tra bằng Miller-Rabin

Kiểm tra Miller-Rabin là một thuật toán xác suất để kiểm tra tính nguyên tố

Nó được đề xuất đầu tiên bởi Gary L Miller như một thuật toán tất định, dựa trên giả thiết Riemann tổng quát; Michael O Rabin đã sửa chữa nó thành một thuật toán xác suất

Khi sử dụng kiểm tra Miller-Rabin chúng ta căn cứ vào một mệnh đề

Q(p,a)đúng với các số nguyên tố p và mọi số tự nhiên aANvà kiểm tra xem chúng có đúng với số n muốn kiểm tra và một số aAđược chọn ngẫu nhiên

hay không? Nếu mệnh đề Q(n,a) không đúng, tất yếu n không phải là số nguyên

tố, còn nếu Q(n,a) đúng, số n có thể là số nguyên tố với một xác suất nào đó

Khi tăng số lần thử, xác suất để n là số nguyên tố tăng lên

Giải thuật kiểm tra Miller-Rabin

Input : Số tự nhiên lẻ n

Output : FALSE nếu n là hợp số, nếu không TRUE

Begin

1 Phân tích n - 1 = 2sm trong đó s 1 và m là số tự nhiên lẻ

2 Chọn ngẫu nhiên số tự nhiên a {2, ,n-1}

Trang 24

16

Chúng ta xem tính chặt chẽ của thuật giải trên Bây giờ chúng ta xem, nếu

như thuật toán trả lời FALSE mà trong khi đó n là số nguyên tố Vì n là hợp số

nên ta có a m  1 (modn) Bây giờ xét dãy các giá trị b được kiểm tra trong bước 2

của thuật toán Vì b được bình phương qua bước 5, nên ta kiểm tra các giá trị

m m

1

1

2

n

a sm  hoặca2s1m   1 (modn) Mà theo giả thuyết chứng minh ta

a2s1m   1 (modn), nên a2s1m  1 (modn) Và ta có s m

a22 là căn bậc 2 của 1 Bằng cách tương tự:

) (mod 1

a m

Điều này là mâu thuẫn

Xác suất trả lời sai:

Theo Fermat nếu n là hợp số dương lẻ thì trong các số a{2, ,n-1}tồn tại

không quá

4 1

n cơ sở a để n là số giả nguyên tố mạnh Fermat[F Sarrus vào năm

[[1820]] đã tìm thấy 341 = 11×31 là số giả nguyên tố đầu tiên,với cơ sở 2]

Gọi A là biến cố "Số n là hợp số" B là biến cố "Kiểm tra Miller-Rabin trả lời

n là số nguyên tố" Khi đó xác suất sai của kiểm tra này là xác suất để số n là hợp số trong khi thuật toán cho câu trả lời TRUE, nghĩa là xác suất điều kiện P(A|B)

Trang 25

n n A

P

ln

2 ln ln

2 1 )

(    

Theo định lý Bayes trong lý thuyết xác suất ta có công thức để tính xác suất sai của kiểm tra Miller-Rabin là:

) ( )

| ( ) ( )

| (

) ( )

| ( )

(

) ( )

| ( )

|

(

A P A B P A P A B P

A P A B P B

P

A P A B P B

P

ln

2 ) ( 1 ) (   

Từ đây ta có

2 ) 2 (ln )

| (

) 2 (ln )

| ( )

P

n A B P

B

A

P

Kiểm tra Miller-Rabin lặp:

Theo công thức tính xác suất sai trên đây, với n lớn (cỡ 130 chữ số thập phân), nếu thực hiện phép thử Miller-Rabin chỉ một lần, xác suất sai là khá lớn, tới trên 90% Để giảm xác suất sai, ta lặp lại phép thử k lần với k số ngẫu nhiên

a khác nhau, nếu n vượt qua 50 lần thử thì P(B|A) k

4

1

 , khi thay vào công thức với 50 lần thử nếu cả 50 lần, phép thử đều "dương tính" thì xác suất sai giảm xưống chỉ còn là một số rất nhỏ không vượt quá 29

10

9  

2.1.6 Thuật toán kiểm tra số nguyên tố của Solovay – Stransen

Theo Euler là mệnh đề Q(p,a) Khi đó Q(p,a) đúng với mọi số nguyên tố p và

mọi số tự nhiên a, 1 ap Thay số nguyên tố p bằng số lẻ n ta định nghĩa: Hợp

số n được gọi là số giả nguyên tố Euler cơ sở a(1 an) nếu:

Trang 26

18

) (mod

2 / ) 1 (

n a

2

1

n n

n 1   

1 - tức là phân tích n ra thừa số nguyên tố

Nếu n chia hết cho số bình phương số nguyên tố, thì tìm được

N

b ,UCLN(b,n)  1, sao cho b n1 1 (modn), từ đây 2 1 (mod )

1

n b

i

p

b  - là căn nguyên thủy trong i

p

Z  , còn khi , 1 (mod j)

j p b

i

j   Nếu như b n1 1 (modn), thì 1 1 (mod i)

i n

p

b    , từ đây  1 ( )  1(  1 )

i i

p

n   ii , điều này là không thể bởi vì

n-1 không chia hết cho p i

Bây giờ giả sử rằng np1 p k Chúng ta tìm số bN, sao cho b(mod p1)-là căn nguyên thủy trong Z p1, và b 1 (mod p j) khi j>1 Khi đó UCLN(b,n)  1 và

1

1 1

b p

b n

1

p b

n a UCLN n

a a W

n a UCLN n

a a W

n

,

Trang 27

a n

a

a1 2 1 2 Cho nên đối với số aW1, thặng dư không âm nhỏ nhất của ba (mod n)thuộc W2 Dẫn đến ,|W2|  |W1|, từ đây rút ra điều khẳng định của định lý

Giải thuật kiểm tra Solovay-Strasen

Gọi A là biến cố "Số nguyên lẻ n là hợp số"; B là biến cố: "Thuật toán

Solova-Strassen trả lời TRUE"

Input: n là số tự nhiên lẻ

Output: FALSE nếu n là hợp số, nếu không TRUE

Thuật toán kiểm tra số nguyên tố của Solovay - Stransen

1: Chọn a ngẫu nhiên trong khoảng[1,n-1]

2: Tính ký hiệu Jacobi J=a/n

3:Tính x =a (n-1)/2 mod n

4:Nếu J ≠ x thì trả về FALSE

nếu khác trả về TRUE

2.1.7 Kiểm tra tính nguyên tố của số bằng thuật toán đa thức

Cho p là số lẻ, aZ,UCLN(a,p)  1 Số p là số nguyên tố khi và chỉ khi

Trang 28

20

) (mod )

(xa px pa p

Input: Cho n lẻ, n > 1

Output: số n cần kiểm tra là hợp số hay là số nguyên tố

Thuật toán đa thức

1 Nếu như n có dạng b

a , ở đây a,bN,b 2, thì thông báo, n là hợp số và

thuật toán kết thúc

2: r:=2

3: Đối với giá trị hiện tại của r thực hiện bước 4-8

4: Nếu như r<n và UCLN(r,n)>1, thì n là hợp số, thuật toán kết thúc

5: Nếu r là số nguyên tố, thì hoàn thành các bước 6-7, ngược lại thì

chuyển đến bước 8

6: Tìm số q – là ước số nguyên tố lớn nhất của r-1

7: Nếu q 4 rlog2n và 1 (mod )

r thì kiểm tra điều kiện UCLN(a,n)  1

Nếu như n 1 2 rlog2n, thì đối với tất cả a từ đoạn

r n

1   kiểm tra biểu thức

) 1 (mod )

x a x a x

trong Z n x Nếu như đối với một số giá trị a trong trường hợp 1 hoàn thành bất đẳng thức UCLN(a,n)>1, hoặc trong trường hợp 2 đẳng thức theo modulo r  1

x không đúng thì n là hợp số và thuật toán dừng

10: Nếu như chúng ta đi đên bước này thì n là số nguyên tố

Trang 29

21

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

Sau đây chúng ta sẽ đi tìm hiểu một số phương pháp để có thể kiểm tra tính nguyên tố của số tự nhiên N, khi biết số đó được phân tích ra N thừa số Và tìm hiểu một số phương pháp tạo ra số nguyên tố lớn được áp dụng trong mật mã 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

2.2.1.Thuật toán sinh số nguyên tố xác suất

Giả sử T là một trong những phép kiểm tra 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)

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

Các bước thực hiện

Bước 1:Chọn ngẫu nhiên một số nguyên lẻ N sao cho 2 k-1 < N < 2 k

Bước 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

Thuật toán tìm kiếm tăng dần

Các bước thực hiện:

1 Chọn ngẫu nhiên số lẻ n 0 sao cho 2 k-1 < n 0 < 2 k

Lấy N = n 0 và N max = min(2 k , n 0 + 2) Thực hiện thủ tục dưới đây

2 Nếu N qua được phép kiểm tra T, cho đầu ra là N và dừng

3 Lấy N = N+2 Nếu N>N max quay lại bước 1, còn không quay về

bước 2

Trong thuật toán có xuất hiện tham số  Tham số này giới hạn lượng tăng dần khi thực hiện tìm kiếm một số nguyên.Nếu tham số = 10ln(2 k) Kết quả này

Ngày đăng: 29/03/2021, 07:15

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w