2.3. VẤN ĐỀ ĐẢM BẢO AN TOÀN TIỀN ĐIỆN TỬ
2.3.3. Lƣợc đồ Chaum-Fiat-Naor
Lƣợc đồ Chaum-Fiat-Naor [11], là lƣợc đồ ẩn danh đơn giản, áp dụng cho hệ thống tiền điện tử có tính ẩn danh. Lƣợc đồ sử dụng chữ ký mù RSA (xem mục 1.3.4) và giao thức “cắt - chọn” (cut and choose) (do Michael Rabin đề xuất năm 1978) để giải quyết vấn đề ẩn danh và ngăn ngừa ngƣời dùng có hành vi gian lận.
Nội dung giao thức “cut and choose”:
1/. Alice chia đôi số lƣợng đang có. 2/. Bob chọn một phần.
3/. Alice giữ phần còn lại.
Alice phải chia công bằng ở bƣớc (1), vì Alice không biết Bob sẽ chọn phần nào ở bƣớc (2). Bƣớc chia đôi và chọn ngẫu nhiên nhƣ trên đảm bảo tính trung thực.
Việc kết hợp những kỹ thuật mật mã này cho phép ngân hàng ký trên những đồng tiền do ngƣời dùng gửi đến, nhƣng ngân hàng sẽ không biết những gì đã ký (dãy số tƣợng trƣng cho đồng tiền). Vì vậy, ngân hàng không thể kiểm tra lại những thanh toán đã thực hiện. Nghĩa là, ngân hàng không biết đƣợc một hành động rút tiền này sẽ liên quan đến khoản tiền nào, nhƣ vậy đảm bảo đƣợc tính ẩn danh của ngƣời dùng.
Để ngăn ngừa vấn đề “double-spending”, lƣợc đồ này dùng giải pháp gắn định danh lên tiền. Nhƣ vậy, nếu có hiện tƣợng “double-spending” thì thông tin trong cả hai trƣờng hợp tiêu xài một đồng tiền sẽ đƣợc dùng để tìm ra kẻ gian lận.
Ngân hàng dùng mật mã RSA với khoá công khai (b, n) và chọn một tham số an toàn k. Ngân hàng công khai 2 hàm f và g (trong đó f là hàm ngẫu nhiên, g là hàm tƣơng ứng 1-1).
Mỗi ngƣời dùng có số tài khoản u, ngân hàng giữ số đếm v liên quan đến số tài khoản này.
1: Khách hàng gửi tiền ở dạng “mù”, yêu cầu Ngân hàng ký.
2: Ngân hàng gửi trả tiền đã ký cho Khách hàng (tiền vẫn còn mù). 3: Sau khi xoá mù tiền, Khách hàng chuyển tiền cho Ngƣời bán.
4: Ngƣời bán chuyển tiền đến Ngân hàng để kiểm tra tính hợp lệ của tiền. 5: Ngân hàng xác nhận tính hợp lệ của tiền với ngƣời bán.
6: Ngƣời bán chuyển giao hàng.
2.3.3.1. Các giao thức trong lược đồ Chaum - Fiat - Naor
1/. Giao thức Rút tiền
1: Alice muốn tạo một đồng tiền điện tử ẩn danh, thì cần phải tạo k đơn vị Ui và chuyển nó đến ngân hàng.
Mỗi đơn vị Ui đƣợc tạo từ dãy số ngẫu nhiên ai, ci, di, 1 i k, sao cho Ui độc lập và duy nhất: ( , ) (1 ) i i i U f x y i k Trong đó, xi g a c( , );i i yi g a( i (u (v i)),di) : phép XOR, : phép hội
2: Alice làm mù k đơn vị Ui với những thừa số “mù” ngẫu nhiên {r1 ... rk} và gửi chúng đến ngân hàng. Những thừa 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.
mod
i
b
i i i
B r U n
( Làm mù theo giao thức RSA: Blind(x) = x* rb
mod n) 3: Ngân hàng chọn ngẫu nhiên k/2 đơn vị để kiểm tra.
4: Ngân hàng yêu cầu Alice 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ị Ui mà ngân hàng đã chọn.
5: Dựa vào các tham số Alice cung cấp, Ngân hàng xoá “mù” k/2 đơn vị đã chọn và kiểm tra để đảm bảo rằng Alice 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ị còn lại (những đơn vị mà Ngân hàng không xoá “mù”) và gửi cho Alice:
/ 2 ( j) modd k j k B n
Sau đó, Ngân hàng trừ một khoản tiền tƣơng ứng từ tài khoản của Alice. 6: Alice xoá mù các đơn vị đã ký bằng cách chia chúng cho thừa số “mù” tƣơng ứng rj. Lúc này, Alice sẽ có đồng tiền điện tử có giá trị thật sự.
/2 ( ,j j) modd k j k C f x y n
2/. Giao thức Thanh toán
1: Alice gửi C đến Bob.
2: Bob chọn một chuỗi nhị phân ngẫu nhiên z1, z2,…, zk/2 và gửi nó đến Alice. 3: Alice phản hồi lại tuỳ theo từng trƣờng hợp sau:
+ Nếu zi = 1 thì Alice sẽ gửi đến Bob: ai, ci và yi
+ Nếu zi = 0 thì Alice sẽ gửi đến Bob: xi, ai (u (v i)) và di. 4: Bob kiểm tra C hợp lệ, trƣớc khi chấp nhận thanh toán của Alice.
3/. Giao thức Gửi tiền
1: Bob gửi lịch sử thanh toán đến ngân hàng. 2: Ngân hàng kiểm tra chữ ký số của ngân hàng.
3: Ngân hàng kiểm tra tiền C chƣa thật sự bị tiêu xài trƣớc đó.
4: Ngân hàng nhập vào cơ sở dữ liệu những tiền đã tiêu xài, đồng thời lƣu giữ chuỗi nhị phân và những phản hồi tƣơng ứng từ Alice.
Điều này sẽ giúp cho sau này phát hiện đƣợc những kẻ tiêu xài hai lần. 5: Ngân hàng ghi có vào tài khoản của Bob.
2.3.3.2. Độ an toàn của lược đồ
1/. Phòng tránh khả năng tấn công lược đồ
Đây là giải pháp dựa vào kỹ thuật RSA, vì vậy, tất cả những cách tấn công vào RSA đều có thể đƣợc sử dụng để tấn công vào lƣợc đồ này.
2/. Phòng tránh khả năng gian lận của người tiêu tiền
Tại giao thức Rút tiền, để ngăn ngừa sự gian lận của Alice, lƣợc đồ sử dụng giao thức “cut and choose”. Alice phải tiết lộ k/2 mẫu thông tin một cách ngẫu nhiên từ k mẫu. Nhƣ vậy, khả năng Alice có thể thực hiện đƣợc hành vi gian lận phụ thuộc vào độ lớn của số k.
Nếu Alice tiêu đồng tiền C hai lần, thì khả năng ngân hàng có thể lấy đƣợc cả hai tham số ai và ai (u (v i)) để tính đƣợc u. Đó là số tài khoản của Alice tại ngân hàng, chính vì vậy từ u, ngân hàng có thể truy ra đƣợc Alice là ngƣời có hành vi tiêu một đồng tiền hai lần.
Khả năng để có một 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 và z’i là ngân hàng
có thể có đầy đủ thông tin định danh của Alice.
Nhƣ vậy, xác suất để 2 chuỗi hoàn toàn trùng nhau (trƣờng hợp này, ngân hàng không có đủ thông tin để tìm ra đƣợc định danh của Alice) là 1/ 2
2k . Nếu chọn k đủ lớn thì khả năng hai chuỗi trùng nhau hoàn toàn có thể xem là không thể xảy ra.
Tuy nhiên, về mặt lý thuyết, có khả năng Alice có thể tránh đƣợc sự phát hiện của ngân hàng khi tiêu xài hai lần. Điều này xảy ra khi Alice và Eve cùng hợp tác với nhau. Cụ thể nhƣ sau:
Alice sau khi thực hiện một giao dịch thanh toán với Bob, sẽ gửi những tiền đã tiêu đến Eve và mô tả cho Eve quá trình giao dịch với Bob.
Nhƣ vậy, Ngân hàng sẽ nhận đƣợc thông tin giao dịch từ Bob và Eve giống nhau. Lúc này, Ngân hàng sẽ không có khả năng xác định đƣợc ai là ngƣời gian lận.
3/. Chi phí của lược đồ
Trong lƣợc đồ CHAUM-FIAT-NAOR, chi phí (thời gian, bộ nhớ) phụ thuộc vào độ lớn của k. Tại giao thức rút tiền, Alice gửi k packet đến ngân hàng, tuy nhiên, ngân hàng chỉ phải gửi trở lại 1 packet. Việc tiến hành làm “mù” và xoá “mù” k packet làm tăng thời gian tính toán.
Tại giao thức thanh toán, sau khi Alice gửi tiền đến Bob, Bob gửi một chuỗi nhị phân đến Alice, sau đó Alice phải gửi k/2 phản hồi khác nhau. Điều này làm tăng thời gian tính toán, liên lạc và chi phí lƣu trữ.