die raven homepage
Verschlüsseltes & anonymisiertes IM per Jabber - Seite 2
Was ist Jabber?
Geschichte

Jabbers "Geburtsjahr" ist das Jahr 1998. Damals begann Jeremy Miller mit der Programmierung eines Open Source IM Clients und Servers unter UNIX, die mit den verschiedenen, propietären IM Systemen interagieren sollten. Das erste öffentliche Release des Servers jabberd erschien im Jahr 2000.

Zur Motivation für die Entwicklung von Jabber schrieb Jeremy in seinem Weblog:
(...)

Email has allowed us to connect and communicate knowledge, and now IM is poised to let humanity connect and communicate people, to virtualize what we do in the real world but limited to just those around us, and to open that up to anyone anywhere and enhance it as well.

The idea behind Jabber is to ensure that the technologies to do this are open and available to anyone, and not controled. I don't care what the technologies actually are (XML and TCP are just tools, some of the best we've got so far to get the job done) just as long as they help people connect and can be built on and extended by anyone to evolve to relate more of what people need to connect and converse.

Jabber wurde von der Open Source Community begeistert aufgenommen und bereits ein Jahr später gründete sich die Jabber Software Foundation (JSF), die es sich zur Aufgabe machte, die entstehenden Aktivitäten zur Formulierung der Jabber Protkolle, Bereitstellung von Dokumentationen und die Entwicklung von Servern und Anwendungen für Jabber zu bündeln.

Organisationen, Protokolle, und Standards

Im Kern besteht Jabber aus einer Sammlung von Protokollen, IM Techniken und darauf basierenden Spezifikationen zum Austausch von Nachrichten, anderen strukturierten Informationen oder Dateien zwischen Personen über das Internet in annähernder Realzeit und zur Einrichtung und Anzeige der virtuellen Präsenz eines Benutzers und deren Status (online, verfügbar, beschäftigt usw.). Das Datenformat der Jabber Techniken beruht auf der Extensible Markup Language (XML), die es ermöglicht, die Techniken beliebig zu erweitern, bzw. um eigene Funktionen zu ergänzen und alle möglichen, strukturierten Daten zu transportieren.

Im Gegensatz zu den propietären Systemen sind die Protokolle quelloffen und frei verfügbar. Von der XMPP Arbeitsgruppe der Internet Engineering Task Force (IETF) wurden 2004 die Jabber Kern-Protokolle RFC 3920: Extensible Messaging and Presence Protocol (XMPP): Core, RFC 3921: Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence, RFC 3922: Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM) und RFC 3923: End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP) als Standards für Instant Messaging und Präsenz-Technik angenommen.

Die Weiterentwicklung der XMPP Protokolle und der XMPP Erweiterungen wird seit Anfang 2007 durch die XMPP Standards Foundation (XSF) wahrgenommen, in die sich die JSF umbenannte.

Neben dem "Kerngeschäft" der XMPP Protokolle dient die XSF (aka JSF) auch als Schnittstelle zwischen Benutzern, Entwicklern, der IETF Arbeitsgruppe, Serverbetreibern und dem kommerziellen Markt. Auf der Website der "JSF" werden Open Source Projekte, Anwendungen und Server vorstellt, Quellcode bereitstellt, Foren, Mailinglisten und Weblogs zum Kommunikationsaustausch angeboten. Benutzer finden dort Dokumentationen, Anleitungen und Informationen zu öffentlich zugänglichen Jabber Servern und Jabber Anwendungen.

Die XMPP Federation ist seit Dezember 2006 die Zertifizierungsinstanz der XFS. Hier können sich Jabber Server Administratoren registrieren und für ihren Jabber Server ein Server-Zertifikat der "XMPP Federation Intermediate Certification Authority (ICA)" erhalten und zur Verschlüsselung und Authentifizierung verwenden. Die XMPP Federation ICA als Zwischen-Zertifizierungsinstanz ist wiederum durch die Root-Zertifizierungsstelle StartCom zertifiziert.

VoIP und Video-Chat

In Zukunft wird auch die Nutzung von Voice over IP (VoIP), Videoübertragungen und anderen P2P-Multimediasessions über Jabber möglich sein, da die Jabber Software Foundation das auf XMPP basierende Jingle Protokoll der 2005 von Google gestarteten Google Talk Anwendung adaptiert hat und mit Unterstützung von Google als offene Spezifikationen bzw. XEP-0166: Jingle weiterentwickelt. Angestrebt wird auch die Kompatibilität zum Session Initiation Protocol (SIP), H.323 und dem IAX Protokoll. Zahlreiche Entwickler von Jabber Applikationen, darunter auch Psi, haben bereits ihre Unterstützung für die Integration von Jingle in ihre Clients angekündigt.

Das Jabber Netzwerk

Auch bei Jabber wird die Client-Server Architektur verwendet, die aber aus vielen, unabhängigen Jabber Servern in einem verteilten Jabber Netzwerk besteht, die jede Person oder Organisation mit der nötigen Internetanbindung betreiben kann.

Alle Jabber Server können mit einem gemeinsamen Server-zu-Server Protokoll miteinander kommunizieren und die Daten ihrer Benutzer zueinander transportieren, wobei jeder Jabber Server ein eigenes Verzeichnis seiner Benutzer unterhalten kann und die Kommunikation zwischen den Benutzern seiner Domäne abwickelt.

Das bedeutet auch, dass im Jabber-Netzwerk der Benutzer nicht der Kapazität und Funktionsfähigkeit der zentralen Server der propietären IM Dienste ausgeliefert ist und auch nicht der möglichen Kontrolle der Konzerne, die diese Dienste und Server betreiben.
Nicht umsonst entscheiden sich immer mehr Unternehmen und auch militärische Institutionen wie die U. S. Army für Jabber bzw. XMPP als Grundlage ihrer IM Infrastruktur.

Die Jabber Server Software jabberd selbst enthält interne Grundfunktionen für die Registrierung, Authentifizierung und Statusanzeige seiner Benutzer, für die Speicherung der Kontaktlisten usw.
Aufgrund des modularen Designs kann jeder Jabber Server um zusätzliche Komponenten erweitert werden, die dem Benutzer zusätzliche Dienste bereitstellen.

Dazu gehören zum Beispiel die Gateways, bei Jabber auch Transport oder Agent genannt, zu anderen IM Plattformen, über die Jabber-Benutzer mit den Benutzern anderer IM Plattformen kommunizieren können und umgekehrt, der SMTP Transport, über den man an und von Jabber Accounts aus E-Mails senden und empfangen kann, RSS Gateways, mit denen man Newsfeeds von Weblogs und Websites bezieht und liest. In Zukunft sind auch Schnittstellen für Videoconferencing und VoIP per SIP / RTP denkbar. Die Jabber Serversoftware bietet damit ein hohes Maß an Flexibilität und Erweiterbarkeit für den Serverbetreiber und damit ein großes Potential an Kommunikationsmöglichkeiten für den Benutzer.

JID und Jabber Account

Die Architektur des Jabber Netzwerks wurde der Architektur des Datenaustauschs per E-Mail, bzw. des Mailtransports zwischen Mailservern, die sich über das gemeinsame SMTP Protokoll verständigen, nachempfunden. Mit dem Unterschied, dass Nachrichten durch die ständige Verbindung des Benutzers mit seinem Jabber Server bzw. dem Jabber Netzwerk sofort und ohne Zeitverzögerung ausgetauscht werden können.

Die Adressauflösung und das Weiterleiten der Nachrichten basiert auf dem Domain Name System und bekannten Schemata zur Beschreibung und Identifizierung von Ressourcen. Dementsprechend sieht auch die Jabber Kennung (Jabber Identifier oder kurz JID) für eine Ressource im Jabber Netzwerk wie eine leicht zu merkende E-Mail Adresse aus, wobei die Ressource ein Jabber Server, ein einzelner Benutzer, ein Gateway oder ein Gruppen-Chatraum sein kann.

Das Format der JID setzt sich aus drei Elementen zusammen:

node@domain/resource

Die node Kennung repräsentiert den Benutzer. Alle Nodes sind Teil einer spezifischen Domain.

Die domain Kennung ist die primäre Kennung, die den Jabber Server und dem Jabber Server untergeordnete Transporte und Gateways repräsentiert.

Die /resource Kennung ist eine optionale Kennung, die Objekte, Sitzungen oder Verbindungen repräsentiert, die dem Benutzer gehören und zugeordnet sind. Üblich sind hier Angaben zur verwendeten Anwendung und/oder zur lokalen Position, von der aus kommuniziert wird (athome/mobile/atwork).

Vor allem dient die Angabe der Ressource dazu, von mehreren Computern in einem Netz, auf denen Jabber Anwendungen installiert sind, mit der gleichen JID parallele Verbindungen zu einem Jabber Server aufnehmen zu können. Mit jeder Ressource ist auch ein Prioritätswert verbunden, der darüber entscheidet, zu welcher Jabber Anwendung eine Nachricht zugestellt wird.

Beispiel: Der Jabber Nutzer mit der JID kraven@amessage.info unterhält zwei gleichzeitige Verbindungen über einen Client, der auf einem PC am Arbeitsplatz läuft und einen Client auf dem PC in der Privatwohnung:

1. Session: JID: kraven@amessage.info Ressource: PSI/athome Priorität: 5
2. Session: JID: kraven@amessage.info Ressource: Gabber/atwork Prioriät: 3

Eine Nachricht oder ein Chat, der sich an kraven@amessage.info richtet, erreicht den Jabber Client der ersten Session, weil der Ressource eine höhere Priorität zugeordnet ist.

Jabber Kopfzeile für E-Mail

Zur Angabe der eigenen JID und um Mailpartnern zu signalisieren, dass man auch per Jabber erreichbar ist, bietet sich ähnlich wie bei OpenPGP Benutzerkennungen das Anlegen einer zusätzlichen E-Mail Kopfzeile an. Wie man das für verschiedene E-Mail Programme macht, wird im Jabber Wiki Eintrag Jabber Email Header erklärt.

Als Beispiel die Methode für Thunderbird:

  1. Aufruf des erweiterten Konfigurationseditors über Menü
    Extras -> Einstellungen -> Erweitert -> Konfiguration bearbeiten
  2. Zuerst muss die ID-Nummer (idN) des Mailkontos identifiziert werden, für das die Jabber-ID: Kopfzeile in E-Mails übertragen werden soll. Dazu gibt man als Filter identity.id oder .useremail ein. Mit dem Filter .useremail wirft der Konfigurationseditor z. B. aus:

    mail.identity.id8.useremail | ... | ... | hp@kairaven.de

    Also lautet die ID-Nummer für das Konto, das mit der angegebenen E-Mail Adresse verwendet wird 8. Die ID-Nummer wird in den folgenden Einstellungsnamen für N eingesetzt:
  3. Über das Kontextmenü im unteren Fenster (rechte Maustatste) neuen Einstellungsnamen mit Neu -> Typ String anlegen:

    mail.identity.idN.header.jid

    Als Wert (wobei für jaber.server.tld die richtige Domain des benutzten Jabberservers eingesetzt wird) eintragen:

    Jabber-ID: benutzername@jabber.server.tld
  4. Über das Kontextmenü im unteren Fenster (rechte Maustatste) neuen Einstellungsnamen mit Neu -> Typ String anlegen:

    mail.identity.idN.headers

    Als Wert eintragen:

    jid
Damit wird jedes Mal die Kopfzeile Jabber-ID: benutzernamen@jabber.server.tld im Kopf einer E-Mail übertragen, die mit dem Konto mit der ID-Nummer N versendet wird.

Zur Anzeige der Jabber-ID: Kopfzeile anderer Jabber Nutzer in Thunderbird wird die Mnenhy Thunderbird Erweiterung installiert. Danach wird die Anzeige über das Menü Ansicht -> Kopfzeilen -> Anpassen konfiguriert:

Mnenhy

In der Wurzelansicht wird sichergestellt, dass Selbtsdefinierte Kopfzeilen aktiviert ist.

Mnenhy

Über den Neue Liste Button wird eine neue Kopfzeilenliste mit einem eigenen Namen angelegt.

Mnenhy

Über den Neue Kopfzeile Button wird für die Jabber-ID: Kopfzeile eine neue Kopfzeile mit den hier angezeigten Inhalten angelegt: Name: Jabber-ID, Ausgabeformat: Text, Anzeigename: Jabber-ID, Sortierstring: jabber-id.

Mnenhy

In der Kopfzeilenübersicht der Kopfzeilenliste wird die Jabber-ID: Kopfzeile aktiviert (und alle anderen Kopfzeilen, die man mit der Kopfzeilenliste angezeigt bekommen möchte).

In Thunderbird aktiviert man die Kopfzeilenliste Listename als Ansicht über das Menü Ansicht -> Kopfzeilen -> Listenname.
[ Inhalt | Top | Zurück | Weiter ]