2009-04-02, 12:07 AM (This post was last modified: 2009-04-02, 02:58 PM by KajitiSouls.)
A reason why I made this
So many of us, especially the people who have their faces glued to their computer screens half the time (including me), have wondered at some point why America's voting system isn't mostly electronic, where you could just go to a government website, vote for whoever, click, and be done with it instead of driving to some voting center. (Washington State still does mail-in ballots so I dunno how much of a pain Election season is.) This page is to demonstrate how unbelievably fking hard it is to design the perfect system just for this purpose, by playing with much simpler protocols involving cash exchange.
There are 3 different protocols presented here dealing with cash exchange between spenders, merchants, and the bank. Each protocol is designed to give the spender's money order anonymity to the bank (so it can't tell who's money order it was originally) when he makes a transaction, except possibly when he/she tries to cheat. The higher numbered protocols are more complicated and more secure than the previous one.
Your goal is to get more money into circulation than what you wrote for withdrawal from the bank! It does not count if you get caught later on. Anyone (not everyone) can get more money, including someone you've never met before, and you can be anyone, whether it is a participant in the protocol or an outsider.
And here's a tip: read carefully =P
In all the protocols, assume the following:
--Everyone participating in the protocol cannot be attacked in any shape, way or form, including hydrogen bombs, internet viruses, anthrax, paper cuts, whatever. If someone's getting hurt, then you're not following the rules.
--Everyone is assumed to have unlimited resources; unlimited paper, unlimited computing power (but you still can't violate the first rule), unlimited whatever.
--The bank is infallible. That is, it will always remain operational and does whatever it is suppose to do 100% correctly, given its knowledge and circumstances. It also cannot deliberately cheat for any reason whatsoever; it must be completely honest.
--Since the goal of this challenge is to swindle the bank, we'll assume that it balances its checkbook predictably every week or so. This is the only exception to the above rule.
--In any circumstance where you attempt to subvert the protocol where chance is involved, you automatically fail. Yes, even if you have a 99% chance of succeeding (which will never happen anyways).
--Unless stated otherwise, all and any messages/communications are assumed to be readable and unencrypted, as well as containing minimal information.
Protocol 1
Gregory prepares n amount of money orders for x amount of dollars
Gregory seals the money order along with carbon paper in envelopes, and gives them all to the bank.
The bank opens n - 1 envelopes at random, and confirms that they're all money orders for x amount of dollars.
After verifying the opened money orders, the bank signs the last sealed envelope under the assumption it is also a money order for x amount of dollars, certifying that the money order is valid. The carbon paper Gregory put inside the envelope ensures that the signature gets imprinted on the money order. Then the bank deducts x amount of dollars from Gregory's account.
Gregory later opens the sealed envelope and spends the money order with a merchant. (it can be any merchant)
The merchant checks the money order to make sure it is signed by the bank and thus legitimate.
The merchant takes the money order to the bank.
The bank verifies its signature and credits x amount of dollars to the merchant's account.
Give up?
Either Gregory or the merchant can photocopy the money order. The bank is none the wiser since it cannot tell who's money order it originally was, and it can't zero in on who the possible culprits are since it is also dealing with potentially thousands of other customers. This is the easiest way to subvert the protocol.
Protocol 2
Gregory prepares n amount of money orders with the following information:
x amount of dollars
A random, uniqueness sequence of numbers/letters in which all such sequences are different. Such a sequence should have virtually no chance of being randomly generated.
Gregory puts the money orders with carbon paper into envelopes and seals them. He gives them all to the bank.
The bank opens n - 1 envelopes at random and confirms that each money order is for x amount of dollars, and that each uniqueness sequence is different from each other.
The bank signs the last sealed envelope, confident that it is also a money order for x amount of dollars. The signature gets printed onto the money order itself thanks to the carbon paper. Then the bank deducts x amount of dollars from Gregory's account.
Gregory later opens the envelope and spends the money order with a merchant.
The merchant verifies the signature to make sure the money order is legitimate.
The merchant takes the money order to the bank.
The bank verifies its signature and checks its database of uniqueness sequences for a sequence matching the one on the money order.
If the bank can't find a match, then the new sequence gets recorded, and the bank credits x amount of dollars to the merchant's account.
If the bank finds a match, then the money order is rejected.
Protocol 3
Welcome to cyberspace, b!tches. If you need technical details on some of the mumbo jumbo, feel free to ask.
Gregory prepares n amount of money orders with the following information:
x amount of dollars
A random uniqueness string of fixed length, where the chances of the same string being randomly generated are virtually none.
n pairs of identity strings with a left half and a right half. Both halves are unreadable by themselves (it's not as simple as splitting a watermelon in half). The combination of corresponding pairs will reveal whatever identifying information the bank desires, such as the name and address of the person who originally wrote the money order. Compatible identity strings can be identified as compatible with each other with ease. The identity strings are also involved in a separate protocol, later important at step 8.
Gregory "blinds" all n money orders using a blind signature protocol (this is basically the same as sticking paper money orders and carbon paper into an envelope). He gives them all to the bank.
The bank asks Gregory to "unblind" n - 1 money orders at random and checks that everything is in order. The bank even asks Gregory to reveal all of the identity string pairs.
Once the bank is satisfied that nothing suspicious is going on, the bank digitally signs the last "blinded" money order (digital signatures are made such that tampering with the document invalidates the signature, otherwise what's the point?) and deducts x amount of dollars from Gregory's account.
Gregory "unblinds" the money order (with math magic, this doesn't affect the signature) and spends it with a merchant.
The merchant verifies the bank's signature to make sure the money order is legitimate.
The merchant requests that Gregory randomly reveal either the left half or the right half of the pairs of identity strings, by giving Gregory a random n-bit selector string.
Gregory complies, using the protocol he committed to earlier at step 1.
The merchant takes the money order to the bank.
The bank verifies the signature and checks its database for a matching uniqueness string and "revealed" identity strings ("revealed" at step 8).
If the bank cannot find a matching uniqueness string, it credits the merchant for x amount of dollars, and records the uniqueness string and all of the "revealed" identity strings.
If the bank finds a matching uniqueness string, and finds a matching series of identity strings, then it rejects the money order. Punishment is meted out to the merchant.
If the bank finds a matching uniqueness string, but finds no matching series of identity strings, then it rejects the money order, and looks at the different series of identity strings. Once it finds a corresponding pair, the bank simply combines them to obtain Gregory's identity. Punishment is meted out to Gregory.
If you can subvert protocol 3 successfully, then you can easily see why security has to be incredibly air-tight, and why No Such Agency is heavily involved in "being in ur compooterz, listenin to ur n3farious pl0tz."