Bitmessage – Send messages without leaking metadata
bitmessage.org
bitmessage.org
Better would be to actually contribute to central project documentation, I suppose.
The whitepaper describes a simple and focused system relying on partitioning in an attempt to preserve scalability.
Bitmessage has many architectural similarities to Usenet and also offers no valid response to spam. Using a proof-of-work system to combat spam is proposed, but to-date science has not yet seen a working approach anywhere. Details are missing on this vital element plus defenses against the Sybil attack are missing from this design.
Mechanisms such as the "averageProofOfWorkNonceTrialsPerByte" in this system only slow down attacks and do not stop them. Check the impossibility proof by Harvard to see that systems like Bitmessage which react to any message cannot build an effective Sybil defense: http://dash.harvard.edu/handle/1/4907301 So this is known as a hard unsolved problem. Further diving into the scalability issue is this project thread on their forum: https://bitmessage.org/forum/index.php?PHPSESSID=8cl6qeafitk... It would be great if the partitioning concept and algorithms could be explained in detail. It's again a hard problem, even group size estimation in a hostile environment is already non-trivial. So how group consensus is formed to do a break-up is difficult and prone to attacks. This design is not incentive compatible. TOR has over 50% Bittorrent traffic, it's difficult to stop users from using(abusing?) TOR like that. Systems like Bittorrent and Bitcoin have some incentives, but Bitmessage with broadcasts and proof-of-work might even have a negative incentive for participation. I have seen no mechanism to prevent it's users broadcasting Blueray rips. This would bring down the system, one cluster at a time. Please check this work, it shows how to bring this type of P2P networks down: www.christian-rossow.de/publications/p2pwned-ieee2013.pdf
Publicity like "Bitmessage Sends Secure, Encrypted, P2P Instant Messages" might be nice. It creates a false sense of safety. If you want to protect against NSA snooping, you're up against a real army of crypto experts with decades of experience each.
Nice to see that this project has such an active Github community, 480 closed issues and 1159 commits. But, in my opinion it's back to the drawing boards... Sorry.
Disclaimer: working for 8 years on Tribler, a streaming Bittorrent client.
That said, at least these folks are trying to protect against the NSA. What do you purpose we all do? Lay down and accept that they watch everything we do? Fuck that. Let's continue to build tools as a community. They may have a lot of people, but our community is bigger. So, fuck them.
People should continue to experiment, and try new things until we come up with various way to protect against the god damn NSA.
A lot of people are experimenting with designs that will never work. It's just wasting programming resources, while projects like Tor starve for volunteers. My research team is currently merging Tor and Bittorrent (http://forum.tribler.org/viewtopic.php?f=2&t=5128&p=8585#p85...).
Clear designs (and lots of them) are more important then experimental code I believe.
Try installing it, search for files and watch download speeds. Onion routing and tunnels cost bandwidth. The crowd that is used to Bittorrent speeds (in combo with VPN safety) is not interested in 2 Kbit/sec speeds. Plus the user interface is hard to understand without having attended crypto courses.
Also, it isn't a hard as you claim. It is mainly a matter of setup.
If we are going to come out on top, then we need to play the long game. In that case, experimental code has a lot of value.
For example, when Satoshi first published the whitepaper for Bitcoin, there was talk on the crypto mailing list that it wouldn't scale due to its gossip-based protocol. Satoshi's design showed it did, and laid the foundations for future cryptocurrencies (Namecoin, Peercoin).
P.S. I've been following your work with Tribler, excellent stuff!
https://www.i2p2.de and http://i2pbote.i2p.us (remove .us if you have I2P installed).
Also they have some major security issues that I pointed out to them, but they simply ignored. I am sure bitmessage will never be a success because it is fundamentally broken.
care to link to the bug report/forum post/blog post where you wrote the security issues you mentioned?
-Atheros / Jonathan (creator of Bitmessage)
I'm interested in bitmessage but it being unvetted / not heavily reviewed gives me pause. Do you have any doubts about the design (that can't be easily solved)?
Cheers, wc
Regarding your last question, if someone throws an FPGA at the PoW algorithm, they could flood the network with a lot of data and that concerns me. And, as mentioned above, deciding when to use child streams in the context of a hostile environment remains and open question.
-Atheros
I found your paper here: https://anonfiles.com/file/849506ebab91aa0ab90e98fc539446a2
It lacks a "summation of attacks that are possible on bitmessage" or "solutions on how to prevent such attacks."
I like that you tried to add a feature where users could choose their own anonymity/usability balance. "Users should be able to choose to remain anonymous or to disclose (partial) address information and be a ’light’ client." 200MB a day just for headers is a little bit much for a mobile 'light' client. If the protocol supports sending only headers based on a filter then why bother supporting headers? The "seeding" node could just supply a list of body messages to download that pass a filter. This would also mean that no one ever has to sync headers.
To just take two examples:
-Every bitmessage user can be mitm'd by their ISP. (yes, I know about tor).
-Every bitmessage user could have only bad peers connecting to them when peers aggressively try to connect to their client.
These are two examples of attacks that work on bitmessage, that are addressed in the libertymail proposal, and for which a possible solution is given.
forward secrecy is helped by 2 things: you cannot know who is the recipient of a message, so if you want to store the messages to be able to decrypt them in the future when you'll have obtained their private key, you'd have to store all the network messages
If you're worried by such an attacker, you can just create a new identity for each message, just like you can create a new bitcoin address for each transaction
Pond seems interesting, but quite different from bitmessage, especially I like bitmessage because of its user-friendliness (the UI needs lots of improvement, but you just download it, create an identity and off you go... I doubt about the feasibility of getting the whole world to use TOR, especially people in China/Iran or "my parents")
> If you're worried by such an attacker [...]
Uh, shouldn't everyone be at this point?
> you can just create a new identity for each message
Key exchange and management is hard. That's why you try not to do it often. You could claim PGP e-mail was forward secret: All you need to do is use a new private key every time.
moreover, since the keypair and the BM identity is one-and-the-same the key exchange and management comes for free, once you got the first message sent to your recipient... changing identity is much easier than creating a new gpg keypair and sending it to the other guy, and on top of that you'll get some added anonimity
There are some recommendations on the other forums about using tor to make this information less useful, but that is not what the system uses by default.
eg node A broadcasts C1 which has not been observed before nodes B,C,D propagate the cyphertext C1 node D broadcasts C2 shortly after receiving C1 nodes A,B,C propagate C2 etc
Of course seeing this pattern in practice might be hard, but it still seems like a possible attack vector given the current system.
Besides that, the idea is to attach two "stamps" to an encrypted message. One goes to the recipient and one goes to the mail server, but only in tandem. That pays the mail server for storing the message until the recipient goes online to pick it up. And it also stops people from running their own fake mail server that just skims stamps and throws away the messages. It's basically a throwaway dropbox.
I'm dreaming and have no idea how to implement it, but I've kicked it around for years ever since pondering the Your Idea Won't Work "form" (http://craphound.com/spamsolutions.txt)
Whether the result would be better that another unrelated product is irrelevant.
"here is a sugar-free pie !"
"you should add sugar to solve the sour taste problem"
"but, that would defeat the whole no-sugar thing ..."
"You must admit that it's still a lot less bad than soyent though !"This is one of my addresses, I feel lonely HN :-) BM-2cUHuH7sJdt3GchrqSikvzWP4w7Vm2cjhK (so much for not disclosing to the whole world, but this is just for fun)
I'm receiving messages from HN, this is awesome! I guess if people want to keep using my address to test it, I don't mind.
[edit]: Judging from the success, I should have put a bitcoin address as well: 12CM3uBur4wxsj46BoMgoLqMMyUHqcPEWH :-)
What is the purpose of this?
Could you implement something like IRC's "flood prevention" in a proof-of-work based consensus algorithm -- so sending messages closer together costs prohibitively more?
The network could require, say, the work in a transaction to be proportional to ∑(1/message dt) for the messages signed by the transaction.
This seems easily circumvented by creating lots of identities. Though maybe creating an identity could be costly?