
1. CÁC GIAI ĐOẠN TRONG DÙNG TIỀN ĐIỆN TỬ
Giai đoạn 1: RÚT TIỀN TỪ NGÂN HÀNG
+
Bài toán bảo vệ Hồ sơ Yêu cầu Rút Tiền.
+
Bài toán Thẩm định Hồ sơ Yêu cầu Rút Tiền.
+
Bài toán thực hiện Ẩn danh Đồng tiền.
+
Bài toán Phòng tránh: Khai man giá trị đồng tiền
+ Bài toán bảo vệ Đồng tiền trên đường truyền tin.
Giai đoạn 2: THANH TOÁN TIỀN
-
Bài toán bảo vệ Đồng tiền trên đường truyền tin.
-
Bài toán Kiểm tra Tính hợp pháp của Đồng tiền.
-
Đồng tiền có chữ ký của Ngân hàng?
-
Đồng tiền có chữ ký của Người chuyển tiền?
-
Bài toán Phòng tránh: Tiêu một đồng tiền nhiều lần.
- Ngân hàng ghi lại Định danh của các Đồng tiền đã nhận vào Tài khoản.
Giai đoạn 3: GỬI TIỀN VÀO NGÂN HÀNG
-
Bài toán bảo vệ Đồng tiền trên đường truyền tin.
-
Bài toán Kiểm tra Tính hợp pháp của Đồng tiền.
+
Đồng tiền có chữ ký của Ngân hàng?
+ Đồng tiền đã tiêu lần nào chưa?
Tiền điện tử mang lại lợi ích không chỉ cho phía
người dùng mà còn cho cả phía ngân hàng cũng như phía nhà cung cấp. Tiền điện
tử làm tăng tốc độ cũng như hiệu quả của các phiên giao dịch. Tuy nhiên,
để Tiền điện tử thực sự trở thành một phương thức thanh toán hữu hiệu,
các nhà công nghệ, các nhà phát triển và các chuyên gia an toàn thông tin còn
đứng trước nhiều thách thức.
Hiện nay có nhiều vấn đề cần phải giải quyết với
Tiền điện tử, trong đó có hai vấn đề lớn nhất là:
+
Vấn đề ẩn danh người sử dụng đồng tiền.
+ Vấn đề ngăn chặn tiêu một đồng tiền “điện tử” nhiều lần (double-spending).
2. CÁC VẤN ĐỀ TRONG DÙNG TIỀN ĐIỆN TỬ
2.1. Vấn đề ẩn danh người sử dụng đồng tiền
Ẩn
danh là đặc tính rất quan trọng của phương thức thanh toán bằng tiền điện tử.
Tính ẩn danh được hiểu là người tiêu tiền phải được ẩn danh và không để lại dấu
vết, nghĩa là ngân hàng không thể biết được:
tiền giao dịch là của ai.
Để giải quyết vấn đề trên người ta đã sử dụng kỹ
thuật “chữ ký mù”. Đó là dạng
đặc biệt của chữ ký điện tử, nó đòi hỏi người ký thực hiện ký vào thông điệp mà
không biết nội dung của nó. Người ký sau này có thể nhìn thấy cặp chữ ký, thông
điệp, nhưng không thể biết được là mình đã ký thông điệp đó khi nào và ở đâu,
mặc dù anh ta có thể kiểm tra được chữ
ký đó là đúng đắn. Nó cũng giống như ký khi đang nhắm mắt vậy!
Với chữ ký mù của ngân hàng, họ không thể có được
mối liên hệ nào giữa đồng tiền điện tử và chủ sở hữu của nó.
2.2. Vấn đề gian lận giá trị đồng tiền
Việc Ngân hàng dùng chữ ký “mù” để ký vào đồng tiền làm nảy sinh một vấn đề khác, đó là: ông A gian lận, gửi tới ngân hàng đồng tiền ghi giá trị 50 $ để xin chữ ký của họ trên đồng tiền này, nhưng lại báo với ngân hàng rằng đồng tiền đó chỉ ghi giá trị 1$. Như vậy ông A đã có đồng tiền 50 $ cùng với chữ ký của ngân hàng, nhưng tài khoản của ông chỉ bị khấu trừ 1 $. Ông A đã “thắng” đậm.
2.3. Vấn đề tiêu xài một đồng tiền hai lần
Tiền điện tử có dạng
số hoá, nên dể dàng tạo bản sao từ bản gốc. Chúng ta không thể phân biệt được
giữa đồng tiền “gốc” và đồng tiền “sao”. Kẻ gian có thể tiêu xài đồng tiền “sao” này nhiều lần mà không bị phát hiện.
Hệ
thống tiền điện tử được áp dụng
vào thực tế, thì phải có khả năng ngăn ngừa hay phát hiện được trường hợp “Một
đồng tiền tiêu xài hai lần” (double spending).
Để giải quyết vấn đề này, đã có các
giải pháp khác nhau tuỳ theo từng hệ thống tiền điện tử.
Tính ẩn danh là đặc tính quan trọng của phương thức
thanh toán bằng tiền điện tử Để giải quyết vấn đề này, người ta dùng kỹ thuật
chữ ký “mù”. Chữ ký “mù” đảm bảo ngân hàng không có được mối liên hệ nào giữa
đồng tiền điện tử và chủ sở hữu của nó.
Tùy theo từng hệ thống tiền điện tử, sẽ áp dụng sơ đồ chữ ký
“mù” khác nhau. Chẳng hạn, lược đồ Chaum-Fiat-Naor dùng sơ đồ chữ ký mù RSA, lược
đồ Brand dùng sơ đồ chữ ký mù Schnorr. Mỗi lược đồ cũng có những ưu nhược điểm
khác nhau.
Mặc dù đạt được tính ẩn danh, nhưng giải
pháp chữ ký mù làm nảy sinh một vấn đề:
làm sao để ngăn chặn
1) Phương pháp thứ
nhất
Ngân
hàng dùng một bộ khóa (khoá ký, khóa kiểm tra chữ ký) khác nhau cho mỗi loại
tiền. Nếu có k giá trị đồng tiền thì ngân hàng phải có k bộ khoá khác nhau.
Ví dụ với đồng tiền giá trị 1$ thì dùng
khoá k1, đồng tiền 50 $ thì dùng khoá k50. Như vậy nếu
gian lận của ông A tạo ra đồng tiền 50$
với khóa k1, thì đó là đồng tiền không hợp lệ.
2) Phương pháp thứ
hai
Để
rút từ ngân hàng một đồng tiền giá trị T, ông A phải tạo k đồng tiền C1,C2,...,Ck
cùng giá trị T. Chúng đều được gắn
định danh, khác nhau duy nhất giữa chúng là số sê-ri. Ông A làm “mù” những đồng tiền này, và gửi chúng đến
ngân hàng.
Ngân hàng yêu cầu ông A cung cấp thông
tin để khử “mù” k-1 đồng tiền bất kỳ. Ngân hàng khử “mù” và kiểm tra chúng. Nếu
tất cả đều hợp lệ, ngân hàng ký “mù” lên đồng tiền còn lại Ci (là
đồng tiền mà ngân hàng không khử “mù”), và gửi cho ông A.
Ngân hàng có sự đảm bảo cao rằng đồng
tiền còn lại Ci cũng là hợp lệ, vì nếu ông A gửi kèm đồng
tiền không hợp pháp trong số k đồng
tiền, thì xác suất bị phát hiện ít nhất là k-1/
k. Xác suất này càng cao nếu k càng lớn. Tuy nhiên nếu k quá lớn thì hệ thống xử lý phải trao đổi nhiều dữ liệu.
3.2. Giải pháp của Lược đồ Chaum-Fiat-Naor
3.2.1. Lược đồ Chaum-Fiat-Naor
Lược đồ Chaum - Fiat - Naor, là
lược đồ hệ thống tiền điện tử có tính ẩn danh. Để bảo đảm tính ẩn danh của
đồng tiền, lược đồ sử dụng kỹ thuật “chữ
ký mù” RSA. Trong đó khoá mật là a, khóa công khai là (n, b), hàm f , g không “va chạm”.
Mỗi người dùng có số tài khoản u, ngân hàng sẽ giữ số đếm v liên quan đến số tài khoản này (đơn vị Ui tạo ra), ngân hàng dựa vào u để xác định kẻ gian lận.
Lược đồ Chaum – Fiat – Naor
1). Khách hàng gửi đồng tiền ở dạng “mù”, yêu cầu Ngân hàng
ký.
2). Ngân hàng gửi đồng tiền đã ký cho Khách hàng (đồng tiền vẫn còn
3). Sau khi xóa “mù”
đồng tiền, Khách hàng chuyển tiền cho Người bán hàng.
4). Người bán hàng chuyển giao hàng cho Khách hàng.
5). Người bán chuyển tiền đến Ngân hàng để kiểm tra tính hợp
lệ của đồng tiền.
Giao thức Rút
tiền: Ông A Rút tiền từ Ngân hàng. Ký “mù” có điều kiện
1) Ông A muốn rút từ ngân hàng một đồng tiền “ẩn danh”, thì phải tạo k đơn vị Ui và chuyển chúng đến ngân hàng. Mỗi
Ui được tạo từ các số ngẫu nhiên
ai, ci, di sao cho Ui độc lập và duy nhất, 1 £
i
£
k. Cụ thể Å là phép
XOR, Ù là phép nối.
Ui =
f
(xi, yi ), xi = g ( ai , ci ), yi
= g
(ai Å
(u Ù
(v + i)), di ).
2) Ông A làm “mù” k đơn vị Ui thành Bi
bằng tham số “mù” ngẫu nhiên ri và gửi chúng đến ngân hàng. Những tham
số “mù” đó ngăn chặn ngân hàng kiểm tra giá
trị những “đồng tiền” Ui.
Cụ thể Bi = Ui ri
b mod
n.
3) Ngân hàng chọn ngẫu nhiên k/2
đơn vị Ui để
kiểm tra, yêu cầu ông A cung cấp các
tham số ri , ai , ci,
di tương ứng
với những đơn vị Ui mà ngân hàng đã chọn.
4) Ông A cung cấp cho ngân hàng các tham số
ri , ai , ci,
di theo yêu cầu.
5) Dựa vào các tham số do ông A cung cấp, ngân hàng xóa “mù” k/2 đơn vị Ui đã chọn, kiểm tra để
đảm bảo rằng ông A không có gian lận.
Nếu
không
có gian lận, ngân hàng mới ký “mù” lên những đơn vị Uj còn lại (đó là
đơn vị Uj mà ngân hàng không xoá “mù”, chính là
Bj) và gửi cho ông A.
Chữ
ký trên Bj là Bja mod n. Chú ý j ngẫu nhiên ≤ k, chỉ dùng k/2 phần tử Bj
Sau đó ngân hàng trừ số tiền tương ứng
vào tài khoản của ông A.
6) Ông A xoá “mù” đơn
vị Bj đã được ngân hàng ký, bằng phép tính chia: Bj
a /rj. Lúc này ông A có đồng tiền (điện tử) Uj với giá trị thật sự và chữ ký trên Uj của Ngân hàng là:
T = Uj a mod n = f (xj, yj)
a mod n
Giao thức Thanh toán: Ông A thanh toán cho Ông
B
1) Ông A gửi đồng tiền Uj đến Ông B.
2) Ông B chọn chuỗi
nhị phân ngẫu nhiên z1 z2… z k/2 và gửi nó đến ông A
3) Ông A phản hồi lại tuỳ theo từng trường hợp sau:
+ Nếu zi
= 1 thì ông A
sẽ gửi đến ông B: ai,
ci và yi
+ Nếu zi
= 0 thì ông A
sẽ gửi đến ông B: xi,
ai (u(v + i)) và di.
4) Ông B kiểm tra Uj là hợp lệ trước khi chấp nhận thanh toán của
ông A.
Giao thức Gửi tiền:
Ông B gửi đồng
tiền vào Ngân hàng
1) Ông B gửi Lịch sử Thanh toán đến Ngân hàng (Thanh toán của ông A cho ông B).
2) Ngân hàng kiểm tra
chữ ký số của ngân hàng.
3) Ngân hàng kiểm
tra đồng tiền này không bị tiêu xài trước
đó.
4) Ngân hàng nhập vào
cơ sở dữ liệu những đồng tiền đã tiêu xài, ghi lại chuỗi nhị phân zi và những phản hồi tương
ứng từ ông A.
Điều này giúp phát hiện
kẻ tiêu xài một đồng tiền hai lần.
5) Ngân hàng ghi đồng
tiền Uj vào tài khoản của Ông B.
3.2.3. Phân tích - đánh giá
Nhận xét chung
1) Lược đồ Chaum -
Fiat - Naor là lược đồ hệ
thống tiền điện tử có tính ẩn danh.
Để bảo đảm tính “ẩn
danh” của đồng tiền, lược đồ dùng “chữ ký mù” RSA.
2) Để
ngăn ngừa người rút tiền “khai
gian lận giá trị” đồng tiền, lược đồ đã sử dụng giao thức “Cắt và chọn” (Cut and choose).
Ngân hàng chọn ngẫu nhiên k/2 đơn vị Ui để kiểm
tra, nếu không có gian lận xảy ra thì
mới ký “mù” lên các đơn vị Uj còn lại. Cũng như lý luận ở trên về
giao thức “Cắt và chọn”,
ngân hàng có sự đảm bảo cao rằng đồng tiền còn lại Uj cũng
là hợp lệ, nếu k
càng lớn.
3) Để ngăn chặn việc ‘tiêu xài hai lần’ một đồng
tiền, lược đồ dùng giao thức “hỏi-đáp” để lấy một phần thông tin
định danh gắn lên đồng tiền. Nếu nó được “tiêu xài hai lần”, thì thông tin định danh
trên hai lần “tiêu xài” sẽ kết hợp lại,
để truy vết tìm ra kẻ gian lận (Ví dụ tìm ra số tài khoản u).
Nếu ông A tiêu tiền hai lần, thì khả năng Ngân hàng có thể lấy
được cả hai tham số ai và ai Å (u Ù (v + i)) để tính được u. Đó là số tài khoản của ông A tại Ngân
hàng. Từ u,
Ngân hàng có thể truy ra được ông A đã
tiêu một đồng tiền hai lần.
Vì khả năng có cặp bít khác nhau trong 2 chuỗi z1,
z2,…,zk/2 và z’1, z’2,…,z’k/2 là rất cao. Chỉ cần có một cặp bit
tương ứng zi và z’i khác
nhau, là ngân hàng có thể có đủ thông tin để tính được
số tài khoản u của ông
A.
Xác suất để 2 chuỗi zi và z’i trùng nhau là 1/(2^(k/2)) , tức là ngân hàng không có đủ thông tin để tìm ra được định
danh của ông A. Như vậy nếu chọn k đủ lớn thì khả năng hai chuỗi zi và z’i trùng nhau có thể xem là khó thể xảy
ra.
Chú ý: Trong giao thức thanh toán: Lịch sử Thanh toán
+
Nếu zi = 1 thì
ông A sẽ gửi đến ông B: ai,
ci và yi
(1)
+
Nếu zi = 0 thì
ông A sẽ gửi đến ông B: xi,
ai (u (v + i)) và di. (2)
Như
vậy một khi ông A thanh toán 2 lần với
cùng một đồng tiền, thì khả năng
zi
và z’I khác nhau
là nhiều, và từ (1), (2),
Ngân hàng sẽ tính được u.
Chi phí thực hiện luợc đồ:
Trong lược đồ Chaum-Fiat-Naor chi phí
(thời gian tính toán, tiền bạc,…) phụ thuộc vào độ lớn của k. Tại giao thức rút tiền, ông A gửi k packet
đến ngân hàng, tuy nhiên, ngân hàng chỉ phải gửi trả lại 1 packet. Việc tiến
hành làm “mù” và “xóa mù” k packet
làm tăng sự tính toán, trao đổi và thời gian lưu trữ.
Tại giao thức thanh toán, sau khi ông A
gửi tiền đến ông B. Ông B gửi một chuỗi nhị phân tới ông A, sau đó ông A phải
gửi k/2 phản hồi khác nhau. Điều này làm tăng thời gian và sự tính toán, liên
lạc và chi phí lưu trữ.
Khả năng Tấn công luợc đồ:
Đây là phương pháp dựa vào kỹ thuật
RSA, vì vậy, tất cả những cách tấn công vào RSA đều có thể tấn công vào lược đồ
này.
Tuy nhiên, về mặt lý thuyết, ông A có
thể tránh được sự phát hiện của ngân hàng khi tiêu xài hai lân, nếu ông A và
ông C cùng hợp tác với nhau, cụ thể như sau:
Ông A sau khi thực hiện một giao dịch
thanh toán với ông B, sẽ gửi những tiền đã tiêu tới ông C và mô tả cho ông C
quá trình giao dịch với ông B. Như vậy, ngân hàng sẽ nhận được thông tin giao
dịch từ ông B và ông C giống như nhau. Lúc này, ngân hàng sẽ không có khả năng
xác định được số tài khoản u của ông A.
(Nguồn: PGS.TS Trịnh Nhật Tiến (2007), Giáo trình An toàn dữ liệu)

Post a Comment