RFC 9761
Manufacturer Usage Description (MUD) for TLS and DTLS Profiles for Internet of Things (IoT) Devices
RFC 9761: Manufacturer Usage Description (MUD) for TLS and DTLS Profiles for Internet of Things (IoT) Devices π
Okay bestie, this is RFC 9761 β¨ It comes from the Internet Engineering Task Force (IETF) and it's a Standards Track document, so it's official π The ISSN is 2070-1721 and it's dated April 2025. The authors are T. Reddy.K (Nokia), D. Wing (Citrix), and B. Anderson (Cisco) π«Ά The title block doesn't list any RFCs that it obsoletes or updates, so nothing gets replaced or patched here πΈ
Abstract β¨
Okay so this memo extends the Manufacturer Usage Description (MUD) spec so manufacturers can define TLS and DTLS profile parameters π₯ The point is that a network security service can spot (D)TLS usage that doesn't belong. That kind of weird traffic can mean there's unauthorized software, malware, or traffic that breaks security policy on an endpoint π
Status of This Memo
This is an Internet Standards Track document π¦
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG) π If you want more info on Internet Standards, check out Section 2 of RFC 7841 π§
For the current status, any errata, and how to send feedback, go to https://www.rfc-editor.org/info/rfc9761 π
Copyright Notice
Copyright (c) 2025 IETF Trust and the persons identified as the document authors. All rights reserved. π
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stand on the date this document was published. Please read these carefully, because they explain your rights and restrictions for this document π Code Components pulled out of this document must include Revised BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as described in the Revised BSD License π
Table of Contents
1. Introduction
2. Terminology
3. Overview of MUD (D)TLS Profiles for IoT devices
4. (D)TLS 1.3 Handshake
4.1. Full (D)TLS 1.3 Handshake Inspection
4.2. Encrypted DNS
5. (D)TLS Profile of an IoT device
5.1. Tree Structure of the (D)TLS Profile Extension to the ACL
YANG Module
5.2. The (D)TLS Profile Extension to the ACL YANG Module
5.3. IANA (D)TLS Profile YANG Module
5.4. MUD (D)TLS Profile Extension
6. Processing of the MUD (D)TLS Profile
7. MUD File Example
8. Software-Based ACLs and ACLs Within a (D)TLS 1.3 Proxy
9. Security Considerations
9.1. Challenges in Mimicking (D)TLS 1.2 Handshakes for IoT
Devices
9.2. Considerations for the "iana-tls-profile" Module
9.3. Considerations for the "ietf-acl-tls" Module
9.4. Considerations for the "ietf-mud-tls" Module
10. Privacy Considerations
11. IANA Considerations
11.1. (D)TLS Profile YANG Modules
11.2. Considerations for the iana-tls-profile Module
11.3. ACL TLS Version Registry
11.4. ACL DTLS Version Registry
11.5. ACL (D)TLS Parameters Registry
11.6. MUD Extensions Registry
12. References
12.1. Normative References
12.2. Informative References
Acknowledgments
Authors' Addresses
1. Introduction πΈ
Okay, encryption is a must for protecting end users' privacy on Internet of Things (IoT) devices π TLS [RFC8446] and DTLS [RFC9147] are the dominant protocols (counting every (D)TLS version) that encrypt IoT device traffic. The problem is that as IoT apps adopt more encryption, malware authors are using it too, and it gets past network-based analysis like deep packet inspection (DPI) π So we need other ways to help detect malware running on an IoT device.
Malware often reuses certain libraries, and it uses encryption differently from software that isn't malware π Here are some common patterns in how malware uses (D)TLS:
- Use of older and weaker cryptographic parameters.
- TLS server name indication (SNI) extension [RFC6066] and server certificates are made of subjects that look like a domain generation algorithm (DGA) (e.g.,
"www.33mhwt2j.net"). - More self-signed certificates than typical legitimate software, which uses certificates from a certificate authority (CA) the device trusts.
- Mismatches between the SNI TLS extension and the DNS names in the SubjectAltName (SAN) X.509 extension in the server Certificate message.
- Mismatches in the key exchange algorithm and the client public key length compared with legitimate flows. Quick reminder, the Client Key Exchange message has been removed from TLS 1.3 π
- Less diversity in the extensions TLS clients advertise compared to legitimate clients.
- Using privacy enhancing technologies like Tor, Psiphon, Ultrasurf (see [MALWARE-TLS]), and evasion techniques such as ClientHello randomization.
- Using an alternative DNS server (over encrypted transport) to dodge malware DNS filtering services [MALWARE-DOH]. Specifically, malware may not use the Do53 or encrypted DNS server provided by the local network (DHCP, Discovery of Network-designated Resolvers (DNR) [RFC9463], or Discovery of Designated Resolvers (DDR) [RFC9462]).
If (D)TLS profile parameters are defined, these functions that really help local network security become possible π
- Permit intended DTLS or TLS use, and block malicious DTLS or TLS use. This is superior to the Access Control Lists (ACLs) of Layers 3 and 4 in "Manufacturer Usage Description Specification" [RFC8520], which are not suitable for broad communication patterns. The goal of this document is to enhance and complement the existing MUD specifications rather than undermine them π«Ά
- Ensure TLS certificates are valid. Several TLS deployments have been vulnerable to active Man-In-The-Middle (MITM) attacks because of a lack of certificate validation, or a bug in the certificate validation function (see [CRYPTO-VULNERABILITY]). By observing (D)TLS profile parameters, a network element can detect when the TLS SNI doesn't match the SubjectAltName and when the server's certificate is invalid. In (D)TLS 1.2 [RFC5246] [RFC6347], the ClientHello, ServerHello, and Certificate messages are all sent in cleartext. This check isn't possible with (D)TLS 1.3, which encrypts the Certificate message and therefore hides the server identity from any intermediary π΅οΈ In (D)TLS 1.3, the server certificate validation functions should be executed within an on-path (D)TLS proxy if such a proxy exists.
- Support new communication patterns. An IoT device can learn a new capability, and that capability can change how the device talks to other devices on the local network and to the Internet β¨ If an IoT device rapidly changes the IP addresses and domain names it talks to while the MUD ACLs update more slowly, the policy becomes inaccurate (see [CLEAR-AS-MUD]). In that case, observable (D)TLS profile parameters can be used to permit intended use and block malicious behavior from the IoT device π¦
The YANG module specified in Section 5.2 of this document extends "YANG Data Model for Network Access Control Lists (ACLs)" [RFC8519] to enhance MUD [RFC8520] so it can model observable (D)TLS profile parameters π§ With these, an active MUD-enforcing network security service (e.g., a firewall) can spot MUD non-compliant (D)TLS behavior that points to outdated cryptography or malware. This detection can prevent malware downloads, block access to malicious domains, enforce strong ciphers, stop data exfiltration, and more π₯ Organizations may also have policies about acceptable ciphers and certificates for the websites IoT devices connect to. Examples include no use of old and less secure TLS versions, no use of self-signed certificates, deny-lists or accept-lists of Certificate Authorities, and valid certificate expiration times π These policies can be enforced by observing the (D)TLS profile parameters. Network security services can use an IoT device's (D)TLS profile parameters to identify legitimate flows by observing (D)TLS sessions, and then make inferences to permit legitimate flows and block malicious or insecure ones. It also supports network communications following security policy by making sure TLS certificates are valid and deprecated cipher suites are avoided π This technique is also suitable where decryption isn't ideal because of privacy concerns, non-cooperating endpoints, and expense π
2. Terminology π
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here π Lowercase versions don't count.
- (D)TLS: Used for statements that apply to both Transport Layer Security [RFC8446] and Datagram Transport Layer Security [RFC6347]. The specific terms "TLS" and "DTLS" are used for any statement that applies to only one of those protocols π
- DoH/DoT: Refers to DNS-over-HTTPS [RFC8484] and/or DNS-over-TLS [RFC7858] πΈ
- Middlebox: A middlebox that interacts with TLS traffic can either act as a TLS proxy, intercepting and decrypting the traffic for inspection, or inspect the traffic between TLS peers without terminating the TLS session π
- Endpoint Security Agent: An Endpoint Security Agent is software installed on endpoint devices that protects them from security threats. It provides features such as malware protection, firewall, and intrusion prevention to keep the device secure and intact π‘οΈ
- Network Security Service: A Network Security Service refers to a set of mechanisms designed to protect network communications and resources from attacks π₯
3. Overview of MUD (D)TLS Profiles for IoT devices β¨
Okay so, in Enterprise networks, protection and detection usually happen both on the end hosts and in the network πΈ Endpoint security agents see everything on the devices they're installed on, while the network has the bigger picture. Installing agents on IoT devices might not be an option π, so a network security service is a super efficient way to protect them π‘οΈ If the IoT device supports a MUD (D)TLS profile, a middlebox can use that profile's parameters to detect and block malware traffic, while still keeping the privacy of legit encryption π It also enforces organizational security policies so devices stay compliant π By watching (D)TLS parameters, admins can spot outdated TLS versions, weak cryptographic algorithms, and non-compliant certificates π The middlebox doesn't need to proxy (D)TLS at all. It can just passively observe the handshake parameters from IoT devices, getting visibility into TLS 1.2 and partial visibility into TLS 1.3 π¦
Malware devs would have a seriously hard time sneaking past this π₯Ή They'd need to build a malicious agent for each IoT device type, manufacturer, and model, infect the device with that tailored agent, and keep up with the device's (D)TLS profile parameters as they change over time. On top of that, the malware's command and control server certificates would need to be signed by the same certifying authorities trusted by the IoT devices. IoT devices usually have infrastructure for rapid update deployment, so malware agents would have a near-impossible task of deploying their own updates and continuing to mimic the TLS behavior of the device they've infected π
Now, if an IoT device has reached end-of-life (EOL) and the manufacturer won't issue a firmware or software update (or won't update the MUD file), the is-supported attribute defined in Section 3.6 of [RFC8520] can be used by the MUD manager to show that the manufacturer no longer supports the device πͺ¦ EOL doesn't automatically mean the device is defective! It just means it's no longer getting updates, support, or security patches, so it's time to replace it and upgrade to next-gen devices for continued functionality, security, and compatibility with modern networks π Until the device is replaced, the network security service will have to rely on other techniques discussed in Section 9 to identify malicious connections.
Compromised IoT devices are typically used for launching DDoS attacks (Section 3 of [RFC8576]) π€ For example, DDoS attacks like Slowloris [SLOWLORIS] and Transport Layer Security (TLS) re-negotiation can be blocked if the victim's server certificate is not signed by the same certifying authorities trusted by the IoT device π«
4. (D)TLS 1.3 Handshake π§
Here's the tea β In (D)TLS 1.3, full (D)TLS handshake inspection is not possible, because every handshake message except the ClientHello is encrypted. (D)TLS 1.3 introduced new extensions in the handshake record layers called Encrypted Extensions. When those are in use, the handshake messages are encrypted, and network security services (like a firewall) can't decipher the handshake, which means they can't view the server certificate π Still, the ClientHello and ServerHello keep some fields visible, like the list of supported versions, named groups, cipher suites, signature algorithms, extensions in the ClientHello, and the chosen cipher in the ServerHello π So say malware uses an evasion trick like ClientHello randomization. The observable list of cipher suites and extensions it offers won't match the list a legitimate client offers in its ClientHello, and the middlebox can block malicious flows without acting as a (D)TLS 1.3 proxy π
4.1. Full (D)TLS 1.3 Handshake Inspection
Want more visibility into the negotiated TLS 1.3 parameters? π Then a middlebox can act as a (D)TLS 1.3 proxy! It can do that for IoT devices owned and managed by the IT team in the Enterprise network, and the (D)TLS proxy has to meet the organization's security and privacy requirements π’ In other words, a middlebox acting as a (D)TLS proxy is restricted to the Enterprise network that owns and manages those IoT devices. To act as a compliant (D)TLS 1.3 proxy, the middlebox would have to follow the behavior detailed in Section 9.3 of [RFC8446] π
To up the privacy game even more π, the Encrypted Client Hello (ECH) extension [TLS-ESNI] keeps passive observers from seeing the TLS Server Name Indication extension and other potentially sensitive fields, like the Application-Layer Protocol Negotiation (ALPN) [RFC7301]. For that privacy protection to really work, ECH needs to be used alongside DNS encryption (e.g., DoH) π A middlebox (e.g., a firewall) passively inspecting the ECH extension can't observe the encrypted SNI, nor the encrypted DNS traffic. And if a middlebox acting as a (D)TLS 1.3 proxy doesn't support the ECH extension, it will act as if it's connecting to the public name and follow the behavior discussed in Section 6.1.6 of [TLS-ESNI] to securely signal the client to disable ECH π¦
4.2. Encrypted DNS
Certain IoT devices (e.g., a light bulb) have a very common pattern: they "call home" to a service on the public Internet, referenced by a domain name (an A or AAAA record) π As discussed in "Manufacturer Usage Description Specification" [RFC8520], these devices tend to need access to very few sites, so all other access should be considered suspect π΅οΈββοΈ This technique complements MUD policy enforcement at the TLS level by making sure DNS queries are monitored and filtered, which boosts overall security π
Here's the catch π¬ If an IoT device is pre-configured to use a DNS resolver the network hasn't signaled, the MUD policy enforcement point moves over to that resolver. That resolver can't enforce MUD policy based on domain names (Section 8 of [RFC8520]). And if DNS queries aren't accessible for inspection, it gets really hard for the infrastructure to detect issues. So a DNS resolver that isn't signaled by the network is generally incompatible with MUD π© Instead, a network-designated DoH/DoT server is necessary to allow MUD policy enforcement on the local network, for example using the techniques specified in DNR [RFC9463] and DDR [RFC9462] β¨
5. (D)TLS Profile of an IoT device π
This document specifies a YANG module that represents the (D)TLS profile π The YANG module gives us a way to characterize the (D)TLS traffic profile of a device. Network security services can use these profiles to permit conformant traffic, or to deny traffic from devices that deviate from it π¦ This module uses the cryptographic types defined in [RFC9640]. For (D)TLS 1.2 recommendations related to IoT devices, see [RFC7925]. For DTLS 1.3 recommendations related to IoT devices, see [IoT-PROFILE]. And for additional (D)TLS 1.2 recommendations, see [RFC9325] π
There's also a companion YANG module that includes a collection of (D)TLS parameters and (D)TLS versions maintained by IANA, called iana-tls-profile (Section 5.3) π§ββοΈ
The (D)TLS parameters in each (D)TLS profile include the following:
- Profile name
- (D)TLS versions supported by the IoT device.
- List of supported cipher suites (Section 11 of [RFC8446]). For (D)TLS 1.2, [RFC7925] recommends Authenticated Encryption with Associated Data (AEAD) ciphers for IoT devices.
- List of supported extension types.
- List of trust anchor certificates used by the IoT device. If the server certificate is signed by one of the trust anchors, the middlebox continues with the connection as normal. Otherwise, the middlebox reacts as if server certificate validation has failed and takes appropriate action (e.g., blocks the (D)TLS session). An IoT device can use a private trust anchor to validate a server's certificate. For example, the private trust anchor can be preloaded at manufacturing time on the IoT device, and the IoT device fetches the firmware image from the firmware server, whose certificate is signed by the private CA. This empowers the middlebox to reject TLS sessions to servers that the IoT device does not trust π‘οΈ
- List of pre-shared key exchange modes.
- List of named groups (DHE or ECDHE) supported by the client.
- List of signature algorithms the client can validate in X.509 server certificates.
- List of signature algorithms the client is willing to accept for the CertificateVerify message (Section 4.2.3 of [RFC8446]). For example, a TLS client implementation can support different sets of algorithms for certificates, and it can signal those capabilities in the
signature_algorithms_certandsignature_algorithmsextensions π - List of supported application protocols (e.g.,
h3,h2,http/1.1etc.). - List of certificate compression algorithms (defined in [RFC8879]).
- List of the distinguished names [X501] of acceptable certificate authorities, represented in DER-encoded format [X690] (defined in Section 4.2.4 of [RFC8446]).
GREASE [RFC8701] is a mechanism that lets TLS peers send random values on TLS parameters, so TLS extensions stay extensible in the future π Similar random values might be extended to other TLS parameters too. So the (D)TLS profile parameters defined in the YANG module by this document MUST NOT include the GREASE values for extension types, named groups, signature algorithms, (D)TLS versions, pre-shared key exchange modes, cipher suites, or any other TLS parameters defined in future RFCs π«
Last one! π The (D)TLS profile doesn't include parameters like compression methods for data compression. [RFC9325] recommends disabling TLS-level compression to prevent compression-related attacks π And in TLS 1.3, only the null compression method is allowed (Section 4.1.2 of [RFC8446]) π«Ά
5.1. Tree Structure of the (D)TLS Profile Extension to the ACL YANG Module π³β¨
okay so this doc augments the ietf-acl ACL YANG module from [RFC8519] so IoT devices can signal their (D)TLS profile π The new module is called ietf-acl-tls. The symbols in the YANG tree diagram are defined in [RFC8340], and the tree looks like this:
module: ietf-acl-tls
augment /acl:acls/acl:acl/acl:aces/acl:ace/acl:matches:
+--rw client-profiles {match-on-tls-dtls}?
+--rw tls-dtls-profile* [name]
+--rw name string
+--rw supported-tls-version* ianatp:tls-version
+--rw supported-dtls-version* ianatp:dtls-version
+--rw cipher-suite* ianatp:cipher-algorithm
+--rw extension-type*
| ianatp:extension-type
+--rw accept-list-ta-cert*
| ct:trust-anchor-cert-cms
+--rw psk-key-exchange-mode*
| ianatp:psk-key-exchange-mode
| {tls13 or dtls13}?
+--rw supported-groups*
| ianatp:supported-group
+--rw signature-algorithm-cert*
| ianatp:signature-algorithm
| {tls13 or dtls13}?
+--rw signature-algorithm*
| ianatp:signature-algorithm
+--rw application-protocol*
| ianatp:application-protocol
+--rw cert-compression-algorithm*
| ianatp:cert-compression-algorithm
| {tls13 or dtls13}?
+--rw certificate-authorities*
certificate-authority
{tls13 or dtls13}?
5.2. The (D)TLS Profile Extension to the ACL YANG Module π
here's the whole module, the (D)TLS Profile Extension to the ACL YANG Module, saved as ietf-acl-tls@2025-04-18.yang π§
<CODE BEGINS> file "ietf-acl-tls@2025-04-18.yang"
module ietf-acl-tls {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-acl-tls";
prefix acl-tls;
import iana-tls-profile {
prefix ianatp;
reference
"RFC 9761: Manufacturer Usage Description (MUD) for TLS and
DTLS Profiles for Internet of Things (IoT) Devices";
}
import ietf-crypto-types {
prefix ct;
reference
"RFC 9640: YANG Data Types and Groupings for Cryptography";
}
import ietf-access-control-list {
prefix acl;
reference
"RFC 8519: YANG Data Model for Network Access
Control Lists (ACLs)";
}
organization
"IETF OPSAWG (Operations and Management Area Working Group)";
contact
"WG Web: <https://datatracker.ietf.org/wg/opsawg/>
WG List: opsawg@ietf.org
Author: Tirumaleswar Reddy.K
kondtir@gmail.com
Author: Dan Wing
danwing@gmail.com
Author: Blake Anderson
blake.anderson@cisco.com
";
description
"This YANG module defines a component that augments the
IETF description of an access list to allow (D)TLS profiles
as matching criteria.
Copyright (c) 2025 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Revised BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 9761; see
the RFC itself for full legal notices.";
revision 2025-04-18 {
description
"Initial revision.";
reference
"RFC 9761: Manufacturer Usage Description (MUD) for TLS and
DTLS Profiles for Internet of Things (IoT) Devices";
}
feature tls12 {
description
"TLS Protocol Version 1.2 is supported.";
reference
"RFC 5246: The Transport Layer Security (TLS) Protocol
Version 1.2";
}
feature tls13 {
description
"TLS Protocol Version 1.3 is supported.";
reference
"RFC 8446: The Transport Layer Security (TLS) Protocol
Version 1.3";
}
feature dtls12 {
description
"DTLS Protocol Version 1.2 is supported.";
reference
"RFC 6347: Datagram Transport Layer Security
Version 1.2";
}
feature dtls13 {
description
"DTLS Protocol Version 1.3 is supported.";
reference
"RFC 9147: Datagram Transport Layer Security 1.3";
}
feature match-on-tls-dtls {
description
"The networking device can support matching on
(D)TLS parameters.";
}
typedef spki-pin-set {
type binary;
description
"Subject Public Key Info pin set as discussed in
Section 2.4 of RFC 7469.";
}
typedef certificate-authority {
type string;
description
"Distinguished Name of Certificate authority as discussed
in Section 4.2.4 of RFC 8446.";
}
augment "/acl:acls/acl:acl/acl:aces/acl:ace/acl:matches" {
if-feature "match-on-tls-dtls";
description
"(D)TLS specific matches.";
container client-profiles {
description
"A grouping for (D)TLS profiles.";
list tls-dtls-profile {
key "name";
description
"A list of (D)TLS version profiles supported by
the client.";
leaf name {
type string {
length "1..64";
}
description
"The name of (D)TLS profile; space and special
characters are not allowed.";
}
leaf-list supported-tls-version {
type ianatp:tls-version;
description
"TLS versions supported by the client.";
}
leaf-list supported-dtls-version {
type ianatp:dtls-version;
description
"DTLS versions supported by the client.";
}
leaf-list cipher-suite {
type ianatp:cipher-algorithm;
description
"A list of cipher suites supported by the client.";
}
leaf-list extension-type {
type ianatp:extension-type;
description
"A list of Extension Types supported by the client.";
}
leaf-list accept-list-ta-cert {
type ct:trust-anchor-cert-cms;
description
"A list of trust anchor certificates used by the
client.";
}
leaf-list psk-key-exchange-mode {
if-feature "tls13 or dtls13";
type ianatp:psk-key-exchange-mode;
description
"pre-shared key exchange modes.";
}
leaf-list supported-group {
type ianatp:supported-group;
description
"A list of named groups supported by the client.";
}
leaf-list signature-algorithm-cert {
if-feature "tls13 or dtls13";
type ianatp:signature-algorithm;
description
"A list signature algorithms the client can validate
in X.509 certificates.";
}
leaf-list signature-algorithm {
type ianatp:signature-algorithm;
description
"A list signature algorithms the client can validate
in the CertificateVerify message.";
}
leaf-list application-protocol {
type ianatp:application-protocol;
description
"A list application protocols supported by the client.";
}
leaf-list cert-compression-algorithm {
if-feature "tls13 or dtls13";
type ianatp:cert-compression-algorithm;
description
"A list certificate compression algorithms
supported by the client.";
}
leaf-list certificate-authorities {
if-feature "tls13 or dtls13";
type certificate-authority;
description
"A list of the distinguished names of certificate
authorities acceptable to the client.";
}
}
}
}
}
<CODE ENDS>
5.3. IANA (D)TLS Profile YANG Module π
okay so the TLS and DTLS IANA registries live at https://www.iana.org/assignments/tls-parameters and https://www.iana.org/assignments/tls-extensiontype-values πΈ and any changes to those registries get talked about in [RFC8447] π
the values for all the parameters in the "iana-tls-profile" YANG module come straight from the TLS and DTLS IANA registries, except for tls-version, dtls-version, spki-pin-set, and certificate-authority π§ those last two, spki-pin-set and certificate-authority, are specific to the IoT device, so they're not coming from the registries π₯
ngl the version stuff is kinda tricky, so stay with me π the TLS and DTLS IANA registries don't keep (D)TLS version numbers. in (D)TLS 1.2 and below, version negotiation uses the "legacy_version" field in the ClientHello message. but in (D)TLS 1.3, the client uses the "supported_versions" extension to say which (D)TLS versions it supports π¦ TLS 1.3 ClientHello messages are identified by a "legacy_version" of 0x0303 plus a "supported_versions" extension that has 0x0304 as the highest version. DTLS 1.3 ClientHello messages are identified by a "legacy_version" of 0xfefd plus a "supported_versions" extension that has 0x0304 as the highest version π
to make updating the "iana-tls-profile" YANG module with future (D)TLS versions easier, new (D)TLS version registries are defined in Section 11.3 and Section 11.4 β¨ whenever a brand new (D)TLS protocol version gets defined, the registry gets updated using expert review, and then IANA automatically updates the "iana-tls-profile" YANG module π
implementers or users of this specification must refer to the IANA-maintained "iana-tls-profile" YANG module, which is available at https://www.iana.org/assignments/yang-parameters π«Ά
here's the initial version of the "iana-tls-profile" YANG module, file iana-tls-profile@2025-04-18.yang π
module iana-tls-profile {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:iana-tls-profile";
prefix ianatp;
organization
"IANA";
contact
" Internet Assigned Numbers Authority
Postal: ICANN
12025 Waterfront Drive, Suite 300
Los Angeles, CA 90094-2536
United States
Tel: +1 310 301 5800
Email: iana@iana.org>";
description
"This module contains the YANG definition for the (D)TLS profile.
Copyright (c) 2025 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Revised BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
All revisions of IETF and IANA published modules can be found
at the YANG Parameters registry
(https://www.iana.org/assignments/yang-parameters).
The initial version of this YANG module is part of RFC 9761;
see the RFC itself for full legal notices.
The latest version of this YANG module is available at
https://www.iana.org/assignments/yang-parameters.";
revision 2025-04-18 {
description
"Initial revision.";
reference
"RFC 9761: Manufacturer Usage Description (MUD) for TLS and
DTLS Profiles for Internet of Things (IoT) Devices";
}
typedef extension-type {
type uint16;
description
"Extension type in the TLS ExtensionType Values registry as
defined in Section 7 of RFC 8447.";
}
typedef supported-group {
type uint16;
description
"Supported Group in the TLS Supported Groups registry as
defined in Section 9 of RFC 8447.";
}
typedef signature-algorithm {
type uint16;
description
"Signature algorithm in the TLS SignatureScheme registry as
defined in Section 11 of RFC 8446.";
}
typedef psk-key-exchange-mode {
type uint8;
description
"Pre-shared key exchange mode in the TLS PskKeyExchangeMode
registry as defined in Section 11 of RFC 8446.";
}
typedef application-protocol {
type string;
description
"Application-Layer Protocol Negotiation (ALPN) Protocol ID
registry as defined in Section 6 of RFC 7301.";
}
typedef cert-compression-algorithm {
type uint16;
description
"Certificate compression algorithm in TLS Certificate
Compression Algorithm IDs registry as defined in
Section 7.3 of RFC 8879.";
}
typedef cipher-algorithm {
type uint16;
description
"Cipher suite in TLS Cipher Suites registry
as discussed in Section 11 of RFC 8446.";
}
typedef tls-version {
type enumeration {
enum tls12 {
value 1;
description
"TLS Protocol Version 1.2.
TLS 1.2 ClientHello contains
0x0303 in 'legacy_version'.";
reference
"RFC 5246: The Transport Layer Security (TLS) Protocol
Version 1.2";
}
enum tls13 {
value 2;
description
"TLS Protocol Version 1.3.
TLS 1.3 ClientHello contains a
supported_versions extension with 0x0304
contained in its body and the ClientHello contains
0x0303 in 'legacy_version'.";
reference
"RFC 8446: The Transport Layer Security (TLS) Protocol
Version 1.3";
}
}
description
"Indicates the TLS version.";
}
typedef dtls-version {
type enumeration {
enum dtls12 {
value 1;
description
"DTLS Protocol Version 1.2.
DTLS 1.2 ClientHello contains
0xfefd in 'legacy_version'.";
reference
"RFC 6347: Datagram Transport Layer Security 1.2";
}
enum dtls13 {
value 2;
description
"DTLS Protocol Version 1.3.
DTLS 1.3 ClientHello contains a
supported_versions extension with 0x0304
contained in its body and the ClientHello contains
0xfefd in 'legacy_version'.";
reference
"RFC 9147: Datagram Transport Layer Security 1.3";
}
}
description
"Indicates the DTLS version.";
}
}
5.4. MUD (D)TLS Profile Extension π¦
this doc augments the "ietf-mud" MUD YANG module so it can say whether the device supports the (D)TLS profile π if the device supports the "ietf-mud-tls" extension, the MUD file is assumed to implement the "match-on-tls-dtls" ACL model feature defined in this specification πΈ and, furthermore, only accept or drop actions SHOULD be included with the (D)TLS profile, kinda like the actions allowed in Section 2 of [RFC8520] π
this doc defines the YANG module "ietf-mud-tls", and it has the following tree structure:
module: ietf-mud-tls
augment /ietf-mud:mud:
+--rw is-tls-dtls-profile-supported? boolean
here's the model, file ietf-mud-tls@2025-04-18.yang β¨
module ietf-mud-tls {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-mud-tls";
prefix ietf-mud-tls;
import ietf-mud {
prefix ietf-mud;
reference
"RFC 8520: Manufacturer Usage Description Specification";
}
organization
"IETF OPSAWG (Operations and Management Area Working Group)";
contact
"WG Web: <https://datatracker.ietf.org/wg/opsawg/>
WG List: opsawg@ietf.org
Author: Tirumaleswar Reddy.K
kondtir@gmail.com
Author: Dan Wing
danwing@gmail.com
Author: Blake Anderson
blake.anderson@cisco.com
";
description
"Extension to a MUD module to indicate (D)TLS
profile support.
Copyright (c) 2025 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Revised BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 9761; see
the RFC itself for full legal notices.";
revision 2025-04-18 {
description
"Initial revision.";
reference
"RFC 9761: Manufacturer Usage Description (MUD) for TLS and
DTLS Profiles for Internet of Things (IoT)
Devices";
}
augment "/ietf-mud:mud" {
description
"This adds an extension for a manufacturer
to indicate whether the (D)TLS profile is
supported by a device.";
leaf is-tls-dtls-profile-supported {
type boolean;
default "false";
description
"This value will equal 'true' if a device supports
(D)TLS profile.";
}
}
}
6. Processing of the MUD (D)TLS Profile β¨
okay so this is the rulebook for how a network security service (like a firewall) should handle the MUD (D)TLS Profile π the whole point is to avoid ossification, aka making the internet too rigid to ever change π«Ά
- if a (D)TLS parameter shows up in a session but isn't in the MUD (D)TLS profile AND the firewall recognizes it, that's sus π it can flag unexpected (D)TLS usage, which might mean unauthorized software or malware on an endpoint. the firewall can block the session or raise an alert so the compromised device gets quarantined and fixed π₯ example: if the cipher suite
TLS_RSA_WITH_AES_128_CBC_SHAshows up in the ClientHello and isn't in the profile, but the firewall knows it, it can identify unexpected TLS usage. - if a (D)TLS parameter shows up that's NOT in the profile and the firewall does NOT recognize it either, the firewall ignores it and does not block the session π
ββοΈ this matches the compliant TLS middlebox description in Section 9.3 of [RFC8446], which says to ignore all unrecognized cipher suites, extensions, and other parameters. example:
TLS_CHACHA20_POLY1305_SHA256in the ClientHello, not in the profile, not recognized, so the firewall just ignores it. this also means the firewall ignores GREASE values from TLS peers and plays nicely with implementations that advertise them π§ - deployments update at different speeds, so an updated profile might support newer parameters π if the firewall doesn't recognize those, an alert should be triggered to the firewall vendor and the IoT device owner or administrator. a firewall must be readily updatable so that when new parameters are found that it doesn't recognize, it can get updated quickly π
most importantly, if the firewall isn't readily updatable, its ability to identify emerging malware gets weaker over time π example: if
TLS_AES_128_CCM_8_SHA256is in the MUD (D)TLS profile and the firewall doesn't recognize it, an alert gets triggered. same deal if the (D)TLS version in the MUD file isn't recognized by the firewall. - if the MUD (D)TLS profile includes any parameters that are susceptible to attacks (like weaker cryptographic parameters), an alert MUST be triggered to the firewall vendor and the IoT device owner or administrator π¨ no skipping this one, bestie.
7. MUD File Example π
this example has (D)TLS profile parameters for an IoT device that reaches servers listening on port 443 using TCP transport πΈ the JSON encoding of YANG-modeled data [RFC7951] is used to illustrate it, so here's the vibe:
{
"ietf-mud:mud": {
"mud-version": 1,
"mud-url": "https://example.com/IoTDevice",
"last-update": "2024-08-05T03:56:40.105+10:00",
"cache-validity": 100,
"extensions": [
"ietf-mud-tls"
],
"ietf-mud-tls:is-tls-dtls-profile-supported": "true",
"is-supported": true,
"systeminfo": "IoT device name",
"from-device-policy": {
"access-lists": {
"access-list": [
{
"name": "mud-7500-profile"
}
]
}
},
"ietf-access-control-list:acls": {
"acl": [
{
"name": "mud-7500-profile",
"type": "ipv6-acl-type",
"aces": {
"ace": [
{
"name": "cl0-frdev",
"matches": {
"ipv6": {
"protocol": 6
},
"tcp": {
"ietf-mud:direction-initiated": "from-device",
"destination-port": {
"operator": "eq",
"port": 443
}
},
"ietf-acl-tls:client-profile" : {
"tls-dtls-profiles" : [
{
"name" : "profile1",
"supported-tls-versions" : ["tls13"],
"cipher-suite" : [4865, 4866],
"extension-types" : [10,11,13,16,24],
"supported-groups" : [29]
}
]
},
"actions": {
"forwarding": "accept"
}
}
}
]
}
}
]
}
}
}
here's how the firewall handles the profile above π
- if the extension type "encrypt_then_mac" (code point 22) [RFC7366] shows up in the ClientHello and the firewall recognizes it, it can identify unexpected TLS usage π
- if the extension type "token_binding" (code point 24) [RFC8472] is in the MUD (D)TLS profile but the firewall doesn't recognize it, the firewall can ignore it. BUT because "token_binding" is in the profile, an alert gets triggered to the firewall vendor and the IoT device owner or administrator to say the firewall isn't up-to-date π«
- the two-byte values IANA assigned for
TLS_AES_128_GCM_SHA256andTLS_AES_256_GCM_SHA384are written in decimal format π’
8. Software-Based ACLs and ACLs Within a (D)TLS 1.3 Proxy π§
okay so traditionally ACLs are all about fixed-length bit matching in hardware, like the stuff in Ternary Content-Addressable Memory (TCAM) π§ but ACLs in software (think iptables) are way more flexible and can do things like string matching π for MUD (D)TLS profiles, matching binary data and strings is a deliberate choice that takes advantage of software-based ACLs. that gives you more dynamic, context-sensitive access control, which is literally essential for what MUD is for π also, the DNS extension added to ACL in the MUD specification [RFC8520] needs software-based ACLs too, so it's a whole thing.
now for MUD (D)TLS ACLs inside a (D)TLS 1.3 proxy π¦ the goal is for the proxy to intercept the (D)TLS handshake BEFORE any ACL rules get applied. which means MUD (D)TLS ACL matching has to happen after the proxy decrypts the encrypted TLS handshake messages π the proxy would then inspect the handshake fields according to the MUD profile. ACL matching happens in two stages: first, by filtering the clear-text TLS handshake messages, and second, by filtering after the TLS handshake messages have been decrypted β¨
9. Security Considerations π¨
okay bestie, this part is serious π the security considerations in [RFC8520] need to be taken into account. the middlebox MUST follow the invariants discussed in Section 9.3 of [RFC8446] so it acts as a compliant proxy π«‘
even though it's hard for malware to copy the TLS behavior of different IoT device types and models from different manufacturers, malicious agents could still use similar (D)TLS profile parameters as legit devices to dodge detection π this is tricky because IoT devices often have totally different (D)TLS profiles between models, and especially between manufacturers. malware might struggle to perfectly copy the TLS behavior across all those devices, but it's not impossible π malicious agents might manage to use profile parameters that look like the ones from legit devices. how doable it is depends on the parameters: something like certificate authorities is complex to fake, while something like signature algorithms might be easier to copy. the harder it is to mimic a profile, the more specific the profile is and the more the parameters vary between devices π§©
network security services should also lean on contextual network data (like domain name, IP address, and so on) to catch false negatives π for example, they can filter malicious domain names and destination IP addresses with a bad reputation score. to catch these sneaky flows, anomaly detection (deep learning techniques on network data) can be used to spot malicious agents using the same (D)TLS profile parameters as the legit agent on the IoT device π€ the main idea with anomaly detection is to keep learning what "normal" behavior looks like, then flag an "anomaly" (or an attack) based on what's known about normal behavior and how far something deviates from it π network security vendors use TLS parameters and contextual network data to identify malware (for example, see [EVE]) π¦
honestly, the efficacy of catching malware in (D)TLS 1.3 flows will drop a lot without using contextual network data or acting as a proxy π© the encryption in (D)TLS 1.3 hides a lot of the handshake details that could otherwise be used for detection π
9.1. Challenges in Mimicking (D)TLS 1.2 Handshakes for IoT Devices π
(D)TLS 1.2 generally doesn't need a proxy, since all the fields in the (D)TLS profile are sent in cleartext during the handshake ποΈ it's technically possible for an attacker to watch and copy the handshake, but they'd need a domain name and destination IP address with a good reputation, certificates from the same CAs the IoT devices use, and a way to dodge traffic analysis techniques (for example, [EVE], which spots malicious patterns in encrypted traffic without decrypting it) π΅οΈββοΈ this is really hard because IoT devices often have distinct (D)TLS profiles that vary between models and manufacturers π₯΅ and unlike legit app developers, malware authors have extra constraints, like avoiding any noticeable differences on the infected devices, and the risk of take-down requests hitting their server infrastructure (for example, a CA revoking a certificate once it's reported) π€
9.2. Considerations for the "iana-tls-profile" Module β¨
Okay so this bit follows the template in Section 3.7.1 of [YANG-GUIDELINES] π
The "iana-tls-profile" YANG module is a data model built to be accessed through YANG-based management protocols, like NETCONF [RFC6241] and RESTCONF [RFC8040]. These protocols have to run over a secure transport layer (think SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and have to use mutual authentication π
The Network Configuration Access Control Model (NACM) [RFC8341] gives you the tools to limit particular NETCONF or RESTCONF users to a preset subset of all the available protocol operations and content. It's giving organized π
Now the sensitivity check, bestie π«Ά
There are no particularly sensitive writable data nodes. πΈ
There are no particularly sensitive readable data nodes. πΈ
This YANG module defines YANG enumerations for a public, IANA-maintained registry. π
YANG enumerations aren't security-sensitive, since they're statically defined in the publicly accessible YANG module. IANA MAY deprecate and/or obsolete enumerations over time as needed to address security issues. So it can clean up its own mess when it needs to π§Ή
There are no particularly sensitive RPC or action operations. πΈ
The YANG module defines a set of identities, types, and groupings. These nodes are meant to be reused by other YANG modules. By itself, the module doesn't expose any writable data nodes, data nodes that contain read-only state, or RPCs. So there are no additional security issues related to the YANG module that need to be considered. Main character energy, no notes π¦
9.3. Considerations for the "ietf-acl-tls" Module π
This section follows the template in Section 3.7.1 of [YANG-GUIDELINES] β¨
The "ietf-acl-tls" YANG module is a data model meant to be accessed through YANG-based management protocols, like NETCONF [RFC6241] and RESTCONF [RFC8040]. These protocols have to use a secure transport layer (think SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and have to use mutual authentication π
NACM [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. π
Okay this is the serious part, so pay attention π¨ A bunch of data nodes in this module are writable, creatable, and deletable (that's "config true", which is the default). All the writable data nodes are likely to be reasonably sensitive or vulnerable in some network environments. Write operations (like edit-config) and delete operations on these nodes without proper protection or authentication can have a negative effect on network operations. For example, adding or removing references to trusted anchors, (D)TLS versions, cipher suites, and so on can totally change the security policy that's running. That's why the NACM extension "default-deny-write" has been set for all data nodes defined in this module. Locked down, no exceptions π
Some of the readable data nodes in this module may be considered sensitive or vulnerable in some network environments. So it's important to control read access (like via get, get-config, or notification) to these nodes. The YANG module gives insights into (D)TLS profiles of IoT devices, and the privacy considerations in Section 10 need to be taken into account π
There are no particularly sensitive RPC or action operations. πΈ
This YANG module uses groupings from other YANG modules that define nodes that may be considered sensitive or vulnerable in network environments. Check the Security Considerations for those dependent YANG modules to see which nodes may be sensitive or vulnerable in network environments. Homework, but worth it π
9.4. Considerations for the "ietf-mud-tls" Module π
This section follows the template in Section 3.7.1 of [YANG-GUIDELINES] β¨
The "ietf-mud-tls" YANG module is a data model meant to be accessed through YANG-based management protocols, like NETCONF [RFC6241] and RESTCONF [RFC8040]. These protocols have to use a secure transport layer (think SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and have to use mutual authentication π
NACM [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. π
A bunch of data nodes in this module are writable, creatable, and deletable (that's "config true", which is the default). All the writable data nodes are likely to be reasonably sensitive or vulnerable in some network environments. Write operations (like edit-config) and delete operations on these nodes without proper protection or authentication can have a negative effect on network operations. For example, an update that the device doesn't support a (D)TLS profile can totally change the security policy that's running. That's why the NACM extension "default-deny-write" has been set for all data nodes defined in this module. Nobody's touching these without permission π«
There are no particularly sensitive RPC or action operations. πΈ
This YANG module uses groupings from other YANG modules that define nodes that may be considered sensitive or vulnerable in network environments. Check the Security Considerations for those dependent YANG modules to see which nodes may be sensitive or vulnerable in network environments. π
10. Privacy Considerations π
Okay, privacy is a big deal, so let's talk about it π«£ The privacy considerations in Section 16 of [RFC8520] about not revealing the MUD URL to an attacker still need to be taken into consideration. The MUD URL can be stored in a Trusted Execution Environment (TEE) for secure operation, enhanced data security, and prevention of exposure to unauthorized software. The MUD URL MUST be encrypted and shared only with the authorized components in the network (see Sections 1.5 and 1.8 of [RFC8520]) so that an on-path attacker cannot read the MUD URL and identify the IoT device. Otherwise, it gives the attacker a hint about what vulnerabilities may be present on the IoT device. π¬
Note that while protecting the MUD URL is valuable, as described above, a compromised IoT device may be susceptible to malware doing vulnerability analysis (and version mapping) of the legitimate software in memory or on non-volatile storage (e.g., disk, NVRAM). However, the malware on the IoT device is intended to be blocked from establishing a (D)TLS connection with the C&C server to reveal this information, because the connection would be blocked by the network security service supporting this specification. So the network is the bouncer here πͺπ
Full handshake inspection (Section 4.1) requires a (D)TLS proxy device that needs to decrypt traffic between the IoT device and its server(s). There's a tradeoff between privacy of the data carried inside (D)TLS (for example, personally identifiable information and protected health information especially) and efficacy of endpoint security. The use of (D)TLS proxies is NOT RECOMMENDED whenever possible. π ββοΈ For example, an enterprise firewall administrator can configure the middlebox to bypass (D)TLS proxy functionality or payload inspection for connections destined to specific well-known services. Alternatively, an IoT device could be configured to reject all sessions that involve proxy servers to specific well-known services. Also, mechanisms based on object security can be used by IoT devices to enable end-to-end security, and the middlebox won't have any access to the packet data. πβ¨ For example, Object Security for Constrained RESTful Environments (OSCORE) [RFC8613] is a proposal that protects Constrained Application Protocol (CoAP) messages by wrapping them in the CBOR Object Signing and Encryption (COSE) format [RFC9052]. Wrapping, but make it secure π
11. IANA Considerations π§
11.1. (D)TLS Profile YANG Modules π
IANA has registered the following URIs in the "ns" subregistry within the "IETF XML Registry" [RFC3688]:
URI: urn:ietf:params:xml:ns:yang:iana-tls-profile
Registrant Contact: IANA.
XML: N/A; the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-acl-tls
Registrant Contact: IESG.
XML: N/A; the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-mud-tls
Registrant Contact: IESG.
XML: N/A; the requested URI is an XML namespace.
IANA has created an IANA-maintained YANG module called "iana-tls-profile" based on the contents of Section 5.3, which allows for new (D)TLS parameters and (D)TLS versions to be added to "client-profile". Bestie, it's extensible, so the list can grow π±
IANA has registered the following YANG modules in the "YANG Module Names" registry [RFC6020] of the "YANG Parameters" registry group. π
Name: iana-tls-profile
Namespace: urn:ietf:params:xml:ns:yang:iana-tls-profile
Maintained by IANA: Y
Prefix: ianatp
Reference: RFC 9761
Name: ietf-acl-tls
Namespace: urn:ietf:params:xml:ns:yang:ietf-acl-tls
Maintained by IANA: N
Prefix: ietf-acl-tls
Reference: RFC 9761
Name: ietf-mud-tls
Namespace: urn:ietf:params:xml:ns:yang:ietf-mud-tls
Maintained by IANA: N
Prefix: ietf-mud-tls
Reference: RFC 9761
11.2. Considerations for the iana-tls-profile Module
Okay so IANA already made the first version of the IANA-maintained YANG module called iana-tls-profile based on Section 5.3 π It's the thing that lets brand-new (D)TLS parameters and (D)TLS versions get added later on π¦ IANA is asked to add this note:
tls-versionanddtls-versionvalues must not be directly added to theiana-tls-profileYANG module. Instead, they must be added to the "ACL TLS Version Codes" and "ACL DTLS Version Codes" registries (respectively), provided the new (D)TLS version has been standardized by the IETF. It allows a new (D)TLS version to be added to theiana-tls-profileYANG module. πΈ- (D)TLS parameters must not be directly added to the
iana-tls-profileYANG module. They must instead be added to the "ACL (D)TLS Parameters" registry if the new (D)TLS parameters can be used by a middlebox to identify a MUD non-compliant (D)TLS behavior. It allows new (D)TLS parameters to be added to theiana-tls-profileYANG module. β¨
When a tls-version or dtls-version value gets added to the "ACL TLS Version Codes" or "ACL DTLS Version Codes" registry (respectively), a new enum statement must be added to the iana-tls-profile YANG module. The following enum statement, and its substatements, should be defined:
"enum": Replicates the label from the registry."value": Contains the IANA-assigned value corresponding to thetls-versionordtls-version."description": Replicates the description from the registry."reference":RFC YYYY: <Title of the RFC>, where YYYY is the RFC that added thetls-versionordtls-version.
When a (D)TLS parameter is added to the "ACL (D)TLS Parameters" registry, a new type statement must be added to the iana-tls-profile YANG module. The following type statement, and its substatements, should be defined:
"derived type": Replicates the parameter name from the registry."built-in type": Contains the built-in YANG type."description": Replicates the description from the registry.
When the iana-tls-profile YANG module is updated, a new revision statement must be added in front of the existing revision statements. π
IANA has added this note to the "ACL TLS Version Codes", "ACL DTLS Version Codes", and "ACL (D)TLS Parameters" registries:
When this registry is modified, the YANG module "iana-tls-profile"
must be updated as defined in [RFC9761].
11.3. ACL TLS Version Registry
IANA has created a new registry titled "ACL TLS Version Codes" π₯ The codes in here are the valid values of the tls-version parameter. Further assignments get made through Expert Review [RFC8126]. Experts must ensure that the TLS protocol version in a new registration is one that has been standardized by the IETF. The registry is expected to be updated infrequently, mostly when a new TLS version gets standardized by the IETF π
+=======+=======+=================+===========+
| Value | Label | Description | Reference |
+=======+=======+=================+===========+
| 1 | tls12 | TLS Version 1.2 | [RFC5246] |
+-------+-------+-----------------+-----------+
| 2 | tls13 | TLS Version 1.3 | [RFC8446] |
+-------+-------+-----------------+-----------+
Table 1
11.4. ACL DTLS Version Registry
IANA has created a new registry titled "ACL DTLS Version Codes" π The codes in here are the valid values of the dtls-version parameter. Further assignments get made through Expert Review [RFC8126]. Experts must ensure that the DTLS protocol version in a new registration is one that has been standardized by the IETF. The registry is expected to be updated infrequently, mostly when a new DTLS version gets standardized by the IETF π¦
+=======+========+==================+===========+
| Value | Label | Description | Reference |
+=======+========+==================+===========+
| 1 | dtls12 | DTLS Version 1.2 | [RFC6347] |
+-------+--------+------------------+-----------+
| 2 | dtls13 | DTLS Version 1.3 | [RFC9147] |
+-------+--------+------------------+-----------+
Table 2
11.5. ACL (D)TLS Parameters Registry
IANA has created a new registry titled "ACL (D)TLS Parameters" π§
The values for all the (D)TLS parameters in this registry are defined in the TLS and DTLS IANA registries (https://www.iana.org/assignments/tls-parameters/ and https://www.iana.org/assignments/tls-extensiontype-values/), excluding the tls-version and dtls-version parameters. Further assignments get made through Expert Review [RFC8126]. Experts must ensure that the (D)TLS parameter in a new registration is one that has been standardized by the IETF. The registry is expected to be updated periodically, mostly when a new (D)TLS parameter gets standardized by the IETF. The registry has been populated with the following initial parameters: π
+============================+=============+========+==============+
| Parameter Name | YANG Type | JSON | Description |
| | | Type | |
+============================+=============+========+==============+
| extension-type | uint16 | Number | Extension |
| | | | type |
+----------------------------+-------------+--------+--------------+
| supported-group | uint16 | Number | Supported |
| | | | group |
+----------------------------+-------------+--------+--------------+
| signature-algorithm | uint16 | Number | Signature |
| | | | algorithm |
+----------------------------+-------------+--------+--------------+
| psk-key-exchange-mode | uint8 | Number | Pre-shared |
| | | | key exchange |
| | | | mode |
+----------------------------+-------------+--------+--------------+
| application-protocol | string | String | Application |
| | | | protocol |
+----------------------------+-------------+--------+--------------+
| cert-compression-algorithm | uint16 | Number | Certificate |
| | | | compression |
| | | | algorithm |
+----------------------------+-------------+--------+--------------+
| cipher-algorithm | uint16 | Number | Cipher suite |
+----------------------------+-------------+--------+--------------+
| tls-version | enumeration | String | TLS version |
+----------------------------+-------------+--------+--------------+
| dtls-version | enumeration | String | DTLS version |
+----------------------------+-------------+--------+--------------+
Table 3
11.6. MUD Extensions Registry
IANA has created a new MUD Extension Name "ietf-mud-tls" in the "MUD Extensions" IANA registry https://www.iana.org/assignments/mud β¨
12. References π
12.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>.
[RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH)
Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252,
January 2006, <https://www.rfc-editor.org/info/rfc4252>.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246,
DOI 10.17487/RFC5246, August 2008,
<https://www.rfc-editor.org/info/rfc5246>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>.
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
January 2012, <https://www.rfc-editor.org/info/rfc6347>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
Access Control Model", STD 91, RFC 8341,
DOI 10.17487/RFC8341, March 2018,
<https://www.rfc-editor.org/info/rfc8341>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
[RFC8519] Jethanandani, M., Agarwal, S., Huang, L., and D. Blair,
"YANG Data Model for Network Access Control Lists (ACLs)",
RFC 8519, DOI 10.17487/RFC8519, March 2019,
<https://www.rfc-editor.org/info/rfc8519>.
[RFC8520] Lear, E., Droms, R., and D. Romascanu, "Manufacturer Usage
Description Specification", RFC 8520,
DOI 10.17487/RFC8520, March 2019,
<https://www.rfc-editor.org/info/rfc8520>.
[RFC8701] Benjamin, D., "Applying Generate Random Extensions And
Sustain Extensibility (GREASE) to TLS Extensibility",
RFC 8701, DOI 10.17487/RFC8701, January 2020,
<https://www.rfc-editor.org/info/rfc8701>.
[RFC8879] Ghedini, A. and V. Vasiliev, "TLS Certificate
Compression", RFC 8879, DOI 10.17487/RFC8879, December
2020, <https://www.rfc-editor.org/info/rfc8879>.
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/info/rfc9000>.
[RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The
Datagram Transport Layer Security (DTLS) Protocol Version
1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022,
<https://www.rfc-editor.org/info/rfc9147>.
[RFC9640] Watsen, K., "YANG Data Types and Groupings for
Cryptography", RFC 9640, DOI 10.17487/RFC9640, October
2024, <https://www.rfc-editor.org/info/rfc9640>.
[X690] ITU-T, "Information technology - ASN.1 encoding Rules:
Specification of Basic Encoding Rules (BER), Canonical
Encoding Rules (CER) and Distinguished Encoding Rules
(DER)", ITU-T Recommendation X.690, 2021,
<https://www.itu.int/rec/T-REC-X.690-202102-I/en>.
12.2. Informative References β¨
okay bestie, these are the extra reads π not required to implement anything, but they're where the backstory lives π
[CLEAR-AS-MUD] Hamza, A., Ranathunga, D., Gharakheili, H. H., Roughan, M., and V. Sivaraman, "Clear as MUD: Generating, Validating and Applying IoT Behaviorial Profiles (Technical Report)", arXiv:1804.04358, DOI 10.48550/arXiv.1804.04358, April 2018, https://arxiv.org/pdf/1804.04358.pdf.
[CRYPTO-VULNERABILITY] Perez, B., "Exploiting the Windows CryptoAPI Vulnerability", January 2020, https://securityboulevard.com/2020/01/exploiting-the-windows-cryptoapi-vulnerability/.
[EVE] Cisco, "Encrypted Visibility Engine", Cisco Secure Firewall documentation, https://secure.cisco.com/secure-firewall/docs/encrypted-visibility-engine.
[IoT-PROFILE] Tschofenig, H., Fossati, T., and M. Richardson, "TLS/DTLS 1.3 Profiles for the Internet of Things", Work in Progress, Internet-Draft, draft-ietf-uta-tls13-iot-profile-13, 3 March 2025, https://datatracker.ietf.org/doc/html/draft-ietf-uta-tls13-iot-profile-13.
[MALWARE-DOH] Cimpanu, C., "First-ever malware strain spotted abusing new DoH (DNS over HTTPS) protocol", ZDNET, July 2019, https://www.zdnet.com/article/first-ever-malware-strain-spotted-abusing-new-doh-dns-over-https-protocol/.
[MALWARE-TLS] Anderson, B. and D. McGrew, "TLS Beyond the Browser: Combining End Host and Network Data to Understand Application Behavior", IMC '19: Proceedings of the Internet Measurement Conference, pp. 379-392, DOI 10.1145/3355369.3355601, October 2019, https://dl.acm.org/citation.cfm?id=3355601.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010, https://www.rfc-editor.org/info/rfc6020.
[RFC6066] Eastlake 3rd, D., "Transport Layer Security (TLS) Extensions: Extension Definitions", RFC 6066, DOI 10.17487/RFC6066, January 2011, https://www.rfc-editor.org/info/rfc6066.
[RFC7301] Friedl, S., Popov, A., Langley, A., and E. Stephan, "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension", RFC 7301, DOI 10.17487/RFC7301, July 2014, https://www.rfc-editor.org/info/rfc7301.
[RFC7366] Gutmann, P., "Encrypt-then-MAC for Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)", RFC 7366, DOI 10.17487/RFC7366, September 2014, https://www.rfc-editor.org/info/rfc7366.
[RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., and P. Hoffman, "Specification for DNS over Transport Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May 2016, https://www.rfc-editor.org/info/rfc7858.
[RFC7925] Tschofenig, H., Ed. and T. Fossati, "Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things", RFC 7925, DOI 10.17487/RFC7925, July 2016, https://www.rfc-editor.org/info/rfc7925.
[RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", RFC 7951, DOI 10.17487/RFC7951, August 2016, https://www.rfc-editor.org/info/rfc7951.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, https://www.rfc-editor.org/info/rfc8126.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, https://www.rfc-editor.org/info/rfc8340.
[RFC8447] Salowey, J. and S. Turner, "IANA Registry Updates for TLS and DTLS", RFC 8447, DOI 10.17487/RFC8447, August 2018, https://www.rfc-editor.org/info/rfc8447.
[RFC8472] Popov, A., Ed., Nystroem, M., and D. Balfanz, "Transport Layer Security (TLS) Extension for Token Binding Protocol Negotiation", RFC 8472, DOI 10.17487/RFC8472, October 2018, https://www.rfc-editor.org/info/rfc8472.
[RFC8484] Hoffman, P. and P. McManus, "DNS Queries over HTTPS (DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018, https://www.rfc-editor.org/info/rfc8484.
[RFC8576] Garcia-Morchon, O., Kumar, S., and M. Sethi, "Internet of Things (IoT) Security: State of the Art and Challenges", RFC 8576, DOI 10.17487/RFC8576, April 2019, https://www.rfc-editor.org/info/rfc8576.
[RFC8613] Selander, G., Mattsson, J., Palombini, F., and L. Seitz, "Object Security for Constrained RESTful Environments (OSCORE)", RFC 8613, DOI 10.17487/RFC8613, July 2019, https://www.rfc-editor.org/info/rfc8613.
[RFC9052] Schaad, J., "CBOR Object Signing and Encryption (COSE): Structures and Process", STD 96, RFC 9052, DOI 10.17487/RFC9052, August 2022, https://www.rfc-editor.org/info/rfc9052.
[RFC9325] Sheffer, Y., Saint-Andre, P., and T. Fossati, "Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)", BCP 195, RFC 9325, DOI 10.17487/RFC9325, November 2022, https://www.rfc-editor.org/info/rfc9325.
[RFC9462] Pauly, T., Kinnear, E., Wood, C. A., McManus, P., and T. Jensen, "Discovery of Designated Resolvers", RFC 9462, DOI 10.17487/RFC9462, November 2023, https://www.rfc-editor.org/info/rfc9462.
[RFC9463] Boucadair, M., Ed., Reddy.K, T., Ed., Wing, D., Cook, N., and T. Jensen, "DHCP and Router Advertisement Options for the Discovery of Network-designated Resolvers (DNR)", RFC 9463, DOI 10.17487/RFC9463, November 2023, https://www.rfc-editor.org/info/rfc9463.
[SLOWLORIS] Wikipedia, "Slowloris (cyber attack)", December 2024, https://en.wikipedia.org/w/index.php?title=Slowloris_(cyber_attack)&oldid=1263305193.
[TLS-ESNI] Rescorla, E., Oku, K., Sullivan, N., and C. A. Wood, "TLS Encrypted Client Hello", Work in Progress, Internet-Draft, draft-ietf-tls-esni-24, 20 March 2025, https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-24.
[X501] "Information Technology - Open Systems Interconnection - The Directory: Models", ITU-T Recommendation X.501, October 2019, https://www.itu.int/rec/T-REC-X.501-201910-I/en.
[YANG-GUIDELINES] Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for Authors and Reviewers of Documents Containing YANG Data Models", Work in Progress, Internet-Draft, draft-ietf-netmod-rfc8407bis-23, 15 April 2025, https://datatracker.ietf.org/doc/html/draft-ietf-netmod-rfc8407bis-23.
Acknowledgments π«Ά
Thanks to Flemming Andreasen, Shashank Jain, Michael Richardson, Piyush Joshi, Eliot Lear, Harsha Joshi, Qin Wu, Mohamed Boucadair, Ben Schwartz, Eric Rescorla, Panwei William, Nick Lamb, Tom Petch, Paul Wouters, Thomas Fossati, and Nick Harper for the discussion and comments. π
Thanks to Xufeng Liu for YANGDOCTOR review. Thanks to Linda Dunbar for SECDIR review. Thanks to Qin Wu for OPSDIR review. Thanks to R. Gieben for DNSDIR review. πΈ
Thanks to Roman Danyliw, Orie Steele, Γric Vyncke, Mahesh Jethanandani, Murray Kucherawy, Zaheduzzaman Sarker, and Deb Cooley for the IESG review. You all are iconic ππ
Authors' Addresses π¦
Tirumaleswar Reddy.K
Nokia
India
Email: kondtir@gmail.com
Dan Wing
Citrix Systems, Inc.
4988 Great America Pkwy
Santa Clara, CA 95054
United States of America
Email: danwing@gmail.com
Blake Anderson
Cisco Systems, Inc.
170 West Tasman Dr
San Jose, CA 95134
United States of America
Email: blake.anderson@cisco.com
π¦ where this page comes from
- ietf: rfc9761 2025-04
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms