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

Một số thuật toán số học và hệ mật mã khoá công khai

36 1,1K 2

Đ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

Tiêu đề Một số thuật toán số học và hệ mật mã khoá công khai
Tác giả Phan Xuân Vọng
Người hướng dẫn TS. Nguyễn Thành Quang
Trường học Trường Đại học Vinh
Chuyên ngành Toán học
Thể loại Luận văn
Năm xuất bản 2003
Thành phố Vinh
Định dạng
Số trang 36
Dung lượng 428,5 KB

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

Nội dung

Trong sách "nhập môn số học thuật toán" của Hà Huy Khoái, tác giả đã giới thiệu những ứng dụng quan trọng của số học vào thực tiễn mà tiêu biểu đó là các hệ mật mã khóa công khai.. Những

Trang 1

Lời nói đầu

Trớc thập kỷ bảy mơi, số học vẫn đợc xem là một trong những ngành lýthuyết thuần tuý và xa rời thực tế nhất Ngày nay, cùng với sự phát triển củatin học, nhiều ngành của lý thuyết số đã tìm thấy những ứng dụng quan trọngtrong đời sống nh : Thông tin, mật mã, kỹ thuật máy tính

Trong sách "nhập môn số học thuật toán" của Hà Huy Khoái, tác giả

đã giới thiệu những ứng dụng quan trọng của số học vào thực tiễn mà tiêu biểu

đó là các hệ mật mã khóa công khai Những ứng dụng này đợc xuất phát từ sựkhó khăn tìm ra thuật toán hữu hiệu để phân tích một số nguyên lớn ra thừa sốnguyên tố Nh vậy việc xây dựng các thuật toán số học trong đó có thuật toánphân tích một số nguyên lớn ra thừa số nguyên tố có tầm quan trọng đặc biệt

Trên cơ sở đó, trong khoá luận này, chúng tôi nghiên cứu đề tài: "Một số

thuật toán số học và hệ mật mã khoá công khai".

Khoá luận đợc chia làm hai chơng cùng với lời nói đầu, kết luận và tàiliệu tham khảo

Trong chơng I , chúng tôi giới thiệu các thuật toán số học có liên quantrực tiếp ở chơng II Trong chơng này chúng ta sử dụng một ký hiệu quantrọng thay cho phép gán đó là ":=" Kết quả chính ở chơng này là thuật toánEuclide mở rộng trên vành số nguyên Z và trên trờng Fq , thuật toán Tonelli-Shanks mở rộng trên trờng Fq và thuật toán kiểm tra số nguyên tố xác suấtSolovay-Strassen.Các kết quả này đã đợc kiểm tra trên máy tính

Những ứng dụng của lý thuyết số mà tiêu biểu là sử dụng các thuật toán

số học để xây dựng các hệ mật mã khoá công khai đợc trình bày ở chơngII.Kết quả chính ở chơng này là giới thiệu và chứng minh các tính chất liênquan tới hệ mật mã khoá công khai RSA

Khoá luận đợc thực hiện và hoàn thành tại khoa Toán Trờng Đại họcVinh dới sự hớng dẫn của thầy giáo TS.Nguyễn Thành Quang Nhân dịp nàytôi xin đợc bày tỏ lòng biết ơn và kính trọng sâu sắc tới các thầy TS NguyễnThành Quang, PGS.TS Ngô Sĩ Tùng, TS.Mai Văn T, TS Lê Quốc Hán và tấtcả các thầy cô giáo ở bộ môn Đại Số và khoa Toán Trờng Đại học Vinh Đặcbiệt là TS.Nguyễn Thành Quang đã dành rất nhiều thời gian và công sức đểgiúp tôi hoàn thành khoá luận này Tôi cũng xin bay tỏ lòng biết ơn tới GS-TSKH Hà Huy Khoái đã đọc khóa luận và cho những ý kiến xác đáng

Trang 2

Vinh ngµy 1 th¸ng 5 n¨m 2003

T¸c gi¶:

Phan Xu©n Väng

Trang 3

1.1 Thuật toán Euclide.

Thuật toán này dựa trên nhận xét sau:

Nếu b = 0 thì (a,b) = a, ngợc lại ta viết

a = p.b + r, 0  r < b thì (a, b) = (b,r)

E1 (Kết thúc) Nếu b = 0 thì in ra kết quả UCLN (a,b) = a và kết thúcthuật toán Ngợc lại chuyển sang bớc E2

E2 (chia Euclide): r:= a mod b; a:= b; b := r và chuyển sang bớc E1

Nhiều lúc, ngoài việc tìm UCLN của a và b ta cần tìm u,v để

d = UCLN (a,b) = au + bv

Thuật toán Euclide mở rộng giúp ta tìm u, v

1.2 Thuật toán Euclide mở rộng.

Trang 4

(trong suốt quá trình thực hiện thuật toán).

Nếu b = 0 thì thuật toán kết thúc ở Ed1 trong lần đầu tiên

Ngợc lại Ed3 thực hiện k lần thì q = qk; v3 = rk+1; u3 = rk

nên khi v3 = 0 = rn+1 thì u3 = rn = (a, b).Thuật toán đã đợc chứng minh

Một mở rộng tự nhiên cho các số a1, a2, , an và ta tìm đợc các số

u1, u2, , un sao cho (a1, a2, , an) = u1a1 + u2 a2 + + unan

Ta có thuật toán sau :

1.3 Thuật toán Euclide mở rộng cho nhiều số:

Thuật toán này xuất phát từ nhận xét sau:

Nếu an = 0 thì (a1, a2, …,a,an) = (a1 , a2 , …,a, a n-1 , 0) =(a1 , a2 , …,a, a n-1 );

Trang 5

ui = u1

i ; Ngợc lại chuyển sang E3

Đ 2 Thuật toán EUCLIDE trên trờng F p

2.1 Thuật toán chia đa thức.

Gọi P, Q  Zp[X]

Ký hiệu: l(p) là hệ số của luỹ thừa cao nhất của đa thức P

Khi Q  0,thuật toán sau cho phép tìm đa thức U, V  Zp[X] để

P(x) = Q (x) U(x) + V(x) với deg V < deg Q

2.2 Thuật toán tìm UCLN của P, Q  Z p [X].

EP1 (kết thúc): Nếu Q = 0, in ra P và kết thúc thuật toán

EP2 (chia euclide): Giả sử P = Q.U + V deg V < deg Q

(điều này đợc thực hiện nhờ thuật toán trên)

Đặt P: = Q; Q : = V và quay về EP1

Nhiều lúc ta phải tìm các đa thức M,N để d = M.P + NQ với d là UCLNcủa 2 đa thức P,Q Thuật toán Euclide mở rộng sẽ giúp ta làm điều đó

Trang 6

2.3 Thuật toán Euclide mở rộng trên trờng F q

Ed1(xuất phát): M1 : = 1 ; M2 : = 0; M3 : = P;

N1 : = 0 ; N2 : = 1; N3 : = Q;

Ed2(kiểm tra): Nếu N3 = 0 thì in ra kết quả và kết thúc thuật toán

d = M3 ; M = M1; N = M2; Ngợc lại, chuyển sang bớc Ed3

Tính đúng đắn của thuật toán đợc chứng minh tơng tự nh các thuật toánEuclide và Euclide mở rộng đối với các số nguyên

ở đây, M1, M2, M3, N1, N2, N3, T1, T2, T3 là các đa thức trên Zp[X]

Một vấn đề đặt ra nh sau: Tính d  am (mod q), với q, a và m là những

số nguyên cho trớc Để tìm d , ta có thể tính kết quả cụ thể của am rồi sau đólấy số d của phép chia am cho q Thế nhng khi a và m là các số lớn thì việc tính

am là rất khó khăn Sau đây ta sẽ mô tả một thuật toán cho phép tìm ra d khánhanh

Trang 7

Nếu N = 0 thì in ra d và kết thúc thuật toán.

Ngợc lại z:=z.z ( mod q) quay về BP2

Cách làm trên có thể áp dụng cho mọi nhóm nhân

Giả sử g  G là phần tử thuộc nhóm nhân G nào đó.Ta cần tính gn với n

ta gọi a là phần tử chính phơng trên trờng Fq

Ví dụ: Xét trờng F27  F3[X] f(x); f(x) = x3 + 2x + 1  F3[x];

Trang 8

Ví dụ: Xét trờng F7 ta có : ;1

7

3

;1 7

( 1 ở đây ta hiểu là phần tử đơn vị của Fq)

Định lý 4.1 Giả sử Fq là trờng có đặc số khác 2 Thế thì trong tất cả các phần

tử thuộc F*

qcó đúng (q - 1)/2 phần tử là thặng d bình phơng theo modulo q

Chứng minh:

Với một x  F*q, ta đặt a: = x2 mod q

Nh vậy a sẽ là một thặng d bậc hai theo modulo q

Mặc khác phơng trình x2  a mod q có đúng 2 nghiệm khác nhau trên

Định lý 4.2 (Tiêu chuẩn Euler).

Giả sử Fq là một trờng có đặc số khác 2, và a  F* Khi đó

nếu a là một thặng d bình phơng theo modulo q

nếu a không là một thặng d bình phơng theo modulo q

Trang 9

Trờng hợp 2:

Nếu q a = -1; tức là phơng trình đồng d: x2  a (mod q) là vô nghiệm

Mặt khác Ta lại có: Với mọi b  F*q, tồn tại duy nhất b*  F*q để bb* = a(b* = b-1.a)

Vì phơng trình đồng d vô nghiệm nên b  b*

q thành từng cặp mà tích củachúng bằng a Có (q-1)/2 cặp nh vậy

F*b

b

 a (q-1)/2 (mod q)

F*b

b

 -1 (mod q)

Thật vậy: Trong F* chỉ có 1 và -1 là có nghịch đảo là chính nó nên 

F*b b

b q

iii) a1, a2, , an  F*;    q 

a q

a q

a a

Nhiều lúc khi biết a là phần tử chính phơng, cần tìm x để x2 = a để làm

điều này ta xét thêm các tính chất nữa của thặng d bình phơng

Định lý 4.3 Giả sử Fq là trờng có đặc số khác 2 Khi đó

Trang 10

Giả sử a  0, a  Zp là trờng con nguyên tố của Fq

Gọi s là số các số trong dãy sau có thặng d âm trong hệ thặng d với giá trịtuyệt đối nhỏ nhất

Đ 5 Thuật toán tính căn bậc hai modulo q trên trờng F q

Sau đây ta sẽ xét thuật toán tìm x để x2 = a khi biết a là phần tử chínhphơng, tất nhiên ta có thể thử tất cả các phần tử của F* nhng cách này khônglàm đợc khi q lớn

Xét các trờng hợp riêng của q

Trang 11

Nếu a(q-1)/4  1 thì ta có nghiệm x = a(q+3)/8 (mod q)

Nếu a(q-1)/4  -1 thì ta có nghiệm x = 2a.(4a)(p-5)/8 (mod q)

= 2(p-1)/4 a(p+3)/8 (mod q)Thật vậy

Từ định lý 4.3 (phần thặng d bậc hai ) ta có:

1 )1(

q (mod q) tiêu chuẩn Euler

Suy ra: 2(q-1)/2  -1(mod q)

Nên x2 = 4a2 4(p-5)/4 a(p-5)/4 (mod q)  a(2(q-1)/2)) a(q-1)/4 (mod q)

 a(mod q)

Nh vậy chỉ còn trờng hợp khó khăn đó là q  1 (mod 8)

Dới đây là thuật toán Tonelli - Shanks để tính căn bậc hai mod q trên Fq

2

g g

Trang 12

để x0  a (mod q) mà b là phần tử sinh của F*

q nên x0 = blo, Vậy b 2l0  a (mod q)

Suy ra: (b2l0)g  ag (mod q); b2gl0 b gt o (mod q)

(1 mod q) không đồng d với nhau từng đôi một theo mod q

Điều này có đợc là vì nếu n là một phần sinh của G, và có

n2  1 (mod q) nên bậc của n sẽ là ớc của 2e Nếu bậc của n là 2k

(k < e) thì mâu thuẫn với điều kiện n, n2, n4, , e

n2 không đồng thời đồng dvới nhau từng đôi một

Cuối cùng ta cũng dễ thấy n, n2, n4, , e

n2 không đồng thời đồng d vớinhau từng đôi một khi và chỉ khi không là thặng d bình phơng theo

modulo q

Để xây dựng thuật toán ta tìm phần tử z và số mũ k

Tìm phần tử z đợc thực hiện bằng thuật toán xác suất

Chọn ngẫu nhiên n  F* Tính q

n

bằng cách tính n(q-1)/2 nhờ thuậttoán bình phơng liên tiếp

đến khi thích hợp Vì số các thặng d bình phơng theo modulo q là (q-1)/2, do

vậy xác suất rủi ro khi thực hiện m lần là m

2

1

Xác suất này rất nhỏ khi chọn

m khá lớn

Trang 13

Khi đã chọn điểm z thoả mãn tồn tại số k chẵn để ag zk  1 (mod q) tacòn phải tìm k.

Việc tìm k là khó khăn hơn thế nhng ta không cần biết k mà chỉ cầnbiết x = a(g+1)/2 2k/2.Thuật toán sau đây cho ta cách tìm x

5.1 Thuật toán Tonelli-Shanks.

TSh3(Tìm số mũ): Nếu b  1 (mod q), in ra x và kết thúc thuật toán

Ngợc lại, tìm số m nguyên dơng nhỏ nhất sao cho

y ; y := t2 , r := m; x := x.t; b := b.y và chuyển sang TSh3

Tính đúng đắn của thuật toán đợc chứng minh nh sau:

Ta nhận thấy từ bớc TSh3 trở đi luôn có

Trang 14

Đ 6 Thuật toán kiểm tra số nguyên tố xác suất

t

p

a p

e1 2

2

t i j

t t

Nếu tồn tại ti nào đó  2 thì pi n-1 điều này dẫn đến vô lý.Định lý đã đợcchứng minh

Định lý 6.2 Giả sử n là số nguyên dơng lẻ không chính phơng Khi đó tồn tại

ít nhất số b với 1 < b < n , (b, n) = 1 sao cho     1

n

b

.Chứng minh:

Nếu n là số nguyên tố lẻ, theo định lý 4.1 có đúng (n-1)/2 số b thỏa mãn

Trang 15

1 < b < n , (b, n) =1 và     1

n

b

Nếu n là hợp số lẻ không chính phơng

r t

Dùng định lý Trung Quốc về phần d ta tìm đợc b, 1 < b < n , (b,n) = 1sao cho b là nghiệm của phơng trình

p b

x

mod 1

b p

b

 1 1

q q

b

1 1

1 1

b q

b p

Từ đó suy ra: b(n-1)  1 (mod n)

Nh vậy n có dạng n = p1p2 pk tích của các số nguyên tố lẻ khác nhau (định

lý 6.1.)

Ta sẽ chỉ ra rằng b(n-1)/2  1 (mod n) với mọi b, 0 < b < n, (b, n) = 1

Nếu ngợc lại , tức là tồn tại b0 thoả mãn b0(n-1)/2  -1 (mod n)

Theo định lý Trung Quốc về phần d ta có a thoả mãn phơng trình

a  b0 (mod p1)

Trang 16

a  1 (mod p2 pk)

1< a < n, (a,n) =1

Khi đó a (n-1)/2  bo(n-1)/2  -1 (mod p1)

a (n-1)/2  1 (mod p2 pk)

Suy ra a (n-1)/2  + 1 (mod n) trái với (*)

Nh vậy ta có b (n-1)/2  1 (mod n) với mọi b , 0 < b < n ,(b, n) = 1

(mod n)Suy ra ba(n-1)/2  

Do vậy số các số a nguyên dơng không vợt quá n, nguyên tố cùng nhau với nthoả mãn đẳng thức a(n-1)/2  n

Trang 17

Từ đó ta có thuật toán sau:

6.4 Thuật toán kiểm tra số nguyên tố xác suất Solovay - Strassen

SS 1 (xuất phát) Chọn ngẫu nhiên k số b1, b2, , bk từ các số 2, 3, , n-1 Nếu tồn tại bi để (bi, n)  1 thì in ra kết quả n là hợp số vàkết thúc thuật toán

SS 2 (Kiểm tra ):Nếu tồn tại bj để 

(mod n)

+   n

b n

a n

Trang 18

+ JL1 (xuất phát): Đặt u : = bi (mod n) ;

v : = n ; d : = 1; s: = 0;

+ JL2 (kiểm tra ): Nếu n = 1 thì in ra kết quả là d và kết thúc thuật toán Ngợc lại chuyển sang JL3

+ JL3 (tách luỹ thừa của 2): s:=0;

Nếu u chẵn thì s:=s +1; u:= u/2, (lặp lại cho đến khi u lẻ)

d : = d (-1)s(v2 1 ) / 8  (v 1 )(u 1 ) / 4;

Đặt t : = u; u : = r với v = u.q + r , 0 r < u

v:= u;

Quay lại JL2

Trang 19

Chơng iI Vài ứng dụng vào lý thuyết mật mã

(Chú ý: Trong văn bản chữ cái hoa và chữ cái thờng đều có giá trị nh nhau)

Việc lập mã bằng mã Cesar đợc thực hiện nh sau:

+ Chuyển chữ thành số: Chuyển văn bản (bằng chữ) thành dãy số bằng cách

đặt tơng ứng với mỗi chữ cái trong văn bản với một số nh bảng trên

+ Chọn khoá lập mã: Khoá lập mã là một số k nào đó sao cho

0 < k< 29, k  Z

+ Ta cộng thêm k vào mỗi số của dãy vừa thiết lập tơng ứng (văn bản số)+Chuyển văn bản số thành văn bản chữ nhờ bảng tơng ứng.Khi đó ta đợc vănbản mật

ở đây ta chú ý: Khi cộng thêm k vào mỗi số thì số đó có thể vợt quá

29, tức là không có chữ cái nào tơng ứng, lúc này ta thay số đó bởi số d khichia cho 29

Trang 20

Ta tách văn bản thành từng nhóm để nâng cao tính bảo mật, ở đây ta táchthành từng nhóm 5 chữ cái Nh vậy thông báo cần mã hoá là:

Lythu yêtmâ tmakh ôngco gikhoNhờ bảng ta chuyển thông báo thành chữ số:

Chuyển lại thành chữ cái:

oâvlx âivlôd vôbnl qơkep kmnlp

III Mã aphin cesar:

Mã Aphin cesar là một mở rộng tự nhiên của Cesar và có công thức lập mã

C  aP + b (mod 29) , 1  C  29

Trong đó: a, b là các hằng số nguyên và (a, 29) = 1

Việc giải mã đợc tiến hành nhờ giải phơng trình đồng d

C  aP + b (mod 29) , 1  P  29

trong đó: P là ẩn cần tìm

Chú ý: điều kiện (a, 29) = 1 là cần thiết để đảm bảo tính chính xác khi giảimã

IV Tính bảo mật của văn bản.

Giá trị duy nhất của việc lập văn bản mật đó là tính bảo mật của vănbản Nếu tính bảo mật không cao, khi nhân viên giải mã gặp đợc văn bản mật

và tiến hành giải mã thì nội dung thông báo cần chuyển đi sẽ bị lỗ

Từ cách lập mã của mã Cesar và mã Aphin cesar ta thấy tính bảo mậtcha cao bởi vì:

Khi bắt gặp văn bản mật, ngời ta có thể dựa vào tần suất xuất hiện củacác chữ cái trong văn bản mật để đoán ra nội dung Hơn nữa, đối với mã Cesar

Trang 21

chØ cã 29 c¸ch lËp m· kh¸c nhau nªn dÔ dµng t×m ra kho¸ cña m· khi sö dôngm¸y tÝnh.

Trang 22

Đ2 Mã khối.

Để chống lại việc sử dụng tần suất xuất hiện của các chữ cái trong vănbản để tìm ra khoá giải mã Khác với các hệ mã vừa trình bày ta không mãhoá từng chữ cái của văn bản nữa mà mã hoá từng khối của văn bản, đó chính

là nội dung của việc lập mã bằng mã khối

A ( ), 1, ; aij  Z

Ma trận A phải thoả mãn điều kiện ( A , 29) = 1

Khi đó khối n chữ P1, P2, , Pn trong văn bản đợc chuyển thành khối n chữ

C1,C2, , Cn trong văn bản mật theo công thức sau:

1

. (mod 29); 1 Ci  29 i 1 ,n; (1)

Ví dụ : Để đơn giản ta chọn khối lập mã là hai chữ

Hãy mã hoá theo mã khối thông báo sau:

Không có điều bí mật nào giữ đợc lâuVới ma trận lập mã là

11 23

Lập mã ta tách thông báo thành từng khối hai chữ nh sau:

Kh ôn gc ođ iê ub im ât na og i đ ơc lâ ux

(Ta thêm x vào cuối văn bản)

Chuyển thông báo này thành chữ số nh sau:

9

) 29 (mod 11

23

2 1

2

2 1

1

P P

C

P P

Trang 23

II Giải mã.

Định lý 2.1 Cho hệ phơng trình đồng d

) (m od

) (mo d

2 2 1 1 1 1 2 12 1 1 1 m b x a x a x a m b x a x a x a n n nn n n n n Trong đó ma trận A= (aij ) là ma trận hệ số nguyên, bj là các số nguyên, ( A , m) = 1 Khi đó hệ phơng trình có nghiệm duy nhất theo modulo m, và nghiệm đợc xác định xi  A1Dx i (mod m)              nn ni n ni n n n i i i a a b a a a a a b a a a Dx

1 1

2 1

1 1

1 1 1 1 12

11

;

1

(Chứng minh tơng tự nh trong đại số tuyến tính, chỉ cần thay điều kiện

( A , m) = 1 bởi điều kiện A  0 xem [4] )

Viết lại công thức lập mã (1) dới dạng ma trận

) 29 (mod 1 1

n

n P

P

A

C

C

1 1 1

n

n C

C A

P

P

A-1 là ma trận nghịch đảo của ma trận A

Ma trận A-1 có thể có các hệ số không phải nguyên, ta chuyển (2) về dạng

t-ơng đt-ơng modulo m khác

1 1 1

n

n C

C A A P

P

(Vì ( A, 29 )  1);

Đặt B: = A A-1 thì B sẽ là ma trận hệ số nguyên

Mặt khác: do ( A , 29) = 1 nên có x0 A + y0.29  1 (mod 29)

Suy ra (x0, 29 ) = 1

Ta lại chuyển (3) về dạng tơng đơng khác

) 29 (mod 1 0

1

n

n C

C B

P

P

Với B0 = x0 A.A 1

Vì (B0 , 29 ) = 1 nên (4) có nghiệm duy nhất

Ngày đăng: 20/12/2013, 22:35

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