Projektgeschichte und
Danksagungen
OpenSSH ist ein Derivat der originalen und freien ssh-Version 1.2.12
von Tatu Ylönen. Das war die letzte Version, die frei genug war, um von
unserem Projekt benutzt werden zu können. Teile von OpenSSH tragen nach
wie vor Tatus Lizenz, die in dieser Version beinhaltet war. Diese
Version und auch frühere Versionen benutzen mathematische Funktionen aus
der libgmp-Bibliothek, die auch in frühen ssh-Versionen enthalten war.
Die libgmp-Bibliothek unterliegt der Lesser GNU Public Licence (LGPL)
obwohl Versionen dieser Ära der regulären GNU Public Licence (GPL)
unterlagen.
Eine kombinierte Lizenz für alle Teile befindet sich unter
http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/LICENCE.
Schnell nach der Veröffentlichung der Version 1.2.12 hatten darauf
folgende Versionen immer restriktivere Lizenzen, obwohl libgmp noch
immer darin enthalten und notwendig war, um die Software zu benutzen.
Frühe restriktive Versionen verboten den Leuten, Windows- oder
DOS-Versionen zu erzeugen. Spätere Versionen beschränkten ssh bei einer
Benutzung in einer kommerziellen Umgebung und zwangen Firmen dadurch,
teure Versionen von Datafellows zu kaufen.
Früh im Jahre 1999 entdeckte Björn Grönvall diese spezielle Version
wieder und begann, darin Fehler zu beheben. Seine Version von ssh heißt
OSSH und hat nur
Unterstützung für das Protokoll 1.3. Gerüchten zufolge wurde OSSH in
kommerzielle Produkte in Schweden eingebaut. Bis heute hat OSSH keine
Unterstützung für Protokoll 2.
Die OpenBSD-Projektmitglieder wurden erst weniger als zwei Monate vor
dem Erscheinen von
OpenBSD-Release 2.6 auf
Björns Arbeit aufmerksam. Wir wollten Unterstützung für ssh in unsere
Version 2.6 integrieren, aber wir mussten sicherstellen, dass es einfach
perfekt war. Daher haben wir uns sofort für einen Fork der OSSH-Version
entschieden - also eine Abspaltung davon - und verfolgten eine ebenso
gründliche und schnelle Entwicklung, wie es bei den
OpenBSD-Sicherheitsuntersuchungen der Fall war. Als Ergebnis davon
hatten zum Zeitpunkt der Veröffentlichung viele ssh-Quelltextdateien
bereits RCS-Version 1.34, einige sogar schon 1.66. Die Entwicklung ist
wirklich sehr schnell vorangegangen, da wir auch eine Frist einzuhalten
hatten.
Die folgenden Teammitglieder haben teilgenommen:
- Theo de Raadt (KANADA) fing damit an, Nichtübertragbarkeiten zu
entfernen, die den Quelltext schwerer lesbar machten - das Ziel war
einfacherer Quelltext, sodass Sicherheitslücken und andere Punkte
leichter entdeckt werden konnten.
- Niels Provos (DEUTSCHLAND, aber lebt in den USA) hat schnell die
verbleibenden kryptographischen und GPL-Lizenzkomponenten entfernt,
indem er immer mit dem Auto nach Kanada gefahren ist, damit wir mit
einer komplett frei nutzbaren Quelltextbasis starten konnten.
- Markus Friedl (DEUTSCHLAND) kam dazu und war sehr schnell in der
Lage, den SSH-1.3-Protokollquelltext von der Version 1.2.12 mit einer
SSH-1.5-Protokollimplementation zu ersetzen, die kompatibel mit den
modernen ssh-1.2.27-Serien war (diese Änderung war notwendig, um mit
einer Menge SSH-kompatibler Windows-Clients interoperieren zu
können, denen die Unterstützung für das SSH-1.3-Protokoll fehlte).
Seine Implementation wird jetzt in OSSH benutzt. Er fügte die
SSH-1.5-Protokollunterstützung so hinzu, dass das SSH-1.3-Protokoll
weiterhin genutzt werden konnte. Später fügte er Unterstützung für
die SSH-Protokollversion 2 und SFTP hinzu.
- Bob Beck (KANADA) hat mit Makefile-Magie geholfen sicherzustellen,
dass wir OpenSSL ohne patentierte Algorithmen übersetzen konnten; da
OpenBSD 2.6 ausgeliefert wurde, bevor das RSA-Patent ablief, mussten
wir unsere CD mit libssl- und libcrypto-Bibliotheken ausliefern, denen
die RSA-Unterstützung fehlte. Bei der Installation konnte der Anwender
diese aber per FTP/HTTP über das Internet ersetzen. Glücklicherweise
ist diese Art von Hack nicht mehr notwendig.
- Aaron Campbell (KANADA) verbesserte zahllose Dokumentationsfehler
und ein paar andere Quelltextprobleme. Es ist größerenteils sein
Verdienst, dass die Handbuchseiten so vollständig sind.
- Dug Song (USA) hat mit ein paar Authentifikationsproblemen bei
KerberosIV geholfen (seine Änderungen wurden sorgfältig geprüft, um
sicherzustellen, dass keine kryptographischen Änderungen gemacht
wurden, sondern nur die Authentifikation berührt wurde).
Daher basiert OpenSSH auf diesen älteren Versionen von ssh 1.2.12, aber
mit mehr beseitigten Fehlern und neueren zusätzlichen Funktionalitäten:
- alle Komponenten restriktiver Natur (z. B. Patente, siehe ssl)
wurden aus dem Quelltext entfernt; jegliche lizenzierten oder
patentierten Komponenten werden aus externen Bibliotheken genutzt.
(z. B. OpenSSL)
- beinhaltet zusätzliche Unterstützung für KerberosIV-Authentifizierung
und Ticketpassing.
- unterstützt Einmal-Passwort-Authentifizierung mit skey.
- und hunderte weiterer Änderungen, die die Leute in den Handbuchseiten
und im Quelltext selbst finden können.
Das markierte die OpenSSH-Version 1.2.2, die mit OpenBSD 2.6 seit dem
1. Dezember 1999 ausgeliefert wurde. Zu dieser Zeit wurde die meiste
OpenSSH-Entwicklung von Aaron Campbell, Bob Beck, Markus Friedl,
Niels Provos, Theo de Raadt und Dug Song gemacht. Wir danken allen
Leuten, die Fehler gefunden und gemeldet haben.
OpenSSH portieren
Fast sofort nachdem wir unsere Protokoll-1-Implementation veröffentlicht
hatten, zeigten verschiedene Gruppen außerhalb von OpenBSD sehr,
sehr großes Interesse daran. Damien Miller, Philip Hands und eine handvoll
Anderer fingen an, OpenSSH auf Linux und verschiedene andere
Unix-Betriebssysteme zu portieren. Von Anfang an unserer Bemühungen
hatten wir das Gefühl, dass der originale Code von ssh zu kompliziert
war, er hatte einfach zu viele Betriebssystemabhängigkeiten in sich.
Unser Anspruch, komplett sicheren und absolut stabilen Code zu
schreiben, vermeidet es, sich mit solcherlei Problemen herumzuschlagen.
Um daher den gesamten Entwicklungsprozess für uns alle leichter zu
machen, haben wir uns entschieden, die Kern- von der
Portabilitätsentwicklung zu trennen. Dies hat sich bei uns als sehr gut
herausgestellt (vergleiche doch mal die Anzahl der Codezeilen zwischen
der Basisversion und den portablen Versionen).
SSH-Protokoll-2-Unterstützung
Nach der Veröffentlichung von OpenBSD 2.6 entschied Markus Friedl, dass
die Unterstützung des SSH-2-Protokolls in
Angriff genommen werden sollte. Indem er sich für Monate nur darauf
beschränkte, konnte er OpenSSH schlank und rank halten und es zur
gleichen Zeit in eine Software verwandeln, die sowohl das
SSH-1-Protokoll als auch SSH-2-Protokoll benutzen kann. Diese Version
- genannt OpenSSH 2.0 - wurde mit OpenBSD 2.7 am 15. Juni 2000
veröffentlicht. Die meisten Überprüfungen von Markus' Änderungen wurden
von Niels Provos und Theo de Raadt gemacht. Bob Beck wird dafür
gedankt, OpenSSL auf eine neuere Version gebracht zu haben.
SFTP-Unterstützung
Unterstützung für die Serverseite des SFTP-Unterprotokolls wurde von
Markus Friedl geschrieben und in der Version 2.3.0 im November 2000
veröffentlicht. Bald danach startete Damien Miller mit der Arbeit an
einem sftp-Client, der zum ersten Mal in Version 2.5.0 herausgebracht
wurde.
SSH-Serverversionen scannen
Um die Überwachung der verwendeten SSH-Server zu erleichtern (z. B.
in einem Firmennetzwerk) hat Niels Provos das
scanssh-Tool
geschrieben. scanssh prüft eine Liste von Adressen und Netzwerken auf
die Verwendung von SSH-Servern und ihrer Versionsnummern hin. Es
unterstützt die zufällige Auswahl von IP-Adressen innerhalb großer
Netzwerkbereiche und ist einfach nützlich, um Statistiken über die
Verwendung von SSH-Servern in einer Firma oder dem Internet an sich
zu erhalten. Die Statistiken enthalten sowohl die unterstützten
SSH-Protokolle als auch die benutzten Softwareversionen.
scanssh wird benutzt, um die
Statistiken über die Verbreitung
und Benutzung der SSH-Protokolle im Internet zu erhalten. Die Messungen
erlauben Einblicke in die Verbreitung der verschiedenen SSH-Protokolle
und der Marktdurchdringung bestimmter Serverversionen.
SSH: Letztlich sogar komplett
frei.
www@openbsd.org
$OpenBSD: history.html,v 1.40 2012/01/31 23:04:08 ajacoutot Exp $