Professional Documents
Culture Documents
1. Electronic Cash
- Advantage: small-medium purchases (<10$)
+) Micropayments (<1$)
+) Offline
Disadvantages:
→ Tính ẩn danh là tuyệt đối nhưng người mà double spending có thể bị truy vết
- Serial numbers có thể cho phép lần vết để ngăn chặn rửa tiền
→ Đảm bảo tính ẩn danh mà vẫn có thể xác thực (anonymity + authentication)
Trong hệ chữ ký thường, người ký phải được nắm rõ nội dung văn bản cần ký, có thể lưu bản sao. Với chữ
ký số, vấn đề an toàn nhắc lại ở đây, khi B ký vào M do A tạo ra, việc A có thể bóp méo văn bản M sau đó
phải được phòng chống
→ Nói cách khác, khi A xin được từ B văn bản có chữ ký 𝑀||𝑆 = 𝑆𝐵 (𝑀) , A sẽ không thể tạo ra một cặp
𝑀′ ||𝑆 ′ sao cho 𝑆 ′ = 𝑆𝐵 (𝑀′ )
Trong hệ chữ ký mù (blind signature) thì ngược lại, người ký sẽ không được làm chủ thực sự lên nội dung
mình ký.
→ Nói cách khác, khi B ký lên M do A tạo ra, sau đó A có thể tạo ra 𝑀′ ||𝑆 ′ = 𝑆𝐵 (𝑀′), mà B thì không biết
được 𝑀′ dù đã lưu M trước đó.
Tuy nhiên, hệ chữ ký này đảm bảo cho người ký B khả năng kiểm tra tính hợp lệ của thông tin cần ký.
Có thể hiểu như cho hợp đồng vào phong bì (làm bằng giấy than) và khóa lại
→ nhà băng kí vào bên ngoài phong bì (thì nó sẽ kí luôn bên trong)
→ Mặc dù B không biết được nội dung thật của văn bản này, nhưng có thể đánh giá được tính
trung thực của A (không tạo ra gì xấu cho B) bằng một phép kiểm tra challenge-response.
Ví dụ: ví dụ đơn giản thể hiện ứng dụng của blind signature trong e-cash
Alice khi muốn đưa nhà băng ký lên một văn bản x nào đó, sẽ sử dụng một số p (bí mật). Thay vì
đưa thẳng cho nhà băng giá trị băm h(x) thì đưa
ℎ(𝑥)𝑝3 (𝑚𝑜𝑑 𝑁)
Nhà băng ký lên (tức là tính căn bậc 3 của giá trị đó) (chỉ nhà băng làm được vì mình nó nắm được
PTTSNT của N) rồi trả cho Alice
ℎ(𝑥)1/3 𝑝 (𝑚𝑜𝑑 𝑁)
Alice chỉ việc chia giá trị này cho p thì thu được ℎ(𝑥)1/3 tức là chữ ký của nhà băng (trong khi nhà
băng không hề biết được h(x))
1
→ Alice có (𝑥, ℎ(𝑥)3 ) như một đồng tiền mặt, khi đi mua hàng có thể trả cho người bán hàng.
Người bán hàng sẽ kiểm tra một đồng tiền (𝑎, 𝑏) bằng cách so sánh ℎ(𝑎) với 𝑏 3 . Nếu hợp lệ thì
chấp nhận đồng tiền đó.
→ Sau này đồng tiền điện tử đó sẽ được chủ cửa hàng gửi về nhà băng để được thánh toán vào
tài khoản anh ta.
- Ý tưởng:
Người tiêu tiền tự tạo ra, ẩn ID của người ta vào (tại sao? → để cung cấp tính ẩn danh)
- Người ta muốn off-line và ẩn danh và security chống double spending cho E-cash
Phát hành từ nhà băng chuyển nhiệm vụ cho người tiêu dùng (nhưng mà đồng tiền vẫn phải có chữ ký của
nhà băng thì mới hợp pháp) → sinh ra chữ ký mù
- Tạo ra như một cặp số (a,b) mà thỏa mãn quan hệ mà khớp với ID của người này R(a,b,ID) = True, ví dụ
b/a = ID (có vô số cặp như vậy)
- Thu hết 10 cái, chọn 1 cái ngẫu nhiên cho vào túi và bảo C mở ra 9 phong bì ra (show nội dung
a,b,ID, a2, b2, a3, b3... ra)
- Nhà băng kiểm tra xem 9 cái có lưu ID xịn không (quan hệ B(a,b,ID) = True)
Ví dụ: Ẩn ID đúng một lần → người ta hỏi cấu trúc mình sẽ trả lời → không bị lộ ID
+) Vì kiểu micro thì thường click nhanh → thanh toán phải nhanh (dùng chữ kí điện tử thì chậm)
+) Sử dụng hàm băm (light-weight crypto tools) vì hiệu quả. Tất nhiên không bảo mật như RSA
verifications = 10,000 hash, mã hóa đối xứng)
- bấm từng trang thì dùng hàm băm, nhưng mà thoát ra vào lại thì dùng chữ kí điện tử để kiểm tra cả một
session.
+) Môi giới (cò) trung gian (nói đến thường là một công ty) (user, vendor thường là nhỏ lẻ)
(Cung cấp giải pháp mạnh, scrip là một loại tiền riêng nội bộ, nó đơn giản cho phép user tự tạo ra để dùng
→ khi tạo ra cần có sự cho phép broker (ủy nhiệm phát hành)
(Broker name; U; Au; PKu; Expiration date; User information (card limit…) , Broker private key)
→ Lúc này nếu đi mua vendor thì vendor sẽ chỉ đưa hàng cho Au thôi.
- User phải tạo cam kết với vendor là chuỗi W = {Wo , …., WN } chỉ tiêu cho vendor này thôi, bằng cách
gửi commitment
User → Vendor
- Vendor sẽ dùng PKu (để mở khóa commitment rằng chỉ tiêu cho vendor này thôi) và PKb (để mở khóa
Cu) để biết rằng U đang có quyền được tiêu đống payword này.
(Chú ý hai lần mở khóa này là dùng RSA sign verification ~ 10,000 hash)
- User tiêu payword theo thứ tự W1, ..., Wn. Để tiêu Wi thì
user -> vendor token (unsigned) P {Wi, i}
- Vendor nhận token và kiểm tra token hợp lệ hay không bằng cách hash Wi I lần xem nó có bằng Wo hay
không (Vendor đã thấy Wo vì vừa dùng PKu để mở commit M ra mà)
- Broker sẽ
+) Xác thực cam kết M bằng PKu → thu được Wo (để check)
+) Thực hiện hash L lần xem WL kia có bằng Wo mới thu được hay không.
- Nếu có, broker thanh toán cho vendor và xuất hóa đơn vào thẻ tín dụng của User hoặc trừ tiền từ tài
khoản ngân hàng của User.
Bài làm
- Vendor sẽ dùng PKu (để mở khóa commitment rằng chỉ tiêu cho vendor này thôi) và PKb (để mở khóa
Cu) để biết rằng U đang có quyền được tiêu đống payword này.
→ Vendor mất 2 lần verify bằng khóa chữ kí, mỗi lần tốn = 10,000 hash
Sau đó, vendor sẽ hash 1000 lần xem đồng tiền user đưa có bằng Wo hay không (tốn 1000đ)
→ Tốn 21,000đ