|About this BitMessage Page|
BitMessage is a P2P asynchronous communications protocol used to send encrypted messages to another person or to many subscribers. The PyBitmessage client is written in Python with a Qt GUI. BitMessage is decentralized and trustless, meaning that users do not need to place faith in entities like root certificate authorities. The design employs strong, self-authenticating, Bitcoin-style addresses which prevents adversaries from spoofing messages so they appear to be legitimate.
For a comparison of BitMessage with other open source communications software, refer to the FAQ.
The BitMessage protocol is quite flexible and robust: 
- Messages for offline recipients are stored for up to 28 days before being deleted.
- Proof-of-Work is relied upon to prevent spamming.
- Sender and recipient metadata is hidden by broadcasting all messages to everyone, thereby acting as a simple private information retrieval (PIR) system.
- Bridging services between the BitMessage network and legacy / regular email exist.
- Additional features include subscription support and Chans (Decentralized Mailing Lists). 
- Stronger anonymity is possible by running BitMessage in Whonix, since it works reliably.
For other use cases, refer to the Arch BitMessage wiki.
BitMessage has not yet been independently audited by professionals to verify its security claims. That said, miscreants did use it to run a ransomware operation (over Tor) without being caught, demonstrating that it is somewhat "battle-tested."  While the Whonix Project will never condone criminal abuse of technology, it is hoped that dissidents in oppressive states can profit from the protocol's underlying strength.
Note that for confidentiality, GPG must be used when communicating with email users. It is also possible to configure Thunderbird with Enigmail so it uses the BitMessage service (optionally over Tor) for seamless GPG support.
BitMessage Installation and Operations
The following instructions perform steps to compile and verify the BitMessage source code. Once the verification process is complete, BitMessage can be started and the networking appropriately configured.
Bitmessage developers use git to sign their source code.  Git is a distributed version control system (VCS) that has the ability to tag specific points in history -- such as version release points -- as being important. These (git) tags can be signed and verified with GNU Privacy Guard (GPG). For a basic overview of Tagging please read: Git Basics - Tagging.
While git is cryptographically secure, it is not foolproof. See Web of Trust for further information.
Note: Unless directed otherwise, run the following commands in Whonix-Workstation (Qubes-Whonix:
1. Compile the source code.
Install package dependencies. Qubes-Whonix users run this single command in
sudo apt-get install git python openssl libssl-dev python-msgpack python-qt4
Download the source code from GitHub.
git clone https://github.com/Bitmessage/PyBitmessage $HOME/PyBitmessage
2. Download the GPG public key of Pete Šurda, BitMessage core developer.
gpg --recv-keys 52C97EBC095A2C0863C098C80C5F50C0B5F37D87
When finished, the output should appear similar to the following screenshot.
Figure: GPG Key Importation
3. Verify the public key fingerprint.
gpg --fingerprint 52C97EBC095A2C0863C098C80C5F50C0B5F37D87
At the time of writing, the output will appear like the following screenshot.
Figure: GPG Key Verification
4. List tags.
Navigate to any Bitmessage directory.
List all git tags.
Tags will be preceded by a "v".
0.5.5 v0.5.6 v0.5.7 v0.5.8 v0.6.0 v0.6.1 v0.6.2 v0.6.3
Note: The output has been truncated.
5. Verify the git tag(s).
At the time of writing, v0.6.3 was the most current tag.
git tag --verify v0.6.3
When the tag has been verified the output should show a "Good signature" similar to the screenshot below.
Figure: Successful Verification
The above "gpg: WARNING" can be ignored since it does not alter the validity of the signature related to the downloaded key. Rather, this warning refers to the level of trust placed in the developers signing key and the web of trust. To remove this warning, the developers signing key must be personally signed with your own key.
If the following "gpg: BAD signature" message appears, the source code has been corrupted or altered during the download process.
gpg: BAD signature from "Peter Surda <firstname.lastname@example.org>" [unknown]
In this event, delete the source code and either wait 10-15 minutes for the Tor circuits to change, or open up the Arm Tor Controller in Whonix-Gateway (Qubes-Whonix:
sys-whonix) and type "n" to create new Tor circuits. Wait for a random period of time before repeating the steps to download the source code and verify the git tag(s).
Start BitMessage by running the following command.
When BitMessage starts for the first time, this prompt will appear: "Bitmessage won't connect unless you let it." Choose: "Let me configure special network setting first" -> press <OK>.
Figure: BitMessage Network Settings
Make the following changes:
- Proxy type:
- Server hostname:
Press <OK> and the application should be fully functional.
Figure: SOCKS5 Proxy Configuration
To upgrade BitMessage run the following command.
cd $HOME/PyBitmessage git pull
While explicitly attaching files is not supported, technically any file can be sent within the message body. 
First convert the file with base64 and then copy and paste the contents of the text file.
base64 < binary.file > text.file
Do not forget to include receiver instructions on how to decode it. In order to decode the file, the recipient can copy and paste the code into a file and convert it with the following command.
base64 -d < text.file > binary.file
It is not very practical to send large files with BitMessage. Alternatively, a file or archive containing a collection can be GPG-encrypted and uploaded to untrusted cloud storage, with a link sent to the intended recipient(s). Two methods of encryption are possible: relying on a contact's public key or using symmetric encryption and sending the password in BitMessage. For GPG symmetric encryption, follow this example:
gpg -vv -c --cipher-algo AES256 your-file.tar.gz
Note that the extended output of
pwgen (pre-installed from Whonix 14 onward) can be used for secure passwords.
Backup User Data
To backup the BitMessage profile and all user-generated program data:
- Copy the folder under this path to your shared folder: /home/user/.config/PyBitmessage
- Copy the folder to this location to restore BitMessage data for new installs.
It is recommended to use Multiple Whonix-Workstations to safely separate BitMessage identities and running instances. For better security, do not run separate BitMessage instances concurrently in this configuration.
- The development of Android clients has unfortunately stalled. Connecting with a mobile client also requires a full node running on the user's PC.
This is a wiki. Want to improve this page? Help is welcome and volunteer contributions are happily considered! See Conditions for Contributions to Whonix, then Edit! IP addresses are scrubbed, but editing over Tor is recommended. Edits are held for moderation.
Whonix is provided by ENCRYPTED SUPPORT LP. See Imprint.