Attached below follows a proposal for a new authentication method for
SSH2. This new method implements general challenge-response
authentication.
Some background might be in order: the company where I work "Firedoor
Network Security AB" sells a security product (Firedoor) which uses ssh
rather heavily. We currently have installations which run ssh1 and use
securid token authentication and we want to keep those customers when
we upgrade to ssh2, we would also like to use some other authentication
methods.
But nobody has added securid authentication to ssh2. Therefore we
realized that we had to do it ourselves:-) This is the first result, a
draft for a new authentication method. I am including it here to get
some feedback. We are going to implement it if nobody raises any big
objections. The code will the be free for everybody to use. The idea is
then to get SSH Communications OY and DataFellows to merge these
changes into their master versions. We would also like all other ssh2
projects to support it.
This protocol is written so that the client should not need to neither
know nor care about which challenge-response method the user really
uses. The most important issue is to get the generic support into the
clients since it is so much easier to modify a handful of servers that
hunderds of clients (the server must of course know the details of the
underlying authentication method).
I am not sure if the working group should release this as a draft or
what should be done with it. I am open to suggestions.
/MaF
not yet an I-D M. Forssen
draft-ietf-secsh-chrespauth-00.txt Firedoor Network Security AB
4 February 1999
Challenge-response authentication method for the SSH protocol
Abstract
SSH is a protocol for secure remote login and other secure network
services over an insecure network. This document describes a general
purpose challenge-response authentication method for the SSH
protocol.
Introduction
The SSH authentication protocol is a general-purpose user
authentication protocol. It is intended to be run over the SSH
transport layer protocol [SSH-TRANS]. The protocol assumes that the
underlying protocols provide integrity and confidentiality
protection.
This document describes a new challenge-response authentication
method for the SSH authentication protocol. The method documented
here is a general purpose challenge-response authentication method
which can be used to support many different authentication methods,
for example SecurID and RADIUS. The rationale for a general purpose
protocol is that it is important to get support for this kind of
protocol into all clients and that it is much easier to add
specialized support for special authentication protocols in the
servers.
The method name for this authentication method is "challenge-
response".
This document should be read only after reading the SSH architecture
document [SSH-ARCH] and the SSH authentication document [SSH-
USERAUTH]. This document freely uses terminology and notation from
both documents without reference or further explanation.
Challenge-response Authentication Method
This method permits interaction between the server and the client
during the authentication phase. The server may ask questions which
the client should answer. The authentication begins with the client
sending a SSH_MSG_USERAUTH_REQUEST message.
M. Forssen [Page 1]
not yet an I-D SSH Challenge-response authentication 4 February 1999
byte SSH_MSG_USERAUTH_REQUEST
string user name
string service
string "challenge-response"
boolean FALSE
string method name
string response string (ISO-10646 UTF-8)
The method name is an optional name of a specific challenge-response
method, the client MAY leave this field empty. The server MAY ignore
this value if it can infer from other data which challenge-response
method is used. One way that can be inferred is when the server only
supports one challenge-response method. The method name must be the same
in all messages until the client receives a success or failure response.
Note that the response string is encoded in ISO-10646 UTF-8. The response
string contains the reply from the user to the last challenge received
from the server. Since the client initiates the authentication session
there is no challenge from the server when the first packet is sent. The
response string may in this case be left empty or filled in with what the
client thinks the server may want first.
The server MUST respond with either SSH_MSG_USERAUTH_SUCCESS,
SSH_MSG_USERAUTH_FAILURE or with a SSH_MSG_USERAUTH_CHALLENGE.
The format of a SSH_MSG_USERAUTH_CHALLENGE is:
byte SSH_MSG_USERAUTH_CHALLENGE
string challenge (ISO-10646 UTF-8)
string language tag (as defined in RFC 1766)
boolean do not echo reply
This reply contains a textual challenge which SHOULD be shown to the user
and the user should be allowed to write a reply. If the "do not echo reply"
field is TRUE then the client should treat the users input as sensitive and
not echo any entered characters (as normally done when passwords are entered).
The client should then reply to this packet with a new
SSH_MSG_USERAUTH_REQUEST with the boolean value set to TRUE to indicate that
this is an actual reply to a challenge.
The following method-specific message numbers are used by the
challenge-response authentication method.
/* Challenge */
#define SSH_MSG_USERAUTH_CHALLENGE 25
Security Considerations
M. Forssen [Page 2]
not yet an I-D SSH Challenge-response authentication 4 February 1999
The purpose of this protocol is to perform client user authentication.
It assumed that this runs over a secure transport layer protocol, which
has already authenticated the server machine, established an encrypted
communications channel, and computed a unique session identifier for
this session. The transport layer provides forward secrecy for password
authentication and other methods that rely on secret data.
The server may go into a "sleep" period after repeated unsuccessful
authentications to make key search harder.
If the transport layer does not provide encryption, authentication
methods that rely on secret data SHOULD be disabled. If it does not
provide MAC protection, requests to change authentication data (e.g.
password change) SHOULD be disabled to avoid an attacker from modifying
the ciphertext without being noticed, rendering the new authentication
data unusable (denial of service).
Several authentication methods with different security characteristics
are allowed. It is up to the server's local policy to decide which
methods (or combinations of methods) it is willing to accept for each
user. Authentication is no stronger than the weakest combination
allowed.
References
[RFC-1766] Alvestrand, H., "Tags for the Identification of Languages",
March 1995.
[RFC-2044] Yergeau, F., "UTF-8, a Transformation Format of Unicode and
ISO 10646", October 1996.
[SSH-ARCH] Ylonen, T., Kivinen, T, and Saarinen, M., "SSH Protocol
Architecture", Internet Draft, draft-secsh-architecture-00.txt
[SSH-TRANS] Ylonen, T., Kivinen, T, and Saarinen, M., "SSH Transport
Layer Protocol", Internet Draft, draft-secsh-transport-02.txt
[SSH-USERAUTH] Ylonen, T., Kivinen, T, and Saarinen, M., "SSH
Authentication Protocol", Internet Draft, draft-ietf-secsh-
userauth-02.txt
[SSH-CONNECT] Ylonen, T., Kivinen, T, and Saarinen, M., "SSH Connection
Protocol", Internet Draft, draft-secsh-connect-02.txt
Author's Address
Martin Forssen
Firedoor Network Security AB
M. Forssen [Page 3]
not yet an I-D SSH Challenge-response authentication 4 February 1999
Stora Badhusgatan 18-20
SE-411 21 Gothenburg
SWEDEN
E-mail: [EMAIL PROTECTED]
M. Forssen [Page 4]