rfc-3826

The Advanced Encryption Standard (AES) Cipher Algorithm in the SNMP User-based Security Model

U. Blumenthal, F. Maino, K. McCloghrie
date2004-06 streamIETF wgnon working group statusPROPOSED STANDARD pages16 canonicalhttps://www.rfc-editor.org/rfc/rfc3826 doi10.17487/RFC3826
This document describes a symmetric encryption protocol that supplements the protocols described in the User-based Security Model (USM), which is a Security Subsystem for version 3 of the Simple Network Management Protocol for use in the SNMP Architecture. The symmetric encryption protocol described in this document is based on the Advanced Encryption Standard (AES) cipher algorithm used in Cipher FeedBack Mode (CFB), with a key size of 128 bits. [STANDARDS-TRACK]

Extracted elements (24)

design-rationale §3.1.1.1

AES in CFB mode was chosen (over CBC, ECB, OFB, or CTR) because it supports streaming encryption without requiring padding for the final block, which fits variable-length SNMP scopedPDUs. The S=128 parameter matches the block size for maximum efficiency.

snmp, crypto

design-rationale §1.2

Key localization (deriving per-engine keys from a single user password) was inherited from RFC 3414 to ensure that compromise of one SNMP engine's key does not expose communications with other engines.

snmp, crypto, security

interoperability-note §1.2

If the authentication protocol for a user at authoritative engine E is one of those defined in RFC 3414, key localization MUST follow the two-step process in RFC 3414 section 2.6; this ensures the localized key mechanism is consistent across USM implementations.

snmp, crypto

interoperability-note §1.1

The CFB128-AES-128 protocol is designed to be completely interchangeable with existing USM authentication and privacy protocols (CBC-DES, HMAC-MD5-96, HMAC-SHA-96), requiring no changes to the overall SNMP message structure.

snmp, crypto

normative-requirement §1.3 MUST NOT

A user's password or non-localized key MUST NOT be stored on a managed device/node; instead, only the localized key SHALL be stored (if at all) to limit the blast radius of device compromise.

snmp, security, crypto

normative-requirement §3.3.2 MUST

If the privParameters field in an incoming message is not an 8-octet OCTET STRING, a decryptionError indication MUST be returned to the calling module.

snmp, crypto

normative-requirement §1.3 SHOULD

Password length SHOULD be at least 12 octets, password sharing SHOULD be prohibited, and implementations SHOULD support randomly generated passwords.

snmp, security

normative-requirement §4 MUST

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, because CFB encryption mode does not detect ciphertext modifications.

snmp, crypto, security

normative-requirement §3.1.2 MUST

The encryption protocol defined in this memo MUST be used with an authentication protocol that generates a localized key with at least 128 bits.

snmp, crypto

normative-requirement §3.2.1 MUST

The <privKey> length MUST be greater than or equal to 128 bits (16 octets).

snmp, crypto

protocol-element §3.1.1

AES is used in CFB mode with the feedback parameter S set to 128 bits, requiring an IV equal in size to the 128-bit AES block size. Ten rounds of encryption are used.

snmp, crypto

protocol-element §3.1.4

Data decryption uses the IV as the first input block; subsequent ciphertext blocks feed the forward cipher to produce output blocks that are XORed with ciphertext to recover plaintext.

snmp, crypto

protocol-element §3.1.3

Data encryption uses CFB mode: plaintext is divided into 128-bit blocks (last block may be shorter with no padding required), and the IV is used as the first input block for the forward cipher operation.

snmp, crypto

protocol-element §3.1.2.1

The 128-bit Initialization Vector (IV) is constructed by concatenating the 32-bit snmpEngineBoots, the 32-bit snmpEngineTime, and a locally maintained 64-bit integer (salt), all in Most Significant Byte first order.

snmp, crypto

protocol-element §3.1.2.1

The 64-bit salt integer is initialized to a pseudo-random value at boot time and SHOULD be incremented by one for each subsequent message until it wraps, ensuring unique IVs per key.

snmp, crypto

protocol-element §3

The CFB128-AES-128 privacy protocol (usmAesCfb128Protocol) is defined as an alternative privacy protocol for SNMP's User-based Security Model, identified by OID snmpPrivProtocols 4. It uses AES in CFB mode with 128-bit keys and a 128-bit feedback parameter.

snmp, crypto, security

protocol-element §3.2.4.2

The decryptData abstract service primitive takes decryptKey (16 octets), privParameters (64-bit salt), and encryptedData, returning the decrypted scopedPDU in plain text.

snmp, crypto

protocol-element §3.2.4.1

The encryptData abstract service primitive takes encryptKey (16 octets) and dataToEncrypt (scopedPDU), and returns encryptedData and privParameters as an OCTET STRING.

snmp, crypto

protocol-element §2

The snmpUsmAesMIB MODULE-IDENTITY is defined under snmpModules 20, and usmAesCfb128Protocol OBJECT-IDENTITY is defined under snmpPrivProtocols 4.

snmp, registry

registry §5

IANA assigned OID 20 for the snmpUsmAesMIB module under snmpModules, and OID 4 for usmAesCfb128Protocol under snmpPrivProtocols as defined in RFC 3411.

snmp, registry

security-consideration §4

CFB encryption mode does not detect ciphertext modifications, so the AES privacy protocol MUST always be paired with an authentication protocol (e.g., HMAC-MD5-96 or HMAC-SHA-96 from RFC 3414) to provide message integrity.

snmp, crypto, security

security-consideration §4

CFB mode security critically depends on IV uniqueness per key; a duplicate IV allows a cryptanalyst to recover corresponding plaintext. The salt-based IV construction minimizes but does not eliminate duplication risk when multiple managers share one authoritative engine.

snmp, crypto, security

wire-format §3.2.4.1

The encryptKey and decryptKey passed to the AES privacy module MUST be 16 octets (128 bits), taken from the first 128 bits of the user's localized key Kul.

snmp, crypto

wire-format §3.2.3

The msgPrivacyParameters field carries the salt as a serialized OCTET STRING of exactly 8 octets, encoding the 64-bit integer used to construct the IV.

snmp, crypto