claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 08/2006   »   Ausgabe bestellen

SILC verschlüsselt und signiert Chat-Botschaften

Ohne Mithörer chatten

Hans-Georg Eßer


SILC ist für IRC und Instant Messenger, was GPG für E-Mails ist: Es verschlüsselt und signiert Ihre Botschaften, so dass niemand Ihre Chats abhören kann.

Chatten unter Linux -- schon eine Kurzübersicht der verschiedenen Linux-Programme für IRC (Internet Relay Chat) und die zahlreichen Instant-Messaging-Programme (wie AIM, MSN, Yahoo etc.) würde mehrere Seiten füllen. All diese Tools haben eines gemeinsam: Sie übertragen Ihre Chat-Botschaften im Klartext über das Internet, unverschlüsselt.

Reden Sie im Chat nur über das Wetter, ist diese ungeschützte Kommunikation nicht weiter problematisch. Wenn die Inhalte der Gespräche vertraulich sind und Sie zum Beispiel auch bei E-Mails auf die GPG-Features Verschlüsselung und Signatur setzen, können Sie auch auf ein Chat-System umsteigen, das diese Sicherheitsmechanismen besitzt.

SILC steht für Secure Internet Live Conferencing und ist ein Chat-Dienst, der zahlreiche Features aus verschiedenen Chat- und Messaging-Systemen übernommen hat; sein auffälligstes Feature ist aber, dass standardmäßig (und nicht-abschaltbar) sämtliche Nachrichten verschlüsselt den Weg durch das Internet gehen.

Wollen Sie SILC verwenden, müssen Sie auch Ihre Gesprächspartner dazu bewegen, das Chat-Programm auszutauschen -- denn wie beim Umstieg auf GPG-verschlüsselte Mails funktioniert Kommunikation nur zwischen Benutzern der gleichen Systeme. SILC-Clients gibt es für Linux, Windows und Mac OS, so dass prinzipiell nichts einem abgesicherten Chat im Weg steht.

Wie SILC funktioniert

Beim ersten Start erzeugt SILC ein Schlüsselpaar, bestehend aus öffentlichem (public key) und privatem Schlüssel (private key) -- ähnlich, wie Sie das vielleicht schon von der Einrichtung eines Schlüsselpaars für GPG kennen (siehe Artikel über GPG ab Seite 38). Den Schlüssel können Sie übrigens mit einem Passwort schützen -- dann bleibt er selbst dann benutzbar, wenn ein Datendieb die Schlüsseldatei kopiert.

Alle Nachrichten, egal ob aus privaten Chats oder aus einem Channel, wandern vom Sender durch das SILC-Netzwerk zu dem oder den Empfänger(n). Standardmäßig erwartet SILC, dass Anwender dem Server vertrauen:

Zentraler Punkt ist ein SILC-eigenes Protokoll namens SILC Key Exchange (SKE, SILC-Schlüsseltausch), das alle SILC-Programme durchlaufen, die in direktem Kontakt miteinander stehen: also z. B. der Client mit dem Server, an dem er sich anmeldet, und zwei Server, die im Netzwerk miteinander verbunden sind. Beim SKE erstellen beide Seiten einen (gemeinsamen) Schlüssel, den Sie dann beim Versand von Nachrichten verwenden. Wandert eine Nachricht über viele Rechner, wird sie in jedem Schritt erneut ver- und entschlüsselt, da immer nur zwei direkt miteinander verbundene Maschinen einen gemeinsamen Schlüssel haben (Abbildung 1). Die mit SKE ausgehandelten Schlüssel verlieren stündlich ihre Gültigkeit und müssen dann erneuert werden. Gegen "Man-in-the-middle-Attacken" schützt sich SKE mit digitalen Signaturen [1].

Abb. 1: Nachrichten werden auf ihrem Weg mehrfach ver- und entschlüsselt (Quelle: silcnet.org)

Vertrauen Sie den SILC-Servern nicht, können Sie auch mit der Gegenseite auf direktem Weg einen gemeinsamen Schlüssel erstellen -- dann wandern Nachrichten zwar immer noch durch das SILC-Netzwerk, sind aber so verschlüsselt, dass außer Ihnen und dem Empfänger niemand etwas damit anfangen kann. Es findet in dem Fall also nicht mehr die oben beschriebene Ent- und Verschlüsselung bei allen Zwischenstationen statt.

Channels

Die Kommunikation in Channels mit mehreren Teilnehmern funktioniert ähnlich, aber hier gibt es zu jedem Channel einen speziellen Channel-Key, den SILC jedesmal neu erzeugt, wenn ein neuer Anwender den Channel betritt oder einer ihn verlässt. So sorgt SILC dafür, dass stets nur die Anwender, die gerade "auf" einem Channel sind, auch den zum Mithören nötigen Key haben.

Die Darstellung in diesem Kasten ist wegen der Komplexität der SILC-Sicherheitsmechanismen sehr oberflächlich -- im SILC-Whitepaper [1] finden Sie eine vollständige Beschreibung (leider nur in englischer Sprache).

Zwei Linux-Clients

Für Linux gibt es (im Wesentlichen) zwei SILC-Clients: silc-client kommt direkt vom SILC-Projekt und basiert auf dem Textmodus-IRC-Client irssi [2], der andere erweitert als Plug-in das Programm Gaim. Suse-Linux-Anwender haben die freie Wahl: Auf der Heft-DVD finden Sie beide Programme, Mandriva- und Kubuntu-Benutzer müssen sich derzeit leider mit dem Textmodusclient begnügen, den wir darum zuerst beschreiben.

Nachdem Sie silc-client von der Heft-DVD installiert haben, starten Sie das Programm durch Eingabe von silc in eine KDE-Konsole. Beim ersten Start erzeugt das Programm ein Schlüsselpaar und fragt nach einer "passphrase" -- einem Passwort, das den Schlüssel sichert. Geben Sie es zweimal ein. Anschließend benötigt das Programm einige Sekunden für die Schlüsselgenerierung, und nach einem Druck der Eingabetaste müssen Sie dieses Passwort nochmals eingeben: diesmal, um dem Programm Zugriff auf den Key zu gewähren. Danach beginnt die Serveranmeldung. Über die Adresse silc.silcnet.org leitet das Netzwerk Sie nach dem Zufallsprinzip an einen von mehreren Servern weiter -- im Test waren nicht alle erreichbar. Tut sich beim Verbindungsaufbau über längere Zeit nichts, brechen Sie ab, indem Sie

/quit

(mit führendem Schrägstrich) eingeben, mit [Eingabe] bestätigen und silc neu starten. Alternativ geben Sie mit /server einen anderen Server an, aus der unter [5] abrufbaren Serverliste funktionierte z. B. sauna.silcnet.org im Test gut. Das Kommando ist dann

/server sauna.silcnet.org

Beim ersten Kontaktaufbau mit einem Server zeigt silc-client dessen Fingerabdruck an und bittet Sie, ihn zu bestätigen. Antworten Sie auf die Frage "Would you like to accept the key (y/n)?" mit y und [Eingabe]. Dann schließt SILC die Anmeldung ab -- Sie sind jetzt angemeldet (Abbildung 2).

Abb. 2: Kontaktaufnahme zum Server gelungen.

Kennen Sie den Nicknamen eines anderen SILC-Benutzers, führt der Weg zum Chat im Prinzip über das /query-Kommando, wie im IRC. Aber da SILC es erlaubt, den gleichen Nicknamen mehrfach zu verwenden (was "Nick-Wars" verhindern soll), prüfen Sie zunächst mit /whois, wer unter dem Nicknamen online ist -- Abbildung 3 zeigt die Ausgabe, die auf eine Beispiel-/whois-Anfrage folgt, sie enthält zwei Einträge für den abgefragten Nicknamen. Jeweils in Klammern steht dabei der "volle" Nickname (der in manchen Fällen um ein "@"-Zeichen und ein Anfangsstück des Rechnernamens ergänzt ist). Um den unteren der beiden Anwender zu kontaktieren, folgt nun der Befehl

/query esser@port

-- für den oberen würde /query esser ausreichen. Danach kann das Chatten beginnen, im Vergleich zu irssi für das IRC gibt es jetzt keinen Unterschied mehr.

Abb. 3: Die Verbindung steht.

Channels betreten Sie, ebenfalls wie im IRC, mit dem /join-Kommando. Dabei müssen SILC-Channel-Namen (anders als IRC-Channels) keine führende Raute (#) haben, dürfen es aber. Das heißt: easylinux und #easylinux sind zwei gültige Channel-Namen, die Sie in unterschiedliche Channels führen.

Die meisten IRC-Befehle funktionieren mit SILC genauso wie im IRC; für Details zu diesen Befehlen verweisen wir darum auf ältere IRC-Artikel in EasyLinux [3] und in unserer Schwesterzeitschrift LinuxUser [4].

Interessant ist aber noch der Dateitransfer zwischen zwei Benutzern, der (auf Befehlsseite) ähnlich wie DCC-Transfers im IRC funktioniert: Der Absender stößt den Transfer mit

/file send Dateiname Nick

an (z. B. file send /tmp/test.png esser). Beim Empfänger erscheint dann ein Hinweis auf das Angebot, das dieser mit

/file accept

annehmen kann. Danach findet ein Schlüsseltausch zwischen Sender und Empfänger statt, bei dem beide Teilnehmer zunächst ihre Fingerabdrücke prüfen und akzeptieren müssen (wie vieles in SILC geschieht das nur beim ersten Dateitransfer zwischen diesen zwei Anwendern). Danach wandert die Datei zum Empfänger. Das Ganze funktioniert übrigens nicht, wenn die Teilnehmer hinter einer Firewall leben, weil eine direkte Verbindung aufgebaut wird. Dass die Verbindung nicht zustande kommt, erkennen Sie an einer Fehlermeldung der Form  * Could not connect to client 192.168.1.118: No route to host.

Grafisch

Hübscher als der Textmodusclient ist Gaim mit integriertem SILC-Plug-in. Hinweise zur Installation finden Suse-Anwender in der Beschreibung auf der Heft-DVD, wir haben ein Skript erstellt, das die Pakete gaim und silc-toolkit einrichtet. Gaim mit SILC-Plug-in und silc-client greifen auf dieselben Konfigurationsdaten im Verzeichnis ~/.silc zurück, so dass Sie einen bereits mit silc-client erzeugten Schlüssel in Gaim weiter verwenden können. Gibt es noch keine Schlüssel, erzeugt das Gaim-Plug-in alles Notwendige im Hintergrund.

Starten Sie Gaim über [Alt-F2] und Eingabe von gaim in das Schnellstartfenster. Beim allerersten Start füllen gleich drei Fenster den Bildschirm, eines davon ist der Dialog Konto hinzufügen, über den Sie eine SILC-Verbindung einrichten:

  1. Wählen Sie im Drop-down-Menü Protokoll den Eintrag SILC, wählen Sie einen Benutzernamen und geben Sie ein Passwort ein. (Haben Sie bereits mit silc-client gearbeitet, tragen Sie das Passwort ein, das Sie dort als Passphrase verwendet haben.)
  1. Aktivieren Sie die Option Passwort speichern und auf Wunsch zusätzlich die Option Auto-Login, wenn Sie nur SILC verwenden wollen -- das erspart Ihnen später ein manuelles Anmelden.
    Per Klick auf Zeige mehr Optionen können Sie eine ganze Palette weiterer Parameter einstellen, was aber für die ersten Schritte nicht notwendig ist.
  1. Klicken Sie auf Speichern, um den SILC-Zugang in die Liste der Gaim-Accounts einzutragen. Dadurch verschwindet der Dialog.
  1. Im Gaim-Fenster mit dem Titel Anmelden klicken Sie nun auf die Schaltfläche Anmeldung. Wenn es noch keine Schlüssel gibt, dauert das einen Moment, weil das Plug-in jetzt die Schlüssel erzeugt.

Auch für Gaim gilt: Manche SILC-Server sind nicht oder schlecht erreichbar, weswegen die Anmeldung eventuell nicht gelingt. Wenn es auch nach mehreren Versuchen nicht funktioniert, können Sie als Abhilfe von Hand einen erreichbaren Server eintragen; im Test funktionierte z. B. sauna.silcnet.org sehr gut:

  1. Doppelklicken Sie im Fenster Konten auf den SILC-Eintrag. Es erscheint dann wieder das bereits aus der Einrichtung des SILC-Accounts bekannte Fenster, in dem Sie nun über Zeige mehr Optionen die erweiterten Einstellungen aufrufen.
  1. Im Feld Verbindungsserver ist silc.silcnet.org eingetragen -- ändern Sie diesen Eintrag ab, z. B. auf sauna.silcnet.org. Eine Liste aller SILC-Server finden Sie unter [5].
  1. Sichern Sie die Änderungen per Klick auf Speichern und versuchen Sie erneut, sich anzumelden.

Bei der ersten Anmeldung an einem Server bittet auch Gaim um Prüfung des Serverschlüssels; bestätigen Sie mit Ja.

Um einen Channel zu betreten, klicken Sie in der jetzt angezeigten Kontaktliste auf Chat und geben dann den Channel-Namen ein. Im Channel können Sie sich nun mit den übrigen Anwesenden unterhalten.

Abb. 4: Zu zweit im Channel: Wer einen Kanal betritt, ist sein Gründer (Founder).

Leider beherrscht Gaim nicht alle SILC-Features, so funktionieren z. B. die Befehle /op, /deop, /kick und /ban unter Gaim nicht. Wer aber nur Unterhaltungen führen will und keine Channel-"Administration" benötigt, kommt mit Gaim komfortabler ans Ziel.

Abb. 5: Komfortabler: Das SILC-Plug-in für Gaim unterstützt die wichtigsten SILC-Features, hier zeigt es Informationen über einen anderen Benutzer an.

Besonderheiten von SILC

SILC wirkt auf den ersten Blick sehr IRC-ähnlich, aber es gibt einige interessante Besonderheiten.

Über die so genannte Detach-Funktion, die Sie mit dem Befehl /detach auslösen, ist es möglich, sich vom Server abzumelden, ohne die aktiven Channels zu verlassen. Melden Sie sich später wieder am Server an, sind Sie bereits auf allen Channels, und für die Übrigen sieht es aus, als ob Sie diese nie verlassen hätten. Sie behalten dabei auch alle Sonderrechte wie beispielsweise "Op" auf einem Channel. Nachrichten auf Channels und in privaten Chats, die während Ihrer Abwesenheit eintreffen, wirft der SILC-Server allerdings weg; bei privaten Queries erhält die Gegenseite (laut Dokumentation) einen Hinweis dazu, dass Sie derzeit "detached" sind -- im Test funktionierte das allerdings nicht.

Neben den aus dem IRC bekannten Op-Rechten gibt es noch den "Founder"-Status, den ein Channel-Gründer erhält -- das ist ein stärkerer Op-Status. Founder können nicht (von anderen Operatoren) aus dem Channel geworfen werden, und sie können sich immer wieder Zutritt verschaffen, auch wenn der Channel z. B. auf "invite-only" gesetzt wurde, also nur nach Einladung betreten werden kann. (hge)

Alternativen

Die SILC-Entwickler weisen in der Dokumentation darauf hin, dass es nicht ausreichend ist, ein bestehendes Chat-Protokoll (wie IRC, ICQ oder AIM) einfach mit einer Verschlüsselungsfunktion auszustatten und damit Sicherheit garantieren zu können -- dennoch gibt es solche Ansätze.

Die folgenden Chat-Programme verschlüsseln die Kommunikation auf Wunsch mit Hilfe von GPG: Gabber (http://gabber.sourceforge.net/), Miranda (http://www.miranda-im.org/), Psi (http://psi-im.org/) und Jabber (http://tkabber.jabber.ru/).

Infos
[1] SILC Protocol Whitepaper: http://silcnet.org/support/documentation/wp/silc_protocol.php
[2] Irssi-Artikel: Martin Loschwitz, "Chat-Komfort im Terminal", LinuxUser 06/2002, S. 28 ff., http://www.linux-user.de/ausgabe/2002/06/028-irssi/irssi.html
[3] IRC-Artikel: Hans-Georg Eßer, "Mehr als Instant Messaging", EasyLinux 10/2003, S. 46 ff., http://www.easylinux.de/Artikel/ausgabe/2003/10/046-xchat/
[4] IRC-Grundlagen: Mirko Albrecht, "Schwatzhaftes Netzwerk", LinuxUser 12/2005, S. 52 ff., http://www.linux-user.de/ausgabe/2005/12/052-irc-grundlagen/
[5] SILC-Serverliste: http://silcnet.org/network/servers/

Auf der Heft-CD:


Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2014 Medialinx AG | Last modified: 2008-11-05 17:01

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]