Internet DRAFT - draft-burdis-http-sasl
draft-burdis-http-sasl
Network Working Group K.R. Burdis
Internet-Draft None
Expires: August 24, 2001 February 23, 2001
Upgrading to SASL Within HTTP/1.1
draft-burdis-http-sasl-00
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 24, 2001.
Copyright Notice
Copyright (C) The Internet Society (2001). All Rights Reserved.
Abstract
This document describes how to use the Upgrade mechanism in HTTP/1.1
to initiate an SASL session over an existing TCP connection,
performing authentication using a negotiated SASL mechanism and then
tunnelling subsequent HTTP messages over this protected connection.
It is based on RFC 2817 which describes how to upgrade to TLS from
within HTTP.
Burdis Expires August 24, 2001 [Page 1]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
Table of Contents
1. Conventions Used in this Document . . . . . . . . . . . . . . 3
2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4. HTTP over SASL . . . . . . . . . . . . . . . . . . . . . . . . 6
4.1 Upgrade header token . . . . . . . . . . . . . . . . . . . . . 6
4.2 Protocol Description . . . . . . . . . . . . . . . . . . . . . 7
5. Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.1 Server Advertises Upgrade . . . . . . . . . . . . . . . . . . 8
5.2 Client Requests Upgrade . . . . . . . . . . . . . . . . . . . 8
5.3 Client Requires Upgrade . . . . . . . . . . . . . . . . . . . 9
5.4 Server Requires Upgrade . . . . . . . . . . . . . . . . . . . 9
6. Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7. Security Considerations . . . . . . . . . . . . . . . . . . . 12
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13
References . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Author's Address . . . . . . . . . . . . . . . . . . . . . . . 14
Full Copyright Statement . . . . . . . . . . . . . . . . . . . 15
Burdis Expires August 24, 2001 [Page 2]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
1. Conventions Used in this Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC2119 [1].
Burdis Expires August 24, 2001 [Page 3]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
2. Motivation
Transport Layer Security (TLS) is used to protect the data
transmitted on a connection. It provides authentication and the
negotiation of a session key that can be used to protect the
connection. HTTP messages are protected using TLS by tunnelling
them through the TLS connection. The entire HTTP message is
protected and this does not require any changes to the HTTP
protocol. When using the persistant connections introduced in
HTTP/1.1 many HTTP request and response messages may be tunnelled
through a single TLS connection.
However, TLS requires that each party that wishes to authenticate
itself have an asymmetric public/private keypair. Typically the
server has its public key signed by a trusted Certification
Authority, and the server authenticates itself to the client.
Mutual authentication is rare because it is unusual for the client
to have a public/private keypair.
It is desirable to be able to have the benefits of using TLS with
HTTP while not necessarily having to use public key technology or a
trusted third party. For example, using password-based technologies
that offer mutual authentication and a security layer. It is also
desirable to have stronger authentication with HTTP than the
currently available Basic and Digest authentication.
The Simple Authentication and Security Layer (SASL) is a means of
adding authentication and a security layer to connection-based
protocols. There are a number of different SASL security mechanisms
that use different security technologies and have different
strengths and weaknesses. It is possible to add new mechanisms at a
later stage without having to change the way SASL works with the
protocol, or the way the protocol itself works.
This document describes a means of using SASL with HTTP so that the
benefits of TLS are achieved with the flexibility of SASL.
Burdis Expires August 24, 2001 [Page 4]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
3. Overview
RFC 2817 describes a means of using TLS with HTTP by upgrading to
TLS from within HTTP. The advantage of this is that a separate port
is not required for a secure connection. Once the upgrade is
initiated the TLS protocol starts. If TLS authentication is
successful, a secure connection is established and subsequent HTTP
messages are tunnelled through this connection.
The same procedure can be used with SASL. An HTTP client and server
negotiate an upgrade to an SASL mechanism. Once the upgrade is
initiated, the SASL mechanism protocol starts. If the
authentication procedure using this mechanism is successful,
subsequent HTTP messages are tunnelled through this SASL connection.
If a security layer was negotiated as part of the SASL mechanism
exchange then it is used to protect any messages passing through the
connection, otherwise the messages are passed through unchanged.
Burdis Expires August 24, 2001 [Page 5]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
4. HTTP over SASL
This profile is based on RFC 2817 "Upgrading to TLS Within HTTP"
which "explains how to use the Upgrade mechanism in HTTP/1.1 to
initiate Transport Layer Security (TLS) over an existing TCP
connection." The process described can also be used to initiate a
SASL session over an existing TCP connection. To do so it is
necessary to define a new Upgrade header token to indicate support
for establishing an SASL session using a specified mechanism, and to
describe how the new protocol will interact with HTTP.
4.1 Upgrade header token
The Upgrade header token is used to indicate which SASL mechanisms
are available to be used.
Section 4 of RFC 2222 specifies that when a client indicates the
SASL mechanism that it wishes to use it SHOULD be able to include an
initial response, so that it can avoid an extra round trip when the
mechanism is defined to have the client send data first. For this
reason a client MAY include a base-64 encoded initial response in
the Upgrade header token.
The token is defined as:
SASL+<mechanism>/<version> [ <response> ]
where:
<mechanism> is a valid SASL mechanism name
<response> is the optional base64-encoded initial response
<version> is a version identifier, currently 1.0
Valid mechanism values are those defined by IANA, as described in
section 6.2 of RFC 2222[6].
Example:
Upgrade: SASL+SRP-SHA-160/1.0 U1JQ...Zvbw==, SASL+DIGEST-MD5/1.0
An Upgrade header containing this token indicates support for
switching to HTTP over SASL using the specified SASL mechanism(s).
Burdis Expires August 24, 2001 [Page 6]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
4.2 Protocol Description
Section 10.1.2 of RFC 2616[3] states that:
"The server will switch protocols to those defined by the
response's Upgrade header field immediately after the empty line
which terminates the 101 response"
The chosen SASL mechanism's authentication protocol will start at
this point. (Note that an initial client authentication response may
have been sent as part of the Upgrade header token). Authentication
protocol messages generated by the chosen SASL mechanism are
base64-encoded before being sent over the wire.
If use of a security layer is negotiated during the mechanism
exchange then any HTTP requests or responses after the
authentication protocol is complete will pass through this security
layer. If no security layer is negotiated then these requests and
responses will remain unchanged.
Burdis Expires August 24, 2001 [Page 7]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
5. Scenarios
This section illustrates possible scenarios with examples.
5.1 Server Advertises Upgrade
From RFC 2817: "As specified in HTTP/1.1 , the server MAY include an
Upgrade header in any response other than 101 or 426 to indicate a
willingness to switch to any (combination) of the protocols listed".
Example:
Upgrade: SASL+SRP-SHA-160/1.0, SASL+DIGEST-MD5/1.0, HTTP/1.1
5.2 Client Requests Upgrade
The client indicates that it would like the current request to be
processed after a switch has been made to HTTP over SASL using one
of the specified mechanisms, by including an appropriate token in
the Upgrade header field it adds to the request message.
For example, the client sends:
GET http://topsecret.example.com/classified.html HTTP/1.1
Host topsecret.example.com
Upgrade: SASL+SRP-SHA-160/1.0 U1JQ...UAA2Zvbw==, SASL+DIGEST-MD5
Connection: Upgrade
In this case the server MAY respond to the HTTP request normally, OR
switch to a new protocol. If the server decides to switch to a new
protocol, it responds with a "101 Switching Protocols" status code
and includes an Upgrade header indicating what protocol it is
switching to. Example:
HTTP/1.1 101 Switching Protocols
Upgrade: SASL+SRP-SHA-160/1.0, HTTP/1.1
Connection: Upgrade
As noted in RFC 2817 "the protocol tokens listed in the Upgrade
header of a 101 Switching Protocols response specify an ordered
'bottom-up' stack."
See Section 3 of RFC 2817[2].
Burdis Expires August 24, 2001 [Page 8]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
5.3 Client Requires Upgrade
A client indicates that an unsecured response would be unacceptable
and that it is MANDATORY for the server to switch to one of the
specified protocols by sending an OPTIONS request first. Example:
OPTIONS * HTTP/1.1
Host: topsecret.example.com
Upgrade: SASL+SRP-SHA-160/1.0 U1JQ...UAA2Zvbw==, SASL+DIGEST-MD5/1.0
Connection: Upgrade
If the server supports HTTP over SASL with one of the specified
mechanisms it responds with a "101 Switching Protocols" status code,
indicating the chosen mechanism using a token in the Upgrade header
field:
HTTP/1.1 101 Switching Protocols
Upgrade: SASL+SRP-SHA-160/1.0, HTTP/1.1
Connection: Upgrade
See Section 3 of RFC 2817[2].
5.4 Server Requires Upgrade
A server uses a "426 Upgrade Required" status code to indicate that
an SASL session must be established using one of the listed
mechanisms before the request will be processed.
For example, the client sends:
GET http://topsecret.example.com/classified.html HTTP/1.1
Host topsecret.example.com
The server responds with:
HTTP/1.1 426 Upgrade Required
Upgrade: SASL+SRP-SHA-160/1.0, SASL+DIGEST-MD5/1.0
Connection: Upgrade
If the client supports HTTP over SASL using any of the listed
mechanisms it indicates this by resending the request and including
Burdis Expires August 24, 2001 [Page 9]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
an Upgrade header field that contains the list of mechanisms it
supports:
GET http://topsecret.example.com/classified.html HTTP/1.1
Host topsecret.example.com
Upgrade: SASL+SRP-SHA-160/1.0 U1JQ...UAA2Zvbw==
Connection: Upgrade
To which the server responds with a "101 Switching Protocols" status
code, including an Upgrade header field containing a token
specifying the protocol that is being switched to:
HTTP/1.1 101 Switching Protocols
Upgrade: SASL+SRP-SHA-160/1.0, HTTP/1.1
Connection: Upgrade
See Section 4 of RFC 2817[2].
Burdis Expires August 24, 2001 [Page 10]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
6. Discussion
The benefit of tunnelling HTTP through an SASL connection, rather
than making the SASL exchange part of HTTP, is that the TCP
connection is protected. This means that the entire HTTP message is
protected when transmitted along this connection rather than just
the HTTP body. Also, as with TLS, once the upgrade has taken place,
the HTTP protocol exchanges continue unaware that they are being
protected.
One major benefit of using SASL with HTTP is that since the security
technology is not built in to HTTP it is possible to easily remove
support for mechanisms based on technology that has been proven to
be vulnerable, and to easily add mechanisms that support the latest
and greatest security technology.
Section 5 of RFC 2817[2] should be consulted for details on
establishing a secure tunnel through a proxy.
Burdis Expires August 24, 2001 [Page 11]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
7. Security Considerations
It is RECOMMENDED that an SASL mechanism that supports the
negotiation of a security layer with integrity protection be used,
and that this protection be enabled to avoid the connection being
hijacked after authentication has taken place.
It is possible for an attacker to remove the Upgrade header field
from an HTTP message. If an unsecured response is unacceptable to
the client or the server, and no Upgrade header is present, then the
exchange MUST be aborted.
It is also possible for an attacker to remove any of the mechanisms
from the list advertised by the server, so the server MUST only
advertise mechanisms that it deems to have an acceptable level of
security. The client and server MUST only select mechanisms that
they deem to have an acceptable level of security. If no such
mechanism is available then the upgrade MUST be aborted.
The security of using SASL depends on the specific SASL mechanism
chosen. Documents defining these mechanisms should be consulted. RFC
2222[6] discusses some of the security issues related to SASL
mechanisms.
Section 8 of RFC 2817[2] discusses the security implications of
using the HTTP/1.1 Upgrade header field.
Burdis Expires August 24, 2001 [Page 12]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
8. Acknowledgements
The following people provided valuable feedback in the preparation
of this document:
Raif Naffah <raif@forge.com.au>
Burdis Expires August 24, 2001 [Page 13]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 0014, RFC 2119, March 1997.
[2] Khare, R. and S. Lawrence, "HTTP Upgrade to TLS", RFC 2817, May
2000.
[3] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
Leach, P., Luotonen, A. and L. Stewart, "HTTP Authentication:
Basic and Digest Access Authentication", RFC 2617, June 1999.
[4] Dierks, T. and C. Allen, "The TLS Protocol - Version 1", RFC
2246, January 1999.
[5] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L.,
Leach, P. and T. Berners-Lee, "Hypertext Transfer Protocol --
HTTP/1.1", RFC 2068, June 1999.
[6] Myers, J.G., "Simple Authentication and Security Layer (SASL)",
RFC 2222, October 1997.
[7] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, June
1999.
Author's Address
K.R. Burdis
None
42 Villa Street
Pretoria 0001
ZA
EMail: keith@rucus.ru.ac.za
URI: http://www.cryptix.org/~keith/
Burdis Expires August 24, 2001 [Page 14]
Internet-Draft Upgrading to SASL Within HTTP/1.1 February 2001
Full Copyright Statement
Copyright (C) The Internet Society (2001). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph
are included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC editor function is currently provided by the
Internet Society.
Burdis Expires August 24, 2001 [Page 15]