1/. Chuẩn bị.
- Alice gửi yêu cầu rút tiền tới ngân hàng.
- Ngân hàng chọn ngẫu nhiên r ∈ Zq*, tính α = g2r mod p gửi cho Alice. - Alice chọn x ngẫu nhiên làm thẻ đánh dấu bí mật và tính chữ ký không thể
chối bỏi: ω = αx mod p
- Alice chọn ngẫu nhiên đa thức f(y) = x + a1y mod q và tính: c0 = gx mod p , c1 = ga1 mod p
Alice gửi f(1), g, c0, c1đến ngân hàng theo sơđồ VSS.
Ngân hàng có thể kiểm tra tính đúng đắn của giá trịđược chia sẻ: gf(1) = c0c1 = gxga1 = gx + a1 = gf(1) Khách hàng Ngân hàng ω = αx mod p x là “dấu” bí mật f(y) = x + a1y mod q c0 = gx mod p c1 = ga1 mod p Yêu cầu rút tiền α f(1), g, c0,c1 r ngẫu nhiên r ∈ Zq* α = g2r mod p gf(1) = c0c1 = gxga1 = gx + a1 = gf(1)
Nếu kiểm tra thất bại, yêu cầu sẽ bị từ chối, vì Alice đang cố gắng gian lận “thẻđánh dấu”.
Nếu Alice bị nghi ngờ, ngân hàng sẽ lưu các giá trị này cùng với ID của Alice để
truy vết. Sau đó Alice gửi f(2), g, c0,c1 tới nhà cung cấp. Có thể tìm được “thẻđánh dấu” bí mật từ x từ f(1) và f(2) bằng cách VSS nếu ngân hàng và nhà cung cấp phối hợp với nhau.
Ngân hàng không biết “dấu x” và sẽ gửi α, ω cho Alice.
2/. Giao thức rút tiền.
Với mỗi đồng tiền, Alice chọn ngẫu nhiên δ∈ Zq* và tính: α’ = αδ mod p
ω’ = ωδ mod p
Rõ ràng ởđây, mối quan hệ giữa α’và ω’được giữ nguyên như giữa α và ω:
ω’ = ωδ mod p = (αx) δ mod p = (αδ) x mod p = (α’)x mod p
Alice phải chuyển α thành α’ bằng cách dùng thành phần δ ngẫu nhiên, nếu không ngân hàng có thể dựa vào αđể nhận ra đồng tiền trong lức gửi tiền.
Ngân hàng chọn ngẫu nhiên (k1, k2 ) ∈ Zq ngẫu nhiên. Tính t = g1k1αk2 mod p gửi cho Alice
Ngân hàng cũng quyết định ngày hết hạn hiệu lực Tv của đồng tiền và ký trên nó. Ngân hàng gửi t, Tv, Sigbank(Tv) cho Alice.
* Làm mù:
Alice tạo thông điệp đồng tiền m’ = m || Tv || Sigbank(Tv). Chọn ngẫu nhiên (β1,β2, γ) ∈ Zq và tính:
t’ = tg1β1(α’)β2 νγmod p (ν là khóa công khai mù của Ngân hàng) Tính : c’ = H(m’, α’, t’) và gửi c = c’ – γ mod q cho Ngân hàng.
* Ngân hàng ký:
S1 = k1 – cs1 mod q
S2 = k2 – cs2r-1 mod q thỏa mãn: t = g1S1 αS2 νc mod p
Ngân hàng gửi S1, S2 cho Alice.
* Xóa mù:
S’1 = S1 + β1 mod q S’2 = δ-1 S2 + β2 mod q
* Tính tin cậy của đồng tiền.
Tính tin cậy của đồng tiền có thể thu được bằng cách kiểm tra chữ ký mù. Trong bước này, tất cả các giá trị cần thiết có thểđược lấy ra từ các giá trị lưu trên
đồng tiền và khóa công khai của Ngân hàng. Cụ thể, có thể lấy g1 , v từ bộ khóa công khai (p, q, g1, g2, v), lấy t’, S1’, S2’, α’ từ bộ giá trị ( m’, t’, S1’, S2’, α’, ω’, c0, c1) chứa trong đồng tiền, và tính được c’ từ phương trình: c’ = H’ (m’, α’, t’).
Bất cứ ai cũng có thể kiểm tra tính tin cậy của đồng tiền bằng cách so sánh giá trị
Khách hàng Ngân hàng Với mỗi đồng tiền: Chọn ngẫu nhiên δ∈ Zq* và tính α’ = αδ mod p, ω’ = ωδ mod p tạo thông điệp đồng tiền m’ = m || Tv || Sigbank(Tv). Chọn ngẫu nhiên (β1,β2, γ) ∈ Zq. Tính, t’ = tg1β1(α’)β2 νγmod p
(ν là khóa công khai mù của Ngân hàng) Tính : c’ = H(m’, α’, t’) c = c’ – γ mod q S’1 = S1 + β1 mod q S’2 = S2 + β2 mod q Đồng tiền : (m’ t’, S’1, S’2, α’, ω’, c0, c1 ) t, Tv, Sigbank(Tv) c S1,S2 chọn ngẫu nhiên (k1, k2 ) ∈ Zq Tính t = g1k1αk2 mod p S1 = k1 – cs1 mod q S2 = k2 – cs2r-1 mod q thỏa mãn: t = g1s1 αs2 νc mod p
3/. Giao thức trả tiền.
- Alice gửi các giá trị sau cho Bob.
Đồng tiền (m’ t’, S’1, S’2, α’, ω’, c0, c1 ) Các giá trị f(2) và g của VSS
g’ = gδ modp
D = δ’ + c’Sk Làm chữ ký một lần, δ ngẫu nhiên là số chỉđược dùng một lần. - Bob kiểm tra tính chất chân thực của các giá trị này bằng cách so sánh.
gf(1) = c0c12 = gxg2a1 = gx + 2 a1
- Bob kiểm tra tính chân thực của chữ ký một lần bằng cách so sánh.
Kiểm tra xem: g’ = gDPkc’ mod p = g(δ + c Sk) (g-Sk ) c’ mod p = gδ mod p Trong đó, c’ = H(m’, α’, t’) có thểđược tính từđồng tiền Alice gửi (m’ t’, S’1, S’2, α’, ω’, c0, c1 )
5/. Giao thức gửi tiền và kiểm tra chữ ký:
Trong giao thức gửi tiền, Bon chỉ cần gửi lại đồng tiền cho Ngân hàng. Nếu không có vi phạm, đồng tiền sẽ được chấp nhận. Nếu có vi phạm, Ngân hàng phải thực hiện thêm một hoặc một số tương tác như truy vết đồng tiền hay ngăn chặn “double-spending”.
6/. Phân tích lược đồ Fair tracing
Truy vết không gian lận(Fair tracing).
Rõ ràng, nếu Ngân hàng biết “thẻđánh dấu” bí mật x, ngân hàng có thể dễ dàng kiểm tra đồng tiền với: ω’ = (α’)x mod p
Thực tế, Ngân hàng không thể biết được thông tin này. Do vậy, việc truy vết bất hợp pháp là không thể. Mặt khác, Alice có thểđưa x cho Ngân hàng khi bị tống tiền, khi đó ngân hàng có thể dễ dàng kiểm tra đồng tiền.
Nếu Alice bị nghi ngờ có sai phạm, ngân hàng đã lưu các giá trịđược chia sẻ: f(1), g, c0, c1 vào cơ sở dữ liệ trong khâu chuển bị, khi đó ngân hàng sẽ so sánh c0 và c1
của đồng tiền gửi vào với các giá trịđược lưu trong cơ sở dữ liệu. Nếu các giá trị này giống nhau, Ngân hàng sẽ yêu cầu Bob cung cấp f(2) dưới sự giám sát của luật sư. Từ đó, ngân hàng có thể giải được các giá trị của x, cụ thể.
Ta có: f(1) = x + a1.f(2) = x + 2a1 Æ x = 2f(1) – f(2)
Bob hoàn toàn không được lợi gì trong giao thức này, vì vậy, ngân hàng không thể truy vết được đồng tiền mà không có sự hợp tác của bên thứ ba. Do vậy, việc truy vết được gọi là không gian lận
- Phát hiện và ngăn chặn “double-spending”.
Mỗi đồng tiền có một thời hạn sử dụng nhất định, do vậy, tất cả các đồng tiền phải được gửi trở lại ngân hàng trước ngày đồng tiền hết hiệu lực thanh toán Tv và ngân hàng duy trì việc lưu trữ các đồng tiền đã tiêu cho đến thời điểm Tv.
Trong hệ thống trực tuyến, khi Bob nhận được tiền, anh ta có thể yêu cầu ngân hàng kiểm tra xem đồng tiền đã có trong danh sách các đồng tiền đã tiêu hay chưa, nếu có, Bob sẽ từ chối giao dịch. Do vậy, Bob hoàn toàn không cần yêu cầu chữ ký một lần của Alice.
Trong hệ thống ngoại tuyến, việc ngăn chặn “double-spending” trong thời gian thực là không thể, nhưng chúng ta hoàn toàn có thể phát hiện hành vi “double- spending” bằng cách sử dụng các kỹ thuật giống như trong hệ thống trực tuyến thông qua các đồng tiền gửi vào dựa trên ngày tiền hết hiệu lực Tv . Tuy vậy, chúng ta không biết ai đã tiêu một đồng tiền nhiều lần, vì các giá trị (c0, c1) chỉ là một chứng cứ và ngân hàng không lưu tất cả các danh sách này.
Giải pháp cho vấn đề này là chữ ký một lần. Xem xét lại giao thức trả tiền, ta thấy rằng Alice đã chọn một số ngẫu nhiên dùng một lần duy nhất δ cho mỗi đồng tiền, và nhận chữ ký mù của ngân hàng. Vì thế, δ là một hệ số mù quan trọng và được kết hợp với chữ ký mù. Nếu Alice cố tình sử dụng nó hơn một lần cho thông điệp đồng tiền khác m’, khóa bí mật của Alice sẽ bị tìm ra theo cách sau:
D’ = δ + c’Sk
Như vậy Alice sẽ không cố gắng sử dụng một đồng tiền nhiều hơn một lần. Nếu không, vào ngày Tv, hành vi “double-spending” sẽ bị phát hiện, và ngân hàng sẽ kết hợp với Bob để truy ra danh tính của Alice.
Chú ý:
Chúng ta có thể biến đổi lược đồ trên bằng cách thêm vào sự tham gia của một TTP (Trusted Third Party). Trong khâu chuẩn bị, TTP quyết định thẻ dánh dấu x và phân phối giá trị bí mật cho Alice và ngân hàng. Các giao thức khác hoàn toàn không cần thay đổi. TTP sẽđưa ra giá trị của x khi cần thiết và khi được yêu cầu một cách hợp pháp.
Khâu chuẩn bị được thay đổi cụ thể như sau: + Alice gửi yêu cầu rút tiền tới ngân hàng.
+ Ngân hàng chọn ngẫu nhiên r ∈ Zq*, tạo phần tử sinh mới α = g2r mod p, gửi nó cho Alice và TTP.
+ TTP chọn x ngẫu nhiên làm thẻđánh dấu và tính ω = αx mod p. + TTP chọn một đa thức ngẫu nhiên f(y) = x + a1y mod p và tính. c0 = gx mod p
c1 = ga1 mod p
+ TTP gửi f(1), g, c0, c1 cho ngân hàng và f(2), g, c0, c1 cho Alice theo sơđồ VSS. + Thẻđánh dấu bí mật x có thểđược giả ra nhờ f(1) và f(2) sử dụng sơ đồ VSS. + Vậy, Ngân hàng không biết giá trị của x, đồng thời α và ωđược chuyểđến
Alice Tính: ω = αx mod p ω, f(2), g, c0, c1 f(y) = x + a1y mod p f(1),g, c0 ,c1 c0 = gx mod p Yêu cầu rút tiền. c1 = ga1 mod p Phần tử sinh mới α
Hình 12: Giai đoạn chuẩn bị với TTP.
TTP
Alice