What is Cryptography Good For?
Volume Number: 13 (1997)
Issue Number: 11
Column Tag: Dialog Box
What Is Cryptography Good For, Anyway?
by Robert Hettinga, Boston
A look at why the market demands cryptography, because it makes electronic business more efficient
Cryptography allows you to do business with, work with, and trust people you don't know. It can also save a lot of time, programming, and machine resources, and thus, money.
Many people who talk about cryptography talk about it in political terms. We hear people talk about civil liberties, about freedom of speech, the right to bear "arms" (crypto is classified as a munition) or even freedom from having the government quarter "troops", in the form of key escrow authorities, on our hard drives. Frankly I've gotten tired of all the politics. Cryptography, like any other technology, is value neutral. Just like any form of progress, cryptography won't be adopted unless it makes our lives better. And that, I assure you, is what it is going to do.
I've talked extensively in speeches, on the net, and in articles like this one, about financial cryptography and how it's going to change the world, not by making our transactions invisible to big brother, but by forcing profit and loss responsibility down onto smaller and smaller organizations, and, eventually, to applications and microprocessors themselves. I joke about the day when, instead of a credit card association and a bank loaning us money for lunch, it will be a syndicate of individual "bond-bots" each taking a small piece of what could be called a personal digital bearer bond issue for that lunch, all based on our reputation and ability to repay.
I talk about routers which would move information around the net by charging minuscule bits of picocash, buying bandwidth low and selling it high -- sender pays -- in an instantaneously settled auction market for packet switching. Good bye to peering fights, NAPs, and the emerging hierarchy of super-routers and high-capacity backbones. Since each router makes money instead of costs money, it behooves routers to be connected to several other routers, creating a geodesic, instead of hierarchical, Internet. When a router saves enough money out of operations, it could buy a copy of itself. This whole idea of a self-organizing ecology of microeconomic entities makes a lot of people yell at me, particularly those who've spent their careers building bigger and bigger systems, but, then, as my friend Rodney Thayer says, "you're only as good as the people who yell at you". Since I've had some pretty clueful people yell at me, I must be on to something.
Let's start with a little finance. It will help us understand things a little better.
One of the pervasive notions in the economy is that of the book entry. Modern double-entry bookkeeping is about keeping debits and credits in a database. Most of our transaction systems are about sending these debits and credits over wires: credit cards, checks, and almost all transaction settlement in the capital markets are all done with book-entry settlement. Try asking your broker for physical delivery of a stock certificate sometime, and you'll see what I mean.
We have book-entry settlement now because when telegraphy was invented, you couldn't send a bearer certificate, like those old fashioned bonds with rows of coupons on the bottom -- or paper money -- down a wire. We could send only stuff like "I'm debiting this amount from my account, please credit yours by the same."
One problem with book-entries is that you have to trust who sent them to you. This is usually done with access control lists and private proprietary networks. "Clubs" if you will, with a list of members, all biometrically identified (the SEC doesn't take fingerprints for fun), and strict rules for doing things with other members of the club. Break the rules and get thrown out of the club, or worse.
This is different from bearer certificates. With a bearer certificate, you can tell by inspection that the certificate is valid, and, if you know the public reputation of the person or company who issued the certificate, you can decide whether or not to trust them. For example, you can pretty much tell that a dollar bill is genuine by inspection, and you can trust that a modern dollar bill is worth something, but that a Confederate dollar isn't, simply by knowing the public reputation of the issuer.
Another problem with book-entries is that because they are basically unsecure transactions sent down a secure network, we have to have some kind of sanction to prevent fraud. By "sanction" we usually mean violence, usually "sold" by a nation-state of some kind. Nick Leeson, who recently brought down Barings Bank, was sent to jail for making the wrong book-entry. (They tried in Singapore but he escaped to Germany and was extradited to Britain.) Of course, if you send a book-entry to a machine in St. Louis, but you're in Kampala, there's a problem. The answer, of course, is a global government and police force. Right. Go look up Occam's Razor in the dictionary for an answer to that one...
With a bearer certificate, you can shun people who cheat you, which, in some ways, is better than violent sanction. It's certainly cheaper. Ask the Amish how well shunning works as social control. In a financial market, shunning is economic death. Nobody will do business with you.
The very biggest problem with digital book-entries is that they cost so much, and I don't mean just in paying taxes to support police. I mean in computer processing and storage. Not only must we keep lists of who can do what to whom and for how much, we also have to keep records of what we did with anybody else, so we can bust them for doing something wrong to us later. Also, for every transaction regime, there must be a trusted third party, usually called a clearinghouse, who has records of what everybody did to everybody else. On a typical credit card transaction, for instance, you, me, your bank, my bank, and the credit card company all have a record of the lunch I bought from you. We aren't even talking about the check I send to my bank monthly to actually settle my credit card transactions.
We also won't talk about the fact that anyone who scored high enough on a civil service test and now works at the Financial Crimes Enforcement Network (FinCEN) has the right to see those transactions. That's because, again, heretical as it is to the civil liberties folks, cryptography is not really about privacy. It's about economic efficiency and progress.
Creating Digital Bearer Certificates
How can we send a bearer certificate down a wire? Because we can now create digital bearer certificates using the blind signature algorithm developed by David Chaum, the founder of DigiCash. Using this algorithm I can create a unique cryptographic object which has value in the same way that a dollar bill is a unique printed object having value. Of course, those cryptographic objects can be moved down a wire.
Moore's Law dictates a more geodesic network by automating switching and dropping its cost in half every 18 months. It also allows us to pay for that switching very efficiently, by allowing us to automate and manipulate blind signatures and other cryptographic algorithms very cheaply. We, or better, our machines, can issue and spend these bearer certificates of any transaction size, from trillions of dollars to trillionths of a cent, all without keeping transaction records or access lists.
Pull the change out of your pocket and look at it. Do you remember where each and every coin came from? Do you care? When you spend them in a soda machine, does it care? No. Imagine a world where the soda machine or the Internet takes VISA. And, no, I don't mean of big brother, either. Imagine if the whole net cleared on a 90 day float time, at 18% interest... It's absurd.
But, of course, I'm still not really here to talk about financial cryptography. I'm here to talk about access control.
Controlling Access with Bearer Certificates
Well, suppose you had some code you wanted to limit access to, say the SubWoofer source code, or maybe beta version of your software. Suppose, instead of creating and managing a list of developers and what they can see, or even passing around an easily compromised password, you just handed each of them a unique cryptographic object. A ticket, if you will. People could download the package, but only if they cashed in a ticket for it.
The neat thing about this idea is that you don't care who shows up with a ticket, because the tickets are unique and unreplicable. They have value, the value of one download of the SubWoofer source. You can e-mail them out, and if the person who receives the ticket doesn't use it and gives it to someone else, you still have issued only a finite number of copies of the code. Anyone who shows up with a duplicate ticket doesn't get the package. If you're really draconian, Chaum's protocol lets you take the "double-spent" ticket, compare it with the ticket you have taken in already, and identify the key which duplicated the ticket. No access control lists, but you still have to hang onto the tickets which have been turned in.
There are other problems, too. The above actually involves setting up a Chaumian mint and having patented, signature-blinding walletware. Unfortunately, DigiCash, like Chaum before them, have been playing dog in the manger with the patent and are not licensing it to people who could actually make some use of it. There has always been a problem of mistaken identity at DigiCash. First they thought they were CitiCorp, then they thought they were Microsoft, now they think they're VISA. Someday they'll wake up and realize they're cryptographers, or possibly Dolby and Co. (the audio technology people), and we'll all be better off for it.
Fortunately, there is an almost equivalent way to get the same result with minor modifications to an existing, public code base: PGP. It should be possible to do the following neat hack, a sort of a poor man's certification authority. Actually, we're creating something more important than a hierarchical "authority", we're creating a small, geodesic, "web" of trust.
First, create a private PGP key which authorizes people to access the package. (PGP allows you to generate multiple private keys. Just create one for this particular "permission".) Then, using that key, digitally sign the public key of people who you want to have access, and send their signed keys to them. Now, create a quick and dirty browser plugin to hold a copy of the person's signed public key. (This also can then be used for other kinds of access signatures later.) Actually, you might as well put their signed key into the plugin and send it to them that way, since they won't have the plugin the first time around, anyway. Next, put a CGI on your webserver which reads the key in the plugin, and checks to see if it's signed by the right key. Again, this is a single key, an access control "list" which will always have one "record". Well, I suppose you might have two or three people, so you could have them each generate a special purpose key pair of their own, and store the public keys in the list of authorized signatures. Only the person who owns the key in the plugin can make the plugin work.
To use it, someone puts the plugin where their browser wants to see it, and goes to the URL you told them to. The CGI checks the "ticket pocket" plugin and sees if their signature is signed by the key which authorizes access. If not, they go to a page which tells them how to get permission. If they do have permission, then they just see the download page automatically. They can download as many copies of the package as they want, and whether they hand it around is covered, hopefully, by an NDA of some kind.
By the way, when someone talks about cryptographically "watermarking" an application, remember that all this does is tell where the code was stolen from, not who stole it. Clearly, this makes "watermarking" things a waste of time.
Anyway, once we've built the pieces, we can use this technology for anything we want to control access to. No passwords, no users accounts, no group list -- hardly any management at all. In fact, if everyone has the plugin already, all the authorizing person has to do is to download someone's public key off a keyserver somewhere and mail them a signed copy of it.
Cryptography is Easier than Bookkeeping
So now you know why cryptography is so cool, and, most especially, efficient. You don't need vulnerable and expensive databases, with probably secure but potentially unreliable session "pipes" linking them (SSL and SET for example), all to just move permissions, or decision rules, or abstractions of value -- like money -- around the net. Anytime you're confronted with a large and volatile database, especially if it requires another large list of people to have permission to change data in that list, ask yourself if you could do it all much better by creating cryptographic objects and moving them around instead of database entries.
As our ticket and certification web examples show, cryptography usually offers a better way to do it.
Occam's Cryptography, if you will. Cryptography is a weapon, remember?
Robert Hettinga, firstname.lastname@example.org, is a financial cryptography industry pundit. He started several e-mail lists, a web site, a monthly luncheon group, and even an annual conference in Anguilla, all to talk about financial cryptography. See the e$ web site http://www.shipwright.com/ for more information about his various services.