Ein einfaches XMPP-Netzwerk mit den Servernjabber.org unddraugr.de. Grüne Clients sind online, gelbe Clients schreiben sich gerade Nachrichten, und kleine grüneSubclients sind die einzelnen Ressourcen eines Benutzers. Das braune Netzwerk ist nicht mit dem Internet verbunden. Der Serverdraugr.de ist über XMPP-Transports mit anderen IM-Services (ICQ, AIM o. ä.) verbunden.
XMPP und seine Erweiterungen unterstützen Funktionen zur Nachrichtenübermittlung,Multi-User Chat, also Konferenzen mit mehreren Benutzern, Anzeigen des Online-Status, Dateiübertragungen, Versendung vondigitalen Zertifikaten und viele weitere Dienste. DieNetz-Architektur erinnert dabei an dasSimple 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 demMail 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 sogenanntenJabber Identifier (JID). Dieser hat die Formalice@example.com, ähnelt einerE-Mail-Adresse und verhält sich auch ähnlich: So ist hieralice der Benutzername undexample.com der Server, bei dem der Nutzer registriert ist. Durch das Konzept derRessourcen ist es möglich, sich mit einer Identität an einem XMPP-Server mehrfach anzumelden.
Für nahezu jedesBetriebssystem existieren XMPP-Clients, die allerdings das XMPP-Protokoll und dessenErweiterungen unterschiedlich gut unterstützen.
Das XMPP-Protokoll ist im Gegensatz zu anderen im Internet eingesetzten Instant-Messaging-Protokollen offen dokumentiert[6] und wird aktiv weiterentwickelt.
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mitBelegen (beispielsweiseEinzelnachweisen) ausgestattet. Angaben ohne ausreichenden Beleg könnten demnächst entfernt werden. Bitte hilf Wikipedia, indem du die Angaben recherchierst undgute Belege einfügst.
Mit der „Jingle“ genannten Erweiterung kann XMPPPeer-to-Peer-Sitzungen vereinbaren. Diese Funktion wird vor allem fürIP-Telefonie (VoIP) genutzt und ist in der Aufgabenstellung demSession Initiation Protocol (SIP) sehr ähnlich.[7]
NachdemGoogle am 8. August 2005 mit der Veröffentlichung vonGoogle Talk das XMPP-Protokoll zunächst proprietär um VoIP-Funktionen erweitert hatte, veröffentlichte[8] die XMPP Standards Foundation am 15. Dezember 2005 die Spezifikation[9] der Erweiterung „Jingle Signalling“, die XMPP um P2P-Fähigkeiten erweitert, sowie die Spezifikation[10] einer ersten Anwendung, „Jingle Audio“ für VoIP. Am selben Tag veröffentlichte[11] Google den Quellcode derProgrammbibliotheklibjingle, die diese Funktionalität implementiert. Einige andere XMPP-Clients implementierten (z. B. auch durch Nutzung vonlibjingle) danach auch „Jingle Audio“, so dass VoIP-Funktionen mit XMPP nicht nur Google Talk und Windows-Systemen vorbehalten sind.
Mittlerweile existieren weitere Anwendungen, die „Jingle Signalling“ – das beispielsweise die Kommunikation durchNetwork Address Translations (NAT) hindurch vereinbart – als Grundlage benutzen. Bisher sind unter anderem Jingle-Profile für Video (aufTheora-Basis),User Datagram Protocol (UDP) (nutzbar etwa zur Vereinbarung vonMehrspieler-Netzwerk-Spielen) und dasInterAsterisk eXchange spezifiziert. Auch eine Umsetzung desMehrfrequenzwahlverfahrens (DTMF) existiert zwecks Rückwärtskompatibilität mit dem herkömmlichenTelefonnetz.
XMPP unterstützt Konferenzen mit mehreren Benutzern. Heute ist dabei die SpezifikationMulti-User Chat (MUC)[12] die verbreitetste und wird heute auch bei XMPP vermehrt durch die BegriffeChat,Raum undGruppe ersetzt. 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 SpezifikationGroupchat. Konferenzräume werden auch durchJabber Identifier repräsentiert. Der Multi-User Chat ist aus Sicht des normalen Anwenders in der Anwendung vergleichbar mit demInternet Relay Chat (IRC Chat).
Alice sendet ihre Nachricht zu dem XMPP-Server, an dem sie angemeldet ist. Von diesem wird die Nachricht zum XMPP-Transport gesendet. Der XMPP-Transport leitet sie über den ICQ-Server zu Bob weiter.
Ein besonderes Konzept von XMPP ist das desTransports. Damit kann man auch andere Netzwerke (im XMPP-JargonLegacy Services genannt) wieGadu-Gadu oderInternet Relay Chat (IRC) verwenden und mit deren Benutzern interagieren. Die Server transportieren dabei die Nachrichten zwischen den Netzwerken, ohne dass die beiden beteiligten Benutzer dafür besondere Vorkehrungen zu treffen brauchen.
Zur Kommunikation mit Nutzern eines mit XMPP nicht kompatiblen Netzwerks wird ein eigenes Konto im jeweiligen Netzwerk benötigt. Jeder Benutzer von XMPP kann sich bei Transports registrieren, indem er seine vorhandenen Anmelde-Informationen an diesen Dienst übergibt. Dazu müssen ClientsService Discovery[13] (zu deutsch „Dienste-Ermittlung“) unterstützen. So ist es möglich, Server nach angebotenenTransports zu durchsuchen und ohne zusätzliche Installation von Plugins mit Nutzern proprietärerInstant-Messaging-Netzwerke zu kommunizieren.
Jeremie Miller begann 1998 mit der Entwicklung einesEchtzeit-XML-Streaming-Protokolls, das er 1999 unter dem Namen Jabber veröffentlichte. 2004 hatte dieIETF das Protokoll mit einigen Änderungen als offiziellen Standard mit der BezeichnungExtensible Messaging and Presence Protocol verabschiedet. Seitdem ist dieXMPP Standards Foundation (XSF) verantwortlich für die Standardisierung der auf XMPP aufbauenden Protokolle, den sogenanntenXMPP Extension Protocols. Direktor und Autor der meisten XEPs istPeter Saint-Andre.
Google war der einzige Anbieter, der das XMPP-Protokoll für die E-Mail-Adressen vonGoogle Mail anbot. DieserGoogle-Talk-Dienst wurde allerdings im Mai 2013 für Drittsoftware eingestellt und steht nur noch für den Client von Google zur Verfügung. In Deutschland wurde XMPP vonUnited Internet imGMX/Web.de Multimessenger verwendet, der darüber hinaus auch die Integration anderer Dienste wie ICQ, Windows Live Messenger und Yahoo Messenger erlaubte. Am 1. Dezember 2014 wurde dieser Dienst jedoch ebenfalls eingestellt. Google- und GMX-Kunden konnten damals lediglich mit der Angabe ihrer E-Mail-Adresse direkt – also ohne Einsatz von „Transports“ – miteinander kommunizieren. Ebenso verwendete derFacebook-Chat das XMPP-Protokoll. Früher konnte man sich deshalb mit vielen freien Chat-Programmen mit Facebook-Freunden unterhalten. Facebook hat das Protokoll aber im Mai 2015 derart modifiziert, dass Drittsoftware damit nicht mehr fehlerfrei funktioniert und das „Federation-Feature“, also die Kommunikation mit anderen XMPP-Servern, wurde dabei von Anfang an nicht unterstützt.
Weltweit gibt es mehrere tausend XMPP-Server. Einige Privatpersonen, aber auch Vereine wie derChaos Computer Club[15], betreiben eigene Server ohne kommerzielle Absicht. DiePiratenpartei betrieb ebenfalls einen inzwischen eingestellten Server.[16] DieXMPP Standards Foundation bietet eine Liste öffentlicher Server, in die sich Betreiber eintragen können.[17] Zudem existiert mit dem xmpp-server-scanner einBot, der Server automatisch abfragt und eine Liste mit Angaben zur Verfügbarkeit und unterstützten Funktionen generiert.[18]
Im Jahr 2009 hatCiscoJabber Inc. aufgekauft. Eine Integration in eigene Softwarelösungen ist geplant.[19]
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, respektivemitgeschnitten 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 mittelsTransport Layer Security (SSL/TLS) verschlüsselt werden (Client-zu-Server-Verschlüsselung). SSL-Verbindungen zum XMPP-Server wurden in der Regel aufPort 5223 angeboten, mittlerweile nutzen TLS-Verbindungen jedoch laut RFC 6120[2] mittelsSTARTTLS ebenfalls den Standardport 5222. Einige Server bieten abweichend auch explizit Port 5224 für TLS an. Client-zu-Client-Verschlüsselung 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, 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, 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. Im März 2014 unterschrieben viele Betreiber der großen öffentlichen XMPP-Server ein Manifest, in dem sie sich verpflichten, Server-zu-Server Verschlüsselung anzubieten und unsichere Protokolle wie SSLv2 abzuschalten.[20]
Einen noch höheren Grad an Sicherheit bietet daher dieEnde-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 istOpenPGP. Es beruht auf dem Prinzip derasymmetrischen 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 derInformationssicherheit: 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 eineGlaubhafte Abstreitbarkeit („Unverbindlichkeit“) zu ermöglichen: Nach erfolgter Kommunikation ist der Inhalt abstreitbar, da die Integrität der übertragenen Nachrichten gezielt zunichtegemacht wird, indem die temporär genutzten Signaturschlüssel nach deren Gebrauch im Klartext übertragen werden. Dadurch kann auch kein Gesprächsteilnehmer später nachweisen, dass bestimmte Inhalte tatsächlich übertragen wurden, da dieser die Inhalte selbst im Nachhinein hätte signieren können. DurchPerfect Forward Secrecy (PFS) wird außerdem erreicht, dass bei Verlust von privaten Schlüsseln vorherige Trafficmitschnitte nicht entschlüsselt werden können. Diese Form der Verschlüsselung eignet sich somit besonders für vertrauliche Gespräche „sub rosa“. Die Tatsache, dass ein Gespräch zwischen den Teilnehmern stattgefunden hat, bleibt davon unabhängig jedoch nachweisbar.
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.
↑Ozgur Ozturk:Introduction to XMPP protocol and developing online collaboration applications using open source software and libraries. In:2010 International Symposium on Collaborative Technologies and Systems. Mai 2010,S.21–25,doi:10.1109/CTS.2010.5478530 (ieee.org [abgerufen am 27. Januar 2025]).