RFC 3826
The Advanced Encryption Standard (AES) Cipher Algorithm in the SNMP User-based Security Model
RFC 3826 π The Advanced Encryption Standard (AES) Cipher Algorithm in the SNMP User-based Security Model
Okay bestie, this one is from the Network Working Group πΈ. It was written by U. Blumenthal (Lucent Technologies), F. Maino (Andiamo Systems, Inc.), and K. McCloghrie (Cisco Systems, Inc.) in June 2004. It's a Standards Track document, so it's an actual Internet standard, not just a note π . The title block doesn't list anything it obsoletes or updates, so it's a standalone add-on.
Status of This Memo β¨
This document specifies an Internet standards track protocol for the Internet community, and it asks for discussion and suggestions for improvements. If you want to know where this protocol stands in standardization, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited π.
Copyright Notice π¦
Copyright (C) The Internet Society (2004).
Abstract π
So this document describes a symmetric encryption protocol that adds to the protocols in the User-based Security Model (USM). USM is a Security Subsystem for version 3 of the Simple Network Management Protocol, used in the SNMP Architecture π§. The encryption protocol here is built on the Advanced Encryption Standard (AES) cipher algorithm, used in Cipher FeedBack Mode (CFB), with a key size of 128 bits. It's giving clean and efficient π₯.
Table of Contents π
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Goals and Constraints. . . . . . . . . . . . . . . . . 2
1.2. Key Localization . . . . . . . . . . . . . . . . . . . 3
1.3. Password Entropy and Storage . . . . . . . . . . . . . 3
2. Definitions. . . . . . . . . . . . . . . . . . . . . . . . . 4
3. CFB128-AES-128 Symmetric Encryption Protocol . . . . . . . . 5
3.1. Mechanisms . . . . . . . . . . . . . . . . . . . . . . 5
3.1.1. The AES-based Symmetric Encryption Protocol . . 6
3.1.2. Localized Key, AES Encryption Key and
Initialization Vector . . . . . . . . . . . . . 7
3.1.3. Data Encryption . . . . . . . . . . . . . . . . 8
3.1.4. Data Decryption . . . . . . . . . . . . . . . . 8
3.2. Elements of the AES Privacy Protocol . . . . . . . . . 9
3.2.1. Users . . . . . . . . . . . . . . . . . . . . . 9
3.2.2. msgAuthoritativeEngineID. . . . . . . . . . . . 9
3.2.3. SNMP Messages Using this Privacy Protocol . . . 10
3.2.4. Services provided by the AES Privacy Modules. . 10
3.3. Elements of Procedure. . . . . . . . . . . . . . . . . 11
3.3.1. Processing an Outgoing Message. . . . . . . . . 12
3.3.2. Processing an Incoming Message. . . . . . . . . 12
4. Security Considerations. . . . . . . . . . . . . . . . . . . 13
5. IANA Considerations. . . . . . . . . . . . . . . . . . . . . 13
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 14
7.1. Normative References . . . . . . . . . . . . . . . . . 14
7.2. Informative References . . . . . . . . . . . . . . . . 14
8. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 15
9. Full Copyright Statement . . . . . . . . . . . . . . . . . . 16
1. Introduction π
Okay so, the User-based Security Model [RFC3414] is defined for SNMPv3 as a Security Subsystem inside an SNMP engine, and it lives within the Architecture for describing Internet Management Frameworks [RFC3411] π . [RFC3414] covers HMAC-MD5-96 and HMAC-SHA-96 as the first authentication protocols, and CBC-DES as the first privacy protocol. The cool part is that USM lets other protocols be used instead of those, or alongside them β¨.
This memo is about using CFB128-AES-128 as an alternative privacy protocol for USM π¦. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] π.
1.1. Goals and Constraints π
The big goal here is to give USM a new privacy protocol based on the Advanced Encryption Standard (AES) [FIPS-AES] π.
The major constraint is keeping the new protocol completely interchangeable with the authentication and privacy protocols that USM already defines. No drama, just compatibility π«Ά.
For a given user, the AES-based privacy protocol MUST be used with one of the authentication protocols defined in RFC 3414 or an algorithm/protocol providing equivalent functionality.
1.2. Key Localization π
As [RFC3414] explains, a localized key is a secret key shared between a user U and one authoritative SNMP engine E. Here's the thing: a user may only have one pair of authentication and privacy passwords (so only one pair of keys) for the whole network, but the actual secrets shared with each authoritative SNMP engine are different. That's the magic of key localization β¨.
If the authentication protocol defined for a user U at the authoritative SNMP engine E is one of the authentication protocols defined in [RFC3414], key localization is done with the two-step process described in section 2.6 of [RFC3414] π.
1.3. Password Entropy and Storage π
The security of cryptographic functions comes from two places: how strong the functions are against different kinds of attack, and, probably even more importantly, the keying material used with them π. Theoretical attacks on cryptographic functions are possible, but key guessing is the bigger threat, honestly π.
The following are recommended in regard to user passwords:
- Password length SHOULD be at least 12 octets.
- Password sharing SHOULD be prohibited so that passwords are not shared among multiple SNMP users.
- Implementations SHOULD support the use of randomly generated passwords as a stronger form of security.
Worth remembering: as [RFC3414] says, if a user's password or a non-localized key gets disclosed, key localization won't save you and network security may be compromised π. So a user's password or non-localized key MUST NOT be stored on a managed device/node. Instead, the localized key SHALL be stored (if at all), so that if a device does get compromised, no other managed or managing devices get dragged down with it π‘οΈ.
Storing passwords or non-localized keys on a managed device is a hard no. Keep the blast radius small, bestie π«.
2. Definitions π
This MIB is written in SMIv2 [RFC2578].
SNMP-USM-AES-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-IDENTITY,
snmpModules FROM SNMPv2-SMI -- [RFC2578]
snmpPrivProtocols FROM SNMP-FRAMEWORK-MIB; -- [RFC3411]
snmpUsmAesMIB MODULE-IDENTITY
LAST-UPDATED "200406140000Z"
ORGANIZATION "IETF"
CONTACT-INFO "Uri Blumenthal
Lucent Technologies / Bell Labs
67 Whippany Rd.
14D-318
Whippany, NJ 07981, USA
973-386-2163
uri@bell-labs.com
Fabio Maino
Andiamo Systems, Inc.
375 East Tasman Drive
San Jose, CA 95134, USA
408-853-7530
fmaino@andiamo.com
Keith McCloghrie
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706, USA
408-526-5260
kzm@cisco.com"
DESCRIPTION "Definitions of Object Identities needed for
the use of AES by SNMP's User-based Security
Model.
Copyright (C) The Internet Society (2004).
This version of this MIB module is part of RFC 3826;
see the RFC itself for full legal notices.
Supplementary information may be available on
http://www.ietf.org/copyrights/ianamib.html."
REVISION "200406140000Z"
DESCRIPTION "Initial version, published as RFC3826"
::= { snmpModules 20 }
usmAesCfb128Protocol OBJECT-IDENTITY
STATUS current
DESCRIPTION "The CFB128-AES-128 Privacy Protocol."
REFERENCE "- Specification for the ADVANCED ENCRYPTION
STANDARD. Federal Information Processing
Standard (FIPS) Publication 197.
(November 2001).
- Dworkin, M., NIST Recommendation for Block
Cipher Modes of Operation, Methods and
Techniques. NIST Special Publication 800-38A
(December 2001).
"
::= { snmpPrivProtocols 4 }
END
3. CFB128-AES-128 Symmetric Encryption Protocol π
This section describes a Symmetric Encryption Protocol based on the AES cipher algorithm [FIPS-AES]. It's used in Cipher Feedback Mode, as described in [AES-MODE], with encryption keys that are 128 bits in size π.
This protocol is identified by usmAesCfb128PrivProtocol.
The protocol usmAesCfb128PrivProtocol is an alternative to the privacy protocol defined in [RFC3414] π¦.
3.1. Mechanisms βοΈ
For data confidentiality, an encryption algorithm is required. The designated part of the message gets encrypted before it's transmitted. USM says the scopedPDU is the part of the message that needs encrypting π.
A secret value is shared by all SNMP engines that can legitimately originate messages on behalf of the appropriate user. This secret value, combined with a timeliness value and a 64-bit integer, is used to create the (localized) en/decryption key and the initialization vector π§.
3.1.1. The AES-based Symmetric Encryption Protocol πΈ
This Symmetric Encryption Protocol gives you data confidentiality. The designated portion of an SNMP message gets encrypted and included as part of the message sent to the recipient π.
AES (Advanced Encryption Standard) is the symmetric cipher algorithm that NIST (National Institute of Standards and Technology) picked in a four-year competitive process as the Replacement for DES (Data Encryption Standard) π.
The AES homepage, http://www.nist.gov/aes, has a wealth of info on AES, including the Federal Information Processing Standard [FIPS-AES] that fully specifies the Advanced Encryption Standard π.
The following subsections describe the relevant characteristics of the AES ciphers used in the symmetric encryption protocol in this memo β¨.
3.1.1.1. Mode of operation π
The NIST Special Publication 800-38A [AES-MODE] recommends five confidentiality modes of operation for use with AES: Electronic Codebook (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB), Output Feedback (OFB), and Counter (CTR) π.
The symmetric encryption protocol in this memo uses AES in CFB mode, with the parameter S (number of bits fed back) set to 128, following the definition of CFB mode given in [AES-MODE]. This mode needs an Initialization Vector (IV) that's the same size as the block size of the cipher algorithm π§Έ.
3.1.1.2. Key Size ποΈ
In the encryption protocol described by this memo, AES is used with a key size of 128 bits, as recommended in [AES-MODE] π .
3.1.1.3. Block Size and Padding β¨
okay so the AES cipher blocks used in this encryption protocol are 128 bits each, same as what [AES-MODE] recommends π π the size is locked in, no drama.
3.1.1.4. Rounds π
this one tells you how many times each block gets encrypted πΈ this protocol runs 10 rounds, which is also what [AES-MODE] recommends. iconic consistency π«Ά
3.1.2. Localized Key, AES Encryption Key, and Initialization Vector ποΈ
so the Localized Key (Kul) of an SNMP user (see [RFC3414]) has a size that depends on the authentication protocol set up for that user U at the authoritative SNMP engine E π
the encryption protocol in this memo MUST be used with an authentication protocol that generates a localized key with at least 128 bits. the authentication protocols in [RFC3414] already meet this, so you're probably good π
3.1.2.1. AES Encryption Key and IV π§
the first 128 bits of the localized key Kul become the AES encryption key π the 128-bit IV is built by sticking together three things: the authoritative SNMP engine's 32-bit snmpEngineBoots, the SNMP engine's 32-bit snmpEngineTime, and a local 64-bit integer. that local integer gets set to a pseudo-random value at boot time π²
here's how the IV gets put together, in order:
- the 32-bit snmpEngineBoots is converted into the first 4 octets (Most Significant Byte first) π
- the 32-bit snmpEngineTime is converted into the next 4 octets (Most Significant Byte first) β
- the 64-bit integer is converted into the last 8 octets (Most Significant Byte first) π¦
then the 64-bit integer goes into the msgPrivacyParameters field as an OCTET STRING of length 8 octets π after that, the integer gets modified for the next message. we recommend incrementing it by one until it hits its max value, and then it wraps around π
an implementation can use any method to change the local 64-bit integer, as long as that method never makes a duplicate IV for the same key π ββοΈ
a duplicated IV can happen in the super unlikely case that multiple managers talking to one authoritative engine both accidentally pick the same 64-bit integer within a second π the chance of that is very low, and it doesn't really hurt the robustness of the mechanisms proposed here π‘οΈ
the 64-bit integer has to go in the privParameters field so the receiver can rebuild the correct IV and decrypt the message π this 64-bit value is called the "salt" in this document π§
sender and receiver have to use the same IV value, meaning they both need the same values for each piece that makes up the IV π―ββοΈ specifically, both sides must use the values of snmpEngineBoots, snmpEngineTime, and the 64-bit integer that show up in the relevant message (in the msgAuthoritativeEngineBoots, msgAuthoritativeEngineTime, and privParameters fields, respectively) π
3.1.3. Data Encryption π
the data being encrypted is treated as a sequence of octets π
the data gets encrypted in Cipher Feedback mode with the parameter s set to 128, following the CFB mode definition in Section 6.3 of [AES-MODE] π« there's a clear diagram of the encryption and decryption process in Figure 3 of [AES-MODE] πΌοΈ
the plaintext gets split into 128-bit blocks. the last block might have fewer than 128 bits, and no padding is needed π
the first input block is the IV, and the forward cipher operation runs on the IV to make the first output block π¬ the first ciphertext block comes from XORing the first plaintext block with the first output block π§© that ciphertext block is also used as the input block for the next forward cipher operation π
this keeps going with the successive input blocks until every plaintext segment has a matching ciphertext segment π
the last ciphertext block comes from XORing the last plaintext segment of r bits (r is less than or equal to 128) with the segment made of the r most significant bits of the last output block π
3.1.4. Data Decryption π
in CFB decryption, the IV is the first input block, the first ciphertext is used for the second input block, the second ciphertext is used for the third input block, and so on πͺ the forward cipher function runs on each input block to make the output blocks. then the output blocks get XORed with the matching ciphertext blocks to recover the plaintext blocks π«§
the last ciphertext block (whose size r is less than or equal to 128) gets XORed with the segment of the r most significant bits of the last output block, which recovers the last plaintext block of r bits β¨
3.2. Elements of the AES Privacy Protocol π§©
this section has the definitions needed to build the privacy modules this memo describes π
3.2.1. Users π©βπ»
data en/decryption with this Symmetric Encryption Protocol uses a defined set of userNames π any user someone wants a message en/decrypted for has to be known to that SNMP engine at that particular point. an SNMP engine that needs to talk to another SNMP engine also has to know a user that the other engine knows, including the applicable attributes of that user π«Ά
a user and its attributes are defined like this:
userName: an octet string with the name of the user π·οΈ
privAlg: the algorithm that protects messages made on behalf of the user from disclosure π
privKey: the user's secret key, used as input when generating the localized key for en/decrypting messages made on behalf of the user. the length of this key MUST be greater than or equal to 128 bits (16 octets) ποΈπ
authAlg: the algorithm that authenticates messages made on behalf of the user. it's also used to generate the localized version of the secret key π
3.2.2. msgAuthoritativeEngineID π
the msgAuthoritativeEngineID value in an authenticated message says which authoritative SNMP engine handles that message (see the SnmpEngineID definition in the SNMP Architecture document [RFC3411]) π
the user's (private) privacy key is different at each authoritative SNMP engine, so the snmpEngineID is what picks the right key for the en/decryption process πβ¨
3.2.3. SNMP Messages Using this Privacy Protocol π¨
messages using this privacy protocol carry a msgPrivacyParameters field as part of the msgSecurityParameters π for this protocol, the privParameters field is the serialized OCTET STRING that represents the "salt" used to create the IV π§
3.2.4. Services provided by the AES Privacy Modules ποΈ
this section describes the inputs and outputs the AES Privacy module expects and produces when the User-based Security module calls one of the AES Privacy modules for services π
3.2.4.1. Services for Encrypting Outgoing Data π€
the AES privacy protocol assumes the caller picks the privKey, and that the caller hands over the localized secret key to use π«‘
when it's done, the privacy module returns statusInformation and, if encryption worked, the encryptedPDU and the msgPrivacyParameters encoded as an OCTET STRING π the abstract service primitive looks like this:
statusInformation = -- success or failure
encryptData(
IN encryptKey -- secret key for encryption
IN dataToEncrypt -- data to encrypt (scopedPDU)
OUT encryptedData -- encrypted data (encryptedPDU)
OUT privParameters -- filled in by service provider
)
the abstract data elements are:
statusInformation: whether encryption succeeded or failed. if it failed, this tells you the error π¨
encryptKey: the secret key the encryption algorithm uses. the length of this key MUST be 16 octets π
dataToEncrypt: the data that must be encrypted πΈ
encryptedData: the encrypted data once it completes successfully π¦
privParameters: the privParameters encoded as an OCTET STRING π§
3.2.4.2. Services for Decrypting Incoming Data π₯
this AES privacy protocol assumes the caller picks the privKey, and that the caller passes in the localized secret key to use π«Ά
when it's done, the privacy module returns statusInformation and, if decryption worked, the scopedPDU in plain text βοΈ the abstract service primitive looks like this:
statusInformation =
decryptData(
IN decryptKey -- secret key for decryption
IN privParameters -- as received on the wire
IN encryptedData -- encrypted data (encryptedPDU)
OUT decryptedData -- decrypted data (scopedPDU)
)
the abstract data elements are:
statusInformation: whether the data was decrypted successfully, and if not, what the error was π¦
decryptKey: the secret key the decryption algorithm uses. the length of this key MUST be 16 octets ποΈ
privParameters: the 64-bit integer used to calculate the IV π§
encryptedData: the data to be decrypted π¦
decryptedData: the decrypted data π
3.3. Elements of Procedure π
this section walks through the procedures for the AES privacy protocol in SNMP's User-based Security Model π
3.3.1. Processing an Outgoing Message π
this section covers the steps an SNMP engine follows whenever it has to encrypt part of an outgoing message using the usmAesCfb128PrivProtocol π
- the secret encryptKey gets used to construct the AES encryption key, as described in section 3.1.2.1 π
- the privParameters field is set to the serialization, following the rules in [RFC3417], of an OCTET STRING that represents the 64-bit integer that will be used in the IV, as described in section 3.1.2.1 π§
- the scopedPDU is encrypted (as described in section 3.1.3), and the encrypted data is serialized following the rules in [RFC3417] as an OCTET STRING π
- the serialized OCTET STRING representing the encrypted scopedPDU, together with the privParameters and a statusInformation indicating success, gets returned to the calling module π
3.3.2. Processing an Incoming Message π¬
this section covers the steps an SNMP engine follows whenever it has to decrypt part of an incoming message using the usmAesCfb128PrivProtocol π«§
- if the privParameters field is not an 8-octet OCTET STRING, an error indication (decryptionError) gets returned to the calling module π«
- the 64-bit integer gets extracted from the privParameters field π§
- the secret decryptKey and the 64-bit integer are then used to construct the AES decryption key and the IV, which is computed as described in section 3.1.2.1 ποΈ
- the encryptedPDU is then decrypted (as described in section 3.1.4) π
- if the encryptedPDU can't be decrypted, an error indication (decryptionError) gets returned to the calling module π
- the decrypted scopedPDU and a statusInformation indicating success get returned to the calling module π
4. Security Considerations β¨
okay bestie, this section is where it gets serious π The crypto functions here are only as strong as the keying material you feed them, so the security of the whole thing depends on that too. Section 1.3 SHOULD be followed so your passwords have maximum entropy and stay protected while they're stored π
CFB mode needs a unique IV for every message encrypted under the same key [CRYPTO-B]. If the IV repeats, a cryptanalyst can recover the plaintext π
Section 3.1.2.1 shows how to derive the IV from a local 64-bit integer (the salt), which gets a pseudo-random starting value at boot time. You can vary that integer any way you like, as long as your method never produces a duplicate IV for the same key β¨
The procedure in section 3.1.2.1 suggests one method that makes a unique IV for every message. It can still produce a duplicate, but only in a very unlikely case: multiple managers talking to one authoritative engine accidentally pick the same 64-bit integer within the same second. The odds are super low, and it doesn't meaningfully weaken the mechanisms π«Ά
This AES-based privacy protocol MUST be used with one of the authentication protocols defined in RFC 3414 or with an algorithm/protocol providing equivalent functionality (including integrity), because CFB encryption mode does not detect ciphertext modifications. π¨
For more security details, go read [RFC3414] and the docs that describe the actual cipher algorithms ππ
5. IANA Considerations π
IANA assigned OID 20 to the snmpUsmAesMIB module under the snmpModules subtree. It's maintained in the registry at http://www.iana.org/assignments/smi-numbers.
IANA also assigned OID 4 to the usmAesCfb128Protocol under the snmpPrivProtocols registration point, as defined in RFC 3411 [RFC3411] π¦
6. Acknowledgements πΈ
Parts of this text, plus its general structure, were unabashedly lifted from [RFC3414] π The authors thank a bunch of SNMPv3 WG members for their help, especially Wes Hardaker, Steve Moulton, Randy Presuhn, David Town, and Bert Wijnen. Security discussions with Steve Bellovin helped streamline this protocol π«Ά
7. References π
7.1. Normative References
[AES-MODE] Dworkin, M., "NIST Recommendation for Block Cipher Modes
of Operation, Methods and Techniques", NIST Special
Publication 800-38A, December 2001.
[FIPS-AES] "Specification for the ADVANCED ENCRYPTION STANDARD
(AES)", Federal Information Processing Standard (FIPS)
Publication 197, November 2001.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2578] McCloghrie, K., Perkins, D. and J. Schoenwaelder,
"Structure of Management Information Version 2 (SMIv2)",
STD 58, RFC 2578, April 1999.
[RFC3411] Harrington, D., Presuhn, R. and B. Wijnen, "An
Architecture for Describing Simple Network Management
Protocol (SNMP) Management Frameworks", STD 62, RFC 3411,
December 2002.
[RFC3414] Blumenthal, U. and B. Wijnen, "User-based Security Model
(USM) for version 3 of the Simple Network Management
Protocol (SNMPv3)", STD 62, RFC 3414, December 2002.
[RFC3417] Presuhn, R., Ed., "Transport Mappings for the Simple
Network Management Protocol (SNMP)", STD 62, RFC 3417,
December 2002.
7.2. Informative References
[CRYPTO-B] Bellovin, S., "Probable Plaintext Cryptanalysis of the IP
Security Protocols", Proceedings of the Symposium on
Network and Distributed System Security, San Diego, CA,
pp. 155-160, February 1997.
8. Authors' Addresses π
Uri Blumenthal
Lucent Technologies / Bell Labs
67 Whippany Rd.
14D-318
Whippany, NJ 07981, USA
Phone: +1-973-386-2163
EMail: uri@bell-labs.com
Fabio Maino
Andiamo Systems, Inc.
375 East Tasman Drive
San Jose, CA. 95134 USA
Phone: +1-408-853-7530
EMail: fmaino@andiamo.com
Keith McCloghrie
Cisco Systems, Inc.
170 East Tasman Drive
San Jose, CA. 95134-1706 USA
Phone: +1-408-526-5260
EMail: kzm@cisco.com
9. Full Copyright Statement βοΈ
Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property π§Ύ
The IETF takes no position on the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or on whether any license under such rights might or might not be available. It also doesn't claim to have made any independent effort to identify any such rights. Info on the procedures for rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the results of an attempt to get a general license or permission for implementers or users to use these proprietary rights can be found in the IETF online IPR repository at http://www.ietf.org/ipr.
The IETF invites anyone interested to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology needed to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org π¬
Acknowledgement π
Funding for the RFC Editor function is currently provided by the Internet Society. π
π¦ where this page comes from
- ietf: rfc3826 2004-06
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms