Category Archives: Bitmessage

Bitmessage address mixing

Riffle shuffle

This post introduces the concept of address mixing in Bitmessage - what it is, why it is useful, and how it could be done.

This post does not contain a complete algorithm nor claim to know the best solution to the problem, but is rather intended to start a debate on the best way to achieve the goals described in the following section:

What is address mixing?

Address mixing is when a group of people who knows the Bitmessage addresses of each other, works together to create a list of alternate addresses owned by the same group of people, but without knowing who owns which address.

In other words, everybody creates a new address and shares it with the others in such a way that no member of the group (or anybody outside of the group) can deduce which of the new addresses belong to a specific person of the group.

The idea is that of a trustless mix network - i.e. one that doesn't require anyone to trust anyone else for the process to work.

For this purpose, we assume that any adversary has knowledge of the people in the group, as well as any CMLs or DMLs used by the group.

Why is address mixing useful?

Address mixing potentially has a lot of use cases, but the most obvious is the case where a group of people wants to anonymously send messages to each other without revealing who is the sender, while still convincing everybody that the sender is a member of the group.

One could easily imagine a scenario where this group of people wants to conduct a completely anonymous survey (or maybe an election) while ensuring that only the responses of group members are regarded as valid.

Messages in Bitmessage only provide pseudonymity; if you know the identity of the person behind the sender address, he or she is not anonymous at all. This is undesirable in certain scenarios where the senders of messages wish to be completely anonymous to the group.

Of course, decentralized mailing lists (DMLs or chans) already provides the functionality of sending anonymous messages to a group (and, in fact, the address mixing schemes proposed here will make use of chans), but receiving a message anonymously in a chan only proves that the sender knows of the chan, and not that the sender is an accepted member of the group of people using the chan.

Continue reading

Bitmessage centralized and decentralized mailing lists

Warning: Invalid argument supplied for foreach() in /var/www/html/wp-content/plugins/papercite/lib/BibTex_osbib.php on line 185

Warning: Invalid argument supplied for foreach() in /var/www/html/wp-content/plugins/papercite/lib/BibTex_osbib.php on line 185


During my research for my upcoming master's thesis, I couldn't find any good description of the mailing list functionality in Bitmessage, so I decided to look into it myself and write about my findings .

In Bitmessage, two types of mailing lists exist; centralized and decentralized mailing lists. This article first describes the two types of mailing lists and then summarizes their key differences.

Continue reading

Bitmessage protocol dissector for Wireshark

During my research of the Bitmessage protocol, I decided that it would be useful to be able to dissect the network packages to and from the Bitmessage client in Wireshark.

Apparently, no one had created a Wireshark dissector for Bitmessage before, so I did just that in Lua and am sharing the result publicly on GitHub.

It can currently recognize the the version, verack, addr, inv, and getdata message types as well as the getpubkey, pubkey, msg, and broadcast object types.

Continue reading