Pages:
Author

Topic: $250 Bounty Offered (Was $2000-$2500) (Read 6656 times)

hero member
Activity: 755
Merit: 515
April 12, 2011, 04:37:19 PM
#47
UPnP pulled into mainline (79706a8e48a043b9ca83216ba9cbb7413e81710d) resolving all of the bounties in this thread.  If you want to pay out, a payout in BTC to the address in my signature would be nice Smiley
legendary
Activity: 1232
Merit: 1076
March 23, 2011, 10:30:30 PM
#46
From: https://bitcointalksearch.org/topic/new-bitcoin-features-4761


---------------------------

As per this and this post, me & dissipate have setup a new site:

http://bitcoin.cz.cc

You propose features for Bitcoin. The front page shows a mix of the most donated proposals (10) and newest ones (5). Once the feature is implemented in Bitcoin then the bounty goes to the author and the proposal is deleted.

Think of it as an experiment into future methods for bitcoin based free software dev. Right now I'm just putting it out there to see what happens. If it grows then we can think about turning it into a bug tracker type thing with tickets, comments, statuses, assignment of tickets and search.

##############
For this to work, people have to know about it. Add it to your signatures!
"Vote up your favourite ideas to go into Bitcoin"
##############

Source code.
hero member
Activity: 755
Merit: 515
March 22, 2011, 01:23:27 PM
#45
3. UPnP support. Bitcoin should port forward the chosen high TCP port automatically. (Possibly port 8333/tcp too, if the answer to the question above is "Yes"). The GUI/command line should have a UPnP off/on toggle. It should be "on" by default. $250 Bounty still offered. UPnP should be off by default on the Linux build.
I'll split that if someone addes GUI toggle to my current branch and gets miniupnpc to compile properly on windows.  (My branch currently works on Linux/OSX via a command line toggle).  
I take that back, WxGUI stuff is done.  All thats left to do is get miniupnpc to compile on Windows and link properly with bitcoin without causing segfaults or implement MS' own UPnP library in bitcoin for windows.  Ill split the bounty 200/50 for anyone who can get that working.

Current version available at https://github.com/TheBlueMatt/bitcoin/tree/upnp
hero member
Activity: 755
Merit: 515
March 21, 2011, 06:01:15 PM
#44
3. UPnP support. Bitcoin should port forward the chosen high TCP port automatically. (Possibly port 8333/tcp too, if the answer to the question above is "Yes"). The GUI/command line should have a UPnP off/on toggle. It should be "on" by default. $250 Bounty still offered. UPnP should be off by default on the Linux build.
I'll split that if someone addes GUI toggle to my current branch and gets miniupnpc to compile properly on windows.  (My branch currently works on Linux/OSX via a command line toggle). 
newbie
Activity: 42
Merit: 0
March 21, 2011, 05:53:53 PM
#43
Here is how you would do SSL without needing CA certificates, and without man in the middle attacks.

Bitcoin is already distributed with the IP addresses of some initial seed nodes.
It would be changed so that it would also include the SSL public keys of those seed nodes.
This establishes a chain of trust.

Bitcoin would make a connection to those seed nodes to learn of other peers as it does now.
When the seednode refers a peer to the client, it also includes the peers SSL public key.

A bitcoin server must not accept incoming connections, unless the peer already knows its public key.
This makes it difficult for an attacker to connect to a specific target node it wants to monitor, it would first have to get the certificate referral from another node.

Using this method establishes a chain of trust starting with the public keys in the bitcoin program, and all nodes the client will eventually connect to in its lifetime.
It prevents any man in the middle attacks on the client.

This is the method used by freenet (I may be missing some details, see freenet source code).

As for older clients not supporting SSL there could be a transition period.
Initially the new version would try to make a SSL connection and if that does not work it falls back to the non-ssl method.
Yes this is vulnerable to an MITM attack by pretending a node doesn't do encryption.
After the SSL version has been out for some time and most people have upgraded, future versions would no longer accept unencrypted connections.
legendary
Activity: 1222
Merit: 1016
Live and Let Live
February 05, 2011, 01:16:50 AM
#42
One of my Goals is to get Bitcoin Working on Freenet https://www.bitcoin.org/smf/index.php?topic=2312.0

Then one could download, install, and use bitcoin from a darknet. Cheesy
legendary
Activity: 1526
Merit: 1134
January 30, 2011, 11:55:35 AM
#41
I think if the goal is to avoid detection+blocking then having the ability to run the protocol over HTTP by doing GETS and POSTS would work much better (no ssl).

I have a few issues with the idea of using SSL as obfuscation.

One is that some countries do in fact block or simply forbid encrypted connections. Spotting encrypted connections is easy because the data looks random whereas unencrypted protocols don't.

Examples: Tunisia "solved" SSL on the Google login page by simply hijacking the connection before the SSL connection was established. They solved it on Facebook by just blocking SSL entirely and forcing users to downgrade to the unencrypted version. Chinas GFW has been known to simply terminate connections that look like they're encrypted when they're leaving the country.

To really hide you need to look like regular web traffic as much as possible and you need the ability to rapidly change how the protocol looks. Then nothing but cutting off all web access will work.

How about this strawman proposal. Currently BitCoin travels over TCP port 8333. We can build an HTTP proxy for this such that a GET to

 http://www.some-site.com/bc/random-words?v=1

is equivalent to waiting for a message to arrive and a POST to that same URL is like sending a message. BitCoin is an entirely message based protocol and messages are small, so it will work OK. A cookie is used to keep the individual requests tied together to a logical connection. The proxy site then relays these messages into the p2p network as per usual. The random words could be anything and just pulled from a dictionary.

If you wanted to get really intense you could encode the messages steganographically into JPEGs or random HTML content.

To a DPI engine, this looks just like regular web browsing. There's some GETs, some POSTs, some cookies and the downloads/uploads are just binary. As long as there's no specific signature (like the current protocols beginning of message markers) this is probably quite hard to detect.

At the start, this can be implemented independent of the BitCoin client. Later on it could be integrated. Proxy lists could be distributed via a regular text file that has a signature on the end. A new command could be added that allows for new proxy lists to be downloaded from an existing proxy, to mimic the address discovery of the existing TCP based network.

Anyone who is serious about claiming this bounty should team up with a Snort expert to make sure that whatever solution they come up with is actually difficult to build detection scripts for.
Activity: -
Merit: -
January 30, 2011, 10:24:58 AM
#40
This would be nice, integrating the bitcoin protocol with hidden services... I don't know how the protocol currently works, but I suppose there are messages to ask for other nodes, right? These messages could send not only IPs, but Tor hidden services addresses too.
I don't know why leave it up to the user to publish or not a hidden address though... I suppose one maybe have numerous hidden service addresses, right? Why not making it automatic? You connect and publish your hidden service address to your peers so they publish to theirs and so on...

The bitcoin protocol has space for an IPv6 address and port in it's address messages.  Using hostnames/.onion addresses would require a modification to the protocol or maybe an ugly hack.

EDIT: Maybe it wouldn't require a change, as Tor addresses (without the .onion pseudo-TLD) are 16 characters long, which fits in the IPv6 address space.  I don't know what the intentions of the 'services' field in the Network Address structure is for, but it's 8 bytes long and typically/always has the value of 1. Maybe setting another bit in that value to 1 could be used to denote that it's a .onion address, and now you have Tor compatible address messages. (Obviously these would be junk addresses to Bitcoin nodes that don't understand them the Tor 'services' value.)

EDIT 2:
Example for http://axqzzpkfwezf3kku.onion:

Here's a normal Bitcoin Network Address message:
Code:
Network address:
 01 00 00 00 00 00 00 00                         - 1 (NODE_NETWORK? see services listed under version command)
 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 - IPv6: ::ffff:10.0.0.1 or IPv4: 10.0.0.1
 20 8D                                           - Port 8333

Bitcoin Network Address message for Tor address:
Code:
Network address:
 02 00 00 00 00 00 00 00                         - 2 (a conceptual TOR_NETWORK value - implies .onion added to following 16 bytes)
 61 78 71 7a 7a 70 6b 66 77 65 7a 66 33 6b 6b 75 - "axqzzpkfwezf3kku" (.onion)
 20 8D                                           - Port 8333
legendary
Activity: 1106
Merit: 1004
January 30, 2011, 06:59:02 AM
#39
I suppose that could be done. I guess the user would also get other benefits from Tor as well, such as pseudo-anonymous browsing, etc.

Well, I was thinking of an embedded proxy that would be used only for bitcoin. If the user wants to protect his/her other traffics, he should look on how to.
Automatically redirecting user normal traffic to a tor proxy just because s/he installed bitcoin would reasonably piss off some users.

I wonder if the Tor project could be convinced to just include Bitcoin with their bundle.

Why would they? It's not like Tor depends on bitcoin to work better, it's more the other way around. Smiley

It should automatically setup a Tor hidden service with a port forward back to Bitcoin too then. We can leave it up to the user to publish their .onion address/port number. It should also contain a list of "seed" nodes in the torrc. (Public hidden services to bootstrap from.)

This would be nice, integrating the bitcoin protocol with hidden services... I don't know how the protocol currently works, but I suppose there are messages to ask for other nodes, right? These messages could send not only IPs, but Tor hidden services addresses too.
I don't know why leave it up to the user to publish or not a hidden address though... I suppose one maybe have numerous hidden service addresses, right? Why not making it automatic? You connect and publish your hidden service address to your peers so they publish to theirs and so on...
legendary
Activity: 1106
Merit: 1004
January 30, 2011, 06:50:03 AM
#38
Still, ultimately you do not need DPI to simply observe bursts of incoming and outgoing traffic behave (a) like bitcoin P2P and (b) unlike HTTP.  Application fingerprinting by packet sniffers is quite advanced.  A lot of information may be deduced even without access to the unencrypted plaintext.

If it's government censors, they don't need DPI nor fingerprinting, it's actually much simpler than that, all they have to do is to connect themselves to the P2P network in question and log the IPs that connect to them. SSL connections (or random obfuscation data) are useless.
This is what Hadopi is supposedly doing in France right now.
legendary
Activity: 1596
Merit: 1100
January 29, 2011, 10:30:03 PM
#37
Damn, now we are going to have to run everything via VPN's with some random noise going back and forth all the time in the background, to drive app fingerprinting engines mad.

Yes.  I am very surprised that Tor and other VPN solutions do not already employ such obfuscation techniques?

To truly obscure traffic, one must (a) send the same length of data at regular intervals or (b) saturate all available bandwidth with data at all times.  Anything else is vulnerable to statistical analysis.  The "random data at random times" method is not very practical for most modern TCP-like messaging applications; also, "random data" + your app traffic may not equate to random data...
legendary
Activity: 1596
Merit: 1100
January 29, 2011, 08:12:06 PM
#36
bitcoin can implement SSL obfuscation by adding a start-ssl message immediately after the version message.  The version message will tell us whether or not the node supports SSL, making it easy to integrate SSL in a backwards-compatible manner.

That wouldn't work. DPI gear would just pick out the version string and send out some RST packets. The cops would then be dispatched to break some knee caps. :/

Quite true.

I suppose the P2P network could advertise a 'I require SSL' flag, during the normal course of globally propagating the bitcoin P2P node addresses.

And the bitcoin client could be changed to add an option that prefers SSL P2P nodes on TCP port 443.

Still, ultimately you do not need DPI to simply observe bursts of incoming and outgoing traffic behave (a) like bitcoin P2P and (b) unlike HTTP.  Application fingerprinting by packet sniffers is quite advanced.  A lot of information may be deduced even without access to the unencrypted plaintext.
Activity: -
Merit: -
January 29, 2011, 05:36:54 PM
#35
Yes, using Tor for obfuscation would work (for as long as Tor is not blocked), and certainly that's better than not having that obfuscation. 

I guess the user would also get other benefits from Tor as well

But the average user won't gain any benefits of using it for privacy, and may even lose privacy (and online accounts, and non-Bitcoin money, etc) without a good understanding of how Tor should be used.

By doing SSL on port 443, it would practically be indistinguishable from "acceptable" (to governments) bank sites, etc., assuming the government doesn't start requiring SSL certs be signed by the government instead of private companies.  The ISP can always check the certs of the nodes your node is connecting to and filter you that way...if it's not government signed, they block it.

Of course, once the number of Bitcoin users is great enough, it won't be in anyone's political interest to try blocking it, but then by that point there's little need for these obfuscation techniques anyway.  I guess the goal is to find a way to get it to that point.  Perhaps Tor can/will play a large role in that, I don't know.  I much prefer configurable ports and encryption for average users before Tor.
hero member
Activity: 490
Merit: 511
My avatar pic says it all
January 29, 2011, 05:11:21 PM
#34
Tor is very dangerous for those that do not know how to protect themselves already.  Using personally identifiable information over Tor defeats the purpose of using it in the first place.  Most things can be MITMed on the Tor exit nodes (even some SSL connections...google Moxie Marlinspike).

You're preaching to the choir. Wink

But using Bitcoin on Tor and non-Tor connections to communicate with those you wish to transact with also defeats the purpose of using Tor. The average person that "does not know how to protect themselves already" is not ready for Tor.

Oh sure. Having some protection/obfuscation (to beat DPI stuff) is better than nothing. Wouldn't you agree? There are always other attack vectors that have to be considered. What about physical spying, for example?

Right now, a default installation of Bitcoin is so easily detected/blocked from the network layer. Shouldn't we be concerned? I certainly am. Smiley

I want Bitcoin to be unstoppable. A crazy spray of garbled packets that hide alongside regular HTTPS connections to banks. I want to make it so that blocking Bitcoin also means blocking "their" existing bank infrastructure as well. Wink
Activity: -
Merit: -
January 29, 2011, 05:02:04 PM
#33
I agree with your concern about people not knowing how to protect themselves, but then, I think that better than adding unnecessary features to the main software, we should just offer preconfigured bundles, as I said on my last post.

I suppose that could be done. I guess the user would also get other benefits from Tor as well, such as pseudo-anonymous browsing, etc.

I wonder if the Tor project could be convinced to just include Bitcoin with their bundle. We might be too far away from that. They don't seem to want to even touch Bitcoin. I was instructed to send my donations to the EFF instead of them. Sad

Tor is very dangerous for those that do not know how to protect themselves already.  Using personally identifiable information over Tor defeats the purpose of using it in the first place.  Most things can be MITMed on the Tor exit nodes (even some SSL connections...google Moxie Marlinspike).  But using Bitcoin on Tor while using normal connections to communicate with those you wish to transact with also defeats the purpose of using Tor.  The average person that "does not know how to protect themselves already" is not ready for Tor.
hero member
Activity: 490
Merit: 511
My avatar pic says it all
January 29, 2011, 04:54:14 PM
#32
bitcoin can implement SSL obfuscation by adding a start-ssl message immediately after the version message.  The version message will tell us whether or not the node supports SSL, making it easy to integrate SSL in a backwards-compatible manner.

That wouldn't work. DPI gear would just pick out the version string and send out some RST packets. The cops would then be dispatched to break some knee caps. :/

hero member
Activity: 490
Merit: 511
My avatar pic says it all
January 29, 2011, 04:47:20 PM
#31
I agree with your concern about people not knowing how to protect themselves, but then, I think that better than adding unnecessary features to the main software, we should just offer preconfigured bundles, as I said on my last post.

I suppose that could be done. I guess the user would also get other benefits from Tor as well, such as pseudo-anonymous browsing, etc.

I wonder if the Tor project could be convinced to just include Bitcoin with their bundle. We might be too far away from that. They don't seem to want to even touch Bitcoin. I was instructed to send my donations to the EFF instead of them. Sad

An "anonymous bitcoin" bundle to be downloaded from the main project page, that would include the bitcoin software + an embedded tor proxy, everything preconfigured... this is better, imho, than adding SSL support to the bitcoin client.

It should automatically setup a Tor hidden service with a port forward back to Bitcoin too then. We can leave it up to the user to publish their .onion address/port number. It should also contain a list of "seed" nodes in the torrc. (Public hidden services to bootstrap from.)

Also, Bitcoin should at least let the user select a port other than 8333. It should also have UPnP support. Enabled by default on Windows/Mac, disabled by default on Linux/*NIX. Would that make the *NIX geeks happier about UPnP support? Tongue
hero member
Activity: 490
Merit: 511
My avatar pic says it all
January 29, 2011, 04:36:28 PM
#30
So is the bounty for these features to be added to the official client, or would an alternate client that's 100% compatible with the official client while having these additional features count?

Official client. What good would a fork be? So I can run it between me, myself, and I? Tongue
hero member
Activity: 490
Merit: 511
My avatar pic says it all
January 29, 2011, 04:33:28 PM
#29
As long as businesses need to run VPNs and SSL websites, I think crypto will remain legal. Mimicking traffic patters in another matter, though.

Exactly. I highly doubt the governments of the world will block banks, for example. Tongue
hero member
Activity: 490
Merit: 511
My avatar pic says it all
January 29, 2011, 04:29:28 PM
#28
I know that this thread is not a place for this, but one feature I would love to see is to have an option for bitcoind to work in foreground while printing logs to sdout. I hate to hack this thing up every time to have it running under djb's daemontools.

+1

I'm also an avid user of djb's daemontools. A foreground command line switch would be very nice.
Pages:
Jump to: