Financial Innovation

edit topic

How OAuth beat Chip and Pin

Posted by Pelle February 12th, 2010 1 comments edit

2 news stories on the same day are quite interesting in their contrast.

Pin and Chip is broken

The first one has the collective might and minds of the European banking system and their suppliers who overlooked a slight issue in their authentication protocol for authenticating Chip cards with a pin number. In Europe most Visa/MC cards are smart cards and have to be authenticated with a pin. This in theory allows for an authenticated payment message.

Only problem was that, well one very important bit of the message was not authenticated leaving a gaping hole. I won’t go into the details as well as Ross Anderson does. He is one of the security researchers who discovered the flaw. Unfortunately it sounds like carders discovered it before them.

Now what to do with these supposedly safe authenticated transactions? There is no way of knowing which ones were fake. You can’t mass revoke all european cards. Some one is in a bit of a bind right now.

Grader’s security screw up

The second story was about HubSpot a Cambridge, Mass. based startup who self admittedly screwed up and let a malicious user comprise the security of their Grader service a rating service for twitter users.

Granted we are not talking about a system that handles the majority of Europe’s electronic point of sales transactions here. But they know they screwed up. However due to the fact that Grader used OAuth they were able to mitigate any damage pretty quickly by asking Twitter to revoke their Consumer credentials and any tokens they had issued to it.

Revokability

The difference is that while both Chip and Pin and OAuth are ways of doing delegated authentication, the only token to revoke in the Chip and Pin scheme is in the card itself. The standards behind Chip and Pin assumes that it’s technology is perfect and through their rule books that all parties involved along the long chain from the card to the issuing bank can automatically be trusted.

This is basically the exact issue I described in The sorry state of Payment Standards.

OAuth does not define how a user authenticates himself to either of the services involved, rather it is focused on the delegation.

The delegation is done in the form of an authorized token that can be equipped with limits and can at any time be revoked. It is under the control of the user. In this case Grader themselves request the revocation as they knew that all of their credentials were compromised. Where do the European bankers even start to clean up this mess?

I think OAuth a simple (as authentication standards go) standard developed on a mailing list by a small group of developers has incredible potential in payments applications. This is of course why we picked it as one of the fundamental building blocks for OpenTransact.

Is OAuth perfect? Probably not. Nothing is 100% secure. It has had one serious security flaw which was fixed. But by design it is revokable. You can do something about it if something goes wrong. There is now an IETF OAuth Working Group working on making it an official internet standard.

OpenTransact a tiny payment standard

Posted by Pelle February 11th, 2010 edit

As I mentioned in my last post The Sorry state of Payment Standards I wanted to blog about OpenTransact which so far is probably one of the most important outcomes of the Agile Banking mailing list set up after my talk last year on Agile Banking.

OpenTransact was designed to be very simple and is based on REST the best practice for current web API design. It should be so easy to implement for developers that there really shouldn’t be an excuse not to implement it.

An OAuth authenticated HTTP POST request to assets URL containing the parameters amount, to and optional memo field. Payer is deduced from the OAuth token.

eg.

POST /transactions/usd HTTP/1.1
Authorization: OAuth ... oauth_token="ad180jjd733klru7", ...
Content-length: 239

amount=10.00&to=you@example.com&memo=Milk

The above example shows a payment of $10 to you@example.com from the user who authorized the “ad180jjd733klru7” OAuth token.

Using the Ruby OAuth gem you would write the above as:

@token.post "/transactions/usd", :amount=>10, :to=>"you@example.com, :memo=>"Milk"

That is pretty much it. But please do read on for more about motivations, issues and applications.

The sorry state of payment standards

Posted by Pelle February 4th, 2010 edit

Since my talk last year at Reboot on Agile Banking the Agile Banking Mailing List has been quite active with lots of different ideas. One of the most important yet also simple products of the list has been OpenTransact which I now realize I haven’t even mentioned on my blog.

OpenTransact aims to be the worlds simplest technical standard for transferring some sort of value between 2 accounts. We wanted it to be so simple that there wouldn’t be a good technical excuse for not implementing it and also make it extremely simple to build all sorts of new value added services on top of it. You can find out more at the OpenTransact site and I will post a detailed article about it tomorrow.

In this article I will focus on what we’ve got. Current payment standards and bank business processes are incredibly complex and I don’t pretend to understand all of it, but I will try to present a much simplified version of what goes on.

What is wrong with existing Payment Standards?

Complex messages

The big issue with most of them is that they are ancient (SWIFT the standard banks use to transfer funds internationally dates back to the mid 70s). Most of them are designed for ancient technology like mainframes with batch processing as well as ancient business practices such as delayed settlement and bank opening hours.

Most of these standards are message based and extremely complex.

SWIFT has 25 standard data elements and 79 types of messages with strange names like MT542. People make good money specializing in specific message types. You often see programmer jobs in the financial industry calling for 3 years of experience in eg. MT530.

ISO 8583 which is used for handling most payment card transactions dates from 1987 is a little better in that at least it does expect to be able to send one or two small messages online, but still most of the heavy lifting is done after the fact in the settlement phase.

Most countries have their own electronic banking clearing systems with their own set of standards and procedures. The largest US clearing system ACH won’t even let you at their online rules website without buying a $79 book.

Security nightmares

Any non cash financial transaction consists of one or more entries known as book entries into various companies databases. By definition any act of creating a financial transaction is delegated by you to someone else. Whenever your transaction involves another bank your original delegation gets delegated onwards to x number of other institutions. Unfortunately the transactions are often unauthenticated. Whether you are sitting in a bank office ordering a wire transfer or handing a waiter your credit card you are delegating authority to transfer funds out of your account. This is why a check says “Pay to the order of…”.

Card payments do support some level authentication from pin to signing via an onboard smart card. But they aren’t used when performing an internet payment. This is obviously where much of the fraud goes on. Credit Card or ACH fraud essentially boils down to convincing (delegating) someone to transfer funds from the victims account.

Since you can’t satisfactorily secure the payment message most of these standards come with complex reconciliation standards that make up most of their complexity and even larger and more complex rule books. These rules are what allow you to deny a transaction when you get your statement a month later after the fact.

Enter PayPal

PayPal’s original Website Payment API while not a standard was a big step up over the actual standards in that it was born of the web. Web 1.0 yes but still the web. So rather than using REST to hide some of the complexity it uses a single URL with lots of different fields including optional non payment fields such as address and shipping details.

A big issue that PayPal had was that they still had to interface with the traditional banking world with their settlement times and insecure payments. To make it economical for them they need to use ACH and similar slow low cost national payment networks guaranteed by credit cards if these don’t go through. This is where much of the complexity of dealing with their Instant Payment Notification comes from.

Most of PayPal’s competitors use similar API’s to PayPal’s, but there hasn’t been any real standardization on it yet.

Their new Adaptive Payment API is much clearer. Yet still fairly complex for a new developer faced with it. And no it’s still not REST.

Why is it like this?

Closing Time

There are many reasons why banking related standards are complex. Most of them are historical. For example banks still operate 5 days a week with close of business at some time like 6pm decided many decades ago by gentlemen in top hats. Of course they do work 24 hours but all their processes are still based on this pre online world.

This means there is still a lot of batch processing going on in that last hour before closing. Most banks have a cutoff time a couple hours earlier than their official closing time to give them time to batch up and reconcile the days business. This is why you have to rush to the bank with your checks before 3pm on a Friday or it won’t get credited until Monday evening.

Settlement

Settlement is another important issue that all of these ancient standards have to deal with. Once you’ve bought that dry martini in the bar after work with your debit card, the money doesn’t actually leave your account yet. Your bank basically puts a hold on your money first. Then over the next couple of days they settle it through a network of banks and institutions depending on the country. Most of the settlement processes is done through batch processes once a day, the more step between your bank and the bars bank the longer settlement takes.

Most of these settlement (clearing) times are standardized by rules set out by central banks or banking associations. The holy grail for many of these systems is to reach what is known a T+0 clearing, which is fancy banker speak for instant clearing. It will take a long time for this to happen in most large economies like the US as there isn’t really a demand for it from anyone except consumers and small businesses.

Conclusion

Any new standard or API that attempts to deal with the existing banking standard is very difficult to simplify. You need to account for each countries settlement and fraud prevention rules. SWIFT was updated to a fancy smancy new XML standard, which didn’t do anything to simplify it besides making it easier to parse.

Any kind of innovation in this needs to be designed for an online world with 7 days, 24 hours and clear simple standards that only aim to solve a simple need. We have had this magic new technology now called HTTP thats been here for close to 20 years now and it’s been kind of successful. OpenTransact is only a very thin layer on top of HTTP and uses OAuth for its authentication, I think it is going to be big. But I will write more on that in my next post.

Liberia's blackboard blogger

Posted by Pelle September 8th, 2009 edit

Alfred has set up his own information business on a busy street in Monrovia. He posts a compendium of news on a blackboard. His sources are local news papers and a network of correspondents throughout the country.

I was quite fascinated that the most prominent information is current market prices for a whole range of different commodities as well as currencies. It shows how important good price data is in any society.

His business model? Advertising.

Liberia’s Blackboard Blogger from WhiteAfrican on Vimeo.

Entrepreneurs, coders and activists we need you to help reboot banking

Posted by Pelle July 3rd, 2009 2 comments edit

Last week I gave my talk on Agile Banking at Reboot 11. This week I have taken my talk and turned it into a series of blog articles of which this is the final one. I have links at the bottom of the article to the previous articles.

How do we build this?

Open web standards are the way to do this. A lot of great work has been done in the past couple of years.

OpenID may provide us a better alternative to account numbers. OpenId is a universal id. It replaces username/password on many different sites.

We may need guidelines for high security open id’s. A voluntary certification of trusted opened providers.

Oauth is a new web security standard. It lets all your applications talk together. You could use it to provide your accounting system access to your accounts. It could also be used for one off or subscription payments.

We also need new simple financial standards.

WideLedger is a simple financial exchange format. It contains only very basic transaction information embedded in a normal web page. It can be implemented in less than an hour for any financial web application.

Together with OAuth it makes it very easy for you to bring your financial info together. Startups will create all sorts of cool and useful financial mashups.

Finance isn’t just about reporting transaction but also performing them so we also need a very simple standard for performing a transfer from one account to another.

After that a slightly more complex standard for performing an exchange between two different parties on two different financial service providers. A simple application would to buy shares in a mutual fund with money in my electronic currency account.

We need Open Source Software to run this new generation of financial software.

  • Ledgers are the foundation of any financial application.
  • Exchange Software to manage transactions between financial services
    There are lots of opportunities for hosting providers to run the above software in a secure manner.

We also need online auditing services to keep an eye on the new financial services companies but also on the hosting providers.
But what about the regulators?

They mean well but need pushing. Change has to come from the grassroots.
We need brave financial rebels, who believe it is better to ask forgiveness than permission.

This doesn’t mean being stupid (always remember what they did to Doug). Limit your risk as a rebel – think small, think community:

  • small community currencies
  • community lending
  • projects with a purpose

If we are forced to I say be the Christiania of finance. Force regulators to think small and learn from you.

Once you have a little bit of momentum engage them publicly. Show them it works and in the end it makes their job easier. Then scale.

Similar proposals

Most of the above ideas are refreshed versions based on work I did from 2000-2004 in the NeuClear project. However I have noticed some interesting new mainstream proposals.

Limited purpose banking a proposal by Kotlikoff and Goodman

It seems very similar but without worrying too much about barriers to entry and know your customer.

Call to action

Programmers, entrepreneurs, activists, lawyers and accountants we need you. I want to hear from anyone with an interest in this. Please write me at pelle@stakeventures.com if you have any thoughts or ideas or want to get involved.

Join the agile-banking google group or attend a BarCampBank .

Earlier this week I wrote about Risky Business the core problem in todays financial services industry, Benches, Coffee and Bubbles about the origins of financial innovation, Douglas Jackson of e-gold who has been one of the most innovative people in the financial services space and my proposal to create a new banking system.

These were all based on my Talk about Agile Banking that I gave at Reboot 11