Let's imagine a challenge with 4 facts:
1.) There is a merchant out in the world who is offering something you want, (something truly amazing, like an Enzo Ferrari) for 1,000 BTC.
2.) Fortunately, I'm about to give you 1,000 BTC because I owe ya.
3.) Using a wallet of your design, your job is to create a new address to receive this bitcoin into your wallet, and then subsequently spend this bitcoin into the merchant's 3rd party address.
4.) Unfortunately, the computer you are using is infected with undetectable and unremovable keylogging Malware and screencapture technology. It's designed to immediately intercept and re-spend bitcoins to a thief's address. You don't even know its infected. In other words, as soon as the malware is able to see either your password or your private key, any funds in your wallet will immediately be stolen.
So how can you receive this bitcoin onto the computer's wallet and spend it again without the thief intercepting ANY of it? AND without changing the current bitcoin protocol?
(Hint: easier than you think, don't spend too much time on it, I will reply with the correct solution in about 12 hours time.)
Just for fun, let's also imagine that the memory is infected as well. The thief
already knows your password and the private key to every address you have ever created. The wallet is currently empty, but as soon as any funds go into it, they're going to get stolen right back out unless the wallet is truly of a remarkable design.
One type of valid solution would be to remove the lines of communication. Step 1) Turn off your computers internet connection.
Step 2) Open up your computers wallet and generate an address and private key at your leisure.
Step 3) Tell me to transfer that 1,000 bitcoin to your new address now.
Step 4) Use another computer to monitor the blockchain.info page of that address. Once confirmed call up the merchant to tell him you have a 1,000 BTC address to import via private key when ready. (But I will admit, all this is a little cumbersome and only slightly bending the rules by using 2 computers)
There is an even better solution, but before describing it I'm still interested in what else you might think of.