1- Thiết lập (Setup)
Các ngân hàng trong một nhóm, trưởng nhóm là ngân hàng trung tâm. Nếu có ngân hàng muốn gia nhập nhóm thì chỉ cần thực hiện giao thức join với trưởng nhóm.
2- Giao thức rút tiền(Withdrawal)
- Đầu tiên Alice tạo đồng tiền điện tử T với số seri và mệnh giá. - Alice yêu cầu ngân hàng A ký “mù nhóm” vào T.
- Ngân hàng A ký mù nhóm vào T và rút số tiền tƣơng ứng từ tài khoản của Alice.
Bây giờ Alice sở hữu đồng tiền T có giá trị trong cả nhóm ngân hàng.
Bob Ngân hàng A
Alice
Ngân hàng B
1. Thiết lập
2. Rút tiền 4. Gửi tiền
3- Giao thức trả tiền (Spending)
- Alice đƣa cho Bob tiền T đã có chữ ký “nhóm” của liên ngân hàng.
- Bob dùng khoá công khai của nhóm kiểm tra và xác thực chữ ký “nhóm” của liên ngân hàng trên T.
4- Giao thức gửi tiền (Deposit)
- Nếu các bƣớc trên đƣợc hoàn thành, Bob gửi tiền T cho ngân hàng B. Ngân hàng B nhận vì T là đồng tiền “chung” trong liên ngân hàng.
- Ngân hàng B tiến hành xác thực chữ ký trên T. Chú ý rằng, B không cần biết A là ai khi thực hiện việc này, mà chỉ cần sử dụng khoá công khai của nhóm.
- Ngân hàng B kiểm tra T đã đƣợc tiêu chƣa qua danh sách các đồng tiền đã tiêu ở ngân hàng, để tránh tiêu tiền T hai lần.
-Nếu kiểm tra hoàn tất, ngân hàng B nạp thêm vào tài khoản của Bob số tiền T. - Bob gửi hàng cho Alice.
3.2.2. Một số vấn đề đối với tiền điện tử
Tiền điên tử mang lại nhiều lợi ích không chỉ cho phía ngƣời dùng mà còn cho cả phía ngân hàng cũng nhƣ các nhà cung cấp, nó tăng tốc độ và hiệu quả cho các phiên giao dịch. Tuy nhiên, để tiền điện tử thực sự trở thành một phƣơng tiện thanh toán hữu hiệu, các nhà công nghệ, các nhà phát triển và các chuyên gia an toàn thông tin còn đứng trƣớc nhiều thách thức.
Các vấn đề lớn hiện nay đặt ra với tiền điện tử bao gồm: Vấn đề ẩn danh ngƣời dùng, vấn đề ngăn chặn ngƣời dùng giả mạo và vấn đề tiêu một đồng tiền nhiều lần (double-spending).
3.2.2.1. Vấn đề ẩn danh người dùng
Tính ẩn danh là yêu cầu đối với đồng tiền nói chung và tiền điện tử nói riêng. Hệ thống tiền điện tử ẩn danh tin cậy sẽ ngăn ngừa bên thứ ba (ngân hàng, nhà cung cấp) biết đƣợc thông tin định danh của ngƣời tham gia hê thống. Để đảm bảo yêu cầu này, ngân hàng dùng chữ ký mù ký lên đồng tiền. Chữ ký mù đảm bảo ngân hàng không thể có đƣợc mối liên hệ nào giữa đồng tiền điện tử và chủ sở hữu của nó.
Lƣợc đồ Chaum-Fiat-Naor là một lƣợc đồ ẩn danh đơn giản, áp dụng cho hê thống tiền điện tử có tính ẩn danh. Để giải quyết đƣợc vấn đề ẩn danh, lƣợc đồ dùng chữ ký mù RSA và giao thức cắt-chọn (cut and choose).
3.2.2.2. Vấn đề giả mạo và tiêu một đồng tiền nhiều lần
Nhƣ đã trình bày ở trên, tiền điện tử chỉ đơn giản là một dãy các con số đƣợc biểu diễn theo một định dạng nào đó và đƣợc trao đổi thông qua mạng máy tính. Chính vì chỉ là một dãy các con số nên nó rất dễ bị sao chép. Điều này dẫn đến hai tính huống:
- Thứ nhất, đồng tiền có thể bị làm giả (bằng cách sinh ra dãy các con số theo đúng định dạng của đồng tiền thật).
- Thứ hai, đồng tiền có thể bị sao chép để sử dụng nhiều lần (double- spending).
Những vấn đề này trong thực tế là không thể chấp nhận đƣợc. Rõ ràng, hệ thống tiền điện tử khi đƣợc áp dụng vào trong thực tế thì thật sự phải có khả năng ngăn ngừa hay phát hiện đƣợc các trƣờng hợp này.
Để ngăn ngừa vấn đề "tiêu xài nhiều lần", trong lƣợc đồ Cham-Fiat-Naor dùng giải pháp là gắn định danh lên tiền, nhƣ vậy nếu tiền đƣợc tiêu xài hai lần thì thông tin trên cả hai trƣờng hợp sẽ đƣợc dùng để tìm ra kẻ gian lận. Còn trong lƣợc đồ Branch, định danh của ngƣời mua hàng (Ông A) đƣợc ẩn danh hoàn toàn. Ngƣời bán hàng và ngân hàng sẽ hoàn toàn không biết định danh của ông A trừ khi ông A có hành vi gian lận (tiêu xài 2 lần) thì định danh của ông A sẽ bi tiết lộ. [7],[8].
3.2.3. Lƣợc đồ CHAUM-FIAT-NAOR
Hệ thống tiền điện tử đƣợc áp dụng thành công là nhờ một đặc tính quan trọng, đó là tính ẩn danh. Một hệ thống tiền điện tử ẩn danh tin cậy sẽ ngăn ngừa bên thứ 3 (Ngân hàng, nhà cung cấp) biết đƣợc thông tin định danh của ngƣời tham gia hệ thống.
Lƣợc đồ Chaum-Fiat-Naor 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 đồ áp dụng kỹ thuật chữ ký mù RSA và giao thức cắt và chọn (cut and choose) để ngăn ngừa ngƣời tạo tiền có hành vi gian lận.
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 sử dụng gửi đếnn nhƣng ngân hàng sẽ không biết những gì họ đã đƣợc ký. Do đó họ 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 hành động rút tiền này sẽ liên quan đến khoản tiền nào, điều này đảm bảo đƣợc tính ẩn danh của ngƣời sử dụng.
Để ngăn ngừa vấn đề " tiêu xài hai lần", lƣợc đồ này dùng giao thức "hỏi-đáp" để lấy môt phần thông tin định danh gắn lên đồng tiền và nhƣ vậy nếu đồng tiền đƣợc "tiêu xài hai lần" thì thông tin trên cả hai trƣờng hợp đƣợc kết hợp để truy vết tìm ra kẻ gian lận.
Ngân hàng công khai khóa mật mã RSA là (b,n) và chọn tham số k.. Ngân hàng cũng công khai 2 hàm f và g (hàm không va chạm).
Mỗi ngƣời sử dụng có số tài khoản u và ngân hàng sẽ giữ số đếm v liên quan đến số tài khoản này ( đếm số đơn vị Ui đƣợc tạo), ngân hàng dựa vào u để xác định ra kẻ gian lận.
Trình tự thanh toán trong lƣợc đồ CHAUM-FIAT-NAOR 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 bỏ "mù" tiền, khách hàng chuyển tiền cho ngƣời bán 4- Ngƣời bán tiến hành chuyển giao hàng
3.2.3.1 Giao thức rút tiền
1- Ông A muốn có một đồng tiền điện tử ẩn danh thì cần phải tao k đơn vi Ui và chuyển nó đến ngân hàng, một đơn vị Ui đƣợc tạo ra 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.
Ui = f(xi,yi), với 1≤i≤k
xi = g(ai,ci), yi=g(ai XOR (u ˄ (v+i)),di). ˄ là phép nối
2- Ông A làm mù k đơn vị Ui với những tham số mù ngẫu nhiên {r1,r2, . . .rk} và gửi chúng đến ngân hàng. Những tham số "mù" đó ngăn ngân hàng kiểm tra tức thì nội dung của những "đồng tiền" Ui.
n r
U
Bi i ib mod
(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 và yêu cầu ông A cung cấp các tham số ri, ai , ci, di tƣơng ứng với những đơn vị Ui mà ngân hàng đã chọn.
4- Ông A cung cấp cho ngân hàng các tham số ri, ai , ci, di theo yêu cầu.
5- Dựa vào các tham số do ông A cung cấp, ngân hàng xóa "mù" k/2 đơn vị đã chọn và kiểm tra để đảm bảo rằng ô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ị Ui còn lại (những đơn vị mà ngân hàng không xóa "mù") và gửi cho ông A.
n Baj mod
(j là ngẫu nhiên ≤ k và chỉ dùng k/2 phần tử Bj)
Sau đó ngân hàng trừ khoản tiền tƣơng ứng vào tài khoản của ông A.
6-Ông A xóa "mù" đơn vị đã đƣợc ngân hàng ký bằng cách chia Bj cho rj. Lúc này ông A có đồng tiền điện tử với giá trị thật sự.
3.2.3.2 Giao thức thanh toán
1- Ông A gửi tiền T đến ông B
2- Ông B chọn chuỗi nhị phân ngẫu nhiên z1,z2, . . . .zk/2 và gửi nó đến ông A. 3- Ông A phản hồi lại tùy theo từng trƣờng hợp sau:
+ Nếu zi= 1 thì ông A sẽ gửi đến ông B: ai, ci và yi
+ Nếu zi= 0 thì ông A sẽ gửi đến ông B: xi, ai XOR (u ˄ (v+i)) và di 4- Ông B kiểm tra T là hợp lệ trƣớc khi chấp nhận thanh toán của ông A.
3.2.3.3 Giao thức gửi
1- Ông B 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 này thực sự chƣa bi 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ừ ông A (đ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 cộng khoản tiền tƣơng ứng vào tài khoản của ông B.
3.2.3.4. Đánh giá
Tai giao thức rút tiền, để ngăn ngừa khả năng gian lân của ông A, lƣợc đồ sử dụng giao thức "cut and choose". Ông A 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 ông A 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 ông A tiêu đồng tiền T hai lần thì khả năng ngân hàng có thể lấy đƣợc cả hai tham số ai và ai XOR (u ˄ (v+i)) để tính đƣợc u. Đó là số tài khoản của ông A tai ngân hàng, chính vì vậy từ u ngân hàng có thể truy ra đƣợc ông A là ngƣời có hành vi tiêu một đồng tiền hai lần. Vì khả năng để có một cặp bit 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 bít tƣơng ứng zi và z'i
khác nhau là ngân hàng có thể có đầy đủ thông tin định danh của ông A. Nhƣ vậy xác suất để 2 chuỗi hoàn toàn trùng nhau (trong trƣờng hợp này, ngân hàng không có đủ thông tin để tìm ra đƣợc định danh của ông A) là /2
2 1
k và 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.
3.2.3.5. Chi phí
Trong lƣợc đồ CHAUM-FIAT-NAOR, chi phí (thời gian, tính toán, . . .) phụ thuộc vào độ lớn của k. Tại giao thức rút tiền trong lƣợc đồ, ông A phải gửi k packet đến ngân hàng, tuy nhiên ngân hàng chỉ phải gửi trở lại một packet. việc tiến hành làm "mù" và xóa "mù" sẽ làm tăng sự tính toán, sự liên lạc.
Tại giao thức thanh toán, sau khi ông A gửi tiền đến ông B, ông này gửi chuỗi nhị phân đến ông A, sau đó ông A phải gửi k/2 phản hồi khác nhau, điều này sẽ khiến cho việc tăng thời gian và sự tính toán, liên lạc và chi phí lƣu trữ.
3.2.3.6. Tấn công
Đây là giải pháp dựa vào mật mã 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.
Tuy nhiên về mặt lý thuyết, có một khả năng xảy ra là ông A có thể tránh đƣợc sự phát hiện của ngân hàng khi tiêu xài hai lần. Để thực hiện đƣợc điều này, phƣơng pháp tấn công hợp tác giữa ông A và ông X sẽ tấn công vào giao thức "hỏi-đáp". Ông A sau khi thực hiện một giao dịch thanh toán với ông B, sẽ gửi những đồng tiền đã tiêu đến ông X và mô tả quá trình giao dịch với ông B cho ông X. Nhƣ vậy ngân hàng sẽ nhân đƣợc thông tin giao dịch từ ông B và ông X giống nhƣ nhau, lúc này ngân hàng sẽ không có khả năng xác định đƣợc định danh của ông A.
3.2.4. Lƣợc đồ BRAND
So với lƣợc đồ ở trên, đây là một lƣợc đồ khá phức tạp. Lƣợc đồ sử dụng khái niệm chữ ký số Schnorr và bài toán đại diện trong nhóm của cấp nguyên tố.
Gq là nhóm con cấp q của Z*p với p,q là số nguyên tố (q|(p-1)). Ngân hàng khởi tạo 5 thành phần: (g,h,g1,g2,d).
1. (g, h): Khóa công khai của ngân hàng đƣợc dùng ở lƣợc đồ ký trong giao thức rút tiền (g, h) Gq, x là khóa bí mật của ngân hàng.
x=log gh (h=gx)
2. (g1, g2): là bộ phần tử sinh của Gq.
3. Phần tử sinh d (khác g1, g2), đảm bảo rằng định danh của ngƣời dùng sẽ không bị phát hiện trong giao thức thanh toán.
3.2.4.1. Khởi tạo tài khoản
1. Ông A phát sinh ngẫu nhiên u1, u2 Zq và tính 1 2
2 1 u u g g
I , sau đó ông A chuyển I đến ngân hàng (nhƣ vậy ngân hàng sẽ không biết đƣợc u1, u2).
2. Ngân hàng lƣu giữ 1 2
2 1 u u g g
I cùng với định danh thật sự của ông A và số tài khoản, nhƣng ngân hàng sẽ không biết u1, u2.
Trƣờng hợp ông A tiêu xài đồng tiền hai lần thì ngân hàng có thể tìm ra đƣợc (u1, u2) và có thể tính đƣợc I, từ I sẽ tìm đƣợc định danh của kẻ gian lận.
Ông A Ngân hàng Giá trị I u1, u2 Zq 2 1 2 1 u u g g I + Giá trị I + Định danh + Số tài khoản
3.2.4.2. Giao thức rút tiền
Bƣớc 1: Xác thực
Khi ông A tiến hành rút tiền thì đầu tiên phải xƣng danh với ngân hàng bằng cách chứng minh với ngân hàng là sẽ rút tiền trên tài khoản mà ông A sở hữu.
Phƣơng pháp sử dụng ở đây là "chứng minh tri thức của một đại diện", theo phƣơng pháp này, ông A phải chứng minh với ngân hàng rằng: Ông A biết u1 và u2 (vì ông ta là chủ sở hữu tài khoản), nhƣng không tiết lộ u1,u2 với ngân hàng. Quá trình xác thực đƣợc tiến hành nhƣ sau:
1. Ông A chọn ngẫu nhiên w1, w2 Zq và gửi 1 2
2 1 w w g g y đến ngân hàng.
2. Ngân hàng thử thách để kiểm tra có phải đúng là ông A sở hữu tài khoản không bằng cách chọn ngẫu nhiên cr Zq và gửi đến ông A.
3. Ông A tính r1=w1+cru1 mod q , r2=w2+cru2 mod q và gửi đến ngân hàng. 4. Ngân hàng chấp nhận xác thực là đúng nếu và chỉ nếu: 1 2
2 1 r r c g g yI r
Bởi vì nếu ông A thực sự la chủ sở hữu tài khoản thì ông ta phải biết u1, u2 (là 2 giá trị có khi khởi tạo tài khoản) và nếu biết đƣợc u1, u2 thì sẽ tính đƣợc 1 2
2 1 r r c g g yI r Bƣớc 2: Rút tiền
Nếu nhƣ xác thực (bƣớc 1) đƣợc chấp nhận thì việc rút tiền đƣợc tiến hành nhƣ sau:
1. Ngân hàng trừ một lƣợng tiền tƣơng ứng từ tài khoản của ông A và tính m= Id (d là phần tử sinh khởi tao ban đầu, ông A cũng có thể tính đƣợc m vì vậy ngân hàng không gửi m cho ông A).
Ngân hàng gửi z=mx
, a=gw và b= mw (w đƣợc chọn ngẫu nhiên từ Zq, x là khóa bí mật cua ngân hàng) đến ông A.
2. Ông A chọn ngẫu nhiên s Z*q, u,vZq để làm mù m, z, a và b m'=ms=(Id)s=gu1sgu2sds
2
1 , z' = zs, a' = augv, b'=bsumsv Tách ngẫu nhiên u1s=x1+x2 mod q , u2s=y1+y2 mod q s=z1+z2 mod q Tính A= 1 1 1 2 1 z y x d g g và B = m'/A = 2 2 2 2 1 z y x d g g
Dùng hàm băm H tính c'= H(m',z',a',b',A), tính c= (c'/u) mod q. Gửi thử thách c đến ngân hàng.
3. Ngân hàng tính r=xc + w mod q và gửi cho ông A Ông A kiểm tra gr
=hca ? mr=zcb ? nếu thảo mãn thì tính r'=ru+v mod q.
Đến thời điểm này thì ông A có đồng tiền điện tử thực sự đƣợc đại điện bởi bộ 3 A B Sign(A,B)
Sign(A,B) =(z', a', b', r')
Vấn đề là làm thế nào chúng ta có thể biết đƣợc giá trị của từng đồng tiền ?