First appearing in 2012, Bitmessage is a project promising truly private, trustless, and completely peer-to-peer messaging. I think it has massive potential, and more people should know about it.
So let's have a look at what it is, how it works, and what some of the good and bad things about it are. Thanks to Steve for the help on this video.
HOW IT WORKS
The two important design features of Bitmessage are that it's a flooding protocol, and that it uses public key encryption.
Bitmessage addresses look like this, and these are a hash of the users public key.
Here's what happens when Alice sends a message to Bob:
1. Alice writes the subject and message, inputs Bob's address, and presses send
2. Then in the background, Alice's public key is added, and the whole thing is signed with her private key, proving it's from her.
3. The message is then encrypted using Bob's public key, so only Bob will be able to decrypt and read it.
4. A proof of work process is then initiated. This is a short, intensive computational problem that needs to be solved by your computer before sending. This step limits the amount of spam on the network.
5. The whole encrypted message is then wrapped up in a container, which includes an expiration time and proof of work, and this is then pushed into the message pools on the network.
6. The message pools are a collection of all the current encrypted messages on the network. Each user, or node, has a copy of each message currently in the pool, and these can be cached for weeks before they expire. This is what makes it a flooding protocol.
7. So Bob downloads all the current encrypted messages in the network. His client tries to decrypt every message, and is only successful when he gets to the one Alice sent, as it uses his public key.
8. The message from Alice is then decrypted, and Bob can read it.
Remember, most of this process is done automatically and in the background, so from the users perspective, the experience is fairly similar to sending an email.
Also, it's worth noting that if you have never messaged a particular address before, when you send the first message, it automatically sends out a special request to obtain the recipients public key. Again, this process is hidden from the user.
As you can see, compared to both ordinary, and encrypted email, Bitmessage has a few advantages.
Firstly, all messages on the protocol are encrypted as standard, meaning all the content of what's being said remains private between the sender and recipients.
The flooding protocol also means that metadata such as who's sending what to whom, the subject field, the date and time sent, and the date and time received are hidden too.
You could also hide the location of the sender by using Tor. The same is also true for regular email, but some email providers won't let you connect through the Tor network.
Bitmessage is also completely decentralized, so anyone can run the client themselves, and you don't need to trust any third parties, like email providers or server owners.
The major trade-off with how Bitmessage protects both message content and metadata, is inefficiency. This means, compared to regular email, it can take longer to send and receive a message.
Since each user downloads the entire message pool in order to pick out their specific messages, scaling could become a major problem if lots more users join the network.
Much like holding Bitcoin on your own computer, you will also be responsible for backing up and managing the keys to access your Bitmessage account. So, if you accidentally lose them, you won't be able to send and receive messages from that address again.
And finally, the Bitmessage protocol has never received a formal, thorough security audit, which is a must if it ever wants to be widely used and trusted.
There are two main Bitmessage apps avaiable to send and receive messages on. The first is the official client, PyBitmessage, available at bitmessage.org or the official github repo. This one works on Windows, Mac and Linux.
There's also Bitpost. It's only available on Mac, but has the added feature of all traffic being routed through Tor, hiding the sender location. Full disclosure, I was part of the team who made this app.
Besides sending regular mail, both these clients have another feature similar to mailing lists, allowing users to subscribe to updates from certain addresses.
According to the wikipedia page, there are also a few email-like services which use the Bitmessage protocol, though I haven't used them myself.
So, that's the 101 on Bitmessage. One of its major strengths is being able to hide both the message data AND metadata, and of course, it is completely decentralized and trustless, which is a big plus.
There are obvious downsides with efficiency and scaling though, and maybe these can be fixed with some additions to the protocol.