# Bitmessage

Bitmessage-Protokoll :
| Familie: | Internetprotokollfamilie |
| Einsatzgebiet: | Vertraulicher E-Mail-Verkehr |
| Port: | 8444/TCP |
| Bitmessage im TCP/IP-Protokollstapel: Anwendung Bitmessage Transport TCP Internet IP (IPv4, IPv6) Netzzugang Ethernet Token Bus Token Ring FDDI … ||
| Spezifikation: | Proposed Bitmessage Protocol Technical Paper |
| Version: | Revision 1, November 2012 Jonathan Warren |
| Website: | bitmessage.org |
Bitmessage ist ein 2012 vorgeschlagenes Verschlüsselungsprotokoll, das einen vertraulichen und anonymen Austausch von E-Mail-ähnlichen Nachrichten in einem Peer-to-Peer-Netzwerk ermöglichen soll. Das Protokoll und die Referenzimplementierung basieren auf der Bitcoin-Technik.
Nachrichten werden verschlüsselt und signiert übertragen. Anders als zum Beispiel bei den E-Mail-Verschlüsselungsprotokollen S/MIME und PGP werden bei Bitmessage auch Absender, Empfänger und die Betreffzeile vertraulich übertragen, um dadurch einen anonymen Nachrichtenaustausch zu ermöglichen. Bitmessage unterscheidet sich von Remailing bei E-Mail, dass die Anonymität von Absender und Empfänger durch eine Broadcast-Übertragung der Nachrichten an alle Bitmessage-Teilnehmer umgesetzt wird.
Es gibt eine Referenzimplementierung von dem Entwickler des Bitmessage-Protokolls. Das Programm PyBitmessage lässt sich ähnlich wie ein E-Mail-Programm benutzen und ermöglicht nach der Installation die Teilnahme am weltweiten Bitmessage-Netzwerk.

## Funktionsprinzip
### Anonymität des Empfängers

Beim Bitmessage-Protokoll trägt eine verschlüsselte Botschaft keinerlei direkten Hinweis auf Absender oder Empfänger. Sie muss daher allen Teilnehmern des Bitmessage-Netzwerks zugestellt werden. Ein Teilnehmer kann mittels des HMAC-Verfahren feststellen, ob eine Nachricht mit einem seiner öffentlichen Schlüssel verschlüsselt wurde. Ist dies der Fall, weiß er, dass die Nachricht für ihn bestimmt ist und er sie entschlüsseln kann.
Wenn das Bitmessage-Netzwerk wächst, wird die Zahl der zugestellten Botschaften groß genug werden, um die Internetverbindung eines einzelnen Teilnehmers zu überlasten. Deshalb teilt sich das Netzwerk rechtzeitig in Gruppen, die sogenannten „Streams“. Eine Bitmessage-Botschaft wird dann nur den Mitgliedern des Streams zugestellt, in dem sich der Empfänger befindet.

### Bitmessage-Adressen

Verschlüsselt wird mit dem öffentlichen Schlüssel des Empfängers. Der Empfänger ist der einzige, der die Botschaft wieder entschlüsseln kann, weil nur er den dazugehörigen privaten Schlüssel kennt.
Als Empfängeradresse dient der RIPEMD-160-Hash des öffentlichen Schlüssels des Empfängers. Dadurch wird die Länge der Adresse von 128 Byte auf 20 Byte verkürzt. Um mit dem Hash den öffentlichen Schlüssel des Empfängers zu erhalten, kann ein Teilnehmer im jeweiligen Stream mittels einer speziellen Nachricht danach fragen.
Der Fingerprint wird zusammen mit der Nummer des Streams, in welchem sich der Empfänger befindet, in eine Buchstaben- und Ziffernkette umgewandelt, die man auf einem Zettel notieren oder am Telefon diktieren kann, zum Beispiel:
Das Präfix „BM-“ kennzeichnet die Zeichenfolge als Bitmessage-Adresse. Die Base58-Kodierung sorgt für Zeichenketten die in der Darstellung die verwechselbaren Zeichen I und l bzw. 0 und O ausschließen.

## Vergleich mit Anonymisierung von E-Mails

Remailer ermöglichen die anonyme Übertragung von E-Mails. Das Funktionsprinzip von Remailern beruht darauf, dass die Herkunft der E-Mail verschleiert wird. Vor allem die IP-Adresse des Absenders soll verschleiert werden, da die IP-Adresse zur Identifizierung von Nutzern dienen kann.

### Remailer

Ein Remailer leitet E-Mails weiter, entfernt hierbei jedoch die Absenderadresse und andere Metadaten, mit denen die Identifizierung des Absenders möglich sein könnte. Der Empfänger sieht lediglich die IP-Adresse des Remailers. Um die Anonymität zu erhöhen, können mehrere Remailer kaskadiert werden, das heißt eine E-Mail wird durch mehrere Remailer von unterschiedlichen Betreibern geleitet. Die Sicherheit des Remailings kann durch den Einsatz von fortgeschrittenen Techniken wie Mixen und Onion-Routing noch weiter erhöht werden. Ein einzelner Remailer-Betreiber oder ein Angreifer, der einen Remailer abhören kann, soll dadurch nicht an die Identität des Absenders gelangen.

### Vergleich der Funktionsprinzipien

Remailing hat das Ziel den Absender zu anonymisieren und verwendet hierzu einzelne Server bzw. serverbasierte Netzwerke. Remailer interagieren mit der bestehenden E-Mail-Infrastruktur, sodass der Empfänger zum Beispiel sein gewohntes E-Mail-Programm und Postfach auf dem Server seines E-Mail-Dienstleisters verwenden kann. Dadurch kann ein Absender anonym E-Mails verschicken, auch wenn der Empfänger kein Remailing verwendet.
Bitmessage hingegen verwendet ein eigenes Peer-to-Peer-Netzwerk, bei dem Absender und Empfänger anonymisiert werden. E-Mail-Adressen oder andere Teile der bestehenden E-Mail-Infrastruktur werden nicht verwendet. Ein Versand von Nachrichten an Empfänger, die Bitmessage nicht verwenden, ist daher nicht möglich.

## Angreifbarkeit

Der Entwickler Jonathan Warren nimmt an, dass ein Angreifer einen einzelnen Internetanschluss abhören oder kontrollieren kann, jedoch nicht die Internetanschlüsse aller Bitmessage-Nutzer. Ein Angreifer wie die NSA könne außerdem einen zentralen Internet-Knoten abhören, jedoch ebenfalls nicht die Internetanschlüsse aller Teilnehmer.
Unter diesen Bedingungen könne ein Angreifer nicht den genauen Standort oder die Identität eines Bitmessage-Nutzers feststellen. Durch das Abhören von Internet-Knoten könne man den ungefähren Standort von Absender und Empfänger eingrenzen. Durch das Abhören eines Internetanschlusses könne ein Angreifer einen Bitmessage-Nutzer dann identifizieren, wenn der Angreifer einen bestimmten Bitmessage-Nutzer an einem Internetanschluss vermutet.

### Angriffe durch Peers

Ein Angreifer kann am Bitmessage-Netzwerk teilnehmen und einen oder mehrere manipulierte Bitmessage-Clients betreiben. Die Möglichkeiten, die sich dadurch ergeben, sind bisher unbekannt.

### Abstreitbarkeit

Ein Angreifer, dem es gelingt, Zugang zu einem privaten Schlüssel zu erhalten, kann nachträglich alle bisher mit der zugehörigen Bitmessage-Adresse empfangenen Botschaften entschlüsseln. Auch wenn die Nachrichten auf dem Rechner gelöscht wurden, muss davon ausgegangen werden, dass ein Angreifer sie während der Übertragung mitgelesen und gespeichert hat. Er findet außerdem Signaturen vor, die die Urheberschaft der jeweiligen Absender beweisen. Bitmessage ist also nicht zum Austausch von Off-the-Record-Botschaften geeignet, deren Existenz die Beteiligten nachträglich leugnen wollen. Diese Schwäche teilt Bitmessage mit S/MIME, PGP und anderen Anwendungen asymmetrischer Verschlüsselung.
Glaubhafte Abstreitbarkeit kann aber auch positiv genutzt werden und wird dadurch erreicht, dass der Nutzer den Adressblock (u. a. privater Signier- und Verschlüsselungsschlüssel) öffentlich macht. Sollte von mindestens einer anderen Person der Adressblock in die keys.dat-Datei aufgenommen werden, so kann nicht der ursprüngliche Verfasser der Nachrichten ermittelt werden, da theoretisch jeder die Nachricht hätte verfassen können. Durch diesen Schritt werden jedoch auch alle existierenden Nachrichten für jeden einsehbar entschlüsselt.

### Traffic Analysis

Bei einem Angriff durch Traffic Analysis werden nur die Metadaten (Sender, Empfänger, Sendezeit, Nachrichtenlänge usw.) einer Nachricht betrachtet, nicht ihr Inhalt. Die Auswirkungen eines solchen Angriffs auf das Bitmessage-Protokoll sind noch unbekannt.

### Timing attack

Jonathan Warren geht davon aus, dass ein naiv implementierter Bitmessage Client verwundbar für eine Timing attack ist. Um Nutzer A zu identifizieren, wird eine sehr hohe Zahl an Nachrichten von Nutzer B an Knotenpunkt X gesendet. Angenommen es dauert 1 Sekunde eine nicht an Nutzer A gerichtete Nachricht weiterzuleiten und 2 Sekunden, damit Nutzer A seine Nachricht entschlüsselt und anschaut. Bei etwa 100 gesendeten Nachrichten würde es 100 Sekunden dauern, falls A den Knotenpunkt nicht nutzt, jedoch 200 Sekunden, falls A den Knotenpunkt nutzt. Hierdurch kann A identifiziert werden.