<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "dtd/rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
]>

<!-- control the table of contents (ToC) -->
<!-- generate a ToC -->
<?rfc toc="yes"?>

<!-- the number of levels of subsections in ToC. default: 3 -->
<?rfc tocdepth="4"?>

<!-- control references -->
<?rfc symrefs="yes"?>

<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>

<!-- do not start each main section on a new page -->
<?rfc compact="yes" ?>


<rfc category="info" ipr="trust200902" docName="draft-vishwakarma-opsawg-ssh-cert-radius-02">
<!-- number="" obsoletes="" seriesNo="" updates="" -->
    <!-- Front section -->
	<front>
        <title abbrev="SSL Cert Radius">RADIUS Extension for Certificate-based SSH Authentication</title>

        <author fullname="Devendra Vishwakarma" initials="" surname="Devendra Vishwakarma">
            <organization>Cisco Systems</organization>
            <address>
                <postal>
                    <street></street>
                    <city>Apex</city>
                    <region>North Carolina</region>
                    <code>27523</code>
                    <country>USA</country>
                </postal>
                <email>dvishwak@cisco.com</email>
            </address>
        </author>
        <author fullname="Prakash Suthar" initials="" surname="Prakash Suthar">
            <organization>Google Inc.</organization>
            <address>
                <postal>
                    <street></street>
                    <city>Mountain View</city>
                    <region>California</region>
                    <code>94043</code>
                    <country>USA</country>
                </postal>
                <email>psuthar@google.com</email>
            </address>
        </author>
        <author fullname="Vivek Agarwal" initials="" surname="Vivek Agarwal">
            <organization>Cisco Systems</organization>
            <address>
                <postal>
                    <street></street>
                    <city>Apex</city>
                    <region>North Carolina</region>
                    <code>27523</code>
                    <country>USA</country>
                </postal>
                <email>vivagarw@cisco.com</email>
            </address>
        </author>
        <author fullname="Anil Jangam" initials="" surname="Anil Jangam" role="editor">
            <organization>Cisco Systems</organization>
            <address>
                <postal>
                    <street></street>
                    <city>San Jose</city>
                    <region>California</region>
                    <code>95134</code>
                    <country>USA</country>
                </postal>
                <email>anjangam@cisco.com</email>
            </address>
        </author>

        <date day="28" month="Dec" year="2021"/>
        <area>General</area>
        <workgroup>OPSAWG WG</workgroup>
		<keyword />

		<abstract>
            <t>A scalable and centralized mechanism is required for a certificate-based administrative access to multitude of virtualized and physical network functions. While there are mechanisms that exist today to provide secure administrative command-line and API-based access, there are certain management and maintenance overheads as well as certain scalability challenges related to it. In this draft we discuss these challenges and propose a standardized, centralized server-based mechanism to authenticate a user over an SSH session using its client certificate.</t>
		</abstract>
	</front>

    <!-- Middle section -->
	<middle>
        <section title="Conventions and Terminology">
            <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 <xref target="RFC2119"></xref>.
            </t>

            <t>This document uses the terminology of <xref target="RFC3987"></xref> and <xref target="RFC3986"></xref> for RADIUS entities.
            </t>
        </section>

        <section title="Introduction">
            <t>With the pervasive use of virtualized infrastructure (e.g., microservices-based application designs), a high magnitude of individual and autonomous software application components are working together to realize a complete system functionality. With a large number of highly interacting agents, an authentication and authorization mechanism which is scalable and flexible is very critical for administrative access. A typical service authentication and authorization (AAA) infrastructure comprise of an identity management, verification and, validations functions.</t>

            <t>In a typical day of an IT (Information Technology) enabled organization, IT engineers often connect to many different servers while carrying their tasks such as, change of configurations, write a software code, save a file, fetch an image, etc. There are mainly three different ways engineers can authenticate to the servers they are connecting to.

                <list style="symbols">
                    <t>Password based</t>
                    <t>RSA key based</t>
                    <t>OpenSSH certificate based local authentication</t>
                </list>

               While these methods are currently being used, they suffer from the following limitations respectively.
                <list style="symbols">
                    <t>Password based: In this method, user needs to enter the username and password each time it tries to login to a server. With the increasing frequency and number of servers, the manual configuration becomes untenable. While script-based automation is an option, it is highly insecure as passwords are stored in cleartext. Also, a frequent password changes and adherence to complex password policies are required to prevent against any misuse. A 2-factor authentication mechanism provides some protection but it still involves a certain level of human interaction, which is difficult to automate.</t>
                    <t>The RSA key-based authentication requires a frequent copy of files to each device, server, cloud-native network function (CNF), and virtual network functions (VNFs) and hence is not scalable. In addition, if a key gets compromised, the revocation of it from all servers and VNFs involves a lot of effort.</t>
                    <t>OpenSSH certificate based local authentication requires root certification authority (CA) certificate to be copied to each individual device, server, and the VNF. If the developers are using client certificate from multiple certification authorities, all of the certification authority (CA) root certificate and intermediate certificate has to be installed on each of the servers that’s being accessed. Also, a connectivity to the certificate revocation list (CRL) is required from all the devices, servers, and VNFs to check for revoked certificates. In a typical customer environment all the device, servers, and VNFs do not have access to a public CRL location. Also, any changes in the certificates (e.g. expiry or revocation) requires a manual or a script based cleanup of certificates from all the servers.</t>
                </list>

                In order to address these limitations and move towards a password-less mechanism, we propose an approach that uses certificate based SSH authentication using RADIUS protocol. The centralized server-based system also helps solve all the above outlined limitations.
            </t>

            <section title="Centralized RADUIS Server based Solution" anchor="central_radius_solution">
                <t>As shown in <xref target="system_block_diag"></xref>, a method is devised to authenticate SSH sessions using client certificates, where the device, server, VNF, and CNF uses RADIUS protocol to validate the authenticity of the certificate from a centralized RADIUS server. The RADIUS server will get the username from the CN (common name) field in the client certificate.</t>

                    <t>The benefits of using certificates for SSH session authentication are as follows:
                    <list style="symbols">
                        <t>It does not require a frequent client certificate replacement (e.g., a certificate is typically valid for a year), which solves the problem seen in the password-based authentications.</t>
                        <t>It does not require client public keys to be copied to each device, server, VNF, or CNF that needs to be accessed.</t>
                        <t>It doesn't need any secondary out-of-band authentication like OTP or a complex MFA (Multi-factor Authentication) solution.</t>
                        <t>All the root certificates and intermediate certificates needs to be installed on the RADIUS server only. This makes it easy for many administrative tasks including initial setup, adding a new CA, retiring of an old CA, certificate revocation check, and the centralized access to the internet to download the revocation list.</t>
                        <t>Both the certificate validation and revocation check happen at a centralized AAA server.</t>
                    </list>
                </t>
                <figure align="center" anchor="system_block_diag" title="Centralized RADIUS-based AAA System">
                    <artwork align="center"><![CDATA[
                                +----+   +----+
                                |VNF1|   |VNF2|
                                +--+-+   +--+-+
+-----------+      ;-----;         |        |      +---------------+
|           |     /       \     +--+--------+-+    | Radius Server |
| Endpoint  |--->( Network )--->|     NFVI    |--->| (AAA Server)  |
|           |     \       /     +-------------+    +-------+-------+
+-----------+      `-----'                                 |
                                                           |
                        +--------------------+             |
                        |  Service Provider  |<------------+
                        | Cert Authority (CA)|
                        +--------------------+
                ]]>
                    </artwork>
                </figure>
            </section>

        </section>

        <section title="Operational Details" anchor="operational_details">
            <t>Operation is identical to that defined in <xref target="RFC2865"></xref>, <xref target="RFC5216"></xref>, and <xref target="RFC4252"></xref>.</t>
            <section title="Basic Setup" anchor="basic_setup">
                <t>Analogous to 802.1X authentication where there is an EAP Supplicant (also known as EAP peer), pass-through authenticator, and a RADIUS server. This solution has an SSH client that is similar to EAP supplicant, an SSH server similar to pass-through authenticator, and a RADIUS server. The SSH transport protocol defined in RFC 4253 MUST be used as the lower layer of the EAP. The SSH transport protocol satisfies all the requirements of the EAP lower layer defined in the section 3.1 of the RFC 3748.
                    <list style="symbols">
                        <t>Unreliable transport: Even though the EAP assumes that the lower layer can be a unreliable transport and has retransmission built into EAP itself. The SSH transport protocol is a reliable transport protocol and handles its own retransmission when used over TCP/IP. RFC 793 section 3.7 has the details of data communication and retransmission behavior of TCP.</t>
                        <t>Lower layer error detection: Error detection must be provided by the EAP lower layer and SSH TP does that using the sequence numbers in the TCP packets. This is detailed in the section 3.3 of the RFC 793.</t>
                        <t>Lower layer security: EAP does not require lower layers to provide security services, however SSH TP over TCP provides for</t>
                        <t>Data integrity: as detailed in section 6.4 of RFC 4253 and section 9.3.2 of RFC 4251</t>
                        <t>Replay protection: as detailed in section 9.3.3 of RFC 4251</t>
                        <t>Authentication: as detailed in section 9.4 of RFC 4251</t>
                        <t>Confidentiality: as detailed in section 6.3 of RFC 4253 and section 9.3.1</t>
                        <t>Minimum MTU: EAP requires the lower layer to support 1020 bytes or higher MTU. SSH TP satisfies this requirement. In a typical TCP/IP network the MTU is by default set to 1500 bytes which satisfies the requirement for EAP.</t>
                        <t>Possible duplication: while it is desirable that lower layers provide for non-duplication, this is not a requirement.</t>
                        <t>Ordering guarantees: Lower layer transports for EAP MUST preserve ordering between a source and destination at a given priority level (the ordering guarantee provided by [IEEE-802]). SSH TP when used over TCP/IP guarantees ordered delivery of data from source to destination. Section 2.6 of RFC 793 details the use of sequence numbers in TCP.</t>
                    </list>
                </t>
                <t>The SSH client MUST support certificate-based authentication for the SSH session. The SSH client MUST also have a X.509 client certificate installed on the operating system. The client certificate MUST have "client authentication" as value in the enhanced key usage field of the certificate. This will ensure that the client is ready to complete SSH authentication using the installed X.509 client certificate.</t>
                <t>The SSH server MUST be configured to send SSH authentication requests to a RADIUS server.</t>
                <t>The RADIUS server MUST have an X.509 server certificate installed on the operating system. The server certificate MUST have ''server authentication" as value in the enhanced key usage field of the certificate. This will ensure that the RADIUS server is ready to authenticate SSH clients using certificates. The RADIUS server MUST also be configured to do EAP-TLS authentication as described in <xref target="RFC3748"></xref>.</t>
            </section>

            <section title="EAP TLS authentication" anchor="eap_tls_auth">
                <t>Although other inner methods of EAP could be supported for authentication here such as EAP-MSCHAP, EAP-MD5 or EAP-FAST etc, however they do not provide much benefit over the current password based authentication that exist. This draft only focuses on the EAP-TLS inner method as that gives the ability to allow certificate based authentication. </t>
                <t>The SSH client will initiate an SSH connection to the SSH server. The SSH server drives the authentication by telling the SSH client which authentication methods can be used during the session.</t>
                <t>The SSH client MUST choose a client certificate installed in the operating system as described in the section 2.1 Basic Setup. If there are multiple client certificates then the SSH client SHOULD choose a client certificate. If there is no certificate installed on the SSH client, then the client MAY choose another authentication methods defined in <xref target="RFC4251"></xref>.</t>
                <t>The SSH client initiates an SSH session to the SSH server. The SSH server upon receiving the connection request MUST initiate the EAP-TLS authentication by sending an EAP identity request to the SSH client.</t>
                <t>The SSH client picks the common name from the user certificate and sends that as the EAP identity back to the SSH server.</t>

                <!--
                <texttable title="table_1" anchor="Table-1">
                    <ttcol align='left'>#</ttcol>
                    <ttcol align='left'>Column-1</ttcol>
                    <ttcol align='left'>Column-2</ttcol>
                    <c>1</c>
                    <c>R1-C1</c>
                    <c>R1-C12</c>
                    <c>2</c>
                    <c>R2-C1</c>
                    <c>R2-C12</c>
                </texttable>
                -->
            </section>

            <section title="RADIUS Access Request" anchor="access_req_serv_type_cert">
                    <t>The SSH server constructs a RADIUS authentication request and MUST set the service type = Cert Login. This service type will be an indication to the RADIUS server to use EAP-TLS authentication method for that SSH session.</t>
                    <t>The RADIUS server MUST use EAP-TLS authentication for this session. RADIUS server sends a response back to the SSH server as Radius Access Challenge(EAP-Message(Code=Request TYPE=TLS EAP(EAP-TLS)))</t>
                    <t>The SSH server strips the EAP message from the RADIUS packet received and forwards it to the SSH client. The message is (EAP-Message(Code=Request TYPE=TLS EAP(EAP-TLS)).</t>
                    <t>The SSH client starts the TLS handshake by sending the EAP-Message(TLS Client Hello) to the SSH server. The SSH server takes the EAP message received in the previous step and wraps it in the RADIUS access request and sends it to the RADIUS server. The message is Radius Access Request(EAP-Message(TLS Client Hello)).</t>
                    <t>Upon receipt of this message the RADIUS server processes the client hello message and sends a reply back to the SSH server with server hello, server certificate, server key exchange and certificate request. The message is Radius Access Challenge(EAP-Message(Server Hello, Server Certificate, Server Key exchange, Certificate Request). </t>
                    <t>The SSH server strips the EAP message from the RADIUS packet received in the previous step and forwards it to the SSH client. The message is EAP-Message(Server Hello, Server Certificate, Server Key exchange, Certificate Request). The SSH client validates the server root certificate installed. The SSH client moves ahead in the TLS handshake process and sends the client certificate in a message to the SSH server EAP-Message(TLS Client Certificate, TLS Client key exchange, TLS Certificate Verify)).</t>
                    <t>The SSH server takes the EAP message received in the previous step and wraps it in the RADIUS access request and sends it to the RADIUS server. The message is Radius Access Request(EAP-Message(TLS Client Certificate, TLS Client key exchange, TLS Certificate Verify)).</t>
                    <t>The RADIUS server validates the client certificate using the root CA certificate chain. RADIUS server sends a TLS finished message to the SSH server. The message is Radius Access Challenge(EAP-Message(TLS Finished)).</t>
                    <t>The SSH server strips the EAP message from the RADIUS packet received in the previous step and forwards it to the SSH client. The message is EAP-Message(TLS Finished). The SSH client moves ahead in the EAP phase and sends the next message. The message is EAP-Message(TYPE=EAP-TLS)).</t>
                    <t>The SSH server takes the EAP message received in the previous step and wraps it in the RADIUS access request and sends it to the RADIUS server. The message is Radius Access Request(EAP-Message(TYPE=EAP-TLS)).</t>
                    <t>RADIUS server processes the previous request and at this the EAP authentication is successful. The message sent back to the SSH server is Radius Accept(EAP-Message(EAP-Success)). The SSH server strips the EAP message from the RADIUS packet received in the previous step and forwards it to the SSH client. The message is EAP-Message(EAP-Success).</t>
                    <t>The SSH session is established at this point. A message to this effect is sent to the SSH client from the SSH server.</t>
            </section>

            <section title="Radius Accounting Request" anchor="accounting_req_serv_type">
                <t>
                    <figure align="center" anchor="radius_accounting_request" title="Radius Accounting Request Flow">
                        <artwork align="center"><![CDATA[

    Endpoint                  VNF/CNF               Radius Server
    (SSH Client)           (SSH/EAP Server)           (AAA Server)
    +---+------+           +--------+-----+           +-------+---+
        |                           |                         |
        |   SSH Request to VM       |                         |
        |-------------------------->|                         |
        |                           |                         |
        |   EAP Identity Request    |                         |
        |<--------------------------|                         |
        |                           |                         |
        |   EAP Identity Response   |                         |
        |    (CN from User Cert)    |                         |
        |-------------------------->|                         |
        |                           | Radius Access Request   |
        |                           | (ST: Cert Login)        |
        |                           | EAP Msg: Identity       |
        |                           | (ID: CN from User Cert) |
        |                           |------------------------>|
        |                           |                         |
        |                           | Radius Access Challenge |
        |                           | (EAP Message            |
        |                           |  RT: TLS EAP(EAP-TLS)   |
        |   (EAP Message            |<------------------------|
        |    RT: TLS EAP(EAP-TLS)   |                         |
        |<--------------------------|                         |
        |                           |                         |
        |    EAP Message            |                         |
        |    (TLS Client Hello)     |                         |
        |-------------------------->|                         |
        |                           | Radius Access Request   |
        |                           | EAP-Message:            |
        |                           | (TLS client hello)      |
        |                           |------------------------>|
        |                           |                         |
        |                           |             Cert Login  |--+
        |                           |             supported   |  |
        |                           |                         |<-+
        |                           |                         |
        |                           | Radius Access Challenge |
        |                           | (EAP Message:           |
        |                           |  Server Hello,          |
        |   (EAP Message:           |  Server Cert,           |
        |    Server Hello,          |  Key Exchange,          |
        |    Server Cert,           |  Cert Request)          |
        |    Key Exchange,          |<------------------------|
        |    Cert Request)          |                         |
        |<--------------------------|                         |
        |                           |                         |
        |--+ Server Cert            |                         |
        |  | Validation             |                         |
        |<-+                        |                         |
        |                           |                         |
        |  EAP message              |                         |
        |  (TLS Client Certificate  |                         |
        |   TLS Client Key Xchange  |                         |
        |   TLS Cert Verify)        | Radius Access Request   |
        |-------------------------->| (EAP message            |
        |                           | (TLS Client Certificate |
        |                           | (TLS Client Key Xchange |
        |                           |  TLS Cert Verify)       |
        |                           |-------------------------|
        |                           |                         |
        |                           |             Client Cert |--+
        |                           |             Validated   |  |
        |                           |                         |<-+
        |                           |                         |
        |                           |                         |
        |                           | Radius Access Challenge |
        |                           | (EAP Message:           |
        |                           |  TLS Finished)          |
        |                           |<------------------------|
        |       TLS Finished)       |                         |
        |<--------------------------|                         |
        |                           |                         |
        |      EAP Message          |                         |
        |     (Type: EAP-TLS)       |                         |
        |-------------------------->|                         |
        |                           | Radius Access Request   |
        |                           | EAP Msg(Type: EAP-TLS)  |
        |                           |------------------------>|
        |                           |                         |
        |                           | Radius Access Accept    |
        |                           | (EAP Message:           |
        |                           |  EAP-Success)           |
        |                           |<------------------------|
        |       EAP Success         |                         |
        |<--------------------------|                         |
        |                           |                         |
        |    Session Established    |                         |
        |<--------------------------|                         |
        |                           |                         |

        Legends: CN: Common Name ST: Service Type RT: Request Type
                    ]]>
                        </artwork>
                    </figure>
                </t>
            </section>

            <section title="Radius Access Accept" anchor="radius_access_accept">
                <t>As shown in <xref target="radius_accounting_request"></xref>, when the Radius server supports the new service-type, it sends a Radius Access Accept message. In case where server does not support the certificate-based login type, it responds with Radius Access Reject response indicating the new login not supported. The corresponding call flow is shown in <xref target="server_not_support_service_type"></xref>.</t>

                <figure align="center" anchor="server_not_support_service_type" title="AAA Server Does not Support Service Type">
                    <artwork align="center"><![CDATA[

Endpoint                  VNF/CNF               Radius Server
(SSH Client)           (SSH/EAP Server)           (AAA Server)
+---+------+           +--------+-----+           +-------+---+
    |                           |                         |
    |   SSH Request to VM       |                         |
    |-------------------------->|                         |
    |                           |                         |
    |   EAP Identity Request    |                         |
    |<--------------------------|                         |
    |                           |                         |
    |   EAP Identity Response   |                         |
    |    (CN from User Cert)    |                         |
    |-------------------------->|                         |
    |                           | Radius Access Request   |
    |                           | (ST: Cert Login)        |
    |                           | EAP Msg: Identity       |
    |                           | (ID: CN from User Cert) |
    |                           |------------------------>|
    |                           |                         |
    |                           | Radius Access Reject    |
    |                           | (Login Not Supported*)  |
    | (EAP Failure              |<------------------------|
    | Cert login Not Supported) |                         |
    |<--------------------------|                         |
    |                           |                         |

    Legends: CN: Common Name ST: Service Type RT: Request Type
                ]]>
                    </artwork>
                </figure>
            </section>
        </section>
        <section title="Protocol Details" anchor="protocol_details">
            <t>Operation is identical to that defined in <xref target="RFC2865"></xref>, <xref target="RFC5216"></xref>, and <xref target="RFC4252"></xref>.</t>
            <section title="Packet Format" anchor="packet_format">
            </section>
            <section title="Packet Types" anchor="packet_types">
                <t>The RADIUS Packet type is determined by the 'Code' field in the first octet of the packet.</t>
                <section title="Access Request" anchor="access_request">
                    <t>The Access-Request packet type is same as defined in <xref target="RFC2865"></xref>. Here is a summary of the Access-Request packet format as shown in <xref target="packet_format_with_attribute"></xref>. The fields are transmitted from left to right.</t>
                    <figure align="center" anchor="packet_format_with_attribute" title="Access Request Packet Format">
                        <artwork align="center"><![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Code      |  Identifier   |            Length             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                     Request Authenticator                     |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Attributes ...
    +-+-+-+-+-+-+-+-+-+-+-+-+-
                    ]]>
                        </artwork>
                    </figure>
                    <t>Within the same framework, this draft adds a new service-type attribute value that will be sent in the Access-Request packet.</t>
                </section>
            </section>
            <section title="Attributes" anchor="attributes">
                <section title="Service Type" anchor="service_type">
                    <t>The 'Type' attribute value will have the same format as the service-type field defined in <xref target="RFC2865"></xref> and is shown in <xref target="service_type_encoding"></xref>. The fields are transmitted from left to right.</t>
                    <figure align="center" anchor="service_type_encoding" title="Service Type Encoding">
                        <artwork align="center"><![CDATA[
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Type     |      Length    |             Value             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Value (cont.)                 |
    |-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    ]]>
                        </artwork>
                    </figure>
                    <t>Type
                        <list style="symbols">
                            <t>6 for Service-Type</t>
                        </list>
                    </t>
                    <t>Length
                        <list style="symbols">
                            <t>6 bytes</t>
                        </list>
                    </t>
                    <t>Value: the current types supported are as follows.
                        <list style="symbols">
                            <t>Login</t>
                            <t>Framed</t>
                            <t>Callback Login</t>
                            <t>Callback Framed</t>
                            <t>Outbound</t>
                            <t>Administrative</t>
                            <t>NAS Prompt</t>
                            <t>Authenticate Only</t>
                            <t>Callback NAS Prompt</t>
                            <t>Call Check</t>
                            <t>Callback Administrative</t>
                        </list>
                    </t>
                    <t>This draft introduces a new service-type value as below.</t>
                    <t>
                        <list style="symbols">
                            <t>Cert Login</t>
                        </list>
                    </t>
                    <t>The Cert Login value shall be used by AAA Client in an Access-Request packet to indicate to the RADIUS server that EAP-TLS authentication needs to be used for this session. It is recommended that the endpoint shall have a client certificate installed and ready to be used during the authentication.</t>
                </section>
            </section>
        </section>
        <section title="IANA Considerations" anchor="iana_considerations">
            <t>This section provides guidance to the Internet Assigned Numbers Authority (IANA) regarding registration of values related to the RADIUS protocol, in accordance with <xref target="RFC8126"></xref>.</t>
            <t>A new attribute is proposed to be added to the RADIUS Radius Access Request in the Service-Type Enum.</t>
        </section>
        <section title="Security Considerations" anchor="security_considerations">
            <t>The user certificate used by the clients must be stored in a non-shared location of the operating system. This will ensure that the users on the same system are not able to use each other certificates.</t>

            <t>All the security considerations apply from the RFC 2865 as well.</t>
        </section>
        <section title="Summary" anchor="summary">
            <t>A scalable, centralized, and standard-based method for management of user login authentication is described. The proposal comprise of an enhancement to the RADIUS protocol message and certain server side enhancements shall be required to support the new functionality. Once implemented, the enhanced server shall provide an improved user experience involving a high frequency and a high scale of user authentication across a range of interconnected agents (e.g. client and servers). The enhancement provides an improved configuration and management of the authentication infrastructure and reduces the overhead related to deployment of root and intermediate certificates at individual network nodes. This enhancement not only makes the initial setup easier, but also revocation check easier due to the centralized design. Addition and retirement of root and intermediate certificates are among the most time saving aspects of the proposed enhancement.</t>
        </section>
        <section title="Acknowledgments" anchor="acknowledgments">
            <t>We are grateful for the input from IESG members and from a number of individual members of the IETF community who share our concern for doing the right thing.</t>
        </section>
	</middle>

    <!-- Back section -->
	<back>
        <references title="Normative References">
            <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
            &RFC2119;

            <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
            <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author initials="M." surname="Cotton" fullname="M. Cotton">
            <organization/>
            </author>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
            <organization/>
            </author>
            <author initials="T." surname="Narten" fullname="T. Narten">
            <organization/>
            </author>
            <date year="2017" month="June"/>
            <abstract>
            <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
            <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
            <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
            </front>
            <seriesInfo name="BCP" value="26"/>
            <seriesInfo name="RFC" value="8126"/>
            <seriesInfo name="DOI" value="10.17487/RFC8126"/>
            </reference>

            <reference anchor="RFC4252" target="https://www.rfc-editor.org/info/rfc4252">
            <front>
            <title>The Secure Shell (SSH) Authentication Protocol</title>
            <author initials="T." surname="Ylonen" fullname="T. Ylonen">
            <organization/>
            </author>
            <author initials="C." surname="Lonvick" fullname="C. Lonvick" role="editor">
            <organization/>
            </author>
            <date year="2006" month="January"/>
            <abstract>
            <t>The Secure Shell Protocol (SSH) is a protocol for secure remote login and other secure network services over an insecure network. This document describes the SSH authentication protocol framework and public key, password, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for the SSH connection protocol. [STANDARDS-TRACK]</t>
            </abstract>
            </front>
            <seriesInfo name="RFC" value="4252"/>
            <seriesInfo name="DOI" value="10.17487/RFC4252"/>
            </reference>

            <reference anchor="RFC2865" target="https://www.rfc-editor.org/info/rfc2865">
            <front>
            <title>Remote Authentication Dial In User Service (RADIUS)</title>
            <author initials="C." surname="Rigney" fullname="C. Rigney">
            <organization/>
            </author>
            <author initials="S." surname="Willens" fullname="S. Willens">
            <organization/>
            </author>
            <author initials="A." surname="Rubens" fullname="A. Rubens">
            <organization/>
            </author>
            <author initials="W." surname="Simpson" fullname="W. Simpson">
            <organization/>
            </author>
            <date year="2000" month="June"/>
            <abstract>
            <t>This document describes a protocol for carrying authentication, authorization, and configuration information between a Network Access Server which desires to authenticate its links and a shared Authentication Server. [STANDARDS-TRACK]</t>
            </abstract>
            </front>
            <seriesInfo name="RFC" value="2865"/>
            <seriesInfo name="DOI" value="10.17487/RFC2865"/>
            </reference>

            <reference anchor="RFC5216" target="https://www.rfc-editor.org/info/rfc5216">
            <front>
            <title>The EAP-TLS Authentication Protocol</title>
            <author initials="D." surname="Simon" fullname="D. Simon">
            <organization/>
            </author>
            <author initials="B." surname="Aboba" fullname="B. Aboba">
            <organization/>
            </author>
            <author initials="R." surname="Hurst" fullname="R. Hurst">
            <organization/>
            </author>
            <date year="2008" month="March"/>
            <abstract>
            <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides support for multiple authentication methods. Transport Layer Security (TLS) provides for mutual authentication, integrity-protected ciphersuite negotiation, and key exchange between two endpoints. This document defines EAP-TLS, which includes support for certificate-based mutual authentication and key derivation.</t>
            <t>This document obsoletes RFC 2716. A summary of the changes between this document and RFC 2716 is available in Appendix A. [STANDARDS-TRACK]</t>
            </abstract>
            </front>
            <seriesInfo name="RFC" value="5216"/>
            <seriesInfo name="DOI" value="10.17487/RFC5216"/>
            </reference>


            <reference anchor="RFC3748" target="https://www.rfc-editor.org/info/rfc3748">
            <front>
            <title>Extensible Authentication Protocol (EAP)</title>
            <author initials="B." surname="Aboba" fullname="B. Aboba">
            <organization/>
            </author>
            <author initials="L." surname="Blunk" fullname="L. Blunk">
            <organization/>
            </author>
            <author initials="J." surname="Vollbrecht" fullname="J. Vollbrecht">
            <organization/>
            </author>
            <author initials="J." surname="Carlson" fullname="J. Carlson">
            <organization/>
            </author>
            <author initials="H." surname="Levkowetz" fullname="H. Levkowetz" role="editor">
            <organization/>
            </author>
            <date year="2004" month="June"/>
            <abstract>
            <t>This document defines the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication methods. EAP typically runs directly over data link layers such as Point-to-Point Protocol (PPP) or IEEE 802, without requiring IP. EAP provides its own support for duplicate elimination and retransmission, but is reliant on lower layer ordering guarantees. Fragmentation is not supported within EAP itself; however, individual EAP methods may support this. This document obsoletes RFC 2284. A summary of the changes between this document and RFC 2284 is available in Appendix A. [STANDARDS-TRACK]</t>
            </abstract>
            </front>
            <seriesInfo name="RFC" value="3748"/>
            <seriesInfo name="DOI" value="10.17487/RFC3748"/>
            </reference>

            <reference anchor="RFC4251" target="https://www.rfc-editor.org/info/rfc4251">
            <front>
            <title>The Secure Shell (SSH) Protocol Architecture</title>
            <author initials="T." surname="Ylonen" fullname="T. Ylonen">
            <organization/>
            </author>
            <author initials="C." surname="Lonvick" fullname="C. Lonvick" role="editor">
            <organization/>
            </author>
            <date year="2006" month="January"/>
            <abstract>
            <t>The Secure Shell (SSH) Protocol is a protocol for secure remote login and other secure network services over an insecure network. This document describes the architecture of the SSH protocol, as well as the notation and terminology used in SSH protocol documents. It also discusses the SSH algorithm naming system that allows local extensions. The SSH protocol consists of three major components: The Transport Layer Protocol provides server authentication, confidentiality, and integrity with perfect forward secrecy. The User Authentication Protocol authenticates the client to the server. The Connection Protocol multiplexes the encrypted tunnel into several logical channels. Details of these protocols are described in separate documents. [STANDARDS-TRACK]</t>
            </abstract>
            </front>
            <seriesInfo name="RFC" value="4251"/>
            <seriesInfo name="DOI" value="10.17487/RFC4251"/>
            </reference>


            <reference anchor="RFC3986" target="https://tools.ietf.org/html/rfc3986#section-3.3">
                <front>
                    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
                    <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee">
                        <organization/>
                    </author>
                    <author initials="R." surname="Fielding" fullname="R. Fielding">
                        <organization/>
                    </author>
                    <author initials="L." surname="Masinter" fullname="L. Masinter">
                        <organization/>
                    </author>
                    <date year="2005" month="January"/>
                </front>
            </reference>
        </references>

        <references title="Informative References">
            <!-- Here we use entities that we defined at the beginning. -->
            <!--
            &RFC2629;
            &RFC3552;
            -->

            <reference anchor="RFC3987" target="https://tools.ietf.org/html/rfc3986#section-3.3">
                <front>
                    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
                    <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee">
                        <organization/>
                    </author>
                    <author initials="R." surname="Fielding" fullname="R. Fielding">
                        <organization/>
                    </author>
                    <author initials="L." surname="Masinter" fullname="L. Masinter">
                        <organization/>
                    </author>
                    <date year="2005" month="January"/>
                </front>
            </reference>
        </references>
    </back>
</rfc>
