Just talked to a friend of mine who's more familiar with cryptography, and apparently something like this is possible. The keyfob would have to store the public and private keys, be able to receive NFC data as well as send it, and be able to sign transactions:
Sales terminal comes up with the amount.
Swiping the keyfob transmits the public address to the terminal.
Terminal creates a transaction with the public address and the amount, displaying the transaction (and checking if enough funds are available).
Customer verifies the amount, and swipes the keyfob again.
Terminal uploads the newly created transaction to the keyfob, the keyfob signs it with the private key, and transmits the signed transaction back to the terminal.
Terminal uploads the transaction to the Bitcoin network.
A physical button on the keyfob that you need to press to transmit would keep it secure, and conserve battery power. No need for displays or other buttons. hopefully something that has a tiny amount of flash, just enough CPU power to sign keys, and an NFC transmitter/receiver won't be too costly.
Comments?
Better would be using a smartcard with a display and keypad.
merchant displays total: 123.49 BTC.
you enter in 123.49 into keypad.
card prompts you for pin (optional), you enter pin.
Card displays amount & "OK?" (for verification).
Hit OK, swipe/NFC and leave.
The technology already exists:
Making these cards in bulk is pretty cheap (~$30 for 1000+ dropping to <$10 for millions). The card doesn't need the blockchain. It simply needs a few public/private keypairs and the ability to perform ECC.
The technology isn't the hard part. Hydrogen fuel cell technology exists too. Getting a hydrogen fuel station on ever corner is the hard part. Getting every merchant to accept this Bitcoin card is the hard part.
It is a capital & infrastructure issue not a technology one. I do agree with most of the reponses that a card which hands the merchant the private key is beyond useless. Comparing it to credit card is dubious. consumers have fraud protection on credit cards. Using credits cards isn't anonymous. A merchant (or just smart employee working for honest merchant) could steal private keys with near immunity.
Whatever system is devised it needs to be that the card/phone/device does everything and only hands the signed transaction to the merchant (who verifies it and submits it to the blockchain or 3rd party processing service).