]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Radius Digest authentication extension draft
authorhno <>
Thu, 29 Dec 2005 10:16:03 +0000 (10:16 +0000)
committerhno <>
Thu, 29 Dec 2005 10:16:03 +0000 (10:16 +0000)
doc/rfc/1-index.txt
doc/rfc/draft-ietf-radext-digest-auth-06.txt [new file with mode: 0644]

index 8c0ba73839b3d2ca85308d2f62af1c5157282573..ec6223bf9169aa9d7dda44bbaad85add3b218f2f 100644 (file)
@@ -1,3 +1,8 @@
+draft-ietf-radext-digest-auth-06.txt
+       RADIUS Extension for Digest Authentication
+       A proposed extension to Radius for Digest authentication
+       via RADIUS servers.
+       
 draft-jaganathan-kerberos-http-01.txt
        HTTP Authentication: Kerberos Authentication
        Microsoft Negotiate "HTTP" authentication scheme
diff --git a/doc/rfc/draft-ietf-radext-digest-auth-06.txt b/doc/rfc/draft-ietf-radext-digest-auth-06.txt
new file mode 100644 (file)
index 0000000..09b3538
--- /dev/null
@@ -0,0 +1,2135 @@
+
+
+
+
+
+
+Network Working Group                                         B. Sterman
+Internet-Draft                                           Kayote Networks
+Expires: April 17, 2006                                    D. Sadolevsky
+                                                          SecureOL, Inc.
+                                                             D. Schwartz
+                                                         Kayote Networks
+                                                             D. Williams
+                                                           Cisco Systems
+                                                                 W. Beck
+                                                     Deutsche Telekom AG
+                                                        October 14, 2005
+
+
+               RADIUS Extension for Digest Authentication
+                  draft-ietf-radext-digest-auth-06.txt
+
+Status of this Memo
+
+   By submitting this Internet-Draft, each author represents that any
+   applicable patent or other IPR claims of which he or she is aware
+   have been or will be disclosed, and any of which he or she becomes
+   aware will be disclosed, in accordance with Section 6 of BCP 79.
+
+   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 April 17, 2006.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2005).
+
+Abstract
+
+   This document defines an extension to the RADIUS protocol to enable
+
+
+
+Sterman, et al.          Expires April 17, 2006                 [Page 1]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   support of Digest Authentication, for use with HTTP-style protocols
+   like SIP and HTTP.
+
+
+Table of Contents
+
+   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
+     1.1.  Terminology  . . . . . . . . . . . . . . . . . . . . . . .  4
+     1.2.  Motivation . . . . . . . . . . . . . . . . . . . . . . . .  4
+     1.3.  Overview . . . . . . . . . . . . . . . . . . . . . . . . .  5
+       1.3.1.  Scenario 1, RADIUS client chooses nonces . . . . . . .  6
+       1.3.2.  Scenario 2, RADIUS server chooses nonces . . . . . . .  7
+   2.  Interoperability . . . . . . . . . . . . . . . . . . . . . . .  9
+   3.  Detailed Description . . . . . . . . . . . . . . . . . . . . .  9
+     3.1.  RADIUS Client Behavior . . . . . . . . . . . . . . . . . .  9
+     3.2.  RADIUS Server Behavior . . . . . . . . . . . . . . . . . . 12
+   4.  New RADIUS attributes  . . . . . . . . . . . . . . . . . . . . 13
+     4.1.  Digest-Response attribute  . . . . . . . . . . . . . . . . 14
+     4.2.  Digest-Realm attribute . . . . . . . . . . . . . . . . . . 14
+     4.3.  Digest-Nonce attribute . . . . . . . . . . . . . . . . . . 15
+     4.4.  Digest-Response-Auth attribute . . . . . . . . . . . . . . 15
+     4.5.  Digest-Nextnonce attribute . . . . . . . . . . . . . . . . 16
+     4.6.  Digest-Method attribute  . . . . . . . . . . . . . . . . . 16
+     4.7.  Digest-URI attribute . . . . . . . . . . . . . . . . . . . 16
+     4.8.  Digest-Qop attribute . . . . . . . . . . . . . . . . . . . 17
+     4.9.  Digest-Algorithm attribute . . . . . . . . . . . . . . . . 17
+     4.10. Digest-Entity-Body-Hash attribute  . . . . . . . . . . . . 18
+     4.11. Digest-CNonce attribute  . . . . . . . . . . . . . . . . . 18
+     4.12. Digest-Nonce-Count attribute . . . . . . . . . . . . . . . 19
+     4.13. Digest-Username attribute  . . . . . . . . . . . . . . . . 19
+     4.14. Digest-Opaque attribute  . . . . . . . . . . . . . . . . . 19
+     4.15. Digest-Auth-Param attribute  . . . . . . . . . . . . . . . 20
+     4.16. Digest-AKA-Auts attribute  . . . . . . . . . . . . . . . . 20
+     4.17. Digest-Domain attribute  . . . . . . . . . . . . . . . . . 21
+     4.18. Digest-Stale attribute . . . . . . . . . . . . . . . . . . 21
+     4.19. Digest-HA1 attribute . . . . . . . . . . . . . . . . . . . 22
+     4.20. SIP-AOR  . . . . . . . . . . . . . . . . . . . . . . . . . 22
+   5.  Diameter Compatibility . . . . . . . . . . . . . . . . . . . . 23
+   6.  Table of Attributes  . . . . . . . . . . . . . . . . . . . . . 23
+   7.  Example  . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
+   8.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 28
+   9.  Security Considerations  . . . . . . . . . . . . . . . . . . . 28
+   10. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 30
+   11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 30
+     11.1. Normative References . . . . . . . . . . . . . . . . . . . 30
+     11.2. Informative References . . . . . . . . . . . . . . . . . . 30
+   Appendix A.  Change Log  . . . . . . . . . . . . . . . . . . . . . 31
+     A.1.  Changes from draft-ietf-radext-digest-auth-05  . . . . . . 31
+
+
+
+Sterman, et al.          Expires April 17, 2006                 [Page 2]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+     A.2.  Changes from draft-ietf-radext-digest-auth-04  . . . . . . 31
+     A.3.  Changes from draft-ietf-radext-digest-auth-03  . . . . . . 31
+     A.4.  Changes from draft-ietf-radext-digest-auth-02  . . . . . . 31
+     A.5.  Changes from draft-ietf-radext-digest-auth-01  . . . . . . 31
+     A.6.  Changes from draft-ietf-radext-digest-auth-00  . . . . . . 32
+     A.7.  Changes from draft-sterman-aaa-sip-04  . . . . . . . . . . 32
+     A.8.  Changes from draft-sterman-aaa-sip-03  . . . . . . . . . . 32
+     A.9.  Changes from draft-sterman-aaa-sip-02  . . . . . . . . . . 32
+     A.10. Changes from draft-sterman-aaa-sip-01  . . . . . . . . . . 33
+   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 34
+   Intellectual Property and Copyright Statements . . . . . . . . . . 35
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                 [Page 3]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+1.  Introduction
+
+1.1.  Terminology
+
+   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].
+
+   The use of normative requirement key words in this document shall
+   apply only to RADIUS Client and RADIUS Server implementations that
+   include the features described in this document.  This document
+   creates no normative requirements for existing implementations.
+
+   HTTP-style protocol
+         The term 'HTTP-style' denotes any protocol that uses HTTP-like
+         headers and uses HTTP digest authentication as described in
+         [RFC2617].  Examples are HTTP and SIP.
+   NAS
+         Network Access Server, the RADIUS client.
+   nonce
+         An unpredictable value used to prevent replay attacks.  The
+         nonce generator may use cryptographic mechanisms to produce
+         nonces it can recognize without maintaining state.
+   protection space
+         The combination of realm and digest URI, the use of which is
+         authorized by the RADIUS server.
+   SIP UA
+         SIP User Agent, an Internet endpoint that uses the Session
+         Initiation Protocol.
+   SIP UAS
+         SIP User Agent Server, a logical entity that generates a
+         response to a SIP (Session Initiation Protocol) request.
+
+1.2.  Motivation
+
+   The HTTP Digest Authentication mechanism, defined in [RFC2617], was
+   subsequently adapted to use with SIP in [RFC2543] (obsoleted by
+   [RFC3261]).  Due to the limitations and weaknesses of Digest
+   Authentication (see [RFC2617], section 4), additional authentication
+   and encryption mechanisms are defined in SIP [RFC3261], including TLS
+   [RFC2246] and S/MIME [RFC2633].  However, Digest Authentication has
+   been widely implemented within SIP clients and to support those
+   clients there is a need for support of Digest Authentication within
+   AAA protocols such as RADIUS [RFC2865] and Diameter [RFC3588].
+
+   This document defines an extension to the RADIUS protocol to enable
+   support of Digest Authentication, for use with SIP, HTTP, and other
+   HTTP-style protocols using this authentication method.  Support for
+
+
+
+Sterman, et al.          Expires April 17, 2006                 [Page 4]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   Digest mechanisms such as AKA [RFC3310] is also supported.  A
+   companion document [I-D.ietf-aaa-diameter-sip-app] defines support
+   for Digest Authentication within Diameter.
+
+1.3.  Overview
+
+   HTTP digest is a challenge-response protocol used to authenticate a
+   client's request to access some resource on a server.  Figure 1 shows
+   a single HTTP digest transaction.
+
+
+
+
+
+                        HTTP/SIP..
+         +------------+  (1)     +------------+
+         |            |--------->|            |
+         | HTTP-style |  (2)     | HTTP-style |
+         | Client     |<---------| server     |
+         |            |  (3)     |            |
+         |            |--------->|            |
+         |            |  (4)     |            |
+         |            |<---------|            |
+         +------------+          +------------+
+
+
+
+
+   Figure 1: digest operation without RADIUS
+
+   If the client sends a request without any credentials (1), the server
+   will reply with an error response (2) containing a nonce.  The client
+   creates a cryptographic digest from parts of the request, from the
+   nonce it received from the server, and a shared secret.  The client
+   re-transmits the request (3) to the server, but now includes the
+   digest within the packet.  The server does the same digest
+   calculation as the client and compares the result with the digest it
+   received in (3).  If the digest values are identical, the server
+   grants access to the resource and sends a positive response to the
+   client (4).  If the digest values differ, the server sends a negative
+   response to the client (4).
+
+   Instead of maintaining a local user database, the server could use
+   RADIUS to access a centralized user database.  However, RADIUS
+   [RFC2865] does not include support for HTTP digest authentication.
+   The RADIUS client can not use the User-Password attribute, since it
+   does not receive a password from the HTTP-style client.  The CHAP-
+   Challenge and CHAP-Password attributes are also not suitable since
+
+
+
+Sterman, et al.          Expires April 17, 2006                 [Page 5]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   the CHAP algorithm is not compatible with HTTP digest.
+
+   This document defines new attributes that enable the RADIUS server to
+   perform the digest calculation defined in [RFC2617], providing
+   support for Digest Authentication as a native authentication
+   mechanism within RADIUS.
+
+   This document defines new attributes that enable the RADIUS server to
+   perform the digest calculation defined in [RFC2617].
+
+   The nonces required by the digest algorithm are either generated by
+   the RADIUS client or by the RADIUS server.  A mix of nonce generation
+   modes is not supported.  This specification assumes that both the
+   RADIUS client and server are appropriately configured to generate the
+   nonces in either the RADIUS client or the RADIUS server, but not in
+   both at the same time.  Implementations, though, do not have the
+   means to verify this behavior.
+
+1.3.1.  Scenario 1, RADIUS client chooses nonces
+
+
+
+
+
+                        HTTP/SIP           RADIUS
+
+               +-----+    (1)    +-----+           +-----+
+               |     |==========>|     |           |     |
+               |     |    (2)    |     |           |     |
+               |     |<==========|     |           |     |
+               |     |    (3)    |     |           |     |
+               |     |==========>|     |           |     |
+               |  A  |           |  B  |    (4)    |  C  |
+               |     |           |     |---------->|     |
+               |     |           |     |    (5)    |     |
+               |     |           |     |<----------|     |
+               |     |    (6)    |     |           |     |
+               |     |<==========|     |           |     |
+               +-----+           +-----+           +-----+
+
+               ====> HTTP/SIP
+               ----> RADIUS
+
+
+
+   Figure 2: RADIUS client chooses nonces
+
+   The roles played by the entities in this scenario are as follows:
+
+
+
+Sterman, et al.          Expires April 17, 2006                 [Page 6]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   A: HTTP client / SIP UA
+
+   B: {HTTP server / HTTP proxy server / SIP proxy server / SIP UAS}
+   acting also as a RADIUS NAS (RADIUS client)
+
+   C: RADIUS server
+
+   The relevant order of messages sent in this scenario is as follows:
+
+   A sends B an HTTP/SIP request without authorization header (step 1).
+   B challenges A sending an HTTP/SIP "407 / 401 (Proxy) Authorization
+   required" response containing a locally generated nonce (step 2).  A
+   sends B an HTTP/SIP request with authorization header (step 3).  B
+   sends C a RADIUS Access-Request with attributes described in this
+   document (step 4).  C responds to B with a RADIUS Access-Accept/
+   Access-Reject response (step 5).  If credentials were accepted, B
+   receives an Access-Accept response and the message sent from A is
+   considered authentic.  If B receives an Access-Reject response,
+   however, B then responds to A with a "407 / 401 (Proxy) Authorization
+   required" response (step 6).
+
+1.3.2.  Scenario 2, RADIUS server chooses nonces
+
+   While the usage scenario described in Section 1.3.1 minimizes the
+   load on the RADIUS server, alternatives are required in some
+   situations.  When using AKA [RFC3310] the nonce is partially derived
+   from a precomputed authentication vector, which is often stored
+   centrally.
+
+   Figure 3 depicts a scenario in which the RADIUS server chooses
+   nonces.  In this case entities A and B communicate using HTTP or SIP,
+   while entities B and C communicate using RADIUS."
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                 [Page 7]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+                        HTTP/SIP           RADIUS
+
+               +-----+    (1)    +-----+           +-----+
+               |     |==========>|     |    (2)    |     |
+               |     |           |     |---------->|     |
+               |     |           |     |    (3)    |     |
+               |     |    (4)    |     |<----------|     |
+               |     |<==========|     |           |     |
+               |     |    (5)    |     |           |     |
+               |     |==========>|     |           |     |
+               |  A  |           |  B  |    (6)    |  C  |
+               |     |           |     |---------->|     |
+               |     |           |     |    (7)    |     |
+               |     |           |     |<----------|     |
+               |     |    (8)    |     |           |     |
+               |     |<==========|     |           |     |
+               +-----+           +-----+           +-----+
+
+               ====> HTTP/SIP
+               ----> RADIUS
+
+
+
+   Figure 3: RADIUS server chooses nonces
+
+   The roles played by the entities in this scenario are as follows:
+
+   A: HTTP client / SIP UA
+
+   B: {HTTP server / HTTP proxy server / SIP proxy server / SIP UAS}
+   acting also as a RADIUS NAS
+
+   C: RADIUS server
+
+   The following messages are sent in this scenario:
+
+   A sends B an HTTP/SIP request without an authorization header (step
+   1).  B sends an Access-Request packet with the newly defined Digest-
+   Method and Digest-URI attributes but without a Digest-Nonce attribute
+   to the RADIUS server, C (step 2).  C chooses a nonce and responds
+   with an Access-Challenge (step 3).  This Access-Challenge contains
+   Digest attributes, from which B takes values to construct an HTTP/SIP
+   "(Proxy) Authorization required" response.  The remaining steps are
+   identical with scenario 1 (Section 1.3.1): B sends this response to A
+   (step 4).  A resends its request with its credentials (step 5).  B
+   sends an Access-Request to C (step 6).  C checks the credentials and
+   replies with Access-Accept or Access-Reject (step 7).  Dependent on
+   the C's result, B processes A's request or rejects it with a "(Proxy)
+
+
+
+Sterman, et al.          Expires April 17, 2006                 [Page 8]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   Authorization required" response (step 8).
+
+
+2.  Interoperability
+
+   An implementation supporting this extension MUST include a Digest-
+   Response attribute within an Access-Request packet where Digest
+   Authentication is desired.  An Access-Request MUST NOT contain both a
+   Digest-Response attribute and another authentication attribute, such
+   as User-Password, CHAP-Password, or EAP-Message.
+
+   RADIUS clients and servers MUST support both nonce generation modes.
+   As there is no automatic capability exchange, the operator MUST make
+   sure that the RADIUS client software uses the correct nonce
+   generation mode when accessing a specific RADIUS server:
+   o  If the RADIUS server generates nonces, its RADIUS clients MUST NOT
+      try to generate nonces.
+   o  If the RADIUS server does not generate nonces, its RADIUS clients
+      MUST generate nonces locally.
+   o  If at least one HTTP-style client requires AKA authentication
+      [RFC3310], the RADIUS server MUST generate nonces and its RADIUS
+      clients MUST NOT generate nonces locally.
+   RADIUS implementations MUST offer respective configuration options.
+
+
+3.  Detailed Description
+
+3.1.  RADIUS Client Behavior
+
+   The attributes described in this document are sent in cleartext.
+   Therefore were a RADIUS client to accept secured connections (https
+   or sips) from HTTP-style clients, this could result in information
+   intentionally protected by HTTP-style clients being sent in the clear
+   during the RADIUS exchange.
+
+   On reception of an HTTP-style request message, the RADIUS client
+   checks whether it is authorized to authenticate the request.  Where
+   an HTTP-style request traverses several proxies and each of the
+   proxies requests to authenticate the HTTP-style client, the request
+   at the HTTP-style server may contain multiple credential sets.
+
+   The RADIUS client can use the 'realm' directive in HTTP to determine
+   which credentials are applicable.  Where none of the realms are of
+   interest, the RADIUS client MUST behave as though no relevant
+   credentials were sent.  In all situations the RADIUS client MUST send
+   zero or exactly one credential to the RADIUS server.  The RADIUS
+   client MUST choose the credential of the (Proxy-)Authorization header
+   if the realm directive matches its locally configured realm.
+
+
+
+Sterman, et al.          Expires April 17, 2006                 [Page 9]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   If such a (Proxy-)Authorization header is present and contains HTTP
+   digest information, the RADIUS client checks the 'nonce' parameter.
+   If the RADIUS client generates nonces but did not issue the received
+   nonce, it responds with a 401 (Unauthorized) or 407 (Proxy
+   Authentication Required) to the HTTP-style client.  In this error
+   response, the RADIUS client sends a new nonce.
+
+   If the RADIUS client recognizes the nonce or does not generate
+   nonces, it takes the header directives and puts them into a RADIUS
+   Access-Request packet.  It puts the 'response' directive into a
+   Digest-Response attribute and the realm / nonce / digest-uri / qop /
+   algorithm / cnonce / nc / username / opaque directives into the
+   respective Digest-Realm / Digest-Nonce / Digest-URI / Digest-Qop /
+   Digest-Algorithm / Digest-CNonce / Digest-Nonce-Count / Digest-
+   Username / Digest-Opaque attributes.  The request method is put into
+   the Digest-Method attribute.  The RADIUS client adds a Message-
+   Authenticator attribute, defined in [RFC3579] and sends the Access-
+   Request packet to the RADIUS server.
+
+   The RADIUS server processes the packet and responds with an Access-
+   Accept or an Access-Reject.
+
+   The RADIUS client constructs an Authentication-Info header:
+   o  If the Access-Accept packet contains a Digest-Response-Auth
+      attribute, the RADIUS client checks the Digest-Qop attribute:
+      *  If the Digest-Qop attribute's value is 'auth' or not specified,
+         the RADIUS client puts the Digest-Response-Auth attribute's
+         content into the Authentication-Info header's 'rspauth'
+         directive of the HTTP-style response.
+      *  If the Digest-Qop attribute's value is 'auth-int', the RADIUS
+         client ignores the Access-Accept packet and behaves like it had
+         received an Access-Reject packet (Digest-Response-Auth can't be
+         correct as the RADIUS server does not know the contents of the
+         HTTP-style response's body).
+   o  If the Access-Accept packet contains a Digest-HA1 attribute, the
+      RADIUS client checks the 'qop' and 'algorithm' directives in the
+      Authorization header of the HTTP-style request it wants to
+      authorize:
+      *  If the 'qop' directive is missing or its value is 'auth', the
+         RADIUS client ignores the Digest-HA1 attribute.  It does not
+         include an Authentication-Info header into its HTTP-style
+         response.
+      *  If the 'qop' directive's value is 'auth-int' and at least one
+         of the following conditions is true, the RADIUS client
+         calculates the contents of the HTTP-style response's 'rspauth'
+         directive:
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 10]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+         +  The algorithm directive's value is 'MD5-sess' or 'AKAv1-MD5-
+            sess'.
+         +  The packets between RADIUS client and RADIUS server are
+            protected with IPsec (see Section 9).
+         It creates the HTTP-style response message and calculates the
+         hash of this message's body.  It uses the result and the
+         Digest-URI attribute's value of the corresponding Access-
+         Request packet to perform the H(A2) calculation.  It takes the
+         Digest-Nonce, Digest-Nonce-Count, Digest-CNonce and Digest-Qop
+         values of the corresponding Access-Request and the Digest-HA1
+         attribute's value to finish the computation of the 'rspauth'
+         value.
+   o  If the Access-Accept packet contains neither a Digest-Response-
+      Auth nor a Digest-HA1 attribute, the RADIUS client will not create
+      an Authentication-Info header for its HTTP-style response.
+
+   The RADIUS server MAY have added a Digest-Nextnonce attribute into an
+   Access-Accept packet.  If the RADIUS client discovers this, it puts
+   the contents of this attribute into a 'nextnonce' directive.  Now it
+   can send an HTTP-style response.
+
+   If the RADIUS client did receive an HTTP-style request without a
+   (Proxy-)Authorization header matching its locally configured realm
+   value, it obtains a new nonce and sends an error response (401 or
+   407) containing a (Proxy-)Authenticate header.
+
+   If the RADIUS client receives an Access-Reject from the RADIUS
+   server, it sends an error response to the HTTP-style request it has
+   received.  If the RADIUS client does not receive a response, it
+   retransmits or fails over to another RADIUS server as described in
+   [RFC2865].
+
+   The RADIUS client has three ways to obtain nonces: it generates them
+   locally, it has received one in a Digest-Nextnonce attribute of a
+   previously received Access-Accept packet, or it asks the RADIUS
+   server for one.  To do the latter, it sends an Access-Request
+   containing a Digest-Method and a Digest-URI attribute but without a
+   Digest-Nonce attribute.  It adds a Message-Authenticator (see
+   [RFC3579]) attribute to the Access-Request packet.  The RADIUS server
+   chooses a nonce and responds with an Access-Challenge containing a
+   Digest-Nonce attribute.
+
+   The RADIUS server can send Digest-Qop, Digest-Algorithm, Digest-
+   Realm, Digest-Domain and Digest-Opaque attributes in the Access-
+   Challenge carrying the nonce.  If these attributes are present, the
+   client MUST use them.
+
+   If the RADIUS client receives an Access-Challenge packet in response
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 11]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   to an Access-Request containing a Digest-Nonce attribute, the RADIUS
+   server did not accept the nonce.  If a Digest-Stale attribute is
+   present in the Access-Challenge and has a value of 'true' (without
+   quotes), the RADIUS client sends an error (401 or 407) response
+   containing WWW-/Proxy-Authenticate header with the directive 'stale'
+   and the digest directives derived from the Digest-* attributes.
+
+3.2.  RADIUS Server Behavior
+
+   If the RADIUS server receives an Access-Request packet with a Digest-
+   Method and a Digest-URI attribute but without a Digest-Nonce
+   attribute, it chooses a nonce.  It puts the nonce into a Digest-Nonce
+   attribute and sends it in an Access-Challenge packet to the RADIUS
+   client.  The RADIUS server MUST add Digest-Realm, Message-
+   Authenticator (see [RFC3579]), SHOULD add Digest-Algorithm, one or
+   more Digest-Qop and MAY add Digest-Domain, Digest-Opaque attributes
+   to the Access-Challenge packet.  If the server cannot choose a nonce,
+   it replies with an Access-Reject packet.
+
+   If the RADIUS server receives an Access-Request packet containing a
+   Digest-Response attribute, it looks for the following attributes:
+   Digest-Realm, Digest-Nonce, Digest-Method, Digest-URI, Digest-Qop,
+   Digest-Algorithm, Digest-Username.  Depending on the content of
+   Digest-Algorithm and Digest-Qop, it looks for Digest-Entity-Body-
+   Hash, Digest-CNonce and Digest-AKA-Auts, too.  See [RFC2617] and
+   [RFC3310] for details.  If the Digest-Algorithm attribute is missing,
+   'MD5' is assumed.  If the RADIUS server has issued a Digest-Opaque
+   attribute along with the nonce, the Access-Request MUST have a
+   matching Digest-Opaque attribute.
+
+   If mandatory attributes are missing, it MUST respond with an Access-
+   Reject packet.  If the attributes are present, the RADIUS server
+   calculates the digest response as described in [RFC2617].  To look up
+   the password, the RADIUS server uses the RADIUS User-Name attribute.
+   The RADIUS server MUST check if the user identified by the User-Name
+   attribute
+   o  is authorized to access the protection space defined by the
+      Digest-URI and Digest-Realm attributes,
+   o  is authorized to use the URI included in the SIP-AOR attribute, if
+      this attribute is present.
+   If any of those checks fails, the RADIUS server MUST send an Access-
+   Reject.
+
+   Correlation between User-Name and SIP-AOR AVP values is required just
+   to avoid that any user can register or misuse a SIP-AOR allocated to
+   another user.
+
+   A RADIUS server MUST check if the RADIUS client is authorized to
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 12]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   serve users of the realm mentioned in the Digest-Realm attribute.  If
+   the RADIUS client is not authorized, the RADIUS server MUST send an
+   Access-Reject.  The RADIUS server SHOULD log the event so as to
+   notify the operator, and MAY take additional action such as sending
+   an Access-Reject in response to all future requests from this client,
+   until this behavior is reset by management action.
+
+   All values required for the digest calculation are taken from the
+   Digest attributes described in this document.  If the calculated
+   digest response equals the value received in the Digest-Response
+   attribute, the authentication was successful.  If not, the RADIUS
+   server responds with an Access-Reject.
+
+   If the authentication was successful, the RADIUS server adds an
+   attribute to the Access-Accept packet which can be used by the RADIUS
+   client to construct an Authentication-Info header:
+   o  If the Digest-Qop attribute's value is 'auth' or unspecified, the
+      RADIUS server SHOULD put a Digest-Response-Auth attribute into the
+      Access-Accept packet
+   o  If the Digest-Qop attribute's value is 'auth-int' and at least one
+      of the following conditions is true, the RADIUS server SHOULD put
+      a Digest-HA1 attribute into the Access-Accept packet:
+      *  The Digest-Algorithm attribute's value is 'MD5-sess' or 'AKAv1-
+         MD5-sess'.
+      *  The packets between RADIUS client and RADIUS server are
+         protected with IPsec (see Section 9).
+   In all other cases, Digest-Response-Auth or Digest-HA1 MUST NOT be
+   sent.
+
+   RADIUS servers issuing nonces MAY construct a Digest-Nextnonce
+   attribute and add it to the Access-Accept packet.  This is useful to
+   limit the lifetime of a nonce and to save a round-trip in future
+   requests (see nextnonce discussion in [RFC2617], section 3.2.3).  The
+   RADIUS server adds a Message-Authenticator attribute (see [RFC3579])
+   and sends the Access-Accept packet to the RADIUS client.
+
+   If the RADIUS server does not accept the nonce received in an Access-
+   Request packet but authentication was successful, the RADIUS server
+   MUST send an Access-Challenge packet containing a Digest-Stale
+   attribute set to 'true' (without quotes).  The RADIUS server MUST add
+   Message-Authenticator (see [RFC3579]), Digest-Nonce, Digest-Realm,
+   SHOULD add Digest-Algorithm, one or more Digest-Qop and MAY add
+   Digest-Domain, Digest-Opaque attributes to the Access-Challenge
+   packet.
+
+
+4.  New RADIUS attributes
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 13]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   If not stated otherwise, the attributes have the following format:
+
+
+
+
+   0                   1                   2
+   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |     Type      |  Length       | Text ...
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+4.1.  Digest-Response attribute
+
+   Description
+         If this attribute is present in an Access-Request message, a
+         RADIUS server implementing this specification MUST treat the
+         Access-Request as a request for Digest Authentication.  When a
+         RADIUS client receives a (Proxy-)Authorization header, it puts
+         the request-digest value into a Digest-Response attribute.
+         This attribute (which enables the user to prove possession of
+         the password) MUST only be used in Access-Requests.
+   Type
+         [IANA: use 102 if possible] for Digest-Response.
+   Length
+         >= 3
+   Text
+         When using HTTP digest, the text field is 32 octets long and
+         contains a hexadecimal representation of 16 octet digest value
+         as it was calculated by the authenticated client.  Other digest
+         algorithms MAY define different digest lengths.  The text field
+         MUST be copied from request-digest of digest-response
+         ([RFC2617]) without quotes.
+
+4.2.  Digest-Realm attribute
+
+   Description
+         This attribute describes a protection space of the RADIUS
+         server.  See [RFC2617] 1.2 for details.  It MUST only be used
+         in Access-Request and Access-Challenge packets.
+   Type
+         [IANA: use 103 if possible] for Digest-Realm
+   Length
+
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 14]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+         >=3
+   Text
+         In Access-Requests, the RADIUS client takes the value of the
+         realm directive (realm-value according to [RFC2617]) without
+         quotes from the HTTP-style request it wants to authenticate.
+         In Access-Challenge packets, the RADIUS server puts the
+         expected realm value into this attribute.
+
+4.3.  Digest-Nonce attribute
+
+   Description
+         This attribute holds a nonce to be used in the HTTP Digest
+         calculation.  If the Access-Request had a Digest-Method and a
+         Digest-URI but no Digest-Nonce attribute and the RADIUS server
+         is configured to choose nonces, it MUST put a Digest-Nonce
+         attribute into its Access-Challenge packet.  This attribute
+         MUST only be used in Access-Request and Access-Challenge
+         packets.
+   Type
+         [IANA: use 104 if possible] for Digest-Nonce
+   Length
+         >=3
+   Text
+         In Access-Requests, the RADIUS client takes the value of the
+         nonce directive (nonce-value in [RFC2617]) without quotes from
+         the HTTP-style request it wants to authenticate.  In Access-
+         Challenge packets, the attribute contains the nonce selected by
+         the RADIUS server.
+
+4.4.  Digest-Response-Auth attribute
+
+   Description
+         This attribute enables the RADIUS server to prove possession of
+         the password.  If the previously received Digest-Qop attribute
+         was 'auth-int' (without quotes), the RADIUS server MUST send a
+         Digest-HA1 attribute instead of a Digest-Response-Auth
+         attribute.  The Digest-Response-Auth attribute MUST only be
+         used in Access-Accept packets.  The RADIUS client puts the
+         attribute value without quotes into the rspauth directive of
+         the Authentication-Info header.
+   Type
+         [IANA: use 105 if possible] for Digest-Response-Auth.
+   Length
+         >= 3
+
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 15]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   Text
+         The RADIUS server calculates a digest according to section
+         3.2.3 of [RFC2617] and copies the result into this attribute.
+         Other digest algorithms than the one defined in [RFC2617] MAY
+         define digest lengths other than 32.
+
+4.5.  Digest-Nextnonce attribute
+
+   This attribute holds a nonce to be used in the HTTP Digest
+   calculation.
+
+   Description
+         If the RADIUS server is configured to choose nonces it MAY put
+         a Digest-Nextnonce attribute into an Access-Accept packet.  If
+         this attribute is present, the RADIUS client MUST put the
+         contents of this attribute into the nextnonce directive of an
+         Authentication-Info header in its HTTP-style response.  This
+         attribute MUST only be used in Access-Accept packets.
+   Type
+         [IANA: use 106 if possible] for Digest-Nextnonce
+   Length
+         >=3
+   Text
+         It is recommended that this text be base64 or hexadecimal data.
+
+4.6.  Digest-Method attribute
+
+   Description
+         This attribute holds the method value to be used in the HTTP
+         Digest calculation.  This attribute MUST only be used in
+         Access-Request packets.
+   Type
+         [IANA: use 107 if possible] for Digest-Method
+   Length
+         >=3
+   Text
+         In Access-Requests, the RADIUS client takes the value of the
+         request method from the HTTP-style request it wants to
+         authenticate.
+
+4.7.  Digest-URI attribute
+
+   Description
+         This attribute is used to transport the contents of the digest-
+         uri directive or the URI of the HTTP-style request.  It MUST
+         only be used in Access-Request packets.
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 16]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   Type
+         [IANA: use 108 if possible] for Digest-URI
+   Length
+         >=3
+   Text
+         If the HTTP-style request has an Authorization header, the
+         RADIUS client puts the value of the "uri" directive in the
+         (known as "digest-uri-value" in section 3.2.2 of [RFC2617])
+         without quotes into this attribute.  If there is no
+         Authorization header, the RADIUS client takes the value of the
+         request URI from the HTTP-style request it wants to
+         authenticate.
+
+4.8.  Digest-Qop attribute
+
+   Description
+         This attribute holds the Quality of Protection parameter that
+         influences the HTTP Digest calculation.  This attribute MUST
+         only be used in Access-Request and Access-Challenge packets.  A
+         RADIUS client SHOULD insert one of the Digest-Qop attributes it
+         has received in a previous Access-Challenge packet.  RADIUS
+         servers SHOULD insert at least one Digest-Qop attribute in an
+         Access-Challenge packet.  Digest-Qop is optional in order to
+         preserve backward compatibility with a minimal implementation
+         of [RFC2069].
+   Type
+         [IANA: use 109 if possible] for Digest-Qop
+   Length
+         >=3
+   Text
+         In Access-Requests, the RADIUS client takes the value of the
+         qop directive (qop-value as described in [RFC2617]) without the
+         quotes from the HTTP-style request it wants to authenticate.
+         In Access-Challenge packets, the RADIUS server puts a desired
+         qop-value into this attribute.  If the RADIUS server supports
+         more than one "quality of protection" value, it puts each qop-
+         value into a separate Digest-Qop attribute.
+
+4.9.  Digest-Algorithm attribute
+
+   Type
+         This attribute holds the algorithm parameter that influences
+         the HTTP Digest calculation.  It MUST only be used in Access-
+         Request and Access-Challenge packets.  If this attribute is
+         missing, "MD5" is assumed.
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 17]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   Type
+         [IANA: use 110 if possible] for Digest-Algorithm
+   Length
+         >=3
+   Text
+         In Access-Requests, the RADIUS client takes the value of the
+         algorithm directive (as described in [RFC2617], section 3.2.1)
+         without the quotes from the HTTP-style request it wants to
+         authenticate.  In Access-Challenge packets, the RADIUS server
+         SHOULD put the desired algorithm into this attribute.
+
+4.10.  Digest-Entity-Body-Hash attribute
+
+   Description
+         When using the qop level 'auth-int', a hash of the HTTP-style
+         message body's contents is required for digest calculation.
+         Instead of sending the complete body of the message, only its
+         hash value is sent.  This hash value can be used directly in
+         the digest calculation.
+         The clarifications described in section 22.4 of [RFC2617] about
+         the hash of empty entity bodies apply to the Digest-Entity-
+         Body-Hash attribute.  This attribute MUST only be sent in
+         Access-Request packets.
+   Type
+         [IANA: use 111 if possible] for Digest-Entity-Body-Hash
+   Length
+         >=3
+   Text
+         The attribute holds the hexadecimal representation of H(entity-
+         body).  This hash is required by certain authentication
+         mechanisms, such as HTTP Digest with quality of protection set
+         to "auth-int".  RADIUS clients MUST use this attribute to
+         transport the hash of the entity body when HTTP Digest is the
+         authentication mechanism and the RADIUS server requires to
+         verify the integrity of the entity body (e.g., qop parameter
+         set to "auth-int").  Extensions to this document may define
+         support for authentication mechanisms other than HTTP Digest.
+
+4.11.  Digest-CNonce attribute
+
+   Description
+         This attribute holds the client nonce parameter that is used in
+         the HTTP Digest calculation.  It MUST only be used in Access-
+         Request packets.
+
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 18]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   Type
+         [IANA: use 112 if possible] for Digest-CNonce
+   Length
+         >=3
+   Text
+         This attribute includes the value of the cnonce-value [RFC2617]
+         without quotes, taken from the HTTP-style request.
+
+4.12.  Digest-Nonce-Count attribute
+
+   Description
+         This attribute includes the nonce count parameter that is used
+         to detect replay attacks.  The attribute MUST only be used in
+         Access-Request packets.
+   Type
+         [IANA: use 113 if possible] for Digest-Nonce-Count
+   Length
+         10
+   Text
+         In Access-Requests, the RADIUS client takes the value of the nc
+         directive (nc-value according to [RFC2617]) without quotes from
+         the HTTP-style request it wants to authenticate.
+
+4.13.  Digest-Username attribute
+
+   Description
+         This attribute holds the user name used in the HTTP digest
+         calculation.  The RADIUS server MUST use this attribute only
+         for the purposes of calculating the digest.  In order to
+         determine the appropriate user credentials, the RADIUS server
+         MUST use the User-Name (1) attribute, and MUST NOT use the
+         Digest-Username attribute.  This attribute MUST only be used in
+         Access-Request packets.
+   Type
+         [IANA: use 114 if possible] for Digest-Username
+   Length
+         >= 3
+   Text
+         In Access-Requests, the RADIUS client takes the value of the
+         username directive (username-value according to [RFC2617])
+         without quotes from the HTTP-style request it wants to
+         authenticate.
+
+4.14.  Digest-Opaque attribute
+
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 19]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   Description
+         This attribute holds the opaque parameter that is passed to the
+         HTTP-style client.  The HTTP-style client will pass this value
+         back to the server (i.e. the RADIUS client) without
+         modification.  This attribute is only used when the RADIUS
+         server chooses nonces and MUST only be used in Access-Request
+         and Access-Challenge packets.
+   Type
+         [IANA: use 115 if possible] for Digest-Opaque
+   Length
+         >=3
+   Text
+         In Access-Requests, the RADIUS client takes the value of the
+         opaque directive (opaque-value according to [RFC2617]) without
+         quotes from the HTTP-style request it wants to authenticate and
+         puts it into this attribute.  In Access-Challenge packets, the
+         RADIUS server MAY include this attribute.
+
+4.15.  Digest-Auth-Param attribute
+
+   Description
+         This attribute is a placeholder for future extensions and
+         corresponds to the "auth-param" parameter defined in section
+         3.2.1 of [RFC2617].  The Digest-Auth-Param is the mechanism
+         whereby the RADIUS client and RADIUS server can exchange auth-
+         param extension parameters contained within Digest headers that
+         are not understood by the RADIUS client and for which there are
+         no corresponding stand-alone attributes.
+         Unlike the previously listed Digest-* attributes, the Digest-
+         Auth-Param contains not only the value, but also the parameter
+         name, since the parameter name is unknown to the RADIUS client.
+         If the Digest header contains several unknown parameters, then
+         the RADIUS implementation MUST repeat this attribute and each
+         instance MUST contain one different unknown Digest parameter/
+         value combination.  This attribute MUST ONLY be used in Access-
+         Request, Access-Challenge, or Access-Accept packets.
+   Type
+         [IANA: use 116 if possible] for Digest-Auth-Param
+   Length
+         >=3
+   Text
+         The text consists of the whole parameter, including its name
+         and the equal ('=') sign and quotes.
+
+4.16.  Digest-AKA-Auts attribute
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 20]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   Description
+         This attribute holds the auts parameter that is used in the
+         Digest AKA ([RFC3310]) calculation.  It is only used if the
+         algorithm of the digest-response denotes a version of AKA
+         digest [RFC3310].  This attribute MUST only be used in Access-
+         Request packets.
+   Type
+         [IANA: use 117 if possible] for Digest-AKA-Auts
+   Length
+         >=3
+   Text
+         In Access-Requests, the RADIUS client takes the value of the
+         auts directive (auts-param according to section 3.4 of
+         [RFC3310]) without quotes from the HTTP-style request it wants
+         to authenticate.
+
+4.17.  Digest-Domain attribute
+
+   Description
+         When a RADIUS client has asked for a nonce, the RADIUS server
+         MAY send one or more Digest-Domain attributes in its Access-
+         Challenge packet.  The RADIUS client puts them into the quoted,
+         space-separated list of URIs of the 'domain' directive of a
+         WWW-Authenticate header.  The URIs in the list define the
+         protection space (see [RFC2617], section 3.2.1).  RADIUS
+         servers MAY send one or more attributes of this type in Access-
+         Challenge packets.  This attribute MUST only be used in Access-
+         Challenge packets.
+   Type
+         [IANA: use 118 if possible] for Digest-Domain
+   Length
+         3
+   Text
+         This attribute consists of a single URI, that defines a
+         protection space.
+
+4.18.  Digest-Stale attribute
+
+   Description
+         This attribute is sent by a RADIUS server in order to notify
+         the RADIUS client whether it has accepted a nonce.  If the
+         nonce presented by the RADIUS client was stale, the value is
+         'true' and is 'false' otherwise.  The RADIUS client puts the
+         content of this attribute into a 'stale' directive of the WWW-
+         Authenticate header in the HTTP-style response to the request
+         it wants to authenticate.  The attribute MUST only be used in
+         Access-Challenge packets and only if the RADIUS server chooses
+         nonces.
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 21]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   Type
+         [IANA: use 119 if possible] for Digest-Stale
+   Length
+         3
+   Text
+         The attribute has either the value 'true' or 'false' (both
+         values without quotes).
+
+4.19.  Digest-HA1 attribute
+
+   Description
+         This attribute is used to allow the generation of an
+         Authentication-Info header, even if the HTTP-style response's
+         body is required for the calculation of the rspauth value.  It
+         SHOULD be used in Access-Accept packets if the required quality
+         of protection ('qop') is 'auth-int'.
+         This attribute MUST NOT be sent if the qop parameter was not
+         specified or has a value of 'auth' (in this case, use Digest-
+         Response-Auth instead).
+         The Digest-HA1 attribute MUST only be sent by the RADIUS server
+         or processed by the RADIUS client if at least one of the
+         following conditions is true:
+         +  The Digest-Algorithm attribute's value is 'MD5-sess' or
+            'AKAv1-MD5-sess'.
+         +  The packets between RADIUS client and RADIUS server are
+            protected with IPsec (see Section 9).
+         This attribute MUST only be used in Access-Accept packets.
+   Type
+         [IANA: use 120 if possible] for Digest-HA1
+   Length
+         >= 3
+   Text
+         This attribute contains the hexadecimal representation of H(A1)
+         as described in [RFC2617], section 3.1.3, 3.2.1 and 3.2.2.2.
+
+4.20.  SIP-AOR
+
+   Type
+         This attribute is used for the authorization of SIP messages.
+         The SIP-AOR attribute identifies the URI the use of which must
+         be authenticated and authorized.  The RADIUS server uses this
+         attribute to authorize the processing of the SIP request.  The
+         SIP-AOR can be derived from, e.g., the To header field in a SIP
+         REGISTER request (user under registration), or the From header
+         field in other SIP requests.  However, the exact mapping of
+         this attribute to SIP can change due to new developments in the
+         protocol.  This attribute MUST only be used when the RADIUS
+         client wants to authorize SIP users and MUST only be used in
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 22]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+         Access-Request packets.
+   Type
+         [IANA:use 121 if possible] for SIP-AOR
+   Length
+         >=3
+   Text
+         The syntax of this attribute corresponds either to a SIP URI
+         (with the format defined in [RFC3261] or a TEL URI (with the
+         format defined in [RFC3966]).
+         The SIP-AOR attribute holds the complete URI, including
+         parameters and other parts.  It is up to the RADIUS server what
+         components of the URI are regarded in the authorization
+         decision.
+
+
+5.  Diameter Compatibility
+
+   This document defines support for Digest Authentication in RADIUS.  A
+   companion document "Diameter Session Initiation Protocol (SIP)
+   Application" [I-D.ietf-aaa-diameter-sip-app] defines support for
+   Digest Authentication in Diameter, and addresses compatibility issues
+   between RADIUS and Diameter.
+
+
+6.  Table of Attributes
+
+   The following table provides a guide to which attributes may be found
+   in which kinds of packets, and in what quantity.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 23]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+
+
+
+     Req   Accept   Reject   Challenge   #     Attribute                
+     1     0        0        0           1     User-Name                
+     1     1        1        1           80    Message-Authenticator    
+     0-1   0        0        0           TBD   Digest-Response          
+     0-1   0        0        1           TBD   Digest-Realm             
+     0-1   0        0        1           TBD   Digest-Nonce             
+     0     0-1      0        0           TBD   Digest-Response-Auth     
+                                               (see Note 1, 2)          
+     0     0-1      0        0           TBD   Digest-Nextnonce         
+     0-1   0        0        0           TBD   Digest-Method            
+     0-1   0        0        0           TBD   Digest-URI               
+     0-1   0        0        1+          TBD   Digest-Qop               
+     0-1   0        0        0-1         TBD   Digest-Algorithm (see    
+                                               Note 3)                  
+     0-1   0        0        0           TBD   Digest-Entity-Body-Hash  
+     0-1   0        0        0           TBD   Digest-CNonce            
+     0-1   0        0        0           TBD   Digest-Nonce-Count       
+     0-1   0        0        0           TBD   Digest-Username          
+     0-1   0        0        0-1         TBD   Digest-Opaque            
+     0+    0+       0        0+          TBD   Digest-Auth-Param        
+     0-1   0        0        0           TBD   Digest-AKA-Auts          
+     0     0        0        0+          TBD   Digest-Domain            
+     0     0        0        0-1         TBD   Digest-Stale             
+     0     0-1      0        0           TBD   Digest-HA1 (see Note 1,  
+                                               2)                       
+     0-1   0        0        0           TBD   SIP-AOR                  
+
+                                  Table 1
+
+
+
+
+
+   [Note 1] Digest-HA1 MUST be used instead of Digest-Response-Auth if
+      Digest-Qop is 'auth-int'.
+   [Note 2] Digest-Response-Auth MUST be used instead of Digest-HA1 if
+      Digest-Qop is 'auth'.
+   [Note 3] If Digest-Algorithm is missing, 'MD5' is assumed
+
+
+7.  Example
+
+   This is an example sniffed from the traffic between a softphone (A),
+   a Proxy Server (B) and example.com RADIUS server (C).  The
+   communication between the Proxy Server and a SIP PSTN gateway is
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 24]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   omitted for brevity.  The SIP messages are not shown completely.
+
+
+
+   A->B
+
+      INVITE sip:97226491335@example.com SIP/2.0
+      From: <sip:12345678@example.com>
+      To: <sip:97226491335@example.com>
+
+
+   B->A
+
+      SIP/2.0 100 Trying
+
+
+   B->A
+
+      SIP/2.0 407 Proxy Authentication Required
+      Proxy-Authenticate: Digest realm="example.com"
+           ,nonce="3bada1a0", algorithm="md5"
+      Content-Length: 0
+
+
+   A->B
+
+      ACK sip:97226491335@example.com SIP/2.0
+
+
+   A->B
+
+      INVITE sip:97226491335@example.com SIP/2.0
+      Proxy-Authorization: Digest algorithm="md5",nonce="3bada1a0"
+           ,opaque="",realm="example.com"
+           ,response="f3ce87e6984557cd0fecc26f3c5e97a4"
+           ,uri="sip:97226491335@10.0.69.38",username="12345678"
+      From: <sip:12345678@example.com>
+      To: <sip:97226491335@example.com>
+
+
+   B->C
+
+      Code = 1 (Access-Request)
+      Attributes:
+      NAS-IP-Address = a 0 45 26 (10.0.69.38)
+      NAS-Port-Type = 5 (Virtual)
+      User-Name = "12345678"
+      Digest-Response = "f3ce87e6984557cd0fecc26f3c5e97a4"
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 25]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+      Digest-Realm = "example.com"
+      Digest-Nonce = "3bada1a0"
+      Digest-Method = "INVITE"
+      Digest-URI = "sip:97226491335@example.com"
+      Digest-Algorithm = "md5"
+      Digest-Username =  "12345678"
+      SIP-AOR =  "sip:12345678@example.com"
+
+
+   C->B
+
+      Code = 2 (Access-Accept)
+      Attributes:
+      Digest-Response-Auth =
+                      "6303c41b0e2c3e524e413cafe8cce954"
+
+
+   B->A
+
+      SIP/2.0 180 Ringing
+
+
+   B->A
+
+      SIP/2.0 200 OK
+
+
+   A->B
+
+      ACK sip:97226491335@example.com SIP/2.0
+
+
+
+   A second example shows the traffic between a web browser (A), web
+   server (B) and a RADIUS server (C).
+
+
+
+   A->B
+
+      GET /index.html HTTP/1.1
+
+
+   B->A
+
+      HTTP/1.1 407 Authentication Required
+      WWW-Authenticate: Digest realm="example.com",
+          domain="/index.html",
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 26]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+          nonce="a3086ac8", algorithm="md5"
+      Content-Length: 0
+
+
+   A->B
+
+      GET /index.html HTTP/1.1
+      Authorization: Digest algorithm="md5",nonce="a3086ac8"
+           ,opaque="",realm="example.com"
+           ,response="f052b68058b2987aba493857ae1ab002"
+           ,uri="/index.html",username="12345678"
+
+
+   B->C
+
+      Code = 1 (Access-Request)
+      Attributes:
+      NAS-IP-Address = a 0 45 26 (10.0.69.38)
+      NAS-Port-Type = 5 (Virtual)
+      User-Name = "12345678"
+      Digest-Response = "f052b68058b2987aba493857ae1ab002"
+      Digest-Realm = "example.com"
+      Digest-Nonce = "a3086ac8"
+      Digest-Method = "GET"
+      Digest-URI = "/index.html""
+      Digest-Algorithm = "md5"
+      Digest-Username =  "12345678"
+
+
+   C->B
+
+      Code = 2 (Access-Accept)
+      Attributes:
+      Digest-Response-Auth =
+          "e644aa513effbfe1caff67103ff6433c"
+
+
+   B->A
+
+      HTTP/1.1 200 OK
+      ...
+
+      <html>
+      ...
+
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 27]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+8.  IANA Considerations
+
+   This document serves as IANA registration request for a number of
+   values from the RADIUS attribute type number space:
+
+           +-------------------------+------------------------+
+           | placeholder             | value assigned by IANA |
+           +-------------------------+------------------------+
+           | Digest-Response         | TBD                    |
+           | Digest-Realm            | TBD                    |
+           | Digest-Nonce            | TBD                    |
+           | Digest-Nextnonce        | TBD                    |
+           | Digest-Response-Auth    | TBD                    |
+           | Digest-Method           | TBD                    |
+           | Digest-URI              | TBD                    |
+           | Digest-Qop              | TBD                    |
+           | Digest-Algorithm        | TBD                    |
+           | Digest-Entity-Body-Hash | TBD                    |
+           | Digest-CNonce           | TBD                    |
+           | Digest-Nonce-Count      | TBD                    |
+           | Digest-Username         | TBD                    |
+           | Digest-Opaque           | TBD                    |
+           | Digest-Auth-Param       | TBD                    |
+           | Digest-AKA-Auts         | TBD                    |
+           | Digest-Domain           | TBD                    |
+           | Digest-Stale            | TBD                    |
+           | Digest-HA1              | TBD                    |
+           | SIP-AOR                 | TBD                    |
+           +-------------------------+------------------------+
+
+                                  Table 2
+
+
+9.  Security Considerations
+
+   The RADIUS extensions described in this document enable RADIUS to
+   transport the data that required to perform a digest calculation.  As
+   a result, RADIUS inherits the vulnerabilities of HTTP Digest (see
+   [RFC2617], section 4) in addition to RADIUS security vulnerabilities
+   described in [RFC2865] Section 8 and [RFC3579] Section 4.
+
+   An attacker compromising a RADIUS client or proxy can carry out man-
+   in-the-middle attacks even if the paths between A, B and B, C
+   (Figure 2) have been secured with TLS or IPsec.
+
+   The RADIUS server MUST check the Digest-Realm attribute it has
+   received from a client.  If the RADIUS client is not authorized to
+   serve HTTP-style clients of that realm, it might be compromised.
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 28]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   RADIUS clients implementing the extension described in this document
+   may authenticate HTTP-style requests received over the Internet.  As
+   compared with use of RADIUS to authenticate link layer network
+   access, an attacker may find it easier to cover their tracks in such
+   a scenario.
+
+   An attacker can attempt a denial of service attack on one or more
+   RADIUS servers by sending a large number of HTTP-style requests.  To
+   make simple denial of service attacks more difficult, the nonce
+   issuer (RADIUS client or server) MUST check if it has generated the
+   nonce received from an HTTP-style client.  This SHOULD be done
+   statelessly.  For example, a nonce could consist of a
+   cryptographically random part and some kind of signature provided by
+   the RADIUS client, as described in [RFC2617], section 3.2.1.
+
+   RADIUS servers SHOULD include Digest-Qop and Digest-Algorithm
+   attributes in Access-Challenge messages.  A man in the middle can
+   modify or remove those attributes in a bidding down attack, causing
+   the RADIUS client to use a weaker authentication scheme than
+   intended.
+
+   The Message-Authenticator attribute, described in [RFC3579] section
+   3.2 MUST be included in Access-Request, Access-Challenge, Access-
+   Reject and Access-Accept messages that contain attributes described
+   in this specification.
+
+   The Digest-HA1 attribute contains no random components if the
+   algorithm is 'MD5' or 'AKAv1-MD5'.  This makes offline dictionary
+   attacks easier and enables replay attacks.
+
+   HTTP-style clients can use TLS with server side certificates together
+   with HTTP-Digest Authentication.  Instead of TLS, IPsec can be used,
+   too.  TLS or IPsec secure the connection while Digest Authentication
+   authenticates the user.  The RADIUS transaction can be regarded as
+   one leg on the path between the HTTP-style client and the HTTP-style
+   server.  To prevent RADIUS from representing the weak link, a RADIUS
+   client receiving an HTTP-style request via TLS or IPsec could use an
+   equally secure connection to the RADIUS server.  There are several
+   ways to achieve this, for example:
+   o  the RADIUS client may reject HTTP-style requests received over TLS
+      or IPsec
+   o  the RADIUS client require that traffic be sent and received over
+      IPsec.
+   RADIUS over IPsec, if used, MUST conform to the requirements
+   described in [RFC3579] section 4.2.
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 29]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+10.  Acknowledgments
+
+   We would like to acknowledge Kevin Mcdermott (Cisco Systems) /or
+   providing comments and experimental implementation.
+
+   Many thanks to all reviewers, especially to Miguel Garcia, Jari
+   Arkko, Avi Lior and Jun Wang.
+
+
+11.  References
+
+11.1.  Normative References
+
+   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
+              Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [RFC2617]  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.
+
+   [RFC2865]  Rigney, C., Willens, S., Rubens, A., and W. Simpson,
+              "Remote Authentication Dial In User Service (RADIUS)",
+              RFC 2865, June 2000.
+
+   [RFC3261]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
+              A., Peterson, J., Sparks, R., Handley, M., and E.
+              Schooler, "SIP: Session Initiation Protocol", RFC 3261,
+              June 2002.
+
+   [RFC3310]  Niemi, A., Arkko, J., and V. Torvinen, "Hypertext Transfer
+              Protocol (HTTP) Digest Authentication Using Authentication
+              and Key Agreement (AKA)", RFC 3310, September 2002.
+
+   [RFC3579]  Aboba, B. and P. Calhoun, "RADIUS (Remote Authentication
+              Dial In User Service) Support For Extensible
+              Authentication Protocol (EAP)", RFC 3579, September 2003.
+
+   [RFC3966]  Schulzrinne, H., "The tel URI for Telephone Numbers",
+              RFC 3966, December 2004.
+
+11.2.  Informative References
+
+   [I-D.ietf-aaa-diameter-sip-app]
+              Garcia-Martin, M., "Diameter Session Initiation Protocol
+              (SIP) Application", draft-ietf-aaa-diameter-sip-app-09
+              (work in progress), September 2005.
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 30]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   [RFC2069]  Franks, J., Hallam-Baker, P., Hostetler, J., Leach, P.,
+              Luotonen, A., Sink, E., and L. Stewart, "An Extension to
+              HTTP : Digest Access Authentication", RFC 2069,
+              January 1997.
+
+   [RFC2246]  Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
+              RFC 2246, January 1999.
+
+   [RFC2543]  Handley, M., Schulzrinne, H., Schooler, E., and J.
+              Rosenberg, "SIP: Session Initiation Protocol", RFC 2543,
+              March 1999.
+
+   [RFC2633]  Ramsdell, B., "S/MIME Version 3 Message Specification",
+              RFC 2633, June 1999.
+
+   [RFC3588]  Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J.
+              Arkko, "Diameter Base Protocol", RFC 3588, September 2003.
+
+
+Appendix A.  Change Log
+
+   RFC editor: please remove this section prior to RFC publication.
+
+A.1.  Changes from draft-ietf-radext-digest-auth-05
+
+   o  Removed interdependency between sips/https and RADIUS connection
+      security.
+
+A.2.  Changes from draft-ietf-radext-digest-auth-04
+
+   o  Short Diameter compatibility section
+
+A.3.  Changes from draft-ietf-radext-digest-auth-03
+
+   o  new 'Interoperability' section, requiring support for both nonce
+      generation modes.
+   o  removed Diameter migration path section (again)
+   o  reference to server behavior in Security Considerations section
+   o  fixed text/table mismatch regarding Digest-Domain attributes
+
+A.4.  Changes from draft-ietf-radext-digest-auth-02
+
+   o  added Diameter migration path section (again)
+   o  various typos
+
+A.5.  Changes from draft-ietf-radext-digest-auth-01
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 31]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+   o  removed Diameter migration path section
+   o  Included Digest-URI and Digest-Realm in the authorization
+      decision, not just in the digest calculation
+   o  RADIUS server must check if a RADIUS client is authorized to serve
+      the realm mentioned in Digest-Realm
+   o  moved 'Detailed Description' sections in front of 'New RADIUS
+      attributes' section
+   o  replaced 'IPsec or otherwise secured connection' with IPsec
+   o  changed MAY to SHOULD for Digest-Algorithm in Access-Challenge
+   o  changed type of Digest-Entity-Body-Hash to text (all other H(..)
+      result attributes are hex and text, too)
+   o  new abstract
+   o  Terminology section changed
+   o  'Changes' section as appendix
+
+A.6.  Changes from draft-ietf-radext-digest-auth-00
+
+   o  SIP-AOR attribute added
+   o  clarified use of Digest-Qop
+   o  attribute overview table added
+
+A.7.  Changes from draft-sterman-aaa-sip-04
+
+   o  clarified usage of Digest-HA1
+   o  clarified usage of Digest-Stale (is sent in an Access-Challenge
+      now)
+   o  clarified allowed attribute usage for message types
+   o  changed attribute type to 'Text' where the corresponding Diameter
+      AVPs have a UTF8String
+   o  added Diameter client - RADIUS server handling
+
+A.8.  Changes from draft-sterman-aaa-sip-03
+
+   o  addressed 'auth-int' issue
+   o  New Digest-Nextnonce attribute
+   o  revised abstract, motivational section and examples
+   o  Access-Challenge instead of 'Access-Accept carrying a Digest-Nonce
+      attribute'
+   o  shortened SIP messages in example, removed real-world addresses
+      and product names
+
+A.9.  Changes from draft-sterman-aaa-sip-02
+
+   o  Relaxed restrictions for Digest-Domain, Digest-Realm, Digest-
+      Opaque, Digest-Qop and Digest-Algorithm
+   o  Additional security considerations for Digest-Domain, Digest-Qop
+      and Digest-Algorithm usage in Access-Accept messages
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 32]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+A.10.  Changes from draft-sterman-aaa-sip-01
+
+   o  Replaced Sub-attributes with flat attributes
+   o  aligned naming with [I-D.ietf-aaa-diameter-sip-app]
+   o  Added how a server must treat unknown attributes.
+   o  Added a section 'Migration path to Diameter'
+   o  Added an optional attribute for support of the digest scheme
+      described in informational [RFC3310].
+   o  Added a mode of operation where the RADIUS server chooses the
+      nonce.  This was required for AKA [RFC3310], but can be useful for
+      ordinary Digest Authentication when the qop directive is not used.
+      This required the addition of several attributes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 33]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+Authors' Addresses
+
+   Baruch Sterman
+   Kayote Networks
+   P.O. Box 1373
+   Efrat  90435
+   Israel
+
+   Email: baruch@kayote.com
+
+
+   Daniel Sadolevsky
+   SecureOL, Inc.
+   Jerusalem Technology Park
+   P.O. Box 16120
+   Jerusalem  91160
+   Israel
+
+   Email: dscreat@dscreat.com
+
+
+   David  Schwartz
+   Kayote Networks
+   P.O. Box 1373
+   Efrat  90435
+   Israel
+
+   Email: david@kayote.com
+
+
+   David Williams
+   Cisco Systems
+   7025 Kit Creek Road
+   P.O. Box 14987
+   Research Triangle Park  NC 27709
+   USA
+
+   Email: dwilli@cisco.com
+
+
+   Wolfgang Beck
+   Deutsche Telekom AG
+   Am Kavalleriesand 3
+   Darmstadt  64295
+   Germany
+
+   Email: beckw@t-systems.com
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 34]
+\f
+
+
+
+
+
+Internet-Draft        RADIUS Digest Authentication          October 2005
+
+
+Intellectual Property Statement
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr@ietf.org.
+
+
+Disclaimer of Validity
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM 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.
+
+
+Copyright Statement
+
+   Copyright (C) The Internet Society (2005).  This document is subject
+   to the rights, licenses and restrictions contained in BCP 78, and
+   except as set forth therein, the authors retain all their rights.
+
+
+Acknowledgment
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+Sterman, et al.          Expires April 17, 2006                [Page 35]
+\f
+
+