Transactions

The system should support the following kinds of transactions:

Authentication

The protocol occurs over an SSL/TLS connection. When the client initiates the connection, it may use a private key to authenticate itself to the server. If the client tries to access an account with a public key associated with it, the client must have previously set up the TLS connection using the corresponding private key.

Every account may have a PIN associated with it. The PIN must prefix every command issued against the account. The purpose of the PIN is to prevent physical attacks on the card. For example, if someone steals your card or takes a photograph of the debit codes, they still need your PIN withdraw the money.

This highlights the need for a software client. If you use a client, the client can retrieve a new, non-PIN'ed, debit code for each transaction, and keep your PIN secret. But if you purchase on a website by entering your debit code and PIN number, then the merchant gets your PIN. An evil or hacked merchant could deliver your debit code & PIN to criminals. The criminals can capture your debit codes by camera and store them in a database. Then they just wait for you to make a purchase with one of the codes at a hacked website. They look up the debit code in their database to find your other debit codes, which were stolen via camera. All of your debit codes have the same PIN, so they find which codes are unused and then make purchases with them. I hope that clients will become popular before criminals become sophisticated enough to perform this attack. Cards will need special features to prevent photographic theft of codes.

TODO: add PINs to HTTP 402 Protocl Extension

OnlinePaymentProtocol (last edited 2007-10-16 07:15:43 by MichaelLeonhard)