|
| Terms & Definitions
There are lots of overlapping ideas and terms in SSH, complicated by
differing usage among various implementations. For definiteness, we use
the following terms. You may disagree with our choices, but you didn't
have to write a 500-page book talking about all this stuff and try to
avoid confusion.
- SCS -- SSH Communications
Security, Inc. Founded by Tatu Ylönen, the inventor of SSH, who
now serves as the company's CTO.
- SSH-1 -- version 1 of the SSH protocol, as documented in the
early draft RFC written by Tatu
Ylönen and distributed with SCS's SSH-1 implementation. Generally
means either versions 1.3 or 1.5.
- SSH-2 -- version 2 of the SSH protocol, as documented in the
draft standards produced by the
SECSH working group of the IETF. Has superceded SSH-1, but the latter
remains in common use due to historical licensing restrictions on the use
of available SSH-2 implementations.
- SSH1 -- The SSH-1 implementation from SCS, based on the
original SSH by Tatu Ylönen before he founded SCS to commercialize
his work. Still distributed and maintained by SCS, though not actively
developed (bug fixes only).
- SSH2 -- The SSH-2 implementation from SCS. Written entirely
from scratch and not based on the SSH1 code. SSH-2 is a commercial
product, but is available free for use by qualifying government,
educational, and non-profit entities, as well as by independent
contractors working for such entities. It is also freely usable on
several free OS's (e.g. Linux, OpenBSD, NetBSD, FreeBSD) in any context,
including commercial ones. See SCS's licensing terms for details.
- OpenSSH -- A free SSH
implementation sponsored by the OpenBSD
Project. Early versions of Ylönen's SSH1 bore free usage terms;
OpenSSH was based on the last such, but has evolved significantly since
then. OpenSSH supports both SSH-1 and SSH-2 in a single set of programs,
rather than the split package compatibility approached used by SSH2. The
SSH-2 support is incomplete at the moment, but development is rapid and
that probably won't be true for much longer. OpenSSH is to a large extent
the work of Markus Friedl.
- OpenSSH/1 -- OpenSSH, when referring specifically to its SSH-1
support and behavior.
- OpenSSH/2 -- OpenSSH, when referring specifically to its SSH-2
support and behavior.
- trusted-host authentication -- The general idea of user
authentication by having the server trust the client OS's authentication
of the requesting user. Thus, we replace authentication of the requesting
user with authentication of the client host. The traditional method used
by the Berkeley r-commands (rsh, rlogin, etc.) is weak
trusted-host authentication: the client host is identified merely
using its IP address and the naming server (DNS, NIS,
/etc/hosts, etc.). SSH-1 supports this method ("Rhosts") for
backward compatibility, as well as a stronger version called "RhostsRSA",
which authenticates the client host cryptographically using its SSH host
key. The SSH-2 protocol supports this style as well, called "hostbased"
authentication. It does not support weak trusted-host authentication, on
security grounds.
- man-in-the-middle attack -- an attack on
a protocol in which Attila the attacker controls the communications
channel between legitimate speakers Ted and Alice, and can delete or
insert messages at will. Attila intercepts all protocol messages,
masquerading as Ted to Alice, and as Alice to Ted. Ted and Alice each
believe they are negotiating encryption keys with the other, but in fact
they are both negotiating them with Attila instead. Once the session is
established, Attila receives messages, decrypts them, re-encrypts them
with the other side's key, and sends them along.
|