Bitcoin Forum
April 25, 2014, 07:37:02 AM *
News: Due to the OpenSSL heartbleed bug, changing your forum password is recommended.
 
   Home   Help Search Donate Login Register  
Pages: [1] 2 3 4 5 6 7 8 9  All
  Print  
Author Topic: Patching The Bitcoin Client To Make It More Anonymous  (Read 24096 times)
coderrr
Member
**
Offline Offline

Activity: 63


View Profile WWW

Ignore
June 30, 2011, 06:16:22 PM
 #1

Hey guys I'm interested in getting people's thoughts on this.

TLDR: this patch allows you to:
- see all addresses, including change
- see which addresses are linked together (does recursive expansion of address linkages)
- select which address(es) to send from, rather than letting the client to chose for you

Motivation, further description, and github links below.

http://www.youtube.com/watch?v=TA_O6Boi7Xo

Bitcoin is a decentralized, peer to peer, digital currency. It has been referred to as anonymous, pseudo-anonymous, pseudonymous (whatever that means), and not anonymous at all. It seems there is a lot of misinformation about exactly how anonymous it is and how its anonymity works. I’m going to try to explain part of that here and provide a solution to one of the current big killers of its anonymity.

When you receive coins at a new Bitcoin address, that is, one you’ve never used before, the fact that you control that address is completely unknown to anyone except the sender (and anyone the sender leaked that info to). And the sender may not even know your actual identity, depending on if you revealed this to them or not. If you receive another payment at that same address then both the first and second payers will be able to see that both of them payed you at that address. This is due to how the Bitcoin block chain works and is why you are advised to create a new address for each new payment you wish to receive.

So assume you’ve created 100 addresses for 100 payments. Each of the 100 people know they paid you once, but they don’t know that 99 other people paid you or how much those payments were or how much you have total. So you have revealed very little about yourself to anyone.

Now let’s say you want to _make_ some payments or even just re-organize your funds by moving them to another address. This is where things get tricky and you start losing anonymity. The official Bitcoin client picks coins from multiple addresses in a random fashion when making payments. So let’s say you have those 100 payments from 100 different people each attached to their own address sitting in your wallet and now you want to send Wikileaks some coins. The Bitcoin client might chose coins from 3 of those incoming payments to send out. Now all 3 of the people who sent you those payments know that you received at least 3 payments, how much they were for, and when you received them.

Let me give you a scarier example. Let’s say you have 1 million dollars worth of Bitcoin sitting in one address from some withdrawals on a Bitcoin exchange. Now let’s say you have an address you use for donations, and assume you’ve gotten at least one. The next time you want to send some coins to someone, your client may pick a few coins from your million dollar address and a few coins from your donation address. This is a big problem because it gives the people who’ve donated coins the knowledge that you are also in control of the million dollar address. Plus if your donation address is publicly associated with your identity not only the donors but anyone can go through the block explorer to see which other addresses you are in control of and what their balances are.

Here is a related excerpt from the bitcoin wiki
… if one has bitcoins on several addresses, one can theoretically choose from which address to send the coins. Choosing personally generated coins or an address that you know doesn’t reveal information would protect you. Unfortunately, the default Bitcoin client doesn’t support this currently, so you must assume that your entire balance can identify you if any of the addresses can.
So what can you do about this? If you don’t have any Bitcoin yet then you can just make sure to use separate wallets for addresses you don’t want being mixed together. If you’re already in the position where you have public and private funds in the same wallet there’s not much you can do with the official Bitcoin client, other than not send coins to anyone (or yourself).

That’s why I’ve made a patch to the official client which allows you to send from _only_ a single specific address. Now you can be sure the only people who will ever know that you made that transaction are the ones who already knew about the address being under your control. If you did things right, this will only be a single person.

I’ve added a ‘Send From Address’ tab to the main interface. It actually contains information which was impossible to get from the client before. That is, every address in your wallet and the balance thereof. This includes addresses which were created for the change of your outgoing transactions. These were previously nowhere to be found in the client (even using the bitcoind RPC interface).
Simply chose the address you wish to send from and double click it. This will open the Send dialog with the Send From address filled in. If you try to send more coins than are available in that address the transaction will simply fail and you can try again. Leaving the Send From address blank will make the client behave normally and possibly pick coins from multiple addresses.

The second version of my Bitcoin client patch gives you a better view of your current address linkages. If any two or more addresses were used together for an outgoing transaction those will be considered linked. If any change is returned from an outgoing transaction that change address will be considered linked to all the originating addresses.

The ‘Send From Address’ tab now groups together linked addresses. Each group is separated by an empty line. I’ve also added a ‘Label’ column which will show you the label for the address if one has been set in the ‘Address Book’. Since your receiving addresses usually have labels this makes it easy to see which other addresses they have been linked to.
Sending from multiple addresses is now supported. Simply use the CTRL key to select multiple addresses then click the ‘Send’ button. The addresses will appear in the ‘Send From’ textbox separated by semicolons. Note, this DOES NOT guarantee all the addresses you selected will be used for the transaction. But it DOES guarantee that no unselected addresses will be used. As before, if you leave the ‘Send From’ field blank the client will fall back to its default behavior.

My github bitcoin fork: https://github.com/coderrr/bitcoin/tree/v0.3.24%2Bcoderrr
The commits with the changes: https://github.com/coderrr/bitcoin/commit/74411bec8438431e92a1ad0fd78495f3d742473d https://github.com/coderrr/bitcoin/commit/9376bcbaf7796f7fcf5e7f9976d3d42917507c63
Compiled Windows 32bit client: http://mtgoxlive.com/downloads/bitcoin-v0.3.24+coderrr-v2-win32.zip
Compiled Linux 64bit client: http://mtgoxlive.com/downloads/bitcoin-v0.3.24+coderrr-v3-linux64.tar.bz2

Co-Founder of Private Internet Access VPN Service
Original Co-Founder of MtGox Live and BTC.to
Original Developer of the Bitcoin Anonymity Patch
1398411422
Hero Member
*
Offline Offline

Posts: 1398411422

View Profile Personal Message (Offline)

Ignore
1398411422
Reply with quote  #2

1398411422
Report to moderator

Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1398411422
Hero Member
*
Offline Offline

Posts: 1398411422

View Profile Personal Message (Offline)

Ignore
1398411422
Reply with quote  #2

1398411422
Report to moderator
1398411422
Hero Member
*
Offline Offline

Posts: 1398411422

View Profile Personal Message (Offline)

Ignore
1398411422
Reply with quote  #2

1398411422
Report to moderator
coderrr
Member
**
Offline Offline

Activity: 63


View Profile WWW

Ignore
July 04, 2011, 10:06:44 PM
 #2

I've repatched my changes onto v0.3.24rc1, see here: https://github.com/coderrr/bitcoin/commit/b32016a314bcbb15c97f14c733a8f49d43c5e8b2

I'll release new builds once the official v0.3.24 is released

Co-Founder of Private Internet Access VPN Service
Original Co-Founder of MtGox Live and BTC.to
Original Developer of the Bitcoin Anonymity Patch
netrin
Sr. Member
****
Offline Offline

Activity: 322


FirstBits: 168Bc


View Profile

Ignore
July 05, 2011, 06:42:11 PM
 #3

Hey guys I'm interested in getting people's thoughts on this.

- see all addresses, including change

- see which addresses are linked together (does recursive expansion of address linkages)

- select which address(es) to send from, rather than letting the client to chose for you

http://www.youtube.com/watch?v=TA_O6Boi7Xo

So what can you do about this? If you don’t have any Bitcoin yet then you can just make sure to use separate wallets for addresses you don’t want being mixed together.

That’s why I’ve made a patch to the official client which allows you to send from _only_ a single specific address.

I’ve added a ‘Send From Address’ tab to the main interface. It actually contains information which was impossible to get from the client before. That is, every address in your wallet and the balance thereof. This includes addresses which were created for the change of your outgoing transactions.

YES with a capital FANTASTIC!

I'm not even trying to be anonymous, but I still have a dozen wallets to keep track of 'accounts'. These patches bring us a long way toward personal financial control. I'd like to similarly be able to right click on a group of linked addresses and export them into a separate wallet... (as well as import wallets). I'm very happy to see all addresses, whether used in a transaction or not! Perhaps the ability to generate 'x' for the keypool buffer (and maybe delete unused addresses) would be handy.

I look forward to seeing your patch in the mainline along with encrypted keys!

Muchas gracias!

Greenlandic tupilak. Hand carved, traditional cursed bone figures. Sorry, polar bear, walrus and human remains not available for export.
netrin
Sr. Member
****
Offline Offline

Activity: 322


FirstBits: 168Bc


View Profile

Ignore
July 13, 2011, 06:06:51 PM
 #4

I've repatched my changes onto v0.3.24rc1, see here: https://github.com/coderrr/bitcoin/commit/b32016a314bcbb15c97f14c733a8f49d43c5e8b2

I'll release new builds once the official v0.3.24 is released

I'm surprised this post generated so little chatter. Have you re-patched 0.3.24?

Greenlandic tupilak. Hand carved, traditional cursed bone figures. Sorry, polar bear, walrus and human remains not available for export.
Mike Hearn
Hero Member
*****
expert
Offline Offline

Activity: 1232


View Profile

Ignore
July 13, 2011, 07:22:34 PM
 #5

I hadn't seen it before. It looks neat. I worry about UI complexity though. This is definitely a power user feature.

12LMm82ZgAzf7yNDpPydEYxEr4Ap7XtSSK
coderrr
Member
**
Offline Offline

Activity: 63


View Profile WWW

Ignore
July 13, 2011, 07:31:37 PM
 #6

I've repatched my changes onto v0.3.24rc1, see here: https://github.com/coderrr/bitcoin/commit/b32016a314bcbb15c97f14c733a8f49d43c5e8b2

I'll release new builds once the official v0.3.24 is released

I'm surprised this post generated so little chatter. Have you re-patched 0.3.24?

yep

https://github.com/coderrr/bitcoin/commits/v0.3.24%2Bcoderrr

linux build here:

http://mtgoxlive.com/downloads/bitcoin-v0.3.24+coderrr-v2-linux64.tar.bz2

windows build coming soon

I was also surprised that there weren't more people interested in a feature like this, but oh well...

Co-Founder of Private Internet Access VPN Service
Original Co-Founder of MtGox Live and BTC.to
Original Developer of the Bitcoin Anonymity Patch
coderrr
Member
**
Offline Offline

Activity: 63


View Profile WWW

Ignore
July 13, 2011, 07:33:53 PM
 #7

I hadn't seen it before. It looks neat. I worry about UI complexity though. This is definitely a power user feature.

Yea, I made this mainly for power users.

Co-Founder of Private Internet Access VPN Service
Original Co-Founder of MtGox Live and BTC.to
Original Developer of the Bitcoin Anonymity Patch
SgtSpike
Hero Member
*****
Offline Offline

Activity: 1106


Firstbits: 18tkn


View Profile WWW

Ignore
July 13, 2011, 08:01:04 PM
 #8

I'm an interested Windows user!

coderrr
Member
**
Offline Offline

Activity: 63


View Profile WWW

Ignore
July 13, 2011, 08:04:49 PM
 #9

I'm an interested Windows user!

just finished the windows build: http://mtgoxlive.com/downloads/bitcoin-v0.3.24+coderrr-v2-win32.zip

Co-Founder of Private Internet Access VPN Service
Original Co-Founder of MtGox Live and BTC.to
Original Developer of the Bitcoin Anonymity Patch
netrin
Sr. Member
****
Offline Offline

Activity: 322


FirstBits: 168Bc


View Profile

Ignore
July 14, 2011, 01:26:14 AM
 #10

I hadn't seen it before. It looks neat. I worry about UI complexity though. This is definitely a power user feature.

Well maybe, but I am driven batty by the opacity of the C++ client. Only the destination address is available (even if you double click the transaction). I find all the hidden features make it more complicated to use and understand.

Users don't understand why they should need to backup (again and again). They don't understand why it is not anonymous or how it could be. They don't understand 'copying' a wallet and certainly not the implications. I don't think users are dumb but the client is making them dumb. Even if a user never uses the 'addresses' tab, simply showing them their own addresses might produce an ah-ha moment.


Hey Coderrr, do you think you could release a 32-bit linux build?

Greenlandic tupilak. Hand carved, traditional cursed bone figures. Sorry, polar bear, walrus and human remains not available for export.
old_engineer
Sr. Member
****
Offline Offline

Activity: 387


View Profile

Ignore
July 14, 2011, 01:44:04 AM
 #11

I'm all for it!  This is exactly what seems to be needed.  Can this get into the main release as an "advanced" option selection?
QuantumMechanic
Member
**
Offline Offline

Activity: 110


View Profile

Ignore
July 14, 2011, 02:03:55 AM
 #12

Can this get into the main release as an "advanced" option selection?
Was just about to say the same thing.
HostFat
Staff
Hero Member
*****
Offline Offline

Activity: 1330



View Profile WWW

Ignore
July 14, 2011, 06:43:27 AM
 #13

Can you make a Pull Request?

Tip / Mancia / Donazione: Click! to Show
Bitmessage: BM-oqEkfpH9HA4vNYMdNmfyjR5zSMJ7pnU3Y
Bitcoin Foundation Italia
SgtSpike
Hero Member
*****
Offline Offline

Activity: 1106


Firstbits: 18tkn


View Profile WWW

Ignore
July 14, 2011, 07:42:23 AM
 #14

Says it's not a valid Win32 application...?

coderrr
Member
**
Offline Offline

Activity: 63


View Profile WWW

Ignore
July 14, 2011, 12:24:51 PM
 #15


uh.. really? lemme check

Co-Founder of Private Internet Access VPN Service
Original Co-Founder of MtGox Live and BTC.to
Original Developer of the Bitcoin Anonymity Patch
coderrr
Member
**
Offline Offline

Activity: 63


View Profile WWW

Ignore
July 14, 2011, 12:53:05 PM
 #16


Ok FIXED

Sorry about that... It was actually a VMWare fail.  Dragging a file from the Host OS into the Guest OS only copied like a part of the file for some reason.  So the bitcoin.exe was only ~5MB instead of ~9MB.  The original link is now updated with the new zip.

Co-Founder of Private Internet Access VPN Service
Original Co-Founder of MtGox Live and BTC.to
Original Developer of the Bitcoin Anonymity Patch
coderrr
Member
**
Offline Offline

Activity: 63


View Profile WWW

Ignore
July 14, 2011, 01:19:36 PM
 #17

Can you make a Pull Request?

I'll make a pull request if any of the official devs indicate they'd be willing to merge something like this.

Co-Founder of Private Internet Access VPN Service
Original Co-Founder of MtGox Live and BTC.to
Original Developer of the Bitcoin Anonymity Patch
HostFat
Staff
Hero Member
*****
Offline Offline

Activity: 1330



View Profile WWW

Ignore
July 14, 2011, 03:18:37 PM
 #18

It's better to put a pull request and see responses Wink

Tip / Mancia / Donazione: Click! to Show
Bitmessage: BM-oqEkfpH9HA4vNYMdNmfyjR5zSMJ7pnU3Y
Bitcoin Foundation Italia
SgtSpike
Hero Member
*****
Offline Offline

Activity: 1106


Firstbits: 18tkn


View Profile WWW

Ignore
July 14, 2011, 04:28:46 PM
 #19

This is very interesting... on my work computer's wallet, all addresses except for one are linked together.  Shocked  Haven't checked my home computer's wallet yet.

coderrr
Member
**
Offline Offline

Activity: 63


View Profile WWW

Ignore
July 14, 2011, 04:30:11 PM
 #20

This is very interesting... on my work computer's wallet, all addresses except for one are linked together.  Shocked  Haven't checked my home computer's wallet yet.

Yes, welcome to bitcoin ;P

Co-Founder of Private Internet Access VPN Service
Original Co-Founder of MtGox Live and BTC.to
Original Developer of the Bitcoin Anonymity Patch
Pages: [1] 2 3 4 5 6 7 8 9  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!