Tải bản đầy đủ (.pdf) (152 trang)

Một số loại chữ ký điện tử và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.18 MB, 152 trang )





TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

ĐẠI HỌC QUỐC GIA HÀ NỘI




LUẬN VĂN THẠC SỸ



NGUYỄN TRỊNH ĐOÀN




Người hướng dẫn: PGS. TS. Trịnh Nhật Tiến



Hà Nội ngày 01 tháng 12 năm 2007








1
DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ

Viết tắt
Thuật ngữ tiếng Anh
Nghĩa tiếng Việt
BDS
Blind Digital Signature
Chữ ký số mù
CA
Certificate Authority
Nhà cung cấp chứng chỉ số
CTF
Central Tabulating Facility
Phƣơng tiện lập bảng trung tâm
DEA
Data Encryption Algorithm
Thuật toán mật mã dữ liệu
DES
Data Encryption Standard
Chuẩn mã hóa dữ liệu
DSS
Digital Signature Standard
Chuẩn chữ ký số
GDS
Group Digital Signature
Chữ ký số nhóm
GBDS
Group Blind Digital Signature

Chữ ký số mù nhóm
IDEA
International Data Encryption
Algorithm
Thuật toán mật mã dữ liệu
Quốc tế
LRF
Local Registration Facility
Phƣơng tiện đăng ký địa phƣơng
MAC
Message Authentication Code
Mã xác thực thông điệp
MD5
Message Digest algorithm 5
Thuật toán hàm băm MD5
PKI
Public Key Infrastructure
Cơ sở hạ tầng khoá công khai
SHA-1
Secure Hash Algorithm
Thuật toán hàm băm SHA-1
SK
Signature of Knowledge
Chữ ký dựa trên tri thức
VSF
Vote Submission Facility.
Phƣơng tiện đệ trình phiếu





2
DANH MỤC CÁC HÌNH VẼ VÀ KÝ HIỆU

CÁC HÌNH VẼ
Hình 1: Minh họa mã hóa và giải mã 33
Hình 2: Minh họa sinh và thẩm tra chữ ký 48
Hình 3: Minh họa hàm băm và đại diện thông điệp 57
Hình 4: Minh họa chữ ký số sử dụng hàm băm 59
Hình 5: Mô hình ngân hàng điện tử phân tán 125

CÁC KÝ HIỆU
a 
R
A
Phần tử a đƣợc chọn ngẫu nhiên trong tập A.
Z
n

Tập các số nguyên {0, 1,…, n-1}
Z
n
*

Tập các số nguyên trong Z
n
mà nguyên tố với n
Định nghĩa 3.5.2
Định nghĩa thứ 2 trong mục 3.5.
[2, 3, 5, 7, 33]

Tài liệu tham khảo [2], [3], [5], [7], [33]


3
MỞ ĐẦU
1. Lý do chọn đề tài
Trong cuộc sống và trong các hoạt động của con ngƣời, việc trao đổi
thông tin là một nhu cầu thiết yếu, con ngƣời trao đổi thông tin để tồn tại và
phát triển trong quy luật vận động của tự nhiên và xã hội. Thông tin thì đa
dạng, phong phú đƣợc thể hiện dƣới nhiều dạng thức khác nhau nhƣ văn bản,
hình ảnh, âm thanh, số liệu,…Mặt khác việc trao đổi thông tin cũng diễn ra
dƣới nhiều hình thức và bằng các phƣơng pháp khác nhau.
Cùng với sự phát triển của công nghệ thông tin, các phƣơng tiện và
công nghệ truyền thông tiên tiến ra đời, trong đó mạng máy tính và đặc biệt là
mạng Intenet đã giúp con ngƣời trao đổi thông tin hết sức thuận tiện, nhanh
chóng. Một vấn đề vô cùng quan trọng đƣợc đặt ra là sự bảo mật và an toàn
trong việc trao đổi thông tin. Các thông tin truyền đi phải đảm bảo tính chính
xác, không bị sửa đổi và trong rất nhiều trƣờng hợp cần đƣợc bảo đảm tính bí
mật thông tin và cần xác thực đúng ngƣời gửi và ngƣời nhận. Xuất phát từ
thực tế này có nhiều biện pháp về an toàn thông tin ra đời.
Một giải pháp hữu hiệu cho cho việc đảm bảo tính bí mật của thông tin
là mã hóa thông tin. Mã hóa thông tin là sự biến đổi thông tin thành một dạng
khác với mục đích “che giấu” nội dung thông tin, chỉ những đối tƣợng có
thẩm quyền mới có thể giải mã thông tin đã mã hóa (hủy bỏ sự “che giấu”) để
lấy lại thông tin ban đầu.
Để xác thực thông tin, gắn trách nhiệm của một thực thể nào đó với một
thông tin, cũng nhƣ đảm bảo tính toàn vẹn, thông tin truyền đi không bị sửa
đổi ngoài ý muốn, con ngƣời đã sáng tạo ra chữ ký số.
Vấn đề xƣng danh và xác nhận danh tính của các thực thể cũng là các
vấn đề rất cần thiết trong giao dịch điện tử.




4
Các yêu cầu về an toàn và bảo mật truyền thông gồm:
1) Đảm bảo tin cậy: Thông tin đƣợc bí mật, không sao chép trái phép.
2) Tính toàn vẹn: Nội dung thông tin không bị thay đổi.
3) Tính xác thực: Thông tin đƣợc gửi và nhận hợp pháp, đúng các chủ
thể giao dịch, không mạo danh.
4) Không thể chối bỏ trách nhiệm: Ngƣời gửi tin không thể chối bỏ
trách nhiệm về những thông tin đã gửi.
Bằng các công nghệ mã hóa và chữ ký số chúng ta có thể thực hiện
đƣợc các yêu cầu trên, sử dụng chữ ký số đảm bảo tốt ba yêu cầu sau cùng.
Hiện nay ngƣời ta đã sử dụng chữ ký số trong các công việc: giao dịch
các tài liệu điện tử, trao đổi thƣ tín, tiền điện tử, giao dịch ngân hàng,…, và
ứng dụng trong nhiều lĩnh vực khác nhau nhƣ: quản lý hành chính, giáo dục,
kinh tế, thƣơng mại điện tử… Ở Việt Nam, luật giao dịch điện tử đã đƣợc
Quốc hội khóa XI thông qua vào tháng 11 năm 2005 tại kỳ họp thứ 8 và có
hiệu lực từ 01/03/2006, do đó đã tạo hành lang pháp lý thuận lợi cho giao dịch
điện tử. Trong tƣơng lai không xa việc ứng dụng chữ ký điện tử sẽ trở thành
phổ biến và đóng một vai trò quan trọng thúc đẩy sự phát triển kinh tế xã hội
của đất nƣớc.
Xuất phát từ thực tế nêu trên, việc nghiên cứu các phƣơng pháp an toàn
thông tin nói chung, chữ ký số nói riêng là thiết thực và có ý nghĩa to lớn.
Luận văn “MỘT SỐ LOẠI CHỮ KÝ ĐIỆN TỬ VÀ ỨNG DỤNG”
đƣợc nghiên cứu dựa trên các vấn đề thực tiễn cuộc sống đòi hỏi nhƣ việc trao
đổi thông tin hàng ngày giữa các tổ chức, cá nhân mà yêu cầu bảo mật và an
toàn thông tin đƣợc đề ra.



5
2. Nội dung nghiên cứu của luận văn
Luận văn tập trung nghiên cứu một số vấn đề chính sau đây:
1) Một số kiến thức toán học sử dụng trong khoa học mật mã
2) Tổng quan về mã hóa và chữ ký số (chữ ký điện tử).
3) Sơ đồ chữ ký RSA.
4) Các sơ đồ chữ ký số mù, chữ ký số nhóm, chữ ký số mù nhóm.
5) Ứng dụng của các sơ đồ chữ ký nói trên.
Sơ đồ chữ ký RSA là một sơ đồ chữ ký thông dụng hiện nay vì sự cài
đặt đơn giản và tính an toàn cao, làm cơ sở xây dựng nhiều loại chữ ký khác.
Các sơ đồ chữ ký số mù, chữ ký số nhóm và chữ ký số mù nhóm là các
sơ đồ chữ ký đặc biệt có nhiều ứng dụng trong các lĩnh vực: Tiền điện tử, giao
dịch ngân hàng, thƣơng mại điện tử, bỏ phiếu trực tuyến,…Các loại chữ ký
này đƣợc thiết kế để giải quyết các vấn đề: ẩn danh, làm việc theo nhóm và ký
đại diện cho nhóm trong giao dịch điện tử.
3. Phƣơng pháp nghiên cứu
Luận văn đƣợc nghiên cứu dựa trên:
1) Học hỏi, xin ý kiến của thầy hướng dẫn và các đồng nghiệp.
2) Nghiên cứu các tài liệu chuyên môn liên quan bằng tiếng Việt,
tiếng Anh, tìm kiếm thông tin trên Internet.
3) Tìm hiểu và quan sát thực tiễn.
4) Thử nghiệm một số chương trình đơn giản.


6
4. Tổ chức luận văn
Luận văn gồm 6 chƣơng nhƣ sau:
Chương 1: Các kiến thức cơ sở.
Chương 2: Tổng quan về mã hóa và chữ ký số.
Chương 3: Chữ ký mù.

Chương 4: Chữ ký nhóm.
Chương 5: Chữ ký mù nhóm.
Chương 6: Thử nghiệm chương trình.

Vì thời gian có hạn, trong khi đề tài lại rất sâu rộng, mặt khác kiến thức
và kinh nghiệm của bản thân về lĩnh vực này còn hạn chế, bản luận văn không
thể tránh khỏi các khiếm khuyết. Rất mong nhận đƣợc sự góp ý và bổ xung
của các thầy cô, bạn bè đồng nghiệp. Hy vọng rằng đề tài này sẽ đƣợc tiếp tục
nghiên cứu và phát triển để hoàn thiện hơn.




7
Chương 1. CÁC KIẾN THỨC CƠ SỞ
Lý thuyết mật mã là một ngành khoa học đƣợc xây dựng dựa trên cơ sở
toán học, đặc biệt là lý thuyết số học. Chƣơng này tổng hợp một số kiến thức
toán học liên quan đƣợc sử dụng trong lý thuyết mật mã cũng nhƣ trong lĩnh
vực chữ ký số [2, 3, 5, 7, 33].
1.1. LÝ THUYẾT SỐ HỌC
1.1.1. Phép chia hết và chia có dƣ
1.1.1.1. Định nghĩa 1.1.1
1) Cho hai số nguyên a và b (b ≠ 0). Nếu có một số nguyên q sao cho a = b.q
thì ta nói rằng a chia hết cho b, kí hiệu b\a. Khi đó ta nói b là ƣớc của a hay
a là bội của b.
Ví dụ: a = 8, b = 2; ta có 8 = 2.4 do đó 2 là ƣớc của 8 và ký hiệu 2\8.
2) Cho các số nguyên a, b (b ≠ 0), tồn tại cặp số nguyên (q, r) duy nhất sao
cho
a = b.q + r, 0 r < b
, khi đó q gọi là thƣơng nguyên, r gọi là số dƣ của

phép chia a cho b. Nếu r = 0 thì ta có phép chia hết.
Ví dụ: a = 13, b = 5; 13 = 5.2 + 3 → q = 2, r = 3.
1.1.1.2. Một số tính chất
Với a, b, c là các số nguyên ta có:
1) ±1\a, với mọi a; a\0, a\a, với mọi a ≠ 0.
2) Nếu a\b và b\c thì a\c, với mọi a ≠ 0, b ≠ 0.
3) Nếu a\b thì a\b.c, với mọi a ≠ 0.
4) Nếu a\b và a\c thì a\(b+c) và a\(b-c), với mọi a ≠ 0.
5) Nếu a\b và c\d thì a.c\b.d, với mọi a ≠ 0, c ≠ 0.


8
1.1.2. Ƣớc chung lớn nhất, bội chung nhỏ nhất
1.1.2.1. Định nghĩa 1.1.2
1) Một số nguyên d đƣợc gọi là ƣớc chung của các số nguyên a
1
, a
2
, …, a
n
nếu
nó là ƣớc của tất cả các số đó.
2) Một số nguyên m đƣợc gọi là bội chung của các số nguyên a
1
, a
2
, …, a
n

nếu nó là bội của tất cả các số đó.

3) Một ƣớc chung d>0 của các số nguyên a
1
, a
2
, …, a
n
sao cho mọi ƣớc chung
của a
1
, a
2
, …, a
n
đều là ƣớc của d, thì d đƣợc goi là ƣớc chung lớn nhất của
a
1
, a
2
, …, a
n
và ký hiệu là d = gcd(a
1
, a
2
, …, a
n
). Để cho gọn trong trình
bày ta có thể ký hiệu là d = (a
1
, a

2
, …, a
n
).
4) Nếu gcd(a
1
, a
2
, …, a
n
) = 1 thì các số a
1
, a
2
, …, a
n
đƣợc gọi là nguyên tố
cùng nhau.
5) Một bội chung m>0 của các số nguyên a
1
, a
2
, …, a
n
sao cho mọi bội chung
của a
1
, a
2
, …, a

n
đều là bội của m, thì m đƣợc goi là bội chung nhỏ nhất của
a
1
, a
2
, …, a
n
và ký hiệu là m = lcm(a
1
, a
2
, …, a
n
).
Ví dụ: gcd(12,18) = 6; lcm(12,18) = 36;
gcd(8,9) = 1 do đó 8 và 9 là hai số nguyên tố cùng nhau.
1.1.2.2. Tính chất
1) d = gcd(a
1
, a
2
, …, a
n
) khi và chỉ khi tồn tại các số x
1
,

x
2

,…, x
n
sao cho:
d = a
1
x
1
+a
2
x
2
+…+a
n
.
2) m = lcm(a
1
, a
2
, …, a
n
) khi và chỉ khi (m/a
1
, m/a
2
,…, m/a
n
) =1.
3) Nếu d là một ƣớc chung của a
1
, a

2
, …, a
n
thì:
d = gcd(a
1
, a
2
, …, a
n
) khi và chỉ khi gcd(a
1
/d, a
2
/d,…, a
n
/d) =1.
4) Nếu gcd(a,b) = 1 và b\ac thì b\c.


9
5) Nếu gcd(a,b) = 1 thì gcd(ac,b) = gcd(c,b).
6) Nếu gcd(a, b) =1 thì lcm(a, b) = ab.
7) Nếu b > 0, a = bq+r thì gcd(a,b) = gcd(b,r).
8) gcd(ma
1
, ma
2
, …, ma
n

) = m.gcd(a
1
, a
2
, …, a
n
) (với m≠0).
9) lcm(a, b) = ab/gcd(a, b).
1.1.2.3. Thuật toán Euclide tìm ước chung lớn nhất
1) Bài toán
 Dữ liệu vào: Cho hai số nguyên không âm a, b, a ≥ b.
 Kết quả: gcd(a,b).
2) Thuật toán (mô phỏng bằng ngôn ngữ Pascal)
Readln(a, b);
While b > 0 do
Begin
r := a mod b; a := b; b := r;
End;
Writeln(a);
3) Ví dụ
Cho: a = 30, b = 18;
Ta có: gcd(30,18) = gcd(18,12) = gcd(12,6) = gcd(6,0) = 6.
a
b
r
a = b.q + r
30
18
12
30 = 18.1 + 12

18
12
6
18 = 12.1 + 6
12
6
0
12 = 6.2 + 0


10
1.1.2.4. Thuật toán Euclide mở rộng
1) Bài toán
 Dữ liệu vào: Cho hai số nguyên không âm a, b, a ≥ b.
 Kết quả: d = gcd(a,b) và hai số x, y sao cho: ax + by = d.
2) Thuật toán: (mô phỏng bằng ngôn ngữ Pascal)
Readln(a, b);
If b = 0 then
Begin
d := a; x := 1; y := 0;
writeln(d, x, y);
End
Else
Begin
x2 := 1; x1 := 0; y2 := 0; y1 := 1;
While b>0 do
Begin
q := a div b; r := a mod b; x := x2-q*x1; y := y2-q*y1;
a := b; b := r; x2 := x1; x1 := x; y2 := y1; y1 := y;
End;

d := a; x := x2; y := y2;
writeln(d, x, y);
End;


11
1.1.3. Số nguyên tố
1.1.3.1. Định nghĩa 1.1.3
Số nguyên tố là số tự nhiên lớn hơn 1, chỉ có hai ƣớc là 1 và chính nó.
Ví dụ: Các số 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37 là số nguyên tố.
Số nguyên tố có vai trò và ý nghĩa to lớn trong số học và lý thuyết mật mã.
Bài toán kiểm tra tính nguyên tố của một số nguyên dƣơng N và phân tích một
số N ra thừa số nguyên tố là các bài toán rất đƣợc quan tâm và có nhiều công
trình nghiên cứu và đã đạt đƣợc các kết quả to lớn. Hiện nay bài toán kiểm tra
tính nguyên tố đƣợc xếp vào lớp bài toán P.
Có một số phƣơng pháp kiểm tra tính nguyên tố của một số nguyên
bằng xác xuất nhƣ: Solovay-Strassen, Lehmann-Peralta, Miller-Rabin [5].
Ví dụ: 10 số nguyên tố đƣợc tìm thấy [33].
Thứ
hạng
Số nguyên tố
Số chữ số
Tác
giả
Thời
gian
Tham khảo
1
2
32582657

-1
9808358
G9
2006
Mersenne 44
2
2
30402457
-1
9152052
G9
2005
Mersenne 43
3
2
25964951
-1
7816230
G8
2005
Mersenne 42
4
2
24036583
-1
7235733
G7
2004
Mersenne 41
5

2
20996011
-1
6320430
G6
2003
Mersenne 40
6
2
13466917
-1
4053946
G5
2001
Mersenne 39
7
19249·2
13018586
+1
3918990
SB10
2007

8
27653·2
9167433
+1
2759677
SB8
2005


9
28433·2
7830457
+1
2357207
SB7
2004

10
33661·2
7031232
+1
2116617
SB11
2007



12
1.1.3.2. Một số định lý
1) Định lý 1.1.1 (Định lý cơ bản)
Mọi số nguyên dƣơng n > 1 đều có thể biểu diễn duy nhất đƣợc dƣới
dạng
12
12
.
k
n
nn

k
n P P P
với k, n
i
là các số tự nhiên, P
i
là các số nguyên tố đôi
một khác nhau (i = 1, 2, , k).
2) Định lý 1.1.2 (Định lý Mersenne)
Cho p = 2
k
-1, nếu p là số nguyên tố thì k là số nguyên tố.
Chứng minh
Giả sử k không là số nguyên tố. Khi đó k = a.b với 1 < a, b < k, do đó
p = 2
k
-1 = 2
ab
-1 = (2
a
)
b
-1 = (2
a
-1).E (E là một biểu thức nguyên) mâu thuẫn
giả thiết p là nguyên tố. Vậy giả sử là sai, hay k là số nguyên tố.
3) Định lý 1.1.3 (Hàm Euler)
▪ Hàm Euler
Cho số nguyên dƣơng n, số lƣợng các số nguyên dƣơng bé hơn n và
nguyên tố cùng nhau với n đƣợc ký hiệu


(n) và gọi là hàm Euler.
▪ Nhận xét
Nếu p là số nguyên tố thì

(p) = p-1.
▪ Định lý
Nếu n là tích của hai số nguyên tố n = p.q thì:


(n) =

(p).

(p) = (p-1).(q-1).


13
1.1.4. Đồng dƣ thức
1.1.4.1. Định nghĩa 1.1.4
Cho các số nguyên a, b, m (m>0). Ta nói rằng a và b đồng dư với nhau
theo modulo m nếu trong phép chia a và b cho m ta được cùng một số dư,
ký hiệu: a ≡ b (mod m) [33].
Ví dụ: 19 ≡ 7 (mod 3) vì 19 và 7 chia cho 3 có cùng số dƣ là 1.
Các mệnh đề sau đây là tương đương:
1) a ≡ b (mod m).
2) m \ a-b.
3) Tồn tại một số nguyên t sao cho a = b + mt.
Chứng minh
1)→2) : Theo định nghĩa a, b chia cho m có cùng số dƣ do đó :

a = mq
a
+ r; b = mq
b
+ r; suy ra a - b = m(q
a
- q
b
) chứng tỏ m \ a-b;
2)→3) : m\a-b nên có t

Z sao cho a - b = mt hay a = b + mt
3)→1) : Lấy a chia cho m giả sử thƣơng là q
a
và dƣ r: a = mq
a
+ r (0 ≤ r <m),
do đó: b + mt = a = mq
a
+ r hay b = m(q
a
- t) + r (0 ≤ r < m). Điều đó chứng tỏ
khi chia a và b cho m đƣợc cùng số dƣ r hay a ≡ b(mod m)
1.1.4.2. Các tính chất
1) Quan hệ đồng dƣ theo modulo m là một quan hệ tƣơng đƣơng trong Z:
(1) a ≡ a (mod m) với mọi a

Z ( phản xạ) .
(2) Nếu a ≡ b (mod m) thì b ≡ a (mod m) (đối xứng).
(3) Nếu a ≡ b (mod m) và b ≡ c (mod m) thì a ≡ c (mod m) (bắc cầu).



14
2) Có thể cộng hoặc trừ từng vế nhiều đồng dƣ thức theo cùng một modulo m
với nhau, ta đƣợc một đồng dƣ thức theo cùng modulo m tức là:
Nếu a
i
≡ b
i
(mod m) , i = 1 k thì:
11
(mod )
kk
i i i i
ii
t a t b m



với t
i
= ±1.
3) Có thể nhân từng vế các đồng dƣ thức theo cùng một modulo m với nhau,
ta đƣợc một đồng dƣ thức theo cùng modulo m:
Nếu a
i
≡ b
i
(mod m), i=1 k thì ta có:
11

(mod )
kk
ii
ii
a b m



.
Hệ quả
a) a ≡ b (mod m) → a ± c ≡ b ± c (mod m).
b) a + c ≡ b (mod m) → a ≡ b - c (mod m).
c) a ≡ b (mod m) → a+km ≡ b (mod m) với mọi k

Z.
d) a ≡ b (mod m) → ac ≡ bc (mod m) với mọi c

Z.
e) a ≡ b (mod m) → a
n
≡ b
n
(mod m) với mọi n

Z
+
.

f) c\a, c\b, (c,m)=1, a ≡ b (mod m) → a/c ≡ b/c (mod m).
g) a ≡ b (mod m), c > 0 → ac ≡ bc (mod mc) và

c\a, c\ b, c\m → a/c ≡ b/c (mod m/c).
h) a ≡ b (mod m) → a ≡ b (mod k) với k\m.
i) a ≡ b (mod m) → gcd(a,m) = gcd(b,m).


15
1.1.4.3. Các lớp thặng dư
Quan hệ đồng dƣ theo modulo m trên tập Z là một quan hệ tƣơng đƣơng
vì có tính chất phản xạ, đối xứng, bắc cầu do đó nó tạo ra một phân hoạch trên
tập các số nguyên Z thành ra các lớp tƣơng đƣơng: hai số nguyên thuộc cùng
một lớp tƣơng đƣơng khi và chỉ khi chúng có cùng một số dƣ khi chia cho m.
Mỗi lớp tƣơng đƣợc đại diện bởi một số duy nhất trong tập hợp Z
m
=
{0, 1, 2,…, m-1} là số dƣ khi chia các số trong lớp cho m, ký hiệu một lớp
đƣợc đại diện bởi số a là [a]
m
hay với m mặc định nào đó ta viết tắt là [a], vậy:
[a]
m
= [b]
m
↔ a ≡ b (mod m).
Vì vậy ta có thể đồng nhất Z
m
với tập các lớp tƣơng đƣơng theo modulo
m. Tập Z
m
= {0, 1, 2,…, m-1} đƣợc gọi là tập các thặng dƣ đầy đủ theo
modulo m. Mọi số nguyên bất kỳ đều có thể tìm đƣợc trong Z

m
một số đồng
dƣ với mình theo modulo m [3, 33].
1.1.4.4. Các định lý
1) Định lý 1.1.4 (Định lý Ferma)
Nếu p là số nguyên tố, a là số nguyên thì a
p

≡ a (mod p). Nếu p không
chia hết a thì a
p-1
≡ 1 (mod p).
Ví dụ: 4
7
≡ 4 (mod 7); 4
7-1
≡ 1 (mod 7).
2) Định lý 1.1.5 (Định lý Euler)
Nếu gcd(a, m) = 1 thì a

(m)

≡ 1 (mod m). Trƣờng họp m là số nguyên
tố ta có định lý Ferma.
Ví dụ
Cho m = 10,

(m) =

(2).


(5) = 1.4 = 4 do đó:
7
4
≡ 1 (mod 10), 9
4
≡ 1 (mod 10), 21
4
≡ 1 (mod 10).



16
Hệ quả 1: Nếu gcd(c, m) = 1 và a ≡ b (mod

(m)) với a, b là các số tự nhiên
thì c
a
≡ c
b
(mod m) và suy ra: c
a
mod m =
a mod (m)
c



mod m.
Nhận xét: Hệ quả trên giúp ta giảm nhẹ việc tính toán đồng dƣ của lũy thừa

bậc cao một cách đáng kể. Ví dụ muốn tính 2
1004
(mod 15):
Ta thấy

(15) =

(5).

(3) = 4.2 = 8 và 1004 ≡ 4 (mod 8), do đó:
2
1004
(mod 15) = 2
4
(mod 15) = 16 (mod 15) = 1.
Hệ quả 2: Nếu e, d là các các số nguyên thỏa mãn e.d ≡ 1 (mod

(m)) thì với
mọi số c nguyên tố cùng nhau với m ta có (c
e
)
d
≡ c (mod m).
Nhận xét: Với a = ed và b = 1, từ hệ quả 1 ta có hệ quả 2. Hệ quả này đóng
vai trò then chốt trong việc thiết lập các hệ mã mũ sau này (nhƣ RSA).
1.1.4.5. Tính toán đồng dư của các lũy thừa bậc lớn
Hệ quả 1 áp dụng hiệu quả trong trƣờng hợp a lớn hơn hẳn

(m) vì chỉ
khi ấy b mới thực sự nhỏ hơn a. Trong thực tế tính toán ta thƣờng gặp m lớn

do đó

(m) lớn thậm chí lớn hơn a khi ấy ta dùng kỹ thuật khác, sau đây trình
cách bình phƣơng liên tiếp [3]:
Ví dụ: Tính 87
43
(mod 103).
Trƣớc hết ta khai triển số mũ dƣới dạng cơ số 2:
43 = 32+8+2+1 = 2
5
+2
3
+ 2
1
+ 2
0
(*)
Sau đó tính liên tiếp các đồng dƣ bình phƣơng nhƣ sau:
87 (mod 103) = 87
87
2
(mod 103) = 50
87
4
(mod 103) = 50
2
(mod 103) = 28
87
8
(mod 103) = 28

2
(mod 103) = 63
87
16
(mod 103) = 63
2
(mod 103) = 55
87
32
(mod 103) = 55
2
(mod 103) = 38


17
Tổng hợp lại, căn cứ theo khai triển (*) ta lấy tích của các lũy thừa bậc 2
5
, 2
3
,
2
1
, 2
0
(rút gọn theo modulo 130) sẽ thu đƣợc kết quả là:
87
43
(mod 103) = 38.63.50.87 (mod 103) = 85.
Định lý 1.1.6 (Định lý Trung Quốc về số dư)
Cho tập số nguyên tố cùng nhau từng đôi một m

1
, m
2
,…m
r
. Với mỗi bộ
số nguyên bất kỳ a
1
, a
2
,…a
r
hệ phƣơng trình đồng dƣ:
x ≡ a
i
(mod m
i
) i = 1, 2, …, r luôn có nghiệm và duy nhất theo modulo
m = m
1
.m
2
.…m
r .
Nghiệm này có thể tính theo công thức:
x = a
1
m
2
m

3
…m
r
b
1
+ m
1
a
2
m
3
…m
r
b
2
+ m
1
m
2
a
3
m
3
…m
r
b
3
+ … +
m
1

m
2
…m
r-1
a
r
b
r
(mod m
1
.m
2
.…m
r
)
trong đó b
i
= ( m
1
.m
2
…m
i-1
m
i+1
…m
r
)
-1
(mod m

i
), với mọi i = 1, 2,…, r.
Nhận xét
Định lý số dƣ Trung Quốc cho phép ta tính toán đồng dƣ theo modulo
của một số lớn (tích của nhiều số nguyên tố cùng nhau) thông qua tính toán
đồng dƣ theo modulo các số nhỏ (từng thừa số).
Ví dụ: Tìm nghiệm của hệ phƣơng trình

3118(mod 5353)
139(mod 391)
239(mod 247)
x
x
x









Vì các số 5353, 391, 247 nguyên tố cùng nhau nên theo định lý Trung Quốc
về số dƣ hệ có nghiệm duy nhất theo modulo m = 5353.391.247 = 516976681.
Để tìm x mod m ta tính:
m
1
= m/5353 = 96577 → y
1

= 96577
-1
mod 5353 = 5329
m
2

= m/391 = 1322191→ y
2
= 1322191
-1
mod 391= 16
m
3
= m/247 = 2093023 → y
3
= 2093023
-1
mod 247 = 238
x = 31188.96577.5329 + 139.1322191.16 + 239.2093023.238 (mod m)
= 13824 (mod m).


18
1.1.5. Cấu trúc nhóm
1.1.5.1. Phép toán hai ngôi
1) Phép toán hai ngôi trong một tập hợp A là một ánh xạ f từ AxA vào A.
Trong lý thuyết số thƣờng ký hiệu phép toán hai ngôi là (+), (.), (*) nhƣng
không nhất thiết đƣợc hiểu theo các phép cộng, nhân thông thƣờng. Phép
(.) đôi khi không cần viết.
2) Phép toán hai ngôi (.) trong tập A đƣợc gọi là kết hợp nếu: a.(b.c) = (a.b).c,

ta ký hiệu: a
n
= a.a….a.a (n phần tử a).
3) Phần tử đơn vị
- Phần tử e đƣợc gọi là phần tử đơn vị trái của phép toán hai ngôi (.) nếu
e.a = a với mọi a

A.
- Phần tử e đƣợc gọi là phần tử đơn vị phải của phép toán hai ngôi (.) nếu
a.e = a với mọi a

A.
- Phần tử e đƣợc gọi là phần tử đơn vị (trung lập) của phép toán hai ngôi (.)
nếu vùa là đơn vị trái vừa là đơn vị phải.
- Phần tử a’ gọi là phần tử đối (hay nghịch đảo) của a nếu: a’.a = a.a’ = e,
trong đó e là phần tử đơn vị, ký hiệu a’ là a
-1
. Nếu a’ là nghịch đảo của a thì
a là nghịch đảo của a’. Ta có (a.b)
-1
= b
-1
.a
-1
.

1.1.5.2. Nhóm
1) Định nghĩa 1.1.5
Nhóm: Nhóm là một tập hợp G cùng với phép toán hai ngôi (.) thỏa mãn
các điều kiện sau [33]:

(1) Tính đóng: với mọi a

G, b

G thì a.b

G.
(2) Tính kết hợp: với mọi a, b, c

G thì a.(b.c) = (a.b).c.
(3) Có phần tử đơn vị e: e.a = a.e = a vói mọi a

G.
(4) Mọi phần tử a

G đều có phần tử nghịch đảo a
-1
: a.a
-1
= a
-1
.a = e.


19
Nếu tập G có hữu hạn phần tử thì ta nói nhóm hữu hạn, số phần tử của
nhóm ký hiệu là
G
gọi là cấp của nhóm . Nếu phép toán hai ngôi (.) trong
G có tính giao hoán thì ta gọi nhóm là nhóm abelian .

Tính chất: (a) Nếu a.b = a.c, thì b = c.
(b) Nếu a.c = b.c, thì a = b.
Bậc của phần tử: cho a

G, nếu có một số nguyên dƣơng n sao cho a
n
=
e thì ta nói a có bậc hữu hạn, số nguyên dƣơng n nhỏ nhất nhƣ vậy gọi là
bậc của a, ký hiệu o(a). Nếu không tồn tại n sao cho a
n
= e ta nói a có bậc
vô hạn.
2) Ví dụ:
(1) Tập số nguyên Z cùng với phép cộng (+) thông thƣờng là một nhóm
giáo hoán, có phần tử đơn vị là số 0, gọi là nhóm cộng các số nguyên.
(2) Tập Q
*
các số hữu tỷ khác 0 (hoặc R
*
tập các số thực khác 0), cùng với
phép nhân (.) thông thƣờng là một nhóm giao hoán, gọi là nhóm nhân
các số hữu tỷ (số thực) khác 0.
1.1.5.3. Nhóm con
1) Bộ phận ổn định: Một bộ phận B của tập A gọi là ổn định đối với phép
toán hai ngôi (.) trong A nếu a.b

B với mọi a, b

B. Phép toán (.) của A
áp dụng trên các phần tử của B gọi là phép toán cảm sinh của A trên B.

2) Định nghĩa 1.1.6 (Nhóm con) : Một bộ phận ổn định H của một nhóm G
là nhóm con của G nếu H cùng với phép toán cảm sinh của G trên H là một
nhóm [33].
3) Định lý 1.1.7: Một bộ phận H của một nhóm G là một nhóm con của G khi
và chỉ khi các điều kiện sau thỏa mãn:
(1) Với mọi a, b

H, thì ab

H.
(2) e

H với e là phần tử trung lập của G.
(3) Với mọi a

H thì a
-1

H.


20
Hệ quả: Giả sử H là một bộ phận khác rỗng của một nhóm G, các điều
kiện sau là tƣơng đƣơng:
(a) H là một nhóm con của G.
(b) Với mọi a, b

H thì ab

H và a

-1


H.
(c) Với mọi a, b

H thì ab
-1


H.
4) Ví dụ: Bộ phận mZ gồm các số nguyên là bội của một số nguyên m là một
nhóm con của nhóm cộng các số nguyên Z: Thật vậy áp dụng hệ quả (c),
mZ là nhóm con vì: ma, mb

mZ → ma-mb = m(a-b)

mZ .
1.1.5.4. Nhóm Cyclic
1) Định nghĩa 1.1.7
Cho một nhóm G và một phần tử nào đó thuộc G. Tập hợp:
<a> = {x

G \ x = a
n
với n

Z}
đƣợc gọi là nhóm con cyclic đƣợc sinh bởi a.
Nhóm G đƣợc gọi là nhóm Cyclic nếu có một phần tử a


G sao cho
G = <a>. Phần tử a nhƣ vậy gọi là phần tử sinh của G [33].
2) Ví dụ: Z
n
với phép toán cộng theo modulo n là nhóm Cyclic, nhƣng nhóm
nhân Z
*
n
có thể không là nhóm Cyclic.
Nhóm nhân Z
*
n
là nhóm Cyclic khi và chỉ khi n có dạng: 2, 4, p
k
, hoặc 2p
k
vói p là số nguyên tố lẻ.
3) Định lý 1.1.8: Cho G là một nhóm, a

G ta có:
(1) Tập hợp <a> là một nhóm con của G.
(2) Nếu K là nhóm con của G, a

K thì <a> K.
4) Định lý 1.1.9: Nhóm con của một nhóm Cyclic là một nhóm Cyclic



21

5) Định lý 1.1.10: Cho a là một phần tử của nhóm G
(1) Nếu a có bậc vô hạn và a
k
= a
m
với k, m

Z thì k = m.
(2) Nếu a có bậc hữu hạn và k

Z thì: a
k
= e ↔ o(a) \ k.
(3) Nếu a có bậc hữu hạn o(a) = n thì với các số nguyên k, m ta có:
a
k
= a
m
↔ k ≡ m (mod n)


<a> = O(a)
.

6) Định lý 1.1.11 (Lagrange): Nếu H là nhóm con của nhóm hữu hạn G thì
bậc của H là ƣớc của bậc của G.
Hệ quả 1: Cho G là nhóm hữu hạn có bậc n, với mọi a

G ta có
(a) o(a) \ n.

(b) a
n
= e.
Hệ quả 2: Một nhóm có cấp nguyên tố là nhóm Cyclic.
1.1.5.5. Nhóm cộng Z
n
và nhóm nhân Z
n
*
1) Phép toán trong Z
n

Trong Z
n
ta định nghĩa phép cộng (+) và phép nhân (.) nhƣ sau:
[a] + [b] = [a+b]
[a].[b] = [a.b]
Ta có: Z
n
cùng với phép cộng nhƣ trên lập thành một nhóm aben, Z
n
cùng với
phép cộng và phép nhân nhƣ trên lập thành một vành giao hoán có đơn vị.


22
2) Nhóm cộng Z
n
và nhóm nhân Z
n

*

Z
n
= {0, 1, 2, …, n-1} là tập hợp các lớp đồng dƣ theo modulo n cùng
với phép phép toán cộng (+) : [a]
n

+ [b]
n
= [a+b]
n
lập thành một nhóm. Nhóm
cộng Z
n
có n phần tử và phần tử đơn vị là [0]
n
.
Z
n
*
= {a

Z
n
: gcd(a, n) = 1} cùng với phép nhân (.): [a]
n
.
[b]
n

= [a.b]
n

lập thành một nhóm gọi là nhóm nhân của Z
n
, phần tử đơn vị là [1]
n
.
Ký hiệu

(n) là số các số nguyên dƣơng bé hơn n và nguyên tố với n,
nếu p là số nguyên tố thì

(p) = p-1. Do đó nhóm Z
n
*
có cấp

(n) và nếu p là
số nguyên tố thì nhóm Z
p
*
có cấp p-1.
3) Phần tử nghịch đảo đối với phép nhân
Định nghĩa 1.1.8
Cho a

Z
n
, nếu tồn tại b


Z
n
sao cho ab 1 (mod n) thì ta nói b là
phần tử nghịch đảo của a trong

Z
n
, ký hiệu là a
-1
, a gọi là phần tử khả nghịch.
Định lý 1.1.12
Phần tử a

Z
n
có nghịch đảo khi và chỉ khi (a,n) = 1.
Nhận xét
Mọi phần tử trong Z
n
*
đều có nghịch đảo. Để tìm phần tử nghịch đảo ta
có thể dùng thuật toán Euclid mở rộng.
Chứng minh
Nếu aa
-1
≡ 1 (mod n) thì aa
-1
= 1+kn ↔ aa
-1

-kn = 1 → (a,n) =1. Ngƣợc
lại, nếu (a,n) = 1 ta có aa
-1
+kn = 1 → aa
-1
= 1+kn, do đó aa
-1
≡ 1 (mod n).


23
Thuật toán Euclid mở rộng để tìm phần tử nghịch đảo
procedure invert(a, n);
begin
g
0
:= n; g
1
:= a; u
0
:= 1; u
1
:= 0; v
0
:= 0; v
1
:= 1;
i := 1;
while g
i

<> 0 do
begin
y := g
i-1
div g
i
; g
i+1
:= g
i+1
-y.g
i
;
u
i+1
:= u
i+1
-y.u
i
; v
i+1
:= v
i+1
-y.v
i
;
i := i+1;
end;
x := v
i+1

;
if x>0 then a
-1
:= x else a
-1
:= x+n;
end;

Ví dụ: Giải phƣơng trình 3x ≡ 1 (mod 7)

i
g
i
u
i

v
i

y
1
7
1
0

1
3
0
1
2

2
1
1
-2
3
3
0




Vì v = 2 = -2 < 0 do đó x = -2+7 = 5.
Ta có 5 là phần tử nghịch đảo nhân của 3 trong Z
7
.


24
1.2. LÝ THUYẾT ĐỘ PHỨC TẠP TÍNH TOÁN
1.2.1. Thuật toán của một bài toán
1.2.1.1. Bài toán
Bài toán đƣợc cấu tạo bởi hai phần:
▪ Input : Các dữ liệu vào của bài toán.
▪ Output: Các dữ liệu ra (kết quả).
Không mất tính chất tổng quát ngƣời ta giả thiết các dữ liệu đều là số nguyên.
1.2.1.2. Định nghĩa thuật toán
Định nghĩa 1.2.1
▪ Bằng trực quan: Thuật toán của một bài toán đƣợc hiểu là một dãy hữu hạn
các qui tắc (chỉ thị, mệnh lệnh) mô tả một quá trình tính toán để từ Input ta
đƣợc Output của bài toán [7].

▪ Quan niệm toán học: Một cách hình thức ngƣời ta quan niệm thuật toán là
một máy Turing.
▪ Thuật toán đơn định (Deterministic): Là thuật toán mà kết quả của mọi
phép toán đều đƣợc xác định duy nhất.
▪ Thuật toán không đơn định (NonDeterministic): Là thuật toán tồn tại ít
nhất một phép toán mà kết quả của phép toán đó là không duy nhất.
1.2.1.3. Hai mô hình tính toán
Hai quan niệm về thuật toán ứng với hai mô hình tính toán.
▪ Mô hình ứng dụng: Đơn vị nhớ : một ô nhớ chứa trọn vẹn một dữ liệu. Đơn
vị thời gian: thời gian để thực hiện một phép tính số học hay logic cơ bản.
▪ Mô hình lý thuyết: Đơn vị nhớ: một ô nhớ chứa một tín hiệu. Đơn vị thời
gian: thời gian để thực hiện một bƣớc chuyển hình trạng.

×