I don't know much about python, but saw
this:
bitcoin = AuthServiceProxy("http://%s:%[email protected]:8332"%("user","pass"))
info = bitcoin.getblockchaininfo()
date = info['mediantime']
If this does what I think it does, it's just as easy to fake as a time server: the user can simply fake a date on local port 8332.
I previously setup a fake local time server, and was able to hack the program when requesting the time from Google’s time servers. I can confirm that this hack no longer works.
BTCapsule is pulling the mediantime from Bitcoin Core. I’m sure you know this already, but this is the accepted timestamp compared to the previous 11 blocks. It’s written in Unix time and BTCapsule converts it to ISO format.
https://en.bitcoin.it/wiki/Block_timestampIn order to hack the time, you would have
to do what NotATether mentioned, as well as fake some blocks to get the mediantime. I would assume you need a lot more than 11 fake blocks for RPC to check, but this is well outside of my hacking knowledge.
Based on discussion on other thread[1], IMO you take wrong approach. When your target isn't technical or power user, you shouldn't ask them to install and configure Bitcoin Core manually. If you want to utilize median time on Bitcoin network, there are another approach such as connecting to several Bitcoin node, ask for recent block header and verify received block headers.
[1]
https://bitcointalksearch.org/topic/m.61133095I’m not really sure how to connect to other nodes and receive information without Bitcoin Core. I think the steps to use BTCapsule are simple enough. They might have to wait a few days for Bitcoin Core to download to see the private keys, but it would be worth it.
The directions are:
1. Install Bitcoin Core
2. Choose Settings>Options>Open Configuration File
3. Add rpcuser=user rpcpassword=pass to configuration file and save
4. Wait for blockchain to download and view the keys
With the option to prune the blockchain, this shouldn’t be an inconvenience at all.
OP, I think you're overlooking some important facts about basic network security. Simple TCP/IP wasn't designed with security in mind, and will always be susceptible to man-in-the-middle attacks unless the data being transmitted is properly encrypted.
As
DaveF said in your other thread: "Anything that at any time needs an outside service that is an open standard is never going to be secure." For example, you can use packet-sniffing programs like Wireshark to capture, modify and re-send every packet that comes in and out of your application.
By the way, I think it would be better if you keep the discussion in one thread so that we can keep track of each other's comments.
Can Wireshark be used to capture information that is being sent within localhost without the internet enabled? The only thing being sent is the mediantime of the blocks from Bitcoin Core, and these are installed locally.
Also, this will be my last thread about BTCapsule. I will post all updates here. Changing the method of receiving the year was huge, and it’s my final attempt. Anything else will just be small upgrades.
It's going in a good direction and it's a work in progress so he can keep updating it as we give more suggestions.
EVERYTHING is going to have some sort of vulnerabilities so long as they are being addressed as they are discussed.
The point of doing it this way seems to be the fact that you can download core, disconnect from the net and have a bit more security.
Not 100% perfect, but getting better. It boils down to what I said and you commented on about TCP/IP and services.
But, it also gets back to having a hardware wallet and PIN is vulnerable to the $5 wrench. ($6 wrench with inflation)
-Dave
Thanks for the encouragement.
I’m working on porting BTCapsule to Linux so that the private keys can be entered and decrypted with a temporary Linux OS that can be deleted afterwards.
I looked into the $5 wrench, and it seems the only known protection is multi-sig. BTCapsule is not a wallet, and anything can be typed into the private keys sections.
If someone has three children, they could copy BTCapsule to three separate flash drives, type a different private key into each, and then require all the children to decrypt the keys.