Histoire du projet et crédits
OpenSSH dérive de la version originale libre 1.2.12 de ssh écrite par
Tatu Ylönen. Cette version fut la dernière à être suffisamment libre
pour être réutilisable par notre projet. Des parties d'OpenSSH sont
encore sous la licence de Tatu qui était contenue dans cette version.
Cette version, ainsi que les précédentes, utilisait des fonctions
mathématiques de la bibliothèques libgmp. Cette bibliothèque était aussi
inclue avec les versions précédentes de ssh. La bibliothèque libgmp est
disponible sous licence LGPL (Lesser GNU Public License), bien que les
versions de l'époque étaient sous la licence GPL (GNU Public License)
classique.
Une licence combinée pour tous ces morceaux est disponible à l'adresse
http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/LICENCE.
Rapidement après la sortie de la 1.2.12, les versions suivantes ont été
mises sous des licences de plus en plus restrictives, même si la libgmp
était encore inclue et nécessaire pour utiliser le logiciel. Les
premières licences restrictives interdisaient aux gens de faire une
version Windows ou DOS. Les suivantes restreignaient l'utilisation de
ssh dans un environnement commercial, obligeant les entreprises à
acheter une version onéreuse chez Datafellows.
Début 1999, Björn Grönvall redécouvrit cette version particulière et
commença à réparer des bogues. Sa version de ssh s'appelle OSSH et ne supportait
que le protocole SSH 1.3. On raconte que OSSH a été intégré dans des
produits commerciaux en Suède. Au jour d'aujourd'hui, OSSH ne supporte
toujours pas le protocole SSH 2.
Les membres du projet OpenBSD ont eu connaissance du travail de Björn moins
de deux mois avant la sortie de la
version 2.6 d'OpenBSD. Nous voulions inclure le support du protocole
SSH dans la version 2.6 d'OpenBSD mais nous voulions être sûrs que cela
serait parfait. En conséquence, nous avons décidé de nous séparer de la
version OSSH et de poursuivre un développement rapide, de la même façon
que le processus originel d'audit de sécurité d'OpenBSD.
Ainsi, au moment de la sortie, de nombreux fichiers source en étaient
déjà à la version RCS 1.34, et même pour certains à la version 1.66. Le
développement a en effet été très rapide, puisque nous avions une
échéance à respecter.
Les personnes suivantes ont participé au développement :
- Theo de Raadt (CANADA) a commencé par supprimer les bouts non
portables qui rendaient le code plus difficile à lire (le but étant
un code source plus simple, afin de détecter plus facilement les
trous de sécurité et autres problèmes).
- Niels Provos (ALLEMAGNE mais vivant aux États-Unis d'Amérique)
supprima rapidement les composants cryptographiques, ainsi que ceux
sous licence GPL, en faisant des allers-retours au Canada, de façon
à ce que nous puissions aboutir à un code source de base
complètement réutilisable librement.
- Markus Friedl (ALLEMAGNE) s'est joint au projet et a très rapidement
réussi à remplacer le code du protocole SSH 1.3 venant de la version
1.2.12 avec une mise en oeuvre du protocole SSH 1.5 compatible avec
les séries modernes "ssh 1.2.27" (cette modification était
nécessaire pour s'interopérer avec de nombreux clients Windows
compatibles SSH qui n'avaient pas le support du protocole SSH 1.3).
Son implémentation est désormais utilisée dans OSSH. Il ajouta le
support du protocole SSH 1.5 de telle façon que le support du
protocole SSH 1.3 demeure opérationnelle. Plus tard, il ajouta aussi
le support pour le protocole SSH 2 et SFTP.
- Bob Beck (CANADA) assura, grâce à de la magie Makefile, que nous
pouvions compiler OpenSSL sans algorithmes brevetés; puisque
OpenBSD 2.6 sortait avant la date d'expiration du brevet RSA, nous
devions placer sur notre CD des bibliothèques partagées libssl et
libcrypto sans le support de RSA. Au moment de l'installation,
l'utilisateur pouvait remplacer ces bibliothèques par téléchargement
en FTP/HTTP sur Internet. Par chance, ce genre d'astuce n'est plus
nécessaire.
- Aaron Campbell (CANADA) a amélioré de nombreuses faiblesses dans la
documentation et quelques autres problèmes de code. C'est
principalement grâce à lui que les pages de manuel sont si
complètes.
- Dug Song (États-Unis d'Amérique) a aidé à résoudre des problèmes
d'authentification dans le cas de KerberosIV (ses modifications ont
été vérifiées avec attention, pour s'assurer qu'elles ne
concernaient que des problèmes d'authentification et pas de
cryptographie).
Ainsi, la version d'OpenSSH était basée sur la version ssh 1.2.12, mais
avec de nombreux bogues supprimés et de nouvelles fonctionnalités
réintroduites:
- Tous les composants de nature restrictive (i.e les brevets,
voir
ssl)
ont été directement supprimés du code source; tout composant sous
licence restrictive ou sous le coup d'un brevet provenait de
bibliothèques extérieures (par exemple,
OpenSSL).
- Contient le support de l'authentification
KerberosIV
et la transmission de tickets.
- Supporte l'authentification par mot de passe à validité unique avec
skey.
- Et de centaines d'autres modifications que les gens peuvent observer
dans les nouvelles pages de manuel, ainsi que dans les modifications
du code source.
Cette version sortit sous le nom d'OpenSSH 1.2.2 et fut fournie avec
OpenBSD 2.6, le premier décembre 1999. À cette époque, la plupart du
développement d'OpenSSH avait été réalisé par Aaron Campbell, Bob Beck,
Markus Friedl, Niels Provos, Theo de Raadt et Dug Song. Nous remercions
les nombreuses personnes qui ont trouvé des bogues et nous les ont
rapportés.
Portage d'OpenSSH
Presque immédiatement après que nous ayons mis en oeuvre notre implémentation
du protocole 1, divers groupes non-OpenBSD ont été très, très
intéressés. Damien Miller, Philip Hands et beaucoup d'autres ont
commencé à porter OpenSSH sur Linux et d'autres systèmes d'exploitation
Unix. Depuis le début de notre propre effort, nous avions trouvé que
même le code originel de ssh était trop compliqué, il avait tout
simplement trop de dépendances à gérer par rapport au système
d'exploitation. Notre approche qui consiste à écrire du code
complètement sûr et très fiable évite de se préoccuper de différences
excessives comme celles-la. Ainsi, pour rendre le processus de développement
plus facile pour tous, nous avons décidé de séparer nos efforts de
développement sur le noyau dur et ceux concernant la portabilité. Cela a
très bien marché pour nous (pour vous faire une idée, comparez le nombre
de lignes de code des versions de base et portable).
Support du protocole SSH 2
Après la sortie d'OpenBSD 2.6, Markus Friedl décida de poursuivre le
support du protocole SSH 2. Travaillant
d'arrache-pied durant des mois, il a réussi à garder OpenSSH léger, tout
en en faisant un logiciel capable de supporter à la fois les protocoles
SSH 1 et 2. Cette version, appelée OpenSSH 2.0, fut distribuée dans
OpenBSD 2.7, le 15 Juin 2000. La plupart des vérifications des
modifications de Markus ont été faites par Niels Provos et Theo de
Raadt. Bob Beck peut être remercié pour avoir mis à jour OpenSSL à une
version plus récente.
Support de SFTP
Le support côté serveur du sous-protocole SFTP a été écrit par Markus
Friedl et publié dans la version 2.3.0, en novembre 2000. Peu de temps
après, Damien Miller a commencé à travailler sur un client sftp, qui a
été publié dans la 2.5.0.
Tester les versions des serveurs SSH
Pour faciliter le contrôle des serveurs SSH déployés, par exemple pour
une entreprise, Niels Provos a écrit l'outil
scanssh.
scanssh cherche parmi une liste d'adresses et de réseaux des serveurs
SSH et leurs numéros de version. Il supporte la sélection aléatoire
d'adresses IP parmi une large plage d'adresses et est utile pour
rassembler des statistiques sur l'utilisation de serveurs SSH dans une
entreprise ou sur tout Internet. Les statistiques incluent le protocole
SSH supporté et les versions logicielles utilisées.
scanssh est utilisé pour rassembler des statistiques sur le déploiement et
l'utilisation du protocole SSH sur Internet. Ces chiffres offrent des
éclaircissements sur le distribution des différents protocoles SSH et la
part de marché d'une version donnée de serveur.
SSH : Finalement complètement
libre.
www@openbsd.org
$OpenBSD: history.html,v 1.17 2012/06/26 05:27:10 ajacoutot Exp $