2.2.2. Ứng dụng của chữ ký mù RSA trong giai đoạn rút tiền
2.2.2.4. Phòng tránh khai man giá trị đồng tiền
Trong giao dịch bằng tiền điện tử, giá trị đồng tiền phụ thuộc vào yêu cầu giá trị tiền cần rút của chủ tài khoản. Để phòng tránh việc chủ tài khoản khai man giá trị đồng tiền làm mù đồng tiền, ta có thể thực hiện theo hai phương pháp sau:
Phương pháp 1: Với mỗi giá trị đồng tiền, ngân hàng dùng một khóa ký Giả sử:
Với đồng tiền 1 triệu đồng ngân hàng dùng khóa ký k1 Với đồng tiền 2 triệu đồng ngân hàng dùng khóa ký k2
…
Với đồng tiền 10 triệu đồng ngân hàng dùng khóa ký k10.
…
Nếu ông A xin rút từ ngân hàng 5 triệu, thì khi ông A gửi đồng tiền đã bị làm
“mù” tới ngân hàng, ngân hàng dùng khóa k5 để ký.
Khi ông A khai man đồng tiền là 10 triệu, thì ngân hàng vẫn dùng khóa ký k5(bí mật) để ký lên đồng tiền và gửi lại cho ông A. Khi ông A giao dịch và thanh toán cho ông B đồng tiền này (đồng tiền khai man 10 triệu đã được ký bằng khóa k5). Để đảm bảo an toàn, không nhận phải tiền giả, ông B tiến hành kiểm chữ ký của ngân hàng trên đồng tiền. Ông B sẽ sử dụng khóa công khai tương ứng với k5 để thực hiện kiểm tra, kết quả nếu có khai man thì việc khai man này sẽ bị lộ.
Sử dụng chữ ký mù theo sơ đồ ký số RSA, các bước ký lên đồng tiền được tiến hành theo lược đồ sau:
Bảng 2.2: Các bước ký mù lên đồng tiền sử dụng nhiều khóa ký
Bước A - Người rút tiền Ngân hàng
1 Làm mù x (chọn khóa công khai của ngân hàng tương ứng với giá trị tiền mình cần rút), được z:
z = Blind(x)
Gửi z cho ngân hàng cùng với yêu cầu rút tiền.
Xác thực chủ tài khoản và kiểm tra tính hợp pháp của yêu cầu rút tiền
2 - Dựa trên yêu cầu rút tiền, lựa chọn
khóa ký tương ứng với giá trị tiền cần rút.
- Tiến hành ký số lên đồng tiền z, được y. Gửi y cho A.
- Trừ một lượng tiền tương ứng trong tài khoản của A.
3 - Sử dụng khóa công khai tương ứng với khóa mà ngân hàng ký để xóa mù y được chữ ký của ngân hàng trên đồng tiền:
Unblind(y) = sign(x).
Khi đó đồng tiền được đại diện bởi:
( x, sign(x))
Phương pháp 2: Dùng phương pháp “CUT and CHOICE” (phương pháp xác xuất)
Ý tưởng của giao thức có thể được tóm tắt như sau:
Để có một đồng tiền có giá trị thì ông A phải tạo k đồng tiền đồng giá, ký hiệu là C1, C2,…,Ck. Mỗi đồng tiền đều được gắn cùng một định danh, sự khác nhau duy nhất giữa chúng là số seri.
A tiến hành làm “mù” các đồng tiền này và gửi chúng đến cho ngân hàng.
Ngân hàng chọn ngẫu nhiên k-1 đồng tiền và yêu cầu A cung cấp các thông tin tương ứng để khử “mù” những đồng tiền này. Sau đó, ngân hàng khử “mù” và kiểm tra tính hợp lệ của các đồng tiền. Nếu tất cả đều hợp lệ, ngân hàng sẽ tiến hành ký
“mù” lên đồng tiền còn lại Ci và gửi lại cho A. Khi đó A thu được đồng tiền đã được ngân hàng ký mù và tiến hành xóa mù để thu được chữ ký của ngân hàng trên đồng tiền. Và đồng tiền khi đó được đại diện bởi đồng tiền, chữ ký của ngân hàng trên đồng tiền là (Ci, sign(Ci))
Ngân hàng có sự đảm bảo cao rằng đồng tiền còn lại cũng hợp lệ, vì nếu A gửi kèm đồng tiền bất hợp pháp trong số k đồng tiền, thì xác suất A bị phát hiện ít nhất là (k-1)/k. Xác suất này là cao và 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.
Lược đồ giải pháp “Cut and choi”
Người A muốn tạo một đơn vị tiền điện tử ẩn danh, thì cần phải tạo k đơn vị tiền Ui ( 1 ≤ i ≤ k) và chuyển nó cùng với yêu cầu rút tiền đến ngân hàng.
Một đơn vị tiền Ui được tạo từ những dãy số ngẫu nhiên ai, ci, di, 1 i k, sao cho Ui độc lập và duy nhất.
Tính: ... Ui f x y( ,i i) (1 i k) k là số lượng đơn vị tiền tệ được tạo ra Trong đó,
Với kí hiệu là phép XOR, là phép hội.
A làm mù k đơn vị tiền Ui với những tham số “mù” ngẫu nhiên {r1 ... rk} 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 tức thì nội dung của các đồng tiền Ui
mod
bi
i i i
B r U n
(Làm mù theo giao thức RSA: Blind(x) = x. rb mod n)
( , ); ( ( ( )), )
i i i i i i
x g a c y g a u v i d
Ngân hàng chọn ngẫu nhiên k/2 đơn vị tiền để kiểm tra.
Ngân hàng yêu cầu người A cung cấp các thừa số: ri, ai, ci, di, 1 i k/ 2 tương ứng với những đơn vị tiền Ui mà ngân hàng đã chọn.
Khi có các tham số do người A cung cấp, ngân hàng xoá “mù” k/2 đơn vị tiền đã chọn và kiểm tra để đảm bảo rằng A không có gian lận.
Nếu không có lỗi nào xảy ra, ngân hàng ký lên những đơn vị tiền còn lại (những đơn vị mà ngân hàng không xoá “mù”) và gửi cho A.
/ 2
( j) moda
k j k
B n
Sau đó, ngân hàng trừ một khoản tiền tương ứng vào tài khoản của A.
Khi nhận được những đơn vị tiền được ngân hàng ký, người A xoá mù đơn vị tiền đã ký bằng cách chia chúng cho thừa số "mù" tương ứng. Lúc này, A sẽ có đồng tiền điện tử có giá trị thật sự.
/ 2
( j, j) moda
k j k
C f x y n