changeset 24:e17057ceb2db

Completed initial version, before review
author Sebastien Decugis <sdecugis@nict.go.jp>
date Fri, 05 Jun 2009 14:38:08 +0900
parents 2654f7c6c834
children 1c96f5301544
files draft-sdecugis-dime-diameter-erp.xml
diffstat 1 files changed, 541 insertions(+), 155 deletions(-) [+]
line wrap: on
line diff
--- a/draft-sdecugis-dime-diameter-erp.xml	Wed Jun 03 18:24:36 2009 +0900
+++ b/draft-sdecugis-dime-diameter-erp.xml	Fri Jun 05 14:38:08 2009 +0900
@@ -1,10 +1,14 @@
 <?xml version="1.0" encoding="US-ASCII"?>
 <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
+<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
+<!ENTITY RFC3748 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3748.xml">
 <!ENTITY RFC3588 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3588.xml">
-<!ENTITY RFC4005 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4005.xml">
+<!ENTITY RFC4072 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4072.xml">
 <!ENTITY RFC5295 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5295.xml">
 <!ENTITY RFC5296 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5296.xml">
 <!ENTITY I-D.draft-ietf-hokey-key-mgm SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-hokey-key-mgm-06.xml">
+<!ENTITY I-D.draft-ietf-dime-app-design-guide SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-dime-app-design-guide-08.xml">
+<!ENTITY I-D.draft-gaonkar-radext-erp-attrs SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-gaonkar-radext-erp-attrs-03.xml">
 <!ENTITY nbsp "&#160;">
 ]>
 <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
@@ -22,7 +26,8 @@
 <?rfc rfcedstyle="yes"?>
 <?rfc rfcprocack="no"?>
 <?rfc tocindent="yes"?>
-<rfc category="std" docName="draft-sdecugis-dime-diameter-erp" ipr="full3978">
+<rfc category="std" docName="draft-sdecugis-dime-diameter-erp"
+     ipr="trust200902">
   <front>
     <title abbrev="Diameter ERP support">Diameter support for EAP
     Re-authentication Protocol (ERP)</title>
@@ -61,14 +66,14 @@
     <keyword>Re-authentication</keyword>
 
     <abstract>
-      <t>The EAP Re-authentication Protocol (a.k.a. ERP, RFC5296) provides a
-      mechanism to optimize EAP authentication delay in the case of
-      re-authentication, which can be significant in roaming mobile situation.
-      This mechanism assumes that a protocol for Authentication, Authorization
-      and Accounting (AAA) is available to transport ERP between the
-      authenticator(s) and the EAP/ERP server.
-      draft-gaonkar-radext-erp-attrs-03 specifies the transport of ERP using
-      RADIUS. This document specifies the transport of ERP using Diameter.</t>
+      <t>The EAP Re-authentication Protocol (ERP) provides a mechanism to
+      optimize EAP authentication delay in the case of re-authentication,
+      which can be significant in roaming mobile situation. This mechanism
+      assumes that a protocol for Authentication, Authorization and Accounting
+      (AAA) is available to transport ERP between the authenticator(s) and the
+      EAP/ERP server. draft-gaonkar-radext-erp-attrs-03 specifies the
+      transport of ERP using RADIUS. This document specifies the transport of
+      ERP using Diameter.</t>
     </abstract>
 
     <note title="Foreword">
@@ -77,10 +82,9 @@
       in its design and scope.</t>
 
       <t>In this new version, we use a new Diameter application id for
-      messages with ERP payload, exchanged between authenticator and ER
-      server. This simplifies the routing of Diameter messages to the
-      appropriate server, and allows more flexibility in the deployment of
-      ERP.</t>
+      messages with ERP payload exchanged between authenticator and ER server.
+      This simplifies the routing of Diameter messages to the appropriate
+      server, and allows more flexibility in the deployment of ERP.</t>
 
       <t>The scope of previous documents (<eref
       target="http://tools.ietf.org/html/draft-ietf-dime-erp-00">draft-ietf-dime-erp-00</eref>
@@ -88,11 +92,11 @@
       target="http://tools.ietf.org/html/draft-wu-dime-local-keytran-00">draft-wu-dime-local-keytran-00</eref>)
       was focused on the implicit bootstrapping scenario described in <xref
       target="RFC5296"></xref>. By re-using the Diameter EAP application,
-      these documents create constraining requirements on routing of Diameter
-      messages, that cannot be met by standard Diameter routing algorithm
-      defined in the <xref target="RFC3588">Diameter Base Protocol</xref>.
-      They also introduce interoperability problems for the peer and the NAS
-      that cannot be overcome easily.</t>
+      these documents create implicit constraints on routing of messages that
+      cannot be met by standard Diameter routing algorithm defined in the
+      <xref target="RFC3588">Diameter Base Protocol</xref>. A separate
+      Diameter Id may also allow the authenticator to dynamically discover if
+      the local domain supports ERP or not.</t>
     </note>
 
     <note title="Requirements Language">
@@ -107,46 +111,57 @@
     <section anchor="Introduction" title="Introduction">
       <t><xref target="RFC5296"></xref> defines the EAP Re-authentication
       Protocol (ERP) and mechanism that consists in the two following
-      steps:<list>
-          <t>(bootstrapping) Creation of a root key for the session, after
-          initial EAP authentication of the peer. This root key is distributed
-          from the EAP server to the ER server. How this key is tranported is
-          not specified in the ERP mechanism.</t>
+      steps:<list style="numbers">
+          <t>Bootstrapping: creation of a root key for re-authentication,
+          after initial EAP authentication of the peer. This root key is
+          distributed from the EAP server to the ER server. How this key is
+          tranported is not specified in the ERP mechanism.</t>
 
-          <t>(re-authentication) A one-round-trip ERP exchange between the
-          peer and the ER server, functionally equivalent to a full EAP
+          <t>Re-authentication: one-round-trip exchange between the peer and
+          the ER server, functionally equivalent to a full EAP
           authentication.</t>
-        </list>The bootstrapping of the ER server can occur before
-      (asynchronous) or during (synchronous) the re-authentication.</t>
+        </list></t>
 
       <t>This document specifies how Diameter is used to carry the
       re-authentication exchange (second step). For this purpose, we define a
-      new Application Id for ERP, and re-use the DER/DEA commands.</t>
+      new Application Id for ERP, and re-use the Diameter EAP commands
+      (DER/DEA).</t>
 
-      <t>It also discusses the key distribution (bootstrapping) and proposes
-      some solutions for different architectures. Anyway, a deployment that
-      conforms to this specification may adopt a different mechanism for key
-      distribution, such as described in <xref
-      target="I-D.ietf-hokey-key-mgm"></xref>. Security considerations for key
-      distribution are explained in <xref target="RFC5295"></xref>.</t>
+      <t>We also discuss the key distribution (first step, bootstrapping) and
+      propose some solutions for different architectures. Anyway, implementors
+      are free to choose a different mechanism for key distribution, as for
+      example using RADIUS<xref target="I-D.ietf-hokey-key-mgm"></xref>.
+      Security considerations for key distribution are explained in <xref
+      target="RFC5295"></xref>.</t>
     </section>
 
     <section title="Terminology">
       <t>We re-use here the terminology from <xref target="RFC5296"></xref>.
-      In particular, the term "EAP server" refers to a server for EAP with
-      sufficient extensions for ERP to create ERP keying material.</t>
+      In particular, the EAP server implicitely supports ERP extensions to
+      generate the ERP keying material and send it to the ER server. These
+      terms "authenticator", "ER server", "EAP server" denote logical
+      functional entities and make no assumption on the real implementation
+      and deployment.</t>
 
-      <t>"root key" or "bootstrapping material" refer to the rRK (for ER
-      server in home domain) or the rDSRK (ER server in separate domain),
-      depending on the context.</t>
+      <t>"root key" or "bootstrapping material" refer to the rRK (home ER
+      server) or rDSRK (foreign ER server) derived from an EMSK, depending on
+      the context.</t>
+
+      <t>We re-use also some terminology and abbreviations from <xref
+      target="RFC4072"></xref>, for example DER/DEA.</t>
     </section>
 
     <section anchor="Overview" title="Overview">
-      <t>The following figure shows the components involved in ERP, and their
-      interactions. During the lifetime of the EMSK derived from a full EAP
-      authentication, a peer may attach to several authenticators, and
-      eventually use different ER servers (for example in inter-domain
-      roaming).</t>
+      <t>During the lifetime of an EMSK (derived during a full EAP
+      authentication), a peer may attach to several authenticators. In this
+      case, re-authentication is more efficient than full authentication,
+      especially in the case of roaming. ERP provides a mechanism for
+      re-authentication independent of the link layer, as opposed to IEEE
+      802.11r-2008 for example, so it can be used in case of multihoming or
+      horizontal handovers. The following figure shows the components involved
+      in ERP, and their interactions. When the peer attaches to a new
+      authenticator, the ER server involved in the transaction may change, for
+      example in the case of inter-domain roaming.</t>
 
       <figure title="Diameter applications used in the ERP mechanism.">
         <artwork><![CDATA[                        Diameter                    +--------+
@@ -159,148 +174,519 @@
 ]]></artwork>
       </figure>
 
-      <t>The ER server may be located in the home domain (same as the EAP
-      server) or the visited domain (same as authenticator, in case it differs
-      from the home domain). <cref>TBD: Can the ER server be located in a
-      third domain (ex: broker's)?</cref></t>
+      <t>The ER server may be located in the home domain (same as EAP server)
+      or the visited domain (same as authenticator, when it differs from the
+      home domain). <cref>TBD: Can the ER server be located in a third domain
+      (ex: broker's)?</cref></t>
 
-      <t>The bootstrapping of the ER server occurs sometime between the
-      initial EAP authentication, and the first ERP re-authentication. See
-      section <xref target="Bootstrapping">4</xref> for detail on this
-      process. Then, the peer re-authenticates, for example after a movement
-      that makes it attach to a new authenticator. The following figure
-      describes this process, based on <xref target="RFC5296"></xref>, and
-      shows how Diameter is used in this context. See section <xref
-      target="Re-authentication">5</xref> for a detailed description.</t>
+      <t>The bootstrapping of the ER server has to occur sometime between the
+      initial EAP authentication and the first ERP re-authentication with this
+      ER server. See section <xref target="Bootstrapping"></xref> for detail
+      on this process. Then, the peer re-authenticates, for example after a
+      movement that makes it attach to a new authenticator. The following
+      figure describes this re-authentication, and shows how Diameter is used
+      in this context. See section <xref target="Re-authentication"></xref>
+      for a detailed description, and following sections for details on the
+      Diameter messages format.</t>
 
       <figure title="Diameter ERP exchange. ">
-        <artwork><![CDATA[                                                           ER server
-                                                         (bootstrapped)
- Peer                 Authenticator                  (local or home domain)
- ====                 =============                  ======================
+        <artwork><![CDATA[                                                        ER server
+                                                      (bootstrapped)
+ Peer                 Authenticator               (local or home domain)
+ ====                 =============               ======================
  [ <------------------------         ]               
  [optional EAP-Initiate/Re-auth-start]               
 
    ----------------------->
      EAP-Initiate/Re-auth
-                           =====================================>
-                                 Diameter ERP, cmd code DER
-                                   User-Name: Keyname-NAI
-                               EAP-Payload: EAP-Initiate/Re-auth
+                           ==================================>
+                                Diameter ERP, cmd code DER
+                                  User-Name: Keyname-NAI
+                              EAP-Payload: EAP-Initiate/Re-auth
  
-                           <=====================================
-                                 Diameter ERP, cmd code DEA
-                               EAP-Payload: EAP-Finish/Re-auth
-                                EAP-Master-Session-Key: rMSK
+                           <==================================
+                                Diameter ERP, cmd code DEA
+                              EAP-Payload: EAP-Finish/Re-auth
+                               EAP-Master-Session-Key: rMSK
     <----------------------
       EAP-Finish/Re-auth
 ]]></artwork>
       </figure>
+    </section>
 
-      <t></t>
+    <section anchor="ApplicationId" title="Application Id">
+      <t>We define a Diameter ERP Application in this document, with an
+      Application Id value of <cref>TBD</cref>. Diameter nodes conforming to
+      this specification (in the role of ER server or authenticator) MUST
+      advertise support by including the Diameter ERP Application ID value in
+      the Auth-Application-Id AVP of the Capabilities-Exchange-Request and
+      Capabilities-Exchange-Answer command <xref target="RFC3588"></xref>.</t>
+
+      <t>The primary use of the Diameter ERP Application Id is to ensure
+      proper routing of the messages, and that the nodes that advertise the
+      support for this application do understand the new AVPs defined in the
+      next section (although these AVP have the 'M' flag cleared).</t>
+    </section>
+
+    <section anchor="AVPs" title="AVPs">
+      <t>This specification defines the following new AVPs.</t>
+
+      <section title="ERP-RK-Request AVP">
+        <t>The ERP-RK-Request AVP (AVP Code <cref>TBD</cref>) is of type
+        grouped AVP. It is used by the ER server to request root key material
+        used in ERP.</t>
+
+        <t>This AVP has the M and V bits cleared.</t>
+
+        <figure title="ERP-RK-Request ABNF">
+          <artwork><![CDATA[      ERP-RK-Request ::= < AVP Header: TBD >
+                         { ERP-Realm }
+                       * [ AVP ]
+]]></artwork>
+        </figure>
+      </section>
+
+      <section title="ERP-Realm AVP">
+        <t>The ERP-Realm AVP (AVP Code <cref>TBD</cref>) is of type
+        <cref>{DiameterIdentity? OctetString?}</cref>. It contains the name of
+        the realm in which the ER server is located.</t>
+
+        <t><cref>FFS: We may re-use Origin-Realm here instead? On the other
+        hand, ERP-Realm may be useful in CER/CEA with a NAS...</cref></t>
+
+        <t>This AVP has the M and V bits cleared.</t>
+      </section>
+
+      <section title="ERP-RK-Answer AVP">
+        <t>The ERP-RK-Answer AVP (AVP Code <cref>TBD</cref>) is of type
+        grouped AVP. It is used by the home EAP server to provide ERP root key
+        material to the ER server.</t>
+
+        <t>This AVP has the M and V bits cleared.</t>
+
+        <figure title="ERP-RK-Answer ABNF">
+          <artwork><![CDATA[       ERP-RK-Answer ::= < AVP Header: TBD >
+                         { ERP-RK }
+                         { ERP-RK-Name }
+                         { ERP-RK-Lifetime }
+                       * [ AVP ]
+]]></artwork>
+        </figure>
+      </section>
+
+      <section title="ERP-RK AVP">
+        <t>The ERP-RK AVP (AVP Code <cref>TBD</cref>) is of type OctetString.
+        It contains the root key (either rRK or rDSRK) to be used for ERP with
+        the peer to which the current session belongs. How this material is
+        derived and used is specified in <xref target="RFC5296"></xref>.</t>
+
+        <t><cref>Can we re-use EAP-Master-Session-Key here?</cref></t>
+
+        <t>This AVP has the M and V bits cleared.</t>
+      </section>
+
+      <section title="ERP-RK-Name AVP">
+        <t>The ERP-RK AVP (AVP Code <cref>TBD</cref>) is of type OctetString.
+        This AVP contains the EMSKname which identifies the keying material.
+        How this name is derived is beyond the scope of this document and
+        defined in <xref target="RFC5296"></xref>.</t>
+
+        <t><cref>Can we re-use EAP-Key-Name here?</cref></t>
+
+        <t>This AVP has the M and V bits cleared.</t>
+      </section>
+
+      <section title="ERP-RK-Lifetime AVP">
+        <t>The ERP-RK-Lifetime AVP (AVP Code <cref>TBD</cref>) is of type
+        <cref>Unsigned64? 32?</cref> and contains the root key material
+        remaining lifetime in seconds. It MUST not be greater than the
+        remaining lifetime of the EMSK it is derived from. <cref>FFS: is it
+        better to pass an absolute value here, for example expiration date?
+        How to express it then (TZ, ...)? Synchronization problems?</cref></t>
+
+        <t>This AVP has the M and V bits cleared.</t>
+      </section>
+    </section>
+
+    <section anchor="Commands" title="Commands">
+      <t>We do not define any new command in this specification. We reuse the
+      Diameter-EAP-Request and Diameter-EAP-Answer commands defined in <xref
+      target="RFC4072"></xref>.</t>
+
+      <t>The Application Id field in the command header <cref>and the value in
+      Auth-Application-Id AVP which is redundant???</cref> can be set to
+      Diameter EAP application or Diameter ERP application, depending on the
+      situation, as explained in the next sections.</t>
+
+      <t>Since the original ABNF of these commands allow other optional AVPs
+      ("* [ AVP ]"), and the new AVPs defined in this specification do not
+      have the 'M' flag set, the ABNF does not need any change. Anyway, a
+      Diameter node that advertize support for the Diameter ERP application
+      MUST support the ERP-RK-Request and ERP-RK-Answer AVP <cref>Therefore,
+      in DER/DEA with Diameter ERP application ID, do we set the 'M' flag to
+      these AVPs?</cref>.</t>
+
+      <figure title="Command Codes">
+        <artwork><![CDATA[   Command-Name          Abbrev. Code Reference Application
+   ---------------------------------------------------------
+   Diameter-EAP-Request  DER     268  RFC 4072  Diameter ERP
+   Diameter-EAP-Answer   DEA     268  RFC 4072  Diameter ERP
+]]></artwork>
+      </figure>
     </section>
 
     <section anchor="Bootstrapping" title="Bootstrapping options">
-      <t></t>
+      <t>Bootstrapping involves the ER server and the EAP server directly, but
+      also indirectly the peer and the authenticator. For ERP to be
+      successful, the peer must derive the same keying material as the ER
+      server. To make this possible, it must learn the domain name of the ER
+      server. How this is achieved is outside the scope of this specification,
+      but it usually involves that the authenticator is configured to
+      advertize this domain name. This could be achieved for example by
+      including the ERP-Realm AVP in a CER/CEA exchange.</t>
+
+      <t>As stated in the <xref target="Overview"></xref>, the bootstrapping
+      of an ER server has to happen between the initial EAP authentication of
+      the peer, when the EMSK is created, and the moment the peer
+      re-authenticates with this ER server, when the bootstrapping material is
+      needed. While asynchrounous solutions are perfectly possible, it is
+      usually easier to bootstrap the ER server during one of these
+      events.</t>
+
+      <section title="Bootstrapping during initial EAP authentication">
+        <t>Bootstrapping an ER server during the initial EAP authentication
+        offers the advantage that the server is immediatly available for
+        re-authentication of the peer, thus minimizing the re-authentication
+        delay.</t>
+
+        <t>On the other hand, re-authentication may only concern a small
+        number of peers in the visited domain. Deriving and caching key
+        material for all the peers (for example, for the peers that do not
+        support ERP, or that are not mobile) is a waste of resources and
+        SHOULD be avoided. In addition, bootstrapping ERP during full EAP
+        authentication may prevent re-authentication in case of inter-domain
+        roaming. Hence, while this mecanism is useful in some situations, it
+        should be deployed with care.</t>
+
+        <t>In the case where ER server is collocated with the Home EAP server,
+        ER bootstrapping is transparent with regards to this specification,
+        although some sort of communication might be needed inside the node.
+        In this case, the server MUST advertise support of both the Diameter
+        EAP application and the Diameter ERP application, but the new AVPs
+        defined in this specification are not used.</t>
+
+        <t>When ER server and EAP server are different entities with regards
+        to Diameter, one or more Diameter EAP proxy(ies) is(are) needed in the
+        same domain as the ER server. While this(these) proxy(ies) might be
+        separate entity(ies) with secure communication channel with the ER
+        server, it is functionally equivalent to consider that the ER server
+        acts as a Diameter EAP proxy. In the rest of this section, we consider
+        that the ER server acts as a Diameter EAP proxy in its domain.</t>
+
+        <t>In order to bootstrap the ER server during full EAP authentication,
+        this server must be on the route, and act as a proxy, for the first
+        and last round of exchanges of the full EAP authentication, as
+        captured in the figure bellow.</t>
+
+        <figure title="ERP bootstrapping during full EAP authentication">
+          <artwork><![CDATA[                         ER server &
+Authenticator             EAP Proxy               Home EAP server
+=============            ===========              ===============
+     ------------------------->
+         Diameter EAP/DER
+          (EAP-Response)
+                               ------------------------->
+                                  Diameter EAP/DER
+                                   (EAP-Response)
+                                  (ERP-RK-Request)
+
+     <==================================================>
+        Multi-round Diameter EAP exchanges, unmodified
+
+                               <-------------------------
+                                   Diameter EAP/DEA
+                                    (EAP-Success)
+                                        (MSK)
+                                   (ERP-RK-Answer)
+     <-------------------------
+         Diameter EAP/DEA
+           (EAP-Success)
+               (MSK)
+            [ERP-Realm]
+]]></artwork>
+        </figure>
+
+        <t>The ER server proxies the first DER of the full EAP authentication
+        and adds the ERP-RK-Request AVP inside, if this AVP is not already in
+        the message, then forwards the request.</t>
+
+        <t>If the EAP server does not support ERP extensions, it will simply
+        ignore this grouped AVP and continue as specified in <xref
+        target="RFC4072"></xref>. If the server supports the ERP extensions,
+        it caches the ERP-Realm value with the session, and continues the EAP
+        authentication. When the authentication is complete, if it is
+        successful and the EAP method generated an EMSK, the server MUST
+        compute the rRK or rDSRK (depending on the value of ERP-Realm) as
+        specified in <xref target="RFC5296"></xref>, and add an ERP-RK-Answer
+        AVP in the Diameter-EAP-Request message, in addition to the MSK and
+        EAP-Success payload. <cref>FFS: is it important to check that the
+        server that added the ERP-RK-Request is in the path of the answer?
+        What's the worst that can happen?</cref></t>
+
+        <t>When the ER server proxies a Diameter-EAP-Answer message with a
+        Session-Id corresponding to a message to which it added an
+        ERP-RK-Answer, and the Result-Code is DIAMETER_SUCCESS, it MUST
+        examine the message and remove any ERP-RK-Answer AVP, and save its
+        content. If the message does not contain an ERP-RK-Answer AVP, the ER
+        server MAY save this information to avoid possible attempts later for
+        this session. In any case, the information stored SHOULD NOT have a
+        lifetime greater than the EMSK lifetime <cref>FFS: how does the ER
+        server knows the EMSK lifetime, if there is no ERP-RK-Answer? What is
+        the lifetime of the MSK for example?</cref></t>
+
+        <t>If the ER server is successfully bootstrapped, it MAY also add the
+        ERP-Realm AVP after removing the ERP-RK-Answer AVP in the
+        Diameter-EAP-Answer message. This could be used by the authenticator
+        to notify the peer that ERP is bootstrapped, with the ER domain
+        information. How this information can be transmitted to the peer is
+        outside the scope of this document. <cref>Is it possible? It would be
+        useful...</cref></t>
+      </section>
+
+      <section title="Bootstrapping during first re-authentication">
+        <t>Bootstrapping the ER server during the first re-authentication
+        offers several advantages: it saves resources, since we generate and
+        cache only useful keying material, it can also accomodate inter-domain
+        roaming or ER servers that loose their state (for example after
+        reboot).</t>
+
+        <t>On the other hand, the first re-authentication with the ER server
+        requires a one-round-trip with the home EAP server, which adds some
+        delay to the process (but it is more efficient than a full EAP
+        authentication in any case). Note that following re-authentications
+        for the same session with the same ER server will not have this
+        additional delay.</t>
+
+        <t><xref target="RFC5296"></xref> describes two types of bootstrapping
+        for ERP: implicit bootstrapping and explicit bootstrapping. In
+        implicit bootstrapping, the peer knows the domain it is located in,
+        and assumes that the ER server already possess the keying material for
+        the session. In this case, the peer uses a Keyname-NAI in the form
+        "EMSKname@localdomain". In explicit bootstrapping, the Keyname-NAI is
+        in the form "EMSKname@homedomain". As we will see in next section
+        <xref target="Re-authentication"></xref>, the domain part of the
+        Keyname-NAI becomes the Destination-Realm of the Diameter message, and
+        the Application Id is set to Diameter ERP application.</t>
+
+        <t>In the case of implicit bootstrapping (how the peer learns that the
+        ER server is bootstrapped is outside the scope of this specification)
+        or after a first succesful re-authentication in the visited domain,
+        the message is routed to the local ER server following normal Diameter
+        routing. If the ER server does not have key information corresponding
+        to this EMSKname, <cref>return an error to the peer? proxy the request
+        and send ERP-RK-Request to the home EAP server? How do we learn which
+        is the home domain?</cref>. See the next section <xref
+        target="Re-authentication"></xref> for detail.</t>
+
+        <t>In the case of explicit bootstrapping (the ERP message has its 'B'
+        flag set), if an ER server exists in the visited domain, it SHOULD be
+        configured for and act as a Diameter ERP proxy, and process the
+        messages as described below. If not, the ER server in the home domain
+        will be used, which is less efficient. The description that follow for
+        the ER server in the visited domain is also valid for the ER server in
+        the home domain.</t>
+
+        <t><cref>What should we do if the ER server receives an explicit
+        bootstrapping request but already possess the rDSRK?</cref></t>
+
+        <t>The ER server proxies the request (DER with Diameter ERP
+        application code) as follow, in addition to standard proxy
+        operations:<list>
+            <t>Change the Application Id in the header of the message to
+            Diameter EAP Application (code 5). <cref>What about the
+            Application-Auth-Id AVP?</cref></t>
+
+            <t>Add the ERP-RK-Request AVP, which contains the name of the
+            domain the ER server is located in (with regards to ERP).</t>
+          </list>Then the request is forwarded as usual. With its Diameter EAP
+        application id and Destination-Realm set to the home domain of the
+        peer, the request reaches the home EAP server. If this server does not
+        support ERP extensions, it replies with an error since the
+        encapsulated EAP-Initiate/Re-auth command is not understood.
+        Otherwise, it processes the ERP request as described in <xref
+        target="RFC5296"></xref>. In particular, it includes the Domain-Name
+        TLV attribute with the content from the ERP-Realm AVP. It creates the
+        DEA reply message following standard processing from <xref
+        target="RFC4072"></xref> (in particular EAP-Master-Session-Key AVP is
+        used to transport the rMSK), and includes the ERP-RK-Answer AVP.</t>
+
+        <t>The ER server receives this DEA and proxies it as follow, in
+        addition to standard proxy operations:<list>
+            <t>Set the Application Id back to Diameter ERP (code
+            <cref>TBD</cref>)</t>
+
+            <t>Extract and cache the content of the ERP-RK-Answer.</t>
+          </list>The DEA is then forwarded to the authenticator, that can use
+        the rMSK as described in <xref target="RFC5296"></xref>.</t>
+
+        <t>The figure below captures this Diameter ERP Proxy behavior:</t>
+
+        <figure title="ERP explicit bootstrapping message flow">
+          <artwork><![CDATA[Authenticator            ER server             Home EAP server
+=============            =========             ===============
+      ----------------------->
+          Diameter ERP/DER
+           (EAP-Initiate)
+                              ------------------------>
+                                    Diameter EAP/DER
+                                     (EAP-Initiate)
+                                    (ERP-RK-Request)
+
+                              <------------------------
+                                    Diameter EAP/DEA
+                                      (EAP-Finish)
+                                     (ERP-RK-Answer)
+                                         (rMSK)
+      <----------------------
+          Diameter ERP/DEA
+            (EAP-Finish)
+               (rMSK)
+]]></artwork>
+        </figure>
+      </section>
     </section>
 
     <section anchor="Re-authentication" title="Re-Authentication">
-      <t></t>
+      <t>This section describes a re-authentication exchange with a
+      bootstrapped ER server. The peer is assumed to know the domain of the
+      bootstrapped ER server in advance. See previous section <xref
+      target="Bootstrapping"></xref> for more information.
+      EAP-Initiate/Re-auth-start with Domain-Name TLV is a possibility for the
+      peer to learn the domain of the ER server attached to the
+      authenticator.</t>
+
+      <t>The following figure describes the re-authentication exchange.
+      Explication follow.</t>
+
+      <figure title="Diameter ERP exchange">
+        <artwork><![CDATA[                                                 Bootstrapped ER server
+ Peer                 Authenticator             (in local or home domain)
+ ====                 =============             =========================
+ [ <------------------------         ]               
+ [optional EAP-Initiate/Re-auth-start]               
+
+   ----------------------->
+     EAP-Initiate/Re-auth
+                           =================================>
+                               Diameter ERP, cmd code DER
+                                 User-Name: Keyname-NAI
+                            EAP-Payload: EAP-Initiate/Re-auth
+ 
+                           <=================================
+                               Diameter ERP, cmd code DEA
+                             EAP-Payload: EAP-Finish/Re-auth
+                              EAP-Master-Session-Key: rMSK
+    <----------------------
+      EAP-Finish/Re-auth
+
+]]></artwork>
+      </figure>
+
+      <t>The authenticator that does not support ERP <xref
+      target="RFC4072"></xref> discards EAP packets with unknown ERP-specific
+      code (EAP-Initiate). The peer falls back to full EAP authentication in
+      that case.</t>
+
+      <t>When the ERP-compatible authenticator receives an
+      EAP-Initiate/Re-auth message from the peer (or after having sent a
+      EAP-Initiate/Re-auth-start packet), it process as described in <xref
+      target="RFC5296"></xref> with regards to the EAP state machine, and
+      similarly to <xref target="RFC4072">Diameter EAP</xref>, with regards to
+      Diameter, with the following differences:<list>
+          <t>The application id is set to Diameter ERP instead of Diameter
+          EAP.</t>
+
+          <t>The User-Name and Destination-Realm are derived from the
+          Keyname-NAI.</t>
+
+          <t><cref>How do we create / retrieve the Session-Id?</cref></t>
+        </list></t>
+
+      <t>The ER server receives this request and process the ERP payload as
+      described in <xref target="RFC5296"></xref>. If re-authentication is
+      successful, it creates a DEA answer as described in Diameter EAP, with
+      the following differences:<list>
+          <t>The application id is set to Diameter ERP.</t>
+
+          <t>The EAP-Payload AVP contains the ERP message:
+          EAP-Finish/Re-auth</t>
+
+          <t>The EAP-Master-Session-Key AVP contains the rMSK</t>
+
+          <t>The Result-Code AVP contains DIAMETER_SUCCESS.</t>
+        </list>In case the re-authentication fails, the Result-Code AVP
+      contains an error code, and no EAP-Master-Session-Key AVP is
+      included.</t>
+
+      <t>When the authenticator receives this answer, it processes it as
+      described in Diameter EAP: forwards the EAP payload to the peer, and use
+      the rMSK as a shared secret in Secure Association Protocol.</t>
+    </section>
+
+    <section anchor="Sessions" title="Sessions">
+      <t>This section describes how sessions are handled in case of
+      re-authentication.</t>
+
+      <t><cref>See guidelines in I-D.ietf-dime-app-design-guide</cref></t>
+
+      <t><cref>During initial full EAP authentication, the identity of the
+      peer is used to create the Session-Id AVP, which is then used during
+      accounting. When the peer attaches to a new authenticator and performs
+      ERP, its identity is not disclosed to the authenticator. Instead, the
+      peer presents the Keyname-NAI. This identifiers contains the EMSKName as
+      user part. </cref></t>
+
+      <t><cref>The new authenticator will therefore derive the new Session-Id
+      from this EMSKName and use this for accounting purpose. </cref></t>
+
+      <t><cref>Although the home EAP server is able to link EMSKName with the
+      peer's identity, the other Diameter entities do not have this mapping.
+      In particular, the realm part of Keyname-NAI is the visited network. How
+      does the authenticator figures out that the account records must be sent
+      to the home domain of the peer? </cref></t>
+
+      <t><cref>It is possible to cache the necessary information at the ER
+      server level. Is it useful to specify this mechanism in this
+      document?</cref> </t>
     </section>
 
     <section anchor="Acknowledgements" title="Acknowledgements">
-      <t>Remember, it's important to acknowledge people who have contributed
-      to the work.</t>
+      <t><cref>Remember, it's important to acknowledge people who have
+      contributed to the work</cref></t>
     </section>
 
     <section anchor="IANA" title="IANA Considerations">
-      <t>This memo includes no request to IANA.</t>
+      <t><cref>Request a new Application Id for Diameter ERP.</cref></t>
 
-      <t>(It's good - indeed pretty much mandatory now - to have an explicit
-      note because otherwise IANA wastes cycles trying to figure out if
-      something is needed..)</t>
+      <t><cref>Request new AVP Codes for ERP-* AVPs</cref></t>
     </section>
 
     <section anchor="Security" title="Security Considerations">
-      <t>Remember to consider security from the start.. and all drafts are
-      required to have a security considerations section before they will pass
-      the IESG.</t>
+      <t><cref>Security considerations from RFC3588 (+bis), RFC4072, RFC5247,
+      RFC5295, and RFC5296 apply</cref></t>
+
+      <t><cref>Is it safe to use ERP-RK-Request / Answer AVPs? What is the
+      worst case?</cref></t>
     </section>
   </middle>
 
-  <!--  *****BACK MATTER ***** -->
-
   <back>
-    <!-- References split to informative and normative -->
-
     <references title="Normative References">
-      <reference anchor="RFC2119"
-                 target="http://xml.resource.org/public/rfc/html/rfc2119.html">
-        <front>
-          <title abbrev="RFC Key Words">Key words for use in RFCs to Indicate
-          Requirement Levels</title>
-
-          <author fullname="Scott Bradner" initials="S." surname="Bradner">
-            <organization>Harvard University</organization>
-
-            <address>
-              <postal>
-                <street>1350 Mass. Ave.</street>
-
-                <street>Cambridge</street>
-
-                <street>MA 02138</street>
-              </postal>
-
-              <phone>- +1 617 495 3864</phone>
-
-              <email>sob@harvard.edu</email>
-            </address>
-          </author>
-
-          <date month="March" year="1997" />
-
-          <area>General</area>
-
-          <keyword>keyword</keyword>
-
-          <abstract>
-            <t>In many standards track documents several words are used to
-            signify the requirements in the specification. These words are
-            often capitalized. This document defines these words as they
-            should be interpreted in IETF documents. Authors who follow these
-            guidelines should incorporate this phrase near the beginning of
-            their document: <list>
-                <t>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.</t>
-              </list></t>
-
-            <t>Note that the force of these words is modified by the
-            requirement level of the document in which they are used.</t>
-          </abstract>
-        </front>
-
-        <seriesInfo name="BCP" value="14" />
-
-        <seriesInfo name="RFC" value="2119" />
-
-        <format octets="4723" target="ftp://ftp.isi.edu/in-notes/rfc2119.txt"
-                type="TXT" />
-
-        <format octets="14486"
-                target="http://xml.resource.org/public/rfc/html/rfc2119.html"
-                type="HTML" />
-
-        <format octets="5661"
-                target="http://xml.resource.org/public/rfc/xml/rfc2119.xml"
-                type="XML" />
-      </reference>
+      &RFC2119;
 
       &RFC3588;
 
-      &RFC4005;
+      &RFC4072;
 
       &RFC5295;
 
@@ -308,13 +694,13 @@
     </references>
 
     <references title="Informative References">
+      &RFC3748;
+
       &I-D.draft-ietf-hokey-key-mgm;
-    </references>
 
-    <section anchor="app-additional" title="Additional stuff">
-      <t>You can add appendices just as regular sections, the only difference
-      is that they go within the "back" element, and not within the "middle"
-      element. And they follow the "reference" elements.</t>
-    </section>
+      &I-D.draft-gaonkar-radext-erp-attrs;
+
+      &I-D.draft-ietf-dime-app-design-guide;
+    </references>
   </back>
 </rfc>
"Welcome to our mercurial repository"