| < 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 4 ¶ | skipping to change at page 35, line 45 ¶ | |||
| executed as an (D)TLS client, whether it succeeded or failed." | executed as an (D)TLS client, whether it succeeded or failed." | |||
| ::= { tlstmSession 2 } | ::= { tlstmSession 2 } | |||
| tlstmSessionOpenErrors OBJECT-TYPE | tlstmSessionOpenErrors 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 openSession() request failed to open a | "The number of times an openSession() request failed to open a | |||
| session as a (D)TLS client, for any reason." | session as a (D)TLS client, for any reason." | |||
| ::= { tlstmSession 3 } | ::= { tlstmSession 3 } | |||
| tlstmSessionNoAvailableSessions OBJECT-TYPE | tlstmSessionNoAvailableSessions 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 message was dropped because | "The number of times an outgoing message was dropped because | |||
| the session associated with the passed tmStateReference was no | the session associated with the passed tmStateReference was no | |||
| 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. 199 change blocks. | ||||
| 852 lines changed or deleted | 711 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||