Note: The below documentation is for Bitmessage version 0.3.5

Back in March 2013 I stumbled upon Bitmesage. From the Bitmessage website:

"Bitmessage is a P2P communications protocol used to send encrypted messages to another person or to many subscribers. It is decentralized and trustless, meaning that you need-not inherently trust any entities like root certificate authorities. It uses strong authentication which means that the sender of a message cannot be spoofed, and it aims to hide "non-content" data, like the sender and receiver of messages, from passive eavesdroppers like those running warrantless wiretapping programs. If Bitmessage is completely new to you, you may wish to start by reading the whitepaper."

Here is an introduction video that I made. It explains the core functionality of Bitmessage.

Application Overview and Running Bitmessage on Windows.

Installing Bitmesage and Dependencies on Debian 7.0

After digging around some more and reading a bit of the code I realize that it is heavily inspired by the Bitcoin network. One of the best features of Bitmessage is how easy it is to use. This makes it very desirable and likely to be adopted by a large variety of users.

Bitmessage Screenshot

Instead of being bound to a single address, users can generate as many 'Identities' as they would like. The identities can be generated randomly or hashed from a pass phrase. The identities start with BM- and are generally ~16 characters long. They are a hash of your public key and include information such as the address version number and stream number. When sending a personal message, the client uses the public key of the address you are sending to encrypt the message. That way, they are the only one capable of decoding the message.

Bitmessage Screenshot

Broadcast messages are another communication method possible with Bitmessage. Since all clients download all messages, it makes sense for broadcasts to be possible. By subscribing to a broadcast address, you will receive any messages that originate from it as a broadcast message. Originally these messages were sent out plaintext but now they are encrypted. Anyone that is subscribed to an address can decrypt the messages so they should not be used for sending personal information. The encryption is in place to prevent you from being liable for the content of other's messages.

Bitmessage Screenshot Identity

Another form of broadcasts are 'pseudo-mailing-lists'. Essentially you can turn one of your identities into one and whenever it gets a message it will turn around and broadcast it out to anyone subscribed to it. If your client is not running then the mailing list will not work.

Bitmessage Screenshot

No matter what type of message you are sending, your client will have to compute a Proof of Work (PoW). The PoW is in place to prevent malicious users from spamming/flooding the network. On an average computer it takes anywhere from 1-4 minutes to send a short message.

Similar to the Bitcoin, Bitmessage uses a distributed peer-2-peer network style. This means that there are no central servers that could be attacked or hacked that could shutdown the network. It also means that the network can not be controlled or blocked easily. Streams are used to account for growth. If a very large number of people start using Bitmessage then it will start creating new streams. This helps keep the network stable and stops you from having to relay traffic for the entire network. The "Network Status" tab shows you your connection status. If you are behind NAT or a firewall then your connection indicator will be yellow. This means that you are not accepting incoming connections and can only have a maximum of 8 total connections. If you port forward, or do not have a firewall/etc then you will likely have many more connections and this helps the network.

Bitmessage Screenshot Network Status

Bitmessage is also Tor friendly. You can use Tor or the Tor Browser Bundle as a proxy for your Bitmessage client. When using a proxy, your client will not be able to accept incoming connections and act as a node.

Bitmessage Settings Screenshot

EDIT: I have stepped away from the project and am no longer monitoring these accounts. Thank you Once you have Bitmessage setup and your connection indicator is not red, try sending a message to: BM-orkCbppXWSqPpAxnz6jnfTZ2djb5pJKDb It is an echo server and should send you a message right back. Normally it will take anywhere from 3-5 minutes, after the message is successfully sent from your client, to get a response.

Feel free to message my at my Bitmessage address:BM-BcJyPfXk9U4V1ckHVN2RmFrdi2kG1Npj EDIT: I have stepped away from the project and am no longer monitoring these accounts. Thank you

Additional Links