ĐẠ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... Hầu hết mọi người đều mong
Trang 1ĐẠ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
Trang 2MỤ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ÁCKHÁINIỆMCƠ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
Trang 31.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ỚITHIỆUVỀTIỀNĐIỆNTỬ 44
2.1 KHÁI NIỆM TIỀN ĐIỆN TỬ 44
Trang 42.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ỘTSỐBÀITOÁNPHÁTSINHKHIDÙNGTIỀNĐIỆNTỬ 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
Trang 55) 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ÊNLƯỢ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
Trang 66) 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
Trang 7DANH MỤC CÁC KÝ HIỆU
Shamir, Len Adlemon năm 1977
Directory)
4 VSS Sơ đồ chia sẻ bí mật có thể xác minh - Verify Secret
Trang 8DANH 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
Trang 9MỞ ĐẦ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ử
Trang 105 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ử
Trang 11Chươ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
Trang 12Chươ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ó
Trang 13Tính chất của đồng dƣ:
Cho a, a1, b, b1, 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 a1 mod n, b b1 mod n thì a + b a1 + b1 mod n và ab a1b1 mod n
Tập Zn = {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 Zn một số đồng dƣ với mình (theo mod n)
Trang 143) Phần tử nghịch đảo
Định nghĩa:
Cho a Zn Nghịch đảo của a theo modulo n là một số nguyên x Zn 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 Zn 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 Zn, 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ụ:
Trang 151.1.2 Khái niệm trong đại số
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 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
Cấp của phần tử:
n
gZ có cấp m, nếu m là số nguyên dương bé nhất
g n
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
Trang 163) 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à gn = 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 (g1, g2,…,gk) (k 2, gi 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
(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ó (g1, g2,…,gk) và (a1, a2,…,ak)
Trang 171.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ả
Trang 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 q0 đến hình trạng kết thúc qn
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:
LA(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:
TA(n) = max { t A (e) | |e| n}
Tức là: Lấy chi phí lớn nhất về thời gian
Trang 195) 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
Trang 20Lớ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)
Trang 211.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ã
Với mỗi K K ta định nghĩa eK: P C, dK: C P là hai hàm cho bởi:
Trang 22Hệ 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
Trang 231.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 p q
2 Tính: n p q
3 Tính giá trị hàm số Ơle: ( ) n ( p 1)( q 1)
4 Chọn số tự nhiên b, 1 b ( ) n và là số nguyên tố cùng nhau với ( ) n
5 Tính a là nghịch đảo của b: ab 1(mod ( )) n
Khi đó, b là khoá lập mã, công khai
Trang 24Đố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í sigk S và một thuật toán xác minh verk V
thông điệp x P và mỗi chữ ký y A thoả mãn phương trình dưới đây:
Trang 25Các giá trị n và b công khai, các giá trị p, q, a bí mật
Trang 26Chọn x ≠ 0 làm khoá bí mật
Tính y = gx làm khoá công khai
Lấy H là hàm băm không va chạm
Ký:
Giả sử cần ký trên văn bản m
Chọn r ngẫu nhiên thuộc Zq
Trang 27Ứng dụng trong bỏ phiếu điện tử:
Trong phương thức bỏ phiếu điện tử, mỗi lá phiếu phải có “thông tin định danh” Nó có thể là một con số x nào đó và phải khác nhau Trên mỗi lá phiếu phải
có chữ ký trên Số định danh x, thì lá phiếu mới có giá trị để bầu cử
Nếu cử tri chuyển ngay Số định danh x cho Ban kiểm phiếu ký, thì họ lập tức xác lập được mối liên hệ giữa cử tri và x Đó là điều cử tri không muốn vì sợ rắc rối sau này
Cử tri biến đổi x thành y trước khi đưa cho ban kiểm phiếu ký xác nhận Ban kiểm phiếu ký vào y, mà không biết đó là số định danh x đã bị làm mù Họ trao chữ
ký trên y là z cho cử tri Cử tri xoá mù trên z sẽ được chữ ký của ban kiểm phiếu trên số định danh x, như vậy cử tri có quyền bầu cử
Với kỹ thuật này, cuộc bỏ phiếu bảo đảm được: quyền bỏ phiếu và bí mật (có nghĩa chỉ người có quyền bầu cử mới được bỏ phiếu)
Ứng dụng trong hệ thống tiền điện tử: Mua bán hàng trên mạng
Giả sử Alice muốn mua quyển sách Q giá 50$ từ Bob Giả sử hai người cùng
sử dụng dịch vụ của một ngân hàng Giao thức giao dịch gồm 3 giai đoạn sau:
Rút tiền (Withdrawal):
Alice tạo tiền điện tử C (với thông tin: số seri, giá trị của C, ví dụ 50$)
Alice yêu cầu ngân hàng ký mù trên C
Giao thức ký thành công, ngân hàng sẽ trừ 50$ trong tài khoản của Alice
Trang 28Tiêu tiền (spending):
Alice đưa cho Bob tiền C đã có chữ ký của ngân hàng và yêu cầu sách Q
Bob kiểm tra chữ ký trên C Nếu không hợp lệ thì Bob kết thúc giao thức
Gửi tiền (deposit):
Bob lấy C từ Alice và gửi cho ngân hàng
Ngân hàng xác thực chữ ký trên C:
Nếu hợp lệ, ngân hàng kiểm tra xem C đã được tiêu trước đó chưa
Nếu C chưa được tiêu, ngân hàng cộng thêm vào tài khoản của Bob
Nếu việc gửi tiền thành công, Bob sẽ gửi quyển sách Q cho Alice
Bob “khó” thể biết C từ tài khoản nào Khi Bob gửi C vào tài khoản của mình, ngân hàng cũng “khó” biết đồng tiền đó nhận từ Alice vì nó đã được ký
“mù” Như vậy tiền điện tử C không lưu lại dấu vết của những ai đã “tiêu ” nó
Trang 29Sign(z) = Sign(Blind(x)) = za mod n = y, và gửi lại y cho A
• Bước 3: A tiến hành xoá mù y bằng thuật toán:
UnBlind(y) = UnBlind(Sign(Blind(x))) = y/r mod n = sign(x)
Trang 30Bước 2 (ký) : tiến hành ký trên z
y =Sign(z)= za mod n = 137 (mod 15)= 62748517 mod 15 = 7
Bước 3 (xoá mù): tiến hành xoá mù y = 7
UnBlind(y) = y/r (mod n) = 7/11 (mod 15) = 7*11-1 (mod 15)
= 7*11 (mod 15) = 77 (mod 15) = 2
(chú ý 11-1 = 11 trong mod 15)
Trang 313) Chữ ký mù Schnorr
Sơ đồ chữ ký mù Schnorr [6] được xây dựng bằng cách mù hoá sơ đồ chữ ký
số Schnorr Giao thức được thực hiện theo các bước sau:
Chuẩn bị:
Khoá bí mật của ngân hàng là x, khoá công khai là y = gx mod n
Alice cần ký lên đồng tiền Cm
Trang 321.3.4 Chữ ký nhóm và ứng dụng
1) Sơ đồ chữ ký nhóm dạng 1
Người tin cậy Z là trưởng nhóm chọn hệ thống khoá bí mật Z chuyển cho mỗi thành viên trong nhóm một danh sách các khoá bí mật (các danh sách này là khác nhau) và công bố một danh sách các khoá công khai tương ứng (theo thứ tự ngẫu nhiên) trong Thư mục công khai tin tưởng (TPD – Trusted Public Directory)
Mỗi thành viên trong nhóm có thể ký thông điệp bằng khoá bí mật si trong danh sách của anh ta Người nhận kiểm tra chữ ký bằng khoá công khai tương ứng h= gsi mod p Mỗi khoá bí mật si chỉ được sử dụng một lần
Z biết danh sách khoá bí mật của mỗi thành viên Khi cần, anh ta biết được ai
đã tạo ra chữ ký đó Để làm được điều này, Z “mở” một chữ ký
Như vậy, Z biết danh sách khoá bí mật của mỗi thành viên và có thể giả mạo chữ ký Điều này có thể giải quyết bằng việc dùng các khoá công khai “mù”
Cải biên 1
Chọn p là số nguyên tố, g là phần tử sinh của nhóm nhân Zp*
Thành viên thứ i lấy khoá bí mật “thực sự” của mình là s i, khoá công khai,
Trang 33Người nhận có thể sử dụng giao thức xác nhận hoặc giao thức chống chối bỏ với mỗi thành viên nhóm, mà không cần sự giúp đỡ của trưởng nhóm Z
3) Sơ đồ chữ ký nhóm dạng 3 (Jan Camenish và Stadler)
Sơ đồ chữ ký nhóm của Jan Camenish và Stadler gồm 5 thủ tục:
Setup: Thủ tục sinh khoá công khai của nhóm và khoá bí mật của trưởng nhóm Join: Thủ tục tương tác giữa người quản lí nhóm và một thành viên mới của nhóm
để cung cấp cho thành viên này khoá bí mật và chứng nhận thành viên
Sign: Thủ tục ký một thông điệp của một thành viên trong nhóm
Verify: Thủ tục kiểm tra chữ ký trên một thông điệp có đúng là chữ ký của nhóm đó
hay không
Open: Thủ tục xác định chữ ký $ trên thông điệp m là của thành viên nào trong
nhóm
Trang 34Ứng dụng của chữ ký “nhóm”: Thẻ thanh toán liên ngân hàng
Hiện nay, thẻ thanh toán điện tử, thẻ rút tiền tự động ATM đã trở thành phổ biến Tuy nhiên nếu mỗi ngân hàng đều phát hành một loại thẻ riêng thì chi phí sẽ rất cao cho người dùng và các ngân hàng Người dùng muốn thanh toán hoặc rút tiền sẽ phải tìm đến đúng “quầy” của ngân hàng đó Hơn thế nữa họ phải mua nhiều thẻ nếu gửi tiền tại nhiều ngân hàng, họ sẽ gặp khó khăn trong việc quản lí nhiều thẻ Mặt khác mỗi ngân hàng phải chi phí mua các “quầy” thanh toán riêng
Như vậy yêu cầu có thẻ thanh toán chung và “quầy” thanh toán chung giữa các ngân hàng là cần thiết Chữ ký “nhóm” sẽ được ứng dụng trong trường hợp này
Một liên minh ngân hàng trong đó mỗi ngân hàng là một thành viên trong nhóm, trưởng nhóm là ngân hàng trung tâm (được tin cậy bởi các ngân hàng khác)
Ngân hàng trung tâm tạo các khoá bí mật và công khai của nhóm, tạo các khoá bí mật cho các ngân hàng thành viên Mỗi ngân hàng thành viên đều có quyền tạo ra thẻ thanh toán chung của nhóm, nhưng chỉ cần chữ ký của ngân hàng đó
Trang 35Join: Giao thức tương tác giữa Trưởng nhóm và thành viên mới của nhóm để cung
cấp cho thành viên này khoá bí mật và chứng nhận thành viên
Sign: Giao thức tương tác giữa thành viên nhóm là Bob và một user bên ngoài
nhóm là Alice có thông điệp m, để Bob có thể tạo chữ ký $ trên thông điệp m
Ứng dụng của chữ ký “nhóm mù”
Alice là khách hàng của Ngân hàng A, Bob là khách hàng của Ngân hàng B Alice cần trả một số tiền cho người bán hàng Bob
Thiết lập (Setup):
Các ngân hàng trong một nhóm, Trưởng nhóm là ngân hàng trung tâm Nếu
có ngân hàng muốn gia nhập nhóm thì thực hiện giao thức Join với trưởng nhóm
Rút tiền (Withdrawcal):
+ Alice tạo đồng tiền điện tử C gồm số seri và mệnh giá
+ Alice yêu cầu Ngân hàng A ký “mù nhóm” vào C
+ Ngân hàng A ký “mù nhóm” vào C và rút số tiền tương ứng từ tài khoản của Alice Bây giờ Alice sở hữu tiền C có giá trị trong cả nhóm ngân hàng
Trang 36Tiêu tiền (Spending):
+ Alice đưa cho Bob tiền C đã có chữ ký “nhóm” của Liên ngân hàng
+ Bob kiểm tra và xác thực chữ ký “nhóm” của Liên ngân hàng trên C
Việc này có thể thực hiện dễ dàng nhờ khoá công khai của nhóm
Gửi tiền (Deposit):
+ Nếu các bước trên hoàn thành, Bob gửi tiền C cho Ngân hàng B
Ngân hàng B nhận, vì C là tiền “chung” trong Liên ngân hàng
+ Ngân hàng B xác thực chữ ký trên C Cần nhớ rằng B không cần biết A là ai khi thực hiện việc này, mà chỉ cần sử dụng khoá công khai của nhóm
+ Ngân hàng B kiểm tra tiền C đã được tiêu chưa qua danh sách các đồng tiền đã tiêu lưu ở ngân hàng, để tránh tiêu tiền C hai lần
Nếu kiểm tra hoàn tất, Ngân hàng B nạp thêm vào tài khoản của Bob số tiền C Bob yên tâm gửi hàng cho Alice
Trang 371.3.6 Chữ ký dùng một lần
Sơ đồ chữ ký dùng một lần (one-time signature) [6] có nhiều ứng dụng, đặc biệt là trong một số mô hình về tiền điện tử Sau đây trình bày sơ đồ chữ ký dùng một lần của Schnorr
Với sơ đồ chữ ký dùng một lần của Schnorr, người dùng trong cùng hệ thống
có thể chia sẻ một số ngẫu nhiên g và hai số nguyên tố p và q sao cho:
Ký: Giả sử Alice cần ký lên thông điệp m
Alice lấy ngẫu nhiên r Zq
Số r không được dùng quá một lần để tạo ra các chữ ký khác nhau
Alice sử dụng r để ký hai thông điệp m và m’, tạo ra hai chữ ký là (c, y) và (c’, y’) Khi đó, ta có:
Trang 381.3.7 Chữ ký không thể chối bỏ
Trong các sơ đồ chữ ký đã trình bày ở trên, việc kiểm thử tính đúng đắn của chữ ký là do người nhận tiến hành Như vậy, cả văn bản cùng chữ ký có thể được sao chép và phát tán cho nhiều người mà không được phép của người gửi Để tránh khả năng đó, người ta đưa ra sơ đồ chữ ký không thể chối bỏ được với một yêu cầu
là chữ ký không thể được kiểm thử nếu không có sự hợp tác của người ký Sự hợp tác đó được thể hiện qua giao thức kiểm thử (giao thức xác nhận) Khi chữ ký đòi hỏi được xác nhận bằng một giao thức kiểm thử thì một vấn đề nảy sinh là làm sao
có thể ngăn cản người ký chối bỏ một chữ ký mà anh ta đã ký? Để đáp ứng yêu cầu
đó, cần có thêm một giao thức chống chối bỏ, thông qua giao thức này, người ký có thể chứng minh một chữ ký không phải là chữ ký của mình Nếu anh ta từ chối không tham gia giao thức đó thì có bằng chứng là anh ta không chứng minh được chữ ký đó là giả mạo, tức anh ta không chối bỏ được chữ ký của mình
Một sơ đồ chữ ký không thể chối bỏ gồm ba phần: một thuật toán ký, một giao thức kiểm thử (giao thức xác nhận) và một giao thức chối bỏ Sơ đồ được sử dụng rất nhiều hiện nay là sơ đồ của Chaum [1]
Trang 391) Sơ đồ chữ ký không thể chối bỏ của Chaum
Khoá công khai (p, , a, ) với là số nguyên dương < p-1, = a
B chọn ngẫu nhiên hai số e1, e2 Zq*
Tính c y e1.e2 modp, gửi cho A
B thử tiếp điều kiện: Dx f1.f2(mod )p
Trang 40B thử điều kiện 9 11938 4 397 (mod 467) (đúng)
B chấp nhận 129 là chữ ký của A trên văn bản 119
Giao thức chối bỏ:
Giả sử A gửi văn bản x = 286 với chữ ký y = 83
B chọn ngẫu nhiên hai số e1 = 45, e2 = 237, tính c = 305, gửi cho A