draft-ietf-isms-dtls-tm-01.txt   draft-ietf-isms-dtls-tm-02.txt 
ISMS W. Hardaker ISMS W. Hardaker
Internet-Draft Sparta, Inc. Internet-Draft Sparta, Inc.
Intended status: Standards Track October 22, 2009 Intended status: Standards Track December 8, 2009
Expires: April 25, 2010 Expires: June 11, 2010
Transport Layer Security Transport Model for SNMP Transport Layer Security (TLS) Transport Model for SNMP
draft-ietf-isms-dtls-tm-01.txt draft-ietf-isms-dtls-tm-02.txt
Abstract
This document describes a Transport Model for the Simple Network
Management Protocol (SNMP), that uses either the Transport Layer
Security protocol or the Datagram Transport Layer Security (DTLS)
protocol. The TLS and DTLS protocols provide authentication and
privacy services for SNMP applications. This document describes how
the TLS Transport Model (TLSTM) implements the needed features of a
SNMP Transport Subsystem to make this protection possible in an
interoperable way.
This transport model is designed to meet the security and operational
needs of network administrators. It supports sending of SNMP
messages over TLS/TCP, DTLS/UDP and DTLS/SCTP. The TLS mode can make
use of TCP's improved support for larger packet sizes and the DTLS
mode provides potentially superior operation in environments where a
connectionless (e.g. UDP or SCTP) transport is preferred. Both TLS
and DTLS integrate well into existing public keying infrastructures.
This document also defines a portion of the Management Information
Base (MIB) for use with network management protocols. In particular
it defines objects for managing the TLS Transport Model for SNMP.
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. This document may contain material provisions of BCP 78 and BCP 79.
from IETF Documents or IETF Contributions published or made publicly
available before November 10, 2008. The person(s) controlling the
copyright in some of this material may not have granted the IETF
Trust the right to allow modifications of such material outside the
IETF Standards Process. Without obtaining an adequate license from
the person(s) controlling the copyright in such materials, this
document may not be modified outside the IETF Standards Process, and
derivative works of it may not be created outside the IETF Standards
Process, except to format it for publication as an RFC or to
translate it into languages other than English.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on April 25, 2010. This Internet-Draft will expire on June 11, 2010.
Copyright Notice Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents in effect on the date of Provisions Relating to IETF Documents
publication of this document (http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
Abstract include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
This document describes a Transport Model for the Simple Network described in the BSD License.
Management Protocol (SNMP), that uses either the Transport Layer
Security protocol or the Datagram Transport Layer Security (DTLS)
protocol. The TLS and DTLS protocols provide authentication and
privacy services for SNMP applications. This document describes how
the TLS Transport Model (TLSTM) implements the needed features of a
SNMP Transport Subsystem to make this protection possible in an
interoperable way.
This transport model is designed to meet the security and operational
needs of network administrators. The TLS mode can make use of TCP's
improved support for larger packet sizes and the DTLS mode provides
potentially superior operation in environments where a connectionless
(e.g. UDP or SCTP) transport is preferred. Both TLS and DTLS
integrate well into existing public keying infrastructures.
This document also defines a portion of the Management Information This document may contain material from IETF Documents or IETF
Base (MIB) for use with network management protocols. In particular Contributions published or made publicly available before November
it defines objects for managing the TLS Transport Model for SNMP. 10, 2008. The person(s) controlling the copyright in some of this
material may not have granted the IETF Trust the right to allow
modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other
than English.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1. Conventions . . . . . . . . . . . . . . . . . . . . . . . 7 1.1. Conventions . . . . . . . . . . . . . . . . . . . . . . . 7
2. The Transport Layer Security Protocol . . . . . . . . . . . . 8 2. The Transport Layer Security Protocol . . . . . . . . . . . . 8
2.1. SNMP requirements of (D)TLS . . . . . . . . . . . . . . . 8 2.1. SNMP requirements of (D)TLS . . . . . . . . . . . . . . . 8
3. How the TLSTM fits into the Transport Subsystem . . . . . . . 8 3. How the TLSTM fits into the Transport Subsystem . . . . . . . 9
3.1. Security Capabilities of this Model . . . . . . . . . . . 10 3.1. Security Capabilities of this Model . . . . . . . . . . . 10
3.1.1. Threats . . . . . . . . . . . . . . . . . . . . . . . 10 3.1.1. Threats . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.2. Message Protection . . . . . . . . . . . . . . . . . . 12 3.1.2. Message Protection . . . . . . . . . . . . . . . . . . 12
3.1.3. (D)TLS Sessions . . . . . . . . . . . . . . . . . . . 13 3.1.3. (D)TLS Sessions . . . . . . . . . . . . . . . . . . . 13
3.2. Security Parameter Passing . . . . . . . . . . . . . . . . 13 3.2. Security Parameter Passing . . . . . . . . . . . . . . . . 13
3.3. Notifications and Proxy . . . . . . . . . . . . . . . . . 14 3.3. Notifications and Proxy . . . . . . . . . . . . . . . . . 14
4. Elements of the Model . . . . . . . . . . . . . . . . . . . . 14 4. Elements of the Model . . . . . . . . . . . . . . . . . . . . 14
4.1. X.509 Certificates . . . . . . . . . . . . . . . . . . . . 15 4.1. X.509 Certificates . . . . . . . . . . . . . . . . . . . . 15
4.1.1. Provisioning for the Certificate . . . . . . . . . . . 15 4.1.1. Provisioning for the Certificate . . . . . . . . . . . 15
4.2. Messages . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.2. Messages . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3. SNMP Services . . . . . . . . . . . . . . . . . . . . . . 16 4.3. SNMP Services . . . . . . . . . . . . . . . . . . . . . . 16
4.3.1. SNMP Services for an Outgoing Message . . . . . . . . 16 4.3.1. SNMP Services for an Outgoing Message . . . . . . . . 17
4.3.2. SNMP Services for an Incoming Message . . . . . . . . 17 4.3.2. SNMP Services for an Incoming Message . . . . . . . . 17
4.4. (D)TLS Services . . . . . . . . . . . . . . . . . . . . . 18 4.4. Cached Information and References . . . . . . . . . . . . 18
4.4.1. Services for Establishing a Session . . . . . . . . . 18 4.4.1. TLS Transport Model Cached Information . . . . . . . . 18
4.4.2. (D)TLS Services for an Incoming Message . . . . . . . 19 5. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 19
4.4.3. (D)TLS Services for an Outgoing Message . . . . . . . 20 5.1. Procedures for an Incoming Message . . . . . . . . . . . . 19
4.5. Cached Information and References . . . . . . . . . . . . 21 5.1.1. DTLS Processing for Incoming Messages . . . . . . . . 19
4.5.1. TLS Transport Model Cached Information . . . . . . . . 21 5.1.2. Transport Processing for Incoming SNMP Messages . . . 21
5. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 21 5.2. Procedures for an Outgoing SNMP Message . . . . . . . . . 22
5.1. Procedures for an Incoming Message . . . . . . . . . . . . 22 5.3. Establishing a Session . . . . . . . . . . . . . . . . . . 23
5.1.1. DTLS Processing for Incoming Messages . . . . . . . . 22 5.4. Closing a Session . . . . . . . . . . . . . . . . . . . . 26
5.1.2. Transport Processing for Incoming Messages . . . . . . 23 6. MIB Module Overview . . . . . . . . . . . . . . . . . . . . . 26
5.2. Procedures for an Outgoing Message . . . . . . . . . . . . 25 6.1. Structure of the MIB Module . . . . . . . . . . . . . . . 26
5.3. Establishing a Session . . . . . . . . . . . . . . . . . . 26 6.2. Textual Conventions . . . . . . . . . . . . . . . . . . . 27
5.4. Closing a Session . . . . . . . . . . . . . . . . . . . . 28 6.3. Statistical Counters . . . . . . . . . . . . . . . . . . . 27
6. MIB Module Overview . . . . . . . . . . . . . . . . . . . . . 29 6.4. Configuration Tables . . . . . . . . . . . . . . . . . . . 27
6.1. Structure of the MIB Module . . . . . . . . . . . . . . . 29 6.4.1. Notifications . . . . . . . . . . . . . . . . . . . . 27
6.2. Textual Conventions . . . . . . . . . . . . . . . . . . . 29 6.5. Relationship to Other MIB Modules . . . . . . . . . . . . 27
6.3. Statistical Counters . . . . . . . . . . . . . . . . . . . 29 6.5.1. MIB Modules Required for IMPORTS . . . . . . . . . . . 28
6.4. Configuration Tables . . . . . . . . . . . . . . . . . . . 29 7. MIB Module Definition . . . . . . . . . . . . . . . . . . . . 28
6.4.1. Notifications . . . . . . . . . . . . . . . . . . . . 30 8. Operational Considerations . . . . . . . . . . . . . . . . . . 50
6.5. Relationship to Other MIB Modules . . . . . . . . . . . . 30 8.1. Sessions . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.5.1. MIB Modules Required for IMPORTS . . . . . . . . . . . 30 8.2. Notification Receiver Credential Selection . . . . . . . . 50
7. MIB Module Definition . . . . . . . . . . . . . . . . . . . . 30 8.3. contextEngineID Discovery . . . . . . . . . . . . . . . . 51
8. Operational Considerations . . . . . . . . . . . . . . . . . . 53 8.4. Transport Considerations . . . . . . . . . . . . . . . . . 51
8.1. Sessions . . . . . . . . . . . . . . . . . . . . . . . . . 53 9. Security Considerations . . . . . . . . . . . . . . . . . . . 51
8.2. Notification Receiver Credential Selection . . . . . . . . 54 9.1. Certificates, Authentication, and Authorization . . . . . 52
8.3. contextEngineID Discovery . . . . . . . . . . . . . . . . 54 9.2. Use with SNMPv1/SNMPv2c Messages . . . . . . . . . . . . . 52
9. Security Considerations . . . . . . . . . . . . . . . . . . . 55 9.3. MIB Module Security . . . . . . . . . . . . . . . . . . . 53
9.1. Certificates, Authentication, and Authorization . . . . . 55 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54
9.2. Use with SNMPv1/SNMPv2c Messages . . . . . . . . . . . . . 56 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 56
9.3. MIB Module Security . . . . . . . . . . . . . . . . . . . 56 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 56
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 57 12.1. Normative References . . . . . . . . . . . . . . . . . . . 56
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 59 12.2. Informative References . . . . . . . . . . . . . . . . . . 57
12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Appendix A. (D)TLS Overview . . . . . . . . . . . . . . . . . . . 58
12.1. Normative References . . . . . . . . . . . . . . . . . . . 59 A.1. The (D)TLS Record Protocol . . . . . . . . . . . . . . . . 59
12.2. Informative References . . . . . . . . . . . . . . . . . . 61 A.2. The (D)TLS Handshake Protocol . . . . . . . . . . . . . . 59
Appendix A. (D)TLS Overview . . . . . . . . . . . . . . . . . . . 62 Appendix B. PKIX Certificate Infrastructure . . . . . . . . . . . 60
A.1. The (D)TLS Record Protocol . . . . . . . . . . . . . . . . 62 Appendix C. Target and Notificaton Configuration Example . . . . 61
A.2. The (D)TLS Handshake Protocol . . . . . . . . . . . . . . 62 C.1. Configuring the Notification Generator . . . . . . . . . . 62
Appendix B. PKIX Certificate Infrastructure . . . . . . . . . . . 63 C.2. Configuring the Command Responder . . . . . . . . . . . . 62
Appendix C. Target and Notificaton Configuration Example . . . . 64 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 63
C.1. Configuring the Notification Generator . . . . . . . . . . 65
C.2. Configuring the Command Responder . . . . . . . . . . . . 65
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 66
1. Introduction 1. Introduction
It is important to understand the modular SNMPv3 architecture as It is important to understand the modular SNMPv3 architecture as
defined by [RFC3411] and enhanced by the Transport Subsystem defined by [RFC3411] and enhanced by the Transport Subsystem
[RFC5590]. It is also important to understand the terminology of the [RFC5590]. It is also important to understand the terminology of the
SNMPv3 architecture in order to understand where the Transport Model SNMPv3 architecture in order to understand where the Transport Model
described in this document fits into the architecture and how it described in this document fits into the architecture and how it
interacts with the other architecture subsystems. For a detailed interacts with the other architecture subsystems. For a detailed
overview of the documents that describe the current Internet-Standard overview of the documents that describe the current Internet-Standard
Management Framework, please refer to Section 7 of [RFC3410]. Management Framework, please refer to Section 7 of [RFC3410].
This document describes a Transport Model that makes use of the This document describes a Transport Model that makes use of the
Transport Layer Security (TLS) [RFC5246] and the Datagram Transport Transport Layer Security (TLS) [RFC5246] and the Datagram Transport
Layer Security (DTLS) Protocol [RFC4347], within a transport Layer Security (DTLS) Protocol [RFC4347], within a transport
subsystem [RFC5590]. DTLS is the datagram variant of the Transport subsystem [RFC5590]. DTLS is the datagram variant of the Transport
Layer Security (TLS) protocol [RFC5246]. The Transport Model in this Layer Security (TLS) protocol [RFC5246]. The Transport Model in this
document is referred to as the Transport Layer Security Transport document is referred to as the Transport Layer Security Transport
Model (TLSTM). TLS and DTLS take advantage of the X.509 public Model (TLSTM). TLS and DTLS take advantage of the X.509 public
keying infrastructure [RFC5280]. This transport model is designed to keying infrastructure [RFC5280]. While (D)TLS supports multiple
meet the security and operational needs of network administrators, authentication mechanisms, this document only discusses X.509
operate in both environments where a connectionless (e.g. UDP or certificate based authentication. Although other forms of
SCTP) transport is preferred and in environments where large authentication are possible they are outside the scope of this
quantities of data need to be sent (e.g. over a TCP based stream). specification. This transport model is designed to meet the security
Both TLS and DTLS integrate well into existing public keying and operational needs of network administrators, operating in both
infrastructures. environments where a connectionless (e.g. UDP or SCTP) transport is
preferred and in environments where large quantities of data need to
be sent (e.g. over a TCP based stream). Both TLS and DTLS integrate
well into existing public keying infrastructures. This document
defines supports sending of SNMP messages over TLS/TCP, DTLS/UDP and
DTLS/SCTP.
This document also defines a portion of the Management Information This document also defines a portion of the Management Information
Base (MIB) for use with network management protocols. In particular Base (MIB) for use with network management protocols. In particular
it defines objects for managing the TLS Transport Model for SNMP. it defines objects for managing the TLS Transport Model for SNMP.
For a detailed overview of the documents that describe the current For a detailed overview of the documents that describe the current
Internet-Standard Management Framework, please refer to section 7 of Internet-Standard Management Framework, please refer to section 7 of
RFC [RFC3410]. RFC [RFC3410].
Managed objects are accessed via a virtual information store, termed Managed objects are accessed via a virtual information store, termed
skipping to change at page 6, line 4 skipping to change at page 6, line 9
Structure of Management Information (SMI). This memo specifies a MIB Structure of Management Information (SMI). This memo specifies a MIB
module that is compliant to the SMIv2, which is described in STD 58: module that is compliant to the SMIv2, which is described in STD 58:
[RFC2578], [RFC2579] and [RFC2580]. [RFC2578], [RFC2579] and [RFC2580].
The diagram shown below gives a conceptual overview of two SNMP The diagram shown below gives a conceptual overview of two SNMP
entities communicating using the TLS Transport Model. One entity entities communicating using the TLS Transport Model. One entity
contains a Command Responder and Notification Originator application, contains a Command Responder and Notification Originator application,
and the other a Command Generator and Notification Responder and the other a Command Generator and Notification Responder
application. It should be understood that this particular mix of application. It should be understood that this particular mix of
application types is an example only and other combinations are application types is an example only and other combinations are
equally as legitimate. equally valid.
+----------------------------------------------------------------+ +----------------------------------------------------------------+
| Network | | Network |
+----------------------------------------------------------------+ +----------------------------------------------------------------+
^ | ^ | ^ | ^ |
|Notifications |Commands |Commands |Notifications |Notifications |Commands |Commands |Notifications
+---|---------------------|--------+ +--|---------------|-------------+ +---|---------------------|--------+ +--|---------------|-------------+
| | V | | | V | | | V | | | V |
| +------------+ +------------+ | | +-----------+ +----------+ | | +------------+ +------------+ | | +-----------+ +----------+ |
| | (D)TLS | | (D)TLS | | | | (D)TLS | | (D)TLS | | | | (D)TLS | | (D)TLS | | | | (D)TLS | | (D)TLS | |
skipping to change at page 8, line 12 skipping to change at page 8, line 18
memo is "principal". A principal is the "who" on whose behalf memo is "principal". A principal is the "who" on whose behalf
services are provided or processing takes place. A principal can be, services are provided or processing takes place. A principal can be,
among other things, an individual acting in a particular role; a set among other things, an individual acting in a particular role; a set
of individuals, with each acting in a particular role; an application of individuals, with each acting in a particular role; an application
or a set of applications, or a combination of these within an or a set of applications, or a combination of these within an
administrative domain. administrative domain.
Throughout this document, the term "session" is used to refer to a Throughout this document, the term "session" is used to refer to a
secure association between two TLS Transport Models that permits the secure association between two TLS Transport Models that permits the
transmission of one or more SNMP messages within the lifetime of the transmission of one or more SNMP messages within the lifetime of the
session. session. The (D)TLS protocols also have an internal notion of a
session and although these two concepts of a session are related,
this document (unless otherwise specified) is referring to TLSTM's
specific session and not directly to the (D)TLS protocol's session.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
2. The Transport Layer Security Protocol 2. The Transport Layer Security Protocol
(D)TLS provides authentication, data message integrity, and privacy (D)TLS provides authentication, data message integrity, and privacy
at the transport layer. (See [RFC4347]) at the transport layer. (See [RFC4347])
skipping to change at page 8, line 35 skipping to change at page 8, line 44
SNMP entities. The TLS and DTLS protocols provide a secure transport SNMP entities. The TLS and DTLS protocols provide a secure transport
upon which the TLSTM is based. An overview of (D)TLS can be found in upon which the TLSTM is based. An overview of (D)TLS can be found in
section Appendix A. Please refer to [RFC5246] and [RFC4347] for section Appendix A. Please refer to [RFC5246] and [RFC4347] for
complete descriptions of the protocols. complete descriptions of the protocols.
2.1. SNMP requirements of (D)TLS 2.1. SNMP requirements of (D)TLS
To properly support the SNMP over TLS Transport Model, the (D)TLS To properly support the SNMP over TLS Transport Model, the (D)TLS
implementation requires the following: implementation requires the following:
o The TLS Transport Model SHOULD always use authentication of both o The TLS Transport Model MUST support authentication of both the
the server and the client. server and the client.
o At a minimum the TLS Transport Model MUST support authentication
of the Command Generator, Notification Originator and Proxy
Forwarder principals to guarantee the authenticity of the
securityName.
o The TLS Transport Model SHOULD support the message encryption to o The TLS Transport Model SHOULD support the message encryption to
protect sensitive data from eavesdropping attacks. protect sensitive data from eavesdropping attacks.
3. How the TLSTM fits into the Transport Subsystem 3. How the TLSTM fits into the Transport Subsystem
A transport model is a component of the Transport Subsystem. The TLS A transport model is a component of the Transport Subsystem. The TLS
Transport Model thus fits between the underlying (D)TLS transport Transport Model thus fits between the underlying (D)TLS transport
layer and the message dispatcher [RFC3411] component of the SNMP layer and the message dispatcher [RFC3411] component of the SNMP
engine and the Transport Subsystem. engine and the Transport Subsystem.
skipping to change at page 10, line 39 skipping to change at page 10, line 43
+-------------------------------------------------------------------+ +-------------------------------------------------------------------+
3.1. Security Capabilities of this Model 3.1. Security Capabilities of this Model
3.1.1. Threats 3.1.1. Threats
The TLS Transport Model provides protection against the threats The TLS Transport Model provides protection against the threats
identified by the RFC 3411 architecture [RFC3411]: identified by the RFC 3411 architecture [RFC3411]:
1. Modification of Information - The modification threat is the 1. Modification of Information - The modification threat is the
danger that some unauthorized entity may alter in-transit SNMP danger that an unauthorized entity may alter in-transit SNMP
messages generated on behalf of an authorized principal in such a messages generated on behalf of an authorized principal in such a
way as to effect unauthorized management operations, including way as to effect unauthorized management operations, including
falsifying the value of an object. falsifying the value of an object.
(D)TLS provides verification that the content of each received (D)TLS provides verification that the content of each received
message has not been modified during its transmission through the message has not been modified during its transmission through the
network, data has not been altered or destroyed in an network, data has not been altered or destroyed in an
unauthorized manner, and data sequences have not been altered to unauthorized manner, and data sequences have not been altered to
an extent greater than can occur non-maliciously. an extent greater than can occur non-maliciously.
skipping to change at page 11, line 35 skipping to change at page 11, line 36
unauthorized management operations. unauthorized management operations.
(D)TLS provides replay protection with a MAC that includes a (D)TLS provides replay protection with a MAC that includes a
sequence number. Since UDP provides no sequencing ability DTLS sequence number. Since UDP provides no sequencing ability DTLS
uses a sliding window protocol with the sequence number for uses a sliding window protocol with the sequence number for
replay protection (see [RFC4347]). replay protection (see [RFC4347]).
4. Disclosure - The disclosure threat is the danger of eavesdropping 4. Disclosure - The disclosure threat is the danger of eavesdropping
on the exchanges between SNMP engines. on the exchanges between SNMP engines.
Symmetric cryptography (e.g., [AES], [DES] etc.) can be used by The TLS and DTLS protocols provide support for data privacy
(D)TLS for data privacy. The keys for this symmetric encryption through TLS cipher suites that provide encryption.
are generated uniquely for each session and are based on a secret
negotiated by another protocol (such as the (D)TLS Handshake
Protocol).
5. Denial of Service - the RFC 3411 architecture [RFC3411] states 5. Denial of Service - the RFC 3411 architecture [RFC3411] states
that denial of service (DoS) attacks need not be addressed by an that denial of service (DoS) attacks need not be addressed by an
SNMP security protocol. However, datagram-based security SNMP security protocol. However, datagram-based security
protocols like DTLS are susceptible to a variety of denial of protocols like DTLS are susceptible to a variety of denial of
service attacks because it is more vulnerable to spoofed service attacks because it is more vulnerable to spoofed
messages. messages.
In order to counter these attacks, DTLS borrows the stateless In order to counter these attacks, DTLS borrows the stateless
cookie technique used by Photuris [RFC2522] and IKEv2 [RFC4306] cookie technique used by Photuris [RFC2522] and IKEv2 [RFC4306]
and is described fully in section 4.2.1 of [RFC4347]. This and is described fully in section 4.2.1 of [RFC4347]. This
mechanism, though, does not provide any defense against denial of mechanism, though, does not provide any defense against denial of
service attacks mounted from valid IP addresses. DTLS Transport service attacks mounted from valid IP addresses. DTLS Transport
Model server implementations MUST support DTLS cookies. Model server implementations MUST support DTLS cookies.
Implementations are not required to perform the stateless cookie Implementations are not required to perform the stateless cookie
exchange for every DTLS handshakes but in environments where exchange for every DTLS handshake, but in environments where an
amplification could be an issue or has been detected it is overload on server side resources is detectable it is RECOMMENDED
RECOMMENDED that the cookie exchange is utilized. that the cookie exchange is utilized.
See Section 9 for more detail on the security considerations See Section 9 for more detail on the security considerations
associated with the DTLSTM and these security threats. associated with the DTLSTM and these security threats.
3.1.2. Message Protection 3.1.2. Message Protection
The RFC 3411 architecture recognizes three levels of security: The RFC 3411 architecture recognizes three levels of security:
o without authentication and without privacy (noAuthNoPriv) o without authentication and without privacy (noAuthNoPriv)
skipping to change at page 13, line 23 skipping to change at page 13, line 21
Implementations MAY choose to instantiate (D)TLS sessions in Implementations MAY choose to instantiate (D)TLS sessions in
anticipation of outgoing messages. This approach might be useful to anticipation of outgoing messages. This approach might be useful to
ensure that a (D)TLS session to a given target can be established ensure that a (D)TLS session to a given target can be established
before it becomes important to send a message over the (D)TLS before it becomes important to send a message over the (D)TLS
session. Of course, there is no guarantee that a pre-established session. Of course, there is no guarantee that a pre-established
session will still be valid when needed. session will still be valid when needed.
DTLS sessions, when used over UDP, are uniquely identified within the DTLS sessions, when used over UDP, are uniquely identified within the
TLS Transport Model by the combination of transportDomain, TLS Transport Model by the combination of transportDomain,
transportAddress, securityName, and requestedSecurityLevel associated transportAddress, tmSecurityName, and requestedSecurityLevel
with each session. Each unique combination of these parameters MUST associated with each session. Each unique combination of these
have a locally-chosen unique tlsSessionID associated for active parameters MUST have a locally-chosen unique tlsSnmpSessionID
sessions. For further information see Section 4.4 and Section 5. associated for active sessions. For further information see
TLS and DTLS over SCTP sessions, on the other hand, do not require a Section 5. TLS and DTLS over SCTP sessions, on the other hand, do
unique pairing of attributes since their lower layer protocols (TCP not require a unique pairing of address and port attributes since
and SCTP) already provide adequate session framing. their lower layer protocols (TCP and SCTP) already provide adequate
session framing. But they must still provide a unique
tlsSnmpSessionID for referencing the session.
The tlsSnmpSessionID MAY be the same as the (D)TLS internal SessionID
but caution must be exercised since the (D)TLS internal SessionID may
change over the life of the connection as seen by the TLSTM (for
example during renegotiation). The tlsSnmpSessionID identifier MUST
NOT change during the entire duration of the connection from the
TLSTM's perspective.
3.2. Security Parameter Passing 3.2. Security Parameter Passing
For the (D)TLS server-side, (D)TLS-specific security parameters For the (D)TLS server-side, (D)TLS-specific security parameters
(i.e., cipher_suites, X.509 certificate fields, IP address and port) (i.e., cipher_suites, X.509 certificate fields, IP address and port)
are translated by the TLS Transport Model into security parameters are translated by the TLS Transport Model into security parameters
for the TLS Transport Model and security model (i.e., securityLevel, for the TLS Transport Model and security model (i.e., securityLevel,
securityName, transportDomain, transportAddress). The transport- tmSecurityName, transportDomain, transportAddress). The transport-
related and (D)TLS-security-related information, including the related and (D)TLS-security-related information, including the
authenticated identity, are stored in a cache referenced by authenticated identity, are stored in a cache referenced by
tmStateReference. tmStateReference.
For the (D)TLS client-side, the TLS Transport Model takes input For the (D)TLS client-side, the TLS Transport Model takes input
provided by the dispatcher in the sendMessage() Abstract Service provided by the dispatcher in the sendMessage() Abstract Service
Interface (ASI) and input from the tmStateReference cache. The Interface (ASI) and input from the tmStateReference cache. The
(D)TLS Transport Model converts that information into suitable (D)TLS Transport Model converts that information into suitable
security parameters for (D)TLS and establishes sessions as needed. security parameters for (D)TLS and establishes sessions as needed.
skipping to change at page 14, line 28 skipping to change at page 14, line 32
Notification Generator, Proxy Forwarder, and SNMP-controllable Notification Generator, Proxy Forwarder, and SNMP-controllable
Command Generator applications. Transport domains and transport Command Generator applications. Transport domains and transport
addresses are configured in the snmpTargetAddrTable, and the addresses are configured in the snmpTargetAddrTable, and the
securityModel, securityName, and securityLevel parameters are securityModel, securityName, and securityLevel parameters are
configured in the snmpTargetParamsTable. This document defines a MIB configured in the snmpTargetParamsTable. This document defines a MIB
module that extends the SNMP-TARGET-MIB's snmpTargetParamsTable to module that extends the SNMP-TARGET-MIB's snmpTargetParamsTable to
specify a (D)TLS client-side certificate to use for the connection. specify a (D)TLS client-side certificate to use for the connection.
When configuring a (D)TLS target, the snmpTargetAddrTDomain and When configuring a (D)TLS target, the snmpTargetAddrTDomain and
snmpTargetAddrTAddress parameters in snmpTargetAddrTable should be snmpTargetAddrTAddress parameters in snmpTargetAddrTable should be
set to the snmpTLSDomain, snmpDTLSUDPDomain, or snmpDTLSSCTPDomain set to the snmpTLSTCPDomain, snmpDTLSUDPDomain, or snmpDTLSSCTPDomain
object and an appropriate snmpTLSAddress, snmpDTLSUDPAddress or object and an appropriate snmpTLSAddress value. The
snmpDTLSSCTPAddress value respectively. The snmpTargetParamsMPModel snmpTargetParamsMPModel column of the snmpTargetParamsTable should be
column of the snmpTargetParamsTable should be set to a value of 3 to set to a value of 3 to indicate the SNMPv3 message processing model.
indicate the SNMPv3 message processing model. The The snmpTargetParamsSecurityName should be set to an appropriate
snmpTargetParamsSecurityName should be set to an appropriate
securityName value and the tlstmParamsClientFingerprint parameter of securityName value and the tlstmParamsClientFingerprint parameter of
the tlstmParamsTable should be set a value that refers to a locally the tlstmParamsTable should be set a value that refers to a locally
held certificate to be used. The tlstmAddrServerFingerprint must be held certificate to be used. Other parameters, for example
set to a hash value that refers to a locally held copy of the cryptographic configuration such as cipher suites to use, must come
server's presented identity certificate. Other parameters, for from configuration mechanisms not defined in this document. The
example cryptographic configuration such as cipher suites to use, securityName defined in the snmpTargetParamsSecurityName column will
must come from configuration mechanisms not defined in this document. be used by the access control model to authorize any notifications
The securityName defined in the snmpTargetParamsSecurityName column that need to be sent.
will be used by the access control model to authorize any
notifications that need to be sent.
4. Elements of the Model 4. Elements of the Model
This section contains definitions required to realize the (D)TLS This section contains definitions required to realize the (D)TLS
Transport Model defined by this document. Transport Model defined by this document.
4.1. X.509 Certificates 4.1. X.509 Certificates
(D)TLS makes use of X.509 certificates for authentication of both (D)TLS makes use of X.509 certificates for authentication of both
sides of the transport. This section discusses the use of sides of the transport. This section discusses the use of
certificates in the TLSTM. A brief overview of X.509 certificate certificates in the TLSTM. A brief overview of X.509 certificate
infrastructure can be found in Appendix B. infrastructure can be found in Appendix B.
While (D)TLS supports multiple authentication mechanisms, this
document only discusses X.509 certificate based authentication.
Although other forms of authentication are possible they are outside
the scope of this specification.
4.1.1. Provisioning for the Certificate 4.1.1. Provisioning for the Certificate
Authentication using (D)TLS will require that SNMP entities are Authentication using (D)TLS will require that SNMP entities are
provisioned with certificates, which are signed by trusted provisioned with certificates, which are signed by trusted
certificate authorities. Furthermore, SNMP entities will most certificate authorities. Furthermore, SNMP entities will most
commonly need to be provisioned with root certificates which commonly need to be provisioned with root certificates which
represent the list of trusted certificate authorities that an SNMP represent the list of trusted certificate authorities that an SNMP
entity can use for certificate verification. SNMP entities SHOULD entity can use for certificate verification. SNMP entities SHOULD
also be provisioned with a X.509 certificate revocation mechanism also be provisioned with a X.509 certificate revocation mechanism
which can be used to verify that a certificate has not been revoked. which can be used to verify that a certificate has not been revoked.
The certificate trust anchors, being either CA certificates or public Trusted public keys from either CA certificates and/or self-signed
keys for use by self-signed certificates, must be installed through certificates, must be installed through a trusted out of band
an out of band trusted mechanism into the server and its authenticity mechanism into the server and its authenticity MUST be verified
MUST be verified before access is granted. before access is granted.
Having received a certificate, the authenticated tmSecurityName of Having received a certificate from a connecting TLSTM client, the
the principal is looked up using the tlstmCertToSNTable. This table authenticated tmSecurityName of the principal is derived up using the
either: tlstmCertToTSNTable. This table allows mapping of incoming
connections to tmSecurityNames through defined transformations. The
transformations defined in the TLSTM-MIB include:
o Maps a certificate's fingerprint type and value to a directly o Mapping a certificate's fingerprint type and value to a directly
specified tmSecurityName, or specified tmSecurityName, or
o Identifies a certificate issuer's fingerprint and allows a child o Mapping a certificate's subjectAltName or CommonName components to
certificate's subjectAltName or CommonName to be mapped to the a tmSecurityName.
tmSecurityNome.
Implementations MAY choose to discard any connections for which no Implementations MAY choose to discard any connections for which no
potential tlstmCertToSNTable mapping exists before performing potential tlstmCertToTSNTable mapping exists before performing
certificate verification to avoid expending computational resources certificate verification to avoid expending computational resources
associated with certificate verification. associated with certificate verification.
The typical enterprise configuration will map a "subjectAltName" The typical enterprise configuration will map a "subjectAltName"
component of the tbsCertificate to the TLSTM specific tmSecurityName. component of the tbsCertificate to the TLSTM specific tmSecurityName.
The authenticated identity can be obtained by the TLS Transport Model The authenticated identity can be obtained by the TLS Transport Model
by extracting the subjectAltName(s) from the peer's certificate. The by extracting the subjectAltName(s) from the peer's certificate. The
receiving application will then have an appropriate tmSecurityName receiving application will then have an appropriate tmSecurityName
for use by other SNMPv3 components like an access control model. for use by other SNMPv3 components like an access control model.
An example of this type of mapping setup can be found in Appendix C An example of this type of mapping setup can be found in Appendix C.
This tmSecurityName may be later translated from a TLSTM specific This tmSecurityName may be later translated from a TLSTM specific
tmSecurityName to a SNMP engine securityName by the security model. tmSecurityName to a SNMP engine securityName by the security model.
A security model, like the TSM security model [RFC5591], may perform A security model, like the TSM security model [RFC5591], may perform
an identity mapping or a more complex mapping to derive the an identity mapping or a more complex mapping to derive the
securityName from the tmSecurityName offered by the TLS Transport securityName from the tmSecurityName offered by the TLS Transport
Model. Model.
A pictorial view of the complete transformation process (using the
TSM security model for the example) is shown below:
+-------------+ +-------+ +----------------+ +-----+
| Certificate | | | | | | |
| Path | | TLSTM | | tmSecurityName | | TSM |
| Validation | --> | | --> | | --> | |
+-------------+ +-------+ +----------------+ +-----+
|
V
+-------------+ +--------------+
| application | <-- | securityName |
+-------------+ +--------------+
4.2. Messages 4.2. Messages
As stated in Section 4.1.1 of [RFC4347], each DTLS record must fit As stated in Section 4.1.1 of [RFC4347], each DTLS record must fit
within a single DTLS datagram. The TLSTM SHOULD prohibit SNMP within a single DTLS datagram. The TLSTM SHOULD prohibit SNMP
messages from being sent that exceeds the maximum DTLS message size. messages from being sent that exceeds the maximum DTLS message size.
The TLSTM implementation SHOULD return an error when the DTLS message The TLSTM implementation SHOULD return an error when the DTLS message
size would be exceeded and the message won't be sent. size would be exceeded and the message won't be sent.
4.3. SNMP Services 4.3. SNMP Services
This section describes the services provided by the (D)TLS Transport This section describes the services provided by the TLS Transport
Model with their inputs and outputs. The services are between the Model with their inputs and outputs. The services are between the
Transport Model and the dispatcher. Transport Model and the dispatcher.
The services are described as primitives of an abstract service The services are described as primitives of an abstract service
interface (ASI) and the inputs and outputs are described as abstract interface (ASI) and the inputs and outputs are described as abstract
data elements as they are passed in these abstract service data elements as they are passed in these abstract service
primitives. primitives.
4.3.1. SNMP Services for an Outgoing Message 4.3.1. SNMP Services for an Outgoing Message
skipping to change at page 17, line 10 skipping to change at page 17, line 31
statusInformation: An indication of whether the passing of the statusInformation: An indication of whether the passing of the
message was successful. If not, it is an indication of the message was successful. If not, it is an indication of the
problem. problem.
destTransportDomain: The transport domain for the associated destTransportDomain: The transport domain for the associated
destTransportAddress. The Transport Model uses this parameter to destTransportAddress. The Transport Model uses this parameter to
determine the transport type of the associated determine the transport type of the associated
destTransportAddress. This parameter may also be used by the destTransportAddress. This parameter may also be used by the
transport subsystem to route the message to the appropriate transport subsystem to route the message to the appropriate
Transport Model. This document specifies three TLS and DTLS based Transport Model. This document specifies the snmpTLSDomain, the
Transport Domains for use: the snmpTLSDomain, the snmpDTLSUDPDomain and the snmpDTLSSCTPDomain" transport domains.
snmpDTLSUDPDomain and the snmpDTLSSCTPDomain.
destTransportAddress: The transport address of the destination TLS destTransportAddress: The transport address of the destination TLS
Transport Model in a format specified by the SnmpTLSAddress, the Transport Model in a format specified by the SnmpTLSAddress
SnmpDTLSUDPAddress or the SnmpDTLSSCTPAddress TEXTUAL-CONVENTIONs. TEXTUAL-CONVENTION.
outgoingMessage: The outgoing message to send to (D)TLS for outgoingMessage: The outgoing message to send to (D)TLS for
encapsulation. encapsulation.
outgoingMessageLength: The length of the outgoingMessage field. outgoingMessageLength: The length of the outgoingMessage field.
tmStateReference: A handle/reference to tmSecurityData to be used tmStateReference: A handle/reference to tmSecurityData to be used
when securing outgoing messages. when securing outgoing messages.
4.3.2. SNMP Services for an Incoming Message 4.3.2. SNMP Services for an Incoming Message
skipping to change at page 17, line 49 skipping to change at page 18, line 22
) )
The abstract data elements returned from or passed as parameters into The abstract data elements returned from or passed as parameters into
the abstract service primitives are as follows: the abstract service primitives are as follows:
statusInformation: An indication of whether the passing of the statusInformation: An indication of whether the passing of the
message was successful. If not, it is an indication of the message was successful. If not, it is an indication of the
problem. problem.
transportDomain: The transport domain for the associated transportDomain: The transport domain for the associated
transportAddress. This document specifies three TLS and DTLS transportAddress. This document specifies the snmpTLSDomain, the
based Transport Domains for use: the snmpTLSDomain, the snmpDTLSUDPDomain and the snmpDTLSSCTPDomain" transport domains.
snmpDTLSUDPDomain and the snmpDTLSSCTPDomain.
transportAddress: The transport address of the source of the transportAddress: The transport address of the source of the
received message in a format specified by the SnmpTLSAddress, the received message in a format specified by the SnmpTLSAddress
SnmpDTLSUDPAddress or the SnmpDTLSSCTPAddress TEXTUAL-CONVENTION. TEXTUAL-CONVENTION.
incomingMessage: The whole SNMP message after being processed by incomingMessage: The whole SNMP message after being processed by
(D)TLS and removed of the (D)TLS transport layer data. (D)TLS and removed of the (D)TLS transport layer data.
incomingMessageLength: The length of the incomingMessage field. incomingMessageLength: The length of the incomingMessage field.
tmStateReference: A handle/reference to tmSecurityData to be used by tmStateReference: A handle/reference to tmSecurityData to be used by
the security model. the security model.
4.4. (D)TLS Services 4.4. Cached Information and References
This section describes the services provided by the (D)TLS Transport
Model with their inputs and outputs. These services are between the
TLS Transport Model and the (D)TLS transport layer. The following
sections describe services for establishing and closing a session and
for passing messages between the (D)TLS transport layer and the TLS
Transport Model.
4.4.1. Services for Establishing a Session
The TLS Transport Model provides the following ASI to describe the
data passed between the Transport Model and the (D)TLS transport
layer for session establishment.
statusInformation = -- errorIndication or success
openSession(
IN destTransportDomain -- transport domain to be used
IN destTransportAddress -- transport address to be used
IN securityName -- on behalf of this principal
IN securityLevel -- Level of Security requested
OUT tlsSessionID -- Session identifier for (D)TLS
)
The abstract data elements returned from or passed as parameters into
the abstract service primitives are as follows:
statusInformation: An indication of whether the process was
successful or not. If not, then the status information will
include the error indication provided by (D)TLS.
destTransportDomain: The transport domain for the associated
destTransportAddress. The TLS Transport Model uses this parameter
to determine the transport type of the associated
destTransportAddress. This document specifies three TLS and DTLS
based Transport Domains for use: the snmpTLSDomain, the
snmpDTLSUDPDomain, and the snmpDTLSSCTPDomain.
destTransportAddress: The transport address of the destination TLS
Transport Model in a format specified by the SnmpTLSAddress, the
SnmpDTLSUDPAddress or the SnmpDTLSSCTPAddress TEXTUAL-CONVENTION.
securityName: The security name representing the principal on whose
behalf the message will be sent.
securityLevel: The level of security requested by the application.
tlsSessionID: An implementation-dependent session identifier to
reference the specific (D)TLS session.
Neither DTLS or UDP provides a session de-multiplexing mechanism and
it is possible that implementations will only be able to identify a
unique session based on a unique combination of source address,
destination address, source UDP port number and destination UDP port
number. Because of this, when establishing a new sessions
implementations MUST use a different UDP source port number for each
connection to a given remote destination IP-address/port-number
combination to ensure the remote entity can properly disambiguate
between multiple sessions from a host to the same port on a server.
TLS and DTLS over SCTP provide session de-multiplexing so this
restriction is not needed for TLS or DTLS over SCTP implementations.
The procedural details for establishing a session are further
described in Section 5.3.
Upon completion of the process the TLS Transport Model returns status
information and, if the process was successful the tlsSessionID for
the session. Other implementation-dependent data from (D)TLS may
also be returned. The tlsSessionID is formatted and stored in an
implementation-dependent manner. It is tied to the tmSecurityData
for future use of this session and must remain constant and unique
while the session is open.
4.4.2. (D)TLS Services for an Incoming Message
When the TLS Transport Model invokes the (D)TLS record layer to
verify proper security for the incoming message, it must use the
following ASI:
statusInformation = -- errorIndication or success
tlsRead(
IN tlsSessionID -- Session identifier for (D)TLS
IN wholeTlsMsg -- as received on the wire
IN wholeTlsMsgLength -- length as received on the wire
OUT incomingMessage -- the whole SNMP message from (D)TLS
OUT incomingMessageLength -- the length of the SNMP message
)
The abstract data elements returned from or passed as parameters into
the abstract service primitives are as follows:
statusInformation: An indication of whether the process was
successful or not. If not, then the status information will
include the error indication provided by (D)TLS.
tlsSessionID: An implementation-dependent session identifier to
reference the specific (D)TLS session. How the (D)TLS session ID
is obtained for each message is implementation-dependent. As an
implementation hint for DTLS over UDP, the TLS Transport Model
might examine incoming messages to determine the source IP
address, source port number, destination IP address, and
destination port number and use these values to look up the local
tlsSessionID in the list of active sessions.
wholeDtlsMsg: The whole message as received on the wire.
wholeDtlsMsgLength: The length of the wholeDtlsMsg field.
incomingMessage: The whole SNMP message after being processed by
(D)TLS and removed of the (D)TLS transport layer data.
incomingMessageLength: The length of the incomingMessage field.
4.4.3. (D)TLS Services for an Outgoing Message
When the TLS Transport Model invokes the (D)TLS record layer to
encapsulate and transmit a SNMP message, it must use the following
ASI.
statusInformation = -- errorIndication or success
tlsWrite(
IN tlsSessionID -- Session identifier for (D)TLS
IN outgoingMessage -- the message to send
IN outgoingMessageLength -- its length
)
The abstract data elements returned from or passed as parameters into
the abstract service primitives are as follows:
statusInformation: An indication of whether the process was
successful or not. If not, then the status information will
include the error indication provided by (D)TLS.
tlsSessionID: An implementation-dependent session identifier to
reference the specific (D)TLS session that the message should be
sent using.
outgoingMessage: The outgoing message to send to (D)TLS for
encapsulation.
outgoingMessageLength: The length of the outgoingMessage field.
4.5. Cached Information and References
When performing SNMP processing, there are two levels of state When performing SNMP processing, there are two levels of state
information that may need to be retained: the immediate state linking information that may need to be retained: the immediate state linking
a request-response pair, and potentially longer-term state relating a request-response pair, and potentially longer-term state relating
to transport and security. "Transport Subsystem for the Simple to transport and security. "Transport Subsystem for the Simple
Network Management Protocol" [RFC5590] defines general requirements Network Management Protocol" [RFC5590] defines general requirements
for caches and references. for caches and references.
4.5.1. TLS Transport Model Cached Information 4.4.1. TLS Transport Model Cached Information
The TLSTM has no specific responsibilities regarding the cached The TLSTM has no specific responsibilities regarding the cached
information beyond those discussed in "Transport Subsystem for the information beyond those discussed in "Transport Subsystem for the
Simple Network Management Protocol" [RFC5590] Simple Network Management Protocol" [RFC5590].
5. Elements of Procedure 5. Elements of Procedure
Abstract service interfaces have been defined by [RFC3411] and Abstract service interfaces have been defined by [RFC3411] and
further augmented by [RFC5590] to describe the conceptual data flows further augmented by [RFC5590] to describe the conceptual data flows
between the various subsystems within an SNMP entity. The TLSTM uses between the various subsystems within an SNMP entity. The TLSTM uses
some of these conceptual data flows when communicating between some of these conceptual data flows when communicating between
subsystems. subsystems.
To simplify the elements of procedure, the release of state To simplify the elements of procedure, the release of state
skipping to change at page 22, line 36 skipping to change at page 20, line 4
5.1.1. DTLS Processing for Incoming Messages 5.1.1. DTLS Processing for Incoming Messages
DTLS is significantly different in terms of session handling than DTLS is significantly different in terms of session handling than
when TLS or DTLS is run over session based streaming protocols like when TLS or DTLS is run over session based streaming protocols like
TCP or SCTP. Specifically, the DTLS protocol, when run over UDP, TCP or SCTP. Specifically, the DTLS protocol, when run over UDP,
does not have a session identifier that allows implementations to does not have a session identifier that allows implementations to
determine through what session a packet arrived. DTLS over SCTP and determine through what session a packet arrived. DTLS over SCTP and
TLS over TCP streams have built in session demultiplexing and thus TLS over TCP streams have built in session demultiplexing and thus
the steps in this section are not necessary for those protocol the steps in this section are not necessary for those protocol
combinations. It is always critical, however, that implementations combinations. It is always critical, however, that implementations
be able to derive a tlsSessionID from any session demultiplexing be able to derive a tlsSnmpSessionID from any session demultiplexing
process. process.
A process for demultiplexing multiple DTLS sessions arriving over UDP A process for demultiplexing multiple DTLS sessions arriving over UDP
must be incorporated into the procedures for processing an incoming must be incorporated into the procedures for processing an incoming
message. The steps in this section describe one possible method to message. The steps in this section describe one possible method to
accomplish this, although any implementation dependent method should accomplish this, although any implementation-dependent method should
be suitable as long as the results are consistently deterministic. be suitable as long as the results are deterministic. The important
The important output results from the steps in this process are the output results from the steps in this process are the
transportDomain, the transportAddress, the wholeMessage, the transportDomain, the transportAddress, the wholeMessage, the
wholeMessageLength, and a unique implementation-dependent session wholeMessageLength, and a unique implementation-dependent session
identifier (tlsSessionID). identifier (tlsSnmpSessionID).
This demultiplexing procedure assumes that upon session establishment This demultiplexing procedure assumes that upon session establishment
an entry in a local transport mapping table is created in the an entry in a local transport mapping table is created in the
Transport Model's Local Configuration Datastore (LCD). The transport Transport Model's Local Configuration Datastore (LCD). The transport
mapping table's entry should map a unique combination of the remote mapping table's entry should map a unique combination of the remote
address, remote port number, local address and local port number to address, remote port number, local address and local port number to
an implementation-dependent tlsSessionID. an implementation-dependent tlsSnmpSessionID.
1) The TLS Transport Model examines the raw UDP message, in an 1) The TLS Transport Model examines the raw UDP message, in an
implementation-dependent manner. If the message is not a DTLS implementation-dependent manner.
message then it should be discarded. If the message is not a
(D)TLS Application Data message (such as a session initialization
or session modification message) then the message should be
processed by the underlying DTLS framework and no further steps
below should be taken by the DTLS Transport.
2) The TLS Transport Model queries the LCD using the transport 2) The TLS Transport Model queries the LCD using the transport
parameters (source and destination addresses and ports) to parameters (source and destination addresses and ports) to
determine if a session already exists and its tlsSessionID. determine if a session already exists and its tlsSnmpSessionID.
3) If a matching entry in the LCD does not exist then the message is If a matching entry in the LCD does not exist then the message is
discarded. Increment the tlstmSessionNoAvailableSessions counter passed to DTLS for processing without a corresponding
and stop processing the message. tlsSnmpSessionID. The incoming packet may result in a new
session being established if the receiving entity is acting as a
DTLS server. If DTLS returns success then stop processing of
this message. If DTLS returns an error then and the the
tlstmSessionNoAvailableSessions counter and stop processing the
message.
Note that an entry would already exist if the client and server's Note that an entry would already exist if the client and server's
session establishment procedures had been successfully completed session establishment procedures had been successfully completed
(as described both above and in Section 5.3) even if no message previously (as described both above and in Section 5.3) even if
had yet been sent through the newly established session. An no message had yet been sent through the newly established
entry may not exist, however, if a "rogue" message was routed to session. An entry may not exist, however, if a "rogue" message
the SNMP entity by mistake. An entry might also be missing was routed to the SNMP entity by mistake. An entry might also be
because of a "broken" session (see operational considerations). missing because of a "broken" session (see operational
considerations).
4) Retrieve the tlsSessionID from the LCD. 3) Retrieve the tlsSnmpSessionID from the LCD.
5) The tlsWholeMsg, and the tlsSessionID are passed to DTLS for 4) The UDP packet and the tlsSnmpSessionID are passed to DTLS for
integrity checking and decryption using the tlsRead() ASI. integrity checking and decryption.
6) If the message fails integrity checks or other (D)TLS security If the message fails integrity checks or other (D)TLS security
processing then increment the tlstmDTLSProtectionErrors counter, processing then increment the tlstmDTLSProtectionErrors counter,
discard and stop processing the message. discard and stop processing the message.
7) The output of the tlsRead ASI results in an incomingMessage and 5) (D)TLS should return an incomingMessage and an
an incomingMessageLength. These results and the tlsSessionID are incomingMessageLength. These results and the tlsSnmpSessionID
used below in the Section 5.1.2 to complete the processing of the are used below in the Section 5.1.2 to complete the processing of
incoming message. the incoming message.
5.1.2. Transport Processing for Incoming Messages 5.1.2. Transport Processing for Incoming SNMP Messages
The procedures in this section describe how the TLS Transport Model The procedures in this section describe how the TLS Transport Model
should process messages that have already been properly extracted should process messages that have already been properly extracted
from the (D)TLS stream. from the (D)TLS stream. Note that care must be taken when processing
messages originating from either TLS or DTLS to ensure they're
complete and singular. For example, multiple SNMP messages can be
passed through a single DTLS message and partial SNMP messages may be
received from a TLS stream. These steps describe the processing of a
singular SNMP message after it has been delivered from the (D)TLS
stream.
Create a tmStateReference cache for the subsequent reference and Create a tmStateReference cache for the subsequent reference and
assign the following values within it: assign the following values within it:
tmTransportDomain = snmpTLSDomain, snmpDTLSUDPDomain or tmTransportDomain = snmpTLSTCPDomain, snmpDTLSUDPDomain or
snmpDTLSSCTPDomain as appropriate. snmpDTLSSCTPDomain as appropriate.
tmTransportAddress = The address the message originated from, tmTransportAddress = The address the message originated from.
determined in an implementation dependent way.
tmSecurityLevel = The derived tmSecurityLevel for the session, as tmSecurityLevel = The derived tmSecurityLevel for the session, as
discussed in Section 3.1.2 and Section 5.3. discussed in Section 3.1.2 and Section 5.3.
tmSecurityName = The derived tmSecurityName for the session as tmSecurityName = The derived tmSecurityName for the session as
discussed in Section 5.3. This value MUST be constant during the discussed in Section 5.3. This value MUST be constant during the
lifetime of the (D)TLS session. lifetime of the (D)TLS session.
tmSessionID = The tlsSessionID, which MUST be a unique session tmSessionID = The tlsSnmpSessionID, which MUST be a unique session
identifier for this (D)TLS session. The contents and format of identifier for this (D)TLS connection. The contents and format of
this identifier are implementation dependent as long as it is this identifier are implementation-dependent as long as it is
unique to the session. A session identifier MUST NOT be reused unique to the session. A session identifier MUST NOT be reused
until all references to it are no longer in use. The tmSessionID until all references to it are no longer in use. The tmSessionID
is equal to the tlsSessionID discussed in Section 5.1.1. is equal to the tlsSnmpSessionID discussed in Section 5.1.1.
tmSessionID refers to the session identifier when stored in the tmSessionID refers to the session identifier when stored in the
tmStateReference and tlsSessionID refers to the session identifier tmStateReference and tlsSnmpSessionID refers to the session
when stored in the LCD. They MUST always be equal when processing identifier when stored in the LCD. They MUST always be equal when
a given session's traffic. processing a given session's traffic.
The wholeMessage and the wholeMessageLength are assigned values from The wholeMessage and the wholeMessageLength are assigned values from
the incomingMessage and incomingMessageLength values from the (D)TLS the incomingMessage and incomingMessageLength values from the (D)TLS
processing. processing.
The TLS Transport Model passes the transportDomain, transportAddress, The TLS Transport Model passes the transportDomain, transportAddress,
wholeMessage, and wholeMessageLength to the dispatcher using the wholeMessage, and wholeMessageLength to the dispatcher using the
receiveMessage ASI: receiveMessage ASI:
statusInformation = statusInformation =
receiveMessage( receiveMessage(
IN transportDomain -- snmpTLSDomain, snmpDTLSUDPDomain, IN transportDomain -- snmpTLSTCPDomain, snmpDTLSUDPDomain,
-- or snmpDTLSSCTPDomain -- or snmpDTLSSCTPDomain
IN transportAddress -- address for the received message IN transportAddress -- address for the received message
IN wholeMessage -- the whole SNMP message from (D)TLS IN wholeMessage -- the whole SNMP message from (D)TLS
IN wholeMessageLength -- the length of the SNMP message IN wholeMessageLength -- the length of the SNMP message
IN tmStateReference -- transport info IN tmStateReference -- transport info
) )
5.2. Procedures for an Outgoing Message 5.2. Procedures for an Outgoing SNMP Message
The dispatcher sends a message to the TLS Transport Model using the The dispatcher sends a message to the TLS Transport Model using the
following ASI: following ASI:
statusInformation = statusInformation =
sendMessage( sendMessage(
IN destTransportDomain -- transport domain to be used IN destTransportDomain -- transport domain to be used
IN destTransportAddress -- transport address to be used IN destTransportAddress -- transport address to be used
IN outgoingMessage -- the message to send IN outgoingMessage -- the message to send
IN outgoingMessageLength -- its length IN outgoingMessageLength -- its length
skipping to change at page 25, line 48 skipping to change at page 23, line 21
4) If tmSessionID is undefined, then use tmTransportAddress, 4) If tmSessionID is undefined, then use tmTransportAddress,
tmSecurityName and tmRequestedSecurityLevel to see if there is a tmSecurityName and tmRequestedSecurityLevel to see if there is a
corresponding entry in the LCD suitable to send the message over. corresponding entry in the LCD suitable to send the message over.
4a) If there is a corresponding LCD entry, then this session 4a) If there is a corresponding LCD entry, then this session
will be used to send the message. will be used to send the message.
4b) If there is not a corresponding LCD entry, then open a 4b) If there is not a corresponding LCD entry, then open a
session using the openSession() ASI (discussed further in session using the openSession() ASI (discussed further in
Section 4.4.1). Implementations MAY wish to offer message Section 5.3). Implementations MAY wish to offer message
buffering to prevent redundant openSession() calls for the buffering to prevent redundant openSession() calls for the
same cache entry. If an error is returned from same cache entry. If an error is returned from
OpenSession(), then discard the message, increment the openSession(), then discard the message, increment the
tlstmSessionOpenErrors, return an error indication to the tlstmSessionOpenErrors, return an error indication to the
calling module and stop processing of the message. calling module and stop processing of the message.
5) Using either the session indicated by the tmSessionID if there 5) Using either the session indicated by the tmSessionID if there
was one or the session resulting from a previous step (3 or 4), was one or the session resulting from a previous step (3 or 4),
pass the outgoingMessage to (D)TLS for encapsulation and pass the outgoingMessage to (D)TLS for encapsulation and
transmission. transmission.
5.3. Establishing a Session 5.3. Establishing a Session
The TLS Transport Model provides the following primitive to establish The TLS Transport Model provides the following primitive to establish
a new (D)TLS session (previously discussed in Section 4.4.1): a new (D)TLS session (previously discussed in Section 5.3):
statusInformation = -- errorIndication or success statusInformation = -- errorIndication or success
openSession( openSession(
IN destTransportDomain -- transport domain to be used IN tmStateReference -- transport information to be used
IN destTransportAddress -- transport address to be used OUT tmStateReference -- transport information to be used
IN securityName -- on behalf of this principal IN maxMessageSize -- of the sending SNMP entity
IN securityLevel -- Level of Security requested
OUT tlsSessionID -- Session identifier for (D)TLS
) )
The following describes the procedure to follow when establishing a The following describes the procedure to follow when establishing a
SNMP over (D)TLS session between SNMP engines for exchanging SNMP SNMP over (D)TLS session between SNMP engines for exchanging SNMP
messages. This process is followed by any SNMP engine establishing a messages. This process is followed by any SNMP engine establishing a
session for subsequent use. session for subsequent use.
This MAY be done automatically for SNMP messages which are not This MAY be done automatically for SNMP messages which are not
Response or Report messages. Response or Report messages.
skipping to change at page 27, line 13 skipping to change at page 24, line 33
tmStateReference cache as tmSecurityLevel. For (D)TLS to provide tmStateReference cache as tmSecurityLevel. For (D)TLS to provide
strong authentication, each principal acting as a Command strong authentication, each principal acting as a Command
Generator SHOULD have its own certificate. Generator SHOULD have its own certificate.
2) Using the destTransportDomain and destTransportAddress values, 2) Using the destTransportDomain and destTransportAddress values,
the client will initiate the (D)TLS handshake protocol to the client will initiate the (D)TLS handshake protocol to
establish session keys for message integrity and encryption. establish session keys for message integrity and encryption.
If the attempt to establish a session is unsuccessful, then If the attempt to establish a session is unsuccessful, then
tlstmSessionOpenErrors is incremented, an error indication is tlstmSessionOpenErrors is incremented, an error indication is
returned, and processing stops. returned, and processing stops. If the session failed to open
because the presented server certificate was unknown or invalid
then the tlstmSessionUnknownServerCertificate or
tlstmSessionInvalidServerCertificates MUST be incremented and a
tlstmServerCertificateUnknown or tlstmServerInvalidCertificate
notification SHOULD be sent as appropriate. Reasons for server
certificate invalidation includes, but is not limited to,
cryptographic validation failures and an unexpected presented
certificate identity.
3) Once a (D)TLS secured session is established and both sides have 3) Once a (D)TLS secured session is established and both sides have
performed any appropriate certificate authentication verification verified the authenticity of the peer's certificate (e.g.
(e.g. [RFC5280]) then each side will determine and/or check the [RFC5280]) then each side will determine and/or check the
identity of the remote entity using the procedures described identity of the remote entity using the procedures described
below. below.
a) The (D)TLS server side of the connection identifies the a) The (D)TLS server side of the connection identifies the
authenticated identity from the (D)TLS client's principal authenticated identity from the (D)TLS client's principal
certificate using configuration information from the certificate using configuration information from the
tlstmCertToSNTable mapping table. The resulting derived tlstmCertToTSNTable mapping table. The resulting derived
securityName is recorded in the tmStateReference cache as tmSecurityName is recorded in the tmStateReference cache as
tmSecurityName. The details of the lookup process are fully tmSecurityName. The details of the lookup process are fully
described in the DESCRIPTION clause of the tlstmCertToSNTable described in the DESCRIPTION clause of the
MIB object. If any verification fails in any way (for tlstmCertToTSNTable MIB object. If any verification fails in
example because of failures in cryptographic verification or any way (for example because of failures in cryptographic
because of the lack of an appropriate row in the verification or because of the lack of an appropriate row in
tlstmCertToSNTable) then the session establishment MUST fail, the tlstmCertToTSNTable) then the session establishment MUST
the tlstmSessionInvalidClientCertificates object is fail, the tlstmSessionInvalidClientCertificates object is
incremented and processing stops. incremented and processing stops.
b) The (D)TLS client side of the connection MUST verify that b) The (D)TLS client side of the connection MUST verify that
authenticated identity of the (D)TLS server's certificate is authenticated identity of the (D)TLS server's certificate is
the certificate expected. This can be done using the the certificate.
configuration fingerprints found in the tlstmAddrTable if the
client is establishing the connection based on SNMP-TARGET-
MIB configuration or based on external certificate path
validation processes (e.g. [RFC5280]).
Methods for verifying that the proper destination was reached If the connection is being established from configuration
based on the presented certificate are described in based on SNMP-TARGET-MIB configuration then the procedures in
[I-D.saintandre-tls-server-id-check]. Matching the server's the tlstmAddrTable DESCRIPTION clause should be followed to
naming against SubjectAltName extension values SHOULD be the determine the if the presented identity matches the
preferred mechanism for comparison, but matching the expectations of the configuration. Path validation
CommonName MAY be used. procedures (like those defined in [RFC5280]) MUST be
followed. If a server identity name has been configured in
the tlstmAddrServerIdentity column then this reference
identity must be compared against the presented identity (for
example using procedures described in
[I-D.saintandre-tls-server-id-check]).
If the connection is being established for other reasons then
configuration and procedures outside the scope of this
document should be followed.
(D)TLS provides assurance that the authenticated identity has (D)TLS provides assurance that the authenticated identity has
been signed by a trusted configured certificate authority. been signed by a trusted configured certificate authority.
If verification of the server's certificate fails in any way If verification of the server's certificate fails in any way
(for example because of failures in cryptographic (for example because of failures in cryptographic
verification or the presented identity was not the expected verification or the presented identity did not match the
identity) then the session establishment MUST fail, the expected named entity) then the session establishment MUST
tlstmSessionInvalidServerCertificates object is incremented fail, the tlstmSessionInvalidServerCertificates object is
and processing stops. incremented and processing stops.
4) The (D)TLS-specific session identifier is passed to the TLS 4) The (D)TLS-specific session identifier is passed to the TLS
Transport Model and associated with the tmStateReference cache Transport Model and associated with the tmStateReference cache
entry to indicate that the session has been established entry to indicate that the session has been established
successfully and to point to a specific (D)TLS session for future successfully and to point to a specific (D)TLS session for future
use. use.
(D)TLS provides no explicit manner for transmitting an identity the Servers that wish to support multiple principals at a particular port
client wishes to connect to during or prior to key exchange to SHOULD make use of the Server Name Indication extension defined in
facilitate certificate selection at the server (e.g. at a Section 3.1 of [RFC4366]. Supporting this will allow, for example,
Notification Receiver). I.E., there is no available mechanism for
sending notifications to a specific principal at a given TCP, UDP or sending notifications to a specific principal at a given TCP, UDP or
SCTP port. Therefore, an implementation that wishes to support SCTP port.
multiple identities MAY use separate TCP, UDP or SCTP port numbers to
indicate the desired principal or some other implementation-dependent
solution.
5.4. Closing a Session 5.4. Closing a Session
The TLS Transport Model provides the following primitive to close a The TLS Transport Model provides the following primitive to close a
session: session:
statusInformation = statusInformation =
closeSession( closeSession(
IN tmStateReference -- transport info IN tmStateReference -- transport info
) )
The following describes the procedure to follow to close a session The following describes the procedure to follow to close a session
between a client and server. This process is followed by any SNMP between a client and server. This process is followed by any SNMP
engine closing the corresponding SNMP session. engine closing the corresponding SNMP session.
1) Look up the session in the cache and the LCD using the 1) Look up the session in the cache and the LCD using the
tmStateReference and its contents. tmStateReference and its contents.
2) If there is no session open associated with the tmStateReference, 2) If there is no open session associated with the tmStateReference,
then closeSession processing is completed. then closeSession processing is completed.
3) Delete the entry from the cache and any other implementation- 3) Delete the entry from the cache and any other implementation-
dependent information in the LCD. dependent information in the LCD.
4) Have (D)TLS close the specified session. This SHOULD include 4) Have (D)TLS close the specified session. This SHOULD include
sending a close_notify TLS Alert to inform the other side that sending a close_notify TLS Alert to inform the other side that
session cleanup may be performed. session cleanup may be performed.
6. MIB Module Overview 6. MIB Module Overview
skipping to change at page 29, line 34 skipping to change at page 27, line 16
6.2. Textual Conventions 6.2. Textual Conventions
Generic and Common Textual Conventions used in this module can be Generic and Common Textual Conventions used in this module can be
found summarized at http://www.ops.ietf.org/mib-common-tcs.html found summarized at http://www.ops.ietf.org/mib-common-tcs.html
This module defines the following new Textual Conventions: This module defines the following new Textual Conventions:
o New TransportDomain and TransportAddress formats for describing o New TransportDomain and TransportAddress formats for describing
(D)TLS connection addressing requirements. (D)TLS connection addressing requirements.
o Public certificate fingerprint allowing MIB module objects to o A certificate fingerprint allowing MIB module objects to
generically refer to a stored X.509 certificate using a generically refer to a stored X.509 certificate using a
cryptographic hash as a reference pointer. cryptographic hash as a reference pointer.
6.3. Statistical Counters 6.3. Statistical Counters
The TLSTM-MIB defines some statical counters that can provide network The TLSTM-MIB defines some counters that can provide network managers
managers with feedback about (D)TLS session usage and potential with information about (D)TLS session usage and potential errors that
errors that a MIB-instrumented device may be experiencing. a MIB-instrumented device may be experiencing.
6.4. Configuration Tables 6.4. Configuration Tables
The TLSTM-MIB defines configuration tables that a manager can use for The TLSTM-MIB defines configuration tables that a manager can use for
configuring a MIB-instrumented device for sending and receiving SNMP configuring a MIB-instrumented device for sending and receiving SNMP
messages over (D)TLS. In particular, there is are MIB tables that messages over (D)TLS. In particular, there are MIB tables that
extend the SNMP-TARGET-MIB for configuring (D)TLS certificate usage extend the SNMP-TARGET-MIB for configuring (D)TLS certificate usage
and a MIB table for mapping incoming (D)TLS client certificates to and a MIB table for mapping incoming (D)TLS client certificates to
SNMPv3 securityNames. SNMPv3 securityNames.
6.4.1. Notifications 6.4.1. Notifications
The TLSTM-MIB defines notifications to alert management stations when The TLSTM-MIB defines notifications to alert management stations when
a (D)TLS connection fails because the server's presented certificate a (D)TLS connection fails because a server's presented certificate
did not meet an expected value, according to the tlstmAddrTable. did not meet an expected value (tlstmServerCertificateUnknown) or
because cryptographic validation failed
(tlstmServerInvalidCertificate).
6.5. Relationship to Other MIB Modules 6.5. Relationship to Other MIB Modules
Some management objects defined in other MIB modules are applicable Some management objects defined in other MIB modules are applicable
to an entity implementing the TLS Transport Model. In particular, it to an entity implementing the TLS Transport Model. In particular, it
is likely that an entity implementing the TLSTM-MIB will implement is assumed that an entity implementing the TLSTM-MIB will implement
the SNMPv2-MIB [RFC3418], the SNMP-FRAMEWORK-MIB [RFC3411], the SNMP- the SNMPv2-MIB [RFC3418], the SNMP-FRAMEWORK-MIB [RFC3411], the SNMP-
TARGET-MIB [RFC3413], the SNMP-NOTIFICATION-MIB [RFC3413] and the TARGET-MIB [RFC3413], the SNMP-NOTIFICATION-MIB [RFC3413] and the
SNMP-VIEW-BASED-ACM-MIB [RFC3415]. SNMP-VIEW-BASED-ACM-MIB [RFC3415].
The TLSTM-MIB module contained in this document is for managing TLS The TLSTM-MIB module contained in this document is for managing TLS
Transport Model information. Transport Model information.
6.5.1. MIB Modules Required for IMPORTS 6.5.1. MIB Modules Required for IMPORTS
The TLSTM-MIB module imports items from SNMPv2-SMI [RFC2578], The TLSTM-MIB module imports items from SNMPv2-SMI [RFC2578],
skipping to change at page 30, line 38 skipping to change at page 28, line 23
7. MIB Module Definition 7. MIB Module Definition
TLSTM-MIB DEFINITIONS ::= BEGIN TLSTM-MIB DEFINITIONS ::= BEGIN
IMPORTS IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, MODULE-IDENTITY, OBJECT-TYPE,
OBJECT-IDENTITY, snmpModules, snmpDomains, OBJECT-IDENTITY, snmpModules, snmpDomains,
Counter32, Unsigned32, NOTIFICATION-TYPE Counter32, Unsigned32, NOTIFICATION-TYPE
FROM SNMPv2-SMI FROM SNMPv2-SMI
TEXTUAL-CONVENTION, TimeStamp, RowStatus, StorageType TEXTUAL-CONVENTION, TimeStamp, RowStatus, StorageType,
AutonomousType
FROM SNMPv2-TC FROM SNMPv2-TC
MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
FROM SNMPv2-CONF FROM SNMPv2-CONF
SnmpAdminString SnmpAdminString
FROM SNMP-FRAMEWORK-MIB FROM SNMP-FRAMEWORK-MIB
snmpTargetParamsName, snmpTargetAddrName snmpTargetParamsName, snmpTargetAddrName
FROM SNMP-TARGET-MIB FROM SNMP-TARGET-MIB
; ;
tlstmMIB MODULE-IDENTITY tlstmMIB MODULE-IDENTITY
LAST-UPDATED "200807070000Z" LAST-UPDATED "200912080000Z"
ORGANIZATION "ISMS Working Group" ORGANIZATION "ISMS Working Group"
CONTACT-INFO "WG-EMail: isms@lists.ietf.org CONTACT-INFO "WG-EMail: isms@lists.ietf.org
Subscribe: isms-request@lists.ietf.org Subscribe: isms-request@lists.ietf.org
Chairs: Chairs:
Juergen Schoenwaelder Juergen Schoenwaelder
Jacobs University Bremen Jacobs University Bremen
Campus Ring 1 Campus Ring 1
28725 Bremen 28725 Bremen
Germany Germany
skipping to change at page 32, line 27 skipping to change at page 30, line 13
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This version of this MIB module is part of RFC XXXX; This version of this MIB module is part of RFC XXXX;
see the RFC itself for full legal notices." see the RFC itself for full legal notices."
-- NOTE to RFC editor: replace XXXX with actual RFC number -- NOTE to RFC editor: replace XXXX with actual RFC number
-- for this document and remove this note -- for this document and remove this note
REVISION "200807070000Z" REVISION "200912080000Z"
DESCRIPTION "The initial version, published in RFC XXXX." DESCRIPTION "The initial version, published in RFC XXXX."
-- NOTE to RFC editor: replace XXXX with actual RFC number -- NOTE to RFC editor: replace XXXX with actual RFC number
-- for this document and remove this note -- for this document and remove this note
::= { snmpModules xxxx } ::= { snmpModules xxxx }
-- RFC Ed.: replace xxxx with IANA-assigned number and -- RFC Ed.: replace xxxx with IANA-assigned number and
-- remove this note -- remove this note
-- ************************************************ -- ************************************************
-- subtrees of the TLSTM-MIB -- subtrees of the TLSTM-MIB
-- ************************************************ -- ************************************************
tlstmNotifications OBJECT IDENTIFIER ::= { tlstmMIB 0 } tlstmNotifications OBJECT IDENTIFIER ::= { tlstmMIB 0 }
tlstmObjects OBJECT IDENTIFIER ::= { tlstmMIB 1 } tlstmIdentities OBJECT IDENTIFIER ::= { tlstmMIB 1 }
tlstmConformance OBJECT IDENTIFIER ::= { tlstmMIB 2 } tlstmObjects OBJECT IDENTIFIER ::= { tlstmMIB 2 }
tlstmConformance OBJECT IDENTIFIER ::= { tlstmMIB 3 }
-- ************************************************ -- ************************************************
-- tlstmObjects - Objects -- tlstmObjects - Objects
-- ************************************************ -- ************************************************
snmpTLSDomain OBJECT-IDENTITY snmpTLSTCPDomain OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The SNMP over TLS transport domain. The corresponding "The SNMP over TLS transport domain. The corresponding
transport address is of type SnmpTLSAddress. transport address is of type SnmpTLSAddress.
The securityName prefix to be associated with the The securityName prefix to be associated with the
snmpTLSDomain is 'tls'. This prefix may be used by snmpTLSTCPDomain is 'tls'. This prefix may be used by
security models or other components to identify which secure security models or other components to identify which secure
transport infrastructure authenticated a securityName." transport infrastructure authenticated a securityName."
::= { snmpDomains xx } ::= { snmpDomains xx }
-- RFC Ed.: replace xx with IANA-assigned number and -- RFC Ed.: replace xx with IANA-assigned number and
-- remove this note -- remove this note
-- RFC Ed.: replace 'tls' with the actual IANA assigned prefix string -- RFC Ed.: replace 'tls' with the actual IANA assigned prefix string
-- if 'tls' is not assigned to this document. -- if 'tls' is not assigned to this document.
snmpDTLSUDPDomain OBJECT-IDENTITY snmpDTLSUDPDomain OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The SNMP over DTLS/UDP transport domain. The corresponding "The SNMP over DTLS/UDP transport domain. The corresponding
transport address is of type SnmpDTLSUDPAddress. transport address is of type SnmpTLSAddress.
When an SNMP entity uses the snmpDTLSUDPDomain transport
model, it must be capable of accepting messages up to
the maximum MTU size for an interface it supports, minus the
needed IP, UDP, DTLS and other protocol overheads.
The securityName prefix to be associated with the The securityName prefix to be associated with the
snmpDTLSUDPDomain is 'dudp'. This prefix may be used by snmpDTLSUDPDomain is 'dudp'. This prefix may be used by
security models or other components to identify which secure security models or other components to identify which secure
transport infrastructure authenticated a securityName." transport infrastructure authenticated a securityName."
::= { snmpDomains yy } ::= { snmpDomains yy }
-- RFC Ed.: replace yy with IANA-assigned number and -- RFC Ed.: replace yy with IANA-assigned number and
-- remove this note -- remove this note
-- RFC Ed.: replace 'dudp' with the actual IANA assigned prefix string -- RFC Ed.: replace 'dudp' with the actual IANA assigned prefix string
-- if 'dtls' is not assigned to this document. -- if 'dtls' is not assigned to this document.
snmpDTLSSCTPDomain OBJECT-IDENTITY snmpDTLSSCTPDomain OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The SNMP over DTLS/SCTP transport domain. The corresponding "The SNMP over DTLS/SCTP transport domain. The corresponding
transport address is of type SnmpDTLSSCTPAddress. transport address is of type SnmpTLSAddress.
The securityName prefix to be associated with the The securityName prefix to be associated with the
snmpDTLSSCTPDomain is 'dsct'. This prefix may be used by snmpDTLSSCTPDomain is 'dsct'. This prefix may be used by
security models or other components to identify which secure security models or other components to identify which secure
transport infrastructure authenticated a securityName." transport infrastructure authenticated a securityName."
::= { snmpDomains zz } ::= { snmpDomains zz }
-- RFC Ed.: replace zz with IANA-assigned number and -- RFC Ed.: replace zz with IANA-assigned number and
-- remove this note -- remove this note
-- RFC Ed.: replace 'dsct' with the actual IANA assigned prefix string -- RFC Ed.: replace 'dsct' with the actual IANA assigned prefix string
-- if 'dtls' is not assigned to this document. -- if 'dtls' is not assigned to this document.
SnmpTLSAddress ::= TEXTUAL-CONVENTION SnmpTLSAddress ::= TEXTUAL-CONVENTION
DISPLAY-HINT "1a" DISPLAY-HINT "1a"
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Represents a TCP connection address for an IPv4 address, an "Represents a IPv4 address, an IPv6 address or an US-ASCII
IPv6 address or an US-US-ASCII encoded hostname and port number. encoded hostname and port number.
An IPv4 address must be in dotted decimal format followed by a An IPv4 address must be in dotted decimal format followed by a
colon ':' (US-ASCII character 0x3A) and a decimal port number colon ':' (US-ASCII character 0x3A) and a decimal port number
in US-ASCII. in US-ASCII.
An IPv6 address must be a colon separated format, surrounded An IPv6 address must be a colon separated format, surrounded
by square brackets ('[', US-ASCII character 0x5B, and ']', by square brackets ('[', US-ASCII character 0x5B, and ']',
US-ASCII character 0x5D), followed by a colon ':' (US-ASCII US-ASCII character 0x5D), followed by a colon ':' (US-ASCII
character 0x3A) and a decimal port number in US-ASCII. character 0x3A) and a decimal port number in US-ASCII.
A hostname is always in US-US-ASCII (as per RFC1033); A hostname is always in US-ASCII (as per RFC1033);
internationalized hostnames are encoded in US-US-ASCII as internationalized hostnames are encoded in US-ASCII as
specified in RFC 3490. The hostname is followed by a colon specified in RFC 3490. The hostname is followed by a colon
':' (US-US-ASCII character 0x3A) and a decimal port number in ':' (US-ASCII character 0x3A) and a decimal port number in
US-US-ASCII. The name SHOULD be fully qualified whenever US-ASCII. The name SHOULD be fully qualified whenever
possible. possible.
Values of this textual convention may not be directly usable Values of this textual convention may not be directly usable
as transport-layer addressing information, and may require as transport-layer addressing information, and may require
run-time resolution. As such, applications that write them run-time resolution. As such, applications that write them
must be prepared for handling errors if such values are not must be prepared for handling errors if such values are not
supported, or cannot be resolved (if resolution occurs at the supported, or cannot be resolved (if resolution occurs at the
time of the management operation). time of the management operation).
The DESCRIPTION clause of TransportAddress objects that may The DESCRIPTION clause of TransportAddress objects that may
have snmpTLSAddress values must fully describe how (and have SnmpTLSAddress values must fully describe how (and
when) such names are to be resolved to IP addresses and vice when) such names are to be resolved to IP addresses and vice
versa. versa.
This textual convention SHOULD NOT be used directly in object This textual convention SHOULD NOT be used directly in object
definitions since it restricts addresses to a specific definitions since it restricts addresses to a specific
format. However, if it is used, it MAY be used either on its format. However, if it is used, it MAY be used either on its
own or in conjunction with TransportAddressType or own or in conjunction with TransportAddressType or
TransportDomain as a pair. TransportDomain as a pair.
When this textual convention is used as a syntax of an index When this textual convention is used as a syntax of an index
skipping to change at page 35, line 28 skipping to change at page 33, line 9
specifying applicable constraints in the conceptual row specifying applicable constraints in the conceptual row
DESCRIPTION clause or in the surrounding documentation." DESCRIPTION clause or in the surrounding documentation."
REFERENCE REFERENCE
"RFC 1033: DOMAIN ADMINISTRATORS OPERATIONS GUIDE "RFC 1033: DOMAIN ADMINISTRATORS OPERATIONS GUIDE
RFC 3490: Internationalizing Domain Names in Applications RFC 3490: Internationalizing Domain Names in Applications
RFC 3986: Uniform Resource Identifier (URI): Generic Syntax RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2 RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2
" "
SYNTAX OCTET STRING (SIZE (1..255)) SYNTAX OCTET STRING (SIZE (1..255))
SnmpDTLSUDPAddress ::= TEXTUAL-CONVENTION Fingerprint ::= TEXTUAL-CONVENTION
DISPLAY-HINT "1a" DISPLAY-HINT "1x:254x"
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Represents a UDP connection address for an IPv4 address, an "A Fingerprint value that can be used to uniquely reference
IPv6 address or an US-ASCII encoded hostname and port number. other data of potentially arbitrary length.
An IPv4 address must be a dotted decimal format followed by a
colon ':' (US-ASCII character 0x3A) and a decimal port number in
US-ASCII.
An IPv6 address must be a colon separated format, surrounded
by square brackets ('[', US-ASCII character 0x5B, and ']',
US-ASCII character 0x5D), followed by a colon ':' (US-ASCII
character 0x3A) and a decimal port number in US-ASCII.
A hostname is always in US-US-ASCII (as per RFC1033);
internationalized hostnames are encoded in US-US-ASCII as
specified in RFC 3490. The hostname is followed by a colon
':' (US-US-ASCII character 0x3A) and a decimal port number in
US-US-ASCII. The name SHOULD be fully qualified whenever
possible.
Values of this textual convention may not be directly usable
as transport-layer addressing information, and may require
run-time resolution. As such, applications that write them
must be prepared for handling errors if such values are not
supported, or cannot be resolved (if resolution occurs at the
time of the management operation).
The DESCRIPTION clause of TransportAddress objects that may
have snmpDTLSUDPAddress values must fully describe how (and
when) such names are to be resolved to IP addresses and vice
versa.
This textual convention SHOULD NOT be used directly in object A Fingerprint value is composed of a 1-octet hashing algorithm
definitions since it restricts addresses to a specific identifier followed by the fingerprint value. The octet value
format. However, if it is used, it MAY be used either on its encoded is taken from the IANA TLS HashAlgorithm Registry
own or in conjunction with TransportAddressType or (RFC5246). The remaining octets are filled using the results
TransportDomain as a pair. of the hashing algorithm.
When this textual convention is used as a syntax of an index This TEXTUAL-CONVENTION allows for a zero-length (blank)
object, there may be issues with the limit of 128 Fingerprint value for use in tables where the fingerprint value
sub-identifiers specified in SMIv2 (STD 58). It is RECOMMENDED may be optional. MIB definitions or implementations may refuse
that all MIB documents using this textual convention make to accept a zero-length value as appropriate."
explicit any limitations on index component lengths that
management software must observe. This may be done either by
including SIZE constraints on the index components or by
specifying applicable constraints in the conceptual row
DESCRIPTION clause or in the surrounding documentation."
REFERENCE REFERENCE
"RFC 1033: DOMAIN ADMINISTRATORS OPERATIONS GUIDE "RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2
RFC 3490: Internationalizing Domain Names in Applications
RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
RFC 4347: Datagram Transport Layer Security
RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2
" "
SYNTAX OCTET STRING (SIZE (1..255)) SYNTAX OCTET STRING (SIZE (0..255))
SnmpDTLSSCTPAddress ::= TEXTUAL-CONVENTION -- Identities
DISPLAY-HINT "1a"
STATUS current
DESCRIPTION
"Represents a SCTP connection address for an IPv4 address, an
IPv6 address or an US-ASCII encoded hostname and port number.
An IPv4 address must be a dotted decimal format followed by a tlstmCertToTSNMIdentities OBJECT IDENTIFIER ::= { tlstmIdentities 1 }
colon ':' (US-ASCII character 0x3A) and a decimal port number in
US-ASCII.
An IPv6 address must be a colon separated format, surrounded tlstmCertSpecified OBJECT-IDENTITY
by square brackets ('[', US-ASCII character 0x5B, and ']', STATUS current
US-ASCII character 0x5D), followed by a colon ':' (US-ASCII DESCRIPTION "Directly specifies the tmSecurityName to be used for
character 0x3A) and a decimal port number in US-ASCII. this certificate. The value of the tmSecurityName to
use is specified in the tlstmCertToTSNData column.
The column must contain a SnmpAdminString compliant
value or contains a zero length string then the
mapping will be considered a failure."
::= { tlstmCertToTSNMIdentities 1 }
A hostname is always in US-US-ASCII (as per RFC1033); tlstmCertSANRFC822Name OBJECT-IDENTITY
internationalized hostnames are encoded in US-US-ASCII as STATUS current
specified in RFC 3490. The hostname is followed by a colon DESCRIPTION "Maps a subjectAltName's rfc822Name to a
':' (US-US-ASCII character 0x3A) and a decimal port number in tmSecurityName. The local part of the rfc822Name is
US-US-ASCII. The name SHOULD be fully qualified whenever passed unaltered but the host-part of the name must
possible. be passed in lower case.
Values of this textual convention may not be directly usable Example rfc822Name Field: FooBar@Example.COM
as transport-layer addressing information, and may require is mapped to tmSecurityName: FooBar@exmaple.com"
run-time resolution. As such, applications that write them ::= { tlstmCertToTSNMIdentities 2 }
must be prepared for handling errors if such values are not
supported, or cannot be resolved (if resolution occurs at the
time of the management operation).
The DESCRIPTION clause of TransportAddress objects that may tlstmCertSANDNSName OBJECT-IDENTITY
have snmpDTLSSCTPAddress values must fully describe how (and STATUS current
when) such names are to be resolved to IP addresses and vice DESCRIPTION "Maps a subjectAltName's dNSName to a
versa. tmSecurityName by directly passing the value without
any transformations."
::= { tlstmCertToTSNMIdentities 3 }
This textual convention SHOULD NOT be used directly in object tlstmCertSANIpAddress OBJECT-IDENTITY
definitions since it restricts addresses to a specific STATUS current
format. However, if it is used, it MAY be used either on its DESCRIPTION "Maps a subjectAltName's ipAddress to a
own or in conjunction with TransportAddressType or tmSecurityName by transforming the binary encoded
TransportDomain as a pair. address as follows:
When this textual convention is used as a syntax of an index 1) for IPv4 the value is converted into a decimal
object, there may be issues with the limit of 128 dotted quad address (e.g. '192.0.2.1')
sub-identifiers specified in SMIv2 (STD 58). It is RECOMMENDED
that all MIB documents using this textual convention make
explicit any limitations on index component lengths that
management software must observe. This may be done either by
including SIZE constraints on the index components or by
specifying applicable constraints in the conceptual row
DESCRIPTION clause or in the surrounding documentation."
SYNTAX OCTET STRING (SIZE (1..255))
Fingerprint ::= TEXTUAL-CONVENTION 2) for IPv6 addresses the value is converted into a
DISPLAY-HINT "1x:254x" 32-character hexadecimal string without any colon
STATUS current separators.
DESCRIPTION
"A Fingerprint value that can be used to uniquely reference
other data of potentially arbitrary length.
A Fingerprint value is composed of a 1-octet hashing algorithm Note that the resulting length is the maximum
type. The octet value encoded is taken from the IANA TLS length supported by the View-Based Access Control
HashAlgorithm Registry (RFC5246). The remaining octets are Model (VACM). Note that using both the Transport
filled using the results of the hashing algorithm. Security Model's support for transport prefixes
(see the SNMP-TSM-MIB's
snmpTsmConfigurationUsePrefix object for details)
will result in securityName lengths that exceed
what VACM can handle."
::= { tlstmCertToTSNMIdentities 4 }
This TEXTUAL-CONVENTION SHOULD NOT be used as a form of tlstmCertSANAny OBJECT-IDENTITY
cryptographic verification and a data source with a matching STATUS current
fingerprint should not be considered authenticated because the DESCRIPTION "Maps any of the following fields using the
value matches. This TEXTUAL-CONVENTION is only intended for corresponding mapping algorithms:
use as a reference to a stored copy of a longer data source.
The contents of full data source referenced by this fingerprint |------------+------------------------|
needs to be compared against to assure collisions have not | Type | Algorithm |
resulted." |------------+------------------------|
REFERENCE | rfc822Name | tlstmCertSANRFC822Name |
"RFC 1033: DOMAIN ADMINISTRATORS OPERATIONS GUIDE | dNSName | tlstmCertSANDNSName |
RFC 3490: Internationalizing Domain Names in Applications | ipAddress | tlstmCertSANIpAddress |
RFC 3986: Uniform Resource Identifier (URI): Generic Syntax |------------+------------------------|
RFC 4347: Datagram Transport Layer Security The first matching subjectAltName value found in the
RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2 certificate any of the above types MUST be used when
" deriving the tmSecurityName."
SYNTAX OCTET STRING (SIZE (1..255)) ::= { tlstmCertToTSNMIdentities 5 }
tlstmCertCommonName OBJECT-IDENTITY
STATUS current
DESCRIPTION "Maps a certificate's CommonName to a
tmSecurityName by directly passing the value without
any transformations."
::= { tlstmCertToTSNMIdentities 6 }
-- The tlstmSession Group -- The tlstmSession Group
tlstmSession OBJECT IDENTIFIER ::= { tlstmObjects 1 } tlstmSession OBJECT IDENTIFIER ::= { tlstmObjects 1 }
tlstmSessionOpens OBJECT-TYPE tlstmSessionOpens OBJECT-TYPE
SYNTAX Counter32 SYNTAX Counter32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
skipping to change at page 39, line 24 skipping to change at page 36, line 16
longer (or was never) available." longer (or was never) available."
::= { tlstmSession 4 } ::= { tlstmSession 4 }
tlstmSessionInvalidClientCertificates OBJECT-TYPE tlstmSessionInvalidClientCertificates OBJECT-TYPE
SYNTAX Counter32 SYNTAX Counter32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The number of times an incoming session was not established "The number of times an incoming session was not established
on an (D)TLS server because the presented client certificate was on an (D)TLS server because the presented client certificate was
invalid. Reasons for invalidation includes, but is not invalid. Reasons for invalidation include, but are not
limited to, cryptographic validation failures and lack of a limited to, cryptographic validation failures or lack of a
suitable mapping row in the tlstmCertToSNTable." suitable mapping row in the tlstmCertToTSNTable."
::= { tlstmSession 5 } ::= { tlstmSession 5 }
tlstmSessionInvalidServerCertificates OBJECT-TYPE tlstmSessionUnknownServerCertificate OBJECT-TYPE
SYNTAX Counter32 SYNTAX Counter32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The number of times an outgoing session was not established "The number of times an outgoing session was not established
on an (D)TLS client because the presented server certificate was on an (D)TLS client because the server certificate presented
invalid. Reasons for invalidation includes, but is not by a SNMP over (D)TLS server was invalid because no
limited to, cryptographic validation failures and an unexpected configured fingerprint or CA was acceptable to validate it.
presented certificate identity." This may result because there was no entry in the
tlstmAddrTable or because no path could be found to known
certificate authority."
::= { tlstmSession 6 } ::= { tlstmSession 6 }
tlstmSessionInvalidServerCertificates OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times an outgoing session was not established
on an (D)TLS client because the server certificate presented
by an SNMP over (D)TLS server could not be validated even if
the fingerprint or expected validation path was known. I.E.,
a cryptographic validation occurred during certificate
validation processing.
Reasons for invalidation include, but are not
limited to, cryptographic validation failures."
::= { tlstmSession 7 }
tlstmTLSProtectionErrors OBJECT-TYPE tlstmTLSProtectionErrors OBJECT-TYPE
SYNTAX Counter32 SYNTAX Counter32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The number of times (D)TLS processing resulted in a message "The number of times (D)TLS processing resulted in a message
being discarded because it failed its integrity test, being discarded because it failed its integrity test,
decryption processing or other (D)TLS processing." decryption processing or other (D)TLS processing."
::= { tlstmSession 7 } ::= { tlstmSession 8 }
-- Configuration Objects -- Configuration Objects
tlstmConfig OBJECT IDENTIFIER ::= { tlstmObjects 2 } tlstmConfig OBJECT IDENTIFIER ::= { tlstmObjects 2 }
-- Certificate mapping -- Certificate mapping
tlstmCertificateMapping OBJECT IDENTIFIER ::= { tlstmConfig 1 } tlstmCertificateMapping OBJECT IDENTIFIER ::= { tlstmConfig 1 }
tlstmCertToSNCount OBJECT-TYPE tlstmCertToTSNCount OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A count of the number of entries in the tlstmCertToSNTable" "A count of the number of entries in the tlstmCertToTSNTable"
::= { tlstmCertificateMapping 1 } ::= { tlstmCertificateMapping 1 }
tlstmCertToSNTableLastChanged OBJECT-TYPE tlstmCertToTSNTableLastChanged OBJECT-TYPE
SYNTAX TimeStamp SYNTAX TimeStamp
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The value of sysUpTime.0 when the tlstmCertToSNTable "The value of sysUpTime.0 when the tlstmCertToTSNTable
was last modified through any means, or 0 if it has not been was last modified through any means, or 0 if it has not been
modified since the command responder was started." modified since the command responder was started."
::= { tlstmCertificateMapping 2 } ::= { tlstmCertificateMapping 2 }
tlstmCertToSNTable OBJECT-TYPE tlstmCertToTSNTable OBJECT-TYPE
SYNTAX SEQUENCE OF TlstmCertToSNEntry SYNTAX SEQUENCE OF TlstmCertToTSNEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A table listing the X.509 certificates known to the entity "A table listing the X.509 certificates known to the entity
and the associated method for determining the SNMPv3 security and the associated method for determining the SNMPv3 security
name from a certificate. name from a certificate.
On an incoming (D)TLS/SNMP connection the client's presented On an incoming (D)TLS/SNMP connection the client's presented
certificate must be examined and validated based on an certificate must be examined and validated based on an
established trusted path from a CA certificate or self-signed established trusted path from a CA certificate or self-signed
public certificate (e.g. RFC5280). This table provides a public certificate (e.g. RFC5280). This table provides a
mapping from a validated certificate to a SNMPv3 securityName. mapping from a validated certificate to a tmSecurityName.
This table does not provide any mechanisms for uploading This table does not provide any mechanisms for uploading
trusted certificates; the transfer of any needed trusted trusted certificates; the transfer of any needed trusted
certificates for path validation is expected to occur through certificates for path validation is expected to occur through
an out-of-band transfer. an out-of-band transfer.
Once the authenticity of a certificate has been verified, this Once the authenticity of a certificate has been verified, this
table is consulted to determine the appropriate securityName table is consulted to determine the appropriate tmSecurityName
to identify with the remote connection. This is done by to identify with the remote connection. This is done by
considering each active row from this table in prioritized considering each active row from this table in prioritized
order according to its tlstmCertToSNID value. Each row's order according to its tlstmCertToTSNID value. Each row's
tlstmCertToSNFingerprint value determines whether the row is a tlstmCertToTSNFingerprint value determines whether the row is a
match for the incoming connection: match for the incoming connection:
1) If the row's tlstmCertToSNFingerprint value identifies 1) If the row's tlstmCertToTSNFingerprint value identifies
the presented certificate and the contents of the the presented certificate then consider the row as a
presented certificate match a locally cached copy of successful match.
the certificate then consider the row as a successful
match.
2) If the row's tlstmCertToSNFingerprint value identifies 2) If the row's tlstmCertToTSNFingerprint value identifies
a locally held copy of a trusted CA certificate and a locally held copy of a trusted CA certificate and
that CA certificated was used to validate the path to that CA certificated was used to validate the path to
the presented certificate then consider the row as a the presented certificate then consider the row as a
successful match. successful match.
Once a matching row has been found, the tlstmCertToSNMapType Once a matching row has been found, the tlstmCertToTSNMapType
value can be used to determine how the securityName to value can be used to determine how the tmSecurityName to
associate with the session should be determined. See the associate with the session should be determined. See the
tlstmCertToSNMapType column's DESCRIPTION for details on tlstmCertToTSNMapType column's DESCRIPTION for details on
determining the securityName value. If it is impossible to determining the tmSecurityName value. If it is impossible to
determine a securityName from the row's data combined with the determine a tmSecurityName from the row's data combined with the
data presented in the certificate then additional rows MUST be data presented in the certificate then additional rows MUST be
searched looking for another potential match. If a resulting searched looking for another potential match. If a resulting
securityName mapped from a given row is not compatible with tmSecurityName mapped from a given row is not compatible with
the needed requirements of a securityName (e.g., VACM imposes the needed requirements of a tmSecurityName (e.g., VACM imposes
a 32-octet-maximum length and the certificate derived a 32-octet-maximum length and the certificate derived
securityName could be longer) then it must be considered an securityName could be longer) then it must be considered an
invalid match and additional rows MUST be searched looking for invalid match and additional rows MUST be searched looking for
another potential match. another potential match.
Missing values of tlstmCertToSNID are acceptable and Missing values of tlstmCertToTSNID are acceptable and
implementations should continue to the next highest numbered implementations should continue to the next highest numbered
row. E.G., the table may legally contain only two rows with row. E.G., the table may legally contain only two rows with
tlstmCertToSNID values of 10 and 20. tlstmCertToTSNID values of 10 and 20.
Users are encouraged to make use of certificates with Users are encouraged to make use of certificates with
subjectAltName fields that can be used as securityNames so subjectAltName fields that can be used as tmSecurityNames so
that a single root CA certificate can allow all child that a single root CA certificate can allow all child
certificate's subjectAltName to map directly to a securityName certificate's subjectAltName to map directly to a tmSecurityName
via a 1:1 transformation. However, this table is flexible to via a 1:1 transformation. However, this table is flexible to
allow for situations where existing deployed certificate allow for situations where existing deployed certificate
infrastructures do not provide adequate subjectAltName values infrastructures do not provide adequate subjectAltName values
for use as SNMPv3 securityNames. Certificates may also be for use as tmSecurityNames. Certificates may also be
mapped to securityNames using the CommonName portion of the mapped to tmSecurityNames using the CommonName portion of the
Subject field but usage of the CommonName field is deprecated. Subject field but usage of the CommonName field is deprecated.
Direct mapping from each individual certificate fingerprint to Direct mapping from each individual certificate fingerprint to
a securityName is also possible but requires one entry in the a tmSecurityName is also possible but requires one entry in the
table per securityName and requires more management operations table per tmSecurityName and requires more management operations
to completely configure a device." to completely configure a device."
::= { tlstmCertificateMapping 3 } ::= { tlstmCertificateMapping 3 }
tlstmCertToSNEntry OBJECT-TYPE tlstmCertToTSNEntry OBJECT-TYPE
SYNTAX TlstmCertToSNEntry SYNTAX TlstmCertToTSNEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A row in the tlstmCertToSNTable that specifies a mapping for "A row in the tlstmCertToTSNTable that specifies a mapping for
an incoming (D)TLS certificate to a securityName to use for a an incoming (D)TLS certificate to a tmSecurityName to use for a
connection." connection."
INDEX { tlstmCertToSNID } INDEX { tlstmCertToTSNID }
::= { tlstmCertToSNTable 1 } ::= { tlstmCertToTSNTable 1 }
TlstmCertToSNEntry ::= SEQUENCE { TlstmCertToTSNEntry ::= SEQUENCE {
tlstmCertToSNID Unsigned32, tlstmCertToTSNID Unsigned32,
tlstmCertToSNFingerprint Fingerprint, tlstmCertToTSNFingerprint Fingerprint,
tlstmCertToSNMapType INTEGER, tlstmCertToTSNMapType AutonomousType,
tlstmCertToSNSecurityName SnmpAdminString, tlstmCertToTSNData OCTET STRING,
tlstmCertToSNSANType INTEGER, tlstmCertToTSNStorageType StorageType,
tlstmCertToSNStorageType StorageType, tlstmCertToTSNRowStatus RowStatus
tlstmCertToSNRowStatus RowStatus
} }
tlstmCertToSNID OBJECT-TYPE tlstmCertToTSNID OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A unique, prioritized index for the given entry." "A unique, prioritized index for the given entry."
::= { tlstmCertToSNEntry 1 } ::= { tlstmCertToTSNEntry 1 }
tlstmCertToSNFingerprint OBJECT-TYPE tlstmCertToTSNFingerprint OBJECT-TYPE
SYNTAX Fingerprint SYNTAX Fingerprint (SIZE(1..255))
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A cryptographic hash of a X.509 certificate. The results of "A cryptographic hash of a X.509 certificate. The results of
a successful matching fingerprint to either the trusted CA in a successful matching fingerprint to either the trusted CA in
the certificate validation path or to the certificate itself the certificate validation path or to the certificate itself
is dictated by the tlstmCertToSNMapType column." is dictated by the tlstmCertToTSNMapType column."
::= { tlstmCertToSNEntry 2 } ::= { tlstmCertToTSNEntry 2 }
tlstmCertToSNMapType OBJECT-TYPE tlstmCertToTSNMapType OBJECT-TYPE
SYNTAX INTEGER { specified(1), bySubjectAltName(2), byCN(3) } SYNTAX AutonomousType
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The mapping type used to obtain the securityName from the "Specifies the mapping type for deriving a tmSecurityName from a
certificate. The possible values of use and their usage certificate. Details for mapping of a particular type SHALL
methods are defined as follows: be specified in the DESCRIPTION clause of the OBJECT-IDENTITY
that describes the mapping. If a mapping succeeds it will
specified(1): The securityName that should be used to return a tmSecurityName for use by the TLSTM model and
associate with the session is directly specified processing stops.
in the tlstmCertToSNecurityName column from this
table. Note: The tlstmCertToSNSecurityName
column's value is ignored for all other
tlstmCertToSNMapType values.
bySubjectAltName(2):
The securityName that should be used to
associate with the session should be taken from
the subjectAltName(s) portion of the client's
X.509 certificate. The subjectAltName used MUST
be the first encountered subjectAltName type
indicated by the tlstmCertToSNSANType column.
If the resulting mapped value from the
subjectAltName component is not compatible with
the needed requirements of a securityName (e.g.,
VACM imposes a 32-octet-maximum length and the
certificate derived securityName could be
longer) then the next appropriate subjectAltName
of the correct type should be used if available.
If no appropriate subjectAltName of the given
type is found within the certificate then
additional rows in the tlstmCertToSNTable must
be searched for additional
tlstmCertToSNFingerprint matches.
byCN(3): The securityName that should be used to
associate with the session should be taken from
the CommonName portion of the Subject field from
the client's presented X.509 certificate.
If the value of the CommonName component is not
compatible with the needed requirements of a
securityName (e.g., VACM imposes a
32-octet-maximum length and the certificate
derived securityName could be longer) then
additional rows in the tlstmCertToSNTable must
be searched for additional
tlstmCertToSNFingerprint matches."
DEFVAL { specified } If the resulting mapped value is not compatible with the
::= { tlstmCertToSNEntry 3 } needed requirements of a tmSecurityName (e.g., VACM imposes a
32-octet-maximum length and the certificate derived
securityName could be longer) then future rows MUST be
searched for additional tlstmCertToTSNFingerprint matches to
look for a mapping that succeeds."
DEFVAL { tlstmCertSpecified }
::= { tlstmCertToTSNEntry 3 }
tlstmCertToSNSecurityName OBJECT-TYPE tlstmCertToTSNData OBJECT-TYPE
SYNTAX SnmpAdminString (SIZE(0..32)) SYNTAX OCTET STRING (SIZE(0..1024))
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The securityName that the session should use if the "Axillary data used as optional configuration information for
tlstmCertToSNMapType is set to specified(1), otherwise the a given mapping specified by the tlstmCertToTSNMapType column.
value in this column should be ignored. If Only some mapping systems will make use of this column. The
tlstmCertToSNMapType is set to specifed(1) and this column value in this column MUST be ignored for any mapping type that
contains a zero-length string (which is not a legal does not require data present in this column."
securityName value) this row is effectively disabled and the
match will not be considered successful and other rows in the
table will need to be searched for a proper match."
DEFVAL { "" } DEFVAL { "" }
::= { tlstmCertToSNEntry 4 } ::= { tlstmCertToTSNEntry 4 }
tlstmCertToSNSANType OBJECT-TYPE
SYNTAX INTEGER { any(1), rfc822Name(2), dNSName(3),
ipAddress(4), otherName(5) }
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"Specifies the subjectAltName type that may be used to extract
the securityName from.
The any(1) value indicates the (D)TLS server should use the
first value found for any of the following subjectAltName
value types for the securityName: rfc822Name, dNSName, and
ipAddress.
When multiple types for a given subjectAltName type are
encountered within a certificate the first legally usable
value is the one selected.
Values for type ipAddress(4) are converted to a valid
securityName by:
1) for IPv4 the value is converted into a decimal dotted
quad address (e.g. '192.0.2.1')
2) for IPv6 addresses the value is converted into a
32-character hexadecimal string without any colon
separators.
Note that the resulting length is the maximum length
supported by the View-Based Access Control Model
(VACM). Note that using both the Transport Security
Model's support for transport prefixes (see the
SNMP-TSM-MIB::snmpTsmConfigurationUsePrefix object for
details) will result in securityName lengths that
exceed what VACM can handle.
Values for type otherName(5) are converted to a valid
securityName by using only the decoded value portion of the
OtherName sequence. I.E. the OBJECT IDENTIFIER portion of the
OtherName sequence is not included as part of the resulting
securityName."
DEFVAL { any }
::= { tlstmCertToSNEntry 5 }
tlstmCertToSNStorageType OBJECT-TYPE tlstmCertToTSNStorageType OBJECT-TYPE
SYNTAX StorageType SYNTAX StorageType
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The storage type for this conceptual row. Conceptual rows "The storage type for this conceptual row. Conceptual rows
having the value 'permanent' need not allow write-access to having the value 'permanent' need not allow write-access to
any columnar objects in the row." any columnar objects in the row."
DEFVAL { nonVolatile } DEFVAL { nonVolatile }
::= { tlstmCertToSNEntry 6 } ::= { tlstmCertToTSNEntry 5 }
tlstmCertToSNRowStatus OBJECT-TYPE tlstmCertToTSNRowStatus OBJECT-TYPE
SYNTAX RowStatus SYNTAX RowStatus
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The status of this conceptual row. This object may be used "The status of this conceptual row. This object may be used
to create or remove rows from this table. to create or remove rows from this table.
To create a row in this table, a manager must set this object To create a row in this table, a manager must set this object
to either createAndGo(4) or createAndWait(5). to either createAndGo(4) or createAndWait(5).
Until instances of all corresponding columns are appropriately Until instances of all corresponding columns are appropriately
configured, the value of the corresponding instance of the configured, the value of the corresponding instance of the
tlstmParamsRowStatus column is 'notReady'. tlstmParamsRowStatus column is 'notReady'.
In particular, a newly created row cannot be made active until In particular, a newly created row cannot be made active until
the corresponding tlstmCertToSNFingerprint, the corresponding tlstmCertToTSNFingerprint,
tlstmCertToSNMapType, tlstmCertToSNSecurityName, and tlstmCertToTSNMapType, and tlstmCertToTSNData columns have been
tlstmCertToSNSANType columns have been set. set.
The following objects may not be modified while the The following objects may not be modified while the
value of this object is active(1): value of this object is active(1):
- tlstmCertToTSNFingerprint
- tlstmCertToSNFingerprint - tlstmCertToTSNMapType
- tlstmCertToSNMapType - tlstmCertToTSNData
- tlstmCertToSNSecurityName
- tlstmCertToSNSANType
An attempt to set these objects while the value of An attempt to set these objects while the value of
tlstmParamsRowStatus is active(1) will result in tlstmParamsRowStatus is active(1) will result in
an inconsistentValue error." an inconsistentValue error."
::= { tlstmCertToSNEntry 7 } ::= { tlstmCertToTSNEntry 6 }
-- Maps tmSecurityNames to certificates for use by the SNMP-TARGET-MIB
tlstmParamsCount OBJECT-TYPE tlstmParamsCount OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Unsigned32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A count of the number of entries in the tlstmParamsTable" "A count of the number of entries in the tlstmParamsTable"
::= { tlstmCertificateMapping 4 } ::= { tlstmCertificateMapping 4 }
tlstmParamsTableLastChanged OBJECT-TYPE tlstmParamsTableLastChanged OBJECT-TYPE
skipping to change at page 47, line 8 skipping to change at page 42, line 30
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A conceptual row containing a fingerprint hash of a locally "A conceptual row containing a fingerprint hash of a locally
held certificate for a given snmpTargetParamsEntry. The held certificate for a given snmpTargetParamsEntry. The
values in this row should be ignored if the connection that values in this row should be ignored if the connection that
needs to be established, as indicated by the SNMP-TARGET-MIB needs to be established, as indicated by the SNMP-TARGET-MIB
infrastructure, is not a certificate and (D)TLS based infrastructure, is not a certificate and (D)TLS based
connection. The connection SHOULD NOT be established if the connection. The connection SHOULD NOT be established if the
certificate fingerprint stored in this entry does not point to certificate fingerprint stored in this entry does not point to
a valid locally held certificate or if it points to an usable a valid locally held certificate or if it points to an unusable
certificate (such as might happen when the certificate's certificate (such as might happen when the certificate's
expiration date has been reached)." expiration date has been reached)."
INDEX { IMPLIED snmpTargetParamsName } INDEX { IMPLIED snmpTargetParamsName }
::= { tlstmParamsTable 1 } ::= { tlstmParamsTable 1 }
TlstmParamsEntry ::= SEQUENCE { TlstmParamsEntry ::= SEQUENCE {
tlstmParamsClientFingerprint Fingerprint, tlstmParamsClientFingerprint Fingerprint,
tlstmParamsStorageType StorageType, tlstmParamsStorageType StorageType,
tlstmParamsRowStatus RowStatus tlstmParamsRowStatus RowStatus
} }
skipping to change at page 49, line 9 skipping to change at page 44, line 30
::= { tlstmCertificateMapping 8 } ::= { tlstmCertificateMapping 8 }
tlstmAddrTable OBJECT-TYPE tlstmAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF TlstmAddrEntry SYNTAX SEQUENCE OF TlstmAddrEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This table extends the SNMP-TARGET-MIB's snmpTargetAddrTable "This table extends the SNMP-TARGET-MIB's snmpTargetAddrTable
with an expected (D)TLS server-side certificate identifier to with an expected (D)TLS server-side certificate identifier to
expect when establishing a new (D)TLS connections. If a expect when establishing a new (D)TLS connections. If a
matching row in this table exists and the row is active then a matching row in this table exists and the row is active then
local copy of the certificate matching the fingerprint the fingerprint identifier from the tlstmAddrServerFingerprint
identifier should be compared against the certificate being columnshould be compared against the fingerprint of the
presented by the server. If the certificate presented by the certificate being presented by the server. If the fingerprint
server does not match the locally held copy then the of the certificate presented by the server does not match the
connection MUST NOT be established. If no matching row exists tlstmAddrServerFingerprint column's value then the connection
in this table then the connection SHOULD still proceed if MUST NOT be established.
another certificate validation path algorithm (e.g. RFC5280)
can be followed to a configured trust anchor. " If a matching row exists with a zero-length
tlstmAddrServerFingerprint value and the certificate can still
be validated through another certificate validation path
(e.g. RFC5280) then the server's presented identity should be
checked against the value of the tlstmAddrServerIdentity
column. If the server's identity does not match the reference
identity found in the tlstmAddrServerIdentity column then the
connection MUST NOT be established. A tlstmAddrServerIdentity
may contain a '*' to match any server's identity or may
contain a '*.' prefix to match any server identity from a
given domain (e.g. '*.example.com').
If no matching row exists in this table then the connection
SHOULD still proceed if another certificate validation path
algorithm (e.g. RFC5280) can be followed to a configured trust
anchor."
::= { tlstmCertificateMapping 9 } ::= { tlstmCertificateMapping 9 }
tlstmAddrEntry OBJECT-TYPE tlstmAddrEntry OBJECT-TYPE
SYNTAX TlstmAddrEntry SYNTAX TlstmAddrEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A conceptual row containing a copy of a locally held "A conceptual row containing a copy of a certificate's
certificate's fingerprint for a given snmpTargetAddrEntry. fingerprint for a given snmpTargetAddrEntry. The values in
The values in this row should be ignored if the connection this row should be ignored if the connection that needs to be
that needs to be established, as indicated by the established, as indicated by the SNMP-TARGET-MIB
SNMP-TARGET-MIB infrastructure, is not a (D)TLS based infrastructure, is not a (D)TLS based connection. If an
connection. If an tlstmAddrEntry exists for a given tlstmAddrEntry exists for a given snmpTargetAddrEntry then the
snmpTargetAddrEntry then the presented server certificate MUST presented server certificate MUST match or the connection MUST
match or the connection MUST NOT be established. If a row in NOT be established. If a row in this table does not exist to
this table does not exist to match a snmpTargetAddrEntry row match a snmpTargetAddrEntry row then the connection SHOULD
then the connection SHOULD still proceed if some other still proceed if some other certificate validation path
certificate validation path algorithm (e.g. RFC5280) can be algorithm (e.g. RFC5280) can be followed to a configured trust
followed to a configured trust anchor." anchor."
INDEX { IMPLIED snmpTargetAddrName } INDEX { IMPLIED snmpTargetAddrName }
::= { tlstmAddrTable 1 } ::= { tlstmAddrTable 1 }
TlstmAddrEntry ::= SEQUENCE { TlstmAddrEntry ::= SEQUENCE {
tlstmAddrServerFingerprint Fingerprint, tlstmAddrServerFingerprint Fingerprint,
tlstmAddrStorageType StorageType, tlstmAddrServerIdentity SnmpAdminString,
tlstmAddrRowStatus RowStatus tlstmAddrStorageType StorageType,
tlstmAddrRowStatus RowStatus
} }
tlstmAddrServerFingerprint OBJECT-TYPE tlstmAddrServerFingerprint OBJECT-TYPE
SYNTAX Fingerprint SYNTAX Fingerprint
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A cryptographic hash of a public X.509 certificate. This "A cryptographic hash of a public X.509 certificate. This
object should store the hash of a local copy of the public object should store the hash of the public X.509 certificate
X.509 certificate that the remote server should present during that the remote server should present during the (D)TLS
the (D)TLS connection setup. The presented certificate and connection setup. The fingerprint of the presented
the locally held copy, referred to by this hash value, MUST certificate and this hash value MUST match exactly or the
match exactly or the connection MUST NOT be established." connection MUST NOT be established."
DEFVAL { "" }
::= { tlstmAddrEntry 1 } ::= { tlstmAddrEntry 1 }
tlstmAddrServerIdentity OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The reference identity to check against the identity
presented by the remote system. A single ASCII '*' character
(ASCII code 0x2a) may be used as a wildcard string and will
match any presented server identity. A '*.' prefix may also
be used to match any identity within a given domain
(e.g. '*.example.com' will match both 'foo.example.com' and
'bar.example.com')."
REFERENCE "draft-saintandre-tls-server-id-check"
DEFVAL { "*" }
::= { tlstmAddrEntry 2 }
tlstmAddrStorageType OBJECT-TYPE tlstmAddrStorageType OBJECT-TYPE
SYNTAX StorageType SYNTAX StorageType
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The storage type for this conceptual row. Conceptual rows "The storage type for this conceptual row. Conceptual rows
having the value 'permanent' need not allow write-access to having the value 'permanent' need not allow write-access to
any columnar objects in the row." any columnar objects in the row."
DEFVAL { nonVolatile } DEFVAL { nonVolatile }
::= { tlstmAddrEntry 2 } ::= { tlstmAddrEntry 3 }
tlstmAddrRowStatus OBJECT-TYPE tlstmAddrRowStatus OBJECT-TYPE
SYNTAX RowStatus SYNTAX RowStatus
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The status of this conceptual row. This object may be used "The status of this conceptual row. This object may be used
to create or remove rows from this table. to create or remove rows from this table.
To create a row in this table, a manager must To create a row in this table, a manager must
skipping to change at page 51, line 8 skipping to change at page 47, line 14
An attempt to set these objects while the value of An attempt to set these objects while the value of
tlstmAddrRowStatus is active(1) will result in tlstmAddrRowStatus is active(1) will result in
an inconsistentValue error. an inconsistentValue error.
If this row is deleted it has no effect on the corresponding If this row is deleted it has no effect on the corresponding
row in the targetAddrTable. row in the targetAddrTable.
If the corresponding row in the targetAddrTable is deleted If the corresponding row in the targetAddrTable is deleted
then this row must be automatically removed." then this row must be automatically removed."
::= { tlstmAddrEntry 3 } ::= { tlstmAddrEntry 4 }
-- ************************************************ -- ************************************************
-- tlstmNotifications - Notifications Information -- tlstmNotifications - Notifications Information
-- ************************************************ -- ************************************************
tlstmServerCertNotFound NOTIFICATION-TYPE tlstmServerCertificateUnknown NOTIFICATION-TYPE
OBJECTS { tlstmSessionUnknownServerCertificate }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Notification that the server certificate presented by a SNMP "Notification that the server certificate presented by a SNMP
over (D)TLS server could not be found in the tlstmAddrTable." over (D)TLS server was invalid because no configured
fingerprint or CA was acceptable to validate it. This may
result because there was no entry in the tlstmAddrTable or
because no path could be found to known certificate
authority.
To avoid notification loops, this notification MUST NOT be
sent to servers that themselves have triggered the
notification."
::= { tlstmNotifications 1 } ::= { tlstmNotifications 1 }
tlstmServerAuthFailure NOTIFICATION-TYPE tlstmServerInvalidCertificate NOTIFICATION-TYPE
OBJECTS { tlstmAddrServerFingerprint } OBJECTS { tlstmAddrServerFingerprint,
tlstmSessionInvalidServerCertificates}
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Notification that the server certificate presented by an SNMP "Notification that the server certificate presented by an SNMP
over (D)TLS server was found, but the connection could not be over (D)TLS server could not be validated even if the
established because of a cryptographic validation failure." fingerprint or expected validation path was known. I.E., a
cryptographic validation occurred during certificate
validation processing.
To avoid notification loops, this notification MUST NOT be
sent to servers that themselves have triggered the
notification."
::= { tlstmNotifications 2 } ::= { tlstmNotifications 2 }
-- ************************************************ -- ************************************************
-- tlstmCompliances - Conformance Information -- tlstmCompliances - Conformance Information
-- ************************************************ -- ************************************************
tlstmCompliances OBJECT IDENTIFIER ::= { tlstmConformance 1 } tlstmCompliances OBJECT IDENTIFIER ::= { tlstmConformance 1 }
tlstmGroups OBJECT IDENTIFIER ::= { tlstmConformance 2 } tlstmGroups OBJECT IDENTIFIER ::= { tlstmConformance 2 }
skipping to change at page 52, line 19 skipping to change at page 48, line 39
-- ************************************************ -- ************************************************
-- Units of conformance -- Units of conformance
-- ************************************************ -- ************************************************
tlstmStatsGroup OBJECT-GROUP tlstmStatsGroup OBJECT-GROUP
OBJECTS { OBJECTS {
tlstmSessionOpens, tlstmSessionOpens,
tlstmSessionCloses, tlstmSessionCloses,
tlstmSessionOpenErrors, tlstmSessionOpenErrors,
tlstmSessionNoAvailableSessions, tlstmSessionNoAvailableSessions,
tlstmSessionInvalidClientCertificates, tlstmSessionInvalidClientCertificates,
tlstmSessionUnknownServerCertificate,
tlstmSessionInvalidServerCertificates, tlstmSessionInvalidServerCertificates,
tlstmTLSProtectionErrors tlstmTLSProtectionErrors
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A collection of objects for maintaining "A collection of objects for maintaining
statistical information of an SNMP engine which statistical information of an SNMP engine which
implements the SNMP TLS Transport Model." implements the SNMP TLS Transport Model."
::= { tlstmGroups 1 } ::= { tlstmGroups 1 }
tlstmIncomingGroup OBJECT-GROUP tlstmIncomingGroup OBJECT-GROUP
OBJECTS { OBJECTS {
tlstmCertToSNCount, tlstmCertToTSNCount,
tlstmCertToSNTableLastChanged, tlstmCertToTSNTableLastChanged,
tlstmCertToSNFingerprint, tlstmCertToTSNFingerprint,
tlstmCertToSNMapType, tlstmCertToTSNMapType,
tlstmCertToSNSecurityName, tlstmCertToTSNData,
tlstmCertToSNSANType, tlstmCertToTSNStorageType,
tlstmCertToSNStorageType, tlstmCertToTSNRowStatus
tlstmCertToSNRowStatus
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A collection of objects for maintaining "A collection of objects for maintaining
incoming connection certificate mappings to incoming connection certificate mappings to
securityNames of an SNMP engine which implements the tmSecurityNames of an SNMP engine which implements the
SNMP TLS Transport Model." SNMP TLS Transport Model."
::= { tlstmGroups 2 } ::= { tlstmGroups 2 }
tlstmOutgoingGroup OBJECT-GROUP tlstmOutgoingGroup OBJECT-GROUP
OBJECTS { OBJECTS {
tlstmParamsCount, tlstmParamsCount,
tlstmParamsTableLastChanged, tlstmParamsTableLastChanged,
tlstmParamsClientFingerprint, tlstmParamsClientFingerprint,
tlstmParamsStorageType, tlstmParamsStorageType,
tlstmParamsRowStatus, tlstmParamsRowStatus,
tlstmAddrCount, tlstmAddrCount,
tlstmAddrTableLastChanged, tlstmAddrTableLastChanged,
tlstmAddrServerFingerprint, tlstmAddrServerFingerprint,
tlstmAddrServerIdentity,
tlstmAddrStorageType, tlstmAddrStorageType,
tlstmAddrRowStatus tlstmAddrRowStatus
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A collection of objects for maintaining "A collection of objects for maintaining
outgoing connection certificates to use when opening outgoing connection certificates to use when opening
connections as a result of SNMP-TARGET-MIB settings." connections as a result of SNMP-TARGET-MIB settings."
::= { tlstmGroups 3 } ::= { tlstmGroups 3 }
tlstmNotificationGroup NOTIFICATION-GROUP tlstmNotificationGroup NOTIFICATION-GROUP
NOTIFICATIONS { NOTIFICATIONS {
tlstmServerCertNotFound, tlstmServerCertificateUnknown,
tlstmServerAuthFailure tlstmServerInvalidCertificate
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Notifications" "Notifications"
::= { tlstmGroups 4 } ::= { tlstmGroups 4 }
END END
8. Operational Considerations 8. Operational Considerations
skipping to change at page 53, line 48 skipping to change at page 50, line 23
A session is discussed throughout this document as meaning a security A session is discussed throughout this document as meaning a security
association between the (D)TLS client and the (D)TLS server. State association between the (D)TLS client and the (D)TLS server. State
information for the sessions are maintained in each TLSTM information for the sessions are maintained in each TLSTM
implementation and this information is created and destroyed as implementation and this information is created and destroyed as
sessions are opened and closed. A "broken" session (one side up and sessions are opened and closed. A "broken" session (one side up and
one side down) can result if one side of a session is brought down one side down) can result if one side of a session is brought down
abruptly (i.e., reboot, power outage, etc.). Whenever possible, abruptly (i.e., reboot, power outage, etc.). Whenever possible,
implementations SHOULD provide graceful session termination through implementations SHOULD provide graceful session termination through
the use of disconnect messages. Implementations SHOULD also have a the use of disconnect messages. Implementations SHOULD also have a
system in place for dealing with "broken" sessions. Implementations system in place for detecting "broken" sessions through the use of
SHOULD support the session resumption feature of TLS. heartbeats [I-D.seggelmann-tls-dtls-heartbeat] or other detection
mechanisms.
To simplify session management it is RECOMMENDED that implementations
use separate ports for Notification sessions and for Command
sessions. If this implementation recommendation is followed, (D)TLS
clients will always send REQUEST messages and (D)TLS servers will
always send RESPONSE messages. With this assertion, implementations
may be able to simplify "broken" session handling, session
resumption, and other aspects of session management such as
guaranteeing that Request- Response pairs use the same session.
Implementations SHOULD limit the lifetime of established sessions Implementations SHOULD limit the lifetime of established sessions
depending on the algorithms used for generation of the master session depending on the algorithms used for generation of the master session
secret, the privacy and integrity algorithms used to protect secret, the privacy and integrity algorithms used to protect
messages, the environment of the session, the amount of data messages, the environment of the session, the amount of data
transferred, and the sensitivity of the data. transferred, and the sensitivity of the data.
8.2. Notification Receiver Credential Selection 8.2. Notification Receiver Credential Selection
When an SNMP engine needs to establish an outgoing session for When an SNMP engine needs to establish an outgoing session for
skipping to change at page 54, line 37 skipping to change at page 50, line 50
be successful. be successful.
One solution is to maintain a one-to-one mapping between certificates One solution is to maintain a one-to-one mapping between certificates
and incoming ports for notification receivers. This can be handled and incoming ports for notification receivers. This can be handled
at the Notification Originator by configuring the snmpTargetAddrTable at the Notification Originator by configuring the snmpTargetAddrTable
(snmpTargetAddrTDomain and snmpTargetAddrTAddress) and requiring the (snmpTargetAddrTDomain and snmpTargetAddrTAddress) and requiring the
receiving SNMP engine to monitor multiple incoming static ports based receiving SNMP engine to monitor multiple incoming static ports based
on which principals are capable of receiving notifications. on which principals are capable of receiving notifications.
Implementations MAY also choose to designate a single Notification Implementations MAY also choose to designate a single Notification
Receiver Principal to receive all incoming TRAPS and INFORMS or Receiver Principal to receive all incoming notifications or select an
select an implementation specific method of selecting a server implementation specific method of selecting a server certificate to
certificate to present to clients. present to clients.
8.3. contextEngineID Discovery 8.3. contextEngineID Discovery
Most Command Responders have contextEngineIDs that are identical to Most Command Responders have contextEngineIDs that are identical to
the USM securityEngineID. USM provides a discovery service that the USM securityEngineID. USM provides a discovery service that
allows Command Generators to determine a securityEngineID and thus a allows Command Generators to determine a securityEngineID and thus a
default contextEngineID to use. Because the TLS Transport Model does default contextEngineID to use. Because the TLS Transport Model does
not make use of a securityEngineID, it may be difficult for Command not make use of a securityEngineID, it may be difficult for Command
Generators to discover a suitable default contextEngineID. Generators to discover a suitable default contextEngineID.
Implementations should consider offering another engineID discovery Implementations should consider offering another engineID discovery
mechanism to continue providing Command Generators with a suitable mechanism to continue providing Command Generators with a suitable
contextEngineID mechanism. A recommended discovery solution is contextEngineID mechanism. A recommended discovery solution is
documented in [RFC5343]. documented in [RFC5343].
8.4. Transport Considerations
This document defines how SNMP messages can be transmitted over the
TLS and DTLS based protocols. Each of these protocols are
additionally based on other transports (TCP, UDP and SCTP). These
three protocols also have operational considerations that must be
taken into consideration when selecting a (D)TLS based protocol to
use such as its performance in degraded or limited networks. It is
beyond the scope of this document to summarize the characteristics of
these transport mechanisms. Please refer to the base protocol
documents for details on messaging considerations with respect to MTU
size, fragmentation, performance in lossy-networks, etc.
9. Security Considerations 9. Security Considerations
This document describes a transport model that permits SNMP to This document describes a transport model that permits SNMP to
utilize (D)TLS security services. The security threats and how the utilize (D)TLS security services. The security threats and how the
(D)TLS transport model mitigates these threats are covered in detail (D)TLS transport model mitigates these threats are covered in detail
throughout this document. Security considerations for DTLS are throughout this document. Security considerations for DTLS are
covered in [RFC4347] and security considerations for TLS are covered in [RFC4347] and security considerations for TLS are
described in Section 11 and Appendices D, E, and F of TLS 1.2 described in Section 11 and Appendices D, E, and F of TLS 1.2
[RFC5246]. DTLS adds to the security considerations of TLS only [RFC5246]. DTLS adds to the security considerations of TLS only
because it is more vulnerable to denial of service attacks. A random because it is more vulnerable to denial of service attacks. A random
skipping to change at page 56, line 10 skipping to change at page 52, line 43
For example, Command Generators must check that the Command Responder For example, Command Generators must check that the Command Responder
presented and authenticated itself with a X.509 certificate that was presented and authenticated itself with a X.509 certificate that was
expected. Not doing so would allow an impostor, at a minimum, to expected. Not doing so would allow an impostor, at a minimum, to
present false data, receive sensitive information and/or provide a present false data, receive sensitive information and/or provide a
false belief that configuration was actually received and acted upon. false belief that configuration was actually received and acted upon.
Authenticating and verifying the identity of the (D)TLS server and Authenticating and verifying the identity of the (D)TLS server and
the (D)TLS client for all operations ensures the authenticity of the the (D)TLS client for all operations ensures the authenticity of the
SNMP engine that provides MIB data. SNMP engine that provides MIB data.
The instructions found in the DESCRIPTION clause of the The instructions found in the DESCRIPTION clause of the
tlstmCertToSNTable object must be followed exactly. It is also tlstmCertToTSNTable object must be followed exactly. It is also
important that the rows of the table be searched in prioritized order important that the rows of the table be searched in prioritized order
starting with the row containing the lowest numbered tlstmCertToSNID starting with the row containing the lowest numbered tlstmCertToTSNID
value. value.
9.2. Use with SNMPv1/SNMPv2c Messages 9.2. Use with SNMPv1/SNMPv2c Messages
The SNMPv1 and SNMPv2c message processing described in RFC3484 (BCP The SNMPv1 and SNMPv2c message processing described in [RFC3584] (BCP
74) [RFC3584] always selects the SNMPv1(1) Security Model for an 74) always selects the SNMPv1 or SNMPv2c Security Models,
SNMPv1 message, or the SNMPv2c(2) Security Model for an SNMPv2c respectively. Both of these and the User-based Security Model
message. When running SNMPv1/SNMPv2c over a secure transport like typically used with SNMPv3 derive the securityName and securityLevel
the TLS Transport Model, the securityName and securityLevel used for from the SNMP message received, even when the message was received
access control decisions are then derived from the community string, over a secure transport. Access control decisions are therefore made
not the authenticated identity and securityLevel provided by the TLS based on the contents of the SNMP message, rather than using the
authenticated identity and securityLevel provided by the SSH
Transport Model. Transport Model.
9.3. MIB Module Security 9.3. MIB Module Security
There are a number of management objects defined in this MIB module There are a number of management objects defined in this MIB module
with a MAX-ACCESS clause of read-write and/or read-create. Such with a MAX-ACCESS clause of read-write and/or read-create. Such
objects may be considered sensitive or vulnerable in some network objects may be considered sensitive or vulnerable in some network
environments. The support for SET operations in a non-secure environments. The support for SET operations in a non-secure
environment without proper protection can have a negative effect on environment without proper protection can have a negative effect on
network operations. These are the tables and objects and their network operations. These are the tables and objects and their
skipping to change at page 57, line 6 skipping to change at page 53, line 39
o The tlstmAddrTable can be used to change the expectations of the o The tlstmAddrTable can be used to change the expectations of the
certificates presented by a remote (D)TLS server. Modification to certificates presented by a remote (D)TLS server. Modification to
objects in this table need to be adequately authenticated since objects in this table need to be adequately authenticated since
modification to values in this table will have profound impacts to modification to values in this table will have profound impacts to
the security of outbound connections from the device. Since the security of outbound connections from the device. Since
knowledge of authorization rules and certificate usage mechanisms knowledge of authorization rules and certificate usage mechanisms
may be considered sensitive, protection from disclosure of the may be considered sensitive, protection from disclosure of the
SNMP traffic via encryption is also highly recommended. SNMP traffic via encryption is also highly recommended.
o The tlstmCertToSNTable is used to specify the mapping of incoming o The tlstmCertToTSNTable is used to specify the mapping of incoming
X.509 certificates to SNMPv3 securityNames. Modification to X.509 certificates to tmSecurityNames which eventually get mapped
objects in this table need to be adequately authenticated since to a SNMPv3 securityName. Modification to objects in this table
modification to values in this table will have profound impacts to need to be adequately authenticated since modification to values
the security of incoming connections to the device. Since in this table will have profound impacts to the security of
knowledge of authorization rules and certificate usage mechanisms incoming connections to the device. Since knowledge of
may be considered sensitive, protection from disclosure of the authorization rules and certificate usage mechanisms may be
SNMP traffic via encryption is also highly recommended. considered sensitive, protection from disclosure of the SNMP
traffic via encryption is also highly recommended.
Some of the readable objects in this MIB module (i.e., objects with a Some of the readable objects in this MIB module (i.e., objects with a
MAX-ACCESS other than not-accessible) may be considered sensitive or MAX-ACCESS other than not-accessible) may be considered sensitive or
vulnerable in some network environments. It is thus important to vulnerable in some network environments. It is thus important to
control even GET and/or NOTIFY access to these objects and possibly control even GET and/or NOTIFY access to these objects and possibly
to even encrypt the values of these objects when sending them over to even encrypt the values of these objects when sending them over
the network via SNMP. These are the tables and objects and their the network via SNMP. These are the tables and objects and their
sensitivity/vulnerability: sensitivity/vulnerability:
o This MIB contains a collection of counters that monitor the (D)TLS o This MIB contains a collection of counters that monitor the (D)TLS
skipping to change at page 58, line 5 skipping to change at page 54, line 38
enable cryptographic security. It is then a customer/operator enable cryptographic security. It is then a customer/operator
responsibility to ensure that the SNMP entity giving access to an responsibility to ensure that the SNMP entity giving access to an
instance of this MIB module is properly configured to give access to instance of this MIB module is properly configured to give access to
the objects only to those principals (users) that have legitimate the objects only to those principals (users) that have legitimate
rights to indeed GET or SET (change/create/delete) them. rights to indeed GET or SET (change/create/delete) them.
10. IANA Considerations 10. IANA Considerations
IANA is requested to assign: IANA is requested to assign:
1. a TCP port number in the range 1..1023 in the 1. a TCP port number above 1023 in the
http://www.iana.org/assignments/port-numbers registry which will http://www.iana.org/assignments/port-numbers registry which will
be the default port for receipt of SNMP command messages over a be the default port for receipt of SNMP command messages over a
TLS Transport Model as defined in this document, TLS Transport Model as defined in this document,
2. a TCP port number in the range 1..1023 in the 2. a TCP port number above 1023 in the
http://www.iana.org/assignments/port-numbers registry which will http://www.iana.org/assignments/port-numbers registry which will
be the default port for receipt of SNMP notification messages be the default port for receipt of SNMP notification messages
over a TLS Transport Model as defined in this document, over a TLS Transport Model as defined in this document,
3. a UDP port number in the range 1..1023 in the 3. a UDP port number above 1023 in the
http://www.iana.org/assignments/port-numbers registry which will http://www.iana.org/assignments/port-numbers registry which will
be the default port for receipt of SNMP command messages over a be the default port for receipt of SNMP command messages over a
DTLS/UDP connection as defined in this document, DTLS/UDP connection as defined in this document,
4. a UDP port number in the range 1..1023 in the 4. a UDP port number above 1023 in the
http://www.iana.org/assignments/port-numbers registry which will http://www.iana.org/assignments/port-numbers registry which will
be the default port for receipt of SNMP notification messages be the default port for receipt of SNMP notification messages
over a DTLS/UDP connection as defined in this document, over a DTLS/UDP connection as defined in this document,
5. a SCTP port number in the range 1..1023 in the 5. a SCTP port number above 1023 in the
http://www.iana.org/assignments/port-numbers registry which will http://www.iana.org/assignments/port-numbers registry which will
be the default port for receipt of SNMP command messages over a be the default port for receipt of SNMP command messages over a
DTLS/SCTP connection as defined in this document, DTLS/SCTP connection as defined in this document,
6. a SCTP port number in the range 1..1023 in the 6. a SCTP port number above 1023 in the
http://www.iana.org/assignments/port-numbers registry which will http://www.iana.org/assignments/port-numbers registry which will
be the default port for receipt of SNMP notification messages be the default port for receipt of SNMP notification messages
over a DTLS/SCTP connection as defined in this document, over a DTLS/SCTP connection as defined in this document,
7. an SMI number under snmpDomains for the snmpTLSDomain object 7. an SMI number under snmpDomains for the snmpTLSTCPDomain object
identifier, identifier,
8. an SMI number under snmpDomains for the snmpDTLSUDPDomain object 8. an SMI number under snmpDomains for the snmpDTLSUDPDomain object
identifier, identifier,
9. an SMI number under snmpDomains for the snmpDTLSSCTPDomain 9. an SMI number under snmpDomains for the snmpDTLSSCTPDomain
object identifier, object identifier,
10. a SMI number under snmpModules, for the MIB module in this 10. a SMI number under snmpModules, for the MIB module in this
document, document,
11. "tls" as the corresponding prefix for the snmpTLSDomain in the 11. "tls" as the corresponding prefix for the snmpTLSTCPDomain in
SNMP Transport Model registry, the SNMP Transport Model registry,
12. "dudp" as the corresponding prefix for the snmpDTLSUDPDomain in 12. "dudp" as the corresponding prefix for the snmpDTLSUDPDomain in
the SNMP Transport Model registry, the SNMP Transport Model registry,
13. "dsct" as the corresponding prefix for the snmpDTLSSCTPDomain in 13. "dsct" as the corresponding prefix for the snmpDTLSSCTPDomain in
the SNMP Transport Model registry; the SNMP Transport Model registry;
If possible, IANA is requested to use matching port numbers for all If possible, IANA is requested to use matching port numbers for all
assignments for SNMP Commands being sent over TLS, DTLS/UDP, DTLS/ assignments for SNMP Commands being sent over TLS, DTLS/UDP, DTLS/
SCTP. SCTP.
skipping to change at page 61, line 21 skipping to change at page 58, line 8
[RFC2522] Karn, P. and W. Simpson, "Photuris: Session-Key Management [RFC2522] Karn, P. and W. Simpson, "Photuris: Session-Key Management
Protocol", RFC 2522, March 1999. Protocol", RFC 2522, March 1999.
[RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart,
"Introduction and Applicability Statements for Internet- "Introduction and Applicability Statements for Internet-
Standard Management Framework", RFC 3410, December 2002. Standard Management Framework", RFC 3410, December 2002.
[RFC4306] Kaufman, C., "Internet Key Exchange (IKEv2) Protocol", [RFC4306] Kaufman, C., "Internet Key Exchange (IKEv2) Protocol",
RFC 4306, December 2005. RFC 4306, December 2005.
[RFC4366] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
and T. Wright, "Transport Layer Security (TLS)
Extensions", RFC 4366, April 2006.
[RFC5292] Chen, E. and S. Sangli, "Address-Prefix-Based Outbound [RFC5292] Chen, E. and S. Sangli, "Address-Prefix-Based Outbound
Route Filter for BGP-4", RFC 5292, August 2008. Route Filter for BGP-4", RFC 5292, August 2008.
[RFC5343] Schoenwaelder, J., "Simple Network Management Protocol [RFC5343] Schoenwaelder, J., "Simple Network Management Protocol
(SNMP) Context EngineID Discovery", RFC 5343, (SNMP) Context EngineID Discovery", RFC 5343,
September 2008. September 2008.
[I-D.saintandre-tls-server-id-check] [I-D.saintandre-tls-server-id-check]
Saint-Andre, P., Zeilenga, K., Hodges, J., and B. Morgan, Saint-Andre, P., Zeilenga, K., Hodges, J., and B. Morgan,
"Best Practices for Checking of Server Identities in the "Best Practices for Checking of Server Identities in the
Context of Transport Layer Security (TLS)". Context of Transport Layer Security (TLS)".
[I-D.seggelmann-tls-dtls-heartbeat]
Seggelmann, R., Tuexen, M., and M. Williams, "Transport
Layer Security and Datagram Transport Layer Security
Heartbeat Extension".
[AES] National Institute of Standards, "Specification for the [AES] National Institute of Standards, "Specification for the
Advanced Encryption Standard (AES)". Advanced Encryption Standard (AES)".
[DES] National Institute of Standards, "American National [DES] National Institute of Standards, "American National
Standard for Information Systems-Data Link Encryption". Standard for Information Systems-Data Link Encryption".
[DSS] National Institute of Standards, "Digital Signature [DSS] National Institute of Standards, "Digital Signature
Standard". Standard".
[RSA] Rivest, R., Shamir, A., and L. Adleman, "A Method for [RSA] Rivest, R., Shamir, A., and L. Adleman, "A Method for
Obtaining Digital Signatures and Public-Key Obtaining Digital Signatures and Public-Key
Cryptosystems". Cryptosystems".
[x509] Rivest, R., Shamir, A., and L. M. Adleman, "A Method for [X509] , ITU., "INFORMATION TECHNOLOGY OPEN SYSTEMS
Obtaining Digital Signatures and Public-Key INTERCONNECTION THE DIRECTORY: PUBLIC-KEY AND ATTRIBUTE
Cryptosystems". CERTIFICATE FRAMEWORKS".
Appendix A. (D)TLS Overview Appendix A. (D)TLS Overview
The (D)TLS protocol is composed of two layers: the (D)TLS Record The (D)TLS protocol is composed of two layers: the (D)TLS Record
Protocol and the (D)TLS Handshake Protocol. The following Protocol and the (D)TLS Handshake Protocol. The following
subsections provide an overview of these two layers. Please refer to subsections provide an overview of these two layers. Please refer to
[RFC4347] for a complete description of the protocol. [RFC4347] for a complete description of the protocol.
A.1. The (D)TLS Record Protocol A.1. The (D)TLS Record Protocol
skipping to change at page 63, line 46 skipping to change at page 60, line 40
Appendix B. PKIX Certificate Infrastructure Appendix B. PKIX Certificate Infrastructure
Users of a public key from a PKIX / X.509 certificate can be be Users of a public key from a PKIX / X.509 certificate can be be
confident that the associated private key is owned by the correct confident that the associated private key is owned by the correct
remote subject (person or system) with which an encryption or digital remote subject (person or system) with which an encryption or digital
signature mechanism will be used. This confidence is obtained signature mechanism will be used. This confidence is obtained
through the use of public key certificates, which are data structures through the use of public key certificates, which are data structures
that bind public key values to subjects. The binding is asserted by that bind public key values to subjects. The binding is asserted by
having a trusted CA digitally sign each certificate. The CA may base having a trusted CA digitally sign each certificate. The CA may base
this assertion upon technical means (i.e., proof of possession this assertion upon technical means (i.e., proof of possession
through a challenge- response protocol), presentation of the private through a challenge-response protocol), presentation of the private
key, or on an assertion by the subject. A certificate has a limited key, or on an assertion by the subject. A certificate has a limited
valid lifetime which is indicated in its signed contents. Because a valid lifetime which is indicated in its signed contents. Because a
certificate's signature and timeliness can be independently checked certificate's signature and timeliness can be independently checked
by a certificate-using client, certificates can be distributed via by a certificate-using client, certificates can be distributed via
untrusted communications and server systems, and can be cached in untrusted communications and server systems, and can be cached in
unsecured storage in certificate-using systems. unsecured storage in certificate-using systems.
ITU-T X.509 (formerly CCITT X.509) or ISO/IEC/ITU 9594-8, which was ITU-T X.509 (formerly CCITT X.509) or ISO/IEC/ITU 9594-8 [X509],
first published in 1988 as part of the X.500 Directory which was first published in 1988 as part of the X.500 Directory
recommendations, defines a standard certificate format [x509] which recommendations, defines a standard certificate format which is a
is a certificate which binds a subject (principal) to a public key certificate which binds a subject (principal) to a public key value.
value. This was later further documented in [RFC5280].
This was later further expanded and documented in [RFC5280].
A X.509 certificate is a sequence of three required fields: A X.509 certificate is a sequence of three required fields:
tbsCertificate: The tbsCertificate field contains the names of the tbsCertificate: The tbsCertificate field contains the names of the
subject and issuer, a public key associated with the subject, a subject and issuer, a public key associated with the subject, a
validity period, and other associated information. This field may validity period, and other associated information. This field may
also contain extension components. also contain extension components.
signatureAlgorithm: The signatureAlgorithm field contains the signatureAlgorithm: The signatureAlgorithm field contains the
identifier for the cryptographic algorithm used by the certificate identifier for the cryptographic algorithm used by the certificate
skipping to change at page 64, line 40 skipping to change at page 61, line 34
CA certifies the validity of the information in the tbsCertificate CA certifies the validity of the information in the tbsCertificate
field. In particular, the CA certifies the binding between the field. In particular, the CA certifies the binding between the
public key material and the subject of the certificate. public key material and the subject of the certificate.
The basic X.509 authentication procedure is as follows: A system is The basic X.509 authentication procedure is as follows: A system is
initialized with a number of root certificates that contain the initialized with a number of root certificates that contain the
public keys of a number of trusted CAs. When a system receives a public keys of a number of trusted CAs. When a system receives a
X.509 certificate, signed by one of those CAs, the certificate has to X.509 certificate, signed by one of those CAs, the certificate has to
be verified. It first checks the signatureValue field by using the be verified. It first checks the signatureValue field by using the
public key of the corresponding trusted CA. Then it compares the public key of the corresponding trusted CA. Then it compares the
decrypted information with a digest of the tbsCertificate field. If digest of the received certificate with a digest of the
they match, then the subject in the tbsCertificate field is tbsCertificate field. If they match, then the subject in the
authenticated. tbsCertificate field is authenticated.
Appendix C. Target and Notificaton Configuration Example Appendix C. Target and Notificaton Configuration Example
Configuring the SNMP-TARGET-MIB and NOTIFICATION-MIB along with Configuring the SNMP-TARGET-MIB and NOTIFICATION-MIB along with
access control settings for the SNMP-VIEW-BASED-ACM-MIB can be a access control settings for the SNMP-VIEW-BASED-ACM-MIB can be a
daunting task without an example to follow. The following section daunting task without an example to follow. The following section
describes an example of what pieces must be in place to accomplish describes an example of what pieces must be in place to accomplish
this configuration. this configuration.
The isAccessAllowed() ASI requires configuration to exist in the The isAccessAllowed() ASI requires configuration to exist in the
skipping to change at page 65, line 35 skipping to change at page 62, line 28
This example will assume that the "administrators" group has been This example will assume that the "administrators" group has been
given proper permissions via rows in the vacmAccessTable and given proper permissions via rows in the vacmAccessTable and
vacmViewTreeFamilyTable. vacmViewTreeFamilyTable.
Depending on whether this VACM configuration is for a Command Depending on whether this VACM configuration is for a Command
Responder or a Command Generator the security name "blueberry" will Responder or a Command Generator the security name "blueberry" will
come from a few different locations. come from a few different locations.
C.1. Configuring the Notification Generator C.1. Configuring the Notification Generator
For Notification Generator's performing authorization checks, the For Notification Generators performing authorization checks, the
server's certificate must be verified against the expected server's certificate must be verified against the expected
certificate before proceeding to send the notification. The expected certificate before proceeding to send the notification. The expected
certificate from the server may be listed in the tlstmAddrTable or certificate from the server may be listed in the tlstmAddrTable or
may be determined through other X.509 path validation mechanisms. may be determined through other X.509 path validation mechanisms.
The securityName to use for VACM authorization checks is set by the The securityName to use for VACM authorization checks is set by the
SNMP-TARGET-MIB's snmpTargetParamsSecurityName column. SNMP-TARGET-MIB's snmpTargetParamsSecurityName column.
The certificate that the notification generator should present to the The certificate that the notification generator should present to the
server is taken from the tlstmParamsClientFingerprint column from the server is taken from the tlstmParamsClientFingerprint column from the
appropriate entry in the tlstmParamsTable table. appropriate entry in the tlstmParamsTable table.
C.2. Configuring the Command Responder C.2. Configuring the Command Responder
For Command Responder applications, the vacmSecurityName "blueberry" For Command Responder applications, the vacmSecurityName "blueberry"
value is a value that needs derive from an incoming (D)TLS session. value is a value that derived from an incoming (D)TLS session. The
The mapping from a recevied (D)TLS client certificate to a mapping from a recevied (D)TLS client certificate to a tmSecurityName
securityName is done with the tlstmCertToSNTable. The certificates is done with the tlstmCertToTSNTable. The certificates must be
must be loaded into the device so that a tlstmCertToSNEntry may refer loaded into the device so that a tlstmCertToTSNEntry may refer to it.
to it. As an example, consider the following entry which will As an example, consider the following entry which will provide a
provide a mapping from a client's public X.509's hash fingerprint mapping from a client's public X.509's hash fingerprint directly to
directly to the "blueberry" securityName: the "blueberry" tmSecurityName:
tlstmCertToSNID = 1 (chosen by ordering preference) tlstmCertToTSNID = 1 (chosen by ordering preference)
tlstmCertToSNFingerprint = HASH (appropriate fingerprint) tlstmCertToTSNFingerprint = HASH (appropriate fingerprint)
tlstmCertToSNMapType = 1 (specified) tlstmCertToTSNMapType = 1 (specified)
tlstmCertToSNSecurityName = "blueberry" tlstmCertToTSNSecurityName = "blueberry"
tlstmCertToSNStorageType = 3 (nonVolatile) tlstmCertToTSNStorageType = 3 (nonVolatile)
tlstmCertToSNRowStatus = 4 (createAndGo) tlstmCertToTSNRowStatus = 4 (createAndGo)
The above is an example of how to map a particular certificate to a The above is an example of how to map a particular certificate to a
particular securityName. It is recommended, however, that users make particular tmSecurityName. It is recommended, however, that users
use of direct subjectAltName or CommonName mappings where possible as make use of direct subjectAltName or CommonName mappings where
it provides a more scalable approach to certificate management. This possible as it provides a more scalable approach to certificate
entry provides an example of using a subjectAltName mapping: management. This entry provides an example of using a subjectAltName
mapping:
tlstmCertToSNID = 1 (chosen by ordering preference) tlstmCertToTSNID = 1 (chosen by ordering preference)
tlstmCertToSNFingerprint = HASH (appropriate fingerprint) tlstmCertToTSNFingerprint = HASH (appropriate fingerprint)
tlstmCertToSNMapType = 2 (bySubjectAltName) tlstmCertToTSNMapType = 2 (bySubjectAltName)
tlstmCertToSNSANType = 1 (any) tlstmCertToTSNSANType = 1 (any)
tlstmCertToSNStorageType = 3 (nonVolatile) tlstmCertToTSNStorageType = 3 (nonVolatile)
tlstmCertToSNRowStatus = 4 (createAndGo) tlstmCertToTSNRowStatus = 4 (createAndGo)
The above entry indicates the subjectAltName field for certificates The above entry indicates the subjectAltName field for certificates
created by an Issuing certificate with a corresponding fingerprint created by an issuing certificate with a corresponding fingerprint
will be trusted to always produce common names that are directly 1 to will be trusted to always produce common names that are directly one-
1 mappable into SNMPv3 securityNames. This type of configuration to-one mappable into tmSecurityNames. This type of configuration
should only be used when the certificate authorities naming should only be used when the certificate authorities naming
conventions are carefully controlled. conventions are carefully controlled.
In the example, if the incoming (D)TLS client provided certificate In the example, if the incoming (D)TLS client provided certificate
contained a subjectAltName where the first listed subjectAltName in contained a subjectAltName where the first listed subjectAltName in
the extension is the rfc822Name of "blueberry", the certificate was the extension is the rfc822Name of "blueberry@example.com", the
signed by a certificate matching the tlstmCertToSNFingerprint value certificate was signed by a certificate matching the
and the CA's certificate was properly installed on the device then tlstmCertToTSNFingerprint value and the CA's certificate was properly
the string "blueberry" would be used as the securityName for the installed on the device then the string "blueberry@example.com" would
session. be used as the tmSecurityName for the session.
Author's Address Author's Address
Wes Hardaker Wes Hardaker
Sparta, Inc. Sparta, Inc.
P.O. Box 382 P.O. Box 382
Davis, CA 95617 Davis, CA 95617
USA USA
Phone: +1 530 792 1913 Phone: +1 530 792 1913
 End of changes. 198 change blocks. 
851 lines changed or deleted 711 lines changed or added

This html diff was produced by rfcdiff 1.37b. The latest version is available from http://tools.ietf.org/tools/rfcdiff/