Thanh toán điện tử

Mục lục THANH TỐN ĐIỆN TỬ TỔNG QUAN Các hệ thống thanh tốn điện tử cĩ rất nhiều dạng bao gồm séc số, thẻ ghi nợ, thẻ tín dụng, và các thẻ lưu giá trị. Các đặc tính an ninh thơng thường của các hệ thống này là tính riêng tư (bảo vệ khỏi sự xem trộm), xác thực (cung cấp định danh người dùng và tính tồn vẹn văn bản) và khơng thể từ chối (ngăn ngừa sự từ chối sau này việc thực hiện một giao dịch). Kiểu hệ thống thanh tốn điện tử được tập trung trong báo cáo này là tiền điện tử. Tiền điện tử, nh

doc116 trang | Chia sẻ: huyen82 | Lượt xem: 2753 | Lượt tải: 5download
Tóm tắt tài liệu Thanh toán điện tử, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ư tên gọi, là việc xây dựng một hệ thống thanh tốn điện tử được mơ hình giống như là hệ thống tiền giấy. Tiền giấy cĩ các đặc tính như là: di chuyển được (cĩ thể mang theo), nhận dạng được vì đã được chấp nhận, trao đổi được (mà khơng cĩ thự tham gia của hệ thống tài chính), khơng thể lần ra dấu vết (khơng cĩ bản ghi về nơi tiền được dùng), nặc danh (khơng cĩ bản ghi về ai đã dùng tiền) và cĩ khả năng trả lại được. Các nhà thiết kế tiền số tập trung vào việc giữ lại tính khơng thể tìm dấu vết và nặc danh. Vì vậy, tiền điện tử được định nghĩa là một hệ thống thanh tốn điện tử mà cung cấp, cộng với các thuộc tính an ninh trên, các thuộc tính người dùng nặc danh và khơng thể tìm dấu vết thanh tốn. Tổng quát, các sơ đồ tiền điện tử đạt được các mục tiêu an ninh trên thơng qua các chữ ký số. Chúng cĩ thể coi như là sự số hĩa tương tự của chữ ký tay. Các chữ ký số dựa trên mã hĩa khĩa cơng khai. Trong hệ thống mã hĩa này, mỗi người dùng cĩ một khĩa mật và một khĩa cơng khai. Khĩa mật được dùng để tạo chữ ký số và khĩa cơng khai là cần thiết để xác nhận chữ ký số. Để xác định được ai là người đã ký thơng tin (cũng gọi là văn bản), một người phải biết chính xác ai là người cĩ khĩa cơng khai đã đưa. Đây là vấn đề của việc quản lý khĩa, và giải pháp cho nĩ là một số kiểu hạ tầng xác thực. Thêm vào đĩ, hệ thống phải cĩ đủ sự an ninh vật lý và mạng để bảo vệ tính mật của các khĩa mật. TIỀN ĐIỆN TỬ LÀ GÌ? Chúng ta sẽ bắt đầu với việc định nghĩa “tiền điện tử”, khái niệm này thường được gắn với bất cứ sơ đồ thanh tốn điện tử nào mà về hình thức trao đổi tiền với người dùng. Thực tế, tiền điện tử là một loại đặc biệt của sơ đồ thanh tốn điện tử, được định nghĩa bởi các thuộc tính mã hĩa nhất định mà sẽ được đề cập. Thanh tốn điện tử Khái niệm thương mại điện tử chỉ bất cứ giao dịch tài chính nào cĩ liên quan đến việc truyền thơng tin một cách điện tử. Các gĩi tin của thơng tin được truyền thường được gọi là các thẻ điện tử (electronic tokens). Một kiểu của thương mại điện tử là thanh tốn điện tử. Một giao thức thanh tốn điện tử là một chuỗi các giao dịch, mà tại điểm cuối của mỗi giao dịch một thanh tốn được thực hiện, sử dụng thẻ (token) được phát hành bởi một bên thứ ba. Một ví dụ là các thẻ tín dụng khi một quá trình chứng nhận điện tử được dùng. Lưu ý rằng là cả người trả tiền lẫn người nhận tiền đều khơng phát hành thẻ. Một kịch bản thanh tốn điện tử thường bao gồm 3 thành phần: Người trả hay là khách Người nhận tiền ví dụ như là cửa hàng Mạng tài chính mà cả người trả và người nhận đều cĩ tài khoản. Thường thì ta coi mạng tài chính như là một ngân hang. Sự an tồn của các thanh tốn điện tử Với sự rủi ro của việc truyền thơng và mạng Internet làm tăng khả năng thương mại điện tử diễn ra mà sử dụng các đường truyền mà khơng được kiểm sốt bởi hệ thống tài chính. Vì vậy cần cĩ các bước để bảo đảm sự an tồn của các văn bản được gửi trên đường truyền. Các thuộc tính an ninh cần thiết: Riêng tư, hay bảo vệ khỏi việc xem trộm. Điều này hiển nhiên là quan trọng đối với việc truyền tin, ví dụ số thẻ tín dụng gửi qua Internet. Định danh của người dùng, hay bảo vệ khỏi sự giả mạo. Rõ rang là bất cứ sơ đồ nào cho thương mại điện tử đều phải yêu cầu rằng người dùng biết đang giao dịch với ai. Tồn vẹn văn bản, bảo vệ chống lại việc thay đổi hay thay thế. Một bên phải biết được rằng văn bản nhận được là một với văn bản gửi đi. Khơng thể từ chối, bảo vệ việc từ chối giao dịch sau này. Điều này là cần thiết cho thương mại điện tử, cho các hĩa đơn và thanh tốn số. Cả ba thuộc tính cuối được biết như là sự xác thực. Các thuộc tính an ninh trên cĩ thể đạt được bằng một số cách. Kỹ thuật mà được dùng phổ biến là sử dụng hạ tầng xác thực. Trong cách xây dựng này, sự riêng tư đạt được bằng cách mã hĩa mỗi văn bản, sử dụng khĩa riêng chỉ được biết bởi người gửi và người nhận. Các đặc tính xác thực đạt được thơng quan quản lý khĩa, ví dụ hệ thống sinh, phân phối và lưu trữ khĩa của các người dùng. Việc quản lý khĩa được thực hiện bởi một tổ chức chứng chỉ (certification authority), hay một tổ chức đáng tin cĩ trách nhiệm xác nhận định danh của người dùng. Việc này được làm cho mỗi người dùng (bao gồm cả các ngân hàng) mà được phát hành một chứng chỉ định danh (identity certificate) số. Chứng chỉ cĩ thể được dùng bất cứ khi nào người dùng muốn xác nhận mình với người khác. Thêm vào đĩ, các chứng chỉ này làm cho cĩ thể tạo một khĩa mật giữa các người dùng theo một cách an tồn và được xác thực. Kỹ thuật này cĩ thể được thực hiện để cung cấp bất kỳ hay tất cả các đặc tính an ninh trên. Mặc dù hạ tầng xác thực cĩ thể tách biệt với việc cài đặt thương mại điện tử, sự an tồn của nĩ là một thành phần cơ bản của sự an tồn của hệ thống thương mại điện tử. Khơng cĩ một tổ chức chứng chỉ đáng tin và một hạ tầng an tồn, bốn thuộc tính an ninh nĩi trên khơng thể đạt được, và thương mại điện tử trở nên khơng thể khi qua các đường truyền khơng đáng tin. Tiền điện tử Chúng ta đã định nghĩa tính riêng tư như là việc bảo vệ chống lại sự xem trộm trên các giao dịch của ai đĩ. Với một số người ví dụ như là David Chaum, thì sự định nghĩa cịn được mở rộng hơn. Đĩ là, sự riêng tư đúng nghĩa là lịch sử mua bán của một người khơng được tiết lộ bởi sự kiểm tra của ngân hàng và các cơng ty thẻ tín dụng (và mở rộng nữa là cả chính phủ). Để đạt được điều này, một người khơng chỉ cần sự riêng tư mà cả sự nặc danh (anonymity). Cụ thể là: Nặc danh người trả tiền trong suốt quá trình thanh tốn, Thanh tốn khơng thể tìm được dấu vết để Ngân hàng khơng thể biết ai cĩ tiền đã được dùng trong một thanh tốn cụ thể. Các đặc tính này là khơng cĩ ở các thẻ tín dụng. Thực tế, chỉ cĩ một hệ thống thanh tốn truyền thống cung cấp điều này đĩ là tiền lẻ (tiền giấy). Vì vậy Chaum và một số tác giả khác đã giới thiệu tiền điện tử (hoặc tiền số), một hệ thống thanh tốn điện tử mà cung cấp cả hai tính năng trên. Thứ tự các thao tác trong một thanh tốn tiền điện tử diễn ra như sau: Rút tiền, trong đĩ người trả tiền (khách) rút một số tiền trong tài khoản tại ngân hàng của mình vào thẻ. Thanh tốn, trong đĩ khách chuyển tiền của mình trong thẻ cho người bán hàng. Nạp tiền, trong đĩ người bán hàng chuyển tiền nhận được vào tài khoản tại ngân hàng của mình. Các thủ tục trên cĩ thể cài đặt theo hai cách: Thanh tốn trực tuyến cĩ nghĩa là người bán hàng gọi cho ngân hàng kiểm tra giá trị của thẻ của khách trước khi chấp nhận thanh tốn của khách và phân phối hàng của mình. (Điều này giống với các giao dịch bằng thẻ tín dụng.) Thanh tốn khơng trực tuyến cĩ nghĩa là người bán hàng đem tiền của khách để xác thực và nạp tiền một khoảng thời gian sau khi giao dịch thanh tốn đã hồn tất. (Phương pháp này giống với việc mua bán bằng séc cá nhân.) Lưu ý rằng với một hệ thống trực tuyến, việc thanh tốn và nạp tiền khơng phải là các bước tách biệt. Giả mạo Cũng như trong bất cứ hệ thống thanh tốn nào, ở hệ thống này vẫn tồn tại khả năng cho tội phạm lợi dụng, với việc lừa hệ thống tài chính hay sử dụng cơ chế thanh tốn để thực hiện các tội ác khác. Cĩ hai kiểu khai thác hệ thống tiền điện tử tương tự với việc giả mạo tiền vật lý (tiền giấy): Giả mạo thẻ, hay là tạo ra tiền cĩ vẻ cĩ giá trị mà khơng thực hiện việc rút tiền ở Ngân hàng. Tiêu tiền nhiều lần, hay sử dụng lại cùng một thẻ. Vì tiền điện tử lưu trữ các thơng tin số, nên nĩ sẽ vẫn khơng thay đổi sau khi đã được dùng. (Tiêu tiền nhiều lần cịn được gọi là tiêu tiền lại (re-spending), tiêu hai lần (double spending), hay tiêu lặp lại (repeat spending).) Một hệ thống cĩ thể tránh được việc giả mạo bằng cách ngăn chặn nĩ diễn ra, hoặc bằng cách phát hiện thủ phạm sau khi nĩ diễn ra. Sự ngăn chặn hiển nhiên là được ưa thích hơn nếu mọi thứ khác đều tương đương. Mặc dù cố gắng để tạo ra các hệ thống tiền điện tử mà phương tiện truyền và lưu trữ là an tồn, thì vẫn cĩ những ứng dụng nằm ngồi kiểm sốt (ví dụ như mạng Internet, người dùng là rất dễ bị tấn cơng bởi virus và sự xem trộm). Vì vậy chúng ta cần các kỹ thuật để đối đầu với việc giả mạo hơn là các biện pháp an nình về vật lý. Để bảo vệ chống lại việc làm giả thẻ, một hệ thống dựa trên các chức năng xác thực thơng thường của định danh người dùng và tồn vẹn văn bản. (Lưu ý rằng “người dùng” được xác định từ tiền được phát hành bởi ngân hàng, khơng phải là người tiêu tiền nặc danh.) Để bảo vệ chống lại việc tiêu tiền nhiều lần, ngân hàng duy trì một cơ sở dữ liệu các tiền đã tiêu rồi. Các đồng tiền đã ở trong cơ sở sẽ bị từ chối để nạp vào. Nếu việc thanh tốn là trực tuyến, điều này sẽ ngăn chặn việc tiêu tiền nhiều lần. Nếu khơng trực tuyến, điều tốt nhất ta cĩ thể làm là phát hiện việc tiêu tiền nhiều lần xảy ra. Để bảo vệ người nhận thanh tốn cần phải xác định người thanh tốn. Vì vậy cần phải làm mất cơ chế nặc danh trong trường hợp dùng tiền nhiều lần. Các đặc tính xác thực, nặc danh, và phát hiện tiêu tiền nhiều lần đạt được gần lý tưởng bằng cách sử dụng mã hĩa khĩa cơng khai. MỘT SỐ HỆ THỐNG THANH TỐN HIỆN CĨ Các chỉ tiêu đánh giá Dù cho hệ thống tiền điện tử cĩ thuộc dạng nào thì cĩ một số thuộc tính mà cần lưu tâm. Nhĩm thuộc tính chính gọi là thuộc tính ACID gồm cĩ: Đơn tri (Atomicity): giao dịch phải diễn ra hồn tồn hoặc khơng. Đồng nhất (Consistency): Mọi bên phải đồng ý về việc trao đổi diễn ra. Độc lập (Isolation): Các giao dịch phải độc lập với nhau. Bền vững (Durability): cĩ khả năng phục hồi lại trạng thái đồng nhất cuối cùng. Đồng thời cĩ một số thuộc tính khách là: Kinh tế (Economy): thực hiện một giao dịch khơng quá tốn kém. Chia nhỏ được (Divisibility): cĩ thể chuyển đổi được giữa các mệnh giá thấp và mệnh giá cao. Mở rộng được (Scaleability): Hệ thống phải hỗ trợ nhiều người dùng cùng lúc. Tương thích (Interoperatbility): cĩ thể chuyển giá trị giữa các hệ thốn khác nhau. Bảo lưu (Conservation): nĩ bao gồm sự đồng nhất tạm thời, khi tiền giữ giá trị của nĩ qua thời gian; và sự bền vững tạm thời; khi tiền cĩ thể lưu trữ và lấy ra dễ dàng. Tổng quan về một số hệ thống Trong phần này chúng ta sẽ giới thiệu một số hệ thống giao dịch điện tử đang tồn tại cùng với một số phân tích cơ bản. CAFE Đây là sơ đồ dùng tiền mà bảo vệ sự nặc danh của các người dùng. Nĩ là từ viết tắt của Conditional Access For Europe, và thiết bị là một ví điện tử, được dùng như là một cơ chế chuẩn Châu Âu cho các thanh tốn khách hàng, truy cập đến các dịch vụ thơng tin và định danh (nếu cần). Hệ thống này dùng bảo mật khĩa cơng khai, và cĩ khả năng thực hiện các giao dịch khơng trực tuyến, vì vậy giảm yêu cầu kết nối tới các máy chủ trung tâm. Nĩ khơng phải là tài sản cá nhân, phần cứng (ví điện tử trơng tương tự như một máy tính cầm tay) sẽ cĩ mặt khắp nơi giống như các máy bán hàng tự động. Họ mơ tả thiết bị phần cứng như sau: ”Phần cứng sẽ bao gồm các ví điện tử bỏ túi. Sẽ cĩ một số dạng, một số đơn giản chỉ cĩ hai nút, một số cĩ màn hình LCD (tinh thể lỏng) lớn và rất nhiều nút. Một số cĩ thể là mở rộng của các PDA (bộ trợ giúp cá nhân) hiện nay. Các ví tiền sẽ dùng các thẻ thơng minh như các thiết bị lưu trữ tiền. Chúng sẽ cĩ cổng hồng ngoại để dễ dùng hơn.” Về cơ bản, hệ thống được thiết kế để sử dùng trong các cửa hảng hơn là qua mạng Internet (vì yêu cầu cho các giao dịch khơng trực tuyến). Nĩ cĩ thể được coi như là phiên bản di động khơng trực tuyến của hệ thống tiền điện tử DigiCash. Nĩ được trả trước cho phép người dùng được hồn trả lại số tiền nếu họ bị mất ví. Nĩ đồng thời hỗ trợ các loại tiền khác nhau. Bản thân thiết bị bao gồm một vệ sĩ là một thẻ thơng minh với bộ xử lý mã hĩa chuyên dụng, tức là ví tiền bảo vệ quyền lợi của người dùng, và vệ sĩ bảo vệ quyền lợi của người phát hành tiền. Khơng cĩ giao dịch nào là cĩ thể mà khơng cĩ sự hợp tác của chip bảo vệ, và vệ sĩ này lưu một bản ghi của mọi đồng tiền được dùng để tránh việc tiêu tiền hai lần. Thêm vào đĩ, chip bảo vệ chứng thực mỗi thanh tốn bằng một chữ ký mật mã. Nhưng nhược điểm của cơ chế này là tiền mà ví dùng ở dạng mã hĩa (vì vậy được gọi là tiền điện tử khơng trực tuyến) với định danh của người thanh tốn được mã hĩa trong số của đồng tiền – tuy nhiên, việc này cần làm để định danh của người thanh tốn cĩ thể được phát hiện nếu tiền bị tiêu hai lần. Ví tiền nhận tiền bằng cách rút chúng từ ngân hàng thơng qua một máy ATM. Vì vậy nĩ được gọi là trả trước và các đồng tiền trong máy khơng tồn tại như tiền tệ ở bất cứ đâu khác. Khi người dùng tiêu tiền ví tiền sẽ truyền một hoặc nhiều đồng tiền vào thiết bị của người bán và đánh dấu chúng như là đã tiêu rồi ở trong ví tiền. Người bán hàng bây giờ cĩ giá trị của các đồng tiền này. Tuy nhiên, họ phải nạp chúng với một người phát hành để giá trị đĩ được chấp nhận. Vì vậy, luồng chính của hệ thống CAFÉ là rút tiền ← than tốn ← nạp tiền và các đồng tiền của cá nhân khơng được quay vịng như tiền thực. Vì vậy, tính trao đổi được khơng tồn tại trong hệ thống này. Chế độ giao dịch: nặc danh và khơng trực tuyến. Lưu ý rằng các giao dịch chỉ là khơng trực tuyến khi mua bán, các giao dịch rút tiền vào ví là các giao dịch trực tuyến. Đồng thời, nĩ cĩ thể quyết định các thanh tốn qua một ngưỡng nhất định phải được khẳng định trực tuyến – và trong các trường hợp này hệ thống là nặc danh và trực tuyến. Bảng sau nêu các thuộc tính giao dịch và giám sát của hệ thống CAFE. Thuộc tính giao dịch Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tê Chia nhỏ được Mở rộng được Tương thích Bảo lưu CAFE Cĩ ? Cĩ Cĩ Cĩ Cĩ Cĩ Cĩ ? Cĩ Thuộc tính giám sát Người bán Người mua Thời gian Số lượng Hàng hĩa Người bán tồn bộ một phần tồn bộ tồn bộ tồn bộ Người mua tồn bộ tồn bộ tồn bộ tồn bộ tồn bộ Ngân hàng tồn bộ khơng tồn bộ tồn bộ Khơng Bộ giám sát tồn bộ một phần tồn bộ tồn bộ tồn bộ CheckFree Tập tồn CheckFree cung cấp một lượng lớn các giải pháp thương mại điện tử, bao gồm quản lý vốn đầu tư chia sẻ trực tuyến (cùng với sự hợp tác của hệ thống PAWWS) và các hệ thống thanh tốn hĩa đơn trực tuyến chung. Đặc điểm quá trình của chúng như sau: Bạn nhận hĩa đơn và gửi thơng tin thanh tốn cho CheckFree. CheckFree trả hĩa đơn. Hĩa đơn được trả sẽ được liệt kê trong hĩa đơn hàng tháng của bạn. Từ các thơng tin ít ỏi trên cĩ thể hệ thống này tập trung vào việc cung cấp một cách thuận tiện để trả các hĩa đơn thơng thường hơn là cung cấp một hệ thống giao dịch trực tuyến. CyberCash Liên hợp CyberCash cung cấp các giải pháp thương mại từ thẻ các hệ thống dùng thẻ tín dụng cho đến các hệ thống thanh tốn nhỏ (micropayment) an tồn. Cĩ ba hệ thống phân biệt cung cấp bởi CyberCash. Đầu tiên là hệ thống CyberCash cơ bản mà là một cổng gắn các người bán hàng trên Internet với các hệ thống thanh tốn điện tử đang cĩ. Hệ thống thứ hai là cơ chế CyberCoin của họ mà được thiết kế cho các giao dịch trực tuyến và hỗ trợ các thanh tốn nhỏ. Hệ thống thứ ba, là hệ thống CyberCheque (hệ thống séc). Hệ thống giao dịch CyberCash chính dựa trên các thanh tốn thẻ tín dụng bảo mật. Nĩ cĩ các ưu điểm của các hệ thống thanh tốn điện tử lớn đang tồn tại và tích hợp một cách đơn giản với phần mềm của nhà cung cấp nếu chúng là một thiết bị cuối POS vật lý, với các máy chủ CyberCash hoạt động như là một cổng giữa một đại lý trên Internet và các mạng tài chính của ngân hàng. Một giao dịch cĩ thể được miêu tả trong bảy bước: Khách hàng, mà đã đặt hàng với một đại lý, nhận một thơng báo. Khách hàng sử dụng ví CyberCash để trả, ví này sinh một thanh tốn được mã hĩa và được gửi cho đại lý. Đại lý lấy đơn đặt hàng, ký vào thanh tốn và gửi nĩ cho máy chủ CyberCash. Máy chủ CyberCash lấy giao dịch khỏi Internet, dùng phần cứng chuyên dụng mã hĩa nĩ, định dạng lại thành văn bản và gửi nĩ tới ngân hàng của đại lý. Ngân hàng của đại lý sau đĩ gửi giao dịch cho ngân hàng của khách nơi gửi văn bản chấp nhận hoặc từ chối lại cho ngân hàng của đại lý. Bản mã hĩa này được gửi lại cho máy chủ CyberCash. CyberCash gửi mã chấp nhận hay từ chối lại cho đại lý. Bước 1, 2, 3 và 7 diễn ra trên Internet và bao gồm một sự kết hợp của mã hĩa khĩa cơng khai và khĩa đối xứng. Bước 4 và 6 diễn ra trên các đường dẫn chuyên dụng. Bước 5 diễn ra trên các mạng tài chính đang tồn tại. CyberCash khẳng định một giao dịch hồn tất trong khoảng 15 – 20 giây. Vì hệ thống CyberCash sử dụng mạng giao dịch bảo mật mở rộng nên nĩ rất hấp dẫn cho các nhà băng lớn. Thêm vào đĩ, vì nĩ khơng yêu cầu đại lý phải lập các tài khoản ngân hàng mới, nĩ cũng hấp dẫn đối với họ. Chế độ giao dịch: Định danh và trực tuyến. Thuộc tính giao dịch Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tê Chia nhỏ được Mở rộng được Tương thích Bảo lưu CyberCash khơng khơng Cĩ khơng Cĩ khơng - ? Cĩ - Bảng sau chỉ ra khả năng giám sát của CyberCash Người bán Người mua Thời gian Số lượng Hàng hĩa Người bán tồn bộ khơng tồn bộ tồn bộ tồn bộ Người mua một phần tồn bộ tồn bộ tồn bộ tồn bộ Ngân hàng tồn bộ tồn bộ tồn bộ tồn bộ Khơng Bộ giám sát khơng khơng tồn bộ khơng khơng CyberCash tồn bộ khơng tồn bộ khơng khơng DigiCash DigiCash là cơng ty đứng đằng sau hệ thống tiền điện tử. Như tên gọi thì nĩ được thiết kế như là một hệ thống dùng tiền. Hệ thống này đơn thuần là phần mềm vì vậy phân biệt với hệ thống CAFE ở trên. Nĩ dùng mã hĩa khĩa cơng khai và được dùng trên Internet, bao gồm cả thư điện tử. Tiền được lưu trữ địa phương, nhưng yêu cầu người dùng phải cĩ một tại khoản với ngân hàng số mà từ đĩ họ rút tiền. Hệ thống là dùng tiền vì vậy yêu cầu xĩa bỏ các đồng tiền bởi ngân hàng phát hành. Tức là: cũng giống như phiếu ngân hàng, tiền điện tử cĩ thể rút từ và được nạp cho giao dịch yêu cầu các tài khoản nạp. Và giống phiếu ngân hàng, một người dùng cĩ thể trao đổi quyền sở hữu của một lượng tiền cho trước cho một người khác. Nhưng khơng giống như tiền, khi khách hàng trả khách hàng khác một ngân hàng điện tử đĩng vai trị ngầm nhưng là vai trị cơ bản. Tiền điện tử cĩ khả năng hỗ trợ đầy đủ sự nặc danh với các giao thức của nĩ; tuy nhiên, hệ thống cài đặt thực sự cung cấp sự nặc danh một chiều, khi xĩa một giao dịch người nhận thanh tốn được xác định bởi ngân hàng, nhưng người thanh tốn vẫn là nặc danh trừ khi họ tự tiết lộ định danh của mình. Thêm vào đĩ, giống như hệ thống CAFE, tiền số cĩ thể được ký để phát hiện người dùng tiêu tiền hai lần. Sự nặc danh một phần này để ngăn chặn các kẻ phạm tội sử dụng hệ thống. Hệ thống đã được thử bằng loại tiền thử nghiệm của CyberBucks – nĩ khơng thể chuyển đổi với các loại tiền giấy, nhưng cĩ thể được tiêu ở tại một số cửa hàng trên Internet. Hệ thống thử nghiệm cĩ 30000 khách hàng cĩ tài khoản tiền điện tử, 50 đến 60 đại lý chấp nhận thanh tốn và 4 ngân hàng phát hành tiền. Ngồi ra các ngân hàng Mark Twain đã phát hàng tiền điện tử bằng đồng đơla, tại Europe Eunet của Phần Lan và ngân hàng Hà Lan phát hành tiền điện từ bằng tiền của các nước này, và tại Australia, ngân hàng Advance cũng phát hành tiền điện tử. Hệ thống tiền điện tử hoạt động theo cách sau. Một người dùng liên lạc tới một nhà phát hành tiền điện tử và mua tiền điện tử. Các đồng tiền này sau đĩ được tải về máy tính các nhân của người dùng. Các thẻ tiền này cĩ thể được tạo một cách nặc danh bằng cách dùng chữ ký mù. Khách hàng cĩ thể sau đĩ dùng các đồng tiền này bằng cách đưa chúng tới một đại lý qua mạng. Người bán hàng phải đưa các thẻ này cho ngân hàng phát hành để kiểm tra; để đảm bảo giao dịch và cĩ giá trị, đại lý phải nhận thẻ tiền cĩ giá trị ngay lập tức. Ngay tại thời điểm này việc tiêu tiền hai lần bị phát hiện: các máy chủ DigiCash lưu danh sách của mọi đồng tiền đã dùng rồi trong một cơ sở dữ liệu; mỗi giao dịch được kiểm tra trong danh sách này và nếu tiền đã cĩ thì việc tiêu tiền hai lần đã bị phát hiện. Tuy nhiên, sự nặc danh của khách hàng khơng phải là khơng cĩ vấn đề. Khi ngân hàng tự sinh mọi số seri của các đồng tiền của họ (như trong hệ thống NetCash) thì họ cĩ thể biết rõ các trường hợp tiêu tiền hai lần. Tuy nhiên, giả sử cĩ hai khách hàng A và B, cùng tạo cùng số seri và yêu cầu ngân hàng ký nĩ. Thì khi đĩ hai giao dịch hợp lệ lại bị coi là việc tiêu tiền nhiều lần. Mặc dù điều này gần như là khơng thể, thì cơ hội xảy ra tăng lên khi mức độ nặc danh của hệ thống tăng lên. Chaum khuyến nghị rằng sử dụng số ID gồm 100 chữ số thập phân như là số seri tiền sẽ làm giảm sự giống nhau này xuống rất ít phần trăm. Quan trọng hơn, cho phép người dùng tự ý sinh số seri cho các đồng tiền gây quá tải cho các nhà kho trong việc xác định sự tiêu tiền hai lần khi chúng ta xem xét giao thức NetCash sau này. DigiCash cĩ chế độ giao dịch là nặc danh và trực tuyến. Các đặc tính chúng của hệ thống tiền số DigiCash cho bởi bảng sau: Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tế Chia nhỏ được Mở rộng được Tương thích Bảo lưu Eash cĩ khơng khơng khơng khơng cĩ cĩ ? ? cĩ Người bán Người mua Thời gian Số lượng Hàng hĩa Người bán tồn bộ một phần tồn bộ tồn bộ tồn bộ Người mua tồn bộ tồn bộ tồn bộ tồn bộ tồn bộ Ngân hàng tồn bộ khơng tồn bộ tồn bộ khơng Bộ giám sát một phần một phần tồn bộ khơng khơng Financial Services Technology Consortium Đây là một nhĩm lớn của các tổ chức (khoảng 60 thành viên) tham gia trong việc nghiên cứu và phát triển hợp tác khơng cạnh tranh trên các dự án kỹ thuật ngân hàng”. Cĩ hai dự án chính đáng quan tâm là: séc điện tử và thương mại điện tử. Dự án đầu đưa ra bản sao tương tự của dạng điện tử của hệ thống séc đã tồn tại cung cấp bởi các ngân hàng truyền thống; theo nhiều mặt quyển séc này tương tự với dự án ví tiền CAFE. Ngược lại dự án thương mại điện tử là một hệ thống chung cho các giao dịch điện tử trên Internet. Séc điện tử được dùng trong các hệ thống liên ngân hàng hiên tại, và nĩ đơn giản là một cách lựa chọn điện tử cho các giao dịch giấy. Mỗi séc sẽ cĩ đủ thơng tin để hồn tất giao dịch. Dạng tương tự điện tử của chữ ký sẽ được thực hiện bằng các kỹ thuật mã hĩa. Khách hàng sẽ cĩ một quyển séc điện tử cầm theo được, và quá trình viết séc sẽ được tích hợp vào các thiết bị như là các thiết bị đăng ký tiền và phần mềm quản lý tài chính cá nhân. Thêm vào đĩ, nĩ cĩ thể bắt chước các hệ thống thanh tốn khác như là thẻ mua bán điện tử hay séc du lịch sử dụng séc điện tử. Nhĩm này bổ sung thêm rằng sự quen thuộc của mơ hình và việc dùng các tổ chức tài chính đáng tin như là các tổ chức chứng chỉ sẽ đảm bảo tăng nhanh tính hấp dẫn của hệ thống. Họ cho rằng hệ thống đồng thời cĩ thể áp dụng cho các thanh tốn nhỏ. Hệ thống dựa trên phần cứng bảo mật để lưu trữ và phân phối khĩa mã hĩa người dùng để ký séc. Đây sẽ là một phần của quyển séc của họ và thêm vào đĩ duy trì các đăng ký séc đã được tạo ra. Phần cứng sẽ lưu trữ khĩa mật của hệ thống mã hĩa, và khĩa này sẽ khơng được truy cập mà khơng cĩ phần cứng đĩ. Vì vậy, với việc khĩa mật của người dùng khơng bị tiết lộ, khả năng làm giả chỉ tăng nếu quyển séc của người dùng bị đánh cắp hay mất. Sẽ cĩ 3 lớp bảo mật khĩa cơng khai. Đầu tiên người dùng ký séc, bao gồm các ký tự tham chiếu mà bản thân nĩ được ký bởi ngân hàng cĩ tài khoản. Sau đĩ, các ký tự này sẽ được ký bởi các tổ chức đáng tin. FSTC cĩ dự định cung cấp một API mà hỗ trợ các yêu cầu ứng dụng cơ bản của hệ thống, bao gồm: Viết: tạo séc, gắn nĩ với một văn bản đính kèm (nếu cĩ) và ký séc. Cùng ký: gắn chữ ký thứ hai cho séc. Xác thực: xác thực các chữ ký trên séc và kiểm tra phần gắn kèm với một văn bản cĩ liên quan (nếu cĩ). Xác nhận: kiểm tra các chữ ký trên séc, và nếu cĩ giá trị, gắn thêm phần xác nhận và ký séc để nạp tiền hay mua bán. Đọc đăng ký: đọc nội dung đăng ký séc trong quyển séc điện tử. Phần tử đăng ký: thêm một phần tử vào đăng ký séc. Vì séc điện tử được mơ hình hĩa như là hệ thống séc truyền thống nên cĩ một số lưu đồ luồng dữ liệu mà nĩ hỗ trợ là: Nạp và xĩa: người thanh tốn nhận một hĩa đơn / thơng báo từ người nhận thanh tốn sẽ tạo một séc điện tử và gửi nĩ cho người nhận thanh tốn. Người nhận thanh tốn gửi séc cho ngân hàng của anh ta, ngân hàng sẽ trao đổi với ngân hàng của người trả tiền. Đây là một luồng séc điền hình. Mua bán và trao đổi: Người thanh tốn nhận một hĩa đơn / thơng báo từ người nhận thanh tốn sẽ tạo một séc điện tử và gửi nĩ cho người nhận thanh tốn. Người nhận thanh tốn đưa nĩ trực tiếp cho ngân hàng của người thanh tốn để thanh tốn vào tài khoản của người bán tại ngân hàng của anh ta. Hộp khĩa: : Người thanh tốn nhận một hĩa đơn / thơng báo từ người nhận thanh tốn sẽ tạo một séc điện tử và gửi nĩ cho ngân hàng của người nhận thanh tốn, hoặc trực tiếp hoặc hĩa hộp khĩa. Ngân hàng của người nhận thanh tốn sau đĩ gửi thơng tin tiếp nhận tài khoản cho người nhận thanh tốn và xĩa việc thanh tốn với ngân hàng của người thanh tốn. Trong sơ đồ này khơng cĩ sự xác nhận người nhận thanh tốn. Chuyển khoản: : Người thanh tốn nhận một hĩa đơn / thơng báo từ ngân hàng của anh ta sẽ tạo một séc điện tử, và gửi nĩ cho ngân hàng. Ngân hàng của người thanh tốn sau đĩ chuyển khoản cho tài khoản của người nhận thanh tốn tại ngân hàng của người thanh tốn. Các thuộc tính của hệ thống được cho bởi các bảng sau: Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tế Chia nhỏ được Mở rộng được Tương thích Bảo lưu FSTC khơng cĩ cĩ khơng cĩ cĩ - cĩ ? cĩ Người bán Người mua Thời gian Số lượng Hàng hĩa Người bán tồn bộ tồn bộ tồn bộ tồn bộ tồn bộ Người mua tồn bộ tồn bộ tồn bộ tồn bộ tồn bộ Ngân hàng tồn bộ tồn bộ tồn bộ tồn bộ khơng Bộ giám sát ? ? tồn bộ ? khơng First Virtual First Vituarl cung cấp một hệ thống thanh tốn trên Internet mà cĩ các ưu điểm của các giao thức thư điện tử đang tồn tại để trao đổi văn bản giữa các đại lý và First Virtual và First Virtual với người mua. Điều này làm giảm yêu cầu các phần mềm và giao thức chuyên dụng, và cho phép First Virtual thực hiện và triển khai hệ thống của họ trong hạ tầng mạng Internet đang cĩ. Hệ thống cung cấp sự nặc danh cho người mau trong giao dịch và khơng chi tiết ngân hàng cá nhân được truyền trên Internet. Thay vào đĩ, một hệ thống gọi là VirtualPIN được dùng, với cả đại lý và người mua cùng đăng ký với First Virtual; mỗi người được gán một PIN duy nhất khi họ đăng ký với First Virtual và nĩ dùng để định danh họ trong các giao dịch. Chức năng chính của VirtualPIN là khơng cĩ mối quan hệ nào giữa PIN và các thơng tin tài chính trong thế giới thực. Hệ thống First Virtual dựa trên mơ hình gọi là Thương mại xanh. Điều này cĩ nghĩa là rủi ro khơng phải trong quá trình thanh tốn được chịu bởi đại lý, mặc dù rủi ro đĩ được giảm thiểu. Mỗi tài khoản First Virtual cĩ các đặc tính sau: Đia chỉ hịm thư điện tử liên quan. Trạng thái (một trong các trạng thái kích hoạt, chỉ cho người bán hàng, treo, hoặc khơng cĩ giá trị). Một tải khoản thật liên quan, cùng với: Một phương thức để chuyển khoản từ tài khoản thực thành tài khoản First Virtual. Một phưong thức để chuyển khoản từ tài khoản First Virtual thành tài khoản thực. Một đơn vị tiền tệ được định nghĩa trước cho việc chuyển khoản. Nếu các khách hàng chỉ muốn dùng First Virtual để mua hàng qua mạng Internet tài khoản thực phải là một tài khoản thẻ tín dụng. Tuy nhiên, cho các khách hàng muốn dùng First Virtual để bán hàng, thì một tài khoản séc thêm vào là cần thiết để cho phép First Virtual trả tiền cho đại lý. Sơ đồ giao dịch như sau: Người mua bắt đầu việc mua hàng như bình thường, chỉ khác là thay vì nhập thơng tin thẻ tín dụng trong đơn đặt hàng của đại lý, họ nhập VirtualPIN của họ. Đại lý gửi thư gồm PIN của người mua hàng, PIN của chính họ và mơ tả giao dịch cho First Virtual. First Virtual tự động gửi một thư điện tử cho người mua yêu cầu khẳng định. Người mua hàng gửi lời khẳng định tới First Virtual bằng thư điện tử trả lại. First Virtual sử dụng mạng tài chính bảo mật để thực hiện giao dịch thẻ tín dụng. Khi thực hiện thành cơng giao dịch thẻ tín dụng đại lý được gửi một số xác nhận. Chế độ giao dịch của hệ thống First Virtual là: nặc danh và trực tuyến. Các thuộc tính giao dịch được cho trong bảng sau: Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tế Chia nhỏ được Mở rộng được Tương thích Bảo lưu FV khơng khơng cĩ khơng cĩ khơng - cĩ cĩ - Bảng khả năng giám sát của giao thức được cho như sau: Người bán Người mua Thời gian Số lượng Hàng hĩa Người bán tồn bộ mơt phần tồn bộ tồn bộ tồn bộ Người mua mơt phần tồn bộ tồn bộ tồn bộ tồn bộ Ngân hàng tồn bộ tồn bộ tồn bộ tồn bộ khơng Bộ giám sát mơt phần mơt phần tồn bộ tồn bộ tồn bộ First Virtual tồn bộ tồn bộ tồn bộ tồn bộ tồn bộ Internet Keyed Payment Protocols Dự định giao thức iKP là một giao thức mở, vì vậy tránh được các vấn đề phát sinh bởi các giải pháp thích hợp. Nĩ đồng thời tìm kiếm để dùng phương pháp mã hĩa mạnh theo cách tránh vi phạm luật xâu khẩu hiện thời của Mỹ. Dạng giao thức đầu tiên tập trung vào các thẻ tín dụng, nhưng nĩ cĩ thể được mở rộng thành bất cứ hệ thống thanh tốn nào. Các mạng cơng cộng sẽ được dùng để cho phép người dùng đặt hàng qua mạng Internet, trong khi các mạng tài chính bảo mật đang cĩ sẽ được dùng để quản lý phần thanh tốn của giao dịch. Ít nhất một hệ thống vững chắc đã được xây dựng dựa trên phương thức này: đĩ là Giao thức Thanh tốn điện tử an tồn, mà sự phát triển của nĩ được tài trợ bởi MasterCard và cĩ sự tham gia của IBM, Netscape, CyberCash và GTE Corp. JEPI Đây là một dự án từ hội đồng W3C để thiết kế một giao thức cho phép các hệ thống tự động thương lượng các khả năng thanh tốn. Dự án này tập trung vào: Một giao thức thương lượng đa mục đích dựa trên PEP (Giao thức mở rộng giao thức). Điều này cho các máy khách Web và máy chủ hỏi lẫn nhau các mơđun mở rộng mà chúng hỗ trợ, các tham số thương lượng cho các mở rộng đĩ, và hỏi lẫn nhau cho các sử dụng thương mại một mở rộng nếu cĩ thể. Điều này được đặt vào trong các đặc tả của HTTP 1.2. Một mơđun mở rộng cụ thể, UPP (Universal Payment Preamble), được dùng để thương lượng qua các phương tiện thanh tốnh (séc, thẻ tín dụng, thẻ nợ, tiền điện tử…), các chi nhánh (Visa, MasterCard, American Express, vv…). Tại thời điểm hiện tại các nhĩm sau đang tham gia xây dựng hệ thống: Trình duyệt: Microsoft. Máy chủ: IBM và Open Market. Hệ thống th._.anh tốn: CyberCash và GCTech. Đại lý: Xerox và British Telecom. Thiết kế đầu vào thêm: Digital Equipment Corporation và VeriFone. Hệ thống được thiết kế để trở thành một hệ thống chung mà trong đĩ các cơ chết khác cĩ thể được nhúng vào, nhiều khả năng là nĩ cĩ rất ít thuộc tính riêng. Tuy nhiên, các thuộc tính giao thức cĩ thể giới hạn việc dùng các hệ thống khác. Millicent Đây là hệ thống thương mại nhỏ số của Digital. Nĩ tập chủ yếu vào phần thanh tốn nhỏ của thương mại trên Internet. Họ lưu ý rằng mọi người dùng tiền khác với cách mà họ dùng phiếu ngân hàng, và tương tự, các phiếu tiền lẻ được đối xử khác với phiếu tiền lớn. Vì Millicent tập trung vào các đồng tiền nhỏ nên cho phép họ dùng các biện pháp bảo mật gọn nhẹ hơn. Hệ thống sử dụng scrip, một dạng của thẻ tiền mà chỉ cĩ giá trị với một số đại lý trong một khoảng thời gian nhất định, và các broker (người mơi giới), người đĩng vai trị trung gian giữa các đại lý và khách hàng. Thực tế bất cứ kiểu scrip cụ thể nào chỉ giá trị tại một đại lý cụ thể cĩ nghĩa là đại lý đĩ khơng cần phải kết nối với một nhà phát hành để xác thực thẻ tiền, vì vậy giảm giao thơng mạng và giới hạn chi phí thêm vào của sự chứng nhận. Để tránh cho khách hàng phải cĩ các tài khoản khác nhau với các đại lý, nhất là các đại lý cĩ mối quan hệ rất ngắn, các broker đĩng vai trị như những người trung gian. Một mối liên hệ lâu dài giữa các broker và khách hàng, các broker và các đại lý, hơn là giữa khách hàng và đại lý. Thứ tự cơ bản của các tương tác như sau: Khách hàng lấy một số script của broker. Khách hàng yêu cầu một số scrip của các đại lý cụ thể, mà họ sẽ trả tiền bằng scrip của broker. Broker lấy các scrip của các đại lý yêu cầu. Broker bán scrip của đại lý cho khách hàng. Khách hàng mua dịch vụ với scrip của đại lý. Đại lý đưa tiền dư bằng scrip của đại lý. Bước 1 và 3 khơng diễn ra trong mọi giao dịch – khách hàng cĩ thể mau scrip cần thiết tại broker của họ đủ cho nhu cầu của mình trong một khoảng thời gian, tương tự broker đã cĩ đủ scrip của đại lý để phục vụ một số yêu cầu của khách hàng, hoặc đã cĩ chứng nhận từ đại lý để tạo ra scrip của một số đại lý trực tiếp. Mặc dù cĩ vẻ như là cần rất nhiều giao thơng mạng trong giao thức này, nhưng khơng cĩ các kết nối nút cổ chai đến một nhà phát hành tiền duy nhất cho mỗi giao dịch, đặc biệt khi bước 1 và 3 là khơng cần. Các kinh nghiệm của Digital cho thấy Millicent là đủ hiệu quả cho các giao dịch nhỏ hơn 1 cent. Một thành phần quan trọng khác trong tính chất kinh tế của hệ thống Millicent là việc sử dụng các hệ thống mã hĩa nhẹ. Như là nhĩm thiết kế nĩi, họ chỉ cần làm chi phí của việc phá vỡ giao thức lớn hơn giá trị của scrip, và vì scrip là các trao đổi nhỏ, giá trị này là rất thấp. Thực tế, Millicent cung cấp 3 giao thức, từ “riêng tư và bảo mật” ở mức đỉnh, đến “bảo mật khơng mã hĩa” đến “văn bản rõ ràng” là mức cơ bản nhất. Về cơ bản, hệ thống dùng các kkhĩa mật chia xẻ và các hàm băm một chiều. Vì vậy, trong chế độ “bảo mật khơng mã hĩa”, khách hàng và đại lý đều biết thơng tin mật của khách hàng, thơng tin mật này được gắn với một yêu cầu giao dịch từ khách hàng tới đại lý và được băm. Giá trị băm (chữ ký) và yêu cầu được gửi cho đại lý, đại lý tính lại chữ ký từ yêu cầu giao dịch và thơng tin mật của khách hàng. Nếu hai chữ ký trùng nhau thì yêu cầu là hợp lệ. Chế độ giao dịch: khơng nặc danh và khơng trực tuyến. Chế độ giao dịch của Millicent là khơng bình thường. Khách hàng là khơng nặc danh khi thơng tin tài khoản đựơc giữ bởi broker. Tuy nhiên, hệ thống là khơng trực tuyến do yêu cầu khơng cĩ kết nối với một máy chủ trung tâm được yêu cầu. Bảng sau chỉ ra các thuộc tính giao dịch của hệ thống Millicent: Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tế Chia nhỏ được Mở rộng được Tương thích Bảo lưu Millicent cĩ ? ? cĩ ? cĩ cĩ cĩ cĩ ? các thuộc tính quan sát cho Millicent (trong trường hợp này “ngân hàng” là các broker). Thuộc tính giám sát Người bán Người mua Thời gian Số lượng Hàng hĩa Người bán tồn bộ một phần tồn bộ tồn bộ tồn bộ Người mua một phần tồn bộ tồn bộ tồn bộ tồn bộ Ngân hàng tồn bộ tồn bộ khơng khơng khơng Bộ giám sát một phần một phần tồn bộ ? khơng Mondex Đây là một thiết bị phần cứng, rất giống với thiết bị dùng cho hệ thống CAFE. Tuy nhiên, dự án Modex phát triển hơn, bao gồm các nhà sản xuất chế tạo và bán các thiết bị bảo mật để dùng cho các giao dịch Mondex, và một số các sơ đồ đầu tiên thành cơng. Cĩ rất ít thơng tin kỹ thuật là cơng khai về dạng hệ thống này. Hệ thống dùng các thiết bị phần cứng chuyên dụng trên các thể thơng minh để đảm bảo sự bảo mật mã hĩa của nĩ. Nĩ cĩ thể dùng cho các giao dịch trên Internet – trong các trường hợp này đơn giản là một đầu đọc thẻ tương thích Mondex được gắn vào máy tính, khi một giao dịch cần thực hiện máy tính sẽ kết nối với thẻ qua giao diện. Điều này cĩ nghĩa là hệ thống Mondex cĩ thể hỗ trợ giao dịch trong cả thể giới thực và ảo. Một điểm quan trọng về các giao dịch của Mondex là giá trị chỉ cĩ thể di chuyển từ một thẻ Mondex sang thẻ khác, và chỉ cĩ thể đựơc lưu trữ trong thẻ Mondex. Vì Modex dùng các cơng nghệ phần cứng, để làm giả cần phải mơ phỏng giống hệt thì việc làm giả là khơng kinh tế. Hơn nữa, Mondex cĩ kế hoạch phát hành các nâng cấp thường xuyên cho các chip, để bất cứ sự giảm giả thành cơng nào sẽ nhanh chĩng trở nên vơ giá trị. Thêm vào đĩ, Modex cĩ kế hoạch lấy mẫu giao dịch để duy trì cái nhìn tổng thể về luồng chảy giá trị và để dùng để phát hiện giả mạo và các sử dụng khơng hợp lệ trước khi sự giả mạo quá lớn. Rõ ràng, để cho việc này cĩ thể hệ thống Mondex khơng thể là hệ thống nặc danh. Chế độ giao dịch: khơng nặc danh và khơng trực tuyến Bảng sau cho các thuộc tính gaio dịch của hệ thống Modex là: Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tế Chia nhỏ được Mở rộng được Tương thích Bảo lưu Modex cĩ cĩ cĩ cĩ cĩ cĩ cĩ cĩ ? cĩ NetBill Đây là hệ thống thanh tốn dùng sự kết hợp giữa mã hĩa khĩa đối xứng và cặp khĩa. Nĩ tập trung vào các thanh tốn cho các hàng hĩa mang tính thơng tin như là các dịch vụ bưu điện, bài báo, … Bản thân hệ thống NetBill thu phí các giao dịch, và yêu cầu người dùng cĩ tại khoản NetBill mà từ đĩ thanh tốn được thực hiện. Giao thức cơ bản được tĩm tắt như sau: Người bán hàng gửi hàng hĩa dưới dạng mã hĩa đến máy của bạn. Phần mềm trong máy của bạn xác thực rằng hàng đã được nhận nguyên vẹn và gửi sự xác nhận cho phần mềm trong máy người bán hàng. Người bán hàng gửi văn bản xác nhận của bạn, thơng tin tài khoản và khĩa giải mã cho máy chủ NetBill. Máy chủ NetBill xác nhận rằng cĩ tiền trong tài khoản của bạn để trả cho hàng hĩa. Nếu cĩ nĩ chuyển khoản, lưu lại khĩa giải mã, và gửi một thơng báo lại cho phần mềm của người bán hàng. Người bán hàng sau đĩ gửi bạn khĩa giải mã, mà phần mềm của bạn dùng để giải mã hàng hĩa. Nếu máy chủ của người bán hàng bị hỏng trước bước này phần mềm của bạn cĩ thể lấy khĩa từ máy chủ của NetBill. Hệ thống của NetBill giữ các tài khoản của người bán hàng và khách hàng, và các tài khoản này liên quan đến các tài khoản trong các tổ chức tài chính truyền thống. Bảng sau chỉ ra các thuộc tính của hệ thống NetBill: Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tế Chia nhỏ được Mở rộng được Tương thích Bảo lưu NetBill khơng cĩ cĩ cĩ cĩ ? - ? ? cĩ Bảng sau chỉ ra đặc tính giám sát của hệ thống: Người bán Người mua Thời gian Số lượng Hàng hĩa Người bán tồn bộ tồn bộ tồn bộ tồn bộ tồn bộ Người mua tồn bộ tồn bộ tồn bộ tồn bộ tồn bộ Ngân hàng tồn bộ tồn bộ tồn bộ tồn bộ một phần Bộ giám sát một phần một phần tồn bộ khơng khơng NetCash và NetCheuque Hai hệ thống này đến từ Viện Khoa học Thơng tin của trường đại học Nam California. Chúng khơng phải là các hệ thống lớn và hoạt động của chúng mang nhiều tính lý thuyết. Tuy nhiên, chúng được đề cập đến ở đây và chúng dùng sự xác thực nhiều lớp, tương tự như hệ thống được chấp nhận bởi FSTC, và vì hệ thống phát hiện tiêu tiền hai lần cải tiến. Đầu tiên ta xem xét hệ thống xác thực nhiều tầng. Dưới giao thức này, bất cứ ai muốn nhận một máy chủ tiền tề phải cĩ được một giấy bảo cho loại tiền mới của mình từ các tổ chức đáng tin; máy chủ tiền tệ mới này bắt đầu bằng cách tạo một cặp khĩa và gửi khĩa cơng khai cho tổ chức. Tổ chức sau đĩ phát hàng một chứng chỉ đảm bảo cho máy chủ tiền tệ mà được ký với khĩa mật của tổ chức. Chứng chỉ này bao gồm khĩa cơng khai của máy chủ và số ID duy nhất cho máy chủ, và đĩng vai trị chứng nhận cho máy chủ. Máy chủ bây giờ cĩ thể tự do phát hành tiền. Các đồng tiền này sẽ bao gồm tên máy chủ, số seri của tiền và giá trị tiền và được ký với khĩa mật của máy chủ. Thêm vào đĩ chúng bao gồm một tham chiếu tới chứng chỉ của tổ chức để cho phép việc xác thực máy chủ được thực hiện bởi bất cứ ai cĩ tiền. Trong trường hợp này NetCash đĩ là tất cả những gì cần thiết. Việc tiêu tiền hai lần được thực hiện theo cách ngược lại hệ thống DigiCash. Khi tiền được đưa cho máy chú để xác nhận nĩ được kiểm tra với danh sách tiền đã phát hành. Nếu cĩ, thì nĩ là đồng tiền hợp lệ phát hành bởi máy chủ. Tuy nhiên, nếu số seri của đồng tiền khơng cĩ trong danh sách này hoặc là tiền đã tiêu rồi, và do đĩ bị xĩa khỏi danh sách, hoặc đồng tiền chưa bao giờ được tạo. Trong cả hai trường hợp đồng tiền khơng cĩ giá trị và vấn đề được phát hiện. Nhĩm NetCash cho rằng hệ thống này cĩ thể hiêu quả hơn trong thực tế hơn là hệ thống DigiCash. Với DigiCash, hoặc là danh sách của các đồng tiền đã tiêu phải được giữ trong khoảng thời gian khơng giới hạn để đảm bảo rằng việc tiêu tiền nhiều lần khơng xảy ra, hoặc mọi đồng tiền phải cĩ thời gian hết hạn. Trong trường hợp này, bản ghi các đồng tiền đã dùng sẽ xĩa đi các đồng tiền đã hết hạn. Nếu lượng tiền cĩ giá trị quay vịng lớn hơn lượng tiền cĩ giá trị được dùng tại bất cứ thời điểm nào, thì cơ chế DigiCash ít quá tải hơn. Nếu lượng tiền đã dùng lớn hơn lượng tiền bị xĩa bỏ, thì cơ chế NetCash sẽ tốt hơn. Tuy nhiên, cơ thế NetCash cĩ một ưu điểm thêm vào là tiền giả bị phát hiện cùng với quá trình kiểm tra tiêu tiền hai lần. Cần lưu ý rằng, khơng giống hệ thống CAFE, các thẻ NetCash là cĩ thể trao đổi. Tuy nhiên, đĩ là một phần tạo bởi cơ chế xác thực, khi một đại lý gửi một thẻ cho máy chủ để xác nhận, máy chủ trả lại một thẻ mới tương đương cho đại lý nếu thẻ ban đầu là cĩ giá trị. Vì vậy, cái mà trao đổi trong giao dịch khơng phải là thẻ tiền, mà là giá trị thẻ tiền. Chế độ giao dịch là nặc danh và trực tuyến. Mặc dù giao dịch là nặc danh thì cĩ trường hợp cần lưu tâm: khi tiền được mua bởi một người dùng thì máy chủ cĩ thể biết ai đã mua tiền. Tương tự, khi tiền được đem xác nhận bởi một đại lý thì máy chủ cĩ thể biết ai cần xác nhận chúng. Vì vậy dịng chảy của tiền quan thị trường cĩ thể được ghi lại. Nhĩm NetCash lưu ý rằng các máy chủ khơng nên làm như vậy theo thỏa thuận với khách hàng từ trước. Hơn nữa, cũng cĩ thể trao đổi tiền khơng trực tuyến, tức là tiền cĩ thể tiêu bởi người chủ mới. Tuy nhiên, giao dịch này khơng đảm bảo phát hiện việc tiêu tiền hai lần, và người dùng cuối cùng phải nạp tiền lại cho máy chủ để định giá. Bảng sau nêu các thuộc tính giao dịch trực tuyến: Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tế Chia nhỏ được Mở rộng được Tương thích Bảo lưu NetCash cĩ ? ? ? ? cĩ cĩ cĩ cĩ cĩ Thuộc tính giám sát của hệ thống: Người bán Người mua Thời gian Số lượng Hàng hĩa Người bán tồn bộ khơng tồn bộ tồn bộ tồn bộ Người mua khơng tồn bộ tồn bộ tồn bộ tồn bộ Ngân hàng tồn bộ tồn bộ tồn bộ tồn bộ khơng Bộ giám sát khơng khơng tồn bộ tồn bộ khơng Hệ thống NetCheque được xem như là hệ thống bù cho NetCash. Một trong những ứng dụng được khuyến nghị của nĩ là cân bằng tài khoản tiền trên các máy chủ tiền tệ các loai khác nhau. Tuy nhiên, sự mã hĩa được dùng là kiểu khĩa đối xứng (cụ thể là các vé Kerberos), đối lập với các hệ thống khĩa cơng khai được sử dụng bởi các hệ thống dùng séc khác như hệ thống FSTC. Nhĩm USC lưu ý rằng các khĩa đối xứng là nhanh hơn, và vì vậy phù hợp với các hệ thống thanh tốn nhỏ. Giao dịch NetCheque chạy như sau. Một phần tiền của séc (bao gồm đơn vị tiền tệ), ngày hết hạn, tài khoản, và các người nhận thanh tốn đều được lưu trên séc trong dạng văn bản rõ cĩ thể đọc được. Để viết một séc hệ thống lấy một vé Kerebos để xác thực người dùng và thêm phần kiểm tra (checksum) được đặt vào vị trí chữ ký của séc. Cả séc sẽ được gửi. Để nạp séc người nhận tiền phải lấy một vé đảm bảo rằng séc chỉ cĩ thể trả vào tài khoản của họ. Các séc cĩ thể được xĩa bởi các máy chủ. Chế độ giao dịch: khơng nặc danh và trực tuyến. Bảng sau chỉ ra các thuộc tính giao dịch của hệ thống: Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tế Chia nhỏ được Mở rộng được Tương thích Bảo lưu NetCheque khơng cĩ cĩ khơng cĩ cĩ - cĩ cĩ cĩ Bảng sau chỉ ra các thuộc tính giám sát của NetCheque. Người bán Người mua Thời gian Số lượng Hàng hĩa Người bán tồn bộ tồn bộ tồn bộ tồn bộ tồn bộ Người mua tồn bộ tồn bộ tồn bộ tồn bộ tồn bộ Ngân hàng tồn bộ tồn bộ tồn bộ tồn bộ khơng Bộ giám sát tồn bộ tồn bộ tồn bộ tồn bộ khơng Các giao dịch điện tử bảo mật Hệ thống này được giám sát bởi VISA và MasterCard với mục đích cung cấp một chuẩn chung cho các giao dịch bảo mật trên các phương tiện điện tử. Nĩ là một tập giao thức phức tạp và kỹ càng mà mục đích là để bao quát mọi mặt của thương mại trực tuyến từ việc bắt đầu đăng ký một nơi giữ thẻ thanh tốn với một tổ chức trực tuyến tới các chi tiết thực sự của thanh tốn. Tập giao dịch chính xác được đặc tả như sau: Đăng ký nơi giữ thẻ. Đăng ký bán hàng. Yêu cầu mua hàng. Xác thực thanh tốn Nhận thanh tốn Yêu cầu chứng chỉ Thực hiện mua bán Thơng báo mua bán Bán giao dịch Đảo ngược vịệc xác thực Đảo ngược việc nhận thanh tốn Nạp tiền Đảo ngược việc nạp tiền Bằng cách sử dụng một sự kết hợp giữa khĩa cơng khai RSA và khĩa đối xứng DES đi cùng với sơ đồ phân cấp tin cậy của các chứng chỉ số để xác thực định danh của các bên liên quan trong giao dịch với nhau và đảm bảo sự bảo mật của hệ thống. Cụ thể một kỹ thuật gọi là chữ ký đơi (dual signatures) cho phép khách hàng liên kết hai văn bản với nhau theo cách mà A cĩ thể tạo một đề nghị cho B (gọi là văn bản M1) và đồng thời gửi thơng báo cho ngân hàng của mình để thực hiện thanh tốn (gọi là M2). Nếu B chấp nhận đề nghị của A, B cĩ thể liên hệ với ngân hàng để kích họat thanh tốn của A. Ngân hàng cĩ thể đảm bảo rằng yêu cầu thanh tồn tương ứng với đề nghị tạo bởi A cho B mặc dù họ khơng biết đề nghị này. Vì vậy trong kịch bản như vậy, mặc dù các người tham gia được biết thì các chi tiết của giao dịch là bí mật. Mặc dù các giao thức của SET khơng định nghĩa bất cứ hệ thống thanh tốn cụ thể nào chúng khơng đặt các giới hạn trên bất cứ hệ thống nào. Ví dụ mọi hệ thống cĩ thể cĩ chế độ sau: Chế độ giao dịch: khơng nặc danh và trực tuyến. Mọi bên đều được biết, và giao dịch phải là trực tuyến để thực hiện xác thực. Bảng sau đưa ra các thuộc tính giao dịch của giao thức SET chung là: Thẻ Đơn trị Đồng nhất Độc lập Bền lâu Kinh tế Chia nhỏ được Mở rộng được Tương thích Bảo lưu SET khơng khơng cĩ khơng cĩ khơng - ? cĩ cĩ Bảng thuộc tính giám sát: Người bán Người mua Thời gian Số lượng Hàng hĩa Người bán tồn bộ mơt phần tồn bộ tồn bộ tồn bộ Người mua mơt phần tồn bộ tồn bộ tồn bộ tồn bộ Ngân hàng tồn bộ tồn bộ tồn bộ tồn bộ khơng Bộ giám sát khơng khơng tồn bộ khơng khơng MƠ TẢ HỆ THỐNG BẰNG MÃ HĨA Trong phần này chúng ta sẽ miêu tả ở mức cao các giao thức tiền điện tử trong các khái niệm của các cơ chế xác thực cơ bản. Chúng ta sẽ bắt đầu miêu tả các cơ chế dựa trên mã hĩa khĩa cơng khai này. Sau đĩ ta sẽ xây dựng giao thức một cách dần dần để dễ dàng cho việc giải thích. Ta sẽ bắt đầu bằng một sơ đồ đơn giản mà khơng cung cấp sự nặc danh. Sau đĩ ta sẽ phối hợp với thuộc tính khơng tìm thấy dấu vết thanh tốn, và cuối cùng thuộc tính nặc danh thanh tốn. Kết quả sẽ là một giao thức tiền điện tử hồn chỉnh. Các cơng cụ mã hĩa khĩa cơng khai Ta sẽ bắt đầu bằng cách đề cập đến các kỹ thuật mã hĩa khĩa cơng khái mà trên đĩ các cài đặt tiền điện tử dựa vào chúng. Các hàm một chiều. Một hàm một chiều là một ánh xạ giữa hai tập mà cĩ thể tính tốn một cách hiệu quả theo một chiều nhưng ngược lại thì khơng thể. Nĩi một cách khác, hàm f là hàm một chiều nếu cho s thuộc tập xác định của f, thì đơn giản để tính được t = f(s), nhưng nếu chỉ cho t thì rất khĩ để tìm được s (Các phần tử thường là các số, nhưng cũng cĩ thể là các điểm trên các đường cong ellip). Cặp khĩa. Nếu f là một hàm một chiều, thì một cặp khĩa là một cặp s, t cĩ liên quan với nhau theo cách nào đĩ thơng qua f. Ta gọi s là khĩa mật và t là khĩa cơng khai. Mỗi người dùng giữ khĩa mật của mình và đưa khĩa cơng khai của mình cho mọi người. Khĩa mật vẫn giữ được tính bí mật ngay cả khi khĩa cơng khai được biết, vì thuộc tính một chiều của f đảm bảo rằng t khơng thể tính ra s. Tất cả giao thức khĩa cơng khai sử dụng cặp khĩa. Vì lý do này, mã hĩa khĩa cơng khai thường được gọi là mã hĩa bất đối xứng (asymmetric cryptography). Các hệ thống mã hĩa cổ điển thường được gọi là mã hĩa đối xứng (symmetric cryptography), khi một người cĩ thể mã hĩa và giải mã với khĩa riêng. Chữ ký và định danh. Trong hệ thống khĩa cơng khai, một người dùng xác định bản thân bởi việc chứng minh mình biết khĩa mật mà khơng làm tiết lộ nĩ. Việc này được thực hiện bằng cách một số thao tác dùng khĩa mật mà bất cứ ai cũng cĩ thể kiểm tra hoặc hủy bỏ bằng khĩa cơng khai. Điều này gọi là định danh (identification). Nếu một người tạo một văn bản và cĩ khĩa mật sẽ là người tạo chữ ký số (digital signature) trên văn bản. Chữ ký số đĩng vai trị tương tự như chữ ký bằng tay: định danh tác giả của văn bản theo cách mà khơng thể từ chối, và khẳng định sự tồn vẹn của văn bản. Hàm băm an tồn. Một hàm băm là một ánh xạ từ các xâu bit độ dài bất kỳ thành một xâu bit cố độ dài cố định. Các hàm như vậy thường được yêu cầu phải khơng đụng độ (collision-free): cĩ nghĩa là rất khĩ về mặt tính tốn để tìm ra hai đầu vào mà băm thành cùng một giá trị. Nếu hàm băm cĩ cả tính chất một chiều và khơng đụng độ thì được gọi là hàm băm an tồn. Các hàm băm an tồn thường được sử dụng trong các chữ ký số. Các văn bản cĩ thể cĩ độ dài bất kỳ, nhưng một giải thuật khĩa cơng khai cho trước yêu cầu làm việc trên một tập kích thước cố định. Vì vậy một người băm văn bản và ký kết quả băm hơn là ký chính văn bản. Hàm băm phải là một chiều để tránh việc giả mạo chữ ký, ví dụ như xây dựng một chữ ký cĩ vẻ hợp lệ của một văn bản mà khơng dùng khĩa mật. Hàm băm phải khơng đụng độ để tránh việc từ chối, ví dụ như từ chối việc ký một văn bản bằng cách tạo ra một văn bản khác với cùng một hàm băm. Một giao thức tiền điện tử đơn giản Hệ thống tiền điện tử đơn giản được giới thiệu ở đây ở đây khơng cĩ các đặc tính nặc danh. GIAO THỨC 1: Thanh tốn điện tử trực tuyến. Rút tiền:      Khách gửi một yêu cần rút tiền cho ngân hàng.      Ngân hàng chuẩn bị tiền điện tử và ký nĩ.      Ngân hàng gửi tiền cho khách và trừ tiền trong tài khoản của khách. Thanh tốn/Nạp tiền:      Khách đưa cho cửa hàng tiền.      Cửa hàng liên hệ với ngân hàng và gửi tiền đĩ.      Ngân hàng kiểm tra chữ ký của ngân hàng.      Ngân hàng xác thực rằng tiền chưa bị tiêu.      Ngân hàng xem các bản ghi rút tiền để khảng định việc rút tiền của khách hàng. (tùy chọn)      Ngân hàng nhập tiền vào cơ sơ dữ liệu tiền đã dùng.      Ngân hàng nạp vào tài khoản của cửa hàng và thơng báo cho cửa hàng.      Cửa hàng giao hàng cho khách. GIAO THỨC 2: Thanh tốn điện tử khơng trực tuyến. Rút tiền:      Khách gửi một yêu cần rút tiền cho ngân hàng.      Ngân hàng chuẩn bị tiền điện tử và ký nĩ.      Ngân hàng gửi tiền cho khách và trừ tiền trong tài khoản của khách. Thanh tốn:      Khách đưa tiền cho cửa hàng.      Cửa hàng xác nhận chữ ký của ngân hàng. (tùy chọn)      Cửa hàng giao hàng cho khách. Nạp tiền: Cửa hàng gửi tiền cho ngân hàng.      Ngân hàng kiểm tra chữ ký của ngân hàng.      Ngân hàng xác thực rằng tiền chưa bị tiêu.      Ngân hàng xem các bản ghi rút tiền để khảng định việc rút tiền của khách hàng. (tùy chọn)      Ngân hàng nhập tiền vào cơ sơ dữ liệu tiền đã dùng.      Ngân hàng nạp vào tài khoản của cửa hàng. Các giao thức nĩi trên sử dụng chữ ký số để đạt được tính xác thực. Các đặc tính xác thực cĩ thể đạt được bằng các cách khác, nhưng chúng ta cần sử dụng chữ ký số để cho phép các cơ chế nặc danh sẽ thêm vào. Các thanh tốn điện tử khơng tìm thấy dấu vết Trong phần này, chúng ta sẽ chỉnh sửa các giao thức trên để thêm vào thanh tốn khơng thể tìm thấy dấu vết. Để cĩ điều này thì ngân hàng khơng thể liên kết một giao dịch rút tiền cụ thể với một giao dịch nạp tiền cụ thể. Việc này được thực hiện bằng cách dùng một loại chữ ký số đặc biệt gọi là chữ ký mù. Trong bước rút tiền, người dùng thay đổi văn bản được ký bằng một số ngẫu nhiên. Bước này được gọi là làm mù tiền, và số ngẫu nhiên được gọi là nhân tử mù (blinding factor). Ngân hàng ký văn bản ngẫu nhiên và người dùng sẽ bỏ đi nhân tử mù. Người dùng bây giờ đã cĩ một tiền điện tử hợp lệ với chữ ký của ngân hàng. Ngân hàng sẽ thấy đồng tiền đĩ khi nĩ được dùng cho việc nạp tiền, nhưng vẫn khơng biết ai đã rút tiền vì các nhân tử mù khơng được biết bởi ngân hàng. Lưu ý rằng ngân hàng khơng cần biết cái gì được ký trong bước rút tiền. Điều này tăng cường khả năng rằng ngân hàng cĩ thể ký một số thứ hơn là những gì định ký. Để ngăn chặn điều này, chúng ta định nghĩa chữ ký số của ngân hàng tạo bởi khĩa mật cho trước chỉ cĩ giá trị khi xác nhận việc rút một lượng tiền cố định. Ví dụ, ngân hàng cĩ thể cĩ một khĩa cho việc rút tiền 10$, khĩa khác cho việc rút tiền 50$, vv… GIAO THỨC 3: Thanh tốn điện tử trực tuyến khơng tìm thấy dấu vết. Rút tiền: Khách tạo tiền điện tử mà làm mù nĩ.      Khách gửi tiền đã làm mù ngân hàng cùng với một yêu cầu rút tiền.      Ngân hàng ký tiền đã làm mù.      Ngân hàng gửi tiền mù đã được ký cho khách và trừ tiền trong tài khoản của khách.      Khách bỏ mù ở tiền đã được ký. Thanh tốn/Nạp tiền:      Khách đưa tiền cho cửa hàng.      Cửa hàng liên hệ với ngân hàng và gửi tiền..      Ngân hàng kiểm tra chữ ký của ngân hàng.      Ngân hàng xác thực rằng tiền chưa bị tiêu.      Ngân hàng nhập tiền vào cơ sơ dữ liệu tiền đã dùng.      Ngân hàng nạp vào tài khoản của cửa hàng. Cửa hàng giao hàng cho khách. GIAO THỨC 4: Thanh tốn điện tử khơng trực tuyến khơng tìm thấy dấu vết.. Rút tiền:      Khách tạo tiền điện tử mà làm mù nĩ.      Khách gửi tiền đã làm mù ngân hàng cùng với một yêu cầu rút tiền.      Ngân hàng ký tiền đã làm mù.      Ngân hàng gửi tiền mù đã được ký cho khách và trừ tiền trong tài khoản của khách.      Khách bỏ mù ở tiền đã được ký. Thanh tốn:      Khách đưa tiền cho cửa hàng.      Cửa hàng xác nhận chữ ký của ngân hàng. (tùy chọn)      Cửa hàng giao hàng cho khách. Nạp tiền: Cửa hàng gửi tiền cho ngân hàng.      Ngân hàng kiểm tra chữ ký của ngân hàng.      Ngân hàng xác thực rằng tiền chưa bị tiêu.      Ngân hàng nhập tiền vào cơ sơ dữ liệu tiền đã dùng.      Ngân hàng nạp vào tài khoản của cửa hàng. Một giao thức tiền điện tử cơ bản Ta sẽ chỉnh sửa các giao thức ở trên để đi đến bước cuối cùng là đạt được sự nặc danh thanh tốn. Sự thay thế lý tưởng là cả người thanh tốn và người nhận thanh tốn khơng biết được định danh của nhau. Việc này tạo cho các giao dịch từ xa sử dụng tiền điện tử hồn tồn nặc danh: khơng ai biết khách hàng tiêu tiền ở đâu và ai đã trả. Nếu việc thanh tốn là trực tuyến, ta cĩ thể dùng Giao thức 3. Trong trường hợp khơng trực tuyến thì vấn đề mới nảy sinh. Nếu cửa hàng cố thanh tốn tiền đã dùng rồi, thì sẽ bị phát hiện bởi ngân hàng, nhưng cả hai đều khơng biết ai đã tiêu tiền hai lần vì người khách là nặc danh. Vì vậy là cần thiết cho ngân hàng cĩ thể định danh được người tiêu tiền nhiều lần. Đặc tính này tuy nhiên cần phải duy trì sự nặc danh cho các người dùng tuân thủ theo pháp luật. Giải pháp là tại bước thanh tốn yêu cầu người thanh tốn phải cĩ, ngồi tiền điện tử, một số thơng tin định danh mà được chia sẻ với người nhận thanh tốn. Thơng tin này thường được chia ra theo cách nào đĩ mà một phần khơng tiết lộ gì về khách hàng, nhưng bất cứ hai phần nào là đủ để xác định khách đĩ. Thơng tin này được tạo ra trong suốt quá trình rút tiền. Giao thức rút tiền bao gồm một bước mà trong đĩ ngân hàng xác nhận rằng thơng tin đĩ cĩ thực và tương ứng khách hàng với một tiền cụ thể được tạo. (Để bảo vệ sự nặc danh của người thanh tốn, ngân hàng sẽ khơng thực sự xem thơng tin, mà chỉ xác thực là cĩ). Khách hàng mang thơng tin đĩ với tiền cho đến khi tiêu tiền. Tại bước thanh tốn, khách hàng phải tiết lộ một phần thơng tin cho Bob. (Vì chỉ khách cĩ thể tiêu tiền nên chỉ cĩ khách biết thơng tin đĩ). Việc tiết lộ được thực hiện bằng một giao thức thử thách – trả lời (challenge-response protocol). Trong giao thức này, cửa hàng gửi cho khách một số “thử thách” ngẫu nhiên và khi trả lời, khách gửi lại một phần thơng tin định danh. (Số thử thách quyết định phần nào được gửi). Tại bước nạp tiền, phần bị tiết lộ được gửi tới ngân hàng cùng với tiền. Nếu mọi việc diễn ra bình thường, định danh của khách sẽ khơng bị phát hiện. Tuy nhiên, nếu khách tiêu tiền hai lần, ngân hàng cuối cùng sẽ cĩ hai bản của cùng một đồng tiền, mỗi bản cĩ một phần thơng tin định danh. Vì sự ngẫu nhiên trong giao thức thử thách – trả lời , hai phần này là khác nhau. Vì vậy ngân hàng cĩ thể xác định ra người tiêu tiền nhiều lần. Do chỉ cĩ khách hàng cĩ thể dùng thơng tin định danh, chúng ta biết rằng tiền của khách đã khơng bị sao chép và dùng lại bởi một người khác. GIAO THỨC 5: Tiền khơng trực tuyến. Rút tiền:       Khách tạo tiền điện tử, bao gồm cả thơng tin định danh. Khách hàng làm mù tiền.      Khách gửi tiền đã làm mù ngân hàng cùng với một yêu cầu rút tiền. Ngân hàng kiểm tra xem cĩ thơng tin định danh.      Ngân hàng ký tiền đã làm mù.      Ngân hàng gửi tiền mù đã được ký cho khách và trừ tiền trong tài khoản của khách.      Khách bỏ mù ở tiền đã được ký. Thanh tốn:      Khách đưa tiền cho cửa hàng.      Cửa hàng xác nhận chữ ký của ngân hàng.      Cửa hàng gửi cho khách số thử.      Khách hàng gửi cho cửa hàng trả lời (tiết lộ một phần thơng tin định danh).      Cửa hàng kiểm tra trả lời.      Cửa hàng giao hàng cho khách. Nạp tiền:      Cửa hàng gửi tiền, số thử thách, và trả lời cho ngân hàng..      Ngân hàng kiểm tra chữ ký của ngân hàng.      Ngân hàng kiểm tra tiền chưa được tiêu.      Ngân hàng nhập tiền, số thử thách và trả lời vào cơ sơ dữ liệu tiền đã dùng.      Ngân hàng nạp vào tài khoản của cửa hàng. Lưu ý rằng, trong giao thức này, cửa hàng phải xác thực chữ ký của ngân hàng trước khi đưa cho khách các sản phẩm. Bằng cách này, cửa hàng cĩ thể đảm bảo rằng anh ta sẽ được trả tiền hoặc sẽ biết định danh của kẻ tiêu tiền nhiều lần. Các biện pháp an ninh và xác thực sử dụng trong các hệ thống điện tử HẠ TẦNG KHĨA CƠNG KHAI (PKI) Trong mã hĩa, hạ tầng khĩa cơng khai là một thỏa thuận mà cung cấp cho bên thứ ba tạo và xác nhận định danh của người dùng. Nĩ cũng đồng thời gán các khĩa cơng khai cho các người dùng. Điều này thường được thực hiện bởi phần mềm tại một vị trí trung tâm cùng với các phần mềm kèm theo tại các vị trí phân tán. Các khĩa cơng khai thường được đặt trong các chứng chỉ. Khái niệm này cĩ nghĩa cả tổ chức chứng nhận chứng chỉ và cá các thỏa thuận liên quan, rộng hơn bao gồm cả cách sử dụng giải thuật khĩa cơng khai trong các liên lạc điện tử. Mục đích và chức năng Các thỏa thuận của PKI cho phép người dùng cĩ thể xác thực lẫn nhau, và để sự dụng trong các chứng chỉ định danh (ví dụ khĩa cơng khai) để mã hĩa và giải mã các văn bản trao đổi. Tổng quát, một PKI bao gồm một phần mềm máy khách, phần mềm máy chủ như là một tổ chức chứng nhận chứng chỉ, phần cứng (ví dụ thẻ thơng minh) và các thủ tục. Một người dùng cĩ thể ký các văn bản bằng khĩa mật của anh ta, và người dùng khách cĩ thể kiểm tra chữ ký (sử dụng khĩa cơng khai mà cĩ trong chứng chỉ của người dùng kia mà được phát hành một tổ chức chứng nhận chứng chỉ trong PKI). Điều này cho phép hai (hoặc nhiều) bên liên lạc thiết lập sự bảo mật, tồn vẹn văn bản và xác thực người dùng mà khơng cần phải trao đổi bất cứ thơng tin mật nào. Trường hợp sử dụng Hầu hết các hệ thống PKI tầm cỡ tập đồn dựa trên dãy chứng chỉ để thiết lập một định danh một bên, như là một chứng chỉ cĩ thể được phát hành bởi một tổ chức chứng chỉ mà cĩ chứng chỉ được tạo bởi một tổ chức chứng chỉ khác cao hơn và tiếp tục như thế. Điều này tạo ra một phân cấp chứng chỉ hình thành bởi ít nhất là một số máy tính, thường là hơn một tổ chức, và thường là các gĩi phần mềm tương tác hỗn hợp từ nhiền nguồn. Các chuẩn là yếu tố cốt yếu cho hoạt động của PKI, và phát hành các chuẩn là yếu tố quyết định cho các PKI cĩ ý định mở rộng hoạt động. Hầu hết các sự chuẩn hĩa được thực hiện bởi nhĩm IETF PKIX. Các hệ thống PKI tập đồn thường vừa đủ cho một sơ đồ thư mục của tập đồn, trong đĩ mỗi khĩa cơng khai của nhân viên thường được lưu (nhúng vào trong một chứng chỉ), cùng với các thơng tin cá nhân khác (số điện thoại, hịm thư, địa chỉ, phịng ban, …). Ví dụ ứng dụng PKI kiểu nào, từ bất cứ người phát hành nào, cĩ rất nhiều ứng dụng, bao gồm cung cấp khĩa cơng khai và gắn với định danh của người dùng mà được dùng cho các việc sau: Mã hĩa và/hoặc gửi xác thực của thư điện tử (như dùng OpenPGP hay S/MIME). Mã hĩa và/hoặc xác thực các tài liệu (như các chuẩn chữ ký XML hay mã hĩa XML nếu tài liệu được mã hĩa dưới dạng XML). Xác thực người dùng cho các ứng dụng (như là truy cập thẻ thơng minh, xác thực máy khách với SSL). Các giao thức liên lạc an tồn tự khởi động, như là trao đổi khĩa Internet (IKE) và SSL. Trong cả hai ứng dụng này, bước thiết lập của một kênh an tồn sử dụng các phương pháp khĩa bất đối xứng, nhưng thực sự là dùng các phươn._.ew BigInteger(bArrayQ); BigInteger objOne = new BigInteger(1); BigInteger objPhiN = (objP-objOne )*(objQ-objOne); BigInteger objInverseV = objV.modInverse(objPhiN); // tính Beta = ((α ^ db mod nb) * (α ^ inverseV mod nb)) mod nb BigInteger objResult = objAlpha.modPow(objDB,objNB); objResult = objResult.modPow(objInverseV,objNB); return objResult.ToString(); } Sau khi đã tính được β ngân hàng cĩ thể tạo văn bản trả lời rút tiền cho khách: : IDA, IDB, β, TimeB và ký văn bản này bằng khĩa mật của ngân hàng cho chữ ký signB. Để đảm bảo tính bảo mật ngân hàng cĩ thể mã hĩa văn bản này bằng khĩa cơng khai của khách hàng để chỉ cĩ khách hàng đọc được thơng tin này. Văn bản sẽ được lưu ở file cĩ phần mở rộng là *.rod. (Văn bản gửi cho khách hàng vẫn được truyền qua kênh mật SSL). ... // tạo văn bản trả lời string sDataB = sIDA+','+ sIDB +','+ sBeta +',' + sTimeB; // tạo chữ ký cho văn bản string sSignB =SignData(sDataB,sPriKB); string sReturn = ""+sDataB+""+sSignB+""; sReturn = objCrypto.EncryptString(sReturn,sPubKA); sReturn = ""+sReturn+""; CreateFileText(FileName,sReturn); ... Giao diện form nhận yêu cầu rút tiền Tạo tiền điện tử Khi khách hàng nhận được trả lời của ngân hàng, khách hàng sẽ giải mã nĩ bằng khĩa mật của mình và tạo tiền điện tử bằng cách tính s ≡ (r-1β mod nb) như là chữ ký mù của ngân hàng. Để tính s khách hàng cần cĩ β, và khĩa cơng khai của ngân hàng. Để tiện cho việc tính tốn ta cĩ thể biến đổi như sau s ≡ (r-1β mod nb) ≡ ((r-1 mod nn) * (1β mod nn)) mod nn, trong đĩ (r-1 mod nn) chính là nghịch đảo mod nb của r. Hàm tính s sau nhận r, β là các tham số vào dưới dạng thập phân, khĩa cơng khai ngân hàng cho bởi xâu, hàm trả lại số s dưới dạng thập phân. public string CreatS(string sSoR,string sPKB,string sBeta) { // khởi tạo r và beta BigInteger objR = new BigInteger(sSoR,10); BigInteger objBeta = new BigInteger(sBeta,10); // lấy tham số nn của khĩa cơng khai ngân hàng RSACryptoServiceProvider RSAprovider = new RSACryptoServiceProvider(); RSAprovider.FromXmlString(sPKB); RSAParameters RSAPara = RSAprovider.ExportParameters(false); byte[] bArrayNB = RSAPara.Modulus; //bArrayNB =objByteArray. ReverseByteArray(bArrayNB); BigInteger objNB = new BigInteger(bArrayNB); // tính nghịch dảo của r BigInteger objInverseR = objR.modInverse(objNB); // tính s BigInteger objResult = (objInverseR * (objBeta % objNB)) % objNB; return objResult.ToString(); } Sau khi đã cĩ s khách hàng đã cĩ thể tạo tiền số cĩ dạng (et, nt, v, s). Giao diện form tạo tiền số: Mua hàng và thanh tốn trực tuyến Giao thức: A → ES: E-goods, Cost, AccountES, et, nt, v, s, TimeA, signt ES → B: Cost, AccountES, et, nt, v, s, TimeA, EMD, signt B → ES: ReceiptES, et, nt, v, s, RM, s', TimeB, signB ES → A: License, ReceiptA, et, nt, v, s, RM, s', TimeES, signES Giả sử khách hàng vào trang web của người bán hàng, sau khi xem một số mặt hàng khách hàng quyết định chọn mua số hàng hĩa của cửa hàng, thì cửa hàng sẽ gửi một hĩa đơn cĩ dạng E-goods, Cost cho khách hàng trong đĩ E-goods là các mặt hàng khách hàng đặt mua, cost là giá của các hàng này. Tạo đơn thanh tốn hĩa đơn Sau khi nhận hĩa đơn khách hàng sẽ tính một đơn thanh tốn hĩa đơn và gửi cho cửa hàng. Thanh tốn hĩa đơn đĩ cĩ dạng E-goods, Cost, et, nt, v, s, TimeA trong đĩ E-goods, Cost là hĩa đơn, (et, nt, v, s) là tiền điện tử của khách hàng, TimeA là nhãn thời gian Khách hàng sẽ ký vào văn bản bằng khĩa mật tạm thời rồi gửi E-goods, Cost, et, nt, v, s, TimeA, signt ... // lấy thơng tin hĩa đơn string sProductAndPrice = ReadToEndFile(billFileName); // lấy thơng tin khĩa mật tạm thời string sPriKT = ReadToEndFile(tempPriKey); // lấy thơng tin tiền số clsXML objXML = new clsXML(sECashPath); string sPubKT = objXML.GetXmlNodeContent("/ECash/PKT"); string sV = objXML.GetXmlNodeContent("/ECash/V"); string sS= objXML.GetXmlNodeContent("/ECash/S"); // tạo thanh tốn hĩa đơn và chữ ký string sData = sProductAndPrice+','+sPubKT+','+sV+','+sS++','+sTimeA; string sSign = SignData(sData,sPriKT); CreateFile(saveFileDialog1.FileName,"Order",sData,sSign); ... Thanh tốn hĩa đơn được tạo lưu ở file cĩ phần mở rộng là *.pob. Giao diện form tạo thanh tốn hĩa đơn: Nhận thanh tốn hĩa đơn Khách hàng sau tạo thanh tốn hĩa đơn sẽ gửi cho cửa hàng. Cửa hàng sẽ kiểm tra chữ ký signt trên văn bản cĩ phù hợp bằng khĩa cơng khai (et, nt) trong văn bản. Sau đĩ cửa hàng kiểm tra hàng và giá cả cĩ phù hợp, nếu phù hợp thì kiểm tra đến tiền điện tử của khách hàng. Cửa hàng kiểm tra tiền điện tử bằng cách xem liệu cĩ thỏa mãn. Để kiểm tra được điều này cửa hàng cần cĩ khĩa cơng khai của ngân hàng (ở dạng chứng chỉ khĩa cơng khai), tiền điện tử (et, nt, v, s) của khách hàng. Hàm kiểm tra tính hợp lệ của tiền điện tử sau nhận các đối số v, s dưới dạng các số thập phân, các xâu biểu diễn khĩa cơng khai tạm thời và khĩa cơng khai của ngân hàng . public bool CheckECash(string sV,string sS,string sPubKT,string sPubKB) { // đọc thơng tin khĩa cơng khai ngân hàng clsByteArray ByteArray = new clsByteArray(); RSACryptoServiceProvider RSAProvider = new RSACryptoServiceProvider(); RSAProvider.FromXmlString(sPubKB); RSAParameters RSAPara = RSAProvider.ExportParameters(false); byte[] bNB = RSAPara.Modulus; BigInteger objNB = new BigInteger(bNB); byte[] bEB = RSAPara.Exponent; BigInteger objEB = new BigInteger(bEB); // đọc thơng tin khĩa cơng khai tạm thời RSAProvider.FromXmlString(sPubKT); RSAPara = RSAProvider.ExportParameters(false); byte[] bArrayNT = RSAPara.Modulus; byte[] bArrayET = RSAPara.Exponent; byte[] bConcat = ByteArray.ConcatByteArrays(bArrayET,bArrayNT); // tính H(et ||nt) mod nb MD5CryptoServiceProvider MD5Provider = new MD5CryptoServiceProvider(); byte[] bHash = MD5Provider.ComputeHash(bConcat); BigInteger objResult1 = new BigInteger(bHash); objResult1 = objResult1 % objNB; // tính s ^ (eb*v) BigInteger objS = new BigInteger(sS,10); BigInteger objV = new BigInteger(sV,10); BigInteger objResult2 =objS.modPow(objEB,objNB); objResult2=objResult2.modPow(objV,objNB); // so sánh hai kết quả return (objResult1.ToString()==objResult2.ToString()); } Nếu tất cả các thơng tin trên đều được thỏa mãn cửa hàng sẽ gửi tới ngân hàng yêu cầu thanh tốn cĩ dạng như sau: Cost, AccountES, et, nt, v, s, TimeA, EMD, signt tức là hồn tồn tương tự với nội dung thanh tốn hĩa đơn của khách hàng gửi cho cửa hàng, cộng thêm với thơng tin tài khoản của cửa hàng. Thơng tin này sẽ được mã hĩa bằng khĩa cơng khai của ngân hàng để đảm bảo chỉ cĩ ngân hàng là đọc được nĩ. Vì hệ thống là thanh tốn trực tuyến nên cửa hàng cần phải đưa chi tiết thanh tốn cho ngân hàng trước khi chấp nhận thanh tốn và giao hàng cho khách. Cĩ nhiều cách để đưa cho ngân hàng các thơng tin này, nhưng ở đây em thiên về giải pháp dùng Web service. Tức là ngân hàng sẽ cung cấp cho cửa hàng một web service, mỗi khi cửa hàng cần thực hiện thanh tốn chỉ cần gọi web service này. Web Service thực hiện thanh tốn Trong C# để dùng một web service ta cần biết địa chỉ url của nĩ và chỉ cần thêm nĩ vào như một Web Reference, đặt cho nĩ một tên cụ thể, Một web reference cung cấp cho ta một lớp với giao diện là các thuộc tính và phương thức cĩ trong web service. Để dùng các phương thức hay thuộc tính này ta cần khai báo một đối tượng lớp đĩ. Ví dụ nếu ngân hàng cĩ Web Servie là CheckECash, một cửa hàng cĩ thể dùng web service bằng cách thêm nĩ vào như một web reference và đặt tên là BankService, mỗi khi cửa hàng cần dùng các dịch vụ cĩ trong Web Service của ngân hàng, cửa hàng chỉ cần tạo một đối tượng như sau: BankService.CheckECash service = new BankService.CheckECash(); Và gọi phương thức của đối tượng đĩ để thực hiện giao dịch string sResult = service.CheckDigiCash(sAccountB,sData,sSign); Phương thức mà ngân hàng tạo ra trong Web Servie của mình là: [WebMethod] // web method để chỉ đây là hàm cĩ thể gọi bằng web service public string CheckDigiCash(string sAccount,string sData,string sSign) hàm này nhận tham sĩ là tài khoản của cửa hàng, thanh tốn hĩa đơn của khách hàng cùng với chữ ký tạo bởi khĩa mật tạm thời. Ngân hàng sau khi nhận các thơng tin này sẽ kiểm tra chữ ký và dữ liệu xem cĩ phù hợp; nếu chúng phù hợp, ngân hàng sẽ lấy thơng tin tiền điện tử từ thanh tốn hĩa đơn của khách hàng và kiểm tra sự hợp lệ của tiền điện tử, kiểm tra giá trị của tiền cĩ đủ để thanh tốn. Nếu lượng tiền này là đủ ngân hàng sẽ nạp thêm tiền vào tài khoản cho cửa hàng, đồng thời thêm tiền vào cơ sở dữ liệu tiền đã tiêu. Sau đĩ ngân hàng gửi lại cho cửa hàng thơng báo và tiền cịn lại của khách hàng sau thanh tốn. Vì để đảm bảo tính bảo mật thơng tin tài khoản của cửa hàng đã được cửa hàng mã hĩa bằng khĩa cơng khai của ngân hàng nên chỉ cĩ ngân hàng mới cĩ thể giải mã được thơng tin này. [WebMethod] public string CheckDigiCash(string sAccount,string sData,string sSign) { // lấy thơng tin khĩa string sPubKT = ... // khĩa cơng khai tạm thời string sPriKB = ... // khĩa mật của ngân hàng // kiểm tra chữ ký if (!CheckSign(sData,sSign,sPubKT)) { return ... // trả lại thơng báo khơng thành cơng nếu // chữ ký khơgn hợp lệ } // giải mã thơng tin tài khoản của string sAccountES = DecryptString(sAccount,sPriKB); // kiểm tra tài khoản của cửa hàng ... // kiểm tra tiền số ... // nạp tiền cho cửa hàng ... Nếu thanh tốn thành cơng ngân hàng sẽ trả lời cho cửa hàng dưới dạng ReceiptES, et, nt, v, s, RM, s', TimeB, signB, trong đĩ: ReceiptES là thơng báo của ngân hàng, (et, nt, v, s) là tiền điện tử cũ của khách hàng RM là tiền cịn lại bằng số tiền của tiền điện tử xxx – cost giá hàng s’ là chữ ký mới của ngân hàng, s' ≡ TimeB là nhãn thời gian signB là chữ ký của ngân hàng // tạo s’ string sRM = xxx – cost; string sDataRemain = sPubKT+','+sSoV+','+sSoS+','+sRM; string sSRM = SignData(sDataRemain,sPriKB); // tạo văn bản trả lời và chữ ký string sDataR = ReceiptES + ',' +sPubKT + ',' + sV + ',' + sS + ',' + sRM + ',' + sSRM + ',' + sTimeB; string sSignR = SignData(sDataR,sPriKB); string sReturn ="" + sDataR + "" + sSignR + ""; // trả lại văn bản trả lời cho cửa hàng return sReturn; } Khi nhận đựơc trả lời từ ngân hàng cửa hàng sẽ kiểm tra chữ ký của ngân hàng, nếu chữ ký hợp lệ cửa hàng xem thơng báo của ngân hàng cĩ phải là thanh tốn được chấp nhận hay khơng. Nếu thanh tốn đựơc chấp nhận cửa hàng sẽ tạo văn bản cĩ dạng: License, ReceiptA, et, nt, v, s, RM, s', TimeES, signES và gửi cho khách hàng. Trong đĩ: License là chứng chỉ cho phép khách hàng nhận hàng ReceiptA thơng báo của cửa hàng cho khách hàng et, nt, v, s, RM, s' là tiền điện tử cịn lại TimeES là nhãn thời gian signES là chữ ký của cửa hàng ... // gọi web service của ngân hàng BankService.CheckECash service = new Shop.BankService.CheckECash(); string sResult = service.CheckDigiCash(sAccountB,sData,sSign); // lấy thơng tin và chữ ký từ kết quả trả về của ngân hàng string sDataB = ... string sSignB = ... // kiểm tra chữ ký của ngân hàng if (CheckSign(sDataB,sSignB,sBankPubkey)) { // tạo nội dung trả về và chữ ký string sDataES = sLicenseA + ‘,’ + sReceiptA + ‘,’ + sPubKT + ‘,’ + sV + ‘,’ + sS + ‘,’ + RM + ‘,’ + sSRM + sTimeES; string sSignES = objCrypto.SignData(sData,sPriKES); string sReturn = "" + sDataES + " " +sSignES + ""; // tạo văn bản trả lời cho khách hàng CreateFileText(filename,sReturn); ... Văn bản trả lại cho khách hàng được lưu ở file cĩ phần mở rộng là *.rmo Tạo tiền số cịn lại Sau khi nhận được trả lời của cửa hàng dưới dạng file *.rmo khách hàng cĩ thể tạo tiền số cịn lại chính là (et, nt, v, s, RM, s'). Đầu tiên khách hàng sẽ kiểm tra chữ ký của cửa hàng, nếu chữ ký là hợp lệ khách hàng sẽ tạo tiền điện tử cịn lại. Chữ ký của cưẳ hàng được kiểm tra bằng khĩa cơng khai cho dưới dạng chứng chỉ khĩa cơng khai của cửa hàng. ... // đọc thơng tin từ trả lời của cửa hàng clsXML objXML = new clsXML(txtRM.Text); string sData = objXML.GetXmlNodeContent("/Reply/Data"); string sSign = objXML.GetXmlNodeContent("/Reply/Sign"); // lấy thơng tin khĩa cơng khai của cửa hàng string sPubKES = objCrypto.GetPublicKeyFromCert(txtPubKES.Text); // kiểm tra chữ ký của cửa hàng if (CheckSign(sData,sSign,sPubKES)) { // lấy thơng tin tiền điện tử cịn lại string sPubKT = ... string sV = ... string sS = ... string sRM = ... string sSRM = ... // tạo tiền số cịn lại string sText = "" + sPubKT + "" + sV + "" + sS + "" + sRM + "" + sSRM + ""; CreateFileText(saveFileDialog1.FileName,sText); } ... Giao diện form tạo tiền số cịn lại: Các chức năng khác của hệ thống ngân hàng Ngồi chức năng tạo tiền số và thực hiện thanh tốn, ngân hàng cịn cĩ các chức năng sau: Quản lý khách hàng Quản lý tài khoản Quản lý tiền điện tử đã dùng. Hệ quản trị cơ sở dữ liệu mà em dùng cho hệ thống này là hệ quản trị Microsoft SQL Server. Hệ quản trị này cĩ chức năng tạo các cơ sở dữ liệu, tạo bảng, tạo các câu truy vấn … Cơ sở dữ liệu gồm cĩ bảng và các câu truy vấn phục vụ cho mục đích xử lý dữ liệu trong các bảng. Bảng dùng biểu diễn một lớp đối tượng. Bảng gồm các dịng và các cột. Mỗi hàng là một đối tượng cụ thể.Mỗi cột là một thuộc tính của đối tượng. Các câu truy vấn trong SQL Server Truy vần tìm kiếm SELECT select_list FROM table_source [ WHERE search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] select_list Các cột được chọn cho tập kết quả. Danh sách chọn là một dãy các biểu thức phân cách bằng dấu phẩy. * Chỉ ra rằng mọi cột trong mọi bảng và view trong phần FROM sẽ được trả lại. Các cột được trả lại theo bảng và theo thứ tự chúng tồn tại trong bảng. table_name.* Giới hạn phạm vi của * vào một bảng. column_name Nếu tên của cột trả lại. Bảo đảm tên column_name rõ ràng để ngăn ngừa tính trạng tham chiếu phức tạp, như hai bảng trong phần FROM cĩ các cột trùng tên. Ví dụ, bảng Customers và Orders trong cơ sở dữ liệu Northwind database cùng cĩ cột tên là ColumnID. Nếu hai bảng được dùng cho một truy vấn customer ID cĩ thể được định nghĩa trong danh sách lựa chọn là Customers.CustomerID. expression Nĩ là tên cột, hằng, hàm hay một kết hợp của các tên cột, các hằng, và các hàmg liên kết nhau bởi các tốn tử hay một câu truy vấn phụ. column_alias Là tên khác để thay thé tên cột trong tập kết quả truy vấn. Ví dụ một tên khác là "Quantity", hay "Quantity to Date", hay "Qty" cĩ thể dùng cho một cột tên là quantity. table_source Các bảng thực hiện tìm kiém dữ liệu Đặc tả các điều kiện cho các dịng được chọn. Khơng cĩ giới hạn số thuộc tính cĩ thể cĩ trong một điều kiện. order_by_expression Đặc tả cột được sắp xếp. Cột được sắp xếp cĩ thể cho bằng tên cột, một biểu thức, hay một số nguyên khơng âm biểu diễn vị trí tên cột hoặc biểu thức trong select_list. Truy vấn thêm dịng thêm một hay nhiều dịng vào một bảng. INSERT [INTO] table_or_view [(column_list)] data_values Câu lệnh đưa dữ liệu data_values vào một hay nhiểu dịng vào bảng hay view. column_list là danh sách tên cột, cách nhau dấu phẩy, dùng để xác định các cột mà dữ liệu thêm vào. Nếu column_list khơng cĩ, mọi cột trong bảng sẽ nhận dữ liệu.. Truy vấn tạo sửa dữ liệu trong bảng UPDATE         {          table_name         }         SET         { column_name = { expression | DEFAULT | NULL } )  [ WHERE    ] Tham số table_name Tên bảng để cập nhập dữ liệu SET Đặc tả danh sách các cột hoặc biến được cập nhập. column_name Tên cột phải cĩ trong bảng đặc tả trong câu UPDATE. expression Là một biến, một giá trị, biểu thức hoặc một câu lệnh SELECT phụ trả lại một giá trị. Giá trị trả lại bằng expression thay thế giá trị tồn tại trong column_name. Đặc tả các điều kiện cho các dịng được thêm vào hay xĩa đi. Khơng cĩ giới hạn số thuộc tính cĩ thể cĩ trong một điều kiện. Câu truy vấn xĩa dịng trong bảng DELETE   FROM ( table_name  }     [ WHERE  { ] table_name Tên bảng để xĩa dữ liệu Đặc tả các điều kiện cho các dịng được thêm vào hay xĩa đi. Khơng cĩ giới hạn số thuộc tính cĩ thể cĩ trong một điều kiện. Stored procedure (thủ tục được lưu trữ) Một thủ tục được lưu trữ là một đối tượng thực hiện được được dịch trước mà chứa một hoặc nhiều câu truy vấn SQL. Các thủ tục được lưu trữ cĩ các tham số đầu vào và đầu ra và cĩ thể tạo mã trả lại số nguyên. Thực hiện một thủ tục tương tự như việc thực hiện một truy vấn được chuẩn bị trước, ngoại trừ thủ tục tồn tại là đối tượng được dịch khơng đổi trong cơ sở dữ liệu. Một thủ tục được lưu trữ cĩ thể che dấu các câu lệnh SQL phức tạp với một ứng dụng. Tức là thay vì phải trực tiếp tạo các câu lệnh truy vấn phức tạp, ứng dụng chỉ cần gọi một thủ tục chứa các câu truy vấn đĩ, với các tham số đầu vào cần thiết. Mơ hình của việc thưc hiện truy vấn trong SQL Server SQL Server Ứng dụng Stored Procedures SQL Querries (SQL Statements) Gọi Thực hiện Cú pháp của một thủ tục CREATE PROCEDURE procedure_name @varaible_list AS SQLStatements procedure_name là tên của thủ tục @varaible_list là danh sách biến SQLStatements là các câu truy vấn trong SQL. Thao tác với hệ quản trị CSDL trong C# C# cung cấp khơng gian tên System.Data.SqlClient để thực hiện việc kết nối với cơ sở dữ liệu. Trong khơng gian tên cĩ các lớp đáng chủ ý sau: Lớp System.Data.SqlClient.SqlConnection biểu diễn một kết nối mở tới một cơ sở dữ liệu SQL. Giao diện lớp cĩ các thuộc tính và phương thức đáng chú ý: public virtual new string ConnectionString [ get, set ] xâu dùng để mở một cơ sở dữ liệu SQL public SqlConnection ( ) hàm khơi tạo tạo một đối tưộng SqlConnection. public SqlConnection ( string connectionString ) tạo một đối tượng SqlConnection với xâu kết nối ConnectionString cho trước. public virtual new void Open ( ) mở một kết nối cơ sở dữ liệu với các thuộc tính đặc tả bởi ConnectionString. public virtual new void Close ( ) đĩng một kêt nối tới cơ sở dữ liệu. Lớp System.Data.SqlClient.SqlCommand biểu diễn một câu lệnh SQL hay một stored procedure để thực hiện trong một cơ sở dữ liệu SQL. Giao diện lớp cĩ các thuộc tính và phương thức đáng chú ý: public System.Data.SqlClient.SqlConnection Connection [ get, set ] đối tượng SqlConnection dùng cho bởi một thể hiện của lớp SqlCommand, các câu lệnh phải thực hiện trên một kết nối cơ sở dữ liệu SQL. public System.Data.SqlClient.SqlParameterCollection Parameters [ get] tập hợp các tham số của SqlCommand. public virtual new System.Data.CommandType CommandType [ get, set ] kiểu câu lệnh của SqlCommand. public virtual new string CommandText [ get, set ] câu lệnh SQL hay stored procedure để thực hiện trong cơ sở dữ liệu. public SqlCommand ( ) khởi tạo một đĩi tượng SqlCommand public SqlCommand ( string cmdText ) khởi tạo một đĩi tượng SqlCommand với câu truy vấn cmdText public SqlCommand (string cmdText , System.Data.SqlClient.SqlConnection connection ) khởi tạo một đĩi tượng SqlCommand với câu truy vấn cmdText trên một kết nối cơ sở dữ liệu SQL connection. public System.Data.SqlClient.SqlDataReader ExecuteReader ( System.Data.CommandBehavior behavior ) giử một câu lệnh cho bởi CommandText tới kết nối cơ sở dữ liệu SQL trong Connection, và tạo một System.Data.SqlClient.SqlDataReader với một trong các hành vi thuộc System.Data.CommandBehaviorvalues. public virtual new System.Int32 ExecuteNonQuery ( ) thực hiện một câu lệnh SQL trên một kết nối và trả lại số dịng tác động. Lớp System.Data.CommandBehavior miêu tả kết quả của một truy vấn và tác động của nĩ lên cơ sở dữ liệu. Nĩ cĩ thể là một trong các giá trị sau CloseConnection: khi một câu lệnh đã được thực hiện thì đĩng kết nối khi một đối tượng DataReader được đĩng Default: mặc định KeyInfo SchemaOnly SequentialAccess SingleResult SingleRow Lớp System.Data.CommandType miêu tả cách một câu lệnh được dịch. Nĩ cĩ thể là một trong các giá trị StoredProcedure TableDirect Text Lớp System.Data.SqlClient.SqlParameter biểu diễn một tham số cho một câu lệnh SqlCommand. Giao diện lớp cĩ các thuộc tính và phương thức đáng chú ý: public virtual new string ParameterName tên tham số public virtual new object Value giá trị tham số public SqlParameter ( ) hàm khởi tạo Lớp System.Data.SqlClient.SqlParameterCollection biểu diễn tập các tham số SqlParameter Phương thức đáng chú ý: public System.Data.SqlClient.SqlParameter Add ( System.String parameterName , System.Object value ) thêm một SqlParameter cho bởi tên tham số và giá trị, vào trong tập hợp tham số SqlParameterCollection. Lớp System.Data.SqlClient.SqlDataReader cung cấp phương tiện để đọc các dịng trong cơ sở dữ liệu SQL. Các thuộc tính và public const virtual new object this [ string] đọc một dịng trong đối tượng public virtual new System.Boolean Read ( ) đưa con trỏ tới dịng tiếp theo public virtual new void Close ( ) kết thúc việc đọc Để thao tác với một cơ sở dữ liệu trong SQL Server em tạo lớp clsObjData. Các thuộc tính của lớp là // một kết nối với cơ sở dữ liệu SqlConnection myConnection; // xâu chứa thơng số kết nối static string strConn=""; // cấu trúc một tham số gồm tên tham số và giá trị private struct Params { public string name; public string strvalue; } // tập tham số câu lệnh cập nhập private Params[] Update_Param = new Params[100]; // tập tham số câu lệnh xĩa private Params[] Delete_Param = new Params[10]; // tập tham số câu lệnh chọn private Params[] Select_Param = new Params[100]; // số tham số của một thao tác cập nhập, xĩa, hay lựa chọn private int update_count = -1, delete_count = -1, select_count = -1; Để tạo một kết nối với cơ sở dữ cần biết các thơng số: vị trí nguồn cơ sở dữ liệu, tên cơ sở dữ liệu, tài khoản đăng nhập. Các tham số này cĩ thể chứa trong một xâu kết nối, sau đĩ ta tạo một đới tượng SqlConnection để thực hiện kết nối trong xâu kết nối, khi thực hiện xong thao tác với cơ sở dữ liệu cần đĩng kết nối lại. Các hàm mở và đĩng kết nối // mở kết nối public void OpenConnection() { myConnection = new SqlConnection(); myConnection.ConnectionString=strConn; myConnection.Open(); } // đĩng kết nối public void CloseConnection() { myConnection.Close(); } Thực hiện các thao tác Chính là việc gọi các stored procedure trong cơ sở dữ liệu. Khởi tạo tham số truyền cho các stored procedure // khởi tạo lại tham sĩ cho một thao tác protected void ResetParam(int key) { switch (key) { // thao tác cập nhập case 1: update_count = -1; break; // thao tác xĩa case 2: delete_count = -1; break; // thao tác lựa chọn case 3: select_count = -1; break; default: break; } } // thêm một tham sĩ vào tập tham số của một thao tác protected void AddParam(int key, string _name, string _strvalue) { switch (key) { // cập nhập case 1: update_count++; Update_Param[update_count].name = _name; Update_Param[update_count].strvalue = _strvalue; break; // xĩa case 2: delete_count++; Delete_Param[delete_count].name = _name; Delete_Param[delete_count].strvalue = _strvalue; break; // lựa chọn case 3: select_count++; Select_Param[select_count].name = _name; Select_Param[select_count].strvalue = _strvalue; break; default: break; } } Các thao tác // thao tác cập nhập protected void Update(string str_store) { // mở kết nối OpenConnection(); // thực hiện stored procedure tên là str_store myCommand = new SqlCommand(str_store, myConnection); // kiểu câu lệnh stored procedure myCommand.CommandType = CommandType.StoredProcedure; // nhập các tham số myCommand.Parameters.Clear(); for (int i = 0; i <= update_count; i++) myCommand.Parameters.Add(Update_Param[i].name, Update_Param[i].strvalue); // thực hiện truy vấn myCommand.ExecuteNonQuery(); // đĩng kết nối myCommand.Dispose(); CloseConnection(); } // thao tác xĩa protected void Delete(string str_store) { // mở kết nối OpenConnection(); // thực hiện stored procedure tên là str_store myCommand = new SqlCommand(str_store, myConnection); // kiểu câu lệnh stored procedure myCommand.CommandType = CommandType.StoredProcedure; // nhập các tham số myCommand.Parameters.Clear(); for (int i = 0; i <= delete_count; i++) myCommand.Parameters.Add(Delete_Param[i].name, Delete_Param[i].strvalue); // thực hiện truy vấn myCommand.ExecuteNonQuery(); // đĩng kết nối myCommand.Dispose(); CloseConnection(); } // thao tác lựa chọn protected SqlDataReader Select(string str_store) { // mở kết nối OpenConnection(); // thực hiện stored procedure tên là str_store myCommand = new SqlCommand(str_store, myConnection); myCommand.CommandType = CommandType.StoredProcedure; // nhập các tham số myCommand.Parameters.Clear();/ for (int i = 0; i <= select_count; i++) myCommand.Parameters.Add(Select_Param[i].name, Select_Param[i].strvalue); // thực hiện truy vấn myReader= myCommand.ExecuteReader(CommandBehavior.CloseConnection); myCommand.Dispose(); return myReader; } Các chức năng khác của hệ thống ngân hàng. Quản lý khách hàng Quản lý khách hàng bao gồm các thao tác thêm một khách hàng mới, sửa thơng tin khách hàng, tìm kiếm khách hàng, xĩa khách hàng. Lưu ý khách hàng chỉ được xĩa khi khơng cĩ tài khoản trong ngân hàng. Đâu tiên ta tạo bảng khách hàng; tblKhachHang STT Tên trường Kiểu dữ liệu Độ lớn Ý nghĩa Ràng buộc ID int 4 byte Mã khách hàng not null, khĩa CMND nvarchar 20 word Số CMND not null Hoten nvarchar 200 word Họ và tên khách not null Diachi nvarchar 1000 word Địa chỉ khách Dienthoai nvarchar 20 word Điện thoại khách Ngaysinh datetime 8 byte Ngày sinh của khách not null Email nvarchar 200 word Địa chỉ hịm thư SoTK int 4 byte Số tài khoản cĩ trong ngân hàng Các stored procedure thực hiện các thao tác:: Tìm tất cả khách hàng Tìm khách hàng theo họ tên, ngày sinh và số CMND Thêm hoặc sửa thơng tin khách hàng Xĩa khách hàng cho bởi ID khách hàng Giao diện form quản lý khách hàng Quản lý tài khoản: Để quản lý ta cần tạo bảng tài khoản như sau: tblAccount STT Tên trường Kiểu dữ liệu Độ lớn Ý nghĩa Ràng buộc SoTK nvarchar 20 word Số tài khoản not null, khĩa Sotien nvarchar 50 word Số tiền trong tài khoản not null MSKH int 4 byte Mã số khách hàng not null NgayHetHan datetime 8 byte Ngày hết hạn not null MSTK nvarchar 50 word Mã số tài khoản not null Các store procedure thực hiện các thao tác: Lấy thơng tin của tất cả tài khoản Lấy thơng tin từ một tài khoản cho bởi SoTK Tìm tài khoản từ SoTK và MSTK Tìm tài khoản của khách hàng cĩ MSKH là @MSKH Thêm một tài khoản của khách hàng MSKH và cập nhập số tài khoản của khách hàng tăng lên 1. Rút tiền từ tài khoản cho bởi @SoTK, lượng tiền @Money Nạp tiền vào tài khoản cho bởi @SoTK, lượng tiền @Money Xĩa một tài khoản và trừ đi 1 trong số tài khoản của khách hàng cĩ tài khoản đĩ Giao diện form quản lý tài khoản Quản lý tiền số đã dùng Trước tiên ta tạo bảng tiền số đã dùng: tblECash STT Tên trường Kiểu dữ liệu Độ lớn Ý nghĩa Ràng buộc ID int 4 byte ID tiền số not null, khĩa PubKT nvarchar 4000 word Khĩa cơng khai tạm thời not null SoV nvarchar 1000 word Số v not null SoS nvarchar 1000 word Số s not null RM int 4 byte Tiền cịn lại not null ExpireDay datetime 8 byte Ngày hết hạn not null Các stored procedure thực hiên các thao tác sau: Thêm mới hoặc cập nhập một đồng tiền điện tử Lấy thơng tin của một đồng tiền xác định bởi số v, số s và khĩa cơng khai tạm thời. Trừ đi số tiền cịn lại trong tiền điện tử xác định bằng ID tiền Xĩa tiền đã hết hạn Giao diện form quản trị tiền điện tử đã dùng Các chức năng khác của hệ thống cửa hàng Gồm cĩ: Quản lý hàng hĩa Hiển thị hàng hĩa, cĩ hai dạng Hiển thị tại trang chủ Hiển thị theo cây menu Giỏ hàng (shopping cart) Quản lý hàng hĩa Tạo bảng hàng hĩa: tblSanpham STT Tên trường Kiểu dữ liệu Độ dài Ý nghĩa Ràng buộc ID int 4 byte ID sản phẩm not null, khĩa IDMenu int 4 byte ID Menu not null Name nvarchar 300 word Tên sản phẩm not null Image nvarchar 500 word Tên file ảnh TomTat nvarchar 3000 word Thơng tin tĩm tắt ChiTiet ntext 16 byte Thơng tin chi tiết Gia int 4 byte Giá sản phẩm NgayGio datetime 8 byte Ngày giờ cập nhập Active smallint 2 byte Hiển thị ActiveInMain smallint 2 byte Hiển thị trang chủ FileName nvarchar 300 word Tên file đính kèm Các thủ tuc cần tao Thêm hoặc cập nhập sản phẩm Thủ tục xĩa sản phẩm cho bởi ID sản phẩm Lấy thơng tin tất cả sản phẩm Lấy thơng tin một sản phẩm bằng ID sản phẩm Giao diện form quản trị sản phẩm Hiển thị sản phẩm Tại trang chủ sẽ hiển thị các sản phẩm do người quản trị lựa chọn. Nếu khách hàng chọn các menu khác nhau trên cây menu sẽ hiển ra các sản phẩm tương ứng trong menu đĩ. Các thủ tục cần tao Thủ tục chọn ra tất cả sản phẩm từ ID menu, ID ngơn ngữ Thủ tục chọn sản phẩm hiện thị trang chủ theo ID ngơn ngữ Giao diện sản phẩm hiển thị trang chủ Giao diện sản phẩm trong menu “Sách phần cứng” Giỏ hàng Khi khách hàng bấm thêm sản phẩm vào giỏ hàng thì từ ID của sản phẩm được chọn ta lấy ra các thơng tin như tên sản phẩm, giá của sản phẩm và tạo thơng kê các hàng hĩa khách hàng đã chọn. Giao diện giỏ hàng Tài liệu tham khảo Electronic commerce, nguồn www.Wikipedia.com Electronic money, nguồn www.Wikipedia.com Merchant account, nguồn www.Wikipedia.com Payment gateway, nguồn www.Wikipedia.com Transport Layer Security, nguồn www.Wikipedia.com Blind signatures for untracable payments, tác giả D.Chaum, nguồn Advances in Cryptology CRYPTO '82 Untracable electronic cash, tác giả D.Chaum, Amos Fiat, và Moni Naor, nguồn Advances in Cryptology CRYPTO '88 Security without Identification: Transaction Systems to make Big Brother Obsolet, tác giả David Chaum Online cash check, tác giả David Chaum Card Compare, tác giả David Chaum Digicash, tác giả Mandana Jahanian Farsi, Gưteborg University How to Make E-cash with Non-repudiation and Anonymity, tác giả Song, R., and Korba, L, học viện cơng nghệ Canada Các tài loại khác từ Internet ._.

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

  • docDO71.DOC