Ứng dụng của số nguyên tố

Một phần của tài liệu Testing is intended to show that a program does what it is intended to do and to dis (Trang 29)

CHƢƠNG1 TỔNG QUAN VỀ SỐ NGUYÊN TỐ

1 74 Cs nguy nt gi ith y

1.8 Ứng dụng của số nguyên tố

1.8.1 Mật mã và số nguyên tố

Hơn b o giờ hết ho ến n y khi m xã hội ng y ng hiện ại th vấn bảo mật th ng tin ng trở n n ấp thiết v l m i qu n t m kh ng hỉ ở ấp qu gi m òn m ng tính to n ầu Mã hó th ng tin ã xuất hiện rất sớm, từ thời ổ ại Ngƣời t ho r ng ngƣời ầu ti n p dụng mật mã một h hệ th ng ể ảm bảo bí mật th ng tin qu n s l nh thi n t i qu n s La Mã ổ ại Julius C es r [10].

Đến khoảng u i những n m 70, ngƣời t vẫn xem việ nghi n u s nguy n t l một trong những ng nh lí thuyết thuần t y to n họ v hầu nhƣ nó kh ng ó ng dụng trong th tiễn Qu n niệm ó th y ổi hẳn s u khi s nguy n t lớn ƣợ p dụng ể x y d ng hệ mật mã khó ng kh i C lý thuyết mới s họ , biệt s họ thuật to n t m thấy những ng dụng tr tiếp v o th tiễn

Dƣới y l thời gi n ghi nhận nh b họ x y d ng bảng s nguy n t từ 1603-1863

- 1603: K t ldi lập bảng s nguy n t từ 2 ến 760. - 1657: Shuten lập bảng s nguy n t từ 2 ến 10.000. - 1811: Tchernak lập bảng s nguy n t từ 2 ến 1 triệu - 1814 - 1816: Doughort lập bảng s nguy n t từ 2 triệu ến 3 triệu - 1865: Crelle lập bảng s nguy n t từ 2 ến 9 triệu

- 1897: Pervushin lập bảng s nguy n t từ 2 ến 10 triệu - (1773 - 1863): Kulik lập bảng s nguy n t từ 2 ến 100 triệu

1.8.2 Các hệ mật mã công khai

Nguyên lý chung

Trong hệ mật mã ổ, khó lập mã u phải ƣợ giữ bí mật, v nếu khó lập mã bị lộ th ngƣời t ó thể t m r ƣợ khó giả mã trong một thời

gi n tƣơng i ngắn Nhƣ vậy nếu trong một hệ th ng ó nhi u p ho nhi u nhóm ngƣời ần tr o ổi th ng tin mật với nh u, s khó mật mã hung ần giữu bí mật l rất lớn v nhƣ vậy khó ó thể ảm bảo ƣợ n to n Hệ mã m h ng t nghi n u dƣới y ƣợ lập theo một nguy n tắ ho n to n mới, trong ó việ biết khó lập mã kh ng ho phép t m r khó giải mã trong một thời thời gi n hấp nhận ƣợ V thế, mỗi th nh vi n hỉ ần giữ bí mật khó giải mã ri ng m nh, trong khi khó lập mã ƣợ th ng b o ng kh i Trong trƣờng hợp một trong th nh vi n bị lộ khó giải mã m nh, bí mật th nh vi n còn lại kh ng h bị ảnh hƣởng

Hệ mật mã RSA

N m 1982 Ron Rivest, Adi Shamir v Len Adleman xuất một hệ mật mã khó ng kh i với ộ bảo mật rất o Độ bảo mật n y phụ thuộ v o hi u d i s nguy n t d ng ể tạo khó

Mỗi ngƣời sử dụng hệ th ng bảo mật, tạm gọi ngƣời ó l A ần ó h i khó : một khó ể công khai ho những i mu n gửi tin ho A, khó th h i ƣợ gọi l khóa mật ƣợ A giữ ri ng ể phụ vụ ho việ kí v n bản ho x ịnh bản quy n v n bản

Qui tr nh sinh khó ho mỗi ngƣời sử dụng b o gồm bƣớ s u: K1 Chọn h i s nguy n t p v q lớn

K2 Tính tí h n = pq v h m phi Euler (n) = (p1)(q1). K3. Chọn h i s nguy n dƣơng d v e thỏ i u kiện

de  1 mod (n)

Giữ khó ri ng (d,n), khó th h i l (e,n) ể ng kh i. Hệ RSA ó tính hất s u y:

(RSA) m ℤ/n: med m (mod n)

A1 Chi bản tin (dƣới dạng dãy bit) th nh oạn bit, mỗi oạn sẽ tạo th nh một s nguy n m trong khoảng 0 ến n1.

A2 D ng khó ng kh i B l eB ể mã hó mỗi s m theo ng th

A3 Gửi c cho B.

Với mỗi s c nhận ƣợ , B lấy khó ri ng m nh l dB ể giải mã theo ng th s u

Hệ th (RSA) ảm bảo ho qui tr nh mã hó v giải mã nói tr n Thật vậy, ( ) Nếu A mu n kí v o một kh i m v n bản th A sử dụng khó ri ng m nh l dA ể mã hó m theo ng th Việ l m n y ƣợ gọi l kí số.

Giải mã hữ kí s ƣợ th hiện theo qui tr nh s u:

( ) Vấn t r trong n to n th ng tin l

Biết khóa công khai (e,n) có thể tính được khóa mật d hay không?

Để tính khó mật d trƣớ hết t ph n tí h n th nh tí h 2 s nguy n t p v q, s u ó d v o qui tr nh tr n ể x ịnh d khi ã biết e. Tuy nhi n, nếu khi sinh khó t họn p v q khoảng 100 hữ s thập ph n th n = pq sẽ ó khoảng 200 hữ s thập ph n Để ph n tí h s nguy n lớn nhƣ thế th với thuật to n nh nh nhất hiện n y hạy tr n những si u m y tính hiện ại nhất ng ần h ng tỉ n m (Bảng 1 9)

Có một i u h ý khi họn s p v q ể tr nh rơi v o trƣờng hợp

bị ph n tí h nh nh nhờ những thuật to n biệt : p v q ần họn s o ho

p1, q – 1 phải ó thừ s nguy n t lớn, ƣớ hung lớn nhất ( p  1,

q – 1) phải nhỏ v p v q phải ó s hữ s thập ph n kh nh u kh ng nhi u.

Bảng 1.8 Thời gian máy tính dùng để phân tích số n ra thừa số nguyên tố [7] S hữ s thập ph n n S phép to n bit Thời gi n 50 1,4  1010 14 gi y 75 9,0  1012 3 giờ 100 2,3  1015 26 ng y 200 1,2  1023 3,8  1015 n m 300 1,5  1029 4,9  1021 n m 500 1,3  1039 4,2  1032 n m Th tế ng dụng ho ến n y ã h ng tỏ r ng hệ mã RSA rất n to n, tuy ó nhƣợ iểm l t ộ mã hó hậm (b ng 1 phần ng n hệ mã i x ng ó ng ấp ộ bảo mật hiện n y), ho n n nó thƣờng xuy n d ng ể mã hó bản tin ngắn, trong gi o th tr o ổi khó hệ mã i x ng

Tr n y l hệ mã ng kh i xuất hiện ầu ti n Từ ó ến n y ó nhi u hệ mã ng kh i r ời Nguy n tắ hung hệ mã ó l sử dụng những b i to n một hi u, t l những b i to n ho phép từ dữ liệu S b n ầu biến ổi th nh dữ liệu E th tƣơng i nhanh, nhƣng việ biết E t m ngƣợ lại S th òi hỏi thời gi n rất lớn

KẾT LUẬN CHƢƠNG 1

Trong hƣơng n y tr nh b y kh i niệm ầu ti n v s nguy n t v một s tính hất qu n trọng s nguy n t C tính hất n y sẽ ƣợ sử dụng ể triển kh i nội dung trong hƣơng h i v hƣơng b C mụ tiếp theo hƣơng sẽ giới thiệu một v i lớp s nguy n t qu n trọng ó v i trò biệt trong lý thuyết mật mã Đó l s nguy n t Ferm t v Mersenne. Phần u i hƣơng sẽ ph n tí h ý nghĩ v i trò s nguy n t trong ng nghệ th ng tin nói hung v hệ mật mã nói ri ng

CHƢƠNG 2: CÁC THUẬT TOÁN KIỂM ĐỊNH SỐ NGUYÊN TỐ SỐ NGUYÊN TỐ

2.1 Các lớp P và NP

Ký hiệu P l lớp b i to n ó thể giải b ng một thuật to n ơn ịnh với thời gi n th , NP l lớp b i to n ó thể giải b ng một thuật to n kh ng ơn ịnh với thời gi n th T ó ng y P  NP.

B i to n mở hiện n y l P = NP ? [5] [6]

B i to n T ƣợ gọi l NP-khó (NPH) nếu T  P kéo theo P = NP B i to n T ƣợ gọi l NP- ầy (NPC) nếu T l NP-khó v T  NP.

Cho ến n y hƣ t m ƣợ thuật to n ơn ịnh với thời gi n th ho bất kỳ b i to n NP-khó ho NP- ầy n o Hơn nữ , nếu ó một thuật to n nhƣ vậy th ó hính l một h ng minh ho ẳng th P = NP.

B i to n kiểm ịnh s nguy n n > 1 l nguy n t h y hợp s l b i to n thuộ lớp P, nghĩ l thuật to n ƣợ th hiện với s bƣớ O(L7), trong ó

L l s bit biểu diễn n, L = ⌈log n⌉ [5] [6]. Thí dụ, s 7 ƣợ biểu diễn b ng 3 bit, 7 = 1112, s 11 = 10112 ƣợ biểu diễn b ng 4 bit

Trong luận v n, lu n lu n kí hiệu L = BitLen(n) l s bít biểu diễn nhị ph n ho s nguy n kh ng m n. T ng qui ƣớ BitLen(0) = 1.

Ngo i r , khi ngữ nghĩ ã rõ r ng, th y ho BitLen, t qui ƣớ L l s bit biểu diễn s t nhi n n.

L = (n = 0) ? 1 : ⌊log n⌋ + 1

Trong phần tr nh b y thuật to n luận v n sử dụng ng n ngữ phỏng tr nh, phần viết trong [ ] l tuỳ họn

Algorithm <tên thuật toán> Ch n ng: Input: Output: Method < u lệnh> end.

(T1) for each t in R [with e] do P endfor

Th hiện to n tử P tr n những i tƣợng t trong R [ t thoả i u kiện e] (T2) for i ≔ d to c do P endfor

Th hiện to n tử P tr n những i tƣợng ƣợ truy xuất theo hỉ s i  {d, d+1,…, }

(T3) for i ≔ d to c step k do P endfor

Th hiện to n tử P tr n những i tƣợng ƣợ truy xuất theo hỉ s i  {d, d+k,…, }

(T4) while e do P endwhile

Nếu i u kiện e òn thỏ th l p P Vòng l p kết th khi e s i

(T5) if e then P [else Q] endif

Nếu i u kiện e thoả th th hiện P [nếu kh ng, th hiện Q] (T6) return x

output gi trị x v dừng thuật to n (T7) x ≔ e

Tính trị biểu th e rồi g n ho biến x (T8) (e) ? a : b

Nếu e ng th output trị e, nếu kh ng th output trị b (T9) // h thí h

2.2 Thuật toán kiểm định theo

Thuật to n kiểm ịnh tính nguy n t một s nguy n dƣơng n d tr tiếp v o ịnh nghĩ v một v i tính hất ơ bản s nguy n t Cụ thể nhƣ s u [7]:

NT1 S t nhi n n l nguy n t khi v hỉ khi n kh ng ó ƣớ kh 1

nhỏ hơn nó

NT2 S t nhi n n l nguy n t khi v hỉ khi n kh ng ó ƣớ kh 1

nhỏ hơn ho b ng √ .

NT3 S t nhi n n l nguy n t khi v hỉ khi n kh ng ó ƣớ nguy n

t nhỏ hơn ho b ng √ .

NT4 S t nhi n n l nguy n t khi v hỉ khi n = 2 ho n lẻ v kh ng ó ƣớ nguy n t nhỏ hơn ho b ng √ .

Thuật to n ơ bản v biến thể nó u òi hỏi √ phép to n hi dƣ Thuật to n thƣờng ƣợ d ng khi kiểm ịnh s kh ng lớn ( ó khoảng t i 10 hữ s thập ph n)

Trong thuật to n, h m Even(n) ho gi trị true nếu n l s hẵn Từ khó step 2 ho biết bƣớ t ng biến duyệt l 2 s u mỗi lần

Algorithm Prime(n)

Ch n ng: Kiểm ịnh tính nguy n t c a s t nhi n n

Input: S t nhi n n > 1 Output: true nếu n nguy n t f lse: ngo i r Method

if n < 2 return false endif; if n = 2 return true endif; if Even(n) return false endif;

for d := 3 to ⌊√ ⌋ step 2 do if (n mod d) = 0 then return false endif endfor return true

Độ phức tạp tính toán

√ phép hi dƣ

Giả sử t ó p = (p1, …, pk) l d nh s h k > 1 s nguy n t ầu ti n

trong dãy s nguy n t D v o d nh s h n y t ó thể kiểm ịnh tính nguy n t s từ pk + 1 ến pk2 theo thuật to n Prime2 s u y

Algorithm Prime2(p, k, n) Ch n ng: Kiểm ịnh tính nguy n t c a s t nhi n n Input:  p - d nh s h k > 1 s nguy n t ầu ti n  S t nhi n n > 1

Output: true nếu n nguy n t f lse: ngo i r Method

for each e in p with e ⌊√ ⌋ do

if n mod e = 0 then return false endif endfor return true EndPrime2. Thí dụ

Giả sử t ã biết k = 7 s nguy n t ầu ti n p[1..7] = (2, 3, 5, 7, 11, 13, 17)

T ó thể kiểm tr tính nguy n t s từ p[7]+2 = 19 ến (p[7])2

 1 = 2891 theo thuật to n Prime2 nhƣ s u Giả sử t họn s n = 103 ể kiểm tr

T ó ⌊√ ⌋ = 10, do ó hỉ ần kiểm tr xem 103 ó ƣớ nguy n t n o trong s 2, 3, 5, 7 h y kh ng T ó

103 mod 2 = 1  0 103 mod 3 = 1  0 103 mod 5 = 3  0 103 mod 7 = 5  0

Vậy 103 l s nguy n t

Độ phức tạp tính toán

√ phép hi dƣ.

2.3 Sàng Eratosthenes

Thuật to n s ng do nh to n họ ổ Hy Lạp Er tosthenes x y d ng khoảng n m 190 trƣớ C ng nguy n n n ƣợ m ng t n ng Với mỗi s t nhi n n ho trƣớ , s ng Er tosthenes liệt k s nguy n t  n.

Phi n bản nguy n th y S ng Er tosthenes ại thể nhƣ s u [7]: Nếu mu n nhận ƣợ s nguy n t nhỏ hơn ho b ng n hãy l m

nhƣ s u: 1 Viết dãy s từ 1 ến n 2 Xó 1 v ó l s biệt 3 T m s ầu ti n hƣ bị xó Gọi s ó l i 4 Nếu i2 vƣợt r ngo i bảng th kết th Nếu kh ng: l m tiếp bƣớ 5 5 Xó bội s i kể từ i2 trở i 6. Qu y lại l m tiếp bƣớ 3 Những s hƣ bị xó trong bảng l s nguy n t Algorithm Sieve Ch n ng: T m s nguy n t  n. Input: S t nhi n n > 1 Output: D nh s h p s nguy n t ≤ n Method 1. set 2..n as true

2. set 1 as false // delete 1 3. for i := 2 to √ do

if i is true then // i hƣ bị xó for j := i to (n div i) do

set i*j s f lse // xó bội // c a i kể từ ii endfor j

endif endfor i

Độ phức tạp tính toán

O(n√ ) v thuật to n l p √ lần, mỗi lần duyệt t i n phần tử

Trong thuật to n kiểm ịnh s nguy n t lớn nhƣ thuật to n AKSB sẽ tr nh b y trong hƣơng n y thƣờng ó bƣớ phụ trong ó vận dụng s nguy n t nhỏ Do ó thuật to n s ng ng ó í h trong trƣờng hợp n y

Họ vi n ã i t thuật to n s ng với n = 5000000 v ghi s

nguy n t t m ƣợ v o file

Bảng 2.1 Các số nguyên tố và hợp số (gạch dưới) trong khoảng 2100

1 là số đặc biệt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

2.4 Thuật toán kiểm định theo xác suất MILLER-RABIN

2.4.1 Cơ sở toán học

Kiểm ịnh Miller-Rabin l một thuật to n x suất ể kiểm ịnh tính nguy n t một s t nhi n lẻ Gary Miller l ngƣời ầu ti n x y d ng thuật to n d tr n giả thuyết Riem nn s u ó Michael Rabin ã ập nhật

thuật to n Miller th nh phi n bản x suất Từ ó thuật to n ƣợ m ng t n

Miller-Rabin. [5] [6] [7].

Thuật to n Miller-R bin kiểm ịnh tính nguy n t một s t nhi n lẻ n > 2 ó những iểm s u:

MR1 Nếu thuật to n trả lời false th n đúng là hợp số ( u trả lời l

hính x ).

MR2 Nếu thuật to n trả lời true th n là số nguyên tố với khả n ng s i 1/4k

trong ó k l s lần họn ngẫu nhi n một s trong khoảng từ 2 ến n2 ể test Nhƣ vậy, x suất ể khẳng ịnh n l s nguy n t phụ thuộ v o s lần test Thí dụ, với n l s ần kiểm ịnh v t họn s lần test l k = 100 th khi thuật to n Miller-R bin trả lời true (n là số nguyên tố) th khả n ng s i, t l

n th r l hợp s h kh ng phải l s nguy n t , l một s rất nhỏ, b ng

1/4100 Gi trị n y xấp xỉ 1060.

MR3 Thuật to n ó ộ ph tạp tính to n O(L4) phép to n bit, trong ó L l s bit biểu diễn s nguy n lẻ n, L = ⌈log n⌉.

Do ó t ộ tính to n nh nh so với thuật to n kiểm ịnh hính x ,

Một phần của tài liệu Testing is intended to show that a program does what it is intended to do and to dis (Trang 29)