Khóa luận Nghiên cứu một số giải pháp công nghệ thông tin trong việc sử dụng tiền điện tử

TÓM TẮT NỘI DUNG Thương mại điện tử nói chung và tiền điện tử nói riêng đang còn là một lĩnh vực mới mẻ. Vì vậy, để tiền điện tử có thể thực sự thâm nhập vào cuộc sống, trở thành một phương thức thanh toán hiệu quả đòi hỏi cần phải có quá trình nghiên cứu và phát triển. Khóa luận sẽ trình bày những kiến thức khái quát về Tiền điện tử, sau đó tập trung nghiên cứu hai vấn đề lớn hiện đang đặt ra đối với tiền điện tử:vấn đề ẩn danh người sử dụng và vấn đề ngăn chặn người sử dụng tiêu một đồng Tiền điện tử nhiều lần. Khóa luận cũng giới thiệu và phân tích một số hệ thống tiền điện tử hiện nay trên thế giới, và đề xuất việc ứng dụng tiền điện tử tại Việt nam. Ngoài ra, khóa luận sẽ Demo một chương trình nhỏ về một hệ thống tiền điện tử bằng ngôn ngữ C++. MỤC LỤC LỜI CẢM ƠN 3 TÓM TẮT NỘI DUNG 4 MỤC LỤC 5 DANH MỤC CÁC KÝ KIỆU 8 DANH MỤC BẢNG BIỂU 9 MỞ ĐẦU 10 Chương 1. CÁC KHÁI NIỆM CƠ BẢN 12 1.1. MỘT SỐ KHÁI NIỆM TOÁN HỌC. 12 1.1.1. Khái niệm trong số học. 12 1.1.2. Khái niệm trong đại số. 15 1.1.3. Độ phức tạp. 17 1.2. MÃ HÓA. 20 1.2.1. Khái niệm về mã hóa. 20 1.2.2. Hệ mã hóa. 21 1.2.3. Mã hóa và giải mã. 21 1.2.4. Hệ mã hóa khóa công khai RSA. 22 1.3. CHỮ KÝ. 24 1.3.1. Giới thiệu về chữ ký. 24 1.3.2. Một số sơ đồ chữ ký . 26 1.4. CHIA SẺ BÍ MẬT CÓ THỂ XÁC MINH. 35 1.4.1. Sơ đồ chia sẻ bí mật. 35 1.4.2. Sơ đồ chia sẻ bí mật có thể xác minh. 36 1.5. HÀM BĂM. 37 1.5.1. Hàm băm h là hàm một chiều (One-way Hash) với các đặc tính sau: 37 1.5.2. Tính chất của hàm băm. 37 Chương 2: GIỚI THIỆU VỀ TIỀN ĐIỆN TỬ 38 2.1. KHÁI NIỆM THANH TOÁN ĐIỆN TỬ. 38 2.1.1. Các mô hình thanh toán điện tử. 38 2.2. KHÁI NIỆM TIỀN ĐIỆN TỬ. 40 2.2.1. Mô hình giao dịch mua bán bằng tiền điện tử. 41 2.2.2. Cấu trúc của Tiền điện tử. 43 2.2.3. Tính chất của tiền điện tử: 44 Chương 3: MỘT SỐ VẤN ĐỀ PHÁT SINH KHI DÙNG TIỀN ĐIỆN TỬ 47 3.1. MỘT SỐ VẤN ĐỀ PHÁT SINH. 47 3.1.1. Vấn đề ẩn danh người sử dụng đồng tiền. 47 3.1.2. Vấn đề gian lận giá trị đồng tiền. 47 3.1.3. Vấn đề tiêu xài một đồng tiền hai lần. 48 3.2. GIẢI PHÁP CHO BÀI TOÁN “ẨN DANH” VÀ “CHỐNG GIAN LẬN GIÁ TRỊ ĐỒNG TIỀN”. 49 3.2.1. Giới thiệu giải pháp. 49 3.2.2. Lược đồ Chaum-Fiat-Naor. 51 3.2.3. Lược đồ Brand. 55 3.3. GIẢI PHÁP CHO BÀI TOÁN “TIÊU NHIỀU LẦN MỘT ĐỒNG TIỀN” 64 3.3.1. Giới thiệu giải pháp. 64 3.3.2. Lược đồ truy vết gian lận KV. 65 3.3.3. Lược đồ Fair tracing. 69 3.3.4. So sánh lược đồ KV và Fair tracing. 77 Chương 4: MỘT SỐ HỆ THỐNG TIỀN ĐIỆN TỬ 78 4.1. HỆ THỐNG DIGICASH. 78 4.1.1. Phương thức hoạt động. 79 4.4.2. Nhận xét. 81 4.2. HỆ THỐNG PAYWORD 82 4.2.1. Phương thức hoạt động. 82 4.2.2. Nhận xét. 84 4.3. VẤN ĐỀ DÙNG TIỀN ĐIỆN TỬ Ở VIỆT NAM. 85 KẾT LUẬN 88 DANH MỤC TÀI LIỆU THAM KHẢO 89

doc89 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2585 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Khóa luận Nghiên cứu một số giải pháp công nghệ thông tin trong việc sử dụng tiền điện tử, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Để giải quyết vấn đề trên người ta đã sử dụng kỹ thuật “chữ ký mù”. Đó là dạng đặc biệt của chữ ký điện tử, nó đòi hỏi người ký thực hiện ký vào thông điệp mà không biết nội dung của nó. Người ký sau này có thể nhìn thấy cặp chữ ký, thông điệp, nhưng không thể biết được là mình đã ký thông điệp đó khi nào và ở đâu, mặc dù anh ta có thể kiểm tra được chữ ký đó là đúng đắn. Nó cũng giống như ký khi đang nhắm mắt vậy! Với chữ ký mù của ngân hàng, họ 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ó. Vấn đề gian lận giá trị đồng tiền. Việc Ngân hàng dùng chữ ký “mù” để ký vào đồng tiền làm nảy sinh một vấn đề khác, đó là: ông A gian lận, gửi tới ngân hàng đồng tiền ghi giá trị 50 $ để xin chữ ký của họ trên đồng tiền này, nhưng lại báo với ngân hàng rằng đồng tiền đó chỉ ghi giá trị 1$. Như vậy ông A đã có đồng tiền 50 $ cùng với chữ ký của ngân hàng, nhưng tài khoản của ông chỉ bị khấu trừ 1 $. Ông A đã “thắng” đậm. 3.1.3. Vấn đề tiêu xài một đồng tiền hai lần. Tiền điện tử có dạng số hoá, nên dể dàng tạo bản sao từ bản gốc. Chúng ta không thể phân biệt được giữa đồng tiền “gốc” và đồng tiền “sao”. Kẻ gian có thể tiêu xài đồng tiền “sao” này nhiều lần mà không bị phát hiện. Hệ thống tiền điện tử được áp dụng vào thực tế, thì phải có khả năng ngăn ngừa hay phát hiện được trường hợp “Một đồng tiền tiêu xài hai lần” (double spending). Để giải quyết vấn đề này, đã có các giải pháp khác nhau tuỳ theo từng hệ thống tiền điện tử. GIẢI PHÁP CHO BÀI TOÁN “ẨN DANH” VÀ “CHỐNG GIAN LẬN GIÁ TRỊ ĐỒNG TIỀN”. Giới thiệu giải pháp. Tính ẩn danh là đặc tính quan trọng của phương thức thanh toán bằng tiền điện tử Như đã trình bày ở trên, để giải quyết vấn đề này, người ta dùng kỹ thuật chữ ký “mù”. Chữ ký “mù ”đảm bảo ngân hàng không có được bất cứ mối liên hệ nào giữa đồng tiền điện tử và chủ sở hữu của nó. Tùy theo từng hệ thống tiền điện tử, sẽ áp dụng những sơ đồ chữ ký “mù” khác nhau. Chẳng hạn, lược đồ Chaum-Fiat-Naor dùng sơ đồ chữ ký mù RSA, lược đồ Brand dùng sơ đồ chữ ký mù Schnorr. Mỗi lược đồ cũng có những ưu nhược điểm khác nhau. Mặc dù đạt được tính ẩn danh, nhưng giải pháp chữ ký mù làm nảy sinh một vấn đề: làm sao để ngăn chặn Alice đưa cho ngân hàng ký một đồng tiền không trung thực. Ví dụ: Alice yêu cầu rút 1$, nhưng lại đưa cho ngân hàng ký lên đồng tiền có giá trị 100$. Vì ngân hàng ký mù lên đồng tiền đó, nên không thể biết được nội dung của nó. Để giải quyết vấn đề này, có hai phương pháp được đưa ra. 1). Phương pháp thứ nhất: Ngân hàng dùng một bộ khóa (khoá ký, khóa kiểm tra chữ ký) khác nhau cho mỗi loại tiền. Nếu có k giá trị đồng tiền thì ngân hàng phải có k bộ khoá khác nhau. Ví dụ với đồng tiền giá trị 1$ thì dùng khoá k1, đồng tiền 50 $ thì dùng khoá k50. Như vậy nếu gian lận của ông A tạo ra đồng tiền 50$ với khóa k1, thì đó là đồng tiền không hợp lệ. 2). Phương pháp thứ hai: Để rút từ ngân hàng một đồng tiền giá trị T, ông A phải tạo k đồng tiền C1,C2,...,Ck cùng giá trị T. Chúng đều được gắn định danh, khác nhau duy nhất giữa chúng là số sê-ri. Ông A làm “mù” những đồng tiền này, và gửi chúng đến ngân hàng. Ngân hàng yêu cầu ông A cung cấp thông tin để khử “mù” k-1 đồng tiền bất kỳ. Ngân hàng khử “mù” và kiểm tra chúng. Nếu tất cả đều hợp lệ, ngân hàng ký “mù” lên đồng tiền còn lại Ci (là đồng tiền mà ngân hàng không khử “mù”), và gửi cho ông A. Ngân hàng có sự đảm bảo cao rằng đồng tiền còn lại Ci cũng là hợp lệ, vì nếu ông A gửi kèm đồng tiền không hợp pháp trong số k đồng tiền, thì xác suất bị phát hiện ít nhất là k-1/ k. Xác suất này 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 đồ Chaum-Fiat-Naor. Lược đồ. Lược đồ Chaum - Fiat - Naor, là lược đồ hệ thống tiền điện tử có tính ẩn danh. Để bảo đảm tính ẩn danh của đồng tiền, lược đồ sử dụng kỹ thuật “chữ ký mù” RSA. Trong đó khoá mật là a, khóa công khai là (n, b), hàm f , g không “va chạm”. Mỗi người dùng có số tài khoản u, ngân hàng sẽ giữ số đếm v liên quan đến số tài khoản này (đơn vị Ui tạo ra), ngân hàng dựa vào u để xác định kẻ gian lận. 1 2 5 4 3 Hình 4 : Khái quát lược đồ Chaum – Fiat – Naor 1). Khách hàng gửi đồng tiền ở dạng “mù” , yêu cầu Ngân hàng ký. 2). Ngân hàng gửi đồng tiền đã ký cho Khách hàng (đồng tiền vẫn còn “mù 3). Sau khi xóa “mù” đồng tiền, Khách hàng chuyển tiền cho Người bán hàng. 4). Người bán hàng chuyển giao hàng cho Khách hàng. 5). Người bán chuyển tiền đến Ngân hàng để kiểm tra tính hợp lệ của đồng tiền. 1/. Giao thức Rút tiền: 1). Ông A muốn rút từ ngân hàng một đồng tiền ẩn danh, thì phải tạo k đơn vị Ui và chuyển chúng đến ngân hàng. Mỗi Ui được tạo từ các số ngẫu nhiên ai , ci , di sao cho Ui độc lập và duy nhất, 1 £ i £ k. Cụ thể Å là phép XOR, Ù là phép nối. Ui = f (xi, yi ), xi = g ( ai , ci ), yi = g (ai Å (u Ù (v + i)), di ). 2). Ông A làm “mù” k đơn vị Ui thành Bi bằng tham số “mù” ngẫu nhiên ri 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 những “đồng tiền” Ui. Cụ thể Bi =  Ui ri b mod n. 3). Ngân hàng chọn ngẫu nhiên k/2 đơn vị Ui để kiểm tra, 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ị Ui đã chọn, kiểm tra để đảm bảo rằng ông A không có gian lận. Nếu không có gian lận, ngân hàng mới ký “mù” lên những đơn vị Uj  còn lại (đó là đơn vị Uj mà ngân hàng không xoá “mù, chính là Bj )và gửi cho ông A. Chữ ký trên Bj là Bja mod n. Chú ý j ngẫu nhiên ≤ k, chỉ dùng k/2 phần tử Bj Sau đó ngân hàng trừ số tiền tương ứng vào tài khoản của ông A. 6). Ông A xoá “mù” đơn vị Bj đã được ngân hàng ký, bằng cách chia Bj a cho rj. Lúc này ông A có đồng tiền điện tử với giá trị thật sự. T = Uj a mod n = f (xj, yj) a mod n 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… z k/2 và gửi nó đến ông A. 3). Ông A phản hồi lại tuỳ 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 (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/. Giao thức Gửi tiền: 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 đồng tiền này không bị tiêu xài trước đó. 4). Ngân hàng nhập vào cơ sở dữ liệu những đồng tiền đã tiêu xài, ghi lại chuỗi nhị phân zi và những phản hồi tương ứng từ ông A. Điều này giúp phát hiện kẻ tiêu xài hai lần. 5). Ngân hàng ghi T vào tài khoản của Ông B. 3.2.2.2. Phân tích – đánh giá. Lược đồ Chaum - Fiat - Naor là lược đồ hệ thống tiền điện tử có tính ẩn danh. 1). Để bảo đảm tính “ẩn danh” của đồng tiền, lược đồ dùng “chữ ký mù” RSA. 2). Để ngăn ngừa người rút tiền khai “gian lận giá trị” đồng tiền, lược đồ đã sử dụng giao thức “Cắt và chọn” Cut and choose). Ngân hàng chọn ngẫu nhiên k/2 đơn vị Ui để kiểm tra, nếu không có gian lận xảy ra thì mới ký “mù” lên các đơn vị Uj còn lại. Cũng như lý luận ở trên về giao thức “Cắt và chọn”, ngân hàng có sự đảm bảo cao rằng đồng tiền còn lại Uj cũng là hợp lệ, nếu k càng lớn. 3). Để ngăn chặn việc ‘tiêu xài hai lần’ một đồng tiền, lược đồ 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. Nếu nó được “tiêu xài hai lần”, thì thông tin định danh trên hai lần “tiêu xài” sẽ kết hợp lại, để truy vết tìm ra kẻ gian lận. Nếu ông A tiêu 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 Å (u Ù (v + i)) để tính được u. Đó là số tài khoản của ông A tại 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ó 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 khác nhau, là ngân hàng có thể có đủ thông tin định danh của ông A. Xác suất để 2 chuỗi zi và z’i trùng nhau là , tức là ngân hàng không có đủ thông tin để tìm ra được định danh của ông A. Như vậy nếu chọn k đủ lớn thì khả năng hai chuỗi zi và z’i trùng nhau có thể xem là khó thể xảy ra. 4). Chi phí. Trong lược đồ Chaum-Fiat-Naor chi phí (thời gian, tính toán, tiền bac…) phụ thuộc vào độ lớn của k. Tại giao thức rút tiền, ông A 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à “xóa mù” k packet làm tăng sự tính toán, trao đổi và thời gian lưu trữ. Tại giao thức thanh toán, sau khi ông A gửi tiền đến ông B. Ông B gửi một chuỗi nhị phân tới ông A, sau đó ông A phải gửi k/2 phản hồi khác nhau. Điều này làm tăng thời gian và sự tính toán, liên lạc và chi phí lưu trữ. 5). Tấn công. Đây là phương 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ể tấn công vào lược đồ này. Tuy nhiên, về mặt lý thuyết, có khả năng ô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. Điều này xảy ra khi ông A và ông C cùng hợp tác với nhau, cụ thể như sau: Ô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 tiền đã tiêu tới ông C và mô tả cho ông C quá trình giao dịch với ông B. Như vậy, ngân hàng sẽ nhận được thông tin giao dịch từ ông B và ông C 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. Lược đồ Brand. Lược đồ được xây dựng dựa trên chữ ký Shnorr và bài toán đại diện trong nhóm cấp nguyên tố. Gq là nhóm con cấp q của Zp*, trong đó p,q là số nguyên tố thỏa mãn q|(p-1) Ngân hàng khởi tạo 5 thành phần: g, h, g1, g2, d. + (g, h) Î Gq (generator - tuple): khóa công khai của ngân hàng được dùng trong sơ đồ ký ở giao thức rút tiền, x là khóa bí mật của ngân hàng. x = logg h (h = gx ) + (g1, g2): bộ phần tử sinh của Gq. + Phần tử sinh giả d ( khác g1 và g2), đảm bảo rằng định danh của người dung sẽ không bị phát hiện trong giao thức thanh toán. Lược đồ. 1/. Khởi tạo tài khoản. + Alice khởi tạo ngẫu nhiên u1, u2 Î Zq. Tính I = g1u1 g2u2, chuyển I đến ngân hàng + Ngân hàng lưu I = g1u1 g2u2 cùng định danh của Alice và số tài khoản, nhưng ngân hàng không biết u1 và u2. +Trường hợp Alice tiêu xài đồng tiền hai lần, ngân hàng có thể tìm ra (u1, u2) và tính được I, từ I tìm ra định danh kẻ gian lận. u1, u2 Î Zq I = g1u1 g2u2 I Định danh Số tài khoản I Hình 5: Quá trình khởi tạo tài khoản của lược đồ Brand 2/. Chứng minh đại diện tài khoản: Khi Alice rút tiền đầ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 trong tài khoản mà Alice đang sở hữu. Phương pháp được dùng ở đây là “Chứng minh tri thức của một đại diện”. Alice phải chứng minh cho Ngân hàng rằng: Alice biết u1 và u2 cho Ngân hàng. Quá trình thực hiện được tiến hành như sau: 1. Alice chọn ngẫu nhiên w1 và w2 Î Zq và gửi y = g1w1 g2w2 đến Ngân hàng. 2. Ngân hàng thử thách để kiểm tra có đúng Alice 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 Alice. 3. Alice tính r1 = w1 + Cru1 và r2 = w2 + C2u2 mod q, gửi đến Ngân hàng. 4. Ngân hàng chấp nhận xác thực là đúng khi và chỉ khi. yICr = g1r1 g2r2 trong đó I = g1u1 g2u2 Bởi vì, nếu Alice thực sự là chủ sở hữu tài khoản, thì phải biết u1, u2 (là 2 giá trị khởi tạo tài khoản ban đầu) và nếu biết được chúng thì : yICr ≡ g1w1 g2w2 (g1u1 g2u2 ) ≡ g1w1+u1Cr g2w2 + u2Cr ≡ g1r1 g2r2 Alice (Người chứng minh) Ngân hàng ( người kiểm tra) Biết u1 và u2 là đại diện của I = g1u1 g2u2 Chỉ biết I, g1,g2. Không biết u1 và u2 Tạo 2 số ngẫu nhiên w1 và w2 ÎZq Tính y = g1w1 g2w2 gửi đến Ngân hàng Nhận y, chọn ngẫu nhiên Cr ÎZq Gửi thử thách Cr đến Alice Nhận Cr, tính: r1 = w1 + Cru1 và r2 = w2 + C2u2 mod q Gửi đến Ngân hàng Nhận r1, r2, kiểm tra: yICr = g1r1 g2r2 Nếu thỏa mãn: ngân hàng chấp nhận Alice biết đại diện của I ( có nghĩa là biết u1, u2) Hình 6 : Quá trình chứng minh đại diện tài khoản của lược đồ Brand. 3/. Giao thức rút tiền. Nếu xác thực được chấp nhận, quá trình rút tiền được tiến hành như sau: + Ngân hàng trừ một lượng tiền tương ứng từ tài khoản của Alice. Ngân hàng và Alice cùng tính được m = Id ( d là phần tử sinh và công khai). Ngân hàng gửi Alice : z = mx, a = gw , b = mw (w được chọn ngẫu nhiên từ Zq, x là khóa bí mật của Ngân hàng) + Alice chọn 3 số ngẫu nhiên s ÎZq*; u,v ÎZq để làm “mù” m, z, a, b. m’ = ms = (Id)s = g1u1s g2u2s ds z’ = zs ; a’ = au gv ; b’ = bsu msv Tách ngẫu nhiên: u1s = (x1 + x2) mod q, u2s = ( y1 + y2) mod q với s = z1 + z2 mod q Tính A = g1x1 g2y1 dz1 ; B = m’/A = g1x2 g2y2 dz2 Alice dùng hàm băm H tính c’ = H( m’, z’, a’, b’, A). Làm “mù” c’ bằng c = c’/u mod q, gửi c đến Ngân hàng. + Ngân hàng ký trên c được r = xc + w mod q, gửi r cho Alice, ghi có vào khoản của Alice. + Alice chấp nhận nếu kiểm tra thấy gr = hca và mr = zcb và tính r’ = ru + v modq. + Lúc này, Alice có đồng tiền điện tử thực sự được đại diện bởi: A, B, Sign(A, B) với Sign ( A, B) = (z’, a’, b’,r’) là chữ ký của Ngân hàng. Xác định giá trị đồng tiền: Làm thế nào để có thể biết được giá trị của từng đồng tiền? Có hai cách để giải quyết vấn đề này: Cách 1: Ngân hàng sử dụng một khóa công khai cho mỗi loại tiền. Nghĩa là, nếu có k đồng tiền khác biệt thì ngân hàng phải công khai k khóa công khai sau: (g1 , h1)….. (gk , hk) Cách 2: Chọn k phần tử sinh giả (dummy generator) khác nhau được công khai d1,….., dk. Mỗi phần tử sinh được dùng để biểu hiện giá trị của mỗi đồng tiền. Alice Ngân hàng I = g1u1 g2u2 x: khóa bí mật (g, h): khóa công khai ( h= gx) Quá trình chứng minh đại diện z, a, b mÎZq, m = Id z = mx, a = gw , b = mw m = Id = g1u1g2u2 d, s ÎZq* m’ = ms = (Id)s = g1u1s g2u2s ds z’ = zs Tách ngẫu nhiên u,v ÎZq, a’ = au gv , b’ = bsu msv c’ = H( m’, z’, a’, b’, A). c = c’/u mod q c r = xc + w mod q Kiểm tra: gr = hca và mr = zcb Tính r’ = ru + v modq. Đồng tiền: A, B, Sign(A, B) với Sign ( A, B) = (z’, a’, b’,r’) Hình 7: Giao thức rút tiền trong lược đồ Brand 4/. Giao thức thanh toán. Khi Alice muốn mua hàng hay sử dụng dịch vụ của Bob, trước tiên Alice cần phải gửi tiền cho Bob, quá trình thanh toán được thực hiện theo những bước sau. 1. Alice gửi tiền (A, B, Sign(A, B)) đến Bob. A = g1x1 g2y1 dz1 B = m’/A = g1x2 g2y2 dz2 Sign ( A, B) = (z’, a’, b’,r’) 2. Đầu tiên, Bob kiểm tra xem AB # 1 hay không. Nếu AB = 1, có nghĩa: (g1x1g2y1 dz1 ) (g1x2g2y2 dz2 ) = 1 à g1x1 + x2g2 y1 + y2 d z1 + z2 = 1 à s = 0 Vậy, Ngân hàng không xác định được u1, u2 trong trường hợp “double - spending” Sau đó, Bob kiểm tra chữ ký của Ngân hàng sign(A, B) có hợp lệ không. Nếu đúng, Bob thử thách Alice bằng cách gửi c ÎZq*, c không cần thiết là số ngẫu nhiên nhưng phải đảm bảo duy nhất trong mỗi lần thanh toán. Bob tính c như sau: c = H0 ( A, B, Ib, date/time), với I là định danh của Bob, date/time là nhãn thời gian của giao dịch, H0 là hàm băm. 3. Alice phản hồi với: r1 = x1 + cx2 mod q r2 = x1 + cy2 mod q r3 = x1 + cz2 mod q 4. Bob kiểm tra, nếu g1r1g2 r2 g3 r3 = ABc thì chấp nhận thanh toán vì: g1r1g2 r2 g3 r3 = g1x1 + cx2g2 y1 + cy2 g3 z1 + cz2 = = (g1x1g2 y1 g3 z1 ) (g1cx2g2 cy2 g3 cz2 ) = ABc Alice Bob A, b, sign(A, B) AB ≠ 1 Kiểm tra sign ( A, B), c ÎZq c r1 = x1 + cx2 mod q r2 = x2 + cy2 mod q r3 = x3 + cz2 mod q r1, r2, r3 g1r1g2 r2 g3 r3 = ABc Nếu đúng Bob chấp nhận thanh toán Hình 8: Giao thức thanh toán 5/. Giao thức gửi. Bob gửi thông tin thanh toán (A, B, sign(A, B)), c, r1, r2, r3 đến ngân hàng. Ngân hàng kiểm tra chữ ký có chính xác không và đồng tiền không được tiêu xài trước đấy. Bob thử thách Alice bằng giá trị c = H0 (A, B, Ib, date/time) Alice trả lời lại giá trị r1, r2, r3 Nếu tất cả thỏa mãn, Ngân hàng gửi tiền vào tài khoản của Bob. Đánh giá. Lược đồ này sử dụng những lý thuyết toán học phức tạp, khó có thể hiểu được đầy dủ. Do vậy lược đồ này không phổ biến bằng lược đồ CHAUM – FIAT – NAOR Lược đồ không sử dụng giao thức “cut and choose” như CHAUM –FIAT-NAOR, nên khônh phải tạo k mẫu khác nhau cũng như không phải giữ những bản copy của phần định danh( định danh được chia làm hai phần). Ngân hàng cũng không cần kiểm tra k/2 mẫu trước khi tiến hành ký. Độ an toàn của lược đồ Brand sẽ phụ thuộc vào độ khó của việc tính toán logarit rời rạc và dĩ nhiên sẽ an toàn hơn lược đồ sử dụng RSA. Trong lược đồ này, định danh của người mua hàng(Alice) được ẩn danh hoàn toàn. Người bán hàng và ngân hàng hoàn toàn không biết định danh của Alice, trừ khi Alice có hành vi gian lận, tiêu một đồng tiền nhiều lần. 3.2.3.3. Phương pháp phát hiện định danh trong trường hợp tiêu xài 2 lần một đông tiền. Trong trường hợp Alice tiêu xài một đồng tiền 2 lần thì sẽ phải gửi cho Ngân hàng: Lần 1: c và r1, r2, r3 Lần 2: c’ và r’1, r’2, r’3. Với: Và r1 = x1 + cx2 mod q r’1 = x1 + cx’2 mod q r2 = x2 + cy2 mod q r’2 = x2 + cy’2 mod q r3 = x3 + cz2 mod q r’3 = x3 + cz’2 mod q Từ hai phương trình 3 ẩn này, ngân hàng sẽ tìm ra được định danh của kẻ gian lận: A = g1(c’r1 – cr’1) / (c’-c)g2 (c’r2 – cr’2) / (c’-c) g3 (c’r3 – cr’3) / (c’-c) B = g1(r1 – r’1) / (c’-c)g2 (r2 – r’2) / (c’-c) g3 (r3 – r’3) / (c’-c) Mà: A = g1x1 g2y1 dz1 B = g1x2 g2y2 dz2 (c’r1 – cr’1) = x1 mod q (r1 – r’1) = x2 mod q (c’r2 – cr’2) = y1 mod q (r2 – r’2) = y2 mod q (c’r3 – cr’3) = z1 mod q (r3 – r’3) = z2 mod q Từ công thức, Ngân hàng tính: u1s = x1 + x2 , u2s = y1 + y2 , s = z1 + z2 Tiến hành thay x1 , y1, z1 , x2 , y2, z2 theo kết quả trên ta được. u1s = + mod q u2s = + mod q s = + mod q u1 = mod q u1 = mod q Từ u1 và u2 tính được I theo công thức I = g1u1 g2u2, Ngân hàng so sánh giạ trị I trong cơ sở dữ liệu đã được lưu trước đó và tìm ra định danh của kẻ gian lận. Tấn công. Có một kiểu tấn công trong lược đồ Brand, đó là Alice có thể tiêu một đồng tiền nhiều lần mà không bị phát hiện. Cách tấn công này nhằm vào giao thức tạo tài khoản lúc ban đầu, khi mở tài khoản thay vì sử dụng I = g1u1 Alice sẽ chọn I = g1u1 g2u2 , như vậy, tại giao thức rút tiền, Ngân hàng sẽ kỹ trên. A = g1u1 g2u2+1 B = g1x1 g2x2 Sign( A, B) = (Z’ = (g1u1 g2u2+1), a’ = gwu+v, b = (g1u1 g1u2+1)wsu+sv, r = H, (A, b,z’, a’, b’)x + wu+v) Tại giao thức rút tiền thu được e1 = de + x1 và r2 = df + x2 ở đây (e, f) là đại diện của A = (g1e gf), e = u1s, f = (u2 +1)s. GIẢI PHÁP CHO BÀI TOÁN “TIÊU NHIỀU LẦN MỘT ĐỒNG TIỀN” Giới thiệu giải pháp. Làm thế nào để đảm bảo tính ẩn danh người dùng, mà vẫn truy vết được định danh khi họ vi phạm? Giải pháp được dùng là “chữ ký mù có điều kiên” (conditional blind signature), còn gọi là chữ ký mù một phần ( partial blind signature). 1). Chữ ký mù có điều kiện đảm bảo: Nếu không có vi phạm xảy ra, nó giống hệt chữ ký mù, tức là đảm bảo tính ẩn danh cho người dùng. Nếu có vi phạm xảy ra, ngân hàng có thể kết hợp với nhà cung cấp để truy ra vết định danh người vi phạm. 2). Ý tưởng của chữ ký mù có điều kiện: Khi người dùng A thực hiện giao thức rút tiền, A phải gửi cho ngân hàng một số thông tin. Tương tự, khi thanh toán, A cũng gửi cho bên B một số thông tin. Nếu chỉ dựa vào thông tin mà A cung cấp cho ngân hàng, hoặc thông tin A cung cấp cho B, thì không thể truy vết ra định danh của A. Tuy nhiên Ngân hàng và B hợp tác với nhau, dưới sự giám sát của pháp luật, để truy vết ra A. Sau đây là hai lược đồ dựa trên ý tưởng của chữ ký mù có điều kiện. Lược đồ truy vết gian lận KV. Lược đồ KV, viết tắt của hai tác giả D. Kugler và H. Vogt, dựa trên sơ đồ chữ ký mù của Schnorr và sơ đồ chữ ký không thể chối bỏ của Chaum. Đặc tính mù được dùng để ẩn danh người dùng, đặc tính không thể chối bỏ dùng để truy vết đồng tiền điện tử. 1/. Chuẩn bị + Chọn p và q là hai số nguyên tố lớn sao cho q là ước của (p-1). + g1, g2, g3 ÎZp* là các phần tử cấp q. + (s1, s2) ngẫu nhiên Î Zq là khóa bí mật của ngân hàng cho chữ ký mù. + v = g1s1 g2s2 mod p là thành phần chính trong khóa công khai của ngân hàng cho chữ ký mù. Như vậy, khóa công khai là bộ 5 số (p, q, g1, g2, v). + x ngẫu nhiên Î Zq là khóa bí mật của ngân hàng cho chữ ký không thể chối bỏ. + y = g3x mod p là khóa công khai của ngân hàng cho chữ ký không thể chối bỏ. 2/. Giao thức rút tiền. + Ngân hàng Chọn r ngẫu nhiên Î Zq* Tính: α = g2r mod p Tính chữ ký không thể chối bỏ ω = αx mod p Gửi α và ω cho Alice. + Alice làm α mù và ω Với mỗi đồng tiền, Alice chọn δ ngẫu nhiên Î Zq* và tính: α’ = αδ mod p , ω’ = ωδ = (αx)δ = (α’)δ mod p + Ngân hàng chọn (k1, k2 ) Î Zq ngẫu nhiên. Tính t = g1k1 αk2 mod p gửi cho Alice. + Alice chọn (β1, β2, γ) ngẫu nhiên và tính t’ = tg1β1(α’) β2 νγ mod p (ν là khóa công khai của Ngân hàng) c’ = H(m, α’, t’) Gửi c = c’ – γ mod q cho Ngân hàng. + Ngân hàng tính: 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, t cho Alice. + Alice tính S’1 =  S1 + β1 mod q S’2 =  S2 + β2 mod q Các thông tin trên đồng tiền gồm (m, t’, S’1, S’2, α’, ω’ ). + Kiểm tra chữ ký Ver = true ó t’ = g1S’1 (α’)S’2 νc’ mod p Khách hàng Ngân hàng Với mỗi đồng tiền. α’ = αδ mod p ω’ = ωδ = (αx)δ = (α’)δ mod p (β1, β2, γ) Î Zq ngẫu nhiên t’ = tg1β1(α’) β2 νγ mod p c’ = H(m, α’, t’) c = c’ – γ mod q. S’1 =  S1 + β1 mod q S’2 =  S2 + β2 mod q t’ = g1S’1 (α’)S’2 νc’ mod p Đồng tiền (m, t’, S’1, S’2, α’, ω’ ) α , ω t c S1, S2 Với mỗi lần rút tiền; r ngẫu nhiên Î Zq* α = g2r mod p ω = αx mod p (k1, k2 ) Î Zq ngẫu nhiên. 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 Hình 9 : Tóm tắt lược đồ KV 3/. Phân tích lược đồ KV. Khả năng truy vết: Nếu Ngân hàng quyết định phát hành các đồng tiền được đánh dấu, đơn giản là ngân hàng chỉ cần chọn và lưu một khóa ký không thể chối bỏ ngẫu nhiên bằng cách dùng xM thay vì x để tính ω = αxM mod p, xM được gọi là khóa đánh dấu. Trường hợp này có thể xảy ra theo yêu cầu của khách hàng hoặc luật sư. Khi một đồng tiền được gửi vào ngân hàng, trong quá trình kiểm tra phát hiện thấy sai, thì khóa đánh dấu sẽ được phát hiện. Trường hợp này, ngân hàng kiểm tra xem ω’ có bằng ω = αxM mod p đối với tất cả các khóa đánh dấu đã được lưu giữ xM. Tuy nhiên nếu Khách hàng (Alice) cố gắng kiểm tra xem đồng tiền của mình có bị truy vết không. Alice phải yêu cầu ngân hàng công bố tất cả các khóa đánh dấu xM trong pha kiểm toán. Nếu Alice phát hiện khóa đánh dấu tương ứng với đồng tiền của Alice không phải là x hay xM thì Alice có thể cãi rằng đồng tiền đã bị truy vết một cách bất hợp pháp. Nếu khóa đánh dấu nằm trong danh sách xm, Alice sẽ yêu cầu giấy phép hợp lệ của trọng tài - người chịu trách nhiệm cho việc truy vết này. Nhược điểm: Một trong những nhược điểm của lược đồ KV là nó cần quá nhiều thông tin bổ sung trong quá trình truy vết đồng tiền hợp lệ. Nguyên nhân là do việc đánh dấu phải được hợp pháp hóa bởi một trọng tài và ngân hàng phải lưu tất cả các khóa đánh dấu và các chứng nhận của trọng tài. Trong pha kiểm toán, Ngân hàng phải công bố tất cả các khóa đánh dấu và khóa ký không thể chối bỏ x. Do vậy, đối với quá trình truy vết hợp lệ, Ngân hàng phải lưu danh sách các khóa đánh dấu và các chứng nhận của trọng tài cho các đồng tiền bị nghi ngờ. Một điểm yếu khác là khách hàng cần phải có năng lực cao về mặt tính toán để kiểm tra đồng tiền của mình. Khách hàng phải so sánh tất cả các x, xM, với x’ sử dụng công thức ω = (α’)x’mod p. Nếu không thể tìm thấy x hay xM nào phù hợp, khách hàng có thể cãi rằng đồng tiền đã bị truy vết một cách bất hợp pháp. Bên cạnh đó, khi khách hàng cố gắng thử phép toán trên, việc đưa ra danh sách các khóa đánh dấu này làm nảy sinh một vấn đề về an toàn và bảo mật. Khách hàng sẽ kiểm tra trên máy tính cá nhân, do vậy ngân hàng phải gửi dánh sách khóa đánh dấu cho khách hàng, từ đó, khách hàng sẽ biết danh sách này và có thể chuyển giao cho người khác Lược đồ Fair tracing. 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) Hình 10 : Giai đoạn chuẩn bị trong lược đồ Fair tracing. 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 Như vậy đồng tiền là bộ các số ( m’, t’, S1’, S2’, α’, ω’, c0, c1) * 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ị của t’ và g1s1 (α’)s2’ νc’ mod p 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 Hình 11 : Giao thức rút tiền trong lược đồ Fair tracing. 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 TTP 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 Alice Yêu cầu rút tiền. c1 = ga1 mod p Ngân hàng Phần tử sinh mới α Hình 12: Giai đoạn chuẩn bị với TTP. So sánh lược đồ KV và Fair tracing. So với lược đồ KV của D.Kugler và H.Vogt, lược đồ Fair tracing của Byyeong Kon Kim hiệu quả hơn rất nhiều về mặt độ phức tạp tính toán, và không gian lưu trữ dữ liệu, đồng thời khắc phục được một số điểm yêu của lược đồ KV. Giả sử một ngân hàng cỡ trung bình có khoảng một tỷ (106) khách hàng hoặc tài khoản, mỗi khách hàng phải rút và sử dụng khoảng 103 đồng tiền, trong đó có khoảng 1% khách hàng bị nghi ngờ. Trong trường hợp này, có tất cả 109 đồng tiền được phát hành. Với lược đồ KV , phải mất 109 các danh sách khó cho việc truy vết một đồng tiền được gửi vào. Như vậy, độ phức tạp với mỗi đồng tiền, lược đồ Fair tracing hiệu quả gấp 109 lần. Chúng ta sẽ xét tiếp về không gian để lưu trữ đồng tiền và các thông tin cần thiết khác. Trong lược đồ Fair tracing, các thông tin thêm được yêu cầu có kích cỡ gần như tương tự hoặc nhỏ hơn so với lược đồ KV. Lý do là lược đồ KV cần chứng thực của pháp luật và các danh sách thẻ đánh dấu đã được ký. Tuy nhiên, lược đồ Fair tracing cần thêm một số thông tin khác cho lược đồ VSS. Đặc điểm chính hơn hẳn của lược đồ Fair tracing là: Ngân hàng không thể tự mình truy vết một cách bất hợp pháp mà bắt buộc phải hợp tác với nhà cung cấp dưới sự giám sát của pháp luật, tức là lược đồ đã đạt tới tiêu truy vết không gian lận. Ngoài ra, lược đồ Fair tracing an toàn hơn do sử dụng chữ ký một lần và ngăn chặn được double-spending trong pha trả tiền. Ưu điểm nữa của lược đồ Fair tracing là chữ ký có thể được tách rời khỏi giao thức chính, và việc khám phá ra khóa bí mật của một chữ ký không ảnh hưởng đến sơ đồ chữ ký khác mà chỉ ảnh hưởng đến tính bí mật của khách hàng bị truy vết. Trong lược đồ KV, chúng ta đã mặc định coi như có 3 đối tượng hoàn toàn khác nhau, mà không xét đến trường hợp ngân hàng cũng có thể giữ thêm vai trò nhà cung cấp. Trường hợp này khá hiếm, song không phải không xảy ra, bởi cũng có những ngân hàng tham gia kinh doanh một số mặt hàng nào đó. Trong trường hợp này, khách hàng phải tự dưa tất cả các giá trị được chia sẻ cho ngân hàng, do vậy ngân hàng có thể tự mình tìm ra thẻ đánh dấu bí mật. Khi đó, nếu khách hàng không quan tâm đến khả năng truy vết của ngân hàng, họ sẽ sử dụng những đồng tiền được phát hành bởi chính ngân hàng đó, nếu không, họ sẽ phải sử dụng những đồng tiền của những ngân hàng khác. Chương 4: MỘT SỐ HỆ THỐNG TIỀN ĐIỆN TỬ 4.1. HỆ THỐNG DIGICASH. Digicash (còn gọi là E-cash) là một sản phẩm tiền điện tử của công ty Digicash mà sáng lập viên là David Chaum, một chuyên gia quốc tế trong lĩnh vực mật mã. Hệ thống Digicash được thiết kế phục vụ cho các giao dịch an toàn từ PC đến PC thông qua Internet. Giống như mô hình tiền điện tử cơ bản, hệ thống Digicash có ba đối tượng chính: Khách hàng (Alice), nhà cung cấp (Bob) và nhà phát hành (thường là một ngân hàng). Điểm hấp dẫn của Digicash thể hiện ở chỗ hệ thống đảm bảo tính ẩn danh của khách hàng, khách hàng sẽ không cần tiết lộ thông tin cá nhân cho nhà cung c ấp hay ngân hàng ngoại trừ khách hàng cố tình gian lận trong giao dịch. Điều kiện để sử dụng hệ thống là cả Alice và Bob đều phải có tài khoản ở một ngân hàng có hỗ trợ Digicash. Ngoài ra, cần có thêm một phần mềm hỗ trợ việc tạo đồng tiền điện tử gọi là “Cyber wallet” (túi số) 4.1.1. Phương thức hoạt động. Quá trình giao dịch trong hệ thống Digicash gồm 4 pha: Pha 1: Tạo tiền điện tử (Tương ứng với giao thức rút tiền trong mô hình tiền điện tử) * Phía Alice, phần mềm “Cyber wallet” làm nhiệm vụ: - Sinh một dãy các số ngẫu nhiên dùng làm số sê-ri của đồng tiền. Các số này phải đủ dài để đảm bảo tính duy nhất - Gắn mỗi số sê-ri với một giá trị của đồng tiền - Mù hóa các giá trị trên, mã hóa bằng khóa riêng của Alice và gửi cho ngân hàng. * Ngân hàng sau khi nhận được các thông tin từ Alice sẽ thực hiện: - Ký mù lên các đồng tiền - Trừ đi một khoản tiền tương ứng ở trong tài khoản của Alice - Gửi các đồng tiền đã được ký mù cho Alic * Alice sử dụng phần mềm “Cyber wallet” để khử mù đồng tiền và thu được các đồng tiền có chữ ký hợp lệ của ngân hàng. Các đồng tiền này được lưu trên máy của Alice và được quản lý bởi phần mềm “Cyber wallet” Pha 2: Tiêu tiền điện tử (Tương ứng với giao thức trả tiền) - Alice gửi yêu cầu mua hàng đến Bob - Bob gửi thông tin trở lại về máy tính của Alice: thông tin sản phẩm, số tiền cần thanh toán… - Sau khi Alice chấp nhận giao dịch, phần mềm “Cyber wallet” sẽ tự động thu thập các đồng tiền theo đúng yêu cầu. - Alice gửi các đồng tiền điện tử cho Bob Pha 3: Đổi tiền điện tử (Tương ứng với giao thức gửi tiền) Trước khi chấp nhận thanh toán, Bob gửi các đồng tiền điện tử nhận được đến ngân hàng để kiểm tra tính hợp lệ. Ngân hàng kiểm tra chữ ký trên đồng tiền và xem nó được tiêu chưa. Nếu tất cả là hợp lệ, ngân hàng chấp những đồng tiền, tăng tài khoản của Bob tương ứng với số tiền, đồng thời lưu các dãy số trên đồng tiền vào danh sách những đồng tiền đã tiêu. Pha 4: Kết thúc giao dịch Sau khi tất cả đã được kiểm tra hợp lệ, Bob gửi sản phẩm và biên nhận đến Alice và giao dịch kết thúc. 4.4.2. Nhận xét. Ưu điểm của hệ thống Digicash là: Chi phí giao dịch thấp Độ an toàn của hệ thống dựa trên hệ mật mã RSA do mọi tính toán và sơ đồ ký của hệ thống đều dựa trên hệ mật mã này. Đảm bảo tính ẩn danh của người sử dụng. Trong hệ thống Digicash, cả Alice và Bob đều không cần biết lẫn nhau, và Bob cũng không thể liên kết bất cứ thông tin nào giữa Alice và các đồng tiền mà Alice đã tiêu Không phụ thuộc vào phần cứng: hệ thống Digicash không chỉ sử dụng cho PC mà còn có thể được áp dụng cho smart card (thẻ thông minh) và một số thiết bị điện tử khác Nhược điểm của hệ thống Digicash. Việc kiểm tra trực tuyến là cần thiết: Digicash là hệ thống thanh toán trực tuyến, nó đòi hỏi ngân hàng phải tham gia vào tất cả các giao dịch để kiểm tra tính hợp lệ của đồng tiền. Ngoài ra, cơ sở dữ liệu của ngân hàng phải đủ lớn để lưu tất cả các đồng tiền đã được sử dụng Cả khách hàng và nhà cung cấp đều phải có tài khoản ở cùng một ngân hàng có hỗ trợ tiền điện tử Digicash Nếu dữ liệu về các đồng tiền bị phá hủy (do máy tính hỏng, thông tin bị giải mã,…) thì không có cách nào lấy lại những đồng tiền đã bị mất. Lý do là ngân hàng không có mối liên hệ nào giữa đồng tiền và người sở hữu, trừ phi người sở hữu đồng ý bỏ tính ẩn danh khi sử dụng Digicash Tóm lại, mặc dù có những điểm không thuận lợi nhất định song với những ưu điểm của mình, Digicash được đánh giá là một hệ thống tiềm năng. Hiện nay, trên thế giới có một số các ngân hàng đã chấp nhận Digicash như: Ngân hàng Mark Twain (Mỹ), ngân hàng EUnet (Phần Lan), ngân hàng St. George (Đức),… 4.2. HỆ THỐNG PAYWORD PayWord là hệ thống thanh toán cho các giao dịch có giá trị nhỏ (micropayment), được đề xuất bởi Ronald Rivest và Adi Shamir (1996). PayWord phù hợp cho các thanh toán lặp lại nhiều lần với cùng một nhà cung cấp. Giao thức PayWord sử dụng một chuỗi các giá trị băm gọi là các payword, mỗi payword biểu diễn một giá trị nhất định. Hệ thống PayWord bao gồm ba đối tượng chính: User (Người sử dụng) – giả sử là Alice, Broker (Người môi giới, thường là một ngân hàng) và Vendor (Nhà cung cấp) – Giả sử là Bob. 4.2.1. Phương thức hoạt động. Trong Millicent, nhà cung cấp hoặc Broker tạo ra các scrip, còn trong PayWord, người sử dụng tạo ra các payword (tương đương với scrip trong Millicent). Payword có thể được tạo từ trước hoặc ngay khi thực hiện việc mua hàng. Trình tự như sau: Alice mở một tài khoản và nhận một chứng thực PayWord (PayWord Certificate) CU chứa các thông tin như: tên/ID của Broker, khóa công khai của Alice, ngày hết hạn và các thông tin khác được mã hóa bằng khóa bí mật của Broker: CU = {Broker_id, user_public_key, expiration_date, other_info} SK B Với chứng nhận CU, Alice có thể tạo ra các payword sử dụng hàm băm MD5 hay SHA. Cách thức Alice tạo các payword (w1, w2, …, wn) như sau: Trước tiên, Alice lấy wn ngẫu nhiên rồi tính chuỗi các giá trị băm theo thứ tự ngược lại: wi = h(wi+1) với i = n-1, n-2, …, 0 Chú ý rằng w0 không phải là một payword, nó là root của payword và là thành phần chính cấu tạo nên thỏa thuận M giữa Alice và Bob. Một thỏa thuận giữa người sử dụng và nhà cung cấp sẽ gồm các thông tin sau: + w0 + Định danh nhà cung cấp (V – vendor indentity) + Chứng thực của người sử dụng (CU – User’s certificate) + Ngày hết hạn thanh toán (D – expiration date) + các thông tin khác (IM) Alice dùng khóa bí mật của mình để ký lên các thông tin trên, như vậy: M = {w0, V, CU, D, IM}SKU Để mua hàng, trước tiên, Alice gửi M cho Bob. Bob giải mã M, kiểm tra V và D. Chữ ký của Alice được chứng thực bởi CU, do vậy nó ngăn chặn một bên thứ ba giả mạo M. Kể từ bây giờ (cho đến thời điểm expiration_date), bất cứ khi nào cần mua hàng từ Bob, Alice chỉ cần tạo một payword, gửi P = (wi, i) (1£ i £ n) cho Bob. Alice sẽ sử dụng các payword theo thứ tự: w1, w2,… + Bob kiểm tra payword, nếu hợp lệ, Bob lưu cặp payword này vào Plast + Nếu giá trị của mặt hàng lớn hơn giá trị của payword, Alice có thể trả thêm bằng cách bỏ qua các payword. Ví dụ: Giả sử payword chưa tiêu tiếp theo của Alice là wi+1, mỗi payword có trị giá là 1 cent, mặt hàng Alice cần mua có giá 5 cent. Khi đó, Alice có thể bỏ qua 4 payword và gửi (wi+5, i+5). Bob có thể kiểm tra được giá trị này bằng cách băm giá trị payword 5 lần (thực hiện việc băm cho đến khi được kết quả giống như giá trị được lưu trong Plast) Như vậy, tất cả dữ liệu Bob cần lưu trữ chỉ là M và Plast. Sau một chu kỳ (có thể là một ngày, một tuần,…) Bob thông báo lại giá trị của Plast cho Broker. Broker kiểm tra M và tính toán lượng tiền mà Alice đã tiêu bằng cách băm giá trị Plast, từ đó, trừ đi một khoản tương ứng (bằng tổng các giá trị băm được) trong tài khoản của Alice đồng thời tăng tài khoản của Bob. 4.2.2. Nhận xét. Về ưu điểm: Hệ thống PayWord có khả năng ngăn chặn việc giả mạo do: + Trong cùng một chuỗi, các payword đã tiêu là giá trị băm một chiều của các payword chưa tiêu. Do vậy, biết được các payword đã tiêu có thể xác định được các payword chưa tiêu + Một chuỗi payword được xác nhận bởi một thỏa thuận và được ký bởi người sử dụng, còn định danh của người sử dụng được đảm bảo bởi chứng nhận CU được ký bởi Broker. Về nhược điểm: + Việc hệ thống PayWord cho phép người sử dụng tự tạo ra các payword mà không cần đến ngân hàng chứng nhận giúp tăng tính linh hoạt cho người sử dụng lên rất nhiều. Người sử dụng có thể tạo các payword có giá trị theo ý muốn, tuy nhiên, nó cũng giúp cho Bob có kh ả năng gian lận payword. + Nếu Bob phát hiện ra Alice và Carol cùng tạo ra một chuỗi payword giống nhau và giả sử Alice tiêu trước Carol k payword, Bob hoàn toàn bi ết được k payword chưa tiêu của Carol, từ đó Bob có thể gian lận giá trị của k payword đó. Do vậy, hệ thống cần có cơ chế đảm bảo các chuỗi payword của những người sử dụng khác nhau là khác nhau. Tóm lại, PayWord là hệ thống có nhiều ưu điểm. Bản thân PayWord vẫn chưa được phát triển hoàn thiện, song hiện nay, có một số hệ thống thanh toán được phát triển dựa trên mô hình của PayWord như NetPay, UPayWord. 4.3. VẤN ĐỀ DÙNG TIỀN ĐIỆN TỬ Ở VIỆT NAM. Nhu cầu an toàn, an ninh thông tin trên mạng máy tính ngày càng trở nên cấp thiết, đặc biệt là khi thông tin trên giấy được thay dần bằng thông tin “điện tử” (thông tin “số”). Trong xu thế hội nhập quốc tế và khu vực, vấn đề giao dịch điện tử đã trở thành một xu thế tất yếu đối với tất cả các nước trên thế giới, trong đó có Việt Nam. Với tình hình nước ta hiện nay, khóa luận xin đưa ra một số đề nghị về khả năng sử dụng tiền điện tử ở Việt Nam. 1/. Xây dựng “đường đi” an toàn cho đồng tiền điện tử. Việc xây dựng “đường đi” an toàn cho đồng tiền điện tử, cụ thể là việc xây dựng một Cơ sở hạ tầng về mật mã khóa công khai, viết tắt là PKI (Public Key Infrastructure). Ở đây, PKI được hiểu là tập hợp các công cụ, phương tiện cùng các giao thức bảo đảm an toàn truyền tin cho các giao dịch trên mạng máy tính công khai. PKI là nền móng mà trên đó, các ứng dụng, các hệ thống an toàn bảo mật thông tin được thiết lập. Việc xây dựng PKI đồng nghĩa với việc xây dựng ba thành phần chính cấu thành nên PKI, bao gồm: + Xây dựng tập hợp các công cụ, các phương tiện, các giao thức bảo đảm an toàn thông tin. + Xây dựng hành lang pháp lý cho PKI, bao gồm: Luật giao dịch điện tử, các Quy định dưới luật. + Xây dựng các tổ chức điều hành giao dịch điện tử (CA, RA, LRA,…). Hiện nay có rất nhiều hệ thống đang được tin học hóa và con người là yếu tố quan trọng trong các hệ thống đó. Người sử dụng chỉ sử dụng hệ thống khi họ thực sự thấy tiện lợi và tin cậy. Tức là, chỉ có những hệ thống đảm bảo tin cậy mới được người sử dụng ủng hộ, khi đó nó gián tiếp thúc đẩy việc tin học hóa nói chung và lĩnh vực thương mại điện tử nói riêng. PKI là hệ thống đảm bảo tin cậy. Chỉ khi xây dựng được PKI, đồng tiền điện tử mới có thể “di chuyển” một cách an toàn từ nơi này sang nơi khác. 2/. Xây dựng các cơ sở bảo vệ “ví tiền” của người sử dụng. “Ví điện tử” là một phương tiện thanh toán mới so với các phương tiện thanh toán đã có từ lâu như thẻ tín dụng hay séc, nó cho phép ng ười sử dụng giao dịch với ngân hàng để nhận hay gửi tiền. Với “ví điện tử”, tiền điện tử được chuyển vào “ví tiền” của người sử dụng trước khi người sử dụng tiến hành bất cứ giao dịch nào. Cách thức này của “ví điện tử” giống hệt như ví tiền thông thường. Vấn đề đặt ra là làm sao để bảo đảm an toàn cho “ví tiền” của người sử dụng. Giải pháp cho vấn đề này chính là thẻ thông minh (Smart Card). Với thẻ thông minh, một con chip được gắn ngay trên mặt trước thẻ. Con chip này có khả năng lưu trữ lượng thông tin rất lớn. Nó có thể là một con chip thông thường hoặc một bộ vi xử lý. Ưu điểm của thẻ thông minh là khả năng bảo vệ dữ liệu khỏi sự truy nhập trái phép từ bên ngoài. Lý do là dữ liệu trên thẻ chỉ có thể được truy nhập thông qua các giao diện điều khiển bởi hệ điều hành, dữ liệu bí mật (như khóa công khai của người sử dụng, các chứng nhận,…) được ghi lên thẻ theo cách mà bên ngoài không thể đọc được. Thêm vào đó, dữ liệu trong thẻ chỉ có thể được đọc bởi CPU của thẻ. Ở Việt Nam, thẻ thông minh vẫn chưa thực sự phổ biến, chủ yếu chỉ là những loại hình thẻ thông minh đơn giản như SIM điện thoại di động. Hiện nay, thẻ thông minh mới được sản xuất bởi MK Technology Group – nhà sản xuất thẻ thông minh chuyên nghiệp, còn lại hầu hết được nhập dưới dạng thẻ trắng. Sau đó, các nhà phân phối sẽ nạp thông tin và cài đặt phần mềm tùy theo yêu cầu của khách hàng. Với xu thế hiện nay, việc sản xuất và đưa vào sử dụng các loại hình thẻ thông minh đã trở thành yêu cầu cấp thiết để xây dựng nền tảng cho thương mại điện tử nói chung và tiền điện tử nói riêng. 4.4. DEMO HỆ THỐNG TIỀN ĐIỆN TỬ DỰA TRÊN LƯỢC ĐỒ KV. Chương trình mô phỏng lược đồ KV, viết bằng ngôn ngữ C++ trên nền chương trình Dev-C 4.9.9.2. Chương trình dược chia làm 4 modul chính: Modul 1: Các hàm tính toán . Hàm tính modulo(a, n). Hàm tính a^n( mod p). Hàm tính a-1( mod p). Modul 2: Chuẩn bị các tham số. Hàm tính khóa công khai của ngân hàng cho chữ ký mù. Hàm tính khóa công khai của ngân hàng cho chữ ký không thể chối bỏ. Modul 3: Giao thức rút tiền: Hàm tính chữ ký không thể chối bỏ của Ngân hàng. Hàm tính chữ ký mù của khách hàng. Hàm tính tiền mà Ngân hàng gửi cho Khách hàng. Hàm xóa mù của Khách hàng. Modulo 4: Giao thức kiểm thử. Hàm kiểm tra đồng tiền có hợp lệ hay không. KẾT LUẬN Khóa luận đã trình bày những kiến thức tổng quát về tiền điện tử, nghiên cứu và phân tích giải pháp cho các bài toán này sinh khi dùng tiền điện tử. Những kết quả chính của luận văn là: 1/. Nghiên cứu và tìm hiểu trong tài liệu để hệ thống lại các vấn đề sau: - Các khái niệm cơ bản về số học và độ phức tạp thuật toán. Đây là các khái niệm được sử dụng trong mật mã học. - Các kiến thức nền tảng về mã hóa và chữ ký điện tử. - Các kiến thức tổng quan về thương mại điện tử và tiền điện tử. - Cơ sở khoa học của tiền điện tử: + Khái niệm, mô hình, tính chất và cấu trúc của tiền điện tử. + Tìm hiểu và so sánh hai hệ thống thanh toán điện tử: hệ thống thanh toán trực tuyến và hệ thống thanh toán ngoại tuyến. + Nghiên cứu và phân tích giải pháp cho hai vấn đề cơ bản của tiền điện tử: + Vấn đề ẩn danh người sử dụng tiền điện tử. + Vấn đề ngăn chặn tiêu một đồng tiền nhiều lần 2/. Nghiên cứu và phân tích hai hệ thống thanh toán điện tử hiện nay trên thế giới, bao gồm: DigiCash (đại diện cho các hệ thống hiện đang được sử dụng), và PayWord (đại diện cho các hệ thống đang trong giai đoạn đề xuất). 3/. Đề xuất về khả năng sử dụng tiền điện tử ở Việt Nam. 4/. C trình Demo về Hệ thống tiền điện tử, dựa trên lược đồ KV. Hướng phát triển tiếp theo của luận văn là nghiên cứu sâu hơn nữa về vấn đề double-spending trong tiền điện tử, phân tích các mô hình tiền điện tử, phát hiện các lỗ hổng an toàn trong các mô hình tiền điện tử và đề xuất các mô hình Tiền điện tử hiệu quả. DANH MỤC TÀI LIỆU THAM KHẢO Tiếng Việt. GS Phan Đình Diệu (2006), Lý thuyết Mật Mã và An toàn thông tin, nhà xuất bản Đại học quốc gia Hà nội. PGS.TS Trịnh Nhật Tiến (2007), Giáo trình An toàn dữ liệu. PGS.TS Trịnh Nhật Tiến (2007), Bài giảng môn Phân tích đánh giá thuật toán. PGS.TS Trịnh Nhật Tiến , thanh toán bằng Tiền “điện tử”. Tiếng Anh. Byeong Kon Kim, School of Engieering, Information and Communications University (2004), Bài viết “Design of Fair Tracing E_Cash System based on Blind Signature” trên trang web. Digicash, home page. D.Chaum, A.Fiat, and M.Naor, Untraceable electronic cash, In Advances in Cryptology-Crypto '88. Ricarda Weber. Digital Payment Systems. 2000.

Các file đính kèm theo tài liệu này:

  • docNghiên cứu một số giải pháp công nghệ thông tin trong việc sử dụng tiền điện tử.doc