Khóa luận Nghiên cứu một số giao thức thanh toán qua mạng công khai

NGHIÊN CỨU MỘT SỐ GIAO THỨC THANH TOÁN QUA MẠNG CÔNG KHAI Trong xu thế hội nhập quốc tế và khu vực thanh toán điện tử từ xa qua hệ thống mạng công khai đã trở thành một xu thế tất yếu. Việt Nam cũng đã bắt đầu thử nghiệm. Mặc dù vẫn còn khá mới mẻ nhưng chắc chắn nó sẽ là một xu hướng trong tương lai. Mặc dù vậy, để các phương thức thanh toán điện tử có thể thâm nhập vào cuộc sống và trở nên phổ biến thì cần phải một quá trình nghiên cứu và phát triển hệ thống này. Khóa luận sẽ trình bày những kiến thức khái quát nhất về thanh toán từ xa, sau đó sẽ tập trung nghiên cứu các giao thức thanh toán bằng tiền mặt điện tử dựa trên lý thuyết mật mã. Khóa luận sẽ trình bày hai thuật toán phổ biến và được đánh giá là tốt nhất cho việc thanh toán điện tử qua mạng công khai. Đồng thời khóa luận cũng sẽ xây dựng một hệ thống điện tử đã được phát triển trên thế giới đó là hệ thống Digital Cash System. Trong những năm gần đây, sự phát triển mạnh mẽ của Internet đã làm thay đổi cuộc sống của con người, trong đó hoạt động thương mại có những bước thay đổi tích cực. Thương mại điện tử (TMĐT) dựa trên cơ sở mạng Internet là một phương thức hoạt động mới của thương mại. Đối với TMĐT thì khâu quan trọng nhất là “thanh toán” bởi vì mục tiêu cuối cùng của cuộc trao đổi thương mại là việc hàng hóa được giao đến cho người mua và người bán nhận được số tiền tương ứng. Thanh toán từ xa qua mạng công khai là một phương pháp thanh toán được thực hiện trên máy tính, các bên tham gia giao dịch có thể thực hiện thanh toán mà không cần phải gặp trực tiếp Vấn đề an toàn thông tin trong mọi giao dịch luôn là một yêu cầu nhất thiết phải có đối với mọi hoạt động thương mại, đặc biệt là các hoạt động thương mại qua mạng công khai. Các thành tựu của ngành mật mã, đặc biệt là lý thuyết mật mã khóa công khai đã cung cấp các giải pháp cho vấn đề an toàn thông tin cho các hoạt động thương mại, tạo cơ sở cho việc xây dựng các hệ thống thanh toán điện tử Sự phát triển trong lĩnh vực nghiên cứu về hệ thống thanh toán điện tử, với sự ra đời của các mô hình thanh toán như mô hình Untraceable Electronic Cash của FIAT-CHAUM-NAOR, hệ thống DCASH đã tạo nền móng để xây dựng và đưa vào sử dụng các hệ thống thanh toán điện tử. Trong khuôn khổ khóa luận, em sẽ nghiên cứu một cách tổng quan về thanh toán từ xa qua mạng công khai, các cơ sở mật mã được ứng dụng trong thanh toán từ xa. Nghiên cứu một số giao thức thanh toán tiêu biểu và tạo chương trình mô phỏng hệ thống thanh toán Digital-Cash. Khóa luận bao gồm: Lời mở đầu: Trình bày sơ lược về thanh toán từ xa qua mạng công khai Chương 1: Các khái niệm cơ bản Chương 2: Tổng quan về thanh toán từ xa Chương 3: Các giao thức thanh toán tiền điện tử Chương 4: Chương trình mô phỏng hệ thống Digital Cash 1 LỜI CẢM ƠN1 TÓM TẮT NỘI DUNG2 LỜI MỞ ĐẦU7 Chương 1. CÁC KHÁI NIỆM CƠ BẢN9 1.1CÁC KHÁI NIỆM TRONG TOÁN HỌC9 1.1.1Số nguyên tố và nguyên tố cùng nhau. 9 1.1.2Hàm F Euler. 9 1.1.3Đồng dư thức. 10 1.1.4Không gian Zn và Zn*. 11 1.1.5Khái niệm phần tử nghịch đảo trong Zn. 11 1.1.6Khái niệm nhóm12 1.1.7Các phép tính cơ bản trong không gian modulo. 13 1.1.8Hàm một phía và hàm một phía có cửa sập. 13 1.1.9Độ phức tạp tính toán. 15 1.2HỆ MÃ HÓA16 1.2.1Khái niệm mã hoá. 16 1.2.2Hệ mã hoá đối xứng. 16 1.2.3Hệ mã hoá công khai18 1.3CHỮ KÝ SỐ20 1.3.1Khái niệm chữ ký số. 20 1.3.2Các loại chữ ký số. 22 1.3.2.1Chữ ký RSA22 1.3.2.2Chữ ký một lần. 23 1.3.2.3Chữ ký mù. 24 1.3.2.4Chữ ký nhóm26 1.3.2.5Chữ ký mù nhóm27 1.4MỘT SỐ VẤN ĐỀ LIÊN QUAN28 1.4.1Chứng chỉ số. 28 1.4.2Đại diện thông điệp. 29 1.4.3Giao thức cắt và chọn (Cut and Choose). 30 1.4.4Giao thức chia sẻ bí mật (Secret Spliting). 30 Chương 2. TỔNG QUAN VỀ THANH TOÁN TỪ XA31 2.1GIỚI THIỆU VỀ THANH TOÁN TỪ XA31 2.1.1Khái niệm thanh toán từ xa. 31 2.1.2Các mô hình thanh toán. 32 2.1.2.1Mô hình trả sau. 32 2.1.2.2Mô hình trả trước. 34 2.1.3Thanh toán trực tuyến và thanh toán ngoại tuyến. 35 2.2MỘT SỐ PHƯƠNG THỨC THANH TOÁN TỪ XA36 2.2.1Thanh toán bằng các loại thẻ. 36 2.2.2Thanh toán bằng séc điện tử. 37 2.2.3Thanh toán bằng tiền mặt điện tử. 38 2.3ĐẶC TRƯNG CỦA HỆ THỐNG THANH TOÁN TỪ XA39 Chương 3. CÁC GIAO THỨC THANH TOÁN BẰNG TIỀN ĐIỆN TỬ40 3.1GIỚI THIỆU VỀ TIỀN ĐIỆN TỬ . 40 3.1.1Khái niệm tiền điện tử. 40 3.1.2Cấu trúc tiền điện tử. 40 3.1.3Phân loại tiền điện tử. 41 3.1.4Tính chất của tiền điện tử. 42 3.2CÁC GIAO THỨC VỚI TIỀN ĐIỆN TỬ . 44 3.2.1Các giao thức thanh toán cùng ngân hàng. 44 3.2.2Các giao thức thanh toán trong liên ngân hàng. 46 3.3MỘT SỐ LƯỢC ĐỒ TIỀN ĐIỆN TỬ . 48 3.3.1Lược đồ CHAUM-FIAT-NAOR48 3.3.1.1Lược đồ. 48 3.3.1.2Phân tích – đánh giá. 50 3.3.2Lược đồ hệ thống Digital Cash. 51 3.3.2.1Lược đồ. 51 3.3.2.2Đánh giá. 53 Chương 4.CHƯƠNG TRÌNH MÔ TẢ HỆ THỐNG DIGITAL CASH54 4.1Giới thiệu. 54 4.2Yêu cầu và kiến trúc của hệ thống. 54 4.3Công cụ thực hiện. 54 4.4Hướng dẫn sử dụng hệ thống đối với khách hàng. 55 4.4.1Cấu hình. 56 4.4.2Nhận đồng tiền và khóa công khai của nó. 56 4.4.3Rút tiền. 57 4.4.4Tiêu tiền. 58 TÀI LIỆU THAM KHẢO60

doc62 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2474 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Khóa luận Nghiên cứu một số giao thức thanh toán qua mạng công khai, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ng ngược lại việc tính giá trị x khi đã biết y là khó. Không đòi hỏi kênh truyền bí mật vì khoá mã hoá được công khai cho tất cả mọi người. Nhược điểm Tốc độ mã hoá chậm hơn so với mã hoá khoá đối xứng Một số thuật toán mã hoá khoá công khai RSA: độ dài khoá 512 đến 1024 bit, loại mã này được dùng nhiều nhất cho web và chương trình email. ElGamal: độ dài khoá từ 512 đến 1024 bit. CHỮ KÝ SỐ Khái niệm chữ ký số Lược đồ chữ ký số là phương pháp ký một thông điệp lưu dưới dạng điện tử. Và thông điệp được ký này có thể được truyền trên mạng. Với chữ ký truyền thống, khi ký lên một tài liệu thì chữ ký là bộ phận vật lý của tài liệu được ký. Tuy nhiên, chữ ký số không được gắn một cách vật lý với thông điệp được ký. Để kiểm tra chữ ký đối với chữ ký truyền thống việc kiểm tra bằng cách so sánh nó với những chữ ký gốc đã đăng ký. Tất nhiên, phương pháp này không an toàn lắm vì nó tương đối dễ đánh lừa bởi chữ ký của người khác. Trong khi chữ ký số thì được kiểm tra bằng cách dùng thuật toán kiểm tra đã biết công khai. Như vậy, “người bất kì” có thể kiểm tra chữ ký số. Việc sử dụng lược đồ ký an toàn sẽ ngăn chặn khả năng đánh lừa (giả mạo chữ ký). Chữ ký điện tử phải đáp ứng được các yêu cầu: Chứng thực: Chữ ký thuyết phục được người nhận rằng văn bản chứa nó là do người ký gửi đến. Chống giả mạo: Chữ ký là bằng chứng cho việc người ký đã ký lên, bởi không ai có thể giả mạo chữ ký của người ký. Chống tái sử dụng: Chữ ký không chỉ đặc trưng cho người ký mà còn cả văn bản chứa nó, người ta không thể di chuyển chữ ký vào một tài liệu khác với vai trò như chữ ký hợp pháp của văn bản ấy. Chống thay đổi văn bản: Sau khi văn bản được ký, nó không thể bị sửa đổi vì mọi sự sửa đổi đều dẫn đến chữ ký không hợp lệ. Chống phủ nhận: Người ký không thể phủ nhận chữ ký của mình trên văn bản. Một sơ đồ chữ ký số là bộ 5 (P, A, K, S, V) thoả mãn các điều kiện dưới đây: P: tập hữu hạn các thông điệp A: tập hữu hạn các chữ ký. K: tập hữu hạn các khoá (không gian khoá). Với mỗi K thuộc K tồn tại một thuật toán ký B và một thuật toán xác minh V. Mỗi và là những hàm sao cho mỗi bức điện và mỗi chữ ký thoả mãn phương trình dưới đây: True: nếu y = sig(x) False: nếu y # sig(x) Ver(x,y) = Các loại chữ ký số Chữ ký RSA Sơ đồ ký RSA (đề xuất 1978) 1. Sinh khoá Cho n = pq trong đó, p và q là các số nguyên tố. Khi đó: K = {(n, p, q, a, b | n=p*q, p và q là các số nguyên tố và } Các giá trị n và b là công khai, và các giá trị a, p, q là bí mật. 2. Ký Với mỗi K = {n, p, q, a, b} và x Î P ta định nghĩa: y = sigk(x) = xa mod n , y Î A. 3. Kiểm tra chữ ký verk(x,y)= true x yb mod n Hình 1. 3: Sơ đồ ký RSA Chữ ký một lần Sơ đồ chữ ký dùng một lần (one-time signature) là khái niệm vẫn còn khá mới mẻ song rất quan trọng, đặc biệt là trong một số mô hình về tiền điện tử. Khóa luận sẽ trình bày về sơ đồ chữ ký dùng một lần của Schnorr. Với sơ đồ chữ ký dùng một lần của Schnorr, những người dùng trong cùng hệ thống có thể chia sẻ một số ngẫu nhiên g và hai số nguyên tố p và q sao cho: q|(p-1), q¹1 và gp º 1 mod q. Sơ đồ ký như sau: 1. Sinh khoá Người dùng, giả sử là Alice, chọn Sk Î Zq ngẫu nhiên làm khóa bí mật Tính mod p làm khóa công khai 2. Ký: Giả sử Alice cần ký lên thông điệp m Alice lấy ngẫu nhiên r Î Zq* Tính x = gr mod p Tính c = H(m||x) Tính y = (r + cSk) mod q Chữ ký trên thông điệp m là cặp (c, y) 3. Kiểm tra chữ ký: Ver = true Û x = gr mod p và c = H(m||x) Hình 1. 4: Sơ đồ chữ ký một lần của Schnorr Nhận xét: Số r không được dùng quá một lần để tạo ra các chữ ký khác nhau. Giả sử Alice sử dụng r để ký hai thông điệp m và m’, tạo ra hai chữ ký là (c, y) và (c’, y’). Khi đó, ta có: Như vậy, nếu Alice sử dụng r quá một lần cho hai thông điệp khác nhau, bất kỳ ai có hai thông điệp trên đều có thể giải mã được khóa bí mật Sk. Vì vậy sơ đồ chữ kí loại này được gọi là sơ đồ chữ ký dung một lần Chữ ký mù 1) Giới thiệu chữ ký mù Chữ ký mù được Chaum giới thiệu vào năm 1983. Mục đích của chữ ký mù là làm sao mà người ký lên văn bản mà không được biết nội dung văn bản, nghĩa là có được chữ ký trên x P mà không cho người ký biết giá trị x. Các bước tiến hành như sau: 1/ Làm mù x: A làm mù x bằng một hàm: z = Blind(x) và gửi z cho B. 2/ Ký: B ký trên z bằng hàm y = Sign(z) = Sign(Blind(x)) và gửi lại y cho A. 3/ Xoá mù: A tiến hành xoá mù trên y bằng hàm Sign(x) = UnBlind(y) = UnBlind(Sign(Blind(x))). Hình 1. 5: Sơ đồ chữ ký mù Chứ kí mù được áp dụng trong kỹ thuật bỏ phiếu từ xa và hệ thống e-money ẩn danh Chữ kí mù dựa trên chữ ký RSA Bài toán là A muốn lấy chữ ký của B trên x nhưng không muốn cho B biết x. Quá trình thực hiện như sau: Lấy p,q là các số nguyên tố lớn, n=p*q,  (n) = (p-1)*(q-1), ab = 1 mod (n), r là một số ngẫu nhiên Zn 1/ Làm mù x: A làm mù x bằng hàm: Blind(x) = x*rb mod n=z và gửi z cho B. r được chọn sao cho tồn tại phần tử nghịch đảo r-1(mod n) 2/ Ký: B ký trên z bằng hàm Sign(z) = Sign(Blind(x)) = za mod n=y và gửi lại y cho A. 3/ Xoá mù: A tiến hành xoá mù y bằng thuật toán: UnBlind(y) = UnBlind(Sign(Blind(x))) = y* mod n = sign(x). Hình 1. 6: Sơ đồ chữ ký mù dựa trên chữ ký RSA Ví dụ: Giả sử ông A gửi ông B thông điệp x=8. Ông B ký lên thông điệp x đã được làm mù, thông điệp được ký sẽ gửi lại ông A, ông A xoá mù. 1/ Theo ví dụ ở phần chữ ký RSA, khi ký trên x=8 thì chữ ký là: Sign(x)= xamod n= 87 mod 15 = 2=y. 2/ Quy trình “ký mù”: ba bước. Bước 1 (làm mù): làm mù x=8 Blind(x)=x * rb(mod n) = 8 * 57(mod 15)=8*78125(mod 15) = 625000 mod 15 = 10 = z với r = 5 là số ngẫu nhiên Î Z15. Bước 2 (ký): ký trên z y =Sig(z)= za (mod n) = 107(mod 15)= 10000000 (mod 15) = 10. Bước 3 (xoá mù): xoá mù y= 10 UnBlind(y)= y / r (mod n) = 10 / 5 (mod 15) = 2. (Bởi vì 2*5(mod 15)=10) Chữ ký nhóm Người tin cậy Z là trưởng nhóm chọn hệ thống khóa bí mật, Z chuyển cho mỗi thành viên trong nhóm một danh sách các khóa bí mật (các danh sách này là khác nhau) và công bố một danh sá ch các khóa công khai tương ứng (theo thứ tự ngẫu nhiên) trong thư mục công khai tin tưởng. Mỗi thành viên trong nhóm có thể ký bằng khóa bí mật si trong danh sách của anh ta. Người nhận kiểm tra chữ ký bằng khóa công khai tương ứng: h = mod p. Mỗi khóa bí mật si chỉ được sử dụng một lần Z biết danh sách khóa bí mật của mỗi thành viên, vì trong trường hợp cần thiết anh ta biết được ai đã tạo ra chữ ký đó. Để làm được điều này Z mở một chữ ký Theo sơ đồ này Z biết danh sách bí mật của mọi thành viên và có thể giả mạo chữ ký. Điều này có thể giải quyết bằng việc sử dụng các khóa công khai mù Cải biên 1 Chọn p là số nguyên tố, g là phần tử sinh của nhóm nhân Zp*. Thành viên thứ i tự chọn khóa bí mật “thực sự” của mình là si, khóa công khai “thực sự” là h = mod p. Trưởng nhóm Z có danh sách các khóa công khai khác nhau và tên các thành viên tương ứng trong nhóm Mỗi tuần đưa cho thành viên i một số ngẫu nhiên ri {1, 2, …, p-1}, trong tuần này, thành viên i sẽ sử dụng s i r i mod (p-1) làm khóa bí mật “mù”. (Khóa mật si đã bị che bởi ri). Khóa công khai “mù” tương ứng là h - mù = = . 2) Cải biên 2 Không cần phải có nhóm trưởng, mỗi thành viên của nhóm gửi các khóa công khai của họ vào một danh sách khoá công khai của nhóm. Chỉ những thành viên của nhóm mới có thể gửi các khóa công khai vào danh sách này. Chữ ký mù nhóm Chữ ký số “mù nhóm” kết hợp thuộc tính của chữ ký “nhóm” và chữ ký “mù”. Sơ đồ chữ ký số “mù nhóm” được Lysyanskaya và Ramzam đưa ra năm 1998. Các thủ tục trong sơ đồ chữ ký “mù nhóm”: Setup: Dùng thuật toán xác suất để sinh khoá công khai g của nhóm và khoá quản lý bí mật V cho Trưởng nhóm. Join: Giao thức tương tác giữa Trưởng nhóm và thành viên mới của nhóm để cung cấp cho thành viên này khoá bí mật a và chứng nhận thành viên b. Sign: Giao thức tương tác giữa thành viên nhóm là Bob và người dùng bên ngoài nhóm là Alice có thông điệp m, để Bob có thể tạo chữ ký $ trên thông điệp này. Verify: Giải thuật có đầu vào (m, $, g) để kiểm tra chữ ký $ trên thông điệp m. Open: Giải thuật có đầu vào ($, z) để xác định thành viên của nhóm đã ký chữ ký $. Hình 1. 7: Sơ đồ chữ ký mù nhóm MỘT SỐ VẤN ĐỀ LIÊN QUAN Chứng chỉ số Chứng chỉ khóa công khai là giấy chứng nhận khóa công khai của một thực thể (gọi tắt là chứng chỉ số). Sử dụng chứng chỉ số có thể đảm bảo được các mục tiêu chung của các hệ thống bảo mật: Tính bí mật: Tài nguyên chỉ có thể được truy cập bởi người có thẩm quyền. Tính toàn vẹn: Tài nguyên chỉ được sửa đổi bởi người có thẩm quyền. Tính khả dụng: Tài nguyên luôn được sẵn sàng đáp ứng cho người có thẩm quyền. Việc ứng dụng hệ mã hoá công khai trong bảo mật thông tin rất quan trọng. Tuy nhiên, có một vấn đề nảy sinh là nếu hai người không quen biết nhau nhưng muốn tiến hành giao dịch thì làm sao họ có thể có mã công khai của nhau. Giả sử Alice muốn giao tiếp với Bob, Alice sẽ vào website của Bob để lấy khóa công khai. Alice sẽ gõ địa chỉ URL của Bob trên trình duyệt, trình duyệt sẽ tìm DNS của trang Web và gửi yêu cầu của Alice. Nhưng không may là kẻ giả mạo Oscar lại nhận yêu cầu của Alice và trả về trang Web của Oscar là bản sao của Bob hoàn toàn giống trang web của Bob khiến cho Alice không thể phát hiện được. Như vậy lúc này Alice sẽ có khoá công khai từ Oscar chứ không phải là của Bob. Alice tiến hành mã hoá thông điệp bằng khoá công khai, Oscar sẽ giải mã thông điệp, đọc thông tin và mã hóa lại bằng khoá công khai của Bob và gửi thông điệp cho Bob. Như vậy cả Alice và Bob hoàn toàn không biết có kẻ thứ ba là Oscar đã đọc được nội dung của thông điệp, trường hợp xấu hơn Oscar sẽ thay đổi nội dung của thông điệp trước khi gửi cho Bob. Như vậy bài toán đặt ra là phải có một kỹ thuật để đảm bảo rằng khóa công khai được trao đổi an toàn không giả mạo. Để giải quyết vấn đề này cần một tổ chức cung cấp chứng nhận rằng khóa công khai này thuộc về một người, một công ty hay tổ chức. Tổ chức gọi là CA (Certification Authority), và chứng nhận này gọi là chứng thực số hay chứng chỉ số. Đại diện thông điệp 1) Định nghĩa Hàm H sinh ra giá trị băm h theo công thức: h=H(M) Trong đó: M là thông điệp có độ dài thay đổi H(M) là giá trị băm có độ dài cố định Giá trị băm sinh ra được gắn vào thông điệp nguồn, người nhận xác thực thông báo bằng cách tính lại giá trị băm so với thông điệp hiện tại và so sánh với giá trị băm gắn trên thông điệp nguồn. Nếu kết quả so sánh giống nhau là hợp lý. 2) Các thuộc tính của hàm băm Tham số của H là một khối dữ liệu có kích thước bất kỳ Hàm băm H là hàm một chiều, nghĩa là dễ dàng tính H(x) cho bất kỳ giá trị x nhưng “khó” có thể tìm được x khi biết H(x) = h. H sinh ra giá trị băm có độ dài cố định. Hai văn bản giống hệt nhau thì qua hàm băm phải cho ra đại diện giống nhau Với mỗi đại diện chỉ có duy nhất một bản gốc tương ứng (trên thực tế) 3) Một số hàm băm MD5 (Message Digest): 128 bit, nhanh và được sử dụng rộng rãi. SHA (Secure Hash Algorithm): 160 bit Giao thức cắt và chọn (Cut and Choose) Giao thức này được Rabin sử dụng đầu tiên vào năm 1978. Ý tưởng của giao thức này là: Alice cắt thông điệp thành 2 phần. Bob chọn một trong 2 phần. Alice giữ phần còn lại. Ở đây là Alice không biết Bob sẽ chọn phần nào. Trong hệ thống tiền điện tử, vấn đề đặt ra là làm sao có thể ngặn chặn việc Alice gửi những đồng tiền không trung thực cho nhà cung cấp để ký. Bởi vì trước khi gửi, những đồng tiền đã được Alice làm mù. Vấn đề này có thể giải quyết được bằng cách áp dụng giao thức cắt chọn. Alice gửi k đồng tiền đã làm mù đến tổ chức phát hành (ngân hàng). Tổ chức phát hành chọn k/2 đồng tiền, yêu cầu Alice cung cấp thông tin để xoá mù k/2 đồng tiền này và kiểm tra để đảm bảo rằng Alice không gian lận. Nếu không có lỗi xảy ra, tổ chức phát hành sẽ ký lên những đồng tiền còn lại và gửi chúng cho Alice. Giao thức chia sẻ bí mật (Secret Spliting) Giao thức chia sẻ bí mật thường được dùng, khi người ta có một bí mật M nhưng không muốn để lộ ra, nên chia nhỏ thành nhiều phần P1, …, Pk với các yêu cầu sau: Từ mỗi phần hoặc một số phần (không phải cả k phần) không thể tính được M. Với tất cả các phần P1, …, Pk, người ta có thể tính được bí mật M. Sơ đồ ngưỡng là một dạng sơ đồ chia sẻ bí mật đặc biệt Cho t, w là các số nguyên dương, t≤w. Sơ đồ ngưỡng A(t, w) là một phương pháp phân chia bí mật K cho một tập gồm w thành viên sao cho t bất kỳ có thể tính được K, nhưng một nhóm gồm t-1 thành viên không thể làm được việc đó. Chương 2. TỔNG QUAN VỀ THANH TOÁN TỪ XA GIỚI THIỆU VỀ THANH TOÁN TỪ XA Khái niệm thanh toán từ xa Thanh toán là một trong những vấn đề phức tạp nhất của hoạt động thương mại điện tử (TMĐT). Hoạt động TMĐT chỉ phát huy được tính ưu việt của nó khi áp dụng được hình thức thanh toán từ xa (thanh toán điện tử). Thanh toán điện tử (electronic payment) là việc thanh toán tiền thông qua các thông điệp điện tử (electronic message) thay cho việc thanh toán bằng séc hay tiền mặt. Bản chất của mô hình TTTX cũng là mô phỏng lại những mô hình mua bán truyền thống, nhưng từ các thủ tục giao dịch, thao tác xử lý dữ liệu rồi thực hiện chuyển khoản, tất cả đều thực hiện thông qua hệ thống máy tính được nối mạng bằng các giao thức riêng chuyên dụng. Về mặt mô hình, một phương thức thanh toán nói chung là một mô tả hoạt động của một hệ thống xử lý phân tán có nhiều bên tham gia, trong đó có hai bên cơ bản là bên mua (người trả tiền) và bên bán (người được trả tiền). Các bên được đại diện bởi các máy tính của mình nối với nhau qua mạng máy tính, sử dụng chúng để thực hiện các giao thức thanh toán. Hệ thống có thể có các tổ chức tài chính (ví dụ các ngân hàng) đại diên cho mỗi bên. Trong một số hệ thống thanh toán lại sử dụng một thực thể khác đóng vai trò là người môi giới, đảm nhiệm việc phát hành những hình thức của tiền hoặc một vật thể nào đó mang giá trị trao đổi thanh toán thường được gọi là đồng tiền số (digital coin) hoặc séc điện tử (electronic cheque) và đổi lại thành tiền mặt. Đặc trưng của mô hình TTTX là các bên tham gia sẽ trao đổi với nhau các chứng từ được số hóa (thành những chuỗi bit máy tính có thể sử dụng được ). Bản chất là bên được thanh toán có thể thông qua ngân hàng của mình để chuyển tiền vào tài khoản của mình. Các quá trình này sẽ được phản ánh trong các giao thức thanh toán của mỗi hệ thống. Các mô hình thanh toán Hệ thống TTĐT thực hiện thanh toán cho khách hàng theo một số cách mà tiền mặt và séc thông thường không thể làm được. Hệ thống thanh toán cũng cung cấp khả năng thanh toán hàng hoá và dịch vụ qua thời gian, bằng cách cho phép người mua trả tiền ngay, trả tiền sau hoặc trả tiền trước. Mô hình trả sau Trong mô hình này, thời điểm tiền mặt được rút ra khỏi tài khoản bên mua để chuyển sang bên bán, xảy ra ngay (pay-now) hoặc sau (pay-later) giao dịch mua bán. Hoạt động của hệ thống dựa trên nguyên tắc tín dụng (credit credential). Nó còn được gọi là mô hình mô phỏng Séc (Cheque-like model) Ngân hàng đại diện bên mua Alice Bob Ngân hàng đại diện bên bán Chuyển tiền mặt thực sự Thông báo lưu ý Chuyển khoản Chứng từ tín dụng Hình 2. 1: Mô hình mô phỏng séc Với mô hình mô phỏng Séc, bên mua sẽ trả cho bên bán một chứng từ tín dụng (credit credential) nào đó có tác dụng giống như séc. Bên bán có hai cách lựa chọn: chấp nhận giá trị thay thế của tín dụng đó và chỉ liên lạc chuyển khoản với ngân hàng của mình sau này (pay-later), hoặc liên lạc với ngân hàng của mình trong quá trình mua bán, việc chuyển khoản xảy ra ngay trong giao dịch (pay-now). Với pha chuyển khoản, người được thanh toán sẽ nêu yêu cầu chuyển khoản với ngân hàng đại diện của mình để thực hiện liên lạc với ngân hàng đại diện của người thanh toán, thực hiện kiểm tra/chấp nhận chứng từ tín dụng, khi đó việc chuyển tiền thực sự sẽ diễn ra giữa tài khoản của người thanh toán và người được thanh toán. Kết thúc quá trình này, ngân hàng đại diện bên thanh toán sẽ gửi một thông báo lưu ý sự kiện chuyển khoản đó cho khách hàng của mình. Ở đây, chứng từ tín dụng do người thanh toán tạo ra, dựa trên những thông tin riêng về tên tuổi, số tài khoản và có thể là cả tình trạng tài khoản (khả năng thanh toán được) của người thanh toán. Mô hình trả trước Trong mô hình này, khách hàng liên hệ với ngân hàng (hay công ty môi giới – broker) để có được chứng từ do ngân hàng phát hành. Chứng từ hay đồng tiền số này mang dấu ấn của ngân hàng, được đảm bảo bởi ngân hàng và do đó có thể dùng ở bất cứ nơi nào đã có xác lập hệ thống thanh toán với ngân hàng này. Để đổi lấy chứng từ của ngân hàng, tài khoản của khách hàng bị triết khấu đi tương ứng với giá trị của chứng từ đó. Như vậy, khách hàng đã thực sự trả tiền trước khi sử dụng chứng từ này để mua hàng và thanh toán. Chứng từ ở đây không phải do khách hàng tạo ra, không phải dành cho một cuộc mua bán cụ thể, mà do ngân hàng phát hành và có thể sử dụng vào mọi mục đích thanh toán. Vì nó có thể sử dụng giống như tiền mặt, do đó mô hình này còn được gọi là mô hình mô phỏng tiền mặt (Cash-like model). Khi có người mua hàng tại cửa hàng và thanh toán bằng chứng từ như trên, cửa hàng sẽ kiểm tra tính hợp lệ của chúng, dựa trên những thông tin đặc biệt do ngân hàng tạo ra trên đó. Cửa hàng có thể chọn một trong hai cách: Hoặc là liên hệ với ngân hàng để chuyển vào tài khoản của mình số tiền trước khi giao hàng (deposit-now), hoặc là chấp nhận và liên hệ chuyển tiền sau vào thời gian thích hợp (deposit-later). Trường hợp riêng của mô hình mô phỏng tiền mặt là mô hình tiền điện tử (Electronic Cash) Bob Ngân hàng đại diện bên mua Alice Ngân hàng đại diện bên bán Chuyển tiền mặt thực sự Rút tiền Gửi tiền Thanh toán Hình 2.2 : Mô hình mô phỏng tiền mặt Thanh toán trực tuyến và thanh toán ngoại tuyến 1) Thanh toán ngoại tuyến (off-line payment) Phiên giao dịch giữa người sử dụng và nhà cung cấp có thể diễn ra, mà không cần đến sự tham gia của ngân hàng. Nói cách khác, nhà cung cấp tự kiểm tra tính hợp lệ của đồng tiền, mà không cần sự trợ giúp của bên thứ ba. Mặc dù, thanh toán ngoại tuyến được một số người ưa dùng, nhưng trong thực tế nó dễ gặp phải vấn đề tiêu một đồng tiền nhiều lần, vì vậy nó chỉ thích hợp với các giao dịch có giá trị thấp. Trong các năm gần đây, một số hệ thống thanh toán ngoại tuyến đã được thiết kế, không chỉ đảm bảo tính an toàn cho ngân hàng mà còn đảm bảo tính bí mật cho người sử dụng. 2) Thanh toán trực tuyến (online payment) Trong mỗi lần giao dịch, nhà cung cấp sẽ yêu cầu ngân hàng kiểm tra tính hợp lệ của đồng tiền do người dùng chuyển trước khi chấp nhận thanh toán. Vì vậy, hệ thống thanh toán trực tuyến có khả năng kiểm tra được tính tin cậy của đồng tiền. Thanh toán trực tuyến thích hợp với những giao dịch có giá trị lớn. Với hệ thống này, quá trình thanh toán và gửi tiền vào ngân hàng tách biệt nhau trong mỗi lần giao dịch. Do vậy, chi phí về thời gian cũng như tiền bạc sẽ tốn kém hơn. MỘT SỐ PHƯƠNG THỨC THANH TOÁN TỪ XA Thanh toán bằng các loại thẻ 1) Thẻ tín dụng Thanh toán bằng thẻ tín dụng là phương thức được sử dụng rộng rãi nhất hiện nay trên Internet. Để thực hiện giao dịch, người mua hàng chỉ việc cung cấp số hiệu thẻ và thời hạn sử dụng của tấm thẻ, người bán sẽ chuyển các thông tin này đến ngân hàng để xác nhận giao dịch. Phương thức thanh toán này chủ yếu thực hiện thanh toán theo kiểu trực tuyến. Ưu điểm: Đây là phương thức thanh toán đơn giản và dễ sử dụng. Nhược điểm: Kiểu thanh toán này không an toàn cho cả hai bên mua và bán, không cho phép ẩn danh, chi phí cao và không cho phép thanh toán nhỏ lẻ. Không an toàn cho cả hai bên mua và bán: Đối với bên bán: Luôn phải đối mặt với vấn đề gian lận thẻ tín dụng. Các thông tin mà người bán được cung cấp chỉ bao gồm số thẻ, thời hạn sử dụng và giá trị giao dịch không vượt quá khả năng thanh toán của thẻ, hoàn toàn không có gì chứng minh người mua hàng là chủ tấm thẻ đó. Đối với bên mua: Một bất lợi cho khách hàng trong việc thanh toán thẻ tín dụng là người bán có tất cả thông tin của người sử dụng thẻ. Điều này cho phép người bán hàng có thể ăn cắp và sử dụng thẻ tín dụng của khách hàng Chi phí cao và không cho phép thanh toán nhỏ lẻ: mỗi giao dịch thanh toán bằng thẻ tín dụng có chi phí cao Không đảm bảo ẩn danh cho khách hàng: - Tất cả các cuộc mua hàng đều có thể theo vết. Hơn nữa, các nhà phát hành thẻ có thể có tất cả thông tin về hồ sơ chi tiêu của người sử dụng và điều này xâm phạm nghiêm trọng đến tính riêng tư của khách hàng. 2) Thẻ “tiền mặt” Thẻ “tiền mặt” được phát triển đáp ứng nhu cầu giảm việc giữ tiền mặt của khách hàng và mong muốn phương tiện thanh toán thuận tiện và linh hoạt hơn. Thẻ “tiền mặt” được phân loại theo đặc điểm vật lý thành hai loại: thẻ từ và thẻ thông minh. Thẻ từ, đã tồn tại khá lâu, sử dụng các vạch từ để lưu trữ thông tin, trong khi thẻ thông minh sử dụng công nghệ vi mạch để lưu trữ thông tin, khắc phục nhược điểm về tính an toàn của thẻ từ. Thẻ thông minh được thiết kế nhằm ngăn chặn tình trạng giả mạo và làm sai lệch các thông tin được lưu giữ. Thanh toán bằng séc điện tử Séc điện tử chính là một hình thức thể hiện của séc giấy. Nói cách khác, séc điện tử bao gồm tất cả các thông tin trên séc giấy truyền thống nhưng có thể chuyển được bằng thư điện tử (e-mail). Chẳng có gì khác hơn một bức thư điện tử có khuôn dạng đặc biệt được gửi trên Internet. Bên trong bức thư điện tử là tất cả các thông tin giống như trên một tấm séc giấy gồm tên người hưởng, số tiền, ngày thanh toán, số tài khoản người trả tiền và ngân hàng của người trả. Séc điện tử được “ký” bằng chữ ký điện tử của người gửi và được mã hoá bằng khoá công khai của người nhận. Nó cũng gồm một xác nhận số từ ngân hàng của người gửi xác nhận rằng số tài khoản là hợp lệ và thuộc về người ký tờ séc này. Hệ thống séc điện tử được thiết kế với các yếu tố: tính toàn vẹn, xác thực và không thể chối bỏ của thông điệp (sử dụng chữ ký điện tử và chứng nhận điện tử). Những yếu tố này đủ để ngăn chặn sự giả mạo. Hệ thống này phù hợp với các giao dịch thanh toán giá trị lớn qua mạng. Thanh toán bằng tiền mặt điện tử Đây là phương tiện thanh toán được sử dụng trong thương mại điện tử. Tiền mặt điện tử e-cash (còn gọi là tiền mặt số, xu số, xu điện tử…) có các thông tin giống như trên tiền mặt thông thường: nơi phát hành, giá trị bao nhiêu và số seri duy nhất. Người tiêu dùng có thể mua tiền mặt điện tử và lưu trữ nó trong một ví tiền số (digital wallet hoặc electronic purse) trên một đĩa nhớ. Ví tiền số gồm bàn phím và màn hình. Nó có thể được kết nối tới tài khoản ngân hàng của người tiêu dùng và có thể nạp thêm tiền bất cứ lúc nào. Người dùng có thể tiêu tiền số tại bất kỳ cửa hàng nào chấp nhận tiền mặt điện tử, mà không phải mở tài khoản hay chuyển đi số thẻ tín dụng. Ngay khi khách hàng muốn thanh toán, phần mềm này sẽ thu tiền và chuyển đi đúng số tiền từ số tiền mặt điện tử được lưu trữ. Việc thanh toán bằng tiền mặt điện tử là uỷ quyền trước và khuyết danh (bằng kỹ thuật chữ ký mù). Trường hợp có sự giả mạo, ví dụ như cùng một đồng tiền số nhưng xuất hiện hai lần trong thanh toán, tiền mặt điện tử được mở ra để tìm xem đồng tiền nào là đã được “tiêu”. Tiền mặt điện tử được ký số bởi ngân hàng phát hành, để số tiền và số seri không thể bị giả mạo. Nó cũng được mã hoá để chỉ người nhận mới có thể sử dụng. Hệ thống thanh toán bằng tiền mặt điện tử mang đến một số lợi ích cho cả người mua và người bán, thích hợp với các hệ thống thanh toán giá trị nhỏ. Giảm chi phí giao dịch. Đảm bảo sự ẩn danh. Mở rộng thị trường. Tránh được nguy cơ tiền giả. ĐẶC TRƯNG CỦA HỆ THỐNG THANH TOÁN TỪ XA Một hệ thống thanh toán từ xa hoàn hảo phải đảm bảo được các yếu tố sau: 1) Tính an toàn Hệ thống cần đảm bảo được tính toàn vẹn cho phiên giao dịch. Để đạt được điều này, thứ nhất, hệ thống cần phải đảm bảo không có một “bên thứ ba” nào có khả năng thay đổi nội dung các thông điệp trong phiên giao dịch; thứ hai, hệ thống phải đảm bảo chống mọi gian lận từ các bên tham gia giao dịch nhằm đạt được một giao dịch mua bán an toàn và hợp lệ. 2) Chi phí giao dịch thấp và tốc độ thanh toán nhanh Chi phí giao dịch và thời gian thanh toán là những yếu tố mà người mua luôn quan tâm. Họ sẽ không cảm thấy ưa thích hình thức thanh toán này nếu như họ phải chịu một chi phí giao dịch chiếm một tỷ lệ phần trăm cao trên trị giá hàng hoá và thủ tục thanh toán phức tạp, rắc rối làm mất nhiều thời gian của họ. 3) Chấp nhận các giao dịch nhỏ Hệ thống thanh toán cho phép người mua có thể thanh toán được những món hàng với số tiền rất nhỏ. 4) Đảm bảo tính bí mật Việc đảm bảo tính bí mật cho khách hàng là một điều mà hệ thống thanh toán rất cần phải có, bởi vì giao dịch thanh toán được thực hiện trên Internet, nơi có rất nhiều nguy cơ xâm nhập trái phép vào hệ thống, và khi mà bên mua và bên bán có thể không biết gì về nhau và không có lý do nào để phải tin tưởng nhau. 5) Đảm bảo công bằng cho các bên tham gia Đảm bảo cho hai bên người mua và người bán không bị thiệt hại do lỗi của hệ thống hay sự gian lận của các bên tham gia hệ thống. 6) Thân thiện với người sử dụng Hệ thống phải có cơ chế thanh toán đơn giản và dễ hiểu để phù hợp với nhiều đối tượng người dùng. 7) Dễ dàng tích hợp Hệ thống thanh toán có khả năng tương thích với các hệ thống khác để bảo bảo thực hiện thanh toán an toàn. Chương 3. CÁC GIAO THỨC THANH TOÁN BẰNG TIỀN ĐIỆN TỬ GIỚI THIỆU VỀ TIỀN ĐIỆN TỬ Khái niệm tiền điện tử Tiền điện tử (digital money, electronic currency, digital currency hay internet money) là một thuật từ vẫn còn mơ hồ và chưa được định nghĩa rõ ràng. Tuy nhiên có thể hiểu tiền điện tử là loại tiền trao đổi theo phương pháp “điện tử”, liên quan đến mạng máy tính và những hệ thống chứa giá trị ở dạng số (digital stored value systems). Hệ thống tiền điện tử cho phép người dùng có thể thanh toán khi mua hàng bằng cách truyền đi các dãy số từ máy tính (hay thiết bị lưu trữ như smart card) tới máy tính khác (hay smart card). Giống như số hiệu (serial) trên tiền giấy, số hiệu của tiền điện tử là duy nhất. Mỗi "đồng" tiền điện tử được phát hành bởi một tổ chức (ngân hàng) và được biểu diễn cho một lượng tiền thật nào đó. Cấu trúc tiền điện tử Với mỗi hệ thống thanh toán điện tử, tiền điện tử có cấu trúc và định dạng khác nhau, nhưng đều bao gồm các thông tin chính sau: Số sêri của đồng tiền Giống như tiền giấy, số seri được dùng để phân biệt các đồng tiền khác nhau. Mỗi đồng tiền điện tử có một số seri duy nhất. Khác với tiền mặt, số seri của đồng tiền điện tử thường là một dãy số được sinh ngẫu nhiên. Điều này có liên quan đến tính ẩn danh của người dùng Giá trị của đồng tiền Mỗi đồng tiền điện tử có giá trị tương đương với một lượng tiền thật nào đó. Với tiền mặt thông thường, mỗi đồng tiền có một giá trị nhất định, nhưng với tiền điện tử, giá trị này có thể là con số tuỳ ý. Hạn định của đồng tiền Để đảm bảo tính an toàn của đồng tiền và tính hiệu quả của hệ thống, các hệ thống thường ghi thời hạn của đồng tiền. Đồng tiền điện tử sau khi phát hành, phải gửi lại ngân hàng trước thời điểm hết hạn. Các thông tin khác Đây là thông tin thêm nhằm phục vụ cho mục đích đảm bảo an toàn và tính tin cậy của đồng tiền điện tử, ngăn chặn việc gian lận, giả mạo tiền điện tử và phát hiện các vi phạm (nếu có). Trong nhiều hệ thống, các thông tin này giúp truy vết định danh người sử dụng có hành vi gian lận trong thanh toán tiền điện tử. Các thông tin trên tiền điện tử được ngân hàng ký bằng khoá bí mật. Người dùng nào cũng có thể kiểm tra tính hợp lệ của đồng tiền bằng cách sử dụng khoá công khai của ngân hàng. Phân loại tiền điện tử Tiền điện tử có hai loại: ẩn danh và định danh 1) Tiền ẩn danh Tiền ẩn danh không tiết lộ thông tin định danh của người sử dụng, hệ thống này dựa vào lược đồ chữ ký mù đã trình bày ở trên để ẩn danh người dùng. Tính ẩn danh của tiền điện tử tương tự như tiền mặt thông thường. Tiền điện tử ẩn danh được rút từ một tài khoản, có thể được tiêu xài hoặc chuyển cho người khác mà không để lại dấu vết. Có nhiều loại tiền ẩn danh, có loại ẩn danh đối với người bán, nhưng không ẩn danh với ngân hàng. Có loại ẩn danh với tất cả mọi người, ẩn danh hoàn toàn. 2) Tiền định danh Tiền điện tử định danh tiết lộ thông tin định danh của người dùng. Nó tương tự như thẻ tín dụng, cho phép ngân hàng lưu dấu vết của tiền khi luân chuyển. Mỗi loại tiền trên lại chia thành hai dạng: trực tuyến và ngoại tuyến. - Trực tuyến: nghĩa là cần phải tương tác với bên thứ ba để kiểm soát giao dịch. - Ngoại tuyến: nghĩa là có thể kiểm soát giao dịch mà không cần liên quan trực tiếp đến bên thứ ba. Tính chất của tiền điện tử Điểm khác biệt lớn nhất giữa tiền điện tử và tiền mặt thông thường đó là: 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 đó mà máy tính có thể hiểu được và được trao đổi thông qua mạng máy tính. Chính vì chỉ là một dãy con số nên đồng tiền số rất dễ dàng bị sao chép, điều này dẫn đến hai tình huống: thứ nhất, đồng tiền số có thể được 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 đã được ngân hàng phát hành). Thứ hai, đồng tiền có thể bị sao chép để sử dụng nhiều lần (double-spending). Từ đặc điểm này, Tatsuaki Okamoto và Kazuo Ohata đã đưa ra sáu đặc trưng cơ bản của tiền điện tử: 1) Tính độc lập (Portability) Sự an toàn của tiền điện tử không phụ thuộc vào bất kỳ điều kiện vật lý nào. Đây là điều kiện tiên quyết cho việc chuyển tiền trên mạng. 2) Tính an toàn (Security) Tính chất này có khả năng ngăn chặn các âm mưu sao chép đồng tiền bằng cách sử dụng nhiều lần hoặc giả mạo. 3) Tính riêng tư (Privacy) Tính chất này nhằm bảo vệ người dùng khỏi mọi sự dòm ngó, hay nói cách khác, không ai có thể truy vết hay chắp nối mối quan hệ giữa người sử dụng với sự chi tiêu cũng như các giao dịch mà người đó đã thực hiện. Tính chất này có thể thấy rất rõ ràng trong các giao dịch bằng tiền mặt. Sau khi thanh toán đã được thực hiện, việc chứng minh trước đây người nào đã sở hữu số tiền đó là rất khó. 4) Tính chất thanh toán ngoại tuyến (Off-line payment) Thanh toán ngoại tuyến nghĩa là, phiên giao dịch giữa người sử dụng và nhà cung cấp có thể được diễn ra mà không cần đến sự tham gia của bên thứ ba (ví dụ như ngân hàng). Nói cách khác, nhà cung cấp tự mình có thể kiểm tra sự hợp lệ của đồng tiền số. 5) Tính chuyển nhượng (Transferability) Người sử dụng có thể chuyển giao tiền điện tử (quyền sử dụng) cho nhau. Tính chất này làm cho việc tiêu tiền điện tử thực sự giống với việc tiêu tiền mặt thông thường. Tuy vậy, khi đó, hệ thống cũng phải giải quyết một số vấn đề nảy sinh như: Kích thước dữ liệu tăng lên sau mỗi lần chuyển nhượng vì đây là những thông tin cần được lưu trữ. Giải pháp đơn giản nhất là giới hạn số lần chuyển nhượng tối đa cho phép. Việc phát hiện giả mạo và tiêu một đồng tiền nhiều lần có thể là quá trễ, khi đồng tiền đã được chuyển nhượng rất nhiều lần. Các vấn đề khác như: rửa tiền, … 6) Tính phân chia được (Divisibility) Người sử dụng có thể phân chia đồng tiền số của mình thành những mảnh có giá trị thanh toán nhỏ hơn, với điều kiện tổng giá trị của các mảnh nhỏ bằng giá trị của đồng tiền điện tử ban đầu. CÁC GIAO THỨC VỚI TIỀN ĐIỆN TỬ Dựa trên các đặc điểm của tiền điện tử, hệ thống thanh toán tiền điện tử có ba giao thức cơ bản: giao thức rút tiền, giao thức trả tiền (hay còn gọi là thanh toán) và giao thức gửi tiền. Tuỳ thuộc vào bên mua và bên bán sử dụng dịch vụ ở cùng một ngân hàng hay ở các ngân hàng khác nhau (liên ngân hàng), chúng ta có thể phân ra thành các giao thức thanh toán trong cùng một ngân hàng và liên ngân hàng để đảm bảo các phương thức thanh toán thực hiện hiệu quả. Các giao thức thanh toán cùng ngân hàng Giả sử Alice và Bob cùng sử dụng dịch vụ của một ngân hàng. Alice muốn mua hàng (ví dụ một quyển sách Q giá 100$) từ Bob. Giao thức gồm ba giai đoạn sau: Bob Ngân hàng Alice 1. Rút tiền 3. Gửi tiền 2. Thanh toán Hình 3. 1: Mô hình giao dịch của hệ thống tiền điện tử trong cùng ngân hàng 1) Giao thức rút tiền (Withdrawal) Alice tạo tiền điện tử C gồm số sêri và giá trị của C (ví dụ 100$). Alice yêu cầu ngân hàng ký “mù” lên C. Giao thức ký thành công thì ngân hàng sẽ trừ 100$ trong tài khoản của Alice và chuyển lại cho Alice đồng tiền đã được ký mù. 2) Giao thức trả tiền (Spending) Alice chuyển đồng tiền C đã có chữ ký của ngân hàng cho Bob và yêu cầu quyển sách Q. Bob kiểm tra chữ ký trên C (dùng khoá công khai của ngân hàng). Nếu chữ ký không hợp lệ thì Bob kết thúc giao thức. 3) Giao thức gửi tiền (Deposit) Bob lấy đồng tiền C từ Alice và gửi cho ngân hàng. Ngân hàng xác thực chữ ký trên đồng tiền C. Nếu chữ ký hợp lệ, ngân hàng kiểm tra C đã được tiêu trước đó chưa. Nếu C chưa được tiêu, ngân hàng cộng thêm vào tài khoản cho Bob với số tiền tương ứng là 100$. Nếu việc gửi tiền thành công, Bob sẽ gửi quyển sách Q cho Alice. Nhận xét: Bob “khó” thể biết được C từ tài khoản nào. Khi Bob gửi C vào tài khoản của mình, ngân hàng cũng khó biết đồng tiền đó nhận được từ Alice vì nó đã được ký “mù”. Như vậy, tiền điện tử C không lưu lại dấu vết của những ai đã “tiêu” nó. Các giao thức thanh toán trong liên ngân hàng Trường hợp liên ngân hàng (các bên tham gia giao dịch sử dụng dịch vụ ở các ngân hàng khác nhau), người ta sử dụng chữ ký “mù nhóm” cho đồng tiền chung của liên ngân hàng. Giả sử Alice là khách hàng của ngân hàng A, Bob là khách hàng của ngân hàng B. Alice cần trả tiền cho người bán hàng Bob. Giao thức thực hiện như sau: 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. Thanh toán Hình 3. 2: Mô hình giao dịch của hệ thống tiền điện tử trong liên ngân hàng 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. 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. MỘT SỐ LƯỢC ĐỒ TIỀN ĐIỆN TỬ Lược đồ CHAUM-FIAT-NAOR Lược đồ Lược đồ hệ thống tiền điện tử Chaum1 - Fiat2 - Naor3 có tính ẩn danh. Để bảo đảm tính ẩn danh của đồng tiền, lược đồ sử dụng “chữ ký mù” RSA. Trong đó khoá mật là a, khóa công khai là (n, b), hai hàm f, g là không “va chạm”. Mỗi người dùng có tài khoản u số, ngân hàng giữ số đếm v liên quan đến số tài khoản u (đếm số đơn vị tiền Ui được tạo ra), ngân hàng dựa vào u để xác định kẻ gian. 1 2 5 4 3 Hình 3. 3: Lược đồ Fiat-Chaum-Naor 1. Giao thức rút tiền Alice muốn rút ngân hàng một đồng tiền ẩn danh, thì phải tạo k đơn vị tiền 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. Với phép XOR: Å, phép nối Ù, định nghĩa: Ui = f (xi, yi ), xi = g ( ai, ci ), yi = g (ai Å (u Ù (v + i)), di ). Alice làm “mù” k đơn vị tiền Ui thành Bi bằng tham số “mù” ngẫu nhiên ri và gửi chúng đến ngân hàng. Tham số “mù” đó ngăn chặn ngân hàng xem nội dung những “đồng tiền” Ui. Cụ thể Bi = Ui ri b mod n. (Làm “mù” theo RSA). Để ngăn ngừa người rút tiền “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ị tiền Ui để kiểm tra, yêu cầu ông A cấp các tham số ai, ci, di , ri tương ứng với những đơn vị Ui mà ngân hàng đã chọn. Alice cung cấp cho ngân hàng các tham số ai, ci, di , ri theo yêu cầu. Dựa vào các tham số do Alice cung cấp, ngân hàng xóa “mù” k/2 đơn vị tiền Ui đã chọn, kiểm tra để đảm bảo rằng Alice không có gian lận. Nếu không có gian lận, ngân hàng ký “mù” lên những đơn vị tiền Uj còn lại (những đơn vị Uj mà ngân hàng không xoá “mù”, chính là Bj ), và gửi cho Alice. Chữ ký trên Bj là Bj a mod n. Chú ý j ngẫu nhiên ≤ k, và 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 Alice. Alice 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 Alice 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 Alice gửi đồng tiền T tới Bob Bob chọn chuỗi nhị phân nhiên z1 z2… z k / 2 và gửi nó đến Alice Alice phản hồi lại tùy theo 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)), di. Bob kiểm tra T là hợp lệ trước khi chấp nhận thanh toán của ông Alice. 3. Giao thức gửi tiền Bob gửi lịch sử thanh toán đến Ngân hàng Ngân hàng kiểm tra chữ kí số của Ngân hàng Ngân hàng kiểm tra đồng tiền này có bị tiêu xài trước đó hay chưa 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ừ Alice. Điều này giúp phát hiện kẻ tiêu xài hai lần Ngân hàng ghi T vào tài khoản của Bob 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 đồ đã sử dụng “chữ ký mù” RSA. 2). Để ngăn ngừa người rút tiền “gian lận” giá trị đồng tiền, lược đồ đã sử dụng giao thức “Cắt và chọn”. 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 thì mới ký “mù” các đơn vị Uj còn lại. Theo 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 hợp lệ, nếu k càng lớn. 3). Để ngăn chặn “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. Nếu ông A tiêu tiền T hai lần, thì 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 hai lần với cùng một đồng tiề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ó 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. Lược đồ hệ thống Digital Cash Lược đồ 1. Giao thức rút tiền Giả sử Alice muốn rút 100$, sẽ có các bước thực hiện sau: Sinh một số ngẫu nhiên N. Số ngẫn nhiên đủ dài để đảm bảo tránh việc 2 serial trùng nhau Alice làm mù N với 1 số random bí mật r Alice mã hóa giá trị serial đã được mù hóa với khóa công khai của ngân hàng và gửi tới ngân hàng giá trị của đồng tiền (100$) và serial đã được mù hóa trên Khi nhận được yêu cầu và các giá trị Alice gửi lên ngân hàng sẽ thực hiện: Giải mã nó với khóa bí mật của mình Ngân hàng kiểm tra xem tài khoản của Alice có đủ để rút đông tiền mà Alice yêu cầu. Nếu không đủ thì gửi lại thông điệp cho Alice với nội dung “Tài khoản của bạn không đủ để rút tiền” còn ngược lại thì sẽ kí lên serial đã được làm mù với khóa bí mật tương ứng với giá trị đồng tiền (Ở đây, mỗi loại tiền sẽ tương ứng với một cặp chữ kí số), trừ vào tài khoản của Alice một lượng tiền bằng lượng tiền được yêu cầu. Sau đó mã hóa nó với khóa công khai của Alice và gửi nó tới Alice Sau khi nhận được thông điệp Alice sẽ thực hiện: Giải mã thông điệp với khóa bí mật của mình Xóa mù đồng tiền Kiểm tra chữ kí của ngân hàng với khóa công khai của ngân hàng cho đồng tiền có giá trị 100$ Lưu đồng tiền lại trong túi của mình 2. Giao thức thanh toán Giả sử Alice cần trả cho Bob 100$ thì cô ấy cần thực hiện: Tạo một cặp khóa bí mật cho thuật toán mã hóa đối xứng chẳng hạn như DES Lây từ túi của mình đồng tiền có giá trị 100$, sử dụng khóa công khai của Bob. Để mã hóa một thông điệp bao gồm: đồng tiền, khóa bí mật đã tạo ở trên và những thông tin của việc mua bán và gửi tới Bob Sau khi nhận được thông điệp Bob sẽ thực hiện: Giải mã thông điệp với khóa bí mật của mình và lấy đồng tiền số từ thông điệp Kiểm tra chữ kí của ngân hàng cho đồng tiền số trên với khóa công khai của ngân hàng cho đồng tiền có giá trị 100$ trên Nếu việc kiểm tra lỗi thì sẽ trả lại đồng tiền cho Alice và thông báo “đồng tiền lỗi” với khóa đối xứng bí mật được gửi ở trên Nếu hợp lệ thì Bob sẽ phải gửi ngay đồng tiền đó tới ngân hàng. Nếu việc gửi tiền thành công thì Bob sẽ giao hàng cho Alice 3. Giao thức gửi tiền Khi nhận được message gửi tiền của Bob ở trên thì ngân hàng sẽ thực hiện: Giải mã thông điệp với khóa công khai của mình Kiểm tra chữ ký của đồng tiền Nếu chữ ký đúng thì kiểm tra xem đồng tiền đã bị tiêu chưa ở trong database lưu trữ những đồng tiền đã tiêu Nếu đồng tiền chưa được tiêu thì cộng vào tài khoản của Bob một lượng tiền bằng lượng tiền tương ứng (100$) và them đồng tiền trên vào database lưu trữ những đồng tiền đã tiêu Đánh giá Ưu điểm: Chi phí giao dịch thấp. Độ an toàn của hệ thống dựa trên hệ mật mã RSA. Phần mềm Cyber Wallet sẽ tự động sinh một cặp khóa RSA. Tất cả những giao tiếp trong hệ thống DigiCash được ký số hoá và mã hoá, dựa trên cấu trúc khoá công cộng. Đả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. Ở đây, Bob chỉ biết rằng các đồng tiền mình nhận được là hợp lệ, còn ngân hàng chỉ có nhiệm vụ phát hành đồng tiền nhưng không thể biết được chủ sở hữu của chúng. Quyền hạn của người sử dụng là rất mạnh bởi vì những đặc trưng ẩn danh của hệ thống được xây dựng trong phần mềm khách hàng (làm mù những đồng tiền trước khi gửi đến ngân hàng kiểm tra). Nhược điểm 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. Ngân hàng phải có một lượng lớn cơ sở dữ liệu để chứa chuỗi số của những đồng tiền. Nếu một số lượng lớn người sử dụng bắt đầu sử dụng hệ thống thì kích cỡ của dữ liệu sẽ trở nên rất lớn và không thể quản lý được. 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. 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ã, ngân hàng bị phá sản…) 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 Mặc dù hệ thống Digicash có những điều không thuận lợi, song với những ưu điểm nổi bật mà hệ thống mang lại, Digicash được đánh giá là một hệ thống ‘tiền điện tử’ có tiềm năng rất lớn. CHƯƠNG TRÌNH MÔ TẢ HỆ THỐNG DIGITAL CASH Giới thiệu Chương 4 sẽ trình bày về chương trình mô tả hệ thống Digital Cash. Hệ thống sẽ mô tả cách thức sử dụng tiền điện tử để thanh toán qua mạng công khai. Hệ thống sẽ có 3 chức năng: withdraw (rút tiền), payment (tiêu tiền), deposit (trả tiền) Yêu cầu và kiến trúc của hệ thống Hệ thống gồm có 3 thành phần: Khách hàng (client), Ngân hàng (server), cơ sở lưu trữ dữ liệu (DBMS). Đối với khách hàng cần có giao diện thân thiện để thuận lợi cho việc thực hiện giao dịch. Khách hàng chỉ cần thực hiện các thao tác đơn giản là có thể thực hiện được các giao dịch. Chẳng hạn khách hàng muốn rút tiền thì chỉ cần bấm vào đồng tiền cần rút thì hệ thống sẽ tự động tạo ra số serial của đồng tiền và làm mù nó, sau đó chuyển đến cho ngân hàng và ngân hàng sẽ tự động ký mù và chuyển trở về cho khách hàng. Việc giao dịch được thực hiện qua giao thức mạng TCP/IP. DBMS là hệ thống lưu trữ cơ sở dữ liệu mà cả khách hàng và ngân hàng đều phải có. Đối với khách hàng thì DBMS lưu trữ các đồng tiền mà mình đã rút và các thông tin lien quan còn đối với ngân hàng thì DBMS lưu trữ các thông tin và tài khoản của khách hàng, và các thông tin về các cuộc giao dịch Công cụ thực hiện Để có thể sử dụng chương trình thì các thiết bị phần cứng cần tối thiểu 1GB dung lượng trống và 128MB bộ nhớ trong Công cụ Java 2 SDK được sử dụng để tạo hệ thống. Hệ thống chạy trên hệ điều hành window. Hệ thống cần 2 cơ sở dữ liệu MYSQL để có thể lưu thông tin tài khoản của từng khách hàng và lưu các đồng tiền có của khách hàng Hướng dẫn sử dụng hệ thống đối với khách hàng Giao diện khi đăng nhập sẽ là Hình 4. 1: Giao diện đăng nhập Cấu hình Để có thể sử dụng được chương trình thì đầu tiên phải cấu hình cho nó với: + Client ID: ID của khách hàng muốn sử dụng dịch vụ đó + JDBC URL: địa chỉ cơ sở dữ liệu để lưu trữ đồng tiền của khách hàng đó + Bank Host: địa chỉ của ngân hàng + Bank Port: Cổng mà ngân hàng mở để thực hiện giao dịch Nhận đồng tiền và khóa công khai của nó Tiếp theo trong tab Denominations (đồng tiền) để chứa các đồng tiền mà ngân hàng hiện đang có. Mỗi khi click vào nút Refresh thì ngân hàng sẽ gửi về cho khách hàng các loại đồng tiền mà ngân hàng có, đồng thời khóa công khai của đồng tiền đó. Ở đây trong chương trình này thì ngân hang có 8 đồng tiền là 1. 00, 2. 00, 3. 00, 5. 00, 10. 000, 25. 00, 200. 000, 100. 000 Hình 4. 2: Giao diện nhận các đồng tiền ngân hàng có Rút tiền Ở trong tab withdraw (rút tiền) là giao thức rút tiền Hình 4. 3: Giao diện rút tiền Nếu muốn rút một đồng tiền thì khách hàng sẽ chọn trong comboBox sau đó click vào button Withdraw a bill. Khi đó số đồng tiền mà khách hàng có trong túi của mình (những đồng tiền đã rút ở ngân hàng mà chưa tiêu) sẽ xuất hiện trong khung bên cạnh (Bills in my purse) Tiêu tiền Để thực hiện giao thức tiêu tiền thì khách hàng sẽ thực hiện ở trong tab Payment (thanh toán) Việc thực hiện việc tiêu tiền được thực hiện giữa 1 bên là khách hàng và 1 bên là bán hàng tuy nhiên cả 2 đều là khách hàng của ngân hàng nên cả 2 đều sử dụng chương trình trên chỉ có cách thức thực hiện của mỗi bên là khác nhau. Phía bán hàng sẽ thực hiện mở Port để giao dịch Hình 4. 4: Giao diện thanh toán Còn phía mua hàng thì sẽ phải thực hiện Gõ địa chỉ của nơi bán hàng (Service Host) Gõ cổng mà nơi bán hàng đã mở (Dest Port) đã được thực hiện ở bước trên do người bán hàng Chọn đồng tiền có trong túi mình để trả (Choose coins to pay) Sau khi thực hiện xong việc mua – bán thì người bán hàng sẽ phải lập tức kết nối tới ngân hàng để kiểm tra tính hợp lệ của đồng tiền đồng thời phải gửi đồng tiền đó tới ngân hàng ngay. Việc này được chương trình thực hiện tự động, người dung không phải thực hiện bất cứ điều gì. Nếu việc gửi tiền thành công sẽ có thông báo lại cho người dùng KẾT LUẬN Kết quả chính của khóa luận gồm có : Tìm hiểu và nghiên cứu qua các tài liệu để hệ thống lại các vấn đề sau: Tổng quan về thanh toán từ xa Các giao thức thanh toán bằng tiền điện tử Thử nghiệm chương trình mô tả hệ thống : Digital Cash Hướng phát triển : Sau khi kết thúc khóa luận sẽ phát triển hệ thống Digital Cash với hệ thống WebService.Xây dựng server của ngân hàng là một WebService.Đồng thời sẽ cố gắng phát triển hệ thống theo sơ đồ Fiat-Chaum-Naor bởi vì nó là hệ thống thanh toán kiểu ngoại tuyến (Không cần phải có sự giám sát của ngân hàng cho phiên giao dịch) TÀI LIỆU THAM KHẢO Tiếng Việt Phan Đình Diệu. Lý thuyết mật mã và An toàn thông tin. Nxb Đại học Quốc Gia Hà Nội, 2006. TS. Nguyễn Đăng Hậu. Kiến thức thương mại điện tử. 11 - 2004. PGS. TS Trần Hoàng Ngân & Ngô Minh Hải. Sự phát triển ngân hàng điện tử tại Việt Nam. PGS. TS Trịnh Nhật Tiến. Một số vấn đề về an toàn dữ liệu. Tiếng Anh [5] FengXue: A thesis submitted to the Faculty of Graduate Studies and Research In partial fulllment of the requirements for degree of Master of Science Adagunodo Emmanuel Rotimi, Awodele Oludele & Ajayi Olutayo Bamidele. SMS Banking Services: A 21st Century Innovation in Banking Technology. B. Schneier. “Applied Cryptography”. 2nd edition, 1996. D. Chaum, E. Van Heijst. “Group signatures”. Proceedings of EUROCRYPT’91. Lecture Notes in Computer Science, vol. 547, Springer-Verlag, 1991, tr. 241-246. D. O’Mahony, M. Peirce, H. Tewari. “Electronic payment systems”. Artech House. 2001. Gavin Troy Krugel. “Mobile Banking Technology Options”. 8 - 2007. GSM ISO Standard 11. 11, 11. 14, 11. 17 (for GSM network). John Wiley & Sons. “Mobile messaging technologies and services SMS, EMS and MMS”, LTD - 2003. Klaus Finkenzeller, Giesecke & Devriment GmbH, Munich. “RFID Hand book, Fundementals and Application in Contactless Smart Cards and Identification”. Second edition, 2003. Markus Jakobsson, David Mraihi, Yiannis Tsiounis, Moti Yung. “Electronic Payment: where do we go from here?”. 1999. M. Sherif. “Protocols for secure electronic commerce”. CRC Press (2000). Stephen Thomas. “SSL & TLS Essentials”. Securing the Web. 2000 S. Canard, J. Traore. “On fair e-cash systems based on group signature schemes”, Proceedings of ACISP 2003. Lecture Notes in Computer Science, Springer-Verlag, vol 2727, 2003, tr. 237-248. Scott B. Guther & mary J. Cronin. “Mobile Application Development with SMS and the SIM Toolkit”. 2002. T. Okamoto & K. Ohata. “Universal Electronic Cash”. Pro. CRYPTO’91, Springer-Verlag, 1991. Tony Chew. “Security Guidelines for Mobile Banking & Payments”. 2-2002. Zulfikar Amin Ramzan. “Group Blind Digital Signatures: Theory and Applications”. 1999.

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

  • docNghiên cứu một số giao thức thanh toán qua mạng công khai.doc