Sichern Sie Ihre Verbindungen mit SSH

ArticleCategory:

System Administration

AuthorImage:

Bernard Perrot

TranslationInfo:[Author and translation history]

original in fr Bernard Perrot  

fr to en Guy Passemard  

en to de Hermann-Josef Beckers

AboutTheAuthor

Bernard war seit 1982 als System- und Netzwerk-Techniker f�r das CNRS (French National Scientific Research Center) t�tig. Er war verantwortlich f�r Aufgaben, die die Sicherheit von Computersystemen betreffen beim "Institut National de Physique Nucléaire et de Physique des Particules" (In2p3). Nun arbeitet er f�r das "Institute of Mathematical Research (IRMAR)" in der Abteilung "Physical and Mathematical Sciences (SPM)".

Abstract

Dieser Artikel wurde zuerst in einer Spezialausgabe des franz�sischen Linux-Magazins publiziert, deren Schwerpunkt auf Sicherheit lag. Der Editor, die Autoren und die �bersetzer haben LinuxFocus freundlicherweise gestattet, jeden Artikel aus dieser Spezialausgabe zu publizieren. Dementsprechend wird LinuxFocus diese Artikel herausbringen, sobald sie ins Englische �bersetzt sind. Dank an alle Menschen, die an dieser Arbeit beteiligt sind. Dieser Abstrakt wird f�r jeden Artikel reproduziert, der aus der gleichen Quelle stammt.

Die Ambition dieses Artikels ist ein guter Ausblick auf SSH, warum es benutzt wird. Dies ist kein Tutorial oder ein Installations-Handbuch, eher eine Einf�hrung in das Vokabular und die Eigenschaften von SSH. Die Verweise und Dokumentation in diesem Artikel geben Ihnen alle Einzelheiten der Implementation.

ArticleIllustration:

ssh

ArticleBody:[The article body]

Wof�r wird SSH benutzt?

Vor allem (und historisch) ist SSH (der Befehl ssh) eine sichere Version der Befehle rsh (und rlogin). SSH bedeutet "Secure SHell" wie rsh f�r "Remote SHell" steht. Wenn Ihnen rsh leichten Shell-Zugang zu einem entfernten Rechner geben kann, aber ohne Mechanismen f�r die Benutzerauthentifizierung, bietet Ihnen ssh den gleichen Dienst, jedoch mit hoher Sicherheit auf mehreren Ebenen.

Wenn wir kurz an einen Benutzer denken, der nicht mehr wissen (oder tun) m�chte, k�nnten wir hier aufh�ren und sagen, dass der Administrator seinen Job getan und die Software installiert hat (was heute sehr leicht ist), dann brauchen Sie nur noch den Befehl ssh als Ersatz f�r telnet, rsh oder rlogin, und alles funktioniert wie vorher, aber mit viel mehr Sicherheit.

Wenn Sie bisher

% rlogin serveur.org (oder telnet serveur.org)

benutzt haben, geben Sie jetzt ein:

% ssh serveur.org

und es ist schon viel besser!

Um diese kurze Einf�hrung zu beenden, will ich nur feststellen, dass bis heute alle Sicherheits-Zwischenf�lle, die durch die einfache Benutzung von SSH anstelle von rsh (rlogin,telnet) h�tten vermieden werden k�nnen, nur eine Konsequenz der Nachl�ssigkeit des Opfers sind.

Was sind die Bed�rfnisse?

Um mehr auf Einzelheiten einzugehen, hier sind einige der kritischsten und schwachen Aspekte interaktiver Verbindungen, die man gel�st haben m�chte:

Als Antwort auf diese Bed�rfnisse gibt es einige L�sungen, die nicht wirklich zufriedenstellen:

Und dann gibt es SSH, eine gute L�sung f�r:

SSH Version 1 und SSH Version 2

Da nichts in dieser Welt perfekt ist, gibt es zwei inkompatible Versionen des SSH-Protokolls: die 1.x-Version (1.3 und 1.5) und die 2.0-Version. Der Wechsel von einer zur anderen Version ist f�r die Benutzerin nicht schmerzhaft, wenn sie die richtigen Clients und Server zur Verf�gung hat, die mit der Version kompatibel sind.

Das SSH Version 1-Protokoll ist integriert, w�hrend SSH Version 2 das vorherige Protokoll in drei "Schichten" redefiniert hat.

  1. SSH Transport Layer Protocol (SSH-TRANS)
  2. SSH Authentication Protocol (SSH-AUTH)
  3. SSH Connection Protocol (SSH-CONN)

Jede Protokollschicht ist speziell in einem Dokument (Draft) definiert, das von der IETF normiert wurde, gefolgt von einem vierten Dokument, das die Architektur beschreibt (SSH Protocol Architecture, SSH-ARCH). Man findet alle Details unter: http://www.ietf.org/html.charters/secsh-charter.html

Ohne zu sehr in die Einzelheiten zu gehen, dies finden Sie in SSHv2:

Die wichtigsten technischen Unterschiede zwischen SSH Version 1 und 2 sind:

SSH Version 1

SSH Version 2

monolithisches (integriertes) Design

Trennung der Authentifizierungs-, Verbindungs- und Transport-Funktionen in Ebenen

Integrit�t mittels CRC32 (nicht sicher)

Integrit�t mittels HMAC (hash-Verschl�sselung)

ein und nur ein Kanal per Sitzung

unbeschr�nkte Kanal-Anzahl per Sitzung

Aushandlung nur mit einem symmetrischen Chiffre im Kanal, Sitzungs-Identifikation mit eindeutigem Schl�ssel auf beiden Seiten

detailliertere Aushandlung (symmetrischer Chiffre, �ffentliche Schl�ssel, Komprimierung, ...) und ein separater Sitzungsschl�ssel, Komprimierung und Integrit�t auf beiden Seiten

benutzt nur RSA als Algorithmus f�r den �ffentlichen Schl�ssel

RSA und DSA als Algorithmus f�r den �ffentlichen Schl�ssel

Sitzungs-Schl�ssel vom Client �bermittelt

Sitzungs-Schl�ssel wird �ber das Diffie-Hellman-Protokoll ausgehandelt

Sitzungs-Schl�ssel f�r die ganze Sitzung g�ltig

erneuerbare Sitzungs-Schl�ssel

Handhabung eines Schl�sselbundes

Lassen Sie mich eben die SSH-Schl�sseltypen definieren:

Die Benutzerin f�gt einen Passwort-Satz hinzu, der den privaten Schl�ssel der erw�hnten Schl�ssel-Paare sch�tzt. Dieser Schutz wird erreicht durch die Verschl�sselung der Datei mit dem privaten Schl�ssel durch einen symmetrischen Algorithmus. Der zur Verschl�sselung der Datei genutzte geheime Schl�ssel wird aus dem Passwort-Satz abgeleitet.

Authentifizierungs-Methoden

Es gibt verschiedene Benutzer-Identifikations-Methoden, die Wahl wird in Abh�ngigkeit von den Anforderungen der Sicherheits-Regeln getroffen. Die Authentifizierungsmethoden werden in der Konfigurationsdatei des Servers aktiviert (oder auch nicht). Hier sind die Hauptkategorien:

Au�erdem ist es n�tzlich, zumindest zwei weitere Elemente zu kennen, die die Authentifizierung betreffen:

Die Verschl�sselungs-Algorithmen

Hier muss man unterscheiden zwischen denen f�r die Verschl�sselung von Kommunikations-Kan�len (Verschl�sselung mit geheimen Schl�sseln) und jenen, die f�r die Authentifizierung benutzt werden (Verschl�sselung mit �ffentlichen Schl�sseln).

F�r die Authentifizierung k�nnen wir in der Version 2 des Protokolls zwischen RSA und DSA w�hlen, f�r Version 1 steht nur RSA zur Verf�gung (daher keine Wahlm�glichkeit ...). DSA wurde aus historischen Gr�nden gew�hlt, weil RSA in einigen L�ndern patentiert war. Seit dem Ende des Sommers 2000 ist RSA frei von Rechten, so dass diese Beschr�nkung entfallen ist. Ich habe wirklich keine Vorliebe der guten oder schlechten Wahl (nur das DSA ein "reines" NSA-Produkt ist).

F�r die symmetrische Verschl�sselung gibt es schon fast zu viel Auswahl ... Das Protokoll schreibt einen gemeinsamen Algorithmus vor, der in allen Implementationen vorhanden sein muss: triple-DES mit drei Schl�sseln. Daher wird er benutzt, wenn die Verhandlung zwischen Client und Server hinsichtlich der anderen Algorithmen scheitert. Wenn Sie k�nnen, versuchen Sie einen der anderen Algorithmen auszuhandeln, da 3DES nun mit die geringste Performanz aufweist. Nichtsdestoweniger werden wir die exotischen oder alten (arc4, DES, RC4, ...) beiseite lassen und uns auf folgende beschr�nken:

Pers�nlich frage ich mich nach dem Interesse, so viele Algorithmen vorzuschlagen; obwohl das Protokoll die M�glichkeit erlaubt, einen "privaten" auszuhandeln (z. B. f�r eine bestimmte Benutzergruppe), dies scheint f�r mich wesentlich, aber f�r den normalen Gebrauch denke ich, dass AES im Laufe der Zeit zum Standard werden wird. Falls AES komprimittiert wird, werden die Sicherheitsprobleme gr��er sein als die von SSH verursachten ...

Port-Weiterleitung, Tunnelung

SSH erm�glicht Redirektion (Weiterleitung) eines jeden TCP-Datenstroms durch einen "Tunnel" in einer SSH-Sitzung. Das bedeutet, dass der Datenfluss einer Anwendung, statt direkt �ber die Client- und Serverports zu gehen, "eingeschlossen " wird in einem "Tunnel", der zur Verbindungs-/Sitzungszeit erstellt wird (schauen Sie sich das folgende Diagramm an).

F�r das X11-Protokoll geschieht dies ohne spezielle Eingriffe (des Benutzers), mit transparenter Behandlung von Displays und erlaubt kontinuierliche Weiterleitung, falls es �ber mehrere Stationen geht.

F�r andere Datenstr�me gibt es Befehlszeilen-Optionen f�r jede Seite:

Diese m�chtige F�higkeit f�hrt dazu, das SSH manchmal als "ein Tunnel f�r die Armen" bezeichnet wird. Hier bezeichnet Armut diejenigen, die keine Administrator-Rechte auf dem Client haben. Nur in speziellen F�llen kann ein lokaler Port mit niedrigen Privilegien (Port > 1024) und ohne Superuser-Rechte ("root") weitergeleitet werden. Andererseits, wenn die Weiterleitung eines privilegierten lokalen Ports ben�tigt wird, muss dies entweder unter einer root-Kennung erfolgen oder der Client muss mit Superuser-Privilegien ("suid") installiert werden (tats�chlich erlaubt ein privilegierter lokaler Port die Redefinition eines Standard-Dienstes).

Wie mit IP, ist es recht einfach, etwas in etwas anderes einzupacken (und umgekehrt), es ist nicht nur m�glich, althergebrachte TCP-Datenstr�me weiterzuleiten, sondern auch PPP-Verbindungen, so dass wir einen "realen" IP-Tunnel in IP erstellen k�nnen (der verschl�sselt und daher sicher ist). Die Methode �berschreitet den Rahmen dieses Artikels, Sie k�nnen jedoch "Linux VPN-HOWTO" wegen Einzelheiten und Setup-Skripten lesen (Sie finden auch richtige VPN-L�sungen f�r Linux wie "stunnel", die Sie erw�gen sollten, bevor Sie eine endg�ltige Entscheidung treffen).

Denken Sie daran, dass die erste M�glichkeit ist, telnet-Datenstr�me umzuleiten: Dies scheint total nutzlos, da SSH automatisch interaktive Verbindungen implementiert. Sie k�nnen jedoch beim Weiterleiten von telnet-Verbindungen Ihren bevorzugten Client anstelle des interaktiven SSH-Modus benutzen. Dies k�nnten Sie besonders sch�tzen in einer Windowstm- oder MacOStm-Umgebung, wo der SSH-Client nicht den Vorlieben des Benutzers entspricht. Zum Beispiel leidet der "terminal emulation"-Teil des "Mindterm"-Clients (Javas SSH-Client, verf�gbar auf allen modernen Systemen) unter der mangelnden Performanz der Sprache JAVA: es kann vorteilhaft sein, den Client nur zum Er�ffnen des SSH-Tunnels zu nutzen.

Auf die gleiche Weise k�nnen Sie einen entfernten Client wie "xterm" starten (zum Beispiel mittels automatischer X11-Weiterleitung in SSH), was uns die Benutzung von SSH auf X-Terminals erlaubt.

Beachten Sie, dass der Tunnel offen bleibt, solange Daten fliessen, selbst wenn sie nicht vom Initiator kommen. Daher ist der "sleep"-Befehl sehr n�tzlich zum �ffnen eines neuen SSH-Tunnels, um eine neue TCP-Verbindung weiterzuleiten.

% ssh -n -f -L 2323:serveur.org:23 serveur.org sleep 60

% telnet localhost 2323

... welcome to serveur.org ...

Die erste Zeile �ffnet den Tunnel, startet den Befehl "sleep 60" auf dem Server und leitet den lokalen Port 2323 auf den entfernten Port Nummer 23 (telnet) weiter. Die zweite startet einen telnet-Client auf dem lokalen Port 2323 und benutzt dann den (verschl�sselten) Tunnel, um sich mit dem telnetd-D�mon auf dem Server zu verbinden. Der "sleep"-Befehl wird nach einer Minute beendet (es bleibt nur eine Minute Zeit, um telnet zu starten), aber SSH wird den Tunnel erst schliessen, wenn der letzte Client beendet wurde.

Haupt-Distributionen: frei verf�gbar

Wir m�ssen zwischen Clients und/oder Servern auf den verschiedenen Plattformen unterscheiden und Sie sollten wissen, dass SSH Version 1 und SSH Version 2 inkompatibel sind. Die Referenzen am Ende des Artikels helfen Ihnen, andere Implementationen zu finden, die nicht in der folgenden Tabelle enthalten sind, welche sich auf freie Produkte mit gen�gend stabilen F�higkeiten beschr�nkt..

Produkt

Plattform

Protokoll

Verweis

Notizen

OpenSSH

Unix

Versionen 1 und 2

www.openssh.com

Einzelheiten unten

TTSSH

Windowstm

Version 1

www.zip.com.au/~roca/ttssh.html

 

Putty

Windowstm

Version 1 und 2

www.chiark.greenend.org.uk/~sgtatham/putty

nur Beta

Tealnet

Windowstm

Version 1 und 2

telneat.lipetsk.ru

 

SSH secure shell

Windowstm

Versionen 1 und 2

www.ssh.com

frei f�r nicht-kommerzielle Nutzung

NiftytelnetSSH

MacOStm

Version 1

www.lysator.liu.se/~jonasw/freeware/niftyssh/

 

MacSSH

MacOStm

Version 2

www.macssh.com

 

MindTerm

Java

Version 1

www.mindbright.se

V2 nun kommerziell

Beachten Sie, dass MindTerm sowohl eine unabh�ngige Java-Implementation (Sie ben�tigen nur eine Java-runtime-Umgebung ) als auch ein servlet ist, das innerhalb eines kompatiblen und gut gestalteten Webbrowsers ausgef�hrt werden kann. Leider sind die letzten Versionen dieser exzellenten Distribution gerade kommerzielle Produkte geworden.

OpenSSH

Heute ist diese Distribution wahrscheinlich diejenige, die in einer Unix/Linux-Umgebung eingesetzt wird (kontinuierliche Unterst�tzung, gute Antwortzeiten, quell-offen und frei).

Die OpenSSH-Entwicklung begann mit der Original-Version (SHH 1.2.12) von Tatu Ylonen (die wirklich letzte freie) im OpenBSD2.6-Projekt (�ber OSSH). Nun wird OpenSSH von zwei Gruppen entwickelt, eine, die nur f�r das OpenBSD-Projekt entwickelt, die andere passt den Code kontinuierlich an, um eine portable Version zu erstellen.

All dies hat einige Konsequenzen, insbesondere wurde der Code gr��er und gr��er, eine konstante Monster-Anpassung (ich merke, wie das "sendmail"-Syndrom am Horizont erscheint, und das ist nicht gut f�r eine Anwendung, die der Verschl�sselung gewidmet ist und welche besonders rigoros sein sollte).

Neben dem reinen und lesbaren Code st�ren mich zwei Punkte besonders:

Nach meiner Meinung (und ich bin da nicht allein), sollte ein Mehr-Plattform-Verschl�sselungsprodukt ein bewiesenes, bestimmtes und konstantes Verhalten aufweisen, unabh�ngig von der Plattform und die speziellen Eigenschaften der Plattform und deren Entwicklung in Betracht ziehen (ausgleichen).

Nachdem wir dies gesagt haben, m�ssen wir zugeben, dass die Implementationen der Wettbewerber weder zahlreich noch besonders attraktiv sind. Ich glaube, dass es pragmatischer ist, zu erw�gen, dass OpenSSH die schlimmste Implementation ist, wenn man alle anderen ausschlie�t ...! Es w�re ein n�tzliches Projekt f�r die Gemeinschaft, den Code neu zu gestalten und zu schreiben.

Schlechte Neuigkeiten ...

SSH bewirkt keine Wunder! Es tut das gut, wof�r es geschaffen wurde, aber nach mehr d�rfen Sie nicht fragen. Insbesondere wird es keine "berechtigten" Verbindungen verhindern: Wenn ein Konto kompromittiert ist, ist es f�r den Eindringling m�glich, sich selbst mittels SSH mit Ihrem Computer zu verbinden, auch wenn es der einzige Weg ist, denn er kontrolliert die Authentifizierung. Sie k�nnen sich auf SSH nur dann vollst�ndig verlassen, wenn es verbunden ist mit einer geeigneten und koh�renten Sicherheitspolitik: Wenn jemand nur ein Passwort benutzt und nicht �berall SSH benutzt, ist das potentielle Risiko nur leicht vermindert. In dieser Situation kann SSH "fehlschlagen", da der Eindringling eine gesicherte verschl�sselte Verbindung mit Tunnelung nutzen kann, kann er wahrscheinlich alles tun, was er m�chte, ohne die M�glichkeit einer effektiven Verfolgung durch Sie.

In dem gleichen Sinne mu� man auch gut gemachte "rootkits" ber�cksichtigen, die generell einen SSH-D�mon enthalten, um eine diskrete R�ckkehr in Ihr System zu erm�glichen, aber mit einigen Modifizierungen: er lauscht nat�rlich nicht auf Port 22, stoppt das Logging, ist nach einem gew�hnlichen D�mon benannt (z. B. httpd), und auch unsichtbar f�r einen "ps"-Befehl (der sicherlich auch durch das Rootkit ver�ndert wurde).

Andererseits sollte man nicht zu sehr �ber die Gefahr besorgt sein, die ein SSH-D�mon darstellen kann, der es Eindringlingen erm�glicht, noch mehr verdeckt zu unternehmen: Sie wissen (so hoffe ich), dass es m�glich ist, in IP alles in alles einzupacken, einschlie�lich "Fehldarstellung" der grundlegenden Protokolle �ber eine Firewall: HTML-Tunnelung, ICMP-Tunnelung, DNS-Tunnelung, .... Wenn Sie ein 100 % sicheres System haben m�chten, m�ssen Sie Ihren Computer ausgeschaltet lassen ;-).g

SSH ist nicht frei von Sicherheits-"Schlupfl�chern", die aus der Implementation abgeleitet wurden (viele wurden in der Vergangenheit korrigiert, da es kein perfektes Programm gibt), aber auch auf der Protokoll-Ebene. Diese "Schlupfl�cher", obwohl sie als sehr alarmierend angek�ndigt wurden, betreffen h�ufig Schwachstellen, die schwierig auszunutzen sind, weil sie technisch sehr komplex sind: Man mu� im Kopf behalten, dass die Sicherheitszwischenf�lle, die durch die Benutzung von SSH vermieden werden, t�glich auftreten, andererseits diejenigen, die auf Schwachstellen von SSH beruhen, oft theoretischer Natur sind. Es ist interessant, die Studie zu lesen, die sich mit "man in the middle"-Attacken befasst: http://www.hsc.fr/ressources/presentations/mitm/index.html. Nichtsdestoweniger ist es n�tig, diese m�glichen Verletzlichkeiten f�r "Hoch-Sicherheits"-Anwendungen {Finanzen, Milit�r, ...} in Rechnung zu stellen, wo die vom Cracker benutzten Mittel erheblich sein k�nnen, wenn er hochmotiviert wegen der Ziele und des Profits angreift.

Ich weise oft auf eine unverst�ndliche Schw�che im Protokoll hin, die das Auff�llen betrifft (als verdeckter Kanal bekannt): In beiden Versionen 1 und 2 haben die Pakete eine L�nge, die ein Mehrfaches von 64 Bit ist, und werden mit einer Zufallszahl aufgef�llt. Dies ist recht ungew�hnlich und bringt einen klassischen Fehler zum Vorschein, der in Verschl�sselungsprodukten sehr bekannt ist: ein "versteckter" oder ("unterbewusster") Kanal. Normalerweise f�llt man mit einer verifizierten Sequenz auf, z. B. der Wert n f�r den Byterang n (selbstbeschreibendes Auff�llen). Da in SSH die Sequenz (per Definition) zuf�llig wird, kann sie nicht gepr�ft werden. Daher ist es m�glich, dass eine der kommunizierenden Parteien die Kommunikation komprimittieren kann, die von einer dritten Partei abgeh�rt wird. Man kann sich auch eine fehlerhafte Implementierung vorstellen, die beiden Parteien unbekannt ist (leicht zu realisieren bei Produkten, wo nur die Bin�rprogramme geliefert werden, wie es generell bei kommerziellen Produkten �blich ist). Dies kann leicht getan werden und in diesem Fall muss man nur Client oder Server "infizieren". Solch einen unglaublichen Fehler im Protokoll zu lassen, obwohl es universell bekannt ist, dass die Installation eines versteckten Kanals in einem Verschl�sselungsprodukt DER klassische und einfachste Weg ist, die Kommunikation zu korrumpieren, scheint mir unglaublich. Es mag interessant sein, Bruce Schneiers Bemerkungen zu lesen, die die Implementation solcher Elemente in von Regierungs-Agenturen beeinflu�ten Produkten betreffen (http://www.counterpane.com/crypto-gram-9902.html#backdoors).

Ich beende diesen Punkt mit dem letzten Fehler, den ich w�hrend der Portierung von SSH nach SSF (franz�sische Version von SSH) fand, der sich in der Kodierung der Unix-Versionen vor 1.2.25 findet. Die Konsequenz war, dass der Zufallsgenerator ... vorhersagbare ... Ergebnisse produzierte (diese Situation ist in einem kryptographischen Produkt bedauerlich; ich werde nicht in die Einzelheiten gehen, aber man kann die Kommunikation durch einfaches Abh�ren kompromittieren). Zu der Zeit hatte das SSH-Entwicklungsteam den Fehler korrigiert (es war nur eine Zeile zu �ndern), allerdings ohne irgendeine Warnung zu versenden, noch nichtmals eine Erw�hung im "changelog" des Produktes ... Wenn mann nicht will, dass dies bekannt wird, h�tte man nicht anders gehandelt. Nat�rlich besteht keine Verbindung zu dem Link zum obigen Artikel.

Schlu�folgerung

Ich wiederhole, was ich in der Einf�hrung geschrieben habe: SSH, kein Produkt bewirkt Wunder noch l�st es alle Sicherheitsprobleme, aber es erm�glicht es, die schw�chsten Aspekte der historischen interaktiven Verbindungsprogramme (telnet, rsh, ...) effizient zu behandeln.

Bibliographie, wesentliche Links

Die folgenden zwei B�cher behandeln SSH Version 1 und SSH Version 2:

Und wenn Sie etwas Geld ausgeben m�chten, k�nnen sie hier anfangen ...:

Ausnutzung des verdeckten Kanals (verursacht durch das zuf�llige Auff�llen in SSHv1)

Hier ist eine M�glichkeit, den verdeckten (unterbewu�ten) Kanal auszunutzen, der durch das zuf�llige Auff�llen in SSHv1 (und v2) m�glich ist. Ich lehne jede Verantwortung f�r Herzattacken ab, die die ganz Paranoiden treffen k�nnten.

Die SSHv1-Pakete haben folgende Struktur:

Offset

(Bytes)

Name

L�nge

(Bytes)

Beschreibung

0

Gr��e

4

Paketgr��e, Feldgr��e ohne Auff�llung, daher:

Gr��e = L�nge(Typ)+L�nge(Daten)+L�nge(CRC)

4

Auff�llung

p =1 bis 8

zuf�lliges Auff�llen : Gr��e so angepasst, dass der verschl�sselte Teil ein Vielfaches von acht ist

4+p

Typ

1

Paket-Typ

5+p

Daten

n (variablel>= 0)

 

5+p+n

Pr�fsumme

4

CRC32

Nur ein Feld ist nicht verschl�sselt: die "Gr��e". Die Gr��e des verschl�sselten Teils ist immer ein Vielfaches von acht, angepasst durch "Auff�llen". Das Auff�llen wird immer vorgenommen, wenn die L�nge der drei letzten Felder bereits ein Vielfaches von acht ist, wird das Aufgef�llte 8 Bytes lang sein (5+p+n Rest 0 modulo 8). Man betrachte die Verschl�sselungsfunktion C, symmetrisch, im CBC-Modus genutzt und die Entschl�sselungsfunktion C-1. Um diese Demonstration zu vereinfachen, nehmen wir nur die Pakete mit 8-Byte-Auff�llung. Wenn eines der Pakete ankommt, nehmen wir einen Wert von C-1(M), 8 Bytes in diesem Fall, anstatt mit einer Zufallszahl aufzuf�llen. Dies bedeutet die Entschl�sselung einer Nachricht M mit der Funktion C , die zur Verschl�sselung des Kanals benutzt wurde (die Tatsache, das M "entschl�sselt" wird, ohne vorher verschl�sselt worden zu sein, hat aus einer streng mathematischen Betrachtungsweise keine Wichtigkeit, ich gehe hier nicht auf die Einzelheiten der praktischen Implementation ein). Als n�chstes f�hren wir die normale Verarbeitung des Paketes durch, d.h. die Verschl�sselung von Bl�cken mit 8 Bytes.

Das wird das Ergebnis sein:

Offset

Inhalt

Hinweise

0

L�nge

4 nicht verschl�sselte Bytes

4

8 Bytes Auff�llung (verschl�sselt)

daher C(C-1(M))

12... Ende

Typ, Daten, CRC

 

Was ist hier erstaunlich? Der erste verschl�sselte Block enth�lt C(C-1(M)). Da C eine symmetrische Verschl�sselungsfunktion ist, gilt C(C-1(M)) = M. Dieser erste Block wird entschl�sselt in einem verschl�sselten Datenstrom gesendet! Das bedeutet nur, dass jemand, der Kenntnis von dieser Liste hat und die Kommunikation belauscht, auch weiss, wie er diese Information ausnutzen kann. Nat�rlich kann man annehmen, dass die Nachricht M selbst verschl�sselt ist (z.B. gegen einen �ffentlichen Schl�ssel, womit vermieden wird, ein Geheimnis in den pervertierten Code einzuf�gen), was immer noch die Entschl�sselung durch jemanden verhindert, der nicht informiert ist.

So ben�tigt es z.B. drei Pakete diesen Typs, um den triple-DES(168 bit)-Sitzungsschl�ssel durchzureichen, wonach der Datenfluss-Sniffer die gesamte Kommunikation entschl�sseln kann. Wenn der Schl�ssel gesendet wird, ist es nicht l�nger n�tig, das pervertierte Auff�llen "vorzuentschl�sseln", es ist m�glich, Auff�llungen beliebiger Gr��e zu nehmen, wenn man noch mehr Informationen hinzuf�gen m�chte.

Die Benutzung dieses verdeckten Kanals ist absolut nicht zu erkennen! Man muss vorsichtig sein, jedes Element der Nachricht wie eben erl�utert zu verschl�sseln, damit die Entropie des Blocks nicht die List verr�t. Unentdeckbar, da das Auff�llen zuf�llig geschieht, was m�gliche Validierungs-Tests eliminiert. Zuf�lliges Auff�llen sollte niemals in kryptographischen Produkten angewandt werden.

Was diesen Kanal noch gef�hrlicher macht als andere im Protokoll, wird eingef�hrt durch Nachrichten wie SSH_MSG_IGNORE, wo Sie es nutzen k�nnen, ohne den Verschl�sselungs-Schl�ssel zu kennen.

Um die perversen Effekte des zuf�lligen Auff�llens zu vermeiden, muss man im Protokoll nur die Benutzung des deterministischen Auff�llens definieren, allgemein als "selbstbeschreibendes Auff�llen" bezeichnet, was bedeutet, dass das Byte an Offset n auch n enth�lt. Zuf�lliges Auff�llen ist in SSH v2 noch verblieben, es ist eine M�glichkeit, so denken Sie daran ...

Zum Schluss m�chte ich sagen, wenn ich den verdeckten Kanal kritisiere, dann deshalb, weil ich m�chte, dass ein Produkt wie SSH, das von sich hohe Sicherheit behauptet, auch wirklich ein Maximum an Sicherheit bietet. Nun k�nnen Sie sich vorstellen, dass in vielen kommerziellen Produkten potentielle M�glichkeiten zur Manipulation existieren: nur quelloffene Produkte bieten die L�sung der prim�ren Anforderung, die M�glichkeit zur Pr�fung des Codes (selbst wenn die Pr�fung oft noch durchgef�hrt werden muss).