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

NGHIÊN CỨU MỘT SỐ BÀI TOÁN TRONG HỆ THỐNG TIỀN ĐIỆN TỬ

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 (1.63 MB, 119 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ





HÀ THỊ THANH HUYỀN







NGHIÊN CỨU
MỘT SỐ BÀI TOÁN
TRONG HỆ THỐNG TIỀN ĐIỆN TỬ







LUẬN VĂN THẠC SĨ











Hà Nội - 2008


2
MỤC LỤC
LỜI CAM ĐOAN 1
MỤC LỤC 2
DANH MỤC CÁC KÝ HIỆU. 7
DANH MỤC BẢNG BIỂU 8
MỞ ĐẦU 9
CHƢƠNG 1. CÁC KHÁI NIỆM CƠ BẢN. 12
1.1. MỘT SỐ KHÁI NIỆM TOÁN HỌC. 12
1.1.1. Khái niệm trong số học. 12
1). Số nguyên tố và nguyên tố cùng nhau. 12
2). Đồng dƣ thức. 12
3). Phần tử nghịch đảo. 14
1.1.2. Khái niệm trong đại số. 15
1). Khái niệm nhóm 15
2). Khái niệm nhóm con. 15
3). Khái niệm nhóm Cyclic. 16
4). Bài toán đại diện trong nhóm cấp nguyên tố. 16
1.1.3. Khái niệm về độ phức tạp. 17
1). Khái niệm bài toán. 17
2). Độ phức tạp dữ liệu vào của bài toán. 17
3). Chi phí của thuật toán đơn định tính theo một bộ dữ liệu vào. 17

4). Độ phức tạp của thuật toán đơn định. 18
5). Phân lớp bài toán theo độ phức tạp 19
1.2. MÃ HOÁ. 21
1.2.1. Khái niệm mã hoá. 21


3
1.2.2. Hệ mã hoá khoá công khai RSA. 23
1.3. KÝ SỐ. 24
1.3.1. Giới thiệu về ký số. 24
1.3.2. Một số sơ đồ ký số. 25
1). Sơ đồ ký số RSA. 25
2). Sơ đồ ký số Schnorr. 26
1.3.3. Chữ ký mù. 27
1). Giới thiệu về chữ ký mù. 27
2). Chữ ký mù RSA. 29
3). Chữ ký mù Schnorr. 31
1.3.4. Chữ ký nhóm và ứng dụng. 32
1). Sơ đồ chữ ký nhóm dạng 1. 32
2). Sơ đồ chữ ký nhóm dạng 2. 33
3). Sơ đồ chữ ký nhóm dạng 3. (Jan Camenish và Stadler) 33
1.3.5. Chữ ký nhóm mù và ứng dụng. 35
1.3.6. Chữ ký dùng một lần. 37
1.3.7. Chữ ký không thể chối bỏ. 38
1). Sơ đồ chữ ký không thể chối bỏ của Chaum. 39
2). Ví dụ. 40
1.3.8. Chia sẻ bí mật có thể xác minh. 41
1). Sơ đồ chia sẻ bí mật 41
2). Sơ đồ chia sẻ bí mật có thể xác minh. 42
1.3.9. Hàm băm. 43

CHƢƠNG 2. GIỚI THIỆU VỀ TIỀN ĐIỆN TỬ. 44
2.1. KHÁI NIỆM TIỀN ĐIỆN TỬ. 44


4
2.1.1. Cấu trúc tiền điện tử. 44
2.1.2. Hai loại tiền điện tử. 45
2.1.3. Mô hình giao dịch 46
2.1.4. Hai hình thức thanh toán 48
2.2. TÍNH CHẤT CỦA TIỀN ĐIỆN TỬ. 49
2.2.1. Tính an toàn (security). 49
2.2.2. Tính riêng tƣ (privacy). 50
2.2.3. Tính độc lập (portability). 50
2.2.4. Tính chuyển nhƣợng đƣợc (transferability). 50
2.2.5. Tính phân chia đƣợc (divisibility). 51
CHƢƠNG 3. MỘT SỐ BÀI TOÁN PHÁT SINH KHI DÙNG TIỀN ĐIỆN TỬ . 52
3.1. MỘT SỐ BÀI TOÁN PHÁT SINH. 52
3.2. GIẢI PHÁP CHO BÀI TOÁN “TIÊU NHIỀU LẦN MỘT ĐỒNG
TIỀN” (DOUBLE-SPENDING). 54
3.2.1. Giới thiệu giải pháp. 54
3.2.2. Lƣợc đồ truy vết gian lận KV. 55
1). Chuẩn bị. 55
2). Giao thức rút tiền. 55
3). Kiểm tra chữ ký. 56
4). Phân tích lƣợc đồ KV. 58
3.2.3. Lƣợc đồ Fair tracing. 60
1). Chuẩn bị: 60
2). Giao thức rút tiền. 61
3). Giao thức trả tiền 64
4). Giao thức gửi tiền và kiểm tra chữ ký. 64



5
5). Phân tích lƣợc đồ Fair tracing. 65
3.2.4. So sánh lƣợc đồ KV và lƣợc đồ Fair tracing. 68
3.3. GIẢI PHÁP CHO BÀI TOÁN ẨN DANH VÀ 70
CHỐNG GIAN LẬN GIÁ TRỊ ĐỒNG TIỀN. 70
3.3.1. Giới thiệu giải pháp. 70
3.3.2. Lƣợc đồ Chaum-Fiat-Naor. 72
1). Giao thức Rút tiền. 74
2). Giao thức Thanh toán. 75
3). Giao thức Gửi. 75
4). Đánh giá. 75
5). Chi phí 76
6). Tấn công 76
3.3.3. Lƣợc đồ Brand. 77
1). Khởi tạo tài khoản. 77
2). Giao thức rút tiền. 79
3). Giao thức thanh toán. 81
4). Giao thức Gửi. 82
5). Đánh giá 83
6). Tấn công 85
CHƢƠNG 4. XÂY DỰNG THỬ NGHIỆM HỆ THỐNG TIỀN ĐIỆN TỬ DỰA
TRÊN LƢỢC ĐỒ BRAND 86
4.1. MÔ TẢ BÀI TOÁN NGHIỆP VỤ. 86
1). Khởi tạo tài khoản (Open account). 87
2). Chứng minh đại diện tài khoản (Authenticate). 87
3). Rút tiền (Withdraw Money). 87
4). Thanh toán (Payment Money). 87
5). Gửi tiền (Deposit Money). 87



6
6). Phát hiện “double-spending”. 87
4.2. MÔ HÌNH NGHIỆP VỤ. 88
4.2.1. Biểu đồ ngữ cảnh. 88
4.2.2. Biểu đồ phân rã chức năng. 89
1). Hệ thống thanh toán dành cho khách hàng. 89
2). Hệ thống thanh toán dành cho Ngân hàng. 91
4.3. MÔ HÌNH KHÁI NIỆM / LOGIC. 93
4.3.1. Hệ thống thanh toán dành cho khách hàng. 93
1). Biểu đồ luồng dữ liệu mức 0. 93
2). Các biểu đồ luồng dữ liệu mức 1. 94
4.3.2. Hệ thống thanh toán dành cho Ngân hàng. 98
1). Biểu đồ luồng dữ liệu mức 0. 98
2). Các biểu đồ luồng dữ liệu mức 1. 99
4.3.3. Biểu đồ quan hệ thực thể. 102
1). Hệ thống thanh toán cho khách hàng. 102
2). Hệ thống thanh toán dành cho Ngân hàng. 103
4.3.4. Một số giao diện chính 104
1). Mở tài khoản. 104
2). Rút tiền. 104
3). Thanh toán. 105
4). Gửi tiền. 105
4.3.5. Trích dẫn một số phần mã nguồn. 106
KẾT LUẬN 117
DANH MỤC CÔNG TRÌNH CỦA TÁC GIẢ 118
TÀI LIỆU THAM KHẢO 119



7
DANH MỤC CÁC KÝ HIỆU.

TT
Ký hiệu
Chú giải cho ký hiệu sử dụng
1
RSA
Hệ mã hoá công khai đƣợc đề xuất bởi Ron Rivest, Adi
Shamir, Len Adlemon năm 1977
2
TPD
Thƣ mục công khai tin tƣởng - Trusted Public
Directory).
3
SSS
Sơ đồ chia sẻ bí mật - Secret Sharing Schemes
4
VSS
Sơ đồ chia sẻ bí mật có thể xác minh - Verify Secret
Sharing
5
KV
Lƣợc đồ KV, (tên viết tắt của hai tác giả D. Kugler và
H. Vogt)
6
TTP
Bên thứ ba tin cậy - Trusted Third Party




8
DANH MỤC BẢNG BIỂU
Hình 1. Mô hình giao dịch cơ bản của hệ thống tiền điện tử. 46
Hình 2. Mô hình giao dịch có tính chuyển nhƣợng. 51
Hình 3. Tóm tắt lƣợc đồ KV 57
Hình 4. Giai đoạn chuẩn bị trong lƣợc đồ Fair tracing. 60
Hình 5. Giao thức rút tiền trong lƣợc đồ Fair tracing. 63
Hình 6. Giai đoạn chuẩn bị với TTP. 67
Hình 7. Mô hình thanh toán trong lƣợc đồ Chaum – Fiat - Naor. 73
Hình 8. Quá trình khởi tạo tài khoản 77
Hình 9. Quá trình chứng minh đại diện tài khoản 78
Hình 10. Giao thức rút tiền. 80
Hình 11. Giao thức thanh toán 82
Hình 12. Mô hình hoạt động của hệ thống thanh toán tiền điện tử. 86
Hình 13. Biểu đồ ngữ cảnh của hệ thống. 88
Hình 14. Biểu đồ phân rã chức năng trong hệ thống khách hàng. 89
Hình 15. Biểu đồ phân rã chức năng trong hệ thống Ngân hàng. 91
Hình 16. Biểu đồ luồng dữ liệu mức 0 trong hệ thống khách hàng. 93
Hình 17. Biểu đồ luồng dữ liệu mức 1 cho chức năng Open Account. 94
Hình 18. Biểu đồ luồng dữ liệu mức 1 cho chức năng Withdraw Money. 95
Hình 19. Biểu đồ luồng dữ liệu mức 1 cho chức năng Payment Money. 96
Hình 20. Biểu đồ luồng dữ liệu mức 1 cho chức năng Deposit Money. 97
Hình 21. Biểu đồ luồng dữ liệu mức 0 trong hệ thống Ngân hàng 98
Hình 22. Biểu đồ luồng dữ liệu mức 1 cho chức năng Manage Customer 99
Hình 23. Biểu đồ luồng dữ liệu mức 1 cho chức năng Create Money 100
Hình 24. Biểu đồ luồng dữ liệu mức 1 cho chức năng Payment Money. 101
Hình 25. Biểu đồ quan hệ thực thể trong hệ thống thanh toán cho khách hàng. 102
Hình 26. Biểu đồ quan hệ thực thể trong hệ thống thanh toán cho Ngân hàng. 103




9
MỞ ĐẦU
1. Tính cấp thiết của luận văn.
Sự mở rộng và phổ biến của Internet đã tạo ra phƣơng thức mua bán hàng
qua mạng (thƣơng mại điện tử). Nó tác động mạnh mẽ đến lĩnh vực ngân hàng
truyền thống, làm xuất hiện các sản phẩm mới có liên quan đến ngân hàng nhƣ thẻ
tín dụng, giao dịch ngân hàng, qua điện thoại di động, ngân hàng tự phục vụ và
tiền điện tử hay ví điện tử cũng đang trở thành hiện thực. Hầu hết mọi ngƣời đều
mong đợi một ngày nào đó tiền giấy sẽ không còn là phƣơng thức thanh toán trong
các phiên giao dịch nữa. Trên toàn thế giới, tiền điện tử đã và đang đƣợc ứng dụng
thành công, đem lại những lợi ích lớn lao cho ngƣời dùng.
Tuy nhiên trong thực tế, quá trình sử dụng tiền điện tử đã nảy sinh một số
vấn đề đáng quan tâm nhƣ: ngƣời dùng gian lận giá trị đồng tiền, tiêu nhiều lần một
đồng tiền hay khó xác định đƣợc danh tính của ngƣời sở hữu đồng tiền.
Chính vì vậy, luận văn đi vào nghiên cứu một số bài toán trong hệ thống tiền
điện tử, phân tích và nêu ra các giải pháp phù hợp.
Từ đó, xây dựng mô phỏng một hệ thống thanh toán bằng tiền điện tử dựa
trên lƣợc đồ Brand.
2. Mục đích của luận văn.
Mục đích của luận văn là nghiên cứu và đƣa ra những giải pháp khoa học
cho các bài toán phát sinh trong quá trình sử dụng tiền điện tử.
Từ đó, luận văn so sánh, đánh giá ƣu nhƣợc điểm của các giải pháp, chỉ rõ
giải pháp nào sẽ đạt hiệu quả tối ƣu đối với từng loại tiền điện tử.
3. Đối tƣợng nghiên cứu.
Đối tƣợng nghiên cứu của luận văn là các bài toán phát sinh khi dùng tiền
điện tử.



10
4. Phạm vi nghiên cứu.
Luận văn nghiên cứu một cách tƣơng đối đầy đủ các bài toán phát sinh khi
dùng tiền điện tử cho đến thời điểm hiện tại.
Để thuyết phục tính thực tế của mình, luận văn có tiến hành xây dựng hệ
thống mô phỏng sử dụng tiền điện tử theo lƣợc đồ Brand giải quyết bài toán ẩn
danh và tiêu một đồng tiền nhiều lần.
5. Phƣơng pháp nghiên cứu.
Luận văn nghiên cứu và tổng kết rõ cấu trúc, tính chất cũng nhƣ các loại tiền
điện tử đã và đang đƣợc sử dụng trên thế giới. Từ đó, phân tích để thấy rõ các bài
toán phát sinh nhƣ thế nào trong quá trình dùng tiền điện tử. Dƣạ trên các kết quả
đó, luận văn nêu các giải pháp tƣơng ứng với từng bài toán cụ thể.
Bên cạnh đó, luận văn kết hợp giữa nghiên cứu lí thuyết và xây dựng hệ
thống minh hoạ để kiểm chứng cho giải pháp đƣợc đƣa ra.
6. Ý nghĩa khoa học và thực tiễn của luận văn.
Luận văn không chỉ nghiên cứu một cách khoa học, tổng quát các bài toán
nảy sinh khi dùng tiền điện tử từ đó đƣa ra các giải pháp phù hợp mà còn xây dựng
một hệ thống tiền điện tử mô phỏng cho một trong các giải pháp đã đƣa ra. Nhƣ
vậy, luận văn đã đạt đƣợc ý nghĩa khoa học và khẳng định tính thực tiễn của mình.
7. Kết cấu luận văn.
Luận văn gồm 4 chƣơng
Chƣơng 1: Các khái niệm cơ bản
Trình bày một số khái niệm toán học và lý thuyết cơ bản về mật mã học.
Chƣơng 2: Giới thiệu về tiền điện tử.
Trình bày khái niệm về tiền điện tử, cấu trúc của một đồng tiền điện tử, mô
hình giao dịch cũng nhƣ các tính chất của tiền điện tử.



11

Chƣơng 3: Một số bài toán phát sinh khi dùng tiền điện tử.
Nêu các bài toán phổ biến có thể phát sinh trong quá trình sử dụng tiền điện
tử nhƣ: bài toán ẩn danh ngƣời dùng, bài toán gian lận giá trị đồng tiền và bài toán
double-spending.
Đối với từng bài toán, nêu ra các giải pháp, phân tích rõ ƣu, nhƣợc điểm, có
sự so sánh đối chiếu giữa các giải pháp.
Chƣơng 4: Xây dựng thử nghiệm hệ thống tiền điện tử dựa trên lƣợc đồ Brand.


12
Chƣơng 1. CÁC KHÁI NIỆM CƠ BẢN.
1.1. MỘT SỐ KHÁI NIỆM TOÁN HỌC.
(Tham khảo tài liệu [1])
1.1.1. Khái niệm trong số học.
1). Số nguyên tố và nguyên tố cùng nhau.
Số nguyên tố là số chỉ chia hết cho 1 và chính nó.
Ví dụ: 2, 3, 5, 7, 17, … là những số nguyên tố.
Hai số m và n đƣợc gọi là nguyên tố cùng nhau nếu ƣớc số chung lớn nhất của
chúng bằng 1.
Ký hiệu: gcd(m,n) = 1.
Ví dụ: 9 và 14 là nguyên tố cùng nhau.
2). Đồng dư thức.
Định nghĩa:
Cho a và b là các số nguyên, n là số nguyên dƣơng thì a đƣợc gọi là đồng dƣ
với b theo modullo n nếu n|(a-b) (tức (a – b) chia hết cho n, hay khi chia a và b cho
n đƣợc cùng một số dƣ nhƣ nhau). Số nguyên n đƣợc gọi là modullo của đồng dƣ.
Kí hiệu:
(mod )a b n

Ví dụ:

67 ≡ 11 (mod 7), bởi vì 67 (mod 7) = 4 và 11 (mod 7) = 4


13
Tính chất của đồng dƣ:
Cho a, a
1
, b, b
1
, c  Z. Ta có các tính chất sau:
 a  b mod n khi và chỉ khi a và b có cùng số dƣ khi chia cho n.
 Tính phản xạ: a  a mod n.
 Tính đối xứng: Nếu a  b mod n thì b  a mod n.
 Tính giao hoán: Nếu a  b mod n và b  c mod n thì a  c mod n.
 a  a
1
mod n, b  b
1
mod n thì a + b  a
1
+ b
1
mod n và ab  a
1
b
1
mod n.
Lớp tƣơng đƣơng đồng dƣ:
Lớp tƣơng đƣơng của một số nguyên a theo modulo n là tập hợp các số
nguyên đồng dƣ với a theo modulo n.

Mỗi lớp tƣơng đƣơng nhƣ vậy đƣợc đại diện bởi một số duy nhất trong tập
hợp Z
n
= {0, 1, 2, 3, ,n-1}, là số dƣ chung khi chia các số đó cho n. Vì vậy, ta có
thể đồng nhất Z
n
với tập tất cả các lớp tƣơng đƣơng các số nguyên theo mod n, trên
tập đó ta có thể xác định các phép tính cộng, trừ và nhân theo mod n.
Tập Z
n
= {0, 1, 2, 3, ,n-1} đƣợc gọi là tập thặng dƣ đầy đủ theo mod n, vì
mọi số nguyên bất kỳ đều có thể tìm đƣợc trong Z
n
một số đồng dƣ với mình
(theo mod n).
Tập Z
n
*
= {a  Z
n
: gcd (a, n) = 1}, tức Z
n
*
là tập con của Z
n
bao gồm tất cả
các phần tử nguyên tố với n. Ta gọi tập đó là tập các thặng dƣ thu gọn theo mod n.


14

3). Phần tử nghịch đảo.
Định nghĩa:
Cho a  Z
n
. Nghịch đảo của a theo modulo n là một số nguyên x  Z
n
sao
cho ax  1 (mod n). Nếu tồn tại thì đó là giá trị duy nhất và a đƣợc gọi là khả
nghịch, ký hiệu x là a
-1
.
Tính chất:
Cho a, b  Z
n
. Phép chia của a cho b theo modulo n là tích của a và b
-1
theo
modulo n, và chỉ đƣợc xác định khi b có nghịch đảo theo modulo n.
Cho a  Z
n
, a khả nghịch khi và chỉ khi gcd(a, n) = 1.
Giả sử d = gcd (a, n). Phƣơng trình đồng dƣ ax  b mod n có nghiệm x khi và
chỉ khi d chia hết cho b, trong trƣờng hợp các nghiệm d nằm trong khoảng 0 đến
n - 1 thì các nghiệm đồng dƣ theo modulo n/d.
Ví dụ:
4
-1
= 7 (mod 9) vì 4.7  1 (mod 9)



15
1.1.2. Khái niệm trong đại số.
1). Khái niệm nhóm.
Khái niệm:
Nhóm là bộ các phần tử (G, *) thỏa mãn các tính chất sau:
Tính chất kết hợp: ( x * y ) * z = x * ( y * z )
Tính chất tồn tại phần tử trung gian:
e  G: e * x = x * e = x , x  G
Tính chất tồn tại phần tử nghịch đảo:
x’  G: x’ * x = x * x’ = e
Cấp của nhóm:
Ta gọi số các phần tử trong một nhóm là cấp của nhóm đó.
Ta ký hiệu
()n

là số các số nguyên dƣơng bé hơn n và nguyên tố với n. Nhƣ vậy,
nhóm
*
n
Z
có cấp
()n

và nếu p là số nguyên tố thì nhóm
*
p
Z
có cấp p-1.
Cấp của phần tử:
Ta nói một phần tử

*
n
gZ
có cấp m, nếu m là số nguyên dƣơng bé nhất
sao cho
1 mod
m
gn
.
2). Khái niệm nhóm con.
Nhóm con là bộ các phần tử ( S, * ) thỏa mãn các tính chất sau:
S  G, phần tử trung gian e  S
x, y  S => x * y  S


16
3). Khái niệm nhóm Cyclic.
Nhóm Cyclic là nhóm mà mọi phần tử x của nó đƣợc sinh ra từ một phần tử đặc biệt
g  G. Phần tử này đƣợc gọi là phần tử sinh (nguyên thủy), tức là:
Với  x  G:  n  N mà g
n
= x.
Ví dụ: (Z
+
, +) là một nhóm cyclic có phần tử sinh là 1.
4). Bài toán đại diện trong nhóm cấp nguyên tố.
Cho G là nhóm nguyên tố, bộ phần tử sinh (g
1
, g
2

,…,g
k
) (k  2, g
i
 G) và
phần tử h cố định.
Tìm đại diện của h, ví dụ nhƣ:

1
i
k
a
i
i
hg


(a
i
là các số nguyên)
Bài toán tìm đại diện của h rất khó, trừ khi ta đã có (g
1
, g
2
,…,g
k
) và (a
1
, a
2

,…,a
k
).



17
1.1.3. Khái niệm về độ phức tạp.
(Tham khảo tài liệu [3])
1). Khái niệm bài toán.
Bài toán thƣờng đƣợc cho dƣới dạng:
Input: Các dữ liệu vào của bài toán.
Output: Các dữ liệu ra (Kết quả giải quyết yêu cầu của bài toán).
Chú ý: Không mất tính tổng quát, trong lý thuyết độ phức tạp thuật toán, ta giả thiết
các dữ liệu là số dƣơng.
2). Độ phức tạp dữ liệu vào của bài toán.
Có hai quan niệm về Độ phức tạp Dữ liệu vào của bài toán:
Quan niệm 1: ứng với mô hình ứng dụng.
Độ phức tạp dữ liệu vào của bài toán đƣợc hiểu:
Số luợng dữ liệu vào của bài toán (kích thƣớc dữ liệu vào của bài toán).
Đây là quan niệm đơn giản, chƣa chính xác.
Quan niệm 2: ứng với mô hình lý thuyết.
Độ phức tạp dữ liệu vào của bài toán đƣợc hiểu :
Tổng độ dài mọi dữ liệu vào của bài toán, đã đƣợc mã hoá theo cách nào đó.
(Tức là tổng dung lƣợng nhớ để ghi các dữ liệu vào của bài toán).
Đây là quan niệm chính xác, chi tiết.
3). Chi phí của thuật toán đơn định tính theo một bộ dữ liệu vào.
Nói đến chi phí phải trả cho một quá trình tính toán ngƣời ta thƣờng quan
tâm tới chi phí về thời gian và bộ nhớ.
a/. Chi phí thời gian của một quá trình tính toán là thời gian cần thiết để thực hiện

quá trình tính toán đó.
* Với thuật toán tựa Algol:
Chi phí thời gian của một quá trình tính toán là số các phép tính cơ bản cần thực
hiện trong quá trình tính toán đó từ khi nhập dữ liệu vào đến khi cho ra kết quả.


18


* Với máy Turing:
Chi phí thời gian của một quá trình tính toán là số bƣớc chuyển hình trạng từ hình
trạng đầu q
0
đến hình trạng kết thúc q
n
.
b/. Chi phí bộ nhớ của một quá trình tính toán là dung lƣợng nhớ cần thiết để thực
hiện quá trình tính toán đó.
* Với thuật toán tựa Algol:
Tổng số: biến vào, biến ra, biến phụ cần dùng trong quá trình tính toán.
* Với máy Turing:
Số ô nhớ cần dùng trên băng nhớ tuyến tính dùng trong quá trình tính toán.
4). Độ phức tạp của thuật toán đơn định.
a/. Độ phức tạp trung bình
* Là tổng các chi phí về bộ nhớ và thời gian chia cho tổng số các đầu vào.
b/. Độ phức tạp cực đại (trong trƣờng hợp xấu nhất).
* Độ phức tạp về bộ nhớ trong trƣờng hợp xấu nhất:
L
A
(n) = max{ l

A
(e) | |e|  n}.
Tức là: Lấy chi phí lớn nhất về bộ nhớ.
* Độ phức tạp thời gian trong trƣờng hợp xấu nhất:
T
A
(n) = max { t
A
(e) | |e|  n}.
Tức là: Lấy chi phí lớn nhất về thời gian.
c/. Độ phức tạp tiệm cận.
Độ phức tạp PT(n) đƣợc gọi là tiệm cận tới hàm f(n), ký hiệu O (f(n))
nếu  n
0
, c mà PT(n)  c.f(n),  n  n
0
.
d/. Độ phức tạp đa thức.
Độ phức tạp PT(n) đƣợc gọi đa thức, nếu nó tiệm cận tới đa thức p(n).


19
5). Phân lớp bài toán theo độ phức tạp.
Lớp bài toán P, NP.
Với một bài toán, có hai khả năng xảy ra: đã có lời giải, chƣa có lời giải.
Với bài toán đã có lời giải, có hai trƣờng hợp xảy ra:
+ Giải đƣợc bằng thuật toán.
+ Không giải đƣợc bằng thuật toán.
Với bài toán giải đƣợc bởi thuật toán cũng chia thành hai loại:
+ Thực tế giải đƣợc: “Dễ giải”.

Có nghĩa, thuật toán đƣợc xử lý trong thời gian đủ nhanh, thực tế cho phép,
đó là thuật toán có độ phức tạp thời gian đa thức.
+ Thực tế khó giải: “Khó giải”.
Có nghĩa, thuật toán phải xử lý trong nhiều thời gian, thực tế khó chấp
nhận,
đó là thuật toán có độ phức tạp thời gian là trên đa thức (hàm mũ).
P: là lớp bài toán giải đƣợc bằng thuật toán đơn định, đa thức (Polynomial).
NP : là lớp bài toán giải đƣợc bằng thuật toán không đơn định, đa thức.
 P  NP (hiện nay ngƣời ta chƣa biết P ≠ NP).
Lớp bài toán NP- Hard, NP- Complete.
Khái niệm "Dẫn về được".
Bài toán B gọi là "Dẫn về đƣợc” bài toán A một cách đa thức, ký hiệu: B 
p
A.
nếu có thuật toán đơn định đa thức để giải bài toán A thì cũng có thuật toán đơn
định đa thức để giải bài toán B.
Nghĩa là: Bài toán A "khó hơn" bài toán B, hay B "dễ” hơn A.
Chú ý: Quan hệ 
p
có tính chất bắc cầu, có nghĩa: C  B và B  A  C  A.
Khái niệm "Khó tương đương".
Bài toán A gọi là “khó tƣơng đƣơng” bài toán B, ký hiệu A ~ B,
nếu : A  B và B  A
Bài toán NP- Hard.
Bài toán A đƣợc gọi là NP - hard (NP- khó) nếu  L  NP đều là L  A.


20
Lớp bài toán NP - hard bao gồm tất cả những bài toán NP - hard.
Bài toán NP - hard có thể nằm trong hoặc ngoài lớp NP.

Bài toán NP- Complete.
Bài toán A đƣợc gọi là NP - Complete (NP- đầy đủ) nếu A là NP - Hard và A NP.
Có nghĩa: Bài toán NP - Complete là bài toán NP - hard nằm trong lớp NP.
Lớp bài toán NP - Complete bao gồm tất cả những bài toán NP - Complete.
Lớp NP - Complete là có thực, vì Cook và Karp đã chỉ ra bài toán đầu tiên thuộc
lớp này. Đó là bài toán “thỏa đƣợc”: SATISFYABILITY.
Chứng minh bài toán là NP - Hard.
Cách 1 (Theo định nghĩa)
Bài toán A đƣợc gọi là NP - hard (NP- khó) nếu  L  NP đều là L  A.
Chứng minh theo định nghĩa gặp nhiều khó khăn vì phải chứng minh:
Mọi bài toán trong NP đều “dễ hơn” A.
Theo cách 1, năm 1971 Cook và Karp đã chỉ ra bài toán đầu tiên thuộc lớp NP-
hard. Đó là bài toán “thoả đƣợc” (Satisfyability).
Cách 2
Để chứng minh bài toán A là NP - hard, thực tế ngƣời ta thƣờng dựa vào bài toán B
nào đó đã đƣợc biết là NP - hard và chứng minh rằng B  A.
Theo tính chất bắc cầu của quan hệ “dẫn về”, A thoả mãn định nghĩa NP - hard.
Theo cách hiểu trực quan: B đã “khó” thì A càng “khó”.


21
1.2. MÃ HOÁ.
(Tham khảo tài liệu [2] [8])
1.2.1. Khái niệm mã hoá.
Mã hoá là phƣơng pháp biến đổi thông tin (phim, ảnh, văn bản,…) từ dạng
bình thƣờng sang dạng thông tin “khó” có thể hiểu đƣợc, nếu không có phƣơng tiện
giải mã. Giải mã là phƣơng pháp chuyển thông tin đã đƣợc mã hoá về dạng thông
tin ban đầu (quá trình ngƣợc của mã hoá).
Mã hoá tuân theo qui tắc nhất định gọi là hệ mã hoá. Có hai loại:
Mã hoá đối xứng.

Mã hoá công khai (phi đối xứng).
Sau đây là định nghĩa hình thức về sơ đồ mã hoá và cách thức thực hiện để
lập mã và giải mã:
Một sơ đồ hệ thống mã hoá là một bộ năm

= (P, C, K, E, D) thoả mãn:
P là một tập hữu hạn các ký tự bản rõ,
C là một tập hữu hạn các ký tự bản mã,
K là một tập hữu hạn các khoá,
E là một ánh xạ từ P x K vào C đƣợc gọi là phép lập mã
P là một ánh xạ từ K x C vào P, đƣợc gọi là phép giải mã
Với mỗi K  K ta định nghĩa e
K
: P C, d
K
: C P là hai hàm cho bởi:
 x  P: e
K
(x) = E (K, x)
 y  C: d
K
(y) = D (K, y)
e
K
và d
K
đƣợc gọi là hàm lập mã và hàm giải mã ứng với khoá mật mã K.
Các hàm đó phải thoả mãn hệ thức:
 x  P: d
K

(e
K
(x)) = x


22
Hệ mã hoá công khai sử dụng một cặp khoá. Một trong hai khoá đƣợc gọi là
khoá riêng (Private Key) và phải đƣợc giữ bí mật bởi ngƣời sở hữu. Khoá còn lại
đƣợc gọi là khoá công khai (Public Key), nó đƣợc phổ biến cho tất cả những ai
muốn giao dịch với ngƣời giữ khoá riêng tƣơng ứng. Cặp khoá này có liên quan về
mặt toán học, và không thể sử dụng các thông tin của khoá công khai để tìm ra khoá
riêng. Theo lý thuyết bất kỳ ai cũng có thể gửi cho ngƣời giữ khoá riêng một thông
điệp đƣợc mã hoá bằng khoá công khai, và nhƣ vậy chỉ có ngƣời nào sở hữu khoá
riêng mới có thể giải mã đƣợc. Đồng thời, ngƣời sở hữu khoá riêng cũng chứng
minh đƣợc tính toàn vẹn của dữ liệu mà anh ta gửi cho ngƣời khác bằng chữ kí điện
tử thông qua việc sử dụng khoá riêng để mã hoá. Bất kỳ ai nhận đƣợc dữ liệu đó
đều có thể sử dụng khoá công khai tƣơng ứng để kiểm tra xem nó do ai gửi và có
còn toàn vẹn hay không.


23
1.2.2. Hệ mã hoá khoá công khai RSA.
RSA là hệ mã hoá công khai, độ an toàn của hệ dựa vào bài toán khó:
“Phân tích số nguyên thành thừa số nguyên tố”.
Sơ đồ:
1. Chọn ngẫu nhiên và độc lập hai số nguyên tố lớn p và q với
pq

2. Tính:
.n pq


3. Tính giá trị hàm số Ơle:
( ) ( 1)( 1)n p q   

4. Chọn số tự nhiên b,
1 ( )bn  
và là số nguyên tố cùng nhau với
()n

5. Tính a là nghịch đảo của b:
1(mod ( ))ab n

Khi đó, b là khoá lập mã, công khai
a là khoá giải mã, bí mật
Lập mã:
Chọn P = C = Z
n
với
 
. , 0,1,2, , 1n p q Z n
n
  

mod
b
x Z y x n Z
nn
   

Giải mã:

mod
a
y Z x y n Z
nn
   



24
1.3. KÝ SỐ.
(Tham khảo tài liệu [1] [2])
1.3.1. Giới thiệu về ký số.
Ký số là phƣơng pháp ký một thông điệp lƣu dƣới dạng “số” (điện tử).
Thông điệp đƣợc ký và chữ ký cùng truyền trên mạng tới ngƣời nhận.
Với chữ ký truyền thống, khi ký lên tài liệu thì chữ ký gắn kết với tài liệu
đƣợc ký. Chữ ký số không đƣợc gắn một cách vật lý với thông điệp đƣợc ký.
Đối với chữ ký trên giấy, ta kiểm tra bằng cách so sánh nó với chữ ký gốc
đã đăng ký. Tất nhiên, phƣơng pháp này không an toàn vì có thể bị đánh lừa bởi
chữ ký của ngƣời khác. Trong khi đó, chữ ký số đƣợc kiểm tra bằng thuật toán kiểm
tra công khai, “ngƣời bất kì” có thể kiểm tra chữ ký số. Việc sử dụng lƣợc đồ ký an
toàn sẽ ngăn chặn khả năng đánh lừa (giả mạo chữ ký).
Sơ đồ chữ ký số là bộ năm (P, A, K, S, V) trong đó:
P: tập hữu hạn các thông điệp
A: tập hữu hạn các chữ kí.
K: tập hữu hạn các khoá ( không gian khoá ).
Với mỗi k  K tồn tại thuật toán kí sig
k
 S và một thuật toán xác minh ver
k
 V.

Mỗi
:sig P A
k


 
er x ,:
k
true falsev P A
là những hàm sao cho mỗi
thông điệp x  P và mỗi chữ ký y A thoả mãn phƣơng trình dƣới đây:

er( , )v x y 
()
er( , )
()
true khi y sig x
v x y
false khi y sig x












25
1.3.2. Một số sơ đồ ký số.
1). Sơ đồ ký số RSA.
Sơ đồ chữ ký RSA đƣợc cho bởi bộ năm: S = (P, A, K, S, V).
Chuẩn bị:
P = A = Z
n
, với n = p.q, p và q là các số nguyên tố lớn.
(n) = (p-1)(q-1)
K = (n, p, q, a, b)
Chọn b  Z
n
nguyên tố cùng (n)
Chọn a  Z
n
là nghịch đảo của b theo (n)
Các giá trị n và b công khai, các giá trị p, q, a bí mật.
Kí:
Với mỗi K = (n, p, q, a, b) và x  Z
n
ta định nghĩa:
y = sig
k
(x) = x
a
mod n, y  A
Kiểm tra chữ kí:
Ver
k
(x, y) = true  x  y

b
(mod n)

×