<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" docName="draft-ietf-opsawg-tacacs-tls13-24" number="9887" category="std" ipr="trust200902" submissionType="IETF" consensus="true" updates="8907" obsoletes="" sortRefs="true" symRefs="true" tocInclude="true" tocDepth="3" xml:lang="en" prepTime="2025-12-09T16:14:30" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-opsawg-tacacs-tls13-24" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9887" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="TACACS+ over TLS 1.3">Terminal Access Controller Access-Control System Plus (TACACS+) over TLS 1.3</title>
    <seriesInfo name="RFC" value="9887" stream="IETF"/>
    <author fullname="Thorsten Dahm" initials="T." surname="Dahm">
      <address>
        <email>thorsten.dahm@gmail.com</email>
      </address>
    </author>
    <author fullname="John Heasley" initials="J." surname="Heasley">
      <organization abbrev="NTT" showOnFrontPage="true">NTT</organization>
      <address>
        <email>heas@shrubbery.net</email>
      </address>
    </author>
    <author initials="D.C." surname="Medway Gash" fullname="Douglas C. Medway Gash">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>170 West Tasman Dr.</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>United States of America</country>
        </postal>
        <email>dcmgash@cisco.com</email>
      </address>
    </author>
    <author initials="A." surname="Ota" fullname="Andrej Ota">
      <organization showOnFrontPage="true">Google Inc.</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>andrej@ota.si</email>
      </address>
    </author>
    <date month="12" year="2025"/>
    <area>OPS</area>
    <workgroup>opsawg</workgroup>
    <keyword>TACACS+</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1"> This document specifies the use of Transport Layer Security (TLS)
        version 1.3 to secure the communication channel between a Terminal
        Access Controller Access-Control System Plus (TACACS+) client and
        server. TACACS+ is a protocol used for Authentication, Authorization,
        and Accounting (AAA) in networked environments. The original TACACS+
        protocol does not mandate the use of encryption or secure
        transport. This specification defines a profile for using TLS 1.3 with
        TACACS+, including guidance on authentication, connection
        establishment, and operational considerations. The goal is to enhance
        the confidentiality, integrity, and authenticity of TACACS+ traffic,
        aligning the protocol with modern security best practices.</t>
      <t indent="0" pn="section-abstract-2">This document updates RFC 8907.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9887" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2025 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-technical-definitions">Technical Definitions</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tacacs-over-tls">TACACS+ over TLS</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-separating-tls-connections">Separating TLS Connections</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-connection">TLS Connection</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-authentication-options">TLS Authentication Options</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.4">
                <t indent="0" pn="section-toc.1-1.3.2.4.1"><xref derivedContent="3.4" format="counter" sectionFormat="of" target="section-3.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-certificate-based-authe">TLS Certificate-Based Authentication</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.4.2">
                  <li pn="section-toc.1-1.3.2.4.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.4.2.1.1"><xref derivedContent="3.4.1" format="counter" sectionFormat="of" target="section-3.4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-certificate-path-verifi">TLS Certificate Path Verification</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.4.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.4.2.2.1"><xref derivedContent="3.4.2" format="counter" sectionFormat="of" target="section-3.4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-certificate-identificat">TLS Certificate Identification</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.4.2.3">
                    <t indent="0" pn="section-toc.1-1.3.2.4.2.3.1"><xref derivedContent="3.4.3" format="counter" sectionFormat="of" target="section-3.4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cipher-suites-requirements">Cipher Suites Requirements</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.3.2.5">
                <t indent="0" pn="section-toc.1-1.3.2.5.1"><xref derivedContent="3.5" format="counter" sectionFormat="of" target="section-3.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-psk-authentication">TLS PSK Authentication</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.6">
                <t indent="0" pn="section-toc.1-1.3.2.6.1"><xref derivedContent="3.6" format="counter" sectionFormat="of" target="section-3.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-resumption">TLS Resumption</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-obsolescence-of-tacacs-obfu">Obsolescence of TACACS+ Obfuscation</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls">TLS</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.1.2">
                  <li pn="section-toc.1-1.5.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.1.1"><xref derivedContent="5.1.1" format="counter" sectionFormat="of" target="section-5.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-use">TLS Use</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.2.1"><xref derivedContent="5.1.2" format="counter" sectionFormat="of" target="section-5.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-0-rtt">TLS 0-RTT</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.1.2.3">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.3.1"><xref derivedContent="5.1.3" format="counter" sectionFormat="of" target="section-5.1.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-options">TLS Options</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.1.2.4">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.4.1"><xref derivedContent="5.1.4" format="counter" sectionFormat="of" target="section-5.1.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-unreachable-certificate-aut">Unreachable Certificate Authority (CA)</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.1.2.5">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.5.1"><xref derivedContent="5.1.5" format="counter" sectionFormat="of" target="section-5.1.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tls-server-name-indicator-s">TLS Server Name Indicator (SNI)</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.1.2.6">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.6.1"><xref derivedContent="5.1.6" format="counter" sectionFormat="of" target="section-5.1.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-server-identity-wildcards">Server Identity Wildcards</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tacacs-configuration">TACACS+ Configuration</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-well-known-tcp-ip-port-numb">Well-Known TCP/IP Port Number</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-considerations">Operational Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-migration">Migration</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-maintaining-non-tls-tacacs-">Maintaining Non-TLS TACACS+ Clients</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-yang-model-for-tacacs-clien">YANG Model for TACACS+ Clients</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
                "The Terminal Access Controller Access-Control System Plus (TACACS+) Protocol" 
            <xref target="RFC8907" format="default" sectionFormat="of" derivedContent="RFC8907"/> provides device administration for routers, network access servers, and other networked computing
                devices via one or more centralized TACACS+ servers.
                The protocol provides authentication, authorization, and accounting services (AAA) for TACACS+ clients
                within the device administration use case.
      </t>
      <t indent="0" pn="section-1-2">
   The content of the protocol is highly sensitive and requires 
   secure transport to safeguard a deployment.  However, TACACS+ lacks
   effective confidentiality, integrity, and authentication of the
   connection and network traffic between the TACACS+ server and client. 
   The security mechanisms as described in <xref target="RFC8907" section="4.5" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8907#section-4.5" derivedContent="RFC8907"/> are 
   extremely weak.
</t>
      <t indent="0" pn="section-1-3">
                To address these deficiencies, this document updates the TACACS+ protocol to use
                TLS 1.3
            authentication and encryption <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/>, and obsoletes the use of TACACS+ obfuscation mechanisms. The maturity of TLS in version 1.3 and above makes it a suitable choice for the TACACS+ protocol.
      </t>
    </section>
    <section anchor="TLSTacacsServerDefinition" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-technical-definitions">Technical Definitions</name>
      <t indent="0" pn="section-2-1">
                The terms defined in 
                <xref target="RFC8907" section="3" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8907#section-3" derivedContent="RFC8907"/>
                are fully applicable here and will not be repeated.
                The following terms are also used in this document.
      </t>
      <dl indent="3" newline="false" spacing="normal" pn="section-2-2">
        <dt pn="section-2-2.1">Obfuscation:</dt>
        <dd pn="section-2-2.2">TACACS+ was originally intended to incorporate a mechanism for securing the body of its packets.
                    The algorithm is categorized as obfuscation in <xref target="RFC8907" section="10.5.2" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8907#section-10.5.2" derivedContent="RFC8907"/>. The term
                    is used to ensure that the algorithm is not mistaken for encryption. It should not be considered secure.</dd>
        <dt pn="section-2-2.3">Non-TLS connection:</dt>
        <dd pn="section-2-2.4">This term refers to the connection defined in <xref target="RFC8907" format="default" sectionFormat="of" derivedContent="RFC8907"/>.
                    It is a connection without TLS, using the unsecure TACACS+
                    authentication and obfuscation (or the unobfuscated option for testing).
                    The use of well-known TCP/IP host port number 49 is specified as the default for non-TLS
                    connections.</dd>
        <dt pn="section-2-2.5">
                    TLS connection:</dt>
        <dd pn="section-2-2.6">A TLS connection is a TCP/IP connection with TLS authentication and encryption used by TACACS+ for
                    transport. A TLS connection for TACACS+ is always between one TACACS+ client and one TACACS+ server.
                </dd>
        <dt pn="section-2-2.7">
                    TLS TACACS+ server:</dt>
        <dd pn="section-2-2.8">This document describes a variant of the TACACS+ server, introduced in <xref section="3.2" target="RFC8907" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8907#section-3.2" derivedContent="RFC8907"/>,  which
                    utilizes TLS for transport, and makes some associated protocol optimizations. Both server variants respond to
                    TACACS+ traffic, but this document specifically defines a TACACS+ server (whether TLS or non-TLS) as being bound to a specific port number
                    on a particular IP address or hostname. This definition is important in the context of the configuration
                    of TACACS+ clients to ensure they direct their traffic to the correct TACACS+ servers.
                </dd>
        <dt pn="section-2-2.9">
                    Peer:</dt>
        <dd pn="section-2-2.10">The peer of a TACACS+ client (or server) in the context of a TACACS+ connection, is a TACACS+ server (or
                    client). Together, the ends of a TACACS+ connection are referred to as peers.
                </dd>
      </dl>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-2.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-2.1-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>
      </section>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-tacacs-over-tls">TACACS+ over TLS</name>
      <t indent="0" pn="section-3-1">
                TACACS+ over TLS takes the protocol defined in <xref target="RFC8907" format="default" sectionFormat="of" derivedContent="RFC8907"/>, removes the option for                 obfuscation, and specifies that TLS 1.3 be used for transport (<xref target="TLSPort" format="default" sectionFormat="of" derivedContent="Section 3.1"/> elaborates on TLS version support). A new well-known default host port number is used.
                The next sections provide further details and guidance.
      </t>
      <t indent="0" pn="section-3-2">TLS is introduced into TACACS+ to fulfill the following requirements:
      </t>
      <ol indent="adaptive" spacing="normal" start="1" type="1" pn="section-3-3">
                <li pn="section-3-3.1" derivedCounter="1.">Confidentiality and Integrity: The MD5 algorithm underlying the obfuscation mechanism specified in <xref target="RFC8907" format="default" sectionFormat="of" derivedContent="RFC8907"/> has been shown
                    to be insecure <xref target="RFC6151" format="default" sectionFormat="of" derivedContent="RFC6151"/> when used for encryption. This prevents TACACS+ from being used in a deployment compliant with <xref target="FIPS-140-3" format="default" sectionFormat="of" derivedContent="FIPS-140-3"/>. Securing the TACACS+ protocol with TLS is intended to provide confidentiality and
                    integrity without requiring the provision of a secured network.
                </li>
        <li pn="section-3-3.2" derivedCounter="2.">Peer authentication: The authentication capabilities of TLS replace the shared secrets of obfuscation for mutual authentication.
                </li>
      </ol>
      <t indent="0" pn="section-3-4">This document adheres to the recommendations in <xref target="I-D.ietf-uta-require-tls13" format="default" sectionFormat="of" derivedContent="REQ-TLS13"/>.</t>
      <section anchor="TLSPort" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-separating-tls-connections">Separating TLS Connections</name>
        <t indent="0" pn="section-3.1-1">
                    Peers implementing the TACACS+ protocol variant defined in this document <bcp14>MUST</bcp14> apply mutual
                    authentication and encrypt all data exchanged between them. Therefore, when a TCP connection is
                    established for the service, a TLS handshake begins immediately. Options that upgrade an initial non-TLS connection <bcp14>MUST NOT</bcp14> be used; see <xref target="wellknown" format="default" sectionFormat="of" derivedContent="Section 5.3"/>.
        </t>
        <t indent="0" pn="section-3.1-2">
                    To ensure clear separation between TACACS+ traffic using TLS and that which does not (see <xref target="wellknown" format="default" sectionFormat="of" derivedContent="Section 5.3"/>), servers supporting
                    TACACS+ over TLS <bcp14>MUST</bcp14> listen on a TCP/IP port distinct from that used by non-TLS TACACS+ servers. It is further <bcp14>RECOMMENDED</bcp14>
                    to deploy the TLS and non-TLS services on separate hosts, as discussed in <xref target="TLSUSE" format="default" sectionFormat="of" derivedContent="Section 5.1.1"/>.
        </t>
        <t indent="0" pn="section-3.1-3">
   Given the prevalence of default port usage in existing TACACS+ client
   implementations, this specification assigns the well-known TCP port number
   300 for TACACS+ over TLS (see <xref target="ICTBD" format="default" sectionFormat="of" derivedContent="Section 7"/>).
        </t>
        <t indent="0" pn="section-3.1-4">
                    While the use of the designated port number is strongly encouraged, deployments with specific requirements <bcp14>MAY</bcp14> use alternative TCP port numbers.
                    In such cases, operators must carefully consider the operational implications described in <xref target="wellknown" format="default" sectionFormat="of" derivedContent="Section 5.3"/>.
        </t>
      </section>
      <section anchor="TLSConn" numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-tls-connection">TLS Connection</name>
        <t indent="0" pn="section-3.2-1">
                    A TACACS+ client initiates a TLS connection by making a TCP connection to a configured TLS TACACS+ server on the
                    TACACS+ TLS port number.
                    Once the TCP connection is established, the client <bcp14>MUST</bcp14> immediately begin the TLS negotiation before
                    sending any TACACS+ protocol data.
        </t>
        <t indent="0" pn="section-3.2-2">
                    A minimum of TLS 1.3 <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/>
          <bcp14>MUST</bcp14> be used for transport.  It is expected that TACACS+, as described in this document, will
                    work
                    with future versions of TLS. Earlier versions of TLS <bcp14>MUST NOT</bcp14> be used.
        </t>
        <t indent="0" pn="section-3.2-3">
                    Once the TLS connection has been successfully established, the exchange of TACACS+ data <bcp14>MUST</bcp14> proceed in
                    accordance with the procedures defined in <xref target="RFC8907" format="default" sectionFormat="of" derivedContent="RFC8907"/>. However, all TACACS+ messages <bcp14>SHALL</bcp14> be transmitted
                    as TLS application data. The TACACS+ obfuscation mechanism defined in <xref target="RFC8907" format="default" sectionFormat="of" derivedContent="RFC8907"/> <bcp14>MUST NOT</bcp14> be applied
                    when operating over TLS (<xref target="ObsolescenceOfTACACSObfuscation" format="default" sectionFormat="of" derivedContent="Section 4"/>).</t>
        <t indent="0" pn="section-3.2-4">  TLS TACACS+ connections are generally not long-lived.  The connection
  will be closed by either a peer if it encounters an error
  or an inactivity timeout.</t>
        <t indent="0" pn="section-3.2-5">For connections not operating in Single Connection Mode (as defined in
<xref target="RFC8907" section="4.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8907#section-4.3" derivedContent="RFC8907"/>), the TCP session <bcp14>SHALL</bcp14> be closed upon
completion of the associated TACACS+ session.  Connections operating in Single
Connection Mode <bcp14>MAY</bcp14> persist for a longer duration but are typically
subject to timeout and closure after a brief period of inactivity.
Consequently, support for transport-layer keepalive mechanisms is not
required.</t>
        <t indent="0" pn="section-3.2-6">Why a connection is closed has no bearing on TLS resumption, unless
closed by a TLS error, in which case it is possible that the ticket has been invalidated.</t>
        <t indent="0" pn="section-3.2-7">
                    TACACS+ clients and servers widely support IPv6 configuration in addition to IPv4. This document makes no changes to recommendations in this area.
        </t>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-3.3">
        <name slugifiedName="name-tls-authentication-options">TLS Authentication Options</name>
        <t indent="0" pn="section-3.3-1">
                    Implementations <bcp14>MUST</bcp14> support certificate-based mutual authentication, to provide a core option for interoperability between deployments.
                    This authentication option is specified in <xref target="CertAuth" format="default" sectionFormat="of" derivedContent="Section 3.4"/>.
        </t>
        <t indent="0" pn="section-3.3-2">
                    In addition to certificate-based TLS authentication, implementations <bcp14>MAY</bcp14> support the following alternative authentication mechanisms:
        </t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-3.3-3">
          <li pn="section-3.3-3.1">Pre-Shared Keys (PSKs) (<xref target="PSKAuth" format="default" sectionFormat="of" derivedContent="Section 3.5"/>), also known as external PSKs in TLS 1.3.
                    </li>
          <li pn="section-3.3-3.2">Raw Public Keys (RPKs). The details
                        of RPKs are considered out of scope for this document. Refer to <xref target="RFC7250" format="default" sectionFormat="of" derivedContent="RFC7250"/> and <xref target="RFC8446" section="4.4.2" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8446#section-4.4.2" derivedContent="RFC8446"/> for
                        implementation, deployment, and security considerations.
                    </li>
        </ul>
      </section>
      <section anchor="CertAuth" numbered="true" removeInRFC="false" toc="include" pn="section-3.4">
        <name slugifiedName="name-tls-certificate-based-authe">TLS Certificate-Based Authentication</name>
        <t indent="0" pn="section-3.4-1">
                    TLS certificate authentication is the primary authentication option for TACACS+ over TLS.
                    This section covers certificate-based authentication only.</t>
        <t indent="0" pn="section-3.4-2">Deploying TLS certificate-based authentication correctly will considerably improve the security of TACACS+
                    deployments. It is essential for implementers and operators to understand the implications of a TLS
                    certificate-based authentication solution, including the correct handling of certificates, Certificate Authorities (CAs), and all
                    elements of TLS configuration. For guidance, start with <xref target="BCP195" format="default" sectionFormat="of" derivedContent="BCP195"/>.</t>
        <t indent="0" pn="section-3.4-3">Each peer <bcp14>MUST</bcp14> validate the certificate path of its remote peer, including revocation checking,
                    as
                    described in <xref target="CertPV" format="default" sectionFormat="of" derivedContent="Section 3.4.1"/>.
        </t>
        <t indent="0" pn="section-3.4-4">
                    If the verification succeeds, the authentication is successful and the connection is permitted.
                    Policy may impose further constraints upon the peer, allowing or denying the connection based on
                    certificate fields or any other parameters exposed by the implementation.
        </t>
        <t indent="0" pn="section-3.4-5">
                    Unless disabled by configuration, a peer <bcp14>MUST NOT</bcp14> permit connection of any peer that presents an
                    invalid TLS certificate.
        </t>
        <section anchor="CertPV" numbered="true" removeInRFC="false" toc="include" pn="section-3.4.1">
          <name slugifiedName="name-tls-certificate-path-verifi">TLS Certificate Path Verification</name>
          <t indent="0" pn="section-3.4.1-1">
                        The implementation of certificate-based mutual authentication <bcp14>MUST</bcp14> support certificate path
                        validation as described in <xref target="RFC5280" section="6" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc5280#section-6" derivedContent="RFC5280"/>.
          </t>
          <t indent="0" pn="section-3.4.1-2">
                        In some deployments, a peer may be isolated from a remote peer's CA.
                        Implementations for these deployments <bcp14>MUST</bcp14> support certificate chains
                        (aka bundles or chains of trust), where the entire chain of the remote peer's certificate is
                        stored
                        on the local peer.
          </t>
          <t indent="0" pn="section-3.4.1-3">
                        TLS Cached Information Extension
                        <xref target="RFC7924" format="default" sectionFormat="of" derivedContent="RFC7924"/>
            <bcp14>SHOULD</bcp14> be implemented. This <bcp14>MAY</bcp14> be augmented with RPKs <xref target="RFC7250" format="default" sectionFormat="of" derivedContent="RFC7250"/>,
                        though
                        revocation must be handled as it is not part of that specification.
          </t>
          <t indent="0" pn="section-3.4.1-4">
                        Other approaches may be used for loading the intermediate certificates onto the client, but
                        they <bcp14>MUST</bcp14>
                        include support for revocation checking. For example,
                        <xref target="RFC5280" format="default" sectionFormat="of" derivedContent="RFC5280"/>
                        details the Authority Information Access (AIA) extension to provide information about the
                        issuer
                        of the certificate in which the extension appears. It can be used to provide the address of
                        the
                        Online Certificate Status Protocol (OCSP) responder from where the revocation status of the
                        certificate (which includes the extension) can be checked.
          </t>
        </section>
        <section numbered="true" removeInRFC="false" toc="include" pn="section-3.4.2">
          <name slugifiedName="name-tls-certificate-identificat">TLS Certificate Identification</name>
          <t indent="0" pn="section-3.4.2-1">For the client-side validation of presented TLS TACACS+ server identities, implementations <bcp14>MUST</bcp14> follow the validation techniques defined in 
                        <xref target="RFC9525" format="default" sectionFormat="of" derivedContent="RFC9525"/>. 
                        Identifier types DNS-ID, IP-ID, or SRV-ID
                        are applicable for use with the TLS TACACS+ protocol; they are selected by operators depending upon
                        the
                        deployment design. TLS TACACS+ does not use URI-IDs for TLS TACACS+ server identity verification.</t>
          <t indent="0" pn="section-3.4.2-2">Wildcards in TLS TACACS+ server identities simplify certificate management by allowing a single
                        certificate to secure multiple servers in a deployment. However, this introduces security risks,
                        as compromising the private key of a wildcard certificate impacts all servers using it.
                        To address these risks, the guidelines in <xref target="RFC9525" section="6.3" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9525#section-6.3" derivedContent="RFC9525"/> <bcp14>MUST</bcp14> be followed,
                        and the wildcard <bcp14>SHOULD</bcp14> be confined to a subdomain dedicated solely to TACACS+ servers.</t>
          <t indent="0" pn="section-3.4.2-3">
                        For the TLS TACACS+ server-side validation of client identities, implementations <bcp14>MUST</bcp14> support the
                        ability to
                        configure which fields of a certificate are used for client identification to verify that
                        the
                        client
                        is a valid
                        source for the received certificate and that it is permitted access
                        to TACACS+. Implementations <bcp14>MUST</bcp14> support either:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.4.2-4">
            <li pn="section-3.4.2-4.1">Network-address-based validation methods as described in <xref target="RFC5425" section="5.2" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc5425#section-5.2" derivedContent="RFC5425"/> or</li>
            <li pn="section-3.4.2-4.2">Client Identity validation of a shared identity in the certificate subjectAltName. This is
                        applicable
                        in deployments where the client securely supports an identity which is shared with the
                        TLS TACACS+ server. Matching of dNSName and iPAddress <bcp14>MUST</bcp14> be supported. Other options defined
                        in <xref target="RFC5280" section="4.2.1.6" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc5280#section-4.2.1.6" derivedContent="RFC5280"/> <bcp14>MAY</bcp14> be supported.
                        This approach allows a client's network location to be reconfigured without issuing a new
                        client
                        certificate.</li>
          </ul>
          <t indent="0" pn="section-3.4.2-5">
                        Implementations <bcp14>MUST</bcp14> support the TLS Server Name Indication (SNI) extension  (<xref target="RFC6066" section="3" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc6066#section-3" derivedContent="RFC6066"/>).
                        TLS TACACS+ clients <bcp14>MUST</bcp14> support the ability to configure the TLS TACACS+ server's domain name, so that it may be
                        included
                        in
                        the
                        SNI "server_name" extension of the client hello (This is distinct from the IP Address or hostname configuration used for the TCP connection). Refer to
                        <xref target="TLSSNISec" format="default" sectionFormat="of" derivedContent="Section 5.1.5"/>
                        for security related operator considerations.
          </t>
          <t indent="0" pn="section-3.4.2-6">Certificate provisioning is out of scope of this document.</t>
        </section>
        <section numbered="true" removeInRFC="false" toc="include" pn="section-3.4.3">
          <name slugifiedName="name-cipher-suites-requirements">Cipher Suites Requirements</name>
          <t indent="0" pn="section-3.4.3-1">
                        Implementations <bcp14>MUST</bcp14> support the TLS 1.3 mandatory cipher suites (<xref target="RFC8446" section="9.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8446#section-9.1" derivedContent="RFC8446"/>).
                        Readers should refer to <xref target="BCP195" format="default" sectionFormat="of" derivedContent="BCP195"/>. The cipher suites offered or accepted <bcp14>SHOULD</bcp14> be configurable so that operators can adapt.
          </t>
        </section>
      </section>
      <section anchor="PSKAuth" numbered="true" removeInRFC="false" toc="include" pn="section-3.5">
        <name slugifiedName="name-tls-psk-authentication">TLS PSK Authentication</name>
        <t indent="0" pn="section-3.5-1">
                    As an alternative to certificate-based authentication, implementations <bcp14>MAY</bcp14> support PSKs, also known as external PSKs in TLS 1.3 <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/>. These should not be confused with resumption PSKs.
        </t>
        <t indent="0" pn="section-3.5-2">
                    The use of external PSKs is less well established than certificate-based authentication. It is
                    <bcp14>RECOMMENDED</bcp14> that systems follow the directions of <xref target="RFC9257" format="default" sectionFormat="of" derivedContent="RFC9257"/> and <xref target="RFC8446" section="4" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8446#section-4" derivedContent="RFC8446"/>.
        </t>
        <t indent="0" pn="section-3.5-3">
                    Where PSK authentication is implemented, PSK lengths of at least 16 octets <bcp14>MUST</bcp14> be supported.
        </t>
        <t indent="0" pn="section-3.5-4">
                    PSK identity <bcp14>MUST</bcp14> follow recommendations of <xref target="RFC9257" section="6.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9257#section-6.1" derivedContent="RFC9257"/>. Implementations <bcp14>MUST</bcp14> support PSK identities
                    of at least 16 octets.
        </t>
        <t indent="0" pn="section-3.5-5">
                    Although this document removes the option of obfuscation (<xref target="ObsolescenceOfTACACSObfuscation" format="default" sectionFormat="of" derivedContent="Section 4"/>), it is still possible that the TLS and non-TLS
                    versions of TACACS+ exist in an organization, for example, during migration (<xref target="MIGRATION" format="default" sectionFormat="of" derivedContent="Section 6.1"/>).
                    In such cases, the shared secrets configured for TACACS+ obfuscation clients <bcp14>MUST NOT</bcp14> be the same as the PSKs configured for TLS clients.
        </t>
        <t indent="0" pn="section-3.5-6">

        </t>
      </section>
      <section anchor="TLSResumption" numbered="true" removeInRFC="false" toc="include" pn="section-3.6">
        <name slugifiedName="name-tls-resumption">TLS Resumption</name>
        <t indent="0" pn="section-3.6-1">
                    TLS Resumption <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/> can minimize the number of round trips required during the handshake process.
                    If a TLS client holds a ticket previously extracted from a NewSessionTicket message from the TLS TACACS+ server, it can use the PSK identity tied to that ticket.
                    If the TLS TACACS+ server consents, the resumed session is acknowledged as authenticated and securely linked to
                    the initial session.
        </t>
        <t indent="0" pn="section-3.6-2">The client <bcp14>SHOULD</bcp14> use resumption when it holds a valid unused ticket from the TLS TACACS+ server,
                    as each ticket is intended for a single use only and will be refreshed during resumption. The TLS TACACS+ server can reject a resumption request,
                    but the TLS TACACS+ server <bcp14>SHOULD</bcp14> allow resumption if the ticket in question has not expired and has not been used before.
        </t>
        <t indent="0" pn="section-3.6-3">
                    When a TLS TACACS+ server is presented with a resumption request from the TLS client, it <bcp14>MAY</bcp14> still choose to require a full handshake.
                    In this case, the negotiation proceeds as if the session was a new authentication,
                    and the resumption attempt is ignored.  As described in <xref target="RFC8446" section="C.4" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8446#appendix-C.4" derivedContent="RFC8446"/>, reuse of a ticket allows passive observers to correlate
                    different connections. TLS TACACS+ clients and servers <bcp14>SHOULD</bcp14> follow the client tracking preventions in <xref target="RFC8446" section="C.4" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8446#appendix-C.4" derivedContent="RFC8446"/>.
        </t>
        <t indent="0" pn="section-3.6-4">
                    When processing TLS resumption, certificates must be verified to check for revocation  during the period since the last NewSessionTicket Message.
        </t>
        <t indent="0" pn="section-3.6-5">The resumption ticket_lifetime <bcp14>SHOULD</bcp14> be configurable, including a zero
                    seconds lifetime. Refer to <xref target="RFC8446" section="4.6.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8446#section-4.6.1" derivedContent="RFC8446"/> for guidance on ticket lifetime.
        </t>
      </section>
    </section>
    <section anchor="ObsolescenceOfTACACSObfuscation" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-obsolescence-of-tacacs-obfu">Obsolescence of TACACS+ Obfuscation</name>
      <t indent="0" pn="section-4-1">The obfuscation mechanism documented in <xref target="RFC8907" section="4.5" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8907#section-4.5" derivedContent="RFC8907"/> is weak. 
      </t>
      <t indent="0" pn="section-4-2">
                The introduction of TLS authentication and encryption to TACACS+ replaces
                this former mechanism, so obfuscation is hereby obsoleted.
                This section describes how the TACACS+ client and servers <bcp14>MUST</bcp14> operate regarding the obfuscation
                mechanism.
      </t>
      <t indent="0" pn="section-4-3">
                Peers <bcp14>MUST NOT</bcp14> use obfuscation with TLS.
      </t>
      <t indent="0" pn="section-4-4">
                A TACACS+ client initiating a TACACS+ TLS connection <bcp14>MUST</bcp14> set the TAC_PLUS_UNENCRYPTED_FLAG bit, thereby
                asserting that obfuscation is not used for the session.
                All subsequent packets <bcp14>MUST</bcp14> have the TAC_PLUS_UNENCRYPTED_FLAG bit set to 1.
      </t>
      <t indent="0" pn="section-4-5">
                A TLS TACACS+ server that receives a packet with the TAC_PLUS_UNENCRYPTED_FLAG bit not set to 1 over a TLS
                connection <bcp14>MUST</bcp14> return an error of TAC_PLUS_AUTHEN_STATUS_ERROR, TAC_PLUS_AUTHOR_STATUS_ERROR, or
                TAC_PLUS_ACCT_STATUS_ERROR as appropriate for the TACACS+ message type, with the
                TAC_PLUS_UNENCRYPTED_FLAG bit set to 1, and terminate the session.
                This behavior corresponds to that defined in 
                <xref target="RFC8907" section="4.5" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8907#section-4.5" derivedContent="RFC8907"/> regarding data obfuscation for TAC_PLUS_UNENCRYPTED_FLAG or key mismatches.
      </t>
      <t indent="0" pn="section-4-6">
                A TACACS+ client that receives a packet with the TAC_PLUS_UNENCRYPTED_FLAG bit not set to 1 <bcp14>MUST</bcp14>
                terminate the session, and <bcp14>SHOULD</bcp14> log this error.
      </t>
    </section>
    <section anchor="Security" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-tls">TLS</name>
        <t indent="0" pn="section-5.1-1">
                    This document improves the confidentiality, integrity, and authentication of the connection and
                    network traffic between TACACS+ peers by adding TLS support.
        </t>
        <t indent="0" pn="section-5.1-2">
                    Simply adding TLS support to the protocol does not guarantee the protection
                    of the TLS TACACS+ server and clients. It is essential for the operators and equipment vendors
                    to adhere to the latest best practices for ensuring the integrity of network devices
                    and selecting secure TLS key and encryption algorithms.
        </t>
        <t indent="0" pn="section-5.1-3">
                    <xref target="BCP195" format="default" sectionFormat="of" derivedContent="BCP195"/>
                    offers substantial guidance for implementing and deploying protocols that use TLS. Those implementing and deploying Secure TACACS+
                    must adhere to the recommendations relevant to TLS 1.3 outlined in <xref target="BCP195" format="default" sectionFormat="of" derivedContent="BCP195"/>
                    or its subsequent versions.
        </t>
        <t indent="0" pn="section-5.1-4">
                    This document outlines additional restrictions permissible under <xref target="BCP195" format="default" sectionFormat="of" derivedContent="BCP195"/>.
                    For example, any recommendations referring to TLS 1.2, including the mandatory
                    support, are not relevant for Secure TACACS+, as TLS 1.3 or above is mandated.
        </t>
        <t indent="0" pn="section-5.1-5">
                    This document concerns the use of TLS as transport for TACACS+ and does not make any changes to the core TACACS+
                    protocol, other than the direct implications of deprecating obfuscation. Operators <bcp14>MUST</bcp14> be cognizant of the security
                    implications of the TACACS+ protocol itself. Further documents are planned, for example, to address the security implications of password-based authentication and enhance the protocol to accommodate alternative schemes.
        </t>
        <section anchor="TLSUSE" numbered="true" removeInRFC="false" toc="include" pn="section-5.1.1">
          <name slugifiedName="name-tls-use">TLS Use</name>
          <t indent="0" pn="section-5.1.1-1">
                        New TACACS+ production deployments <bcp14>SHOULD</bcp14> use TLS authentication and encryption. Also see <xref target="RFC3365" format="default" sectionFormat="of" derivedContent="RFC3365"/>.
          </t>
          <t indent="0" pn="section-5.1.1-2">
                        TLS TACACS+ servers (as defined in <xref target="TLSTacacsServerDefinition" format="default" sectionFormat="of" derivedContent="Section 2"/>) <bcp14>MUST NOT</bcp14> allow non-TLS connections, because of the threat
                        of downgrade attacks or misconfiguration described in <xref target="wellknown" format="default" sectionFormat="of" derivedContent="Section 5.3"/>. Instead, separate non-TLS TACACS+ servers
                        <bcp14>SHOULD</bcp14> be set up to cater for these clients.
          </t>
          <t indent="0" pn="section-5.1.1-3">
                        It is <bcp14>NOT RECOMMENDED</bcp14> that TLS TACACS+ servers and non-TLS TACACS+ servers be deployed
                        on the same host, for reasons discussed in <xref target="wellknown" format="default" sectionFormat="of" derivedContent="Section 5.3"/>. Non-TLS connections would be better served by deploying the
                        required non-TLS TACACS+ servers on separate hosts.
          </t>
          <t indent="0" pn="section-5.1.1-4">
                        TACACS+ clients <bcp14>MUST NOT</bcp14> fail back to a non-TLS connection if a TLS connection fails. This prohibition includes during the migration of a deployment (<xref target="MIGRATION" format="default" sectionFormat="of" derivedContent="Section 6.1"/>).
          </t>
        </section>
        <section numbered="true" removeInRFC="false" toc="include" pn="section-5.1.2">
          <name slugifiedName="name-tls-0-rtt">TLS 0-RTT</name>
          <t indent="0" pn="section-5.1.2-1">
                        TLS 1.3 resumption and PSK techniques make it possible to send early data, aka 0-RTT data, data
                        that is sent before the TLS handshake completes.
                        Replay of this data is a risk.
                        Given the sensitivity of TACACS+ data, clients <bcp14>MUST NOT</bcp14> send data until the full TLS handshake
                        completes; that is, clients <bcp14>MUST NOT</bcp14> send 0-RTT data and TLS TACACS+ servers <bcp14>MUST</bcp14> abruptly disconnect
                        clients that do.
          </t>
          <t indent="0" pn="section-5.1.2-2">TLS TACACS+ clients and servers <bcp14>MUST NOT</bcp14> include the "early_data" extension. See Sections <xref target="RFC8446" sectionFormat="bare" section="2.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8446#section-2.3" derivedContent="RFC8446"/> and <xref target="RFC8446" sectionFormat="bare" section="4.2.10" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8446#section-4.2.10" derivedContent="RFC8446"/> of <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/>
                        for security concerns.</t>
        </section>
        <section numbered="true" removeInRFC="false" toc="include" pn="section-5.1.3">
          <name slugifiedName="name-tls-options">TLS Options</name>
          <t indent="0" pn="section-5.1.3-1">Recommendations in
                        <xref target="BCP195" format="default" sectionFormat="of" derivedContent="BCP195"/>
            <bcp14>MUST</bcp14> be followed to determine which TLS versions and algorithms should be supported,
                        deprecated, obsoleted, or abandoned.
          </t>
          <t indent="0" pn="section-5.1.3-2">
                        Also,
                        <xref target="RFC8446" section="9" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8446#section-9" derivedContent="RFC8446"/>
                        prescribes mandatory supported options.
          </t>
        </section>
        <section anchor="CAcache" numbered="true" removeInRFC="false" toc="include" pn="section-5.1.4">
          <name slugifiedName="name-unreachable-certificate-aut">Unreachable Certificate Authority (CA)</name>
          <t indent="0" pn="section-5.1.4-1">
                        Operators should be cognizant of the potential of TLS TACACS+ server and/or client isolation from their
                        peer's CA by network failures.
                        Isolation from a public key certificate's CA will cause the verification of the certificate to
                        fail and thus TLS authentication of the peer to fail.
                        The approach mentioned in
                        <xref target="CertPV" format="default" sectionFormat="of" derivedContent="Section 3.4.1"/>
                        can help address this and should be considered.
          </t>
        </section>
        <section anchor="TLSSNISec" numbered="true" removeInRFC="false" toc="include" pn="section-5.1.5">
          <name slugifiedName="name-tls-server-name-indicator-s">TLS Server Name Indicator (SNI)</name>
          <t indent="0" pn="section-5.1.5-1">
                        Operators should be aware that the TLS SNI extension is part of the TLS client hello, which is sent in cleartext. It is,
                        therefore, subject to eavesdropping. Also see <xref target="RFC6066" section="11.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc6066#section-11.1" derivedContent="RFC6066"/>.
          </t>
        </section>
        <section anchor="SIWildcards" numbered="true" removeInRFC="false" toc="include" pn="section-5.1.6">
          <name slugifiedName="name-server-identity-wildcards">Server Identity Wildcards</name>
          <t indent="0" pn="section-5.1.6-1">
                        The use of wildcards in TLS server identities creates a single point of failure:
                        a compromised private key of a wildcard certificate impacts all servers using it.
                        Their use <bcp14>MUST</bcp14> follow the recommendations of <xref target="RFC9525" section="7.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9525#section-7.1" derivedContent="RFC9525"/>.
                        Operators <bcp14>MUST</bcp14> ensure that the wildcard is limited to a subdomain dedicated solely to TLS TACACS+ servers.
   Further, operators <bcp14>MUST</bcp14> ensure that the TLS TACACS+ servers covered
   by a wildcard certificate are impervious to redirection of
   traffic to a different server (for example, due to on-path attacks or
   DNS cache poisoning).                        
          </t>
        </section>
      </section>
      <section anchor="TACACSConfiguration" numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-tacacs-configuration">TACACS+ Configuration</name>
        <t indent="0" pn="section-5.2-1">
                    Implementors must ensure that the configuration scheme introduced
                    for enabling TLS is straightforward and leaves no room for ambiguity regarding whether
                    TLS or non-TLS will be used between the TACACS+ client and the TACACS+ server.
        </t>
        <t indent="0" pn="section-5.2-2">
                    This document recommends the use of a separate port number that TLS TACACS+ servers
                    will listen to. Where deployments have not overridden the defaults explicitly,
                    TACACS+ client implementations <bcp14>MUST</bcp14> use the correct port values:
        </t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-5.2-3">
          <li pn="section-5.2-3.1">49: for non-TLS connection TACACS+</li>
          <li pn="section-5.2-3.2">300: for TLS connection TACACS+</li>
        </ul>
        <t indent="0" pn="section-5.2-4">
                    Implementors may offer a single option for TACACS+ clients and servers to disable all
                    non-TLS TACACS+ operations. When enabled on a TACACS+ server, it will
                    not respond to any requests from non-TLS TACACS+ client connections. When enabled on
                    a TACACS+ client, it will not establish any non-TLS TACACS+ server connections.
        </t>
      </section>
      <section anchor="wellknown" numbered="true" removeInRFC="false" toc="include" pn="section-5.3">
        <name slugifiedName="name-well-known-tcp-ip-port-numb">Well-Known TCP/IP Port Number</name>
        <t indent="0" pn="section-5.3-1">
                    A new port number is considered appropriate (rather than a mechanism that negotiates an
                    upgrade from an initial non-TLS TACACS+ connection) because it allows:
        </t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-5.3-2">
          <li pn="section-5.3-2.1">ease of blocking the unobfuscated or obfuscated connections by the TCP/IP port number,</li>
          <li pn="section-5.3-2.2">passive Intrusion Detection Systems (IDSs) monitoring the unobfuscated to be unaffected by the
                        introduction of TLS,
                    </li>
          <li pn="section-5.3-2.3">avoidance of on-path attacks that can interfere with upgrade, and</li>
          <li pn="section-5.3-2.4">prevention of the accidental exposure of sensitive information due to misconfiguration.</li>
        </ul>
        <t indent="0" pn="section-5.3-3">
                    However, the coexistence of inferior authentication and obfuscation, whether a non-TLS connection or
                    deprecated parts that compose TLS, also presents an opportunity for downgrade attacks.
                    Causing failure of connections to the TLS-enabled service or the negotiation of shared algorithm
                    support are two such downgrade attacks.
        </t>
        <t indent="0" pn="section-5.3-4">
                    The simplest mitigation exposure from non-TLS connection methods is to refuse non-TLS
                    connections at the host entirely, perhaps using separate hosts for non-TLS connections and TLS.
        </t>
        <t indent="0" pn="section-5.3-5">
                    Another approach is mutual configuration that requires TLS.
                    TACACS+ clients and servers <bcp14>SHOULD</bcp14> support configuration that requires peers, globally and individually, to use
                    TLS.
                    Furthermore, peers <bcp14>SHOULD</bcp14> be configurable to limit offered or recognized TLS versions and algorithms
                    to those recommended by standards bodies and implementers.
        </t>
      </section>
    </section>
    <section anchor="OPSCONS" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-operational-considerations">Operational Considerations</name>
      <t indent="0" pn="section-6-1">
                Operational and deployment considerations are spread throughout the
                document. While avoiding repetition, it is useful for the impatient
                to direct particular attention to Sections <xref target="TACACSConfiguration" format="counter" sectionFormat="of" derivedContent="5.2"/> and <xref target="TLSSNISec" format="counter" sectionFormat="of" derivedContent="5.1.5"/>.
                However, it is important that the entire <xref target="Security" format="default" sectionFormat="of" derivedContent="Section 5"/> is observed.
      </t>
      <t indent="0" pn="section-6-2">It is essential for operators to understand the implications of a TLS
                    certificate-based authentication solution, including the correct handling of certificates, CAs, and all
                    elements of TLS configuration. Refer to <xref target="BCP195" format="default" sectionFormat="of" derivedContent="BCP195"/> for guidance. Attention is drawn to the provisioning
                of certificates to all peers, including TACACS+ TLS clients, to permit the mandatory mutual authentication.</t>
      <section anchor="MIGRATION" numbered="true" removeInRFC="false" toc="include" pn="section-6.1">
        <name slugifiedName="name-migration">Migration</name>
        <t indent="0" pn="section-6.1-1">
                    <xref target="TACACSConfiguration" format="default" sectionFormat="of" derivedContent="Section 5.2"/> mentions that for an optimal deployment of TLS TACACS+,
                    TLS should be universally applied throughout the deployment. However, during
                    the migration process from a non-TLS TACACS+ deployment, operators may need
                    to support both TLS and non-TLS TACACS+ servers. This migration phase allows
                    operators to gradually transition their deployments from an insecure state to
                    a more secure one, but it is important to note that it is vulnerable to
                    downgrade attacks. Therefore, the migration phase should be considered
                    insecure until it is fully completed. To mitigate this hazard:
        </t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-6.1-2">
          <li pn="section-6.1-2.1">The period where any client is configured with both TLS and non-TLS TACACS+ servers should be
                        minimized.
                    </li>
          <li pn="section-6.1-2.2">The operator must consider the security impact of supporting both TLS and non-TLS connections, as mentioned above.</li>
        </ul>
      </section>
      <section anchor="NONTLS" numbered="true" removeInRFC="false" toc="include" pn="section-6.2">
        <name slugifiedName="name-maintaining-non-tls-tacacs-">Maintaining Non-TLS TACACS+ Clients</name>
        <t indent="0" pn="section-6.2-1">
                    Some TACACS+ client devices in a deployment may not implement TLS.
                    These devices will require access to non-TLS TACACS+ servers.
                    Operators must follow the recommendation of
                    <xref target="TLSUSE" format="default" sectionFormat="of" derivedContent="Section 5.1.1"/>
                    and deploy
                    separate non-TLS TACACS+ servers for these non-TLS clients from those used
                    for the TLS clients.
        </t>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-6.3">
        <name slugifiedName="name-yang-model-for-tacacs-clien">YANG Model for TACACS+ Clients</name>
        <t indent="0" pn="section-6.3-1">
                    <xref target="I-D.ietf-opsawg-secure-tacacs-yang" format="default" sectionFormat="of" derivedContent="TACACS-YANG"/> specifies a YANG model for managing TACACS+ clients, including TLS support.
        </t>
      </section>
    </section>
    <section anchor="ICTBD" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-7-1">
   IANA has allocated the following new well-known system in the
   "Service Name and Transport Protocol Port Number Registry" (see
   <eref brackets="angle" target="https://www.iana.org/assignments/service-names-port-numbers"/>).  The
   service name "tacacss" follows the common practice of appending an
   "s" to the name given to the non-TLS well-known port name.  See the
   justification for the allocation in Section 5.3.</t>
      <dl spacing="compact" newline="false" indent="3" pn="section-7-2">
        <dt pn="section-7-2.1">Service Name:</dt>
        <dd pn="section-7-2.2">tacacss</dd>
        <dt pn="section-7-2.3">Port Number:</dt>
        <dd pn="section-7-2.4">300</dd>
        <dt pn="section-7-2.5">Transport Protocol:</dt>
        <dd pn="section-7-2.6">TCP</dd>
        <dt pn="section-7-2.7">Description:</dt>
        <dd pn="section-7-2.8">TLS Secure Login Host Protocol (TACACSS)</dd>
        <dt pn="section-7-2.9">Assignee:</dt>
        <dd pn="section-7-2.10">IESG</dd>
        <dt pn="section-7-2.11">Contact:</dt>
        <dd pn="section-7-2.12">IETF Chair</dd>
        <dt pn="section-7-2.13">Reference:</dt>
        <dd pn="section-7-2.14">RFC 9887</dd>
      </dl>
      <t indent="0" pn="section-7-3">Considerations about service discovery are out of scope of
            this document.</t>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-8-1">
                The author(s) would like to thank <contact fullname="Russ                 Housley"/>, <contact fullname="Steven M. Bellovin"/>, <contact fullname="Stephen Farrell"/>, <contact fullname="Alan                 DeKok"/>, <contact fullname="Warren Kumari"/>, <contact fullname="Tom Petch"/>, <contact fullname="Tirumal Reddy"/>,
                <contact fullname="Valery Smyslov"/>, and <contact fullname="Mohamed Boucadair"/> for their support, insightful
                review, and/or comments.  <xref target="RFC5425" format="default" sectionFormat="of" derivedContent="RFC5425"/> was also
                used as a basis for the general approach to TLS.  <xref target="RFC9190" format="default" sectionFormat="of" derivedContent="RFC9190"/> was used as a basis for TLS resumption
                recommendations.  Although still in draft form at the time of
                writing, <xref target="RFC9813" format="default" sectionFormat="of" derivedContent="RFC9813"/> was used as
                a model for PSK recommendations.
      </t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-opsawg-secure-tacacs-yang" to="TACACS-YANG"/>
    <displayreference target="I-D.ietf-uta-require-tls13" to="REQ-TLS13"/>
    <references pn="section-9">
      <name slugifiedName="name-references">References</name>
      <references pn="section-9.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <referencegroup anchor="BCP195" target="https://www.rfc-editor.org/info/bcp195" derivedAnchor="BCP195">
          <reference anchor="RFC8996" target="https://www.rfc-editor.org/info/rfc8996" quoteTitle="true">
            <front>
              <title>Deprecating TLS 1.0 and TLS 1.1</title>
              <author fullname="K. Moriarty" initials="K." surname="Moriarty"/>
              <author fullname="S. Farrell" initials="S." surname="Farrell"/>
              <date month="March" year="2021"/>
              <abstract>
                <t indent="0">This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.</t>
                <t indent="0">This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
                <t indent="0">This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="8996"/>
            <seriesInfo name="DOI" value="10.17487/RFC8996"/>
          </reference>
          <reference anchor="RFC9325" target="https://www.rfc-editor.org/info/rfc9325" quoteTitle="true">
            <front>
              <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
              <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
              <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
              <author fullname="T. Fossati" initials="T." surname="Fossati"/>
              <date month="November" year="2022"/>
              <abstract>
                <t indent="0">Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
                <t indent="0">RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="9325"/>
            <seriesInfo name="DOI" value="10.17487/RFC9325"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">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. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" quoteTitle="true" derivedAnchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t indent="0">This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5425" target="https://www.rfc-editor.org/info/rfc5425" quoteTitle="true" derivedAnchor="RFC5425">
          <front>
            <title>Transport Layer Security (TLS) Transport Mapping for Syslog</title>
            <author fullname="F. Miao" initials="F." role="editor" surname="Miao"/>
            <author fullname="Y. Ma" initials="Y." role="editor" surname="Ma"/>
            <author fullname="J. Salowey" initials="J." role="editor" surname="Salowey"/>
            <date month="March" year="2009"/>
            <abstract>
              <t indent="0">This document describes the use of Transport Layer Security (TLS) to provide a secure connection for the transport of syslog messages. This document describes the security threats to syslog and how TLS can be used to counter such threats.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5425"/>
          <seriesInfo name="DOI" value="10.17487/RFC5425"/>
        </reference>
        <reference anchor="RFC6066" target="https://www.rfc-editor.org/info/rfc6066" quoteTitle="true" derivedAnchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t indent="0">This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC7250" target="https://www.rfc-editor.org/info/rfc7250" quoteTitle="true" derivedAnchor="RFC7250">
          <front>
            <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="J. Gilmore" initials="J." surname="Gilmore"/>
            <author fullname="S. Weiler" initials="S." surname="Weiler"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="June" year="2014"/>
            <abstract>
              <t indent="0">This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). The new certificate type allows raw public keys to be used for authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7250"/>
          <seriesInfo name="DOI" value="10.17487/RFC7250"/>
        </reference>
        <reference anchor="RFC7924" target="https://www.rfc-editor.org/info/rfc7924" quoteTitle="true" derivedAnchor="RFC7924">
          <front>
            <title>Transport Layer Security (TLS) Cached Information Extension</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="July" year="2016"/>
            <abstract>
              <t indent="0">Transport Layer Security (TLS) handshakes often include fairly static information, such as the server certificate and a list of trusted certification authorities (CAs). This information can be of considerable size, particularly if the server certificate is bundled with a complete certificate chain (i.e., the certificates of intermediate CAs up to the root CA).</t>
              <t indent="0">This document defines an extension that allows a TLS client to inform a server of cached information, thereby enabling the server to omit already available information.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7924"/>
          <seriesInfo name="DOI" value="10.17487/RFC7924"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8907" target="https://www.rfc-editor.org/info/rfc8907" quoteTitle="true" derivedAnchor="RFC8907">
          <front>
            <title>The Terminal Access Controller Access-Control System Plus (TACACS+) Protocol</title>
            <author fullname="T. Dahm" initials="T." surname="Dahm"/>
            <author fullname="A. Ota" initials="A." surname="Ota"/>
            <author fullname="D.C. Medway Gash" initials="D.C." surname="Medway Gash"/>
            <author fullname="D. Carrel" initials="D." surname="Carrel"/>
            <author fullname="L. Grant" initials="L." surname="Grant"/>
            <date month="September" year="2020"/>
            <abstract>
              <t indent="0">This document describes the Terminal Access Controller Access-Control System Plus (TACACS+) protocol, which is widely deployed today to provide Device Administration for routers, network access servers, and other networked computing devices via one or more centralized servers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8907"/>
          <seriesInfo name="DOI" value="10.17487/RFC8907"/>
        </reference>
        <reference anchor="RFC9525" target="https://www.rfc-editor.org/info/rfc9525" quoteTitle="true" derivedAnchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t indent="0">Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t indent="0">This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
      </references>
      <references pn="section-9.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="FIPS-140-3" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-3.pdf" quoteTitle="true" derivedAnchor="FIPS-140-3">
          <front>
            <title>Security Requirements for Cryptographic Modules</title>
            <author>
              <organization abbrev="NIST" showOnFrontPage="true">National Institute of Standards and Technology</organization>
            </author>
            <date month="March" year="2019"/>
          </front>
          <seriesInfo name="NIST FIPS" value="140-3"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.140-3"/>
        </reference>
        <reference anchor="I-D.ietf-uta-require-tls13" target="https://datatracker.ietf.org/doc/html/draft-ietf-uta-require-tls13-12" quoteTitle="true" derivedAnchor="REQ-TLS13">
          <front>
            <title>New Protocols Using TLS Must Require TLS 1.3</title>
            <author fullname="Rich Salz" initials="R." surname="Salz">
              <organization showOnFrontPage="true">Akamai Technologies</organization>
            </author>
            <author fullname="Nimrod Aviram" initials="N." surname="Aviram"/>
            <date day="14" month="April" year="2025"/>
            <abstract>
              <t indent="0">TLS 1.3 use is widespread, it has had comprehensive security proofs, and it improves both security and privacy over TLS 1.2. Therefore, new protocols that use TLS must require TLS 1.3. As DTLS 1.3 is not widely available or deployed, this prescription does not pertain to DTLS (in any DTLS version); it pertains to TLS only. This document updates RFC9325 and discusses post-quantum cryptography and the security and privacy improvements over TLS 1.2 as a rationale for that update.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-require-tls13-12"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC3365" target="https://www.rfc-editor.org/info/rfc3365" quoteTitle="true" derivedAnchor="RFC3365">
          <front>
            <title>Strong Security Requirements for Internet Engineering Task Force Standard Protocols</title>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <date month="August" year="2002"/>
          </front>
          <seriesInfo name="BCP" value="61"/>
          <seriesInfo name="RFC" value="3365"/>
          <seriesInfo name="DOI" value="10.17487/RFC3365"/>
        </reference>
        <reference anchor="RFC6151" target="https://www.rfc-editor.org/info/rfc6151" quoteTitle="true" derivedAnchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="L. Chen" initials="L." surname="Chen"/>
            <date month="March" year="2011"/>
            <abstract>
              <t indent="0">This document updates the security considerations for the MD5 message digest algorithm. It also updates the security considerations for HMAC-MD5. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC9190" target="https://www.rfc-editor.org/info/rfc9190" quoteTitle="true" derivedAnchor="RFC9190">
          <front>
            <title>EAP-TLS 1.3: Using the Extensible Authentication Protocol with TLS 1.3</title>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <date month="February" year="2022"/>
            <abstract>
              <t indent="0">The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides a standard mechanism for support of multiple authentication methods. This document specifies the use of EAP-TLS with TLS 1.3 while remaining backwards compatible with existing implementations of EAP-TLS. TLS 1.3 provides significantly improved security and privacy, and reduced latency when compared to earlier versions of TLS. EAP-TLS with TLS 1.3 (EAP-TLS 1.3) further improves security and privacy by always providing forward secrecy, never disclosing the peer identity, and by mandating use of revocation checking when compared to EAP-TLS with earlier versions of TLS. This document also provides guidance on authentication, authorization, and resumption for EAP-TLS in general (regardless of the underlying TLS version used). This document updates RFC 5216.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9190"/>
          <seriesInfo name="DOI" value="10.17487/RFC9190"/>
        </reference>
        <reference anchor="RFC9257" target="https://www.rfc-editor.org/info/rfc9257" quoteTitle="true" derivedAnchor="RFC9257">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t indent="0">This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
        <reference anchor="RFC9813" target="https://www.rfc-editor.org/info/rfc9813" quoteTitle="true" derivedAnchor="RFC9813">
          <front>
            <title>Operational Considerations for Using TLS Pre-Shared Keys (TLS-PSKs) with RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="July" year="2025"/>
            <abstract>
              <t indent="0">This document provides implementation and operational considerations for using TLS Pre-Shared Keys (TLS-PSKs) with RADIUS/TLS (RFC 6614) and RADIUS/DTLS (RFC 7360). The purpose of the document is to help smooth the operational transition from the use of RADIUS/UDP to RADIUS/TLS.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="243"/>
          <seriesInfo name="RFC" value="9813"/>
          <seriesInfo name="DOI" value="10.17487/RFC9813"/>
        </reference>
        <reference anchor="I-D.ietf-opsawg-secure-tacacs-yang" target="https://datatracker.ietf.org/doc/html/draft-ietf-opsawg-secure-tacacs-yang-13" quoteTitle="true" derivedAnchor="TACACS-YANG">
          <front>
            <title>A YANG Data Model for Terminal Access Controller Access-Control System Plus (TACACS+)</title>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization showOnFrontPage="true">Orange</organization>
            </author>
            <author fullname="Bo Wu" initials="B." surname="Wu">
              <organization showOnFrontPage="true">Huawei Technologies</organization>
            </author>
            <date day="7" month="July" year="2025"/>
            <abstract>
              <t indent="0">This document defines a Terminal Access Controller Access-Control System Plus (TACACS+) client YANG module that augments the System Management data model, defined in RFC 7317, to allow devices to make use of TACACS+ servers for centralized Authentication, Authorization, and Accounting (AAA). Specifically, this document defines a YANG module for TACACS+ over TLS 1.3. This document obsoletes RFC 9105.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-secure-tacacs-yang-13"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Thorsten Dahm" initials="T." surname="Dahm">
        <address>
          <email>thorsten.dahm@gmail.com</email>
        </address>
      </author>
      <author fullname="John Heasley" initials="J." surname="Heasley">
        <organization abbrev="NTT" showOnFrontPage="true">NTT</organization>
        <address>
          <email>heas@shrubbery.net</email>
        </address>
      </author>
      <author initials="D.C." surname="Medway Gash" fullname="Douglas C. Medway Gash">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street>170 West Tasman Dr.</street>
            <city>San Jose</city>
            <region>CA</region>
            <code>95134</code>
            <country>United States of America</country>
          </postal>
          <email>dcmgash@cisco.com</email>
        </address>
      </author>
      <author initials="A." surname="Ota" fullname="Andrej Ota">
        <organization showOnFrontPage="true">Google Inc.</organization>
        <address>
          <postal>
            <street>1600 Amphitheatre Parkway</street>
            <city>Mountain View</city>
            <region>CA</region>
            <code>94043</code>
            <country>United States of America</country>
          </postal>
          <email>andrej@ota.si</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
