ABFAB J. Howlett Internet-Draft JANET(UK) Intended status: Informational S. Hartman Expires: September 15, 2011 Painless Security March 14, 2011 Key Negotiation Protocol for RadSec (KNP) draft-howlett-radsec-knp-01 Abstract RadSec provides a means to secure the communication between a RADIUS client and server on the transport layer by using a TLS cipher-suite. This avoids the security weaknesses inherent in RADIUS' use of the MD5 algorithm. The Key Negotiation Protocol for RadSec enables a RADIUS client and RADIUS server to derive a key that can be used with a TLS PSK ciphersuite and applied with a RadSec connection. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. 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." This Internet-Draft will expire on September 15, 2011. Copyright Notice Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect Howlett & Hartman Expires September 15, 2011 [Page 1] Internet-Draft KNP for RadSec March 2011 to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Federation with RADIUS . . . . . . . . . . . . . . . . . . 3 1.2. Federation with RadSec . . . . . . . . . . . . . . . . . . 4 1.3. Requirements . . . . . . . . . . . . . . . . . . . . . . . 4 1.4. Federating RADIUS . . . . . . . . . . . . . . . . . . . . 5 1.5. Introducing KMP . . . . . . . . . . . . . . . . . . . . . 5 1.6. Trust Router . . . . . . . . . . . . . . . . . . . . . . . 6 2. Conventions used in this document . . . . . . . . . . . . . . 7 3. The KNP Actors . . . . . . . . . . . . . . . . . . . . . . . . 7 4. Relationships With Other Protocols . . . . . . . . . . . . . . 8 4.1. Relationship to GSS-API and EAP . . . . . . . . . . . . . 8 4.2. Relationship to AAA . . . . . . . . . . . . . . . . . . . 9 4.3. Relationship to HTTP Negotiate . . . . . . . . . . . . . . 9 5. Key Negotiation Protocol . . . . . . . . . . . . . . . . . . . 9 5.1. Invocation by RADIUS Client . . . . . . . . . . . . . . . 9 5.2. Discovery of the RADIUS Server and KNP Endpoint . . . . . 10 5.3. Trust Establishment . . . . . . . . . . . . . . . . . . . 10 5.3.1. Client and Introducer . . . . . . . . . . . . . . . . 11 5.3.2. Server and Introducer . . . . . . . . . . . . . . . . 11 5.3.3. Server to Client . . . . . . . . . . . . . . . . . . . 12 5.3.4. Client to Server . . . . . . . . . . . . . . . . . . . 12 5.4. Keying . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.5. TLS Encryption Negotiation . . . . . . . . . . . . . . . . 12 6. Context and PSK Management . . . . . . . . . . . . . . . . . . 13 7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.1. Normative References . . . . . . . . . . . . . . . . . . . 13 10.2. Informative References . . . . . . . . . . . . . . . . . . 15 Howlett & Hartman Expires September 15, 2011 [Page 2] Internet-Draft KNP for RadSec March 2011 1. Introduction The ABFAB architecture [I-D.lear-abfab-arch] provides an overview of how AAA protocols, such as RADIUS[RFC2865], can be used to support application layer authentication. In this architecture, the AAA protocols are part of the 'federation substrate' that ultimately binds relying parties to identity providers. The ABFAB substrate provides the architectural roles: o Deciding where to route messages addressed to a given Network Access Identifier (NAI) o Providing integrity protection and authentication so the relying party can trust the authenticity of messages from the identity provider o When multiple sets of business rules are possible, indicate which rules are being used o Provide appropriate technical validation of information exchanged through the federation. Today, AAA protocols are already commonly employed for federation between different domains. These system generally exhibit many of these behaviours. 1.1. Federation with RADIUS In a simple federated relationship, static configuration of RADIUS is used to achieve technical trust. The RADIUS proxy is configured with a static set of mappings from realm suffix to RADIUS server. There are statically configured shared secrets with each of these servers. Statically configured attribute release policies describe what attributes may be expressed by RADIUS servers outside of the local realm. Another common deployment involves an organization running a network of RADIUS proxies. These proxies are statically configured with routing, credentials and filtering information. A RADIUS proxy network and this static configuration is sometimes known as a proxy fabric. One disadvantage of a proxy fabric is that the intermediate proxies can see information exchanged between the RADIUS client (or the relying party in the ABFAB architecture) and terminal RADIUS server (or the identity provider in the ABFAB architecture). Sometimes this might be desirable: for example if an intermediate proxy is needed to validate some of this information. However, it does create a Howlett & Hartman Expires September 15, 2011 [Page 3] Internet-Draft KNP for RadSec March 2011 significant privacy exposure. Also, especially for the Extensible Authentication Protocol [RFC3748], reducing the latency of a round trip can provide a significant performance advantage. 1.2. Federation with RadSec TLS encryption for RADIUS (RadSec) [I-D.ietf-radext-radsec] provides a means to secure the communication between a RADIUS and server on the transport layer by using a TLS [RFC5246] cipher-suite. This avoids the security weaknesses inherent in RADIUS' use of the MD5 algorithm and removes the requirement for a RADIUS client to be preconfigured with a shared secret to communicate with a particular RADIUS server. This can be a significant part of reducing the intermediaries in a RADIUS deployment. RadSec mandates the use of one of the [RFC5246] ciphersuites and recommends the use of two other ciphersuites specified in that document. However any ciphersuite, including the TLS Pre-Shared Key (PSK) ciphersuites [RFC4279], may be used providing that it supports encryption. 1.3. Requirements The KNP is motivated by the following requirements: o Improve security while using a familiar credential technology. RADIUS uses shared secrets to establish trust between RADIUS clients and servers. For some AAA operational models it may be more convenient to continue using secrets rather than introduce a new credential technology (such as X.509 certificates) when transitioning to the use of TLS encryption. o Agnosticism with respect to credential technology. In complex multi-domain federated AAA systems it may often be convenient not to impose any particular credential technology(s) or trust anchor(s) to establish trust between RADIUS peers. In other words, it may be desirable for RADIUS peers in different administrative domains to negotiate keys in the absence of any understanding of their respective credential technologies or trust anchors. This agnosticism may improve interoperability within, and facilitate the scaling of, large heterogeneous AAA environments where it may be difficult - for technical or administrative reasons - to impose support for a common (or even a small number of) technologies or trust anchors. Howlett & Hartman Expires September 15, 2011 [Page 4] Internet-Draft KNP for RadSec March 2011 o Online trust management. Similarly, the use of a variety of different trust anchors and credential technologies may impede essential trust management functions such as timely revocation. In complex federated AAA environments, it would be desirable to permit online trust management in a way that is independent of the underlying credential technology. o Avoiding intermediaries. Reducing the number of intermediaries improves privacy and system robustness, and reduces end-to-end latencies. 1.4. Federating RADIUS In order to provide a scalable substrate for federation, the AAA fabric needs to provide authentication and exchange of policy information between RADIUS clients and servers that cross organizational boundaries. That is, federated access management is required for RADIUS as an application. As with other applications, the ABFAB technologies can be applied to provide federated access management. RADIUS clients act as clients and subjects. They have identities issued by the organization establishing the federation, which acts as an identity provider. The foreign RADIUS server acts as a relying party. This specification defines a protocol that permits the ABFAB architecture to be used for federated access to RADIUS, providing the technical details for interactions between parties. In an environment where ABFAB is in use, this technology may provide significant advantages over other approaches such as a public-key infrastructure. In ABFAB, credentials are always managed between two parties. The subject and identity provider (in this case, the RADIUS client and federation) share a credential. The relying party and identity provider share a secure channel created by AAA credentials. Since only two parties need to interact with each credential, their requirements dictate the complexity of enrollment, revocation, policies, practices, and other credential management issues. Trust anchor management may be significantly simpler. 1.5. Introducing KMP The Key Negotiation Protocol (KNP) provides two functions: 1. It enables a RADIUS client and RADIUS server to derive a credential that can be used with a TLS PSK ciphersuite applied to a RadSec connection between these peers. This credential is obtained as a result of an EAP authentication between the RADIUS client, a trusted third-party EAP server known as the Introducer Howlett & Hartman Expires September 15, 2011 [Page 5] Internet-Draft KNP for RadSec March 2011 and the RADIUS server acting as an EAP pass-through authenticator. 2. It enables a RADIUS client and RADIUS server to derive an EAP credential that the client may subsequently use to authenticate against that RADIUS server, now acting as Introducer, via a second RADIUS server acting as an EAP pass-through authenticator. This credential may be used to establish a TLS PSK (using the function described above); or to establish yet another credential with another RADIUS server. In summary, the first function enables a RADIUS client and server to negotiate a key by means of a trusted third-party called the Introducer. The second function enables a RADIUS client to establish an Introducer which it might subsequently use the first facility against; or, in an iterative manner, repeat the second facility to establish yet another Introducer. TODO: this document currently only documents the first of these functions. The second facility will be documented in a later revision. The composition of these two facilities enables a RADIUS client to dynamically establish a trust relationship with a RADIUS server in the absence of any pre-existing relationship, providing that there exists a path between the RADIUS client and server via one or more intermediate Introducers. Conceptually the role of an Introducer as a trust broker is not dissimilar to that of a conventional AAA proxy. The key difference is that the trust path between the RADIUS client and server need not bear any resemblance to the transit path taken by the AAA messages between the RADIUS client and server. 1.6. Trust Router Static configuration of routing information does not scale. Instead it would be desirable to have a protocol that dynamically assembles the necessary configuration information for RADIUS proxies. This protocol has a lot in common with a routing protocol. The protocol maintains a distributed database synchronized across a number of replicas. It's likely that multiple paths will be able to reach the same destination in some cases. Thus, some sort of shortest-path algorithm is required. The metric often will be more complex than simply length of path: business rules may prefer certain paths. Business rules may also filter out certain paths at various points. Howlett & Hartman Expires September 15, 2011 [Page 6] Internet-Draft KNP for RadSec March 2011 We propose that as ABFAB deployment complexity increases, such a protocol will be required. Within a federation, local procedures, such as frequently updated static configuration could be used. However, to provide scalable inter-federation, a trust router protocol is required to exchange the information necessary to establish technical trust in a dynamic manner. This document does not define a specific instantiation of a trust routing protocol. Instead, it focuses on a problem that results once a trust routing protocol exists. Efforts to design a proposal for a trust router protocol are ongoing but less mature than this proposal. 2. 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 RFC 2119 [RFC2119]. 3. The KNP Actors The KNP does not require the RADIUS client and RADIUS server to share a trust relationship. Instead, it only requires that these parties share a trust relationship with a mutually trusted third party. In the KNP, this party is known as the "Introducer". Figure 1 below depicts the trust relationships for a RADIUS client, RADIUS server and the Introducer before the KNP has been invoked. Introducer /\ / \ / \ RADIUS RADIUS Client Server Figure 1 Figure 2 below depicts the new trust relationship between the RADIUS client, RADIUS server and the Introducer after the KNP has been invoked. Introducer /\ / \ / \ RADIUS------RADIUS Client Server Figure 2 Howlett & Hartman Expires September 15, 2011 [Page 7] Internet-Draft KNP for RadSec March 2011 Figure 3 below depicts the flow of RADIUS packets from the RADIUS client to the RADIUS server using the new trust relationship. Introducer RADIUS ---> RADIUS Client Server Figure 3 4. Relationships With Other Protocols The KNP builds on a variety of protocols. This section describes the relationship of KNP to these. 4.1. Relationship to GSS-API and EAP The KNP builds on the GSS-API [RFC2743] framework, the GSS EAP mechanism [I-D.ietf-abfab-gss-eap] and EAP [RFC3748]. The RADIUS client, acting as the GSS initiator and EAP peer, establishes a GSS- API security context with the RADIUS server, acting as the GSS acceptor and EAP authenticator, by reference to an EAP server that acts as the Introducer. The KNP enables all three parties - RADIUS client, RADIUS server and Introducer - to establish a common view of their mutual relationships as described by the names and keys that the KNP generates. The RADIUS client must possess an EAP credential for the introducer, allowing mutual authentication of both parties when applied with an appropriate EAP method. Figure 4 below depicts the relationships between these entities: Introducer /\ / \ / \ RADIUS RADIUS Client Server (wielding EAP credential for the introducer) Figure 4 Howlett & Hartman Expires September 15, 2011 [Page 8] Internet-Draft KNP for RadSec March 2011 4.2. Relationship to AAA The RADIUS server uses an AAA protocol to forward the EAP transaction to the Introducer. The RADIUS server must possess an AAA credential for the Introducer, allowing mutual authentication of both parties. Figure 5 below depicts the relationships between these entities: Introducer /\ / \ / \ RADIUS RADIUS Client Server (wielding EAP (wielding AAA credential for credential for the Introducer) the Introducer) Figure 5 The Introducer is always a single system entity: the EAP server. However, the AAA link between the RADIUS server and Introducer may not be direct, and instead may be composed of one or more proxies. For the purposes of KNP, the RADIUS server and Introducer must have equivalent or greater trust in any intermediate proxies than they do with each other. 4.3. Relationship to HTTP Negotiate The GSS EAP mechanism is transported using the HTTP Negotiate authentication scheme [RFC4559] between the RADIUS client and the RADIUS server's KNP endpoint. 5. Key Negotiation Protocol This section describes the KNP. 5.1. Invocation by RADIUS Client The KNP is invoked when the RADIUS client creates or receives (in the case that it is also a proxy) a RADIUS message which must be forwarded towards a RADIUS server but for which the RADIUS client lacks a PSK. For example: Howlett & Hartman Expires September 15, 2011 [Page 9] Internet-Draft KNP for RadSec March 2011 o The RADIUS client may not have any local configuration for the RADIUS server. o The RADIUS client may have a cached PSK for the RADIUS server and may have already attempted a RADIUS over TLS connection, but this has been refused by the RADIUS server; possibly because the RADIUS server has deleted the key. 5.2. Discovery of the RADIUS Server and KNP Endpoint The RADIUS client first selects a RADIUS server. Implementations MUST support the use of Dynamic Peer Discovery [I-D.ietf-radext-dynamic-discovery], but MAY use any selection algorithm. Having selected a RADIUS server and obtained its network location, the RADIUS client MUST attempt to establish an HTTP [RFC2616] connection with the RADIUS server's KNP end-point. This specification defines the SRV prefix "_knp._tcp". This MAY be used to describe the network location of the KNP endpoint. Implementations MUST support the use of this SRV RR. The label used for this record is the RADIUS server. Example: _knp._tcp.radsec.example.com. IN SRV 0 10 TODO knp.example.com. TODO: obtain a port. 5.3. Trust Establishment It is essential that all three actors - RADIUS Client, Server and Introducer - are able to validate each other's respective claims to their names. These are determined using different processes for each relationship, and are summarised in Figure 6 below. Howlett & Hartman Expires September 15, 2011 [Page 10] Internet-Draft KNP for RadSec March 2011 +===============+===============+==================+===============+ | Subject | Relying Party | Process | Evidence from | +===============+===============+==================+===============+ | RADIUS Client | Introducer | EAP GSS | EAP method | +---------------+---------------+ authentication | w/ qualifying | | Introducer | RADIUS Client | (section 6.3.1. )|Security Claims| +===============+===============+==================+===============+ | Introducer | RADIUS Server | AAA | AAA | +---------------+---------------+ authentication | shared | | RADIUS Server | Introducer | (section 6.3.2. )| secret | +===============+===============+==================+===============+ | RADIUS | RADIUS | Channel bindings | Assertion by | | Server | Client | (section 6.3.3. )| Introducer | +---------------+---------------+------------------+---------------+ | RADIUS | RADIUS | RADIUS attribute | Assertion by | | Client | Server | (section 6.3.4. )| Introducer | +===============+===============+==================+===============+ Figure 6 The following sections describe how these processes are used by the KNP to establish trust between the actors and, in particular, how they determine their respective names. 5.3.1. Client and Introducer The RADIUS client invokes the GSS authentication handshake using the GSS EAP mechanism [I-D.ietf-abfab-gss-eap] using an empty POST method. The RADIUS client, in its role as GSS initiator, MUST request mutual authentication from the GSS layer. The RADIUS server, acting as an EAP authenticator as described in section 2.3 of [RFC3748], MUST forward the EAP Request messages from the RADIUS client towards the Introducer over RADIUS; and also all EAP Responses received from the Introducer over RADIUS from the Introducer to the RADIUS client. The RADIUS client and Introducer MUST negotiate an EAP method supporting the following EAP Security Claims: mutual authentication, integrity protection, replay protection, confidentiality, key derivation, dictionary attack resistance, session independence and channel binding. 5.3.2. Server and Introducer The RADIUS Server and Introducer MUST each possess a shared secret to protect the RADIUS exchange described in section Section 5.3.1. The shared secret MUST be established out-of-band prior to the invocation of the KNP; this is not within the scope of the KNP. Howlett & Hartman Expires September 15, 2011 [Page 11] Internet-Draft KNP for RadSec March 2011 5.3.3. Server to Client The RADIUS client and Introducer MUST use the EAP channel binding protocol [I-D.ietf-emu-chbind]. If the channel binding verification fails, the Introducer MUST reject the authentication. 5.3.4. Client to Server If the Introducer successfully authenticates the RADIUS client, the Introducer MUST send the client's authenticated name to the RADIUS server using the X RADIUS Attribute. The RADIUS server MAY use this name to perform authorisation. TODO: select an appropriate RADIUS attribute 5.4. Keying The completion of the EAP method exchange results in the derivation of an EAP MSK known only to the client and server and Peer-Id(s) and Server-Id(s) identifying these respectively. The Introducer MUST replicate the keying material and Server-Id to the RADIUS server. The RADIUS client and server, in possession of the EAP MSK, establish a GSS-API security context as described in section 6 of [I-D.ietf-abfab-gss-eap]. The PSK identity and value shall be the output of GSS_Pseudo_random() [RFC4401] using the Pseudo-Random Function defined for the GSS EAP mechanism [I-D.ietf-abfab-gss-eap]. For the PSK identity, the prf_in input string MUST be prepended with the string "tls-psk-identity"; desired_out_len MUST be set to 128 octets. Note: this should use base64 representation Note: should we append an NAI realm to the PSK identity? For the PSK value, the prf_in input string MUST be prepended with the string "tls-psk-value"; desired_out_len MUST be set to 64 octets. 5.5. TLS Encryption Negotiation Finally the RADIUS client invokes RadSec, requesting a PSK TLS ciphersuite. The RADIUS client MUST include its PSK identity in the ClientKeyExchange message. Howlett & Hartman Expires September 15, 2011 [Page 12] Internet-Draft KNP for RadSec March 2011 6. Context and PSK Management The RADIUS server and client MAY cache the GSS context until expiry of the GSS context. However, either party MAY delete a GSS context at any time up to expiry. When a GSS context is deleted, the corresponding PSK value MUST also be deleted. The PSK identity MAY be retained for auditing or other purposes. 7. Security Considerations TODO 8. IANA Considerations Note: register KNP TCP port and SRV RR label. 9. Acknowledgements TODO 10. References 10.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. [RFC2743] Linn, J., "Generic Security Service Application Program Interface Version 2, Update 1", RFC 2743, January 2000. [RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson, "Remote Authentication Dial In User Service (RADIUS)", RFC 2865, June 2000. [RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and Howlett & Hartman Expires September 15, 2011 [Page 13] Internet-Draft KNP for RadSec March 2011 H. Levkowetz, "Extensible Authentication Protocol (EAP)", RFC 3748, June 2004. [RFC4279] Eronen, P. and H. Tschofenig, "Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)", RFC 4279, December 2005. [RFC4401] Williams, N., "A Pseudo-Random Function (PRF) API Extension for the Generic Security Service Application Program Interface (GSS-API)", RFC 4401, February 2006. [RFC4559] Jaganathan, K., Zhu, L., and J. Brezak, "SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows", RFC 4559, June 2006. [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008. [I-D.ietf-abfab-gss-eap] Hartman, S. and J. Howlett, "A GSS-API Mechanism for the Extensible Authentication Protocol", draft-ietf-abfab-gss-eap-01 (work in progress), February 2011. [I-D.ietf-radext-radsec] Winter, S., McCauley, M., Venaas, S., and K. Wierenga, "TLS encryption for RADIUS", draft-ietf-radext-radsec-08 (work in progress), March 2011. [I-D.ietf-radext-dynamic-discovery] Winter, S. and M. McCauley, "NAI-based Dynamic Peer Discovery for RADIUS over TLS and DTLS", draft-ietf-radext- dynamic-discovery-02 (work in progress), March 2010. Howlett & Hartman Expires September 15, 2011 [Page 14] Internet-Draft KNP for RadSec March 2011 [I-D.ietf-emu-chbind] Hartman, S., Clancy, C., and K. Hoeper, "Channel Binding Support for EAP Methods", draft-ietf-emu-chbind-07 (work in progress), February 2011. 10.2. Informative References [I-D.lear-abfab-arch] Howlett, J., Hartman, S., Tschofenig, H., and E. Lear, "Application Bridging for Federated Access Beyond Web (ABFAB) Architecture", draft-lear-abfab-arch-02 (work in progress), March 2011. Authors' Addresses Josh Howlett JANET(UK) Lumen House, Library Avenue, Harwell Oxford OX11 0SG UK Phone: +44 1235 822363 EMail: Josh.Howlett@ja.net Sam Hartman Painless Security Phone: EMail: hartmans-ietf@mit.edu Howlett & Hartman Expires September 15, 2011 [Page 15]