Nghiên cứu một số giao thức thanh toán qua mạng công khai - 7


1. Giao thức rút tiền

a) Alice muốn rút ngân hàng một đồng tiền ẩn danh, thì phải tạo k đơn vị tiền 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. Với phép XOR: , phép nối , định nghĩa: Ui = f (xi, yi ), xi = g ( ai, ci ), yi = g (ai (u (v + i)), di ).

b) Alice làm “mù” k đơn vị tiền Ui thành Bi bằng tham số “mù” ngẫu nhiên ri và gửi chúng đến ngân hàng. Tham số “mù” đó ngăn chặn ngân hàng xem nội dung những “đồng tiền” Ui. Cụ thể Bi = Ui ri b mod n. (Làm “mù” theo RSA).

c) Để ngăn ngừa người rút tiền “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ị tiền Ui để kiểm tra, yêu cầu ông A cấp các tham số ai, ci, di , ri tương ứng với những đơn vị Ui mà ngân hàng đã chọn.

d) Alice cung cấp cho ngân hàng các tham số ai, ci, di , ri theo yêu cầu.

e) Dựa vào các tham số do Alice cung cấp, ngân hàng xóa “mù” k/2 đơn vị tiền Ui

đã chọn, kiểm tra để đảm bảo rằng Alice không có gian lận.

Nếu không có gian lận, ngân hàng ký “mù” lên những đơn vị tiền Uj còn lại (những đơn vị Uj mà ngân hàng không xoá “mù”, chính là Bj ), và gửi cho Alice. Chữ ký trên Bj Bj a mod n. Chú ý j ngẫu nhiên ≤ k, và 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 Alice.

Có thể bạn quan tâm!

Xem toàn bộ 72 trang tài liệu này.

f) Alice xoá “mù” đơn vị Bj đã được ngân hàng ký, bằng cách chia Bj a cho rj. Lúc này ông Alice có đồng tiền điện tử với giá trị thật sự.

T = Uj a mod n = f (xj, yj) a mod n

2. Giao thức Thanh toán

a) Alice gửi đồng tiền T tới Bob

b) Bob chọn chuỗi nhị phân nhiên z1 z2… z k / 2 và gửi nó đến Alice

c) Alice phản hồi lại tùy theo trường hợp sau:

+ Nếu zi = 1 thì Alice sẽ gửi đến Bob: ai, ci yi

+ Nếu zi = 0 thì Alice sẽ gửi đến Bob: xi, ai (u (v + i)), di.

d) Bob kiểm tra T là hợp lệ trước khi chấp nhận thanh toán của ông Alice.


3. Giao thức gửi tiền

a) Bob gửi lịch sử thanh toán đến Ngân hàng

b) Ngân hàng kiểm tra chữ kí số của Ngân hàng

c) Ngân hàng kiểm tra đồng tiền này có bị tiêu xài trước đó hay chưa

d) 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ừ Alice. Điều này giúp phát hiện kẻ tiêu xài hai lần

e) Ngân hàng ghi T vào tài khoản của Bob

3.3.1.2 Phân tích – đánh giá

Lược đồ Chaum - Fiat - Naor là lược đồ hệ thống tiền điện tử có tính ẩn danh. 1). Để bảo đảm tính “ẩn danh” của đồng tiền, lược đồ đã sử dụng “chữ ký mùRSA.

2). Để ngăn ngừa người rút tiền “gian lận” giá trị đồng tiền, lược đồ đã sử dụng giao thức “Cắt và chọn”.

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 thì mới ký “mù” các đơn vị Uj còn lại. Theo 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 hợp lệ, nếu k càng lớn.

3). Để ngăn chặn “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.

Nếu ông A tiêu tiền T hai lần, thì ngân hàng có thể lấy được cả hai tham số ai ai (u (v + i)) để tính được u. Đó là số tài khoản của ông A tại ngân hàng, chính vì vậy từ u, ngân hàng có thể truy ra được ông A là người có hành vi tiêu hai lần với cùng một đồng tiề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 z’i khác nhau, là ngân hàng có

thể có chuỗi zi z’i trùng nhau là

1

2k / 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

z’i trùng nhau có thể xem là khó thể xảy ra.


3.3.2 Lược đồ hệ thống Digital Cash

3.3.2.1 Lược đồ

1. Giao thức rút tiền

Giả sử Alice muốn rút 100$, sẽ có các bước thực hiện sau:

a) Sinh một số ngẫu nhiên N (Số Serial của đồng tiền). Số ngẫn nhiên đủ dài để đảm bảo tránh việc 2 serial trùng nhau

b) Alice làm mù N với 1 số ngẫu nhiên bí mật r

c) Alice mã hóa giá trị serial đã được mù hóa với khóa công khai của ngân hàng và gửi tới ngân hàng giá trị của đồng tiền (100$) và serial đã được mù hóa trên

Khi nhận được yêu cầu và các giá trị Alice gửi lên ngân hàng sẽ thực hiện:

a) Giải mã nó với khóa bí mật của mình

b) Ngân hàng kiểm tra xem tài khoản của Alice có đủ để rút đông tiền mà Alice yêu cầu. Nếu không đủ thì gửi lại thông điệp cho Alice với nội dung “Tài khoản của bạn không đủ để rút tiền” còn ngược lại thì sẽ kí lên serial đã được làm mù với khóa bí mật tương ứng với giá trị đồng tiền (Ở đây, mỗi loại tiền sẽ tương ứng với một cặp chữ kí số), trừ vào tài khoản của Alice một lượng tiền bằng lượng tiền được yêu cầu. Sau đó mã hóa nó với khóa công khai của Alice và gửi nó tới Alice

Sau khi nhận được thông điệp Alice sẽ thực hiện:

a) Giải mã thông điệp với khóa bí mật của mình

b) Xóa mù đồng tiền

c) Kiểm tra chữ kí của ngân hàng với khóa công khai của ngân hàng cho đồng tiền có giá trị 100$

d) Lưu đồng tiền lại trong túi của mình


2. Giao thức thanh toán

Giả sử Alice cần trả cho Bob 100$ thì cô ấy cần thực hiện:

a) Tạo một cặp khóa bí mật cho thuật toán mã hóa đối xứng chẳng hạn như DES

b) Lây từ túi của mình đồng tiền có giá trị 100$, sử dụng khóa công khai của Bob. Để mã hóa một thông điệp bao gồm: đồng tiền, khóa bí mật đã tạo ở trên và những thông tin của việc mua bán và gửi tới Bob

Sau khi nhận được thông điệp Bob sẽ thực hiện:

a) Giải mã thông điệp với khóa bí mật của mình và lấy đồng tiền số từ thông điệp

b) Kiểm tra chữ kí của ngân hàng cho đồng tiền số trên với khóa công khai của ngân hàng cho đồng tiền có giá trị 100$ trên

c) Nếu việc kiểm tra lỗi thì sẽ trả lại đồng tiền cho Alice và thông báo “đồng tiền lỗi” với khóa đối xứng bí mật được gửi ở trên

d) Nếu hợp lệ thì Bob sẽ phải gửi ngay đồng tiền đó tới ngân hàng.

e) Nếu việc gửi tiền thành công thì Bob sẽ giao hàng cho Alice

3. Giao thức gửi tiền

Khi nhận được thông điệp gửi tiền của Bob ở trên thì ngân hàng sẽ thực hiện:

a) Giải mã thông điệp với khóa công khai của mình

b) Kiểm tra chữ ký của đồng tiền

c) Nếu chữ ký đúng thì kiểm tra xem đồng tiền đã bị tiêu chưa ở trong cơ sở dữ liệu lưu trữ những đồng tiền đã tiêu

d) Nếu đồng tiền chưa được tiêu thì cộng vào tài khoản của Bob một lượng tiền bằng lượng tiền tương ứng (100$) và thêm đồng tiền trên vào cơ sở dữ liệu lưu trữ những đồng tiền đã tiêu


3.3.2.2 Đánh giá

a) Ưu điểm:

- Chi phí giao dịch thấp.

- Độ an toàn của hệ thống dựa trên hệ mật mã RSA. Phần mềm Cyber Wallet sẽ tự động sinh một cặp khóa RSA. Tất cả những giao tiếp trong hệ thống DigiCash được ký số hoá và mã hoá, dựa trên cấu trúc khoá công cộng.

- Đảm bảo tính ẩn danh của người sử dụng. Trong hệ thống Digicash, cả Alice và Bob đều không cần biết lẫn nhau, và Bob cũng không thể liên kết bất cứ thông tin nào giữa Alice và các đồng tiền mà Alice đã tiêu. Ở đây, Bob chỉ biết rằng các đồng tiền mình nhận được là hợp lệ, còn ngân hàng chỉ có nhiệm vụ phát hành đồng tiền nhưng không thể biết được chủ sở hữu của chúng. Quyền hạn của người sử dụng là rất mạnh bởi vì những đặc trưng ẩn danh của hệ thống được xây dựng trong phần mềm khách hàng (làm mù những đồng tiền trước khi gửi đến ngân hàng kiểm tra).

b) Nhược điểm

- Cả khách hàng và nhà cung cấp đều phải có tài khoản ở cùng một ngân hàng có hỗ trợ tiền điện tử Digicash.

- Ngân hàng phải có một lượng lớn cơ sở dữ liệu để chứa chuỗi số của những đồng tiền. Nếu một số lượng lớn người sử dụng bắt đầu sử dụng hệ thống thì kích cỡ của dữ liệu sẽ trở nên rất lớn và không thể quản lý được.

- Digicash là hệ thống thanh toán trực tuyến, nó đòi hỏi ngân hàng phải tham gia vào tất cả các giao dịch để kiểm tra tính hợp lệ của đồng tiền.

- Nếu dữ liệu về các đồng tiền bị phá hủy (do máy tính hỏng, thông tin bị giải mã, ngân hàng bị phá sản…) thì không có cách nào lấy lại những đồng tiền đã bị mất. Lý do là ngân hàng không có mối liên hệ nào giữa đồng tiền và người sở hữu, trừ phi người sở hữu đồng ý bỏ tính ẩn danh khi sử dụng Digicash

Mặc dù hệ thống Digicash có những điều không thuận lợi, song với những ưu điểm nổi bật mà hệ thống mang lại, Digicash được đánh giá là một hệ thống „tiền điện tử‟ có tiềm năng rất lớn.

Chương 4. CHƯƠNG TRÌNH MÔ TẢ HỆ THỐNG

DIGITAL CASH


4.1 Giới thiệu

Chương 4 sẽ trình bày về chương trình mô tả hệ thống Digital Cash. Hệ thống sẽ mô tả cách thức sử dụng tiền điện tử để thanh toán qua mạng công khai. Hệ thống sẽ có 3 chức năng: withdraw (rút tiền), payment (tiêu tiền), deposit (trả tiền)

4.2 Yêu cầu và kiến trúc của hệ thống

Hệ thống gồm có 3 thành phần: Khách hàng (client), Ngân hàng (server), cơ sở lưu trữ dữ liệu (DBMS). Đối với khách hàng cần có giao diện thân thiện để thuận lợi cho việc thực hiện giao dịch. Khách hàng chỉ cần thực hiện các thao tác đơn giản là có thể thực hiện được các giao dịch. Chẳng hạn khách hàng muốn rút tiền thì chỉ cần bấm vào đồng tiền cần rút thì hệ thống sẽ tự động tạo ra số serial của đồng tiền và làm mù nó, sau đó chuyển đến cho ngân hàng và ngân hàng sẽ tự động ký mù và chuyển trở về cho khách hàng. Việc giao dịch được thực hiện qua giao thức mạng TCP/IP. DBMS là hệ thống lưu trữ cơ sở dữ liệu mà cả khách hàng và ngân hàng đều phải có. Đối với khách hàng thì DBMS lưu trữ các đồng tiền mà mình đã rút và các thông tin lien quan còn đối với ngân hàng thì DBMS lưu trữ các thông tin và tài khoản của khách hàng, và các thông tin về các cuộc giao dịch

4.3 Công cụ thực hiện

Để có thể sử dụng chương trình thì các thiết bị phần cứng cần tối thiểu 1GB dung lượng trống và 128MB bộ nhớ trong

Công cụ Java 2 SDK được sử dụng để tạo hệ thống. Hệ thống chạy trên hệ điều hành window.

Hệ thống cần 2 cơ sở dữ liệu MYSQL để có thể lưu thông tin tài khoản của từng khách hàng và lưu các đồng tiền có của khách hàng


4.4 Hướng dẫn sử dụng hệ thống đối với khách hàng

Giao diện khi đăng nhập sẽ là


Hình 4 1 Giao diện đăng nhập 4 4 1 Cấu hình Để có thể sử dụng được 1

Hình 4. 1: Giao diện đăng nhập


4.4.1 Cấu hình

Để có thể sử dụng được chương trình thì đầu tiên phải cấu hình cho nó với:

+ Client ID: ID của khách hàng muốn sử dụng dịch vụ đó

+ JDBC URL: địa chỉ cơ sở dữ liệu để lưu trữ đồng tiền của khách hàng đó

+ Bank Host: địa chỉ của ngân hàng

+ Bank Port: Cổng mà ngân hàng mở để thực hiện giao dịch

4.4.2 Nhận đồng tiền và khóa công khai của nó

Tiếp theo trong tab Denominations (đồng tiền) để chứa các đồng tiền mà ngân hàng hiện đang có. Mỗi khi click vào nút Refresh thì ngân hàng sẽ gửi về cho khách hàng các loại đồng tiền mà ngân hàng có, đồng thời khóa công khai của đồng tiền đó. Ở đây trong chương trình này thì ngân hang có 8 đồng tiền là 1. 00, 2. 00, 3. 00, 5. 00,

10. 000, 25. 00, 200. 000, 100. 000



Hình 4 2 Giao diện nhận các đồng tiền ngân hàng có 2

Hình 4. 2: Giao diện nhận các đồng tiền ngân hàng có

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 09/05/2022