< draft-myers-auth-sasl-11.txt   draft-myers-auth-sasl-12.txt >
Network Working Group J. Myers Network Working Group J. Myers
Internet Draft April 1997 Internet Draft September 1997
Document: draft-myers-auth-sasl-11.txt Document: draft-myers-auth-sasl-12.txt
Simple Authentication and Security Layer (SASL) Simple Authentication and Security Layer (SASL)
Status of this Memo Status of this Memo
This document is an Internet Draft. Internet Drafts are working This document is an Internet Draft. Internet Drafts are working
documents of the Internet Engineering Task Force (IETF), its Areas, documents of the Internet Engineering Task Force (IETF), its Areas,
and its Working Groups. Note that other groups may also distribute and its Working Groups. Note that other groups may also distribute
working documents as Internet Drafts. working documents as Internet Drafts.
skipping to change at page 2, line ? skipping to change at page 2, line ?
1id-abstracts.txt listing contained in the Internet-Drafts Shadow 1id-abstracts.txt listing contained in the Internet-Drafts Shadow
Directories on ds.internic.net, nic.nordu.net, ftp.isi.edu, or Directories on ds.internic.net, nic.nordu.net, ftp.isi.edu, or
munnari.oz.au. munnari.oz.au.
A revised version of this draft document will be submitted to the RFC A revised version of this draft document will be submitted to the RFC
editor as a Proposed Standard for the Internet Community. Discussion editor as a Proposed Standard for the Internet Community. Discussion
and suggestions for improvement are requested. This document will and suggestions for improvement are requested. This document will
expire before December 1996. Distribution of this draft is expire before December 1996. Distribution of this draft is
unlimited. unlimited.
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
1. Abstract 1. Abstract
This document describes a method for adding authentication support to This document describes a method for adding authentication support to
connection-based protocols. To use this specification, a protocol connection-based protocols. To use this specification, a protocol
includes a command for identifying and authenticating a user to a includes a command for identifying and authenticating a user to a
server and for optionally negotiating protection of subsequent server and for optionally negotiating protection of subsequent
protocol interactions. If its use is negotiated, a security layer is protocol interactions. If its use is negotiated, a security layer is
inserted between the protocol and the connection. This document inserted between the protocol and the connection. This document
describes how a protocol specifies such a command, defines several describes how a protocol specifies such a command, defines several
mechanisms for use by the command, and defines the protocol used for mechanisms for use by the command, and defines the protocol used for
carrying a negotiated security layer over the connection. carrying a negotiated security layer over the connection.
2. Organization of this Document 2. Organization of this Document
2.1. How to Read This Document 2.1. How to Read This Document
This document is written to serve two different audiences, protocol This document is written to serve two different audiences, protocol
designers using this specification to support authentication in their designers using this specification to support authentication in their
protocol, and implementors of clients or servers for those protocols protocol, and implementors of clients or servers for those protocols
using this specification. using this specification.
The sections "Introduction and Overview", "Profiling requirements", The sections "Introduction and Overview", "Profiling requirements",
and "Security Considerations" cover issues that protocol designers and "Security Considerations" cover issues that protocol designers
need to understand and address in profiling this specification for need to understand and address in profiling this specification for
use in a specific protocol. use in a specific protocol.
Implementors of a protocol using this specification need the Implementors of a protocol using this specification need the
protocol-specific profiling information in addition to the protocol-specific profiling information in addition to the
information in this document. information in this document.
2.2. Conventions Used in this Document 2.2. Conventions Used in this Document
In examples, "C:" and "S:" indicate lines sent by the client and In examples, "C:" and "S:" indicate lines sent by the client and
server respectively. server respectively.
The following terms are used in this document to signify the The following terms are used in this document to signify the
requirements of this specification. requirements of this specification.
1) MUST, or the adjective REQUIRED, means that the definition is an 1) MUST, or the adjective REQUIRED, means that the definition is an
absolute requirement of the specification. absolute requirement of the specification.
2) MUST NOT that the definition is an absolute prohibition of the 2) MUST NOT that the definition is an absolute prohibition of the
specification. specification.
3) SHOULD means that there may exist valid reasons in particular 3) SHOULD means that there may exist valid reasons in particular
circumstances to ignore a particular item, but the full implications circumstances to ignore a particular item, but the full implications
MUST be understood and carefully weighed before choosing a different MUST be understood and carefully weighed before choosing a different
course. course.
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
4) SHOULD NOT means that there may exist valid reasons in particular 4) SHOULD NOT means that there may exist valid reasons in particular
circumstances when the particular behavior is acceptable or even circumstances when the particular behavior is acceptable or even
useful, but the full implications SHOULD be understood and the case useful, but the full implications SHOULD be understood and the case
carefully weighed before implementing any behavior described with carefully weighed before implementing any behavior described with
this label. this label.
5) MAY, or the adjective OPTIONAL, means that an item is truly 5) MAY, or the adjective OPTIONAL, means that an item is truly
optional. One vendor may choose to include the item because a optional. One vendor may choose to include the item because a
particular marketplace requires it or because the vendor feels that particular marketplace requires it or because the vendor feels that
it enhances the product while another vendor may omit the same item. it enhances the product while another vendor may omit the same item.
An implementation which does not include a particular option MUST be An implementation which does not include a particular option MUST be
prepared to interoperate with another implementation which does prepared to interoperate with another implementation which does
include the option. include the option.
"Can" is used instead of "may" when referring to a possible "Can" is used instead of "may" when referring to a possible
circumstance or situation, as opposed to an optional facility of the circumstance or situation, as opposed to an optional facility of the
protocol. protocol.
2.3. Examples 2.3. Examples
Examples in this document are for the IMAP profile [IMAP4] of this Examples in this document are for the IMAP profile [IMAP4] of this
specification. The base64 encoding of challenges and responses, as specification. The base64 encoding of challenges and responses, as
well as the "+ " preceding the responses are part of the IMAP4 well as the "+ " preceding the responses are part of the IMAP4
profile, not part of the SASL specification itself. profile, not part of the SASL specification itself.
3. Introduction and Overview 3. Introduction and Overview
The Simple Authentication and Security Layer (SASL) is a method for The Simple Authentication and Security Layer (SASL) is a method for
adding authentication support to connection-based protocols. To use adding authentication support to connection-based protocols. To use
this specification, a protocol includes a command for identifying and this specification, a protocol includes a command for identifying and
authenticating a user to a server and for optionally negotiating a authenticating a user to a server and for optionally negotiating a
security layer for subsequent protocol interactions. security layer for subsequent protocol interactions.
The command has a required argument identifying a SASL mechanism. The command has a required argument identifying a SASL mechanism.
SASL mechanisms are named by strings, from 1 to 20 characters in SASL mechanisms are named by strings, from 1 to 20 characters in
length, consisting of upper-case letters, digits, hyphens, and/or length, consisting of upper-case letters, digits, hyphens, and/or
skipping to change at page 4, line 5 skipping to change at page 4, line 5
section "Registration procedures" section "Registration procedures"
If a server supports the requested mechanism, it initiates an If a server supports the requested mechanism, it initiates an
authentication protocol exchange. This consists of a series of authentication protocol exchange. This consists of a series of
server challenges and client responses that are specific to the server challenges and client responses that are specific to the
requested mechanism. The challenges and responses are defined by the requested mechanism. The challenges and responses are defined by the
mechanisms as binary tokens of arbitrary length. The protocol's mechanisms as binary tokens of arbitrary length. The protocol's
profile then specifies how these binary tokens are then encoded for profile then specifies how these binary tokens are then encoded for
transfer over the connection. transfer over the connection.
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
After receiving the authentication command or any client response, a After receiving the authentication command or any client response, a
server may issue a challenge, indicate failure, or indicate server may issue a challenge, indicate failure, or indicate
completion. The protocol's profile specifies how the server completion. The protocol's profile specifies how the server
indicates which of the above it is doing. indicates which of the above it is doing.
After receiving a challenge, a client may issue a response or abort After receiving a challenge, a client may issue a response or abort
the exchange. The protocol's profile specifies how the client the exchange. The protocol's profile specifies how the client
indicates which of the above it is doing. indicates which of the above it is doing.
skipping to change at page 4, line 44 skipping to change at page 4, line 44
effect immediately following the last response of the authentication effect immediately following the last response of the authentication
exchange for data sent by the client and the completion indication exchange for data sent by the client and the completion indication
for data sent by the server. Once the security layer is in effect, for data sent by the server. Once the security layer is in effect,
the protocol stream is processed by the security layer into buffers the protocol stream is processed by the security layer into buffers
of cipher-text. Each buffer is transferred over the connection as a of cipher-text. Each buffer is transferred over the connection as a
stream of octets prepended with a four octet field in network byte stream of octets prepended with a four octet field in network byte
order that represents the length of the following buffer. The length order that represents the length of the following buffer. The length
of the cipher-text buffer must be no larger than the maximum size of the cipher-text buffer must be no larger than the maximum size
that was defined or negotiated by the other side. that was defined or negotiated by the other side.
4. Profiling requirements 4. Profiling requirements
In order to use this specification, a protocol definition must supply In order to use this specification, a protocol definition must supply
the following information: the following information:
1. A service name, to be selected from the IANA registry of "service" 1. A service name, to be selected from the IANA registry of "service"
elements for the GSSAPI host-based service name form. [GSSAPI] elements for the GSSAPI host-based service name form. [GSSAPI]
2. A definition of the command to initiate the authentication 2. A definition of the command to initiate the authentication
protocol exchange. This command must have as a parameter the protocol exchange. This command must have as a parameter the
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
mechanism name being selected by the client. mechanism name being selected by the client.
The command SHOULD have an optional parameter giving an initial The command SHOULD have an optional parameter giving an initial
response. This optional parameter allows the client to avoid a response. This optional parameter allows the client to avoid a
round trip when using a mechanism which is defined to have the round trip when using a mechanism which is defined to have the
client send data first. When this initial response is sent by the client send data first. When this initial response is sent by the
client and the selected mechanism is defined to have the server client and the selected mechanism is defined to have the server
start with an initial challenge, the command fails. See section start with an initial challenge, the command fails. See section
5.1 of this document for further information. 5.1 of this document for further information.
skipping to change at page 5, line 30 skipping to change at page 5, line 30
failure of the exchange, how the client aborts an exchange, and failure of the exchange, how the client aborts an exchange, and
how the exchange method interacts with any line length limits in how the exchange method interacts with any line length limits in
the protocol. the protocol.
4. Identification of the octet where any negotiated security layer 4. Identification of the octet where any negotiated security layer
starts to take effect, in both directions. starts to take effect, in both directions.
5. A specification of how the authorization identity passed from the 5. A specification of how the authorization identity passed from the
client to the server is to be interpreted. client to the server is to be interpreted.
5. Specific issues 5. Specific issues
5.1. Client sends data first 5.1. Client sends data first
Some mechanisms specify that the first data sent in the Some mechanisms specify that the first data sent in the
authentication protocol exchange is from the client to the server. authentication protocol exchange is from the client to the server.
If a protocol's profile permits the command which initiates an If a protocol's profile permits the command which initiates an
authentication protocol exchange to contain an initial client authentication protocol exchange to contain an initial client
response, this parameter SHOULD be used with such mechanisms. response, this parameter SHOULD be used with such mechanisms.
If the initial client response parameter is not given, or if a If the initial client response parameter is not given, or if a
protocol's profile does not permit the command which initiates an protocol's profile does not permit the command which initiates an
authentication protocol exchange to contain an initial client authentication protocol exchange to contain an initial client
response, then the server issues a challenge with no data. The response, then the server issues a challenge with no data. The
client's response to this challenge is then used as the initial client's response to this challenge is then used as the initial
client response. (The server then proceeds to send the next client response. (The server then proceeds to send the next
challenge, indicates completion, or indicates failure.) challenge, indicates completion, or indicates failure.)
5.2. Server returns success with additional data 5.2. Server returns success with additional data
Some mechanisms may specify that server challenge data be sent to the Some mechanisms may specify that server challenge data be sent to the
client along with an indication of successful completion of the client along with an indication of successful completion of the
exchange. This data would, for example, authenticate the server to exchange. This data would, for example, authenticate the server to
the client. the client.
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
If a protocol's profile does not permit this server challenge to be If a protocol's profile does not permit this server challenge to be
returned with a success indication, then the server issues the server returned with a success indication, then the server issues the server
challenge without an indication of successful completion. The client challenge without an indication of successful completion. The client
then responds with no data. After receiving this empty response, the then responds with no data. After receiving this empty response, the
server then indicates successful completion. server then indicates successful completion.
5.3. Multiple authentications 5.3. Multiple authentications
Unless otherwise stated by the protocol's profile, only one Unless otherwise stated by the protocol's profile, only one
successful SASL negotiation may occur in a protocol session. In this successful SASL negotiation may occur in a protocol session. In this
case, once an authentication protocol exchange has successfully case, once an authentication protocol exchange has successfully
completed, further attempts to initiate an authentication protocol completed, further attempts to initiate an authentication protocol
exchange fail. exchange fail.
In the case that a profile explicitly permits multiple successful In the case that a profile explicitly permits multiple successful
SASL negotiations to occur, then in no case may multiple security SASL negotiations to occur, then in no case may multiple security
layers be simultaneously in effect. If a security layer is in effect layers be simultaneously in effect. If a security layer is in effect
and a subsequent SASL negotiation selects no security layer, the and a subsequent SASL negotiation selects no security layer, the
original security layer remains in effect. If a security layer is in original security layer remains in effect. If a security layer is in
effect and a subsequent SASL negotiation selects a second security effect and a subsequent SASL negotiation selects a second security
layer, then the second security layer replaces the first. layer, then the second security layer replaces the first.
6. Registration procedures 6. Registration procedures
The following documents the procedure for registering new SASL Registration of a SASL mechanism is done by filling in the template
mechanism types. in section 6.4 and sending it in to iana@isi.edu. IANA has the right
to reject obviously bogus registrations, but will perform no review
of clams made in the registration form.
There is no naming convention for SASL mechanisms; any name that
conforms to the syntax of a SASL mechanism name can be registered.
While the registration procedures do not require it, authors of SASL While the registration procedures do not require it, authors of SASL
mechanisms are encouraged to seek community review and comment mechanisms are encouraged to seek community review and comment
whenever that is feasible. Authors may seek community review by whenever that is feasible. Authors may seek community review by
posting a specification of their proposed mechanism as an internet- posting a specification of their proposed mechanism as an internet-
draft. SASL mechanisms intended for widespread use should be draft. SASL mechanisms intended for widespread use should be
standardized through the normal IETF process, when appropriate. standardized through the normal IETF process, when appropriate.
6.1. Comments on SASL mechanism registrations 6.1. Comments on SASL mechanism registrations
Comments on registered SASL mechanisms should first be sent to the Comments on registered SASL mechanisms should first be sent to the
"owner" of the mechanism. Submitters of comments may, after a "owner" of the mechanism. Submitters of comments may, after a
reasonable attempt to contact the owner, request IANA to attach their reasonable attempt to contact the owner, request IANA to attach their
comment to the SASL mechanism registration itself. If IANA approves comment to the SASL mechanism registration itself. If IANA approves
of this the comment will be made accessible in conjunction with the of this the comment will be made accessible in conjunction with the
SASL mechanism registration itself. SASL mechanism registration itself.
Internet DRAFT SASL September 9, 1997
6.2. Location of Registered SASL Mechanism List 6.2. Location of Registered SASL Mechanism List
SASL mechanism registrations will be posted in the anonymous FTP SASL mechanism registrations will be posted in the anonymous FTP
directory directory
"ftp://ftp.isi.edu/in-notes/iana/assignments/sasl-mechanisms/" and "ftp://ftp.isi.edu/in-notes/iana/assignments/sasl-mechanisms/" and
Internet DRAFT SASL May 27, 1997
all registered SASL mechanisms will be listed in the periodically all registered SASL mechanisms will be listed in the periodically
issued "Assigned Numbers" RFC [currently RFC-1700]. The SASL issued "Assigned Numbers" RFC [currently RFC-1700]. The SASL
mechanism description and other supporting material may also be mechanism description and other supporting material may also be
published as an Informational RFC by sending it to published as an Informational RFC by sending it to
"rfc-editor@isi.edu" (please follow the instructions to RFC authors "rfc-editor@isi.edu" (please follow the instructions to RFC authors
[RFC-1543]). [RFC-1543]).
6.3. Change Control 6.3. Change Control
Once a SASL mechanism registration has been published by IANA, the Once a SASL mechanism registration has been published by IANA, the
skipping to change at page 7, line 49 skipping to change at page 8, line 5
To: iana@isi.edu To: iana@isi.edu
Subject: Registration of SASL mechanism X Subject: Registration of SASL mechanism X
SASL mechanism name: SASL mechanism name:
Security considerations: Security considerations:
Published specification (optional, recommended): Published specification (optional, recommended):
Internet DRAFT SASL September 9, 1997
Person & email address to contact for further information: Person & email address to contact for further information:
Intended usage: Intended usage:
(One of COMMON, LIMITED USE or OBSOLETE) (One of COMMON, LIMITED USE or OBSOLETE)
Internet DRAFT SASL May 27, 1997
Author/Change controller: Author/Change controller:
(Any other information that the author deems interesting may be (Any other information that the author deems interesting may be
added below this line.) added below this line.)
7. Mechanism definitions 7. Mechanism definitions
The following mechanisms are hereby defined. The following mechanisms are hereby defined.
7.1. Kerberos version 4 mechanism 7.1. Kerberos version 4 mechanism
The mechanism name associated with Kerberos version 4 is The mechanism name associated with Kerberos version 4 is
"KERBEROS_V4". "KERBEROS_V4".
The first challenge consists of a random 32-bit number in network The first challenge consists of a random 32-bit number in network
byte order. The client responds with a Kerberos ticket and an byte order. The client responds with a Kerberos ticket and an
authenticator for the principal "service.hostname@realm", where authenticator for the principal "service.hostname@realm", where
"service" is the service name specified in the protocol's profile, "service" is the service name specified in the protocol's profile,
"hostname" is the first component of the host name of the server with "hostname" is the first component of the host name of the server with
all letters in lower case, and where "realm" is the Kerberos realm of all letters in lower case, and where "realm" is the Kerberos realm of
skipping to change at page 8, line 49 skipping to change at page 9, line 4
cipher-text buffer size the server is able to receive. The server cipher-text buffer size the server is able to receive. The server
must encrypt using DES ECB mode the 8 octets of data in the session must encrypt using DES ECB mode the 8 octets of data in the session
key and issue that encrypted data in a second challenge. The client key and issue that encrypted data in a second challenge. The client
considers the server authenticated if the first four octets of the considers the server authenticated if the first four octets of the
un-encrypted data is equal to one plus the checksum it previously un-encrypted data is equal to one plus the checksum it previously
sent. sent.
The client must construct data with the first four octets containing The client must construct data with the first four octets containing
the original server-issued checksum in network byte order, the fifth the original server-issued checksum in network byte order, the fifth
octet containing the bit-mask specifying the selected security layer, octet containing the bit-mask specifying the selected security layer,
Internet DRAFT SASL September 9, 1997
the sixth through eighth octets containing in network byte order the the sixth through eighth octets containing in network byte order the
maximum cipher-text buffer size the client is able to receive, and maximum cipher-text buffer size the client is able to receive, and
the following octets containing the authorization identity. The the following octets containing the authorization identity. The
client must then append from one to eight zero-valued octets so that client must then append from one to eight zero-valued octets so that
the length of the data is a multiple of eight octets. The client must the length of the data is a multiple of eight octets. The client must
then encrypt using DES PCBC mode the data with the session key and then encrypt using DES PCBC mode the data with the session key and
Internet DRAFT SASL May 27, 1997
respond with the encrypted data. The server decrypts the data and respond with the encrypted data. The server decrypts the data and
verifies the contained checksum. The server must verify that the verifies the contained checksum. The server must verify that the
principal identified in the Kerberos ticket is authorized to connect principal identified in the Kerberos ticket is authorized to connect
as that authorization identity. After this verification, the as that authorization identity. After this verification, the
authentication process is complete. authentication process is complete.
The security layers and their corresponding bit-masks are as follows: The security layers and their corresponding bit-masks are as follows:
1 No security layer 1 No security layer
2 Integrity (krb_mk_safe) protection 2 Integrity (krb_mk_safe) protection
skipping to change at page 10, line 5 skipping to change at page 10, line 5
S: A001 OK Kerberos V4 authentication successful S: A001 OK Kerberos V4 authentication successful
S: * OK IMAP4 Server S: * OK IMAP4 Server
C: A001 AUTHENTICATE KERBEROS_V4 C: A001 AUTHENTICATE KERBEROS_V4
S: + gcfgCA== S: + gcfgCA==
C: BAcAQU5EUkVXLkNNVS5FRFUAOCAsho84kLN3/IJmrMG+25a4DT C: BAcAQU5EUkVXLkNNVS5FRFUAOCAsho84kLN3/IJmrMG+25a4DT
+nZImJjnTNHJUtxAA+o0KPKfHEcAFs9a3CL5Oebe/ydHJUwYFd +nZImJjnTNHJUtxAA+o0KPKfHEcAFs9a3CL5Oebe/ydHJUwYFd
WwuQ1MWiy6IesKvjL5rL9WjXUb9MwT9bpObYLGOKi1Qh WwuQ1MWiy6IesKvjL5rL9WjXUb9MwT9bpObYLGOKi1Qh
S: A001 NO Kerberos V4 authentication failed S: A001 NO Kerberos V4 authentication failed
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
7.2. GSSAPI mechanism 7.2. GSSAPI mechanism
The mechanism name associated with all mechanisms employing the The mechanism name associated with all mechanisms employing the
GSSAPI [GSSAPI] is "GSSAPI". GSSAPI [GSSAPI] is "GSSAPI".
7.2.1 Client side of authentication protocol exchange 7.2.1 Client side of authentication protocol exchange
The client calls GSS_Init_sec_context, passing in 0 for The client calls GSS_Init_sec_context, passing in 0 for
input_context_handle (initially) and a targ_name equal to output_name input_context_handle (initially) and a targ_name equal to output_name
from GSS_Import_Name called with input_name_type of from GSS_Import_Name called with input_name_type of
GSS_C_NT_HOSTBASED_SERVICE and input_name_string of GSS_C_NT_HOSTBASED_SERVICE and input_name_string of
skipping to change at page 11, line 5 skipping to change at page 11, line 5
The server passes the initial client response to The server passes the initial client response to
GSS_Accept_sec_context as input_token, setting input_context_handle GSS_Accept_sec_context as input_token, setting input_context_handle
to 0 (initially). If GSS_Accept_sec_context returns to 0 (initially). If GSS_Accept_sec_context returns
GSS_S_CONTINUE_NEEDED, the server returns the generated output_token GSS_S_CONTINUE_NEEDED, the server returns the generated output_token
to the client in challenge and passes the resulting response to to the client in challenge and passes the resulting response to
another call to GSS_Accept_sec_context, repeating the actions in this another call to GSS_Accept_sec_context, repeating the actions in this
paragraph. paragraph.
When GSS_Accept_sec_context returns GSS_S_COMPLETE, the client takes When GSS_Accept_sec_context returns GSS_S_COMPLETE, the client takes
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
the following actions: If the last call to GSS_Accept_sec_context the following actions: If the last call to GSS_Accept_sec_context
returned an output_token, the server returns it to the client in a returned an output_token, the server returns it to the client in a
challenge and expects a reply from the client with no data. Whether challenge and expects a reply from the client with no data. Whether
or not an output_token was returned (and after receipt of any or not an output_token was returned (and after receipt of any
response from the client to such an output_token), the server then response from the client to such an output_token), the server then
constructs 4 octets of data, with the first octet containing a bit- constructs 4 octets of data, with the first octet containing a bit-
mask specifying the security layers supported by the server and the mask specifying the security layers supported by the server and the
second through fourth octets containing in network byte order the second through fourth octets containing in network byte order the
maximum size output_token the server is able to receive. The server maximum size output_token the server is able to receive. The server
skipping to change at page 12, line 5 skipping to change at page 12, line 5
The security layers and their corresponding bit-masks are as follows: The security layers and their corresponding bit-masks are as follows:
1 No security layer 1 No security layer
2 Integrity protection. 2 Integrity protection.
Sender calls GSS_Wrap with conf_flag set to FALSE Sender calls GSS_Wrap with conf_flag set to FALSE
4 Privacy protection. 4 Privacy protection.
Sender calls GSS_Wrap with conf_flag set to TRUE Sender calls GSS_Wrap with conf_flag set to TRUE
Other bit-masks may be defined in the future; bits which are not Other bit-masks may be defined in the future; bits which are not
understood must be negotiated off. understood must be negotiated off.
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
7.3. S/Key mechanism 7.3. S/Key mechanism
The mechanism name associated with S/Key [SKEY] using the MD4 digest The mechanism name associated with S/Key [SKEY] using the MD4 digest
algorithm is "SKEY". algorithm is "SKEY".
The client sends an initial response with the authorization identity. The client sends an initial response with the authorization identity.
The server then issues a challenge which contains the decimal The server then issues a challenge which contains the decimal
sequence number followed by a single space and the seed string for sequence number followed by a single space and the seed string for
the indicated authorization identity. The client responds with the the indicated authorization identity. The client responds with the
one-time-password, as either a 64-bit value in network byte order or one-time-password, as either a 64-bit value in network byte order or
skipping to change at page 13, line 5 skipping to change at page 13, line 5
The following is an S/Key login scenario in an IMAP4-like protocol The following is an S/Key login scenario in an IMAP4-like protocol
which has an optional "initial response" argument to the AUTHENTICATE which has an optional "initial response" argument to the AUTHENTICATE
command. command.
S: * OK IMAP4-Like Server S: * OK IMAP4-Like Server
C: A001 AUTHENTICATE SKEY bW9yZ2Fu C: A001 AUTHENTICATE SKEY bW9yZ2Fu
S: + OTUgUWE1ODMwOA== S: + OTUgUWE1ODMwOA==
C: Rk9VUiBNQU5OIFNPT04gRklSIFZBUlkgTUFTSA== C: Rk9VUiBNQU5OIFNPT04gRklSIFZBUlkgTUFTSA==
S: A001 OK S/Key authentication successful S: A001 OK S/Key authentication successful
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
7.4 External mechanism 7.4. External mechanism
The mechanism name associated with external authentication is The mechanism name associated with external authentication is
"EXTERNAL". "EXTERNAL".
The client sends an initial response with the authorization identity. The client sends an initial response with the authorization identity.
The server uses information, external to SASL, to determine whether The server uses information, external to SASL, to determine whether
the client is authorized to authenticate as the authorization the client is authorized to authenticate as the authorization
identity. If the client is so authorized, the server indicates identity. If the client is so authorized, the server indicates
successful completion of the authentication exchange; otherwise the successful completion of the authentication exchange; otherwise the
server indicates failure. server indicates failure.
The system providing this external information may be, for example, The system providing this external information may be, for example,
IPsec or TLS. IPsec or TLS.
If the client sends the empty string as the authorization identity If the client sends the empty string as the authorization identity
(thus requesting the authorization identity be derived from the (thus requesting the authorization identity be derived from the
client's authentication credentials), the autorization identity is to client's authentication credentials), the authorization identity is
be derived from authentication credentials which exist in the system to be derived from authentication credentials which exist in the
which is providing the external authentication. system which is providing the external authentication.
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
8. References 8. References
[IMAP4] Crispin, M., "Internet Message Access Protocol - Version 4", [IMAP4] Crispin, M., "Internet Message Access Protocol - Version 4",
RFC 1730, University of Washington, December 1994. RFC 1730, University of Washington, December 1994.
[GSSAPI] Linn, J., "Generic Security Service Application Program [GSSAPI] Linn, J., "Generic Security Service Application Program
Interface, Version 2", RFC 2078, January 1997 Interface, Version 2", RFC 2078, January 1997
[RFC-1543] Postel, J., "Instructions to RFC Authors", RFC 1543, [RFC-1543] Postel, J., "Instructions to RFC Authors", RFC 1543,
October 1993 October 1993
[SKEY] Haller, Neil M. "The S/Key One-Time Password System", RFC [SKEY] Haller, Neil M. "The S/Key One-Time Password System", RFC
1760, Bellcore, February 1995 1760, Bellcore, February 1995
8. Security Considerations 9. Security Considerations
Security issues are discussed throughout this memo. Security issues are discussed throughout this memo.
The mechanisms that support integrity protection are designed such The mechanisms that support integrity protection are designed such
that the negotiation of the security layer and authorization identity that the negotiation of the security layer and authorization identity
is integrity protected. When the client selects a security layer is integrity protected. When the client selects a security layer
with at least integrity protection, this protects against an active with at least integrity protection, this protects against an active
attacker hijacking the connection and modifying the authentication attacker hijacking the connection and modifying the authentication
exchange to negotiate a plaintext connection. exchange to negotiate a plaintext connection.
skipping to change at page 15, line 5 skipping to change at page 15, line 5
obtain an authentication with weaker security properties by modifying obtain an authentication with weaker security properties by modifying
the SASL mechanism name and/or the challenges and responses. the SASL mechanism name and/or the challenges and responses.
Any protocol interactions prior to authentication are performed in Any protocol interactions prior to authentication are performed in
the clear and may be modified by an active attacker. In the case the clear and may be modified by an active attacker. In the case
where a client selects integrity protection, it is important that any where a client selects integrity protection, it is important that any
security-sensitive protocol negotiations be performed after security-sensitive protocol negotiations be performed after
authentication is complete. Protocols should be designed such that authentication is complete. Protocols should be designed such that
negotiations performed prior to authentication should be either negotiations performed prior to authentication should be either
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
ignored or revalidated once authentication is complete. ignored or revalidated once authentication is complete.
9. Author's Address 10. Author's Address
John G. Myers John G. Myers
220 Palo Alto Ave, Apt 102 Netscape Communications
Palo Alto, CA 94301 501 E. Middlefield Road
Mail Stop MV-029
Mountain View, CA 94043-4042
Email: jgmyers@netscape.com Email: jgmyers@netscape.com
Appendix A. Relation of SASL to Transport Security Appendix A. Relation of SASL to Transport Security
Questions have been raised about the relationship between SASL and Questions have been raised about the relationship between SASL and
various services (such as IPsec and TLS) which provide a secured various services (such as IPsec and TLS) which provide a secured
connection. connection.
Two of the key features of SASL are: Two of the key features of SASL are:
skipping to change at page 15, line 52 skipping to change at page 16, line 4
Sometimes it is desired to enable within an existing connection the Sometimes it is desired to enable within an existing connection the
use of a security service which does not fit the SASL model. (TLS is use of a security service which does not fit the SASL model. (TLS is
an example of such a service.) This can be done by adding a command, an example of such a service.) This can be done by adding a command,
for example "STARTTLS", to the protocol. Such a command is outside for example "STARTTLS", to the protocol. Such a command is outside
the scope of SASL, and should be different from the command which the scope of SASL, and should be different from the command which
starts a SASL authentication protocol exchange. starts a SASL authentication protocol exchange.
In certain situations, it is reasonable to use SASL underneath one of In certain situations, it is reasonable to use SASL underneath one of
these Transport Security services. The transport service would these Transport Security services. The transport service would
secure the connection, either service would authenticate the client, secure the connection, either service would authenticate the client,
and SASL would negotiate the authorization identity. The SASL
negotiation would be what moves the protocol from "unauthenticated"
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
and SASL would negotiate the authorization identity. The SASL
negotiation would be what moves the protocol from "unauthenticated"
to "authenticated" state. The "EXTERNAL" SASL mechanism is to "authenticated" state. The "EXTERNAL" SASL mechanism is
explicitly intended to handle the case where the transport service explicitly intended to handle the case where the transport service
securies the connection and authenticates the client and SASL secures the connection and authenticates the client and SASL
negotiates the authorization identity. negotiates the authorization identity.
When using SASL underneath a sufficiently strong Transport Security When using SASL underneath a sufficiently strong Transport Security
service, a SASL security layer would most likely be redundant. The service, a SASL security layer would most likely be redundant. The
client and server would thus probably want to negotiate off the use client and server would thus probably want to negotiate off the use
of a SASL security layer. of a SASL security layer.
Internet DRAFT SASL May 27, 1997 Internet DRAFT SASL September 9, 1997
TTTTaaaabbbblllleeee ooooffff CCCCoooonnnntttteeeennnnttttssss Table of Contents
Status of this Memo ............................................... i Status of this Memo ............................................... i
1. Abstract ..................................................... 2 1. Abstract .................................................... 2
2. Organization of this Document ................................ 2 2. Organization of this Document ............................... 2
2.1. How to Read This Document .................................... 2 2.1. How to Read This Document ................................... 2
2.2. Conventions Used in this Document ............................ 2 2.2. Conventions Used in this Document ........................... 2
2.3. Examples ..................................................... 3 2.3. Examples .................................................... 3
3. Introduction and Overview .................................... 3 3. Introduction and Overview ................................... 3
4. Profiling requirements ....................................... 4 4. Profiling requirements ...................................... 4
5. Specific issues .............................................. 5 5. Specific issues ............................................. 5
5.1. Client sends data first ...................................... 5 5.1. Client sends data first ..................................... 5
5.2. Server returns success with additional data .................. 5 5.2. Server returns success with additional data ................. 5
5.3. Multiple authentications ..................................... 6 5.3. Multiple authentications .................................... 6
6. Registration procedures ...................................... 6 6. Registration procedures ..................................... 6
6.1. Comments on SASL mechanism registrations ..................... 6 6.1. Comments on SASL mechanism registrations .................... 6
6.2. Location of Registered SASL Mechanism List .................. 6 6.2. Location of Registered SASL Mechanism List .................. 7
6.3. Change Control .............................................. 7 6.3. Change Control .............................................. 7
6.4. Registration Template ....................................... 7 6.4. Registration Template ....................................... 7
7. Mechanism definitions ........................................ 8 7. Mechanism definitions ....................................... 8
7.1. Kerberos version 4 mechanism ................................. 8 7.1. Kerberos version 4 mechanism ................................ 8
7.2. GSSAPI mechanism ............................................. 10 7.2. GSSAPI mechanism ............................................ 10
7.2.1 Client side of authentication protocol exchange ............. 10 7.2.1 Client side of authentication protocol exchange ............. 10
7.2.2 Server side of authentication protocol exchange ............. 10 7.2.2 Server side of authentication protocol exchange ............. 10
7.2.3 Security layer .............................................. 11 7.2.3 Security layer .............................................. 11
7.3. S/Key mechanism .............................................. 12 7.3. S/Key mechanism ............................................. 12
7.4 External mechanism ............................................ 13 7.4. External mechanism .......................................... 13
8. References ................................................... 14 8. References .................................................. 14
8. Security Considerations ....................................... 14 9. Security Considerations ..................................... 14
9. Author's Address ............................................. 15 10. Author's Address ............................................ 15
Appendix A. Relation of SASL to Transport Security ................ 15 Appendix A. Relation of SASL to Transport Security ................ 15
 End of changes. 51 change blocks. 
77 lines changed or deleted 83 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/