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 1Lờ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 2Vinh ngµy 1 th¸ng 5 n¨m 2003
T¸c gi¶:
Phan Xu©n Väng
Trang 31.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 5ui = 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 62.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 7Nế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 8Ví 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 9Trờ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 10Giả 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 11Nế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 13Khi đã 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 151 < 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 16a 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 17Từ đó 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 19Chơ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 20Ta 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 21chØ 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 23II 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 A1Dx 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