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

46 31 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

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
Thể loại Khoá luận
Năm xuất bản 2003
Thành phố Vinh
Định dạng
Số trang 46
Dung lượng 731,38 KB

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

Nội dung

Ngày nay, cùng với sự phát triển của tin học, nhiều ngành của lý thuyết số đã tìm thấy những ứng dụng quan trọng trong đời sống như : Thông tin, mật mã, kỹ thuật máy tính.. Trong sách "n

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ủa tin học, nhiều ngành của lý thuyết số đã tìm thấy những ứng dụng quan trọng trong đờ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án phâ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ài liệ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 quan trực tiếp ở chương II Trong chương này chúng ta sử dụng một ký hiệu quan trọng thay cho phép gán đó là ":=" Kết quả chính ở chương này là thuật toán Euclide 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ất Solovay-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ương II.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ên quan tới hệ mật mã khoá công khai RSA

Trang 2

Khoá luận được thực hiện và hoàn thành tại khoa Toán Trường Đại học Vinh dưới sự hướng dẫn của thầy giáo TS.Nguyễn Thành Quang Nhân dịp này tô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ễn Thành Quang, PGS.TS Ngô Sĩ Tùng, TS.Mai Văn Tư, TS Lê Quốc Hán và tất cả các thầy cô giáo ở bộ môn Đại Số và khoa Toán Trường Đại học Vinh Đặc biệ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

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úc thuậ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

Ed1 (xuất phát): Đặt u1 : = 1; u2: = 0; u3 : = a

3

v u

;

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, …,an) = (a1 , a2 , …, a n-1 , 0) =(a1 , a2 , …, a n-1 );

Nếu an  0 thì ta viết a1 = q1.an + r1; 0 r1< an

a2 = q2.an + r2; 0 r2 <an

………

an -1 = qn-1.an + rn -1;0 rn-1<an

Trang 5

Khi đó ta có (a1, a2, …,an) = (an, r1, …,rn-1);

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

CE1(xuất phát): Đặt V(x) : = P(x); U(x) = 0 ;

CE (kết thúc): Nếu deg V < deg Q thì kế thúc thuật toán

Trang 6

CE3 (tìm hệ số): Đặt S : = l(V) l(Q)-1 Xdeg V - deg Q;

U : = U + S;

V: = V-S.Q và quay về bước CE2:

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)

Quay lại bước Ed2

Tính đúng đắn của thuật toán được chứng minh tương tự như các thuật toán Euclide 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]

Trang 7

Đ 3 THUẬT TOÁN BÌNH PHƯƠNG LIÊN TIẾP

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ế nhưng 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 8

BP2 (kiểm tra) : Nếu N lẻ thì d: =d z (mod q);

BP3 (chia): Đặt N: = [N/2];

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

Trang 9

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

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 10

Nếu    q a    = 1 thế thì đồng dư thức x2  a (mod q) có nghiệm x0

Vì x0  F*q nên bậc của x0 là ước của q - 1

= -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*

Như vậy ta sẽ nhóm các phần tử của F*q thành từng cặp mà tích của chúng bằng a Có (q-1)/2 cặp như vậy

Nên ta có: 

 *

q

F b

b  -1 (mod q)

Trang 11

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

 *

q

F b

b q

iii) a1, a2, , an  F*q; 

a q

a a

NÕu

4) 1(mod q

NÕu 1

1 1

q

Đến đây ta đã có tiêu chuẩn để xét xem một phần tử thuộc F*q có phải

là một thặng dư bậc hai hay không (tức là có phải một phần tử chính phương hay không)

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

Trang 12

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

Trang 13

Sau đây ta sẽ xét thuật toán tìm x để x2

= a khi biết a là phần tử chính phương, tất nhiên ta có thể thử tất cả các phần tử của F*q nhưng cách này không làm được khi q lớn

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 ( )

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

Ta luôn viết q - 1 = 2e g ( g lẻ)

Nếu ta tìm được phần tử z và số nguyên k chẵn sao cho ag

zk 1 (mod q)

Trang 14

thì nghiệm cần tìm là x = a(g+1)/2

zk/2 (mod q)

Ta sẽ tìm phần tử z dưới dạng z = ng

, n  F*q

Ta chỉ ra rằng phần tử z như vậy thoả mãn yêu cầu đặt ra khi và chỉ khi

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

Thật vậy: Ta có thể gọi b là phần tử sinh của nhóm nhân xyclic F*q

Gọi G là nhóm nhân xyclic sinh bởi bg

, G = <bg> , bậc của bg

) , 2 (

2

g g

Vì a là một thặng dư bậc hai theo modulo q Do đó tồn tại x0  F*q

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

Trang 15

(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ó

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

, n4, ,

e

n2 không đồng thời đồng dư với nhau 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

= -1 thì đặt z = ng

Trang 16

Nếu ngược lại, ta lại tiếp tục làm như trên với một số ngẫu nhiên khác cho đế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

Khi đã chọn điểm z thoả mãn tồn tại số k chẵn để ag

zk  1 (mod q) ta còn phải tìm k

Việc tìm k là khó khăn hơn thế nhưng ta không cần biết k mà chỉ cần biế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

m  1;

m

b2  1 (mod q)

Nếu m = r thì in ra thông báo, a không phải là một thặng

dư bình phương theo modulo q

Ngược lại chuyển sang TSh4

TSh4 (Thu hẹp số mũ):

Đặt t := y2rm1; 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:

Trang 18

Đ 6 THUẬT TOÁN KIỂM TRA SỐ NGUYÊN TỐ XÁC SUẤT

k

tp

a p

a n

t

p p

t

p p

p 1. 2

2 1khi đó với mọi i ( 1  i  r) t i

t i

Trang 19

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ý đã được chứ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ếu n là số nguyên tố lẻ, theo định lý 4.1 có đúng (n-1)/2 số b thỏa mãn

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

Ta phân tích n ra dạng tiêu chuẩn n = t r

r t

t

p p

p 1. 2

2

1 vì n không phải số chính phương nên tồn tại ti lẻ, giả sử t1 lẻ

p 2

2 ; (p1, q) = 1) Gọi b0 là một không thặng dư bình phương modulo p1 (tồn tại do p1 là nguyên tố lẻ)

p b

x

mod 1

mod 10

1 1

0 1

0 1

b p

b p

b

Trang 20

Suy ra: 1

1 1

1 1

p

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

Trang 21

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

Từ (*) ta có    n b     1 với mọi b , 0 < b < n , (b,n) = 1 Mẫu thuẫn với định

Trang 22

Cũng dễ thấy rằng nếu hai số a, c khác nhau thì ab, cb cũng khác nhau

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

n thoả mãn đẳng thức a(n-1)/2    n a    (mod n) ít hơn số không thỏa mãn Từ đó định lý được chứng minh

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 để

Khi chọn các số b1, b2, , bk thì không nên chọn hai số có tổng bằng n

và một số bằng tích của hai số nào đó vì

(mod n)

Trang 23

+ Khi thực hiện thuật toán một điều khó khăn xẩy ra là phải tính 

+ 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) ( 1)/8 ( 1)( 1)/4

2   vu

v s

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

Trang 24

Quay lại JL2

Trang 25

CHƯƠNG II VÀI ỨNG DỤNG VÀO LÝ THUYẾT MẬT MÃ

Mã hoá: Là việc chuyển văn bản (thông báo) thành dạng mật mã

Văn bản mật: Là bản mã hoá của văn bản

Giải mã: Là chuyển một văn bản mật thành văn bản ban đầu

(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ăn bản mật

Trang 26

Ở đâ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ư khi chia cho 29

Ta có thể tóm tắt nội dung lập mã bằng công thức

C  P + k (mod 29)

trong đó: P là chữ số trong văn bản

C là chữ số tương ứng trong văn bản mật

Ví dụ 1:Hãy mã hoá văn bản sau đây bằng mã Cesar với khoá lập mã là k=3

LÝ THUYẾT MẬT MÃ KHÔNG CÓ GÌ KHÓ

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ách thà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 GIKHO

Nhờ 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

Đây là văn bản mật đã được mã hoá

II GIẢI MÃ

Giải mã văn bản mật được mã hoá bởi mã Cesar ta thực hiện giải phương trình đồng dư:

C  P + k (mod 29) 1  P  29

Trong đó: C là khối chữ trong văn bản mật (đã biết)

P là khối chữ trong văn bản (cần tìm)

Trang 27

k là khoá lập mã

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ải

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ăn bả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ật chưa 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ủa cá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 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ụng máy tính

Trang 28

Đ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ăn bả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

I MÃ HOÁ

Ta sử dụng bản tương ứng giữa chữ và số như bảng trên

Giả sử từng khối được mã hoá gồm n chữ Ta sẽ chọn khóa lập mã là một ma trận vuông cấp n với hệ số nguyên

n j i ij

a

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:

Ci = 

n j

j

ij P a

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ÂU

11 23

A ; ( A , 29) = (177, 29) = 1

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:

Ngày đăng: 17/07/2021, 11:27

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] - Hà Huy Khoái , Nhập môn số học thuật toán , Nhà xuất bản khoa học kỹ thuật,Hà Nội ,1997 Khác
[2] - Nguyễn Thành Quang , Bài giảng số học hiện đại,Đại học Vinh 2002 Khác
[3]-Lại Đức Thịnh , Giáo trình số học, Nhà xuất bản Giáo dục, Hà Nội,1975 Khác
[4]-Nguyễn Sum , Nguyễn Văn Giám, Mai Quý Năm, Nguyễn Hữu Quang, Ngô Sĩ Tùng, Toán cao cấp , Tập I , Đại số tuyến tính , NXBGD 2000 Khác
[5]- Bùi Thế Tâm , Võ Văn Tuấn Dũng, Turbo Pascal 7.0. Nhà xuất bản khoa học kỹ thuật, 1996 Khác

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