Extensible Messaging and Presence Protocol


Extensible Messaging and Presence Protocol
Extensible Messaging and Presence Protocol
Familie: Internetprotokollfamilie
Einsatzgebiet: Instant Messaging
Ports: 5222/TCP (Client-zu-Server)
5269/TCP (Server-zu-Server)
Legacy-SSL:
5223/TCP (SSL)
XMPP im TCP/IP‑Protokollstapel:
Anwendung XMPP
Transport TCP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI
Standards:

RFC 6120 (Core)
RFC 6121 (IM & Presence)
RFC 6122 (Address Format)
RFC 3922 (CPIM)
RFC 3923 (Encryption)

Ein einfaches XMPP-Netzwerk mit den Servern „jabber.org“ und „draugr.de“. Grüne Clients sind online, gelbe Clients schreiben sich gerade Nachrichten, und blaue „Subclients“ sind die einzelnen Ressourcen eines Benutzers. Das braune Netzwerk ist ein mit dem Internet verbundenes Intranet. Der Server „draugr.de“ ist über Transports mit anderen IM Services (ICQ, AIM o. ä.) verbunden.

Das Extensible Messaging and Presence Protocol (XMPP; „erweiterbares Nachrichten- und Anwesenheitsprotokoll“) (früher Jabber[1], englisch [ˈdʒæbə(ɹ)]: „(daher-)plappern“) ist ein von der IETF als RFC 6120–6122 sowie 3922, 3923 veröffentlichter Internetstandard für XML-Routing. XMPP folgt dem XML-Standard und wird primär für Instant Messaging eingesetzt. Erweiterungen von XMPP stellen die von der XSF veröffentlichten XMPP Extension Protocols dar.

Inhaltsverzeichnis

Eigenschaften

XMPP und seine Erweiterungen unterstützen Funktionen zur Nachrichtenübermittlung, Konferenzen mit mehreren Benutzern, Anzeigen des Online-Status, Dateiübertragungen, Versendung von Zertifikaten und viele weitere Dienste. Die Netz-Architektur erinnert dabei an das Simple Mail Transfer Protocol (SMTP). Jeder an das Internet angebundene XMPP-Server kann Nachrichten mit anderen Servern austauschen. So sind Verbindungen über Anbieter-Grenzen hinweg möglich. Nachrichten werden vom Nutzer zum eigenen Server, von dort zum fremden Server und dann zum Empfänger weitergeleitet. Auch sind isolierte Netzwerke, beispielsweise in Firmen-Intranets möglich.

Für den Betrieb eines XMPP-Netzwerkes wird mindestens ein XMPP-Server (ähnlich dem Mail Transfer Agent) benötigt. Dieser kann in einem Intranet als alleinige Kommunikationsschnittstelle existieren oder über das Internet zu anderen XMPP-Servern (die „XMPP Federation“) Verbindungen herstellen.

Um Benutzer innerhalb des XMPP-Netzwerkes zu identifizieren und zu adressieren, gibt es den sogenannten „Jabber Identifier“ (JID). Dieser hat die Form „alice@example.com“, ähnelt einer E-Mail-Adresse und verhält sich auch ähnlich: So ist hier alice der Benutzername und example.com der Server, bei dem der Nutzer registriert ist. Durch das Konzept der „Ressourcen“ ist es möglich, sich mit einer Identität an einem XMPP-Server mehrfach anzumelden.

Ein großer Vorteil von XMPP ist, dass nahezu für jedes Betriebssystem und in jeder Programmiersprache XMPP-Clients existieren. Allerdings unterscheiden sich die Lösungen hinsichtlich des Umfangs, in dem sie das Protokoll unterstützen.

Das XMPP-Protokoll ist im Gegensatz zu anderen im Internet eingesetzten Instant-Messaging-Protokollen offen dokumentiert[2][3] und wird aktiv weiterentwickelt.

Funktionen

Konferenzen

XMPP unterstützt Konferenzen mit mehreren Benutzern. Heutzutage ist dabei die Spezifikation Multi-User Chat (MUC)[4] die verbreitetste. Sie unterstützt Funktionen wie beispielsweise Rollenzuordnung für Nutzer innerhalb des Chats, passwortgeschützte oder unsichtbare Räume und ist abwärtskompatibel zur früheren Spezifikation Groupchat. Konferenzräume werden auch durch Jabber Identifier repräsentiert.

Peer-to-Peer-Sitzungen

Mit der Jingle genannten Erweiterung kann XMPP Peer-to-Peer-Sitzungen vereinbaren. Diese Funktion wird vor allem für IP-Telefonie (VoIP) genutzt und ist in der Aufgabenstellung von SIP sehr ähnlich.

Nachdem Google am 8. August 2005 mit der Veröffentlichung von Google Talk das XMPP-Protokoll zunächst proprietär um VoIP-Funktionen erweitert hatte, veröffentlichte[5] die XMPP Standards Foundation am 15. Dezember 2005 die Spezifikation[6] der Erweiterung „Jingle Signalling“, die XMPP um P2P-Fähigkeiten erweitert, sowie die Spezifikation[7] einer ersten Anwendung, „Jingle Audio“ für VoIP. Am selben Tag veröffentlichte[8] Google den Quellcode der Programmbibliothek libjingle, die diese Funktionalität implementiert.

Einige andere XMPP-Clients implementieren (z. B. auch durch Nutzung von libjingle) mittlerweile auch „Jingle Audio“, so dass VoIP-Funktionen mit XMPP nicht nur Google Talk und Windows-Systemen vorbehalten sind. Die Programmversionen mit Jingle-Audio-Unterstützung befinden sich meist noch im experimentellen Status, so dass eine Verfügbarkeit jeweils mit einer der nächsten Veröffentlichungen wahrscheinlich ist.

Mittlerweile existieren weitere Anwendungen, die „Jingle Signalling“ – das beispielsweise die Kommunikation durch NATs hindurch vereinbart – als Grundlage benutzen. Bisher sind unter anderem Jingle-Profile für Video (auf Theora-Basis), UDP (nutzbar etwa zur Vereinbarung von Mehrspieler-Netzwerk-Spielen) und das InterAsterisk-Protokoll spezifiziert. Auch eine Umsetzung von DTMF existiert, zwecks Rückwärtskompatibilität mit dem herkömmlichen Telefonnetz.

Zurzeit wird an Profilen für Datenaustausch und virtuelle private Netzwerke gearbeitet.

Kommunikation mit anderen Chat-Netzwerken

Hauptartikel: XMPP-Transport
Alice sendet ihre Nachricht erst zu dem XMPP-Server, an dem sie angemeldet ist, dann zum XMPP-Transport. Dieser leitet sie über den ICQ-Server zu Bob weiter.

Ein besonderes Konzept von XMPP ist das der Transports. Hiermit ist es möglich, andere Netzwerke (im XMPP-Jargon Legacy Services genannt) wie AIM, ICQ, Yahoo Messenger, Gadu-Gadu oder IRC zu verwenden und mit deren Benutzern zu interagieren. Auch zu Windows Live Messenger (WLM) ist das möglich, allerdings schalten viele Administratoren diesen Transport aus rechtlichen Gründen ab. Anders als bei Multi-Protokoll-Clients, wie Trillian, Miranda IM oder Kopete, funktioniert die Verbindung zu Fremdnetzen bei XMPP nicht dadurch, dass die notwendigen Protokolle auf Clientseite unterstützt werden. Stattdessen wird die Kommunikation zu Fremdnetzen von XMPP-Servern zur Verfügung gestellt. Die Server transportieren dabei die Nachrichten zwischen den Netzwerken, ohne dass die beiden beteiligten Benutzer hierfür besondere Vorkehrungen treffen zu brauchen.

Jeder Benutzer von XMPP kann sich bei Transports registrieren, indem er seine vorhandenen Anmelde-Informationen an diesen Dienst übergibt. Dazu müssen Clients Service Discovery[9] (zu deutsch „Dienste-Ermittlung“) unterstützen. So ist es möglich, Server nach angebotenen Transports zu durchsuchen und ohne zusätzliche Installation von Plugins mit Nutzern proprietärer Instant-Messaging-Netzwerke zu kommunizieren.

Geschichte

Jabber-Logo

Jeremie Miller begann 1998 mit der Entwicklung eines Echtzeit-XML-Streaming-Protokolls, das er 1999 unter dem Namen Jabber veröffentlichte. 2004 hatte die IETF das Protokoll mit einigen Änderungen als offiziellen Standard mit der Bezeichnung Extensible Messaging and Presence Protocol verabschiedet. Seitdem ist die XMPP Standards Foundation (XSF) verantwortlich für die Standardisierung der auf XMPP aufbauenden Protokolle, den sogenannten XMPP Extension Protocols. Direktor und Autor der meisten XEPs ist Peter Saint-Andre.

Verbreitung

Durch die Integration eines XMPP-Clients in die Gmail-Weboberfläche und die Standalone-Software Google Talk stellt Google eine große Anzahl von Nutzern des Jabber-Netzwerkes. In Deutschland wird XMPP von United Internet im GMX/Web.de Multimessenger verwendet, der darüber hinaus auch die Integration anderer Dienste wie ICQ, Windows Live Messenger und Yahoo Messenger erlaubt. Google- und GMX-Kunden können jedoch ohne Nutzung eines Transports miteinander kommunizieren. Weitere bekannte Dienste sind LJ Chat von LiveJournal, Nimbuzz und Ovi von Nokia, das zugleich einen Jabber-Client für seine Mobilfunkgeräte anbietet.[10] Seit 2010 bietet auch das soziale Netzwerk Facebook eine XMPP-Anbindung an seine Chat-Plattform[11], die allerdings das „Federation-Feature“, also die Kommunikation mit anderen XMPP-Servern, nicht unterstützt. Auch die VZnet Netzwerke (StudiVZ, MeinVZ und SchülerVZ) bieten seit Juni 2010 eine Einbindung des „Plauderkastens“, dem Chat ihrer Plattform, in Jabber-kompatible InstantMessenger an.[12] Dieses Feature hat aber noch Beta-Status, und es ist noch keine Kommunikation mit fremden Servern möglich.

Weltweit gibt es mehrere tausend XMPP-Server. Einige Privatpersonen, aber auch Vereine wie der Chaos Computer Club[13] und die Piratenpartei[14], betreiben eigene Server ohne kommerzielle Absicht. Die XMPP Standards Foundation bietet eine Liste öffentlicher Server, in die sich Betreiber eintragen können.[15] Zudem existiert mit dem xmpp-server-scanner ein Bot, der Server automatisch abfragt und eine Liste mit Angaben zur Verfügbarkeit und unterstützten Funktionen generiert.[16]

Im Jahr 2009 hat Cisco Jabber, Inc. aufgekauft. Eine Integration in eigene Softwarelösungen ist geplant.[17]

Verschlüsselung

Crystal Clear action encrypted.png

Die Verbindung zwischen zwei XMPP-Clients wird immer über mindestens einen XMPP-Server aufgebaut. Sind beide Clients an zwei verschiedenen Servern angemeldet, so muss auch zwischen den beiden Servern eine Verbindung aufgebaut werden (Client A ↔ Server A ↔ Server B ↔ Client B). Da auf diesem Übertragungsweg Nachrichten an jeder Station (und auch dazwischen) abgehört, respektive mitgeschnitten werden können, empfiehlt es sich, diese zu verschlüsseln.

Die Verbindung zwischen einem Client und dem Server, an dem dieser Client angemeldet ist, kann mittels SSL/TLS verschlüsselt werden (Client-zu-Server-Verschlüsselung). SSL-Verbindungen zum XMPP-Server wurden in der Regel Port 5223 angeboten, mittlerweile nutzen TLS-Verbindungen jedoch laut RFC 6120 mittels StartTLS ebenfalls den Standardport 5222. Einige Server bieten abweichend auch explizit Port 5224 für TLS an. Client-zu-Client-Verschlüsslung ist für die Betreiber eines XMPP-Servers sicher die bevorzugte Variante, da so weniger Ressourcen auf den Servern verbraucht werden, er kann dann aber nicht mehr nachvollziehen, welche Inhalte übertragen werden (d.h. er kann keine Textnachrichten mitlesen), was wiederum für den Client von Vorteil ist.

Selbst wenn die Verbindungen der Clients zu ihren jeweiligen Servern verschlüsselt sind, so ist die Kommunikation zwischen den Servern ein möglicher Angriffspunkt. Viele Server verschlüsseln daher ihre Verbindungen zu anderen Servern (Server-zu-Server-Verschlüsselung). Eine Kombination mit der Client-zu-Server-Verschlüsselung ist sinnvoll, da sonst die Verbindung am schwächsten Punkt − d. h. dort wo die Verbindung nicht verschlüsselt ist − angreifbar ist. Werden beide Verfahren eingesetzt, so wird die Sicherheit erheblich verbessert, dennoch sind die Server ein Angriffspunkt, da selbst bei einer Kombination aus Server-zu-Server- und Client-zu-Server-Verschlüsselung die Daten an beiden Servern entschlüsselt werden.

Einen noch höheren Grad an Sicherheit bietet daher die Ende-zu-Ende-Verschlüsselung. Indem alle Daten vom Ausgangsclient ver- und erst vom jeweiligen Zielclient wieder entschlüsselt werden, werden Angriffspunkte minimiert. Die Verbindung ist gezwungenermaßen jederzeit verschlüsselt, und die Server können die von ihnen weitergeleiteten Daten nicht entschlüsseln. So können die Betreiber des Servers und potenzielle Angreifer lediglich Rückschlüsse auf den Zeitpunkt, die Dauer und den ungefähren Umfang eines Gespräches schließen.

Ein Verfahren zur Ende-zu-Ende-Verschlüsselung ist OpenPGP. Es beruht auf dem Prinzip der asymmetrischen Verschlüsselung. Die Schlüssel bleiben über einen längeren Zeitraum unverändert. Jedes Schlüsselpaar kann eindeutig einem „Schlüsselinhaber“ zugeordnet werden. Daher kann mit dieser Form der Verschlüsselung nicht nur die Vertraulichkeit einer Datenübertragung erreicht werden, sondern auch eine Verbindlichkeit im Sinne der Informationssicherheit: Gesprächsteilnehmer können damit anhand von Aufzeichnungen später nachweisen, welche Aussagen in dem Gespräch von welchen Personen gemacht wurden.

Off-the-Record Messaging (OTR) bietet die Möglichkeit, Übertragungen abhörsicher (vertraulich) zu gestalten, gleichzeitig jedoch eine Abstreitbarkeit (Unverbindlichkeit) zu ermöglichen: Gesprächsteilnehmer müssen ihre Identität nicht preisgeben. Anhand der verwendeten Schlüssel kann niemand, auch nicht die Gesprächsteilnehmer, später nachweisen, dass das Gespräch stattgefunden hat. Durch den häufigen Wechsel der Schlüssel kann ein Zusammenhang zwischen verschiedenen „Gesprächsfetzen“ nicht hergestellt werden. Diese Form der Verschlüsselung eignet sich besonders für Whistleblower und alle sonstigen vertrauliche Gespräche „sub rosa“.

Da die Server-zu-Server-Verschlüsselung von XMPP nicht vom Endbenutzer beeinflusst werden kann, weil sie im Hoheitsbereich der Serveradministratoren stattfindet, ist die für den Endbenutzer größtmögliche Sicherheit durch die gleichzeitige Verwendung von Client-zu-Server-Verschlüsselung und Ende-zu-Ende-Verschlüsselung erreichbar.

Erweiterungen wie z. B. Audio- und Video-Chat über Jingle werden standardmäßig nicht verschlüsselt. Der einzige Client, der das bis jetzt unterstützt, ist Jitsi.

Siehe auch

RFCs

  • RFC 6120Extensible Messaging and Presence Protocol (XMPP): Core (löst RFC 3920 ab)
  • RFC 6121Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence (löst RFC 3921 ab)
  • RFC 6122Extensible Messaging and Presence Protocol (XMPP): Address Format (ergänzt RFC 3920)
  • RFC 3922Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM)
  • RFC 3923End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP)

Literatur

Weblinks

Wikibooks Wikibooks: Jabber-Kompendium – Lern- und Lehrmaterialien

Belege

  1. Jabber Inc. – About Us
  2. Gründe für Jabber
  3. Vergleich mit anderen Protokollen
  4. XEP-0045: Multi-User Chat
  5. XMPP Standards Foundation Publishes Open VoIP and Multimedia Protocols., XMPP Standards Foundation, 15. Dezember 2005
  6. XEP-0166: Jingle
  7. XEP-0167: Jingle Audio Media Description Format
  8. Google Talkabout, Sean Egan: Jingle all the way
  9. XEP-0030: Service Discovery, XMPP Standards Foundation, Version 2.2, 24. Januar 2006
  10. http://betalabs.nokia.com/betas/view/contacts-ovi Ovi Contacts]
  11. http://www.golem.de/1002/73033.html
  12. XMPP Chat Beta
  13. http://web.jabber.ccc.de
  14. http://wiki.piratenpartei.de/Jabber
  15. Public XMPP Services
  16. http://code.google.com/p/xmpp-server-scanner/
  17. Cisco übernimmt Instant-Messaging-Anbieter Jabber

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Extensible Messaging and Presence Protocol — (XMPP) is an open, XML inspired protocol originally aimed at near real time, extensible instant messaging (IM) and presence information (a.k.a. buddy lists), but now expanded into the broader realm of message oriented middleware. [Citation |… …   Wikipedia

  • Extensible Messaging And Presence Protocol — Pile de protocoles 7 • Application 6 • Présentation 5 • Session 4 • …   Wikipédia en Français

  • Extensible Messaging and Presence Protocol — Fonction Messagerie instantanée Sigle XMPP Port 5222 RFC …   Wikipédia en Français

  • Extensible messaging and presence protocol — Pile de protocoles 7 • Application 6 • Présentation 5 • Session 4 • …   Wikipédia en Français

  • Extensible Messaging and Presence Protocol — Extensible Messaging and Presence Protocol, más conocido como XMPP (Protocolo extensible de mensajería y comunicación de presencia) (anteriormente llamado Jabber[1] ), es un protocolo abierto y extensible basado en XML, originalmente ideado para… …   Wikipedia Español

  • Extensible Messaging and Presence Protocol — …   Википедия

  • Instant Messaging and Presence Protocol — (IMPP) was a protocol for instant messaging proposed by the IETF via RFC 2778 and RFC 2779. There has been no progress since it has been obsoleted by XMPP.ee also* Extensible Messaging and Presence Protocol * Presence and Instant Messaging …   Wikipedia

  • Presence information — In computer and telecommunications networks, presence information is a status indicator that conveys ability and willingness of a potential communication partner for example a user to communicate. A user s client provides presence information… …   Wikipedia

  • Protocol for Synchronous Conferencing — PSYC im TCP/IP‑Protokollstapel: Anwendung PSYC Transport UDP TCP Internet IP (IPv4, IPv6) Netzzugang …   Deutsch Wikipedia

  • Protocol for SYnchronous Conferencing — PSYC im TCP/IP‑Protokollstapel: Anwendung PSYC Transport UDP TCP Internet IP (IPv4, IPv6) Netzzugang Ethernet …   Deutsch Wikipedia