You are on page 1of 42

TIỀN MẶT ĐIỆN TỬ

Trần Quang Đức


Tổng quan
• Tiền mặt điện tử (Electronic Cash) là một trong những
hình thức thanh toán đầu tiên sử dụng trong thương mại
điện tử.

• First Virtual (1994): Hệ thống lưu trữ giá trị bảo mật đầu
tiên dựa trên cơ sở thẻ tín dụng, các khoản tiền gửi và số
PIN. Ngừng hoạt động vào năm 1998.
Tổng quan
• DigiCash (1996): Hệ thống lưu trữ giá trị trả trường trên
cơ sở mã hóa hoặc yêu cầu sử dụng ví tiền số hóa để lưu
giữ tiền điện tử. Hệ thống ngừng hoạt động năm 1998 và
hoạt động trở lại với tên mới e-Cash.

• Millicent (1996): Sử dụng trong các thanh toán có giá trị


từ $0.001 đến $5. Giao thức Millicent được giới thiệu
năm 1995 dưới dạng dự án của Compaq và được mua lại
bởi Digital Equipment Corporation. Millicent ứng dụng
mật mã khóa đối xứng.
Hệ thống trực tuyến vs. ngoại tuyến
• Hệ thống thanh toán ngoại tuyến cần truy cập đến máy
chủ dịch vụ khi thực hiện giao dịch.

• Hệ thống thanh toán ngoại tuyến không yêu cầu truy cập
đến máy chủ để ủy quyền giao dịch. Giao dịch được thực
hiện mà không cần chịu sự can thiệp của bên thứ ba.
Ẩn danh vs. Không ẩn danh
• Trong hệ thống không hỗ trợ cơ chế ẩn danh, mỗi giao
dịch cần kiểm tra và xác thực trước khi thực hiện thanh
toán. Hệ thống sử dụng thuật toán mã hóa, chữ ký điện
tử và cho phép ngân hàng có thể truy xuất, phát hiện chi
tiêu kép.

• Hệ thống hỗ trợ ẩn danh trực tuyến/ngoại tuyến sử dụng


chữ ký mù/khóa bí mật chia sẻ trước. Hệ thống phù hợp
để thực hiện những thanh toán có giá trị nhỏ những gặp
vấn đề chi tiêu kép.
Nguyên tắc hoạt động
• Người mua mở tài khoản tại ngân hàng. Cơ sở chấp nhận
thẻ có tài khoản trong nhiều ngân hàng để đáp ứng nhu
cầu giao dịch của khách hàng.

• Người mua gửi E-cash trong tài khoản vào ví điện tử (hệ
thống thanh toán trực tuyến) hoặc chuyển đổi thành
token (hệ thống thanh toán ngoại tuyến) và dùng E-cash
để giao dịch hàng hóa, dịch vụ với cơ sở chấp nhận thẻ.

• Ngân hàng xác thực theo yêu cầu của cơ sở chấp nhận
thẻ. Cơ sở chấp nhận thẻ cung cấp hàng hóa, dịch vụ và
nhận tiền từ ngân hàng.
First Virtual
• Người mua mở tài khoản First Virtual. First Virtual cung
cấp cho người mua một số định danh thay thế cho số thẻ
tín dụng.

• Người mua thực hiện giao dịch với những cơ sở chấp


nhận thẻ chấp nhận sử dụng First Virtual. Người mua
đưa số định danh.

• Cơ sở chấp nhận thể gửi thư yêu cầu giao dịch đến máy
chủ First Virtual kèm theo số tiền cần thanh toán. Máy
chủ chuyển tiếp thư đến người mua để xác nhận.
First Virtual
• Người mua lựa chọn YES/NO/FRAUD.

• First Virtual trả tiền cho cơ sở chấp nhận thẻ trong


trường hợp giao dịch hợp lệ.

• Phí giao dịch được thanh toán bởi người mua và cơ sở


chấp nhận thẻ.

• First Virtual là hệ thống thanh toán trực tuyến, không hỗ


trợ cơ chế ẩn danh. E-cash có thể trao đổi giữa các cá
nhân.
First Virtual
• First Virtual không hỗ trợ mã hóa cũng như chữ ký điện
tử trong quá trình trao đổi giữa người mua-cơ sở chấp
nhận thẻ, cơ sở chấp nhận thẻ-First Virtual, First
Virtual-người mua. First Virtual ID có thể bị can thiệp
hoặc thay đổi.

• Mặc dù First Virtual không hỗ trợ, khách hàng có thể sử


dụng PGP để mã hóa thư điện tử, cơ sở chấp nhận thẻ có
thể tích hợp giao thức SSL để bảo mật thông điệp gửi và
nhận.
CyberCash
• Hệ thống CyberCash sử dụng ví tiền điện tử như phương
tiện trung gian thay thế cho thẻ tín dụng, tiền mặt, séc và
CyberCoin (Hệ thống thực hiện giao dịch với giá trị
thanh toán ít hơn $10).

• Người mua tải phần mềm ví điện tử, tạo kết nối với cơ sở
chấp nhận thẻ, CyberCash và ngân hàng. Người mua
nhận khóa RSA với độ dài 768-bit và dùng mật khẩu để
bảo vệ khóa.
CyberCash
• Người mua thực hiện thanh toán bằng cách gửi ví điện tử
qua phần mềm kết nối. Hệ thống kích hoạt CyberCash
của cơ sở chấp nhận thẻ. Cơ sở chấp nhận thẻ gửi người
mua hóa đơn và thông tin giao dịch.

• Người mua ký hóa đơn và chèn thêm tên, số thẻ tín dụng
và thời hạn thẻ. Ví điện tử mã hóa tài liệu đã ký bằng
khóa công khai CyberCash và gửi tài liệu đến CyberCash
cũng như cơ sở chấp nhận thẻ.
CyberCash
• Cơ sở chấp nhận thẻ nhận tài liệu, chèn thêm thông tin
định danh, giá trước khi ký và gửi đến CyberCash.

• CyberCash so sánh giá trên hai tài liệu đã ký. Nếu như
nhau, CyberCash hướng dẫn thủ tục hỗ trợ ngân hàng
thanh toán. Thông tin chi tiết giao dịch được gửi đến cơ
sở chấp nhận thẻ.

• Cơ sở chấp nhận thẻ cung cấp hàng hóa và dịch vụ.


CyberCash
• CyberCash là hệ thống thanh toán trực tuyến không hỗ
trợ cơ chế ẩn danh. Mỗi giao dịch đều được lưu trữ, có
thể bị truy xuất nguồn gốc và cần bên thứ ba xác thực.

• CyberCash không bảo vệ quyền riêng tư của người mua.


CyberCash hỗ trợ thanh toán giữa người mua-người
mua, người mua-cơ sở chấp nhận thẻ và chỉ thực hiện tại
máy tính có cài đặt phần mềm CyberCash.
DigiCash
• Được thiết kế bởi David Chaum (1994). DigiCash sử
dụng chữ ký điện tử để mã hóa và chữ ký mù để xác thực
để đảm bảo an toàn cho giao dịch, người mua, cơ sở chấp
nhận thẻ và ngân hàng.

• DigiCash hỗ trợ ẩn danh cho cả dịch vụ trực tuyến và


ngoại tuyến và được thay thế bởi eCash với thuật toán
mã hóa RSA.
eCash
• Người mua cần mở tài khoản tại ngân hàng có cung cấp hệ
thống thanh toán eCash trực tuyến.

• Phần mềm eCash tạo ra cặp khóa trong lần thực thi đầu tiên
trên máy tính. Người mua giữ khóa bí mật, khóa công khai
được cung cấp cho ngân hàng, cơ sở chấp nhận thể và người
mua khác để phục vụ cho việc xác thực.

• Để đúc xu, người mua lựa chọn giá trị ngẫu nhiên x đại diện
cho mệnh giá cần thanh toán. Máy tính lựa chọn một yếu tố
ngẫu nhiên r, thực hiện làm mù b=blind(x, r) và mã hóa
bằng khóa công khai trước khi gửi đến ngân hàng.
eCash
• Ngân hàng giải mã thông điệp, trích số tiền tương ứng từ
tài khoản của người mua. Ngân hàng ký lên b được bằng
khóa cá nhân sb=sign(b,kRB) và gửi lại cho người mua.
Người mua thực hiện gỡ mù trước khi dùng đồng xu.

• eCast được gửi đến cơ sở chất nhận thẻ. Cơ sở chấp nhận


thẻ chuyển tiếp cho ngân hàng để xác minh và hoàn
thành giao dịch.
Chữ ký mù (Chaum)
• Alice muốn có chữ ký của Bob với thông điệp M.

• Alice nhân M với một số (nhận tố mù).

• Alice gửi cho Bob thông điệp đã được làm mù.

• Bob ký lên thông điệp bằng khóa cá nhân và gửi lại cho
Alice.

• Alice xóa mù và có thông điệp M đã được ký bởi Bob.


Chữ ký mù
• Alice muốn có chữ ký của Bob với thông điệp M. Giả
thiết Bob sử dụng cặp khóa (e, n) và (d, n), (d, n) là khóa
cá nhân.

1) Alice chọn một giá trị ngẫu nhiên r, làm mù nội dung
thông điệp: b = (x.re) mod n và gửi cho Bob.
2) Bob ký thông điệp bằng cách thực hiện tính toán sb =
(b)d mod n = (xd.r) mod n
3) Alice xóa mù chữ ký: s = sb.r−1 mod n = xd mod n
Minh họa đúc eCash
• Mỗi đồng xu của Alice đều có số định danh serial#

• Ngân hàng lưu trữ cặp khóa tương ứng với mệnh giá của đồng
xu. Cặp khóa cho đồng xu $5 gồm (e5, n5) và (d5, n5).

• Alice chọn một giá trị ngẫu nhiên r và làm mù nội dung của
đồng xu: (serial# re5) (mod n5).

• Ngân hàng ký lên đồng xu bằng khóa cá nhân: (serial# re5)d5


(mod n5).

• Alice xóa mù chữ ký và thu được (serial#)d5 (mod n5) tương


ứng với {serial#} SKBank5.
Chi tiêu eCash
• Bob gửi yêu cầu thanh toán theo đơn hàng của Alice
payreq = {currency, amount, timestamp, merchant_bankID,
merchant_accID, description}

• Alice phê duyệt yêu cầu


payment = {payment_info, {coins, H(payment_info)} KUB
payment_info = {Alice_bank_ID, amount, currency, ncoins,
timestamp, merchant_ID, H(description), H(payer_code)}
Chi tiêu eCash
• Bob gửi phản hồi của Alice đến ngân hàng
deposit = {{payment}SigBob} KUB

• Ngân hàng giải mã thông điệp, kiểm tra thông tin và xác
minh thanh toán.

• Ngân hàng gửi tiền vào tài khoản và hóa đơn cho Bob
deposit_ack = {deposit_data_amount} SigBank
Xác minh thanh toán
• Trước khi thanh toán, Alice tạo mã payer_code, băm
payer_code với hàm H và chèn kết quả thu được vào
payment_info.

• Bob không thể thay đổi giá trị H(payer_code) bởi


payment_info đã được mã hóa bằng khóa công khai của ngân
hàng.

• Ngân hàng lưu giá trị H{payer_code} trước khi hoàn tất giao
dịch.

• Nếu Bob gian lận, Alice có thể xác minh bằng cách gửi mã
payer_code đến ngân hàng.
Ngăn chặn chi tiêu kép ngoại tuyến
• Giả thiết hệ thống hoạt động ngoại tuyến, làm sao Bob có
thể kiểm tra nếu đồng xu đã bị chi tiêu trước đó?

• Biện pháp 1: Tạo phương tiện, như thẻ thông minh có


khả năng ngăn chặn một đồng xu bị sử dụng nhiều lần.

• Biện pháp 2: Giao thức hỗ trợ xác định đối tượng gian
lận và đảm bảo tính ẩn danh.
Giao thức ngăn chặn chi tiêu kép
• Đảm bảo tính ẩn danh của Alice

• Xác định được danh tính nếu Alice gian lận

• Xác định được danh tính nếu Bob gian lận nhưng vẫn
đảm bảo tính ẩn danh của Alice

• Đảm bảo an toàn cho ngân hàng ngay cả khi Alice và Bob
cấu kết để thực hiện hành vi gian lận
Phương thức chia sẻ bí mật
• Nguyên tắc chung: Chia thông điệp thành n phần, thông
điệp chỉ có thể xác định được nếu sở hữu tối thiểu m phần.

• Giả thiết s là giá trị bí mật trong trường Galois mod p, trong
đó p là số nguyên tố có giá trị đủ lớn.

• Chọn m-1 phần tử ai để tạo thành đa thức


f(x) = s + a1x + a2x2 + …. + am-1xm-1

• Chọn n số nguyên xi và tính toán giá trị f(xi) tương ứng.

• Bất cứ m điểm nào cũng có thể sử dụng để xác định hàm


đường cong bậc m-1 và xác định giá trị của s.
Bit Commitment
• Alice muốn “cam kết” giá trị M. Giá trị M được tiết lộ với
Bob để chứng minh Alice không thực hiện thay đổi M.

• Ý tưởng: Alice viết M lên một mẩu giấy, khóa nó trong


chiếc hộp bí mất và đưa chiếc hộp cho Bob. Alice giữ chìa
khóa.

• Khi Bob yêu cầu xác minh, Alice sử dụng khóa để mở


chiếc hộp.
Bit Commitment
• Trong mật mã, Alice muốn cam kết giá trị M với Bob

• Alice chọn một số nonce r (ngăn chặn tấn công phát lại)

• Alice gửi Bob y = H(r||M) (H là hàm băm một chiều)

• Alice gửi Bob giá trị y

• Khi Bob muốn biết M, Alice gửi M và r

• Bob tính toán H(r||M) và kiểm tra kết quả thu được. Nếu
đúng, M chính là giá trị trong lời cam kết ban đầu của Alice
Giao thức Chaum
• Chia danh tính của Alice (một bí mật) thành hai mẩu thông
tin. Danh tính của Alice không bị tiết lộ nếu chỉ có một mẩu
thông tin.

• Chèn thêm một mẩu thông tin vào đồng xu được chi tiêu theo
nguyên tắc Bit Commitment.

• Kiểm tra nếu Alice gian lận bằng phương pháp Cut-and-
Choose.

• Nếu ngân hàng nhận được cùng một đồng xu từ hai cơ sở


chấp nhận thẻ khác nhau, ngân hàng có thể xác định được
hành vi gian lận của Alice.
Cut-and-Choose
• Alice được yêu cầu cung cấp một mẩu bí mật trong mỗi đồng
xu. Đồng xu được làm mù. Sử dụng phương pháp Cut-and
Choose để xác minh nếu Alice thực hiện hành vi gian lận.

• Nếu Alice muốn chi tiêu 100 đồng xu, ngân hàng yêu cầu Alice
gửi 200 đồng xu.

• Ngân hàng giữ lại ngẫu nhiên 100 đồng xu và yêu cầu Alice
gửi lại nhân tố làm mù tương ứng.

• Ngân hàng gỡ mù và kiểm tra nếu mỗi đồng xu có lưu một


mẩu thông tin bí mật.
Cut-and-Choose
• Nếu Alice gửi 2n đồng xu đến ngân hàng, k đồng xu
không có mẩu thông tin bí mật. Tìm xác suất mà ngân
hàng không chọn bất cứ đồng xu nào trong số k đồng xu
trên. Giả thiết n=4 và k=1, k=2, k=4.

• Giả thiết n=100 và k=1, k=10 và k=100


Giao thức Chaum
• Nếu đồng xu chỉ được chi tiêu một lần, danh tính của
Alice không bị tiết lộ.

• Nếu đồng xu bị chi tiêu kép, ngân hàng có thể xác định
Alice gian lận.

• Ngân hàng có thể kiểm tra số seri để xác minh nếu Bob
có hành vi gian lận.
Giao thức Chaum
• u = Số tài khoản của Alice

• r0, r1, …, rm-1 là m số ngẫu nhiên

• (uli, uri) = Bí mật của u được chia thành hai mẩu thông tin, nếu
được kết hợp có thể xác định được u. Ví dụ: (ri XOR u, ri)

• vli = bit commitment của uli

• vri = bit commitment của uri

• Đồng xu có:
▫ Giá trị
▫ Số định danh
▫ (vl0,vr0), (vl1,vr1), …, (vlm-1,vrm-1)
Giao thức Chaum: Đúc xu
1
2
Alice Bank
3
4

1. Alice gửi số tài khoản và 2n đồng xu đã làm mù đến ngân hàng


2. Ngân hàng yêu cầu Alice cung cấp giá trị gỡ mù cho n đồng xu
(chọn ngẫu nhiên trong 2n đồng xu)
3. Alice gửi giá trị gỡ mù và cam kết cho n đồng xu
4. Nếu xác minh thành công, ngân hàng ký lên n đồng xu còn lại
Giao thức Chaum: Chi tiêu
1
2
Alice Bob
3

1. Alice ký lên đồng xu C


2. Véctơ ngẫu nhiên B với độ dài m
3. Nếu Bi=1, gửi giá trị uli, ngược lại gửi giá trị uri, kèm theo vli hoặc
vri. Cơ sở chấp nhận thẻ xác minh tính hợp lệ của ul và ur.
Giao thức Chaum: Thanh toán
1

Bob 2 Bank

1. Đồng xu được ký, véctơ B và giá trị uli hoặc uri mà Bob nhận được
từ Alice.
2. Ngân hàng thực hiện xác minh. Trường hợp thất bại, cơ sở chấp
nhận thẻ bị phát hiện gian lận nếu B bị trùng lắp. Ngược lại, Alice
bị phát hiện gian lận nếu ngân hàng có đủ cặp uli và uri (thuộc hai
véctơ B khác nhau) để xác định u.
Giao thức Chaum
• Nếu số ngẫu nhiên của Alice có độ dài b bit. Tìm xác suất
mà Alice có thể thực hiện hành vi chi tiêu kép mà không
bị phát hiện.
Ví dụ minh họa
• Tài khoản của Alice là 12, giá trị 0x0C=00001100.
• Alice chọn giá trị 100 và giá trị làm mù 5.
• Alice thực hiện làm mù thông điệp 100 và gửi đến ngân hàng 100x5 = 500.
• Alice chọn một số b (b=6) và tạo ra b số ngẫu nhiên tương ứng với đồng xu.
• Ví tiền số hóa thực hiện XOR mỗi số ngẫu nhiên và tài khoản của Alice.

i acct random acct  random


0 0C 1B 17
1 0C 13 1F
2 0C 09 05
3 0C 05 09
4 0C 2B 27
5 0C 11 1D
Ví dụ minh họa
• Bob nhận được đồng xu của Alice. Bob chọn số ngẫu nhiên b-bit, 111010.
• Mỗi vị trí bit là 1, ví tiền số hóa tiết lộ số ngẫu nhiên của Alice tại đó.
• Mỗi vị trí bit là 0, Bob nhận được kết quả XOR của số ngẫu nhiên tại đó.
• Ví tiền của Bob gửi cột cuối cùng đến ngân hàng để thực hiện thanh toán.

i acct random acct  random Bob’s bit Bob receives


0 0D 1B 17 0 17
1 0D 13 1F 1 13
2 0D 09 05 0 05
3 0D 05 09 1 05
4 0D 2B 27 1 2B
5 0D 11 1D 1 11
Ví dụ minh họa
• Charlie nhận được đồng xu của Alice. Charlie cũng chọn số 010000.
• Mỗi vị trí bit là 1, ví tiền số hóa tiết lộ số ngẫu nhiên của Alice tại đó.
• Mỗi vị trí bit là 0, Bob nhận được kết quả XOR của số ngẫu nhiên tại đó.
• Ví tiền của Charlie gửi cột cuối cùng đến ngân hàng để thanh toán.

i acct random acct  random Charlie’s bit Charlie receives


0 0D 1B 17 0 17
1 0D 13 1F 0 1F
2 0D 09 05 0 05
3 0D 05 09 0 09
4 0D 2B 27 1 2B
5 0D 11 1D 0 1D
Ví dụ minh họa
• Ngân hàng từ chối trả tiền cho Charlie vì đồng xu đã được chi trả cho Bob.
• Ngân hàng tổng hợp thông tin từ Bob và Charlie để tìm ra danh tính Alice.

i acct random acct  random random  acct acct holder


 random
0 0C 17
1 0C 13 1F 0C Alice
2 0C 05
3 0C 05 09 0C Alice
4 0C 2B
5 0C 11 1D 0C Alice
Tương lai của eCash
• Nhược điểm của DigiCash, eCash: Không tiện lợi, khả
năng giao dịch hạn chế, quá trình giao dịch phực tạp đối
với người bán và người mua.

• eCash được thay thế bởi các hệ thống thanh toán ngang
hàng (P2P) như PayDirect của Yahoo, MoneyZap và
PayPal.

• MoneyZap (1999): Hệ thống chuyển tiền mặt trả phí của


Western Union.
Tương lai của eCash
• PayPal (1999): Hệ thống thanh toán trực tiếp giữa các cá
nhân miễn phí.

• Hạn chế của PayPal và các hệ thống thanh toán trực


tuyến hiện nay là phải thực hiện qua trung gian và địa
chỉ điện tử cụ thể. Tuy nhiên, PayPal vẫn là hình thức
thanh toán phổ biến đáp ứng yêu cầu thanh toán các giao
dịch giá trị nhỏ trên Internet hiện nay.

You might also like