| < draft-hardaker-isms-dtls-tm-02.txt | draft-hardaker-isms-dtls-tm-03.txt > | |||
|---|---|---|---|---|
| ISMS W. Hardaker | ISMS W. Hardaker | |||
| Internet-Draft Sparta, Inc. | Internet-Draft Sparta, Inc. | |||
| Intended status: Informational December 10, 2008 | Intended status: Standards Track March 9, 2009 | |||
| Expires: June 13, 2009 | Expires: September 10, 2009 | |||
| Datagram Transport Layer Security Transport Model for SNMP | Datagram Transport Layer Security Transport Model for SNMP | |||
| draft-hardaker-isms-dtls-tm-02.txt | draft-hardaker-isms-dtls-tm-03.txt | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | This Internet-Draft is submitted to IETF in full conformance with the | |||
| applicable patent or other IPR claims of which he or she is aware | provisions of BCP 78 and BCP 79. This document may contain material | |||
| have been or will be disclosed, and any of which he or she becomes | from IETF Documents or IETF Contributions published or made publicly | |||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | 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 June 13, 2009. | This Internet-Draft will expire on September 10, 2009. | |||
| Copyright Notice | ||||
| Copyright (c) 2009 IETF Trust and the persons identified as the | ||||
| document authors. All rights reserved. | ||||
| This document is subject to BCP 78 and the IETF Trust's Legal | ||||
| Provisions Relating to IETF Documents in effect on the date of | ||||
| publication of this document (http://trustee.ietf.org/license-info). | ||||
| Please review these documents carefully, as they describe your rights | ||||
| and restrictions with respect to this document. | ||||
| Abstract | Abstract | |||
| This document describes a Transport Model for the Simple Network | This document describes a Transport Model for the Simple Network | |||
| Management Protocol (SNMP), that uses the Datagram Transport Layer | Management Protocol (SNMP), that uses the Datagram Transport Layer | |||
| Security (DTLS) protocol. The DTLS protocol provides authentication | Security (DTLS) protocol. The DTLS protocol provides authentication | |||
| and privacy services for SNMP applications. This document describes | and privacy services for SNMP applications. This document describes | |||
| how the DTLS Transport Model (DTLSTM) implements the needed features | how the DTLS Transport Model (DTLSTM) implements the needed features | |||
| of a SNMP Transport Subsystem to make this protection possible in an | of a SNMP Transport Subsystem to make this protection possible in an | |||
| interoperable way. | interoperable way. | |||
| This transport model is designed to meet the security and operational | This transport model is designed to meet the security and operational | |||
| needs of network administrators, operate in environments where a | needs of network administrators, operate in environments where a | |||
| connectionless (UDP) transport is preferred, and integrates well into | connectionless (e.g. UDP or SCTP) transport is preferred, and | |||
| existing public keying infrastructures. | integrates well into existing public keying infrastructures. | |||
| This document also defines a portion of the Management Information | This document also defines a portion of the Management Information | |||
| Base (MIB) for monitoring and managing the DTLS Transport Model for | Base (MIB) for monitoring and managing the DTLS Transport Model for | |||
| SNMP. | SNMP. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 1.1. Requirements Terminology . . . . . . . . . . . . . . . . . 6 | 1.1. Requirements Terminology . . . . . . . . . . . . . . . . . 7 | |||
| 1.2. Conventions . . . . . . . . . . . . . . . . . . . . . . . 6 | 1.2. Conventions . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 2. The Datagram Transport Layer Security Protocol . . . . . . . . 6 | 2. The Datagram Transport Layer Security Protocol . . . . . . . . 8 | |||
| 2.1. The DTLS Record Protocol . . . . . . . . . . . . . . . . . 7 | 2.1. The DTLS Record Protocol . . . . . . . . . . . . . . . . . 8 | |||
| 2.2. The DTLS Handshake Protocol . . . . . . . . . . . . . . . 7 | 2.2. The DTLS Handshake Protocol . . . . . . . . . . . . . . . 9 | |||
| 3. How the DTLSTM fits into the Transport Subsystem . . . . . . . 8 | 2.3. SNMP requirements of DTLS . . . . . . . . . . . . . . . . 10 | |||
| 3.1. Security Capabilities of this Model . . . . . . . . . . . 10 | 3. How the DTLSTM fits into the Transport Subsystem . . . . . . . 10 | |||
| 3.1.1. Threats . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.1. Security Capabilities of this Model . . . . . . . . . . . 12 | |||
| 3.1.2. Message Protection . . . . . . . . . . . . . . . . . . 12 | 3.1.1. Threats . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 3.1.3. DTLS Sessions . . . . . . . . . . . . . . . . . . . . 13 | 3.1.2. Message Protection . . . . . . . . . . . . . . . . . . 14 | |||
| 3.2. Security Parameter Passing . . . . . . . . . . . . . . . . 14 | 3.1.3. DTLS Sessions . . . . . . . . . . . . . . . . . . . . 15 | |||
| 3.3. Notifications and Proxy . . . . . . . . . . . . . . . . . 14 | 3.2. Security Parameter Passing . . . . . . . . . . . . . . . . 15 | |||
| 4. Elements of the Model . . . . . . . . . . . . . . . . . . . . 15 | 3.3. Notifications and Proxy . . . . . . . . . . . . . . . . . 16 | |||
| 4.1. Certificates . . . . . . . . . . . . . . . . . . . . . . . 15 | 4. Elements of the Model . . . . . . . . . . . . . . . . . . . . 17 | |||
| 4.1.1. The Certificate Infrastructure . . . . . . . . . . . . 15 | 4.1. Certificates . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 4.1.2. Provisioning for the Certificate . . . . . . . . . . . 16 | 4.1.1. The Certificate Infrastructure . . . . . . . . . . . . 17 | |||
| 4.2. Messages . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 4.1.2. Provisioning for the Certificate . . . . . . . . . . . 18 | |||
| 4.3. SNMP Services . . . . . . . . . . . . . . . . . . . . . . 17 | 4.2. Messages . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 4.3.1. SNMP Services for an Outgoing Message . . . . . . . . 18 | 4.3. SNMP Services . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 4.3.2. SNMP Services for an Incoming Message . . . . . . . . 19 | 4.3.1. SNMP Services for an Outgoing Message . . . . . . . . 19 | |||
| 4.4. DTLS Services . . . . . . . . . . . . . . . . . . . . . . 19 | 4.3.2. SNMP Services for an Incoming Message . . . . . . . . 20 | |||
| 4.4.1. Services for Establishing a Session . . . . . . . . . 20 | 4.4. DTLS Services . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 4.4.2. DTLS Services for an Incoming Message . . . . . . . . 21 | 4.4.1. Services for Establishing a Session . . . . . . . . . 21 | |||
| 4.4.3. DTLS Services for an Outgoing Message . . . . . . . . 22 | 4.4.2. DTLS Services for an Incoming Message . . . . . . . . 23 | |||
| 4.5. Cached Information and References . . . . . . . . . . . . 22 | 4.4.3. DTLS Services for an Outgoing Message . . . . . . . . 24 | |||
| 4.5.1. securityStateReference . . . . . . . . . . . . . . . . 23 | 4.5. Cached Information and References . . . . . . . . . . . . 24 | |||
| 4.5.2. tmStateReference . . . . . . . . . . . . . . . . . . . 23 | 4.5.1. DTLS Transport Model Cached Information . . . . . . . 25 | |||
| 4.5.2.1. Transport information . . . . . . . . . . . . . . 24 | 5. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 25 | |||
| 4.5.2.2. securityName . . . . . . . . . . . . . . . . . . . 24 | 5.1. Procedures for an Incoming Message . . . . . . . . . . . . 25 | |||
| 4.5.2.3. securityLevel . . . . . . . . . . . . . . . . . . 25 | 5.1.1. DTLS Processing for Incoming Messages . . . . . . . . 25 | |||
| 4.5.2.4. Session Information . . . . . . . . . . . . . . . 25 | 5.1.2. Transport Processing for Incoming Messages . . . . . . 27 | |||
| 4.5.3. DTLS Transport Model Cached Information . . . . . . . 26 | 5.2. Procedures for an Outgoing Message . . . . . . . . . . . . 28 | |||
| 4.5.3.1. Transport Information . . . . . . . . . . . . . . 26 | 5.3. Establishing a Session . . . . . . . . . . . . . . . . . . 29 | |||
| 4.5.3.2. tmRequestedSecurityLevel . . . . . . . . . . . . . 27 | 5.4. Closing a Session . . . . . . . . . . . . . . . . . . . . 31 | |||
| 4.5.3.3. tmSecurityLevel . . . . . . . . . . . . . . . . . 27 | 6. MIB Module Overview . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 4.5.3.4. tmSecurityName . . . . . . . . . . . . . . . . . . 27 | 6.1. Structure of the MIB Module . . . . . . . . . . . . . . . 32 | |||
| 4.5.4. Transport Model LCD . . . . . . . . . . . . . . . . . 27 | 6.2. Textual Conventions . . . . . . . . . . . . . . . . . . . 32 | |||
| 5. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 28 | 6.3. Statistical Counters . . . . . . . . . . . . . . . . . . . 32 | |||
| 5.1. Procedures for an Incoming Message . . . . . . . . . . . . 28 | 6.4. Configuration Tables . . . . . . . . . . . . . . . . . . . 32 | |||
| 5.1.1. DTLS Processing for Incoming Messages . . . . . . . . 28 | 6.5. Relationship to Other MIB Modules . . . . . . . . . . . . 33 | |||
| 5.1.2. Transport Processing for Incoming Messages . . . . . . 30 | 6.5.1. MIB Modules Required for IMPORTS . . . . . . . . . . . 33 | |||
| 5.2. Procedures for an Outgoing Message . . . . . . . . . . . . 31 | 7. MIB Module Definition . . . . . . . . . . . . . . . . . . . . 33 | |||
| 5.3. Establishing a Session . . . . . . . . . . . . . . . . . . 32 | 8. Operational Considerations . . . . . . . . . . . . . . . . . . 48 | |||
| 5.4. Closing a Session . . . . . . . . . . . . . . . . . . . . 34 | 8.1. Sessions . . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
| 6. MIB Module Overview . . . . . . . . . . . . . . . . . . . . . 35 | 8.2. Notification Receiver Credential Selection . . . . . . . . 49 | |||
| 6.1. Structure of the MIB Module . . . . . . . . . . . . . . . 35 | 8.3. contextEngineID Discovery . . . . . . . . . . . . . . . . 49 | |||
| 6.2. Textual Conventions . . . . . . . . . . . . . . . . . . . 35 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 49 | |||
| 6.3. Statistical Counters . . . . . . . . . . . . . . . . . . . 35 | 9.1. Certificates, Authentication, and Authorization . . . . . 50 | |||
| 6.4. Configuration Tables . . . . . . . . . . . . . . . . . . . 35 | 9.2. Use with SNMPv1/SNMPv2c Messages . . . . . . . . . . . . . 51 | |||
| 6.5. Relationship to Other MIB Modules . . . . . . . . . . . . 35 | 9.3. MIB Module Security . . . . . . . . . . . . . . . . . . . 51 | |||
| 6.5.1. MIB Modules Required for IMPORTS . . . . . . . . . . . 36 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 51 | |||
| 7. MIB Module Definition . . . . . . . . . . . . . . . . . . . . 36 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 52 | |||
| 8. Operational Considerations . . . . . . . . . . . . . . . . . . 49 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 52 | |||
| 8.1. Sessions . . . . . . . . . . . . . . . . . . . . . . . . . 49 | 12.1. Normative References . . . . . . . . . . . . . . . . . . . 52 | |||
| 8.2. Notification Receiver Credential Selection . . . . . . . . 50 | 12.2. Informative References . . . . . . . . . . . . . . . . . . 54 | |||
| 8.3. contextEngineID Discovery . . . . . . . . . . . . . . . . 50 | Appendix A. Target and Notificaton Configuration Example . . . . 55 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 50 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
| 9.1. Certificates, Authentication, and Authorization . . . . . 51 | ||||
| 9.2. Use with SNMPv1/SNMPv2c Messages . . . . . . . . . . . . . 52 | ||||
| 9.3. MIB Module Security . . . . . . . . . . . . . . . . . . . 52 | ||||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52 | ||||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 53 | ||||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 53 | ||||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . . 53 | ||||
| 12.2. Informative References . . . . . . . . . . . . . . . . . . 55 | ||||
| Appendix A. Target and Notificaton Configuration Example . . . . 56 | ||||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 58 | ||||
| Intellectual Property and Copyright Statements . . . . . . . . . . 59 | ||||
| 1. Introduction | 1. Introduction | |||
| It is important to understand the SNMPv3 architecture [RFC3411], as | It is important to understand the SNMPv3 architecture [RFC3411], as | |||
| enhanced by the Transport Subsystem [I-D.ietf-isms-tmsm]. It is also | enhanced by the Transport Subsystem [I-D.ietf-isms-tmsm]. It is also | |||
| important to understand the terminology of the SNMPv3 architecture in | important to understand the terminology of the SNMPv3 architecture in | |||
| order to understand where the Transport Model described in this | order to understand where the Transport Model described in this | |||
| document fits into the architecture and how it interacts with the | document fits into the architecture and how it interacts with the | |||
| other architecture subsystems. For a detailed overview of the | other architecture subsystems. For a detailed overview of the | |||
| documents that describe the current Internet-Standard Management | documents that describe the current Internet-Standard Management | |||
| Framework, please refer to Section 7 of [RFC3410]. | 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 | |||
| Datagram Transport Layer Security (DTLS) Protocol [RFC4347], the | Datagram Transport Layer Security (DTLS) Protocol [RFC4347], the | |||
| datagram variant of the existing and commonly deployed Transport | datagram variant of the existing and commonly deployed Transport | |||
| Layer Security (TLS) protocol [RFC4346], within a transport subsystem | Layer Security (TLS) protocol [RFC5246], within a transport subsystem | |||
| [I-D.ietf-isms-tmsm]. The Transport Model in this document is | [I-D.ietf-isms-tmsm]. The Transport Model in this document is | |||
| referred to as the Datagram Transport Layer Security Transport Model | referred to as the Datagram Transport Layer Security Transport Model | |||
| (DTLSTM). DTLS takes advantage of the X.509 public keying | (DTLSTM). DTLS takes advantage of the X.509 public keying | |||
| infrastructure [X509]. This transport model is designed to meet the | infrastructure [X509]. This transport model is designed to meet the | |||
| security and operational needs of network administrators, operate in | security and operational needs of network administrators, operate in | |||
| environments where a connectionless (UDP) transport is preferred, and | environments where a connectionless (e.g. UDP or SCTP) transport is | |||
| integrate well into existing public keying infrastructures. | preferred, and integrate well into existing public keying | |||
| infrastructures. | ||||
| Managed objects are accessed via a virtual information store, termed | Managed objects are accessed via a virtual information store, termed | |||
| the Management Information Base or MIB. MIB objects are generally | the Management Information Base or MIB. MIB objects are generally | |||
| accessed through the Simple Network Management Protocol (SNMP). | accessed through the Simple Network Management Protocol (SNMP). | |||
| Objects in the MIB are defined using the mechanisms defined in the | Objects in the MIB are defined using the mechanisms defined in the | |||
| Structure of Management Information (SMI). This document specifies a | Structure of Management Information (SMI). This memo specifies a MIB | |||
| MIB module that is compliant to the SMIv2, which is described in STD | module that is compliant to the SMIv2, which is described in STD 58, | |||
| 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC | RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 | |||
| 2580 [RFC2580]. | [RFC2580]. | |||
| This document also defines a portion of the Management Information | This document also specifies a portion of the Management Information | |||
| Base (MIB) for use with network management protocols in IP based | Base (MIB) to define objects for monitoring and managing the DTLS | |||
| networks. In particular it defines objects for monitoring and | Transport Model for SNMP. | |||
| managing the DTLS Transport Model for SNMP. | ||||
| 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 DTLS Transport Model. One entity | entities communicating using the DTLS 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 as legitimate. | |||
| +----------------------------------------------------------------+ | +----------------------------------------------------------------+ | |||
| skipping to change at page 5, line 18 ¶ | skipping to change at page 6, line 15 ¶ | |||
| ^ ^ ^ ^ | ^ ^ ^ ^ | |||
| |Notifications |Commands |Commands |Notifications | |Notifications |Commands |Commands |Notifications | |||
| +---|---------------------|--------+ +--|---------------|-------------+ | +---|---------------------|--------+ +--|---------------|-------------+ | |||
| | V V | | V V | | | V V | | V V | | |||
| | +------------+ +------------+ | | +-----------+ +----------+ | | | +------------+ +------------+ | | +-----------+ +----------+ | | |||
| | | DTLS | | DTLS | | | | DTLS | | DTLS | | | | | DTLS | | DTLS | | | | DTLS | | DTLS | | | |||
| | | Service | | Service | | | | Service | | Service | | | | | Service | | Service | | | | Service | | Service | | | |||
| | | (Client) | | (Server) | | | | (Client) | | (Server)| | | | | (Client) | | (Server) | | | | (Client) | | (Server)| | | |||
| | +------------+ +------------+ | | +-----------+ +----------+ | | | +------------+ +------------+ | | +-----------+ +----------+ | | |||
| | ^ ^ | | ^ ^ | | | ^ ^ | | ^ ^ | | |||
| | | | | | | | | | ||||
| | +--+----------+ | | +-+--------------+ | | | +--+----------+ | | +-+--------------+ | | |||
| | +-----|---------+----+ | | +---|--------+----+ | | | +-----|---------+----+ | | +---|--------+----+ | | |||
| | | V |LCD | +-------+ | | | V |LCD | +--------+ | | | | V |LCD | +-------+ | | | V |LCD | +--------+ | | |||
| | | +------+ +----+ | | | | | +------+ +----+ | | | | | | +------+ +----+ | | | | | +------+ +----+ | | | | |||
| | | | DTLS | <---------->| Cache | | | | | DTLS | <---->| Cache | | | | | | DTLS | <---------->| Cache | | | | | DTLS | <---->| Cache | | | |||
| | | | TM | | | | | | | | TM | | | | | | | | | TM | | | | | | | | TM | | | | | | |||
| | | +------+ | +-------+ | | | +------+ | +--------+ | | | | +------+ | +-------+ | | | +------+ | +--------+ | | |||
| | |Transport Subsystem | ^ | | |Transport Sub. | ^ | | | |Transport Subsystem | ^ | | |Transport Sub. | ^ | | |||
| | +--------------------+ | | | +-----------------+ | | | | +--------------------+ | | | +-----------------+ | | | |||
| | ^ +----+ | | ^ | | | | ^ +----+ | | ^ | | | |||
| skipping to change at page 5, line 40 ¶ | skipping to change at page 6, line 38 ¶ | |||
| | +-------+ +----------+ +-----+ | | | +-----+ +------+ +-----+ | | | | +-------+ +----------+ +-----+ | | | +-----+ +------+ +-----+ | | | |||
| | | | |Message | |Sec. | | | | | | | MP | |Sec. | | | | | | | |Message | |Sec. | | | | | | | MP | |Sec. | | | | |||
| | | Disp. | |Processing| |Sub- | | | | |Disp.| | Sub- | |Sub- | | | | | | Disp. | |Processing| |Sub- | | | | |Disp.| | Sub- | |Sub- | | | | |||
| | | | |Subsystem | |sys. | | | | | | |system| |sys. | | | | | | | |Subsystem | |sys. | | | | | | |system| |sys. | | | | |||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |||
| | | | | | |+---+| | | | | | | | |+---+| | | | | | | | | |+---+| | | | | | | | |+---+| | | | |||
| | | | | +-----+ | || || | | | | | |+----+| || || | | | | | | | +-----+ | || || | | | | | |+----+| || || | | | |||
| | | <--->|v3MP |<-->||TSM|<-+ | | | <-->|v3MP|<->|TSM|<-+ | | | | <--->|v3MP |<-->||TSM|<-+ | | | <-->|v3MP|<->|TSM|<-+ | | |||
| | | | | +-----+ | || || | | | | |+----+| || || | | | | | | +-----+ | || || | | | | |+----+| || || | | |||
| | +-------+ | | |+---+| | | +-----+ | | |+---+| | | | +-------+ | | |+---+| | | +-----+ | | |+---+| | | |||
| | ^ | | | | | | ^ | | | | | | | ^ | | | | | | ^ | | | | | | |||
| | | +----------+ +-----+ | | | +------+ +-----+ | | | | +----------+ +-----+ | | | +------+ +-----+ | | |||
| | +-+----------+ | | +-+------------+ | | | +-+------------+ | | +-+------------+ | | |||
| | ^ ^ | | ^ ^ | | | ^ ^ | | ^ ^ | | |||
| | | | | | | | | | | | | | | | | | | |||
| | v v | | V V | | | v v | | V V | | |||
| | +-------------+ +--------------+ | | +-----------+ +--------------+ | | | +-------------+ +--------------+ | | +-----------+ +--------------+ | | |||
| | | COMMAND | | NOTIFICATION | | | | COMMAND | | NOTIFICATION | | | | | COMMAND | | NOTIFICATION | | | | COMMAND | | NOTIFICATION | | | |||
| | | RESPONDER | | ORIGINATOR | | | | GENERATOR | | RESPONDER | | | | | RESPONDER | | ORIGINATOR | | | | GENERATOR | | RESPONDER | | | |||
| | | application | | applications | | | |application| | application | | | | | application | | applications | | | |application| | application | | | |||
| | +-------------+ +--------------+ | | +-----------+ +--------------+ | | | +-------------+ +--------------+ | | +-----------+ +--------------+ | | |||
| | SNMP entity | | SNMP entity | | | SNMP entity | | SNMP entity | | |||
| +----------------------------------+ +--------------------------------+ | +----------------------------------+ +--------------------------------+ | |||
| skipping to change at page 6, line 15 ¶ | skipping to change at page 7, line 15 ¶ | |||
| 1.1. Requirements Terminology | 1.1. Requirements Terminology | |||
| 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]. | |||
| 1.2. Conventions | 1.2. Conventions | |||
| For consistency with SNMP-related specifications, this document | For consistency with SNMP-related specifications, this document | |||
| favors terminology as defined in STD62 rather than favoring | favors terminology as defined in STD62 rather than favoring | |||
| terminology that is consistent with non-SNMP specifications that use | terminology that is consistent with non-SNMP specifications. This is | |||
| different variations of the same terminology. This is consistent | consistent with the IESG decision to not require the SNMPv3 | |||
| with the IESG decision to not require the SNMPv3 terminology be | terminology be modified to match the usage of other non-SNMP | |||
| modified to match the usage of other non-SNMP specifications when | specifications when SNMPv3 was advanced to Full Standard. | |||
| SNMPv3 was advanced to Full Standard. | ||||
| In particular, where distinction is required the application names of | Authentication in this document typically refers to the English | |||
| "Command Generator", "Command Responder", "Notification Originator", | meaning of "serving to prove the authenticity of" the message, not | |||
| "Notification Receiver", and "Proxy Forwarder" are used. See the | data source authentication or peer identity authentication. | |||
| "SNMP Applications" in [RFC3413] for further information. | ||||
| Authentication in this document typically refers to source | The terms "manager" and "agent" are not used in this document, | |||
| authentication or peer identity authentication performed in the | because in the RFC 3411 architecture [RFC3411], all SNMP entities | |||
| transport subsystem. | have the capability of acting in either manager or agent or in both | |||
| roles depending on the SNMP application types supported in the | ||||
| implementation. Where distinction is required, the application names | ||||
| of Command Generator, Command Responder, Notification Originator, | ||||
| Notification Receiver, and Proxy Forwarder are used. See "SNMP | ||||
| Applications" [RFC3413] for further information. | ||||
| Throughout this document, the terms "client" and "server" are used to | ||||
| refer to the two ends of the SSH transport connection. The client | ||||
| actively opens the SSH connection, and the server passively listens | ||||
| for the incoming SSH connection. Either SNMP entity may act as | ||||
| client or as server, as discussed further below. | ||||
| The User-Based Security Model (USM) [RFC3414] is a mandatory-to- | ||||
| implement Security Model in STD 62. While SSH and USM frequently | ||||
| refer to a user, the terminology preferred in RFC3411 [RFC3411] and | ||||
| in this memo is "principal". A principal is the "who" on whose | ||||
| behalf services are provided or processing takes place. A principal | ||||
| can be, among other things, an individual acting in a particular | ||||
| role; a set of individuals, with each acting in a particular role; an | ||||
| application or a set of applications, or a combination of these | ||||
| within an administrative domain. | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
| document are to be interpreted as described in [RFC2119]. | ||||
| Throughout this document, the terms "client" and "server" are used to | Throughout this document, the terms "client" and "server" are used to | |||
| refer to the two ends of the DTLS session. The client actively opens | refer to the two ends of the DTLS session. The client actively opens | |||
| the DTLS session, and the server passively listens for the incoming | the DTLS session, and the server passively listens for the incoming | |||
| DTLS session. Any SNMP entity may act as client or as server. | DTLS session. Any SNMP entity may act as a client or as a server. | |||
| While security protocols frequently refer to a "user", the term used | While security protocols (like DTLS [RFC4347] and USM [RFC3414]) | |||
| in RFC3411 [RFC3411] and in this document is "principal". A | frequently refer to a "user", the terminology preferred in RFC3411 | |||
| principal is the "who" on whose behalf services are provided or | [RFC3411] and in this document is "principal". A principal is the | |||
| processing takes place. A principal can be, among other things, an | "who" on whose behalf services are provided or processing takes | |||
| individual acting in a particular role; a set of individuals, with | place. A principal can be, among other things, an individual acting | |||
| each acting in a particular role; an application or a set of | in a particular role; a set of individuals, with each acting in a | |||
| applications, or a combination of these within an administrative | particular role; an application or a set of applications, or a | |||
| domain. | combination of these within an 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 DTLS Transport Models that permits the | secure association between two DTLS 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 key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | ||||
| document are to be interpreted as described in [RFC2119]. | ||||
| 2. The Datagram Transport Layer Security Protocol | 2. The Datagram Transport Layer Security Protocol | |||
| The DTLS protocol is a datagram-compatible variant of the commonly | The DTLS protocol is a datagram-compatible variant of the commonly | |||
| used Transport Layer Security (TLS) protocol. DTLS provides | used Transport Layer Security (TLS) protocol. DTLS provides | |||
| authentication, data message integrity, and privacy at the transport | authentication, data message integrity, and privacy at the transport | |||
| layer. (See [RFC4347]) | layer. (See [RFC4347]) | |||
| The primary goals of the DTLS Transport Model are to provide privacy, | The primary goals of the DTLS Transport Model are to provide privacy, | |||
| source authentication and data integrity between two communicating | source authentication and data integrity between two communicating | |||
| SNMP entities. The DTLS protocol is composed of two layers: the DTLS | SNMP entities. The DTLS protocol is composed of two layers: the DTLS | |||
| Record Protocol and the DTLS Handshake Protocol. The following | Record Protocol and the DTLS Handshake Protocol. The following | |||
| sections provide an overview of these two layers. Please refer to | sections 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. Readers | |||
| familiar with DTLS can skip Section 2 except for section Section 2.3. | ||||
| 2.1. The DTLS Record Protocol | 2.1. The DTLS Record Protocol | |||
| At the lowest layer, layered on top of the transport protocol (UDP) | At the lowest layer, layered on top of a datagram transport protocol | |||
| is the DTLS Record Protocol. | (e.g. UDP or SCTP) is the DTLS Record Protocol. | |||
| The DTLS Record Protocol provides security that has three basic | The DTLS Record Protocol provides security that has three basic | |||
| properties: | properties: | |||
| o The session can be confidential. Symmetric cryptography is used | o The session can be confidential. Symmetric cryptography is used | |||
| for data encryption (e.g., AES [AES], DES [DES] etc.). The keys | for data encryption (e.g., AES [AES], DES [DES] etc.). The keys | |||
| for this symmetric encryption are generated uniquely for each | for this symmetric encryption are generated uniquely for each | |||
| session and are based on a secret negotiated by another protocol | session and are based on a secret negotiated by another protocol | |||
| (such as the DTLS Handshake Protocol). The Record Protocol can | (such as the DTLS Handshake Protocol). The Record Protocol can | |||
| also be used without encryption. | also be used without encryption. | |||
| skipping to change at page 7, line 50 ¶ | skipping to change at page 9, line 32 ¶ | |||
| DTLS also provides protection against replay of entire sessions. In | DTLS also provides protection against replay of entire sessions. In | |||
| a properly-implemented keying material exchange, both sides will | a properly-implemented keying material exchange, both sides will | |||
| generate new random numbers for each exchange. This results in | generate new random numbers for each exchange. This results in | |||
| different encryption and integrity keys for every session. | different encryption and integrity keys for every session. | |||
| 2.2. The DTLS Handshake Protocol | 2.2. The DTLS Handshake Protocol | |||
| The DTLS Record Protocol is used for encapsulation of various higher- | The DTLS Record Protocol is used for encapsulation of various higher- | |||
| level protocols. One such encapsulated protocol, the DTLS Handshake | level protocols. One such encapsulated protocol, the DTLS Handshake | |||
| Protocol, allows server and client to authenticate each other and to | Protocol, allows the server and client to authenticate each other and | |||
| negotiate an encryption algorithm and cryptographic keys before the | to negotiate an integrity algorithm, an encryption algorithm and | |||
| application protocol transmits or receives its first octet of data. | cryptographic keys before the application protocol transmits or | |||
| Only the DTLS client can initiate the handshake protocol. The DTLS | receives its first octet of data. Only the DTLS client can initiate | |||
| Handshake Protocol provides security that has three basic properties: | the handshake protocol. The DTLS Handshake Protocol provides | |||
| security that has three basic properties: | ||||
| o The peer's identity can be authenticated using asymmetric, or | o The peer's identity can be authenticated using asymmetric (public | |||
| public key, cryptography (e.g., RSA [RSA], DSS [DSS], etc.). This | key) cryptography (e.g., RSA [RSA], DSS [DSS], etc.). This | |||
| authentication can be made optional, but is generally required by | authentication can be made optional, but is generally required by | |||
| at least one of the peers. | at least one of the peers. | |||
| DTLS supports three authentication modes: authentication of both the | DTLS supports three authentication modes: authentication of both | |||
| server and the client, server authentication with an unauthenticated | the server and the client, server authentication with an | |||
| client, and total anonymity. For authentication of both entities, | unauthenticated client, and total anonymity. For authentication | |||
| each entity provides a valid certificate chain leading to an | of both entities, each entity provides a valid certificate chain | |||
| acceptable certificate authority. Each entity is responsible for | leading to an acceptable certificate authority. Each entity is | |||
| verifying that the other's certificate is valid and has not expired | responsible for verifying that the other's certificate is valid | |||
| or been revoked. The DTLS Transport Model SHOULD always use | and has not expired or been revoked. See | |||
| authentication of both the server and the client. At a minimum the | [I-D.hodges-server-ident-check] for further details on | |||
| DTLS Transport MUST support authentication of the Command Generator | standardized processing when checking Server certificate | |||
| principals to guarantee the authenticity of the securityName (a | identities. | |||
| parameter used to pass the authenticated identity name from the | ||||
| transport model to security model for even later use by the access | ||||
| control subsystem. See Section 4.5.3.4). The DTLS Transport SHOULD | ||||
| support the message encryption to protect sensitive data from | ||||
| eavesdropping attacks. See [I-D.hodges-server-ident-check] for | ||||
| further details on standardized processing when checking Server | ||||
| certificate identities. | ||||
| o The negotiation of a shared secret is secure: the negotiated | o The negotiation of a shared secret is secure: the negotiated | |||
| secret is unavailable to eavesdroppers, and for any authenticated | secret is unavailable to eavesdroppers, and for any authenticated | |||
| handshake the secret cannot be obtained, even by an attacker who | handshake the secret cannot be obtained, even by an attacker who | |||
| can place himself in the middle of the session. | can place himself in the middle of the session. | |||
| o The negotiation is not vulnerable to malicious modification: it is | o The negotiation is not vulnerable to malicious modification: it is | |||
| infeasible for an attacker to modify negotiation communication | infeasible for an attacker to modify negotiation communication | |||
| without being detected by the parties to the communication. | without being detected by the parties to the communication. | |||
| o DTLS uses a stateless cookie exchange to protect against anonymous | o DTLS uses a stateless cookie exchange to protect against anonymous | |||
| denial of service attacks and has retransmission timers, sequence | denial of service attacks and has retransmission timers, sequence | |||
| numbers, and counters to handle message loss, reordering, and | numbers, and counters to handle message loss, reordering, and | |||
| fragmentation. | fragmentation. | |||
| 2.3. SNMP requirements of DTLS | ||||
| To properly support the SNMP over DTLS Transport Model, the DTLS | ||||
| implementation requires the following: | ||||
| o The DTLS Transport Model SHOULD always use authentication of both | ||||
| the server and the client. | ||||
| o At a minimum the DTLS Transport MUST support authentication of the | ||||
| Command Generator principals to guarantee the authenticity of the | ||||
| securityName (a parameter used to pass the authenticated identity | ||||
| name from the transport model to security model for even later use | ||||
| by the access control subsystem). | ||||
| o The DTLS Transport SHOULD support the message encryption to | ||||
| protect sensitive data from eavesdropping attacks. | ||||
| 3. How the DTLSTM fits into the Transport Subsystem | 3. How the DTLSTM fits into the Transport Subsystem | |||
| A transport model is a component of the Transport Subsystem. The | A transport model is a component of the Transport Subsystem. The | |||
| DTLS Transport Model thus fits between the underlying DTLS transport | DTLS Transport Model thus fits between the underlying DTLS 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 [I-D.ietf-isms-tmsm]. | engine and the Transport Subsystem. | |||
| The DTLS Transport Model will establish a session between itself and | The DTLS Transport Model will establish a session between itself and | |||
| the DTLS Transport Model of another SNMP engine. The sending | the DTLS Transport Model of another SNMP engine. The sending | |||
| transport model passes unprotected messages from the dispatcher to | transport model passes unprotected messages from the dispatcher to | |||
| DTLS to be protected, and the receiving transport model accepts | DTLS to be protected, and the receiving transport model accepts | |||
| decrypted and authenticated/integrity-checked incoming messages from | decrypted and authenticated/integrity-checked incoming messages from | |||
| DTLS and passes them to the dispatcher. | DTLS and passes them to the dispatcher. | |||
| After a DTLS Transport model session is established, SNMP messages | After a DTLS Transport model session is established, SNMP messages | |||
| can conceptually be sent through the session from one SNMP message | can conceptually be sent through the session from one SNMP message | |||
| skipping to change at page 10, line 49 ¶ | skipping to change at page 12, line 42 ¶ | |||
| falsifying the value of an object. | falsifying the value of an object. | |||
| DTLS provides verification that the content of each received | DTLS 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. | |||
| 2. Masquerade - The masquerade threat is the danger that management | 2. Masquerade - The masquerade threat is the danger that management | |||
| operations unauthorized for a given principal may be attempted by | operations unauthorized for a given principal may be attempted by | |||
| assuming the identity of a principal with appropriate | assuming the identity of another principal that has the | |||
| authorizations. | appropriate authorizations. | |||
| The DTLSTM provides for authentication of the Principal Command | The DTLSTM provides for authentication of the Command Generator, | |||
| Generator and Notification Generator and for authentication of | Command Responder, Notification Generator, Notification Responder | |||
| the Command Responder, Notification Responder and Proxy Forwarder | and Proxy Forwarder through the use of X.509 certificates. | |||
| through the use of X.509 certificates. | ||||
| The masquerade threat can be mitigated against by using an | The masquerade threat can be mitigated against by using an | |||
| appropriate Access Control Model (ACM) such as the View-based | appropriate Access Control Model (ACM) such as the View-based | |||
| Access Control Module (VACM) [RFC3415]. In addition, it is | Access Control Module (VACM) [RFC3415]. In addition, it is | |||
| important to authenticate and verify both the authenticated | important to authenticate and verify both the authenticated | |||
| identity of the DTLS client and the DTLS server to protect | identity of the DTLS client and the DTLS server to protect | |||
| against this threat. (See Section 9 for more detail.) | against this threat. (See Section 9 for more detail.) | |||
| 3. Message stream modification - The re-ordering, delay or replay of | 3. Message stream modification - The re-ordering, delay or replay of | |||
| messages can and does occur through the natural operation of many | messages can and does occur through the natural operation of many | |||
| skipping to change at page 11, line 41 ¶ | skipping to change at page 13, line 32 ¶ | |||
| Records that are too old to fit in the window and records that | Records that are too old to fit in the window and records that | |||
| have previously been received are silently discarded. The replay | have previously been received are silently discarded. The replay | |||
| detection feature is optional, since packet duplication can also | detection feature is optional, since packet duplication can also | |||
| occur naturally due to routing errors and does not necessarily | occur naturally due to routing errors and does not necessarily | |||
| indicate an active attack. Applications may conceivably detect | indicate an active attack. Applications may conceivably detect | |||
| duplicate packets and accordingly modify their data transmission | duplicate packets and accordingly modify their data transmission | |||
| strategy. | strategy. | |||
| 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. Protecting against this | on the exchanges between SNMP engines. Protecting against this | |||
| threat may be required as a matter of local policy. | threat may be required by local policy at the deployment site. | |||
| Symmetric cryptography (e.g., AES [AES], DES [DES] etc.) can be | Symmetric cryptography (e.g., AES [AES], DES [DES] etc.) can be | |||
| used by DTLS for data privacy. The keys for this symmetric | used by DTLS for data privacy. The keys for this symmetric | |||
| encryption are generated uniquely for each session and are based | encryption are generated uniquely for each session and are based | |||
| on a secret negotiated by another protocol (such as the DTLS | on a secret negotiated by another protocol (such as the DTLS | |||
| Handshake Protocol). | 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 security protocols are | SNMP security protocol. However, datagram security protocols are | |||
| skipping to change at page 14, line 38 ¶ | skipping to change at page 16, line 31 ¶ | |||
| generators or notification originators. Command generators are | generators or notification originators. Command generators are | |||
| frequently operated by a human, but notification originators are | frequently operated by a human, but notification originators are | |||
| usually unmanned automated processes. The targets to whom | usually unmanned automated processes. The targets to whom | |||
| notifications should be sent is typically determined and configured | notifications should be sent is typically determined and configured | |||
| by a network administrator. | by a network administrator. | |||
| The SNMP-TARGET-MIB module [RFC3413] contains objects for defining | The SNMP-TARGET-MIB module [RFC3413] contains objects for defining | |||
| management targets, including transportDomain, transportAddress, | management targets, including transportDomain, transportAddress, | |||
| securityName, securityModel, and securityLevel parameters, for | securityName, securityModel, and securityLevel parameters, for | |||
| Notification Generator, Proxy Forwarder, and SNMP-controllable | Notification Generator, Proxy Forwarder, and SNMP-controllable | |||
| Command Generator applications. Transport domain and transport | Command Generator applications. Transport domains and transport | |||
| address 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 DTLS client-side certificate to use for the connection. | specify a DTLS client-side certificate to use for the connection. | |||
| When configuring a DTLS target, the snmpTargetAddrTDomain and | When configuring a DTLS target, the snmpTargetAddrTDomain and | |||
| snmpTargetAddrTAddress parameters in snmpTargetAddrTable should be | snmpTargetAddrTAddress parameters in snmpTargetAddrTable should be | |||
| set to the snmpDTLSDomain object and an appropriate snmpDTLSAddress | set to the snmpDTLSUDPDomain or snmpDTLSSCTPDomain object and an | |||
| value respectively. The snmpTargetParamsMPModel column of the | appropriate snmpDTLSUDPAddress or snmpDTLSSCTPAddress value | |||
| respectively. The snmpTargetParamsMPModel column of the | ||||
| snmpTargetParamsTable should be set to a value of 3 to indicate the | snmpTargetParamsTable should be set to a value of 3 to indicate the | |||
| SNMPv3 message processing model. The snmpTargetParamsSecurityName | SNMPv3 message processing model. The snmpTargetParamsSecurityName | |||
| should be set to an appropriate securityName value and the | should be set to an appropriate securityName value and the | |||
| dtlstmParamsHashType and dtlstmParamsHashValue parameters of the | dtlstmParamsHashType and dtlstmParamsHashValue parameters of the | |||
| dtlstmParamsTable should be set to values that refer to a locally | dtlstmParamsTable should be set to values that refer to a locally | |||
| held certificate to be used. Other parameters, for example | held certificate to be used. Other parameters, for example | |||
| cryptographic configuration such as cipher suites to use, must come | cryptographic configuration such as cipher suites to use, must come | |||
| from configuration mechanisms not defined in this document. The | from configuration mechanisms not defined in this document. The | |||
| other needed configuration may be configured using SNMP or other | other needed configuration may be configured using SNMP or other | |||
| implementation-dependent mechanisms (for example, via a CLI). This | implementation-dependent mechanisms (for example, via a CLI). This | |||
| securityName defined in the snmpTargetParamsSecurityName column will | securityName defined in the snmpTargetParamsSecurityName column will | |||
| be used by the access control model to authorize any notifications | be used by the access control model to authorize any notifications | |||
| that need to be sent. | that need to be sent. | |||
| 4. Elements of the Model | 4. Elements of the Model | |||
| This section contains definitions required to realize the DTLS | This section contains definitions required to realize the DTLS | |||
| Transport Model defined by this document. | Transport Model defined by this document. Readers familiar with | |||
| X.509 certificates can skip this section until Section 4.1.2. | ||||
| 4.1. Certificates | 4.1. Certificates | |||
| DTLS makes use of X.509 certificates for authentication of both sides | DTLS makes use of X.509 certificates for authentication of both sides | |||
| of the transport. This section discusses the use of certificates in | of the transport. This section discusses the use of certificates in | |||
| DTLS and the its effects on SNMP over DTLS. | DTLS and the its effects on SNMP over DTLS. | |||
| 4.1.1. The Certificate Infrastructure | 4.1.1. The Certificate Infrastructure | |||
| Users of a public key SHALL be confident that the associated private | Users of a public key SHALL be confident that the associated private | |||
| skipping to change at page 16, line 8 ¶ | skipping to change at page 17, line 50 ¶ | |||
| first published in 1988 as part of the X.500 Directory | 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 [X509] which | |||
| is a certificate which binds a subject (principal) to a public key | is a certificate which binds a subject (principal) to a public key | |||
| value. This was later further documented in [RFC5280]. | value. This was later further 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 field contains the names of the subject and | tbsCertificate: The field contains the names of the subject and | |||
| issuer, a public key associated with the subject, a validity | issuer, a public key associated with the subject, a validity | |||
| period, and other associated information. This field may also | period, and other associated information. This field may also | |||
| contain extensions. | 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 | |||
| authority (CA) to sign this certificate. | authority (CA) to sign this certificate. | |||
| signatureValue: The signatureValue field contains a digital | signatureValue: The signatureValue field contains a digital | |||
| signature computed upon the ASN.1 DER encoded tbsCertificate | signature computed upon the ASN.1 DER encoded tbsCertificate | |||
| field. The ASN.1 DER encoded tbsCertificate is used as the input | field. The ASN.1 DER encoded tbsCertificate is used as the input | |||
| to the signature function. This signature value is then ASN.1 DER | to the signature function. This signature value is then ASN.1 DER | |||
| encoded as a BIT STRING and included in the Certificate's | encoded as a BIT STRING and included in the Certificate's | |||
| skipping to change at page 17, line 35 ¶ | skipping to change at page 19, line 30 ¶ | |||
| An example mapping setup can be found in Appendix A | An example mapping setup can be found in Appendix A | |||
| This tmSecurityName may be later translated from a DTLSSM specific | This tmSecurityName may be later translated from a DTLSSM 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, may perform an | A security model, like the TSM security model, may perform an | |||
| identity mapping or a more complex mapping to derive the securityName | identity mapping or a more complex mapping to derive the securityName | |||
| from the tmSecurityName offered by the DTLS Transport Model. | from the tmSecurityName offered by the DTLS Transport Model. | |||
| 4.2. Messages | 4.2. Messages | |||
| As stated in RFC4347, each DTLS message must fit within a single | As stated in Section 4.1.1 of [RFC4347], each DTLS record must fit | |||
| datagram. The DTLSTM MUST prohibit SNMP messages from being set that | within a single DTLS datagram. The DTLSTM SHOULD prohibit SNMP | |||
| exceed the MTU size. The DTLSTM implementation MUST return an error | messages from being sent that exceeds the maximum DTLS message. The | |||
| when the MTU size would be exceeded and the message won't be sent. | DTLSTM implementation SHOULD return an error when the DTLS message | |||
| size would be exceeded and the message won't be sent. | ||||
| For Ethernet the MTU size is 1500 and thus the maximum allowable SNMP | ||||
| message that can be sent over DTLSTM after UDP/IP/DTLS overhead is | ||||
| taken into account will be 1455 for IPv6 (MTU:1500 - IPv6:40 - UDP:8 | ||||
| - DTLS:13) and 1475 for IPv4 (MTU:1500 - IPv4:20 - UDP:8 - DTLS:13). | ||||
| From this integrity and encryption overhead also needs to be | ||||
| subtracted, which are integrity and encryption algorithm specific. | ||||
| 4.3. SNMP Services | 4.3. SNMP Services | |||
| This section describes the services provided by the DTLS Transport | This section describes the services provided by the DTLS 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 | |||
| skipping to change at page 18, line 36 ¶ | skipping to change at page 20, line 26 ¶ | |||
| 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. | Transport Model. This document specifies two DTLS based Transport | |||
| Domains for use: the snmpDTLSUDPDomain and the snmpDTLSSCTPDomain. | ||||
| destTransportAddress: The transport address of the destination DTLS | destTransportAddress: The transport address of the destination DTLS | |||
| Transport Model in a format specified by the SnmpDTLSAddress | Transport Model in a format specified by the SnmpDTLSUDPAddress or | |||
| TEXTUAL-CONVENTION. | the SnmpDTLSSCTPAddress TEXTUAL-CONVENTIONs. | |||
| outgoingMessage: The outgoing message to send to DTLS for | outgoingMessage: The outgoing message to send to DTLS for | |||
| encapsulation. | encapsulation. | |||
| outgoingMessageLength: The length of the outgoing message. | outgoingMessageLength: The length of the outgoing message. | |||
| 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 19, line 27 ¶ | skipping to change at page 21, line 21 ¶ | |||
| ) | ) | |||
| The abstract data elements passed as parameters in the abstract | The abstract data elements passed as parameters in the abstract | |||
| service primitives are as follows: | 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. | transportAddress. This document specifies two DTLS based | |||
| Transport Domains for use: the 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 SnmpDTLSAddress | received message in a format specified by the SnmpDTLSUDPAddress | |||
| TEXTUAL-CONVENTION. | or the SnmpDTLSSCTPAddress TEXTUAL-CONVENTION. | |||
| incomingMessage: The whole SNMP message stripped of all DTLS | incomingMessage: The whole SNMP message stripped of all DTLS | |||
| protection data. | protection data. | |||
| incomingMessageLength: The length of the SNMP message after being | incomingMessageLength: The length of the SNMP message after being | |||
| processed by DTLS. | processed by DTLS. | |||
| 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. | |||
| skipping to change at page 20, line 30 ¶ | skipping to change at page 22, line 24 ¶ | |||
| The abstract data elements passed as parameters in the abstract | The abstract data elements passed as parameters in the abstract | |||
| service primitives are as follows: | service primitives are as follows: | |||
| statusInformation: An indication of whether the process was | statusInformation: An indication of whether the process was | |||
| successful or not. If not, then the status information will | successful or not. If not, then the status information will | |||
| include the error indication provided by DTLS. | include the error indication provided by DTLS. | |||
| destTransportDomain: The transport domain for the associated | destTransportDomain: The transport domain for the associated | |||
| destTransportAddress. The DTLS Transport Model uses this | destTransportAddress. The DTLS Transport Model uses this | |||
| parameter to determine the transport type of the associated | parameter to determine the transport type of the associated | |||
| destTransportAddress. | destTransportAddress. This document specifies two DTLS based | |||
| Transport Domains for use: the snmpDTLSUDPDomain and the | ||||
| snmpDTLSSCTPDomain. | ||||
| destTransportAddress: The transport address of the destination DTLS | destTransportAddress: The transport address of the destination DTLS | |||
| Transport Model in a format specified by the SnmpDTLSAddress | Transport Model in a format specified by the SnmpDTLSUDPAddress or | |||
| TEXTUAL-CONVENTION. | the SnmpDTLSSCTPAddress TEXTUAL-CONVENTION. | |||
| securityName: The security name representing the principal on whose | securityName: The security name representing the principal on whose | |||
| behalf the message will be sent. | behalf the message will be sent. | |||
| securityLevel: The level of security requested by the application. | securityLevel: The level of security requested by the application. | |||
| dtlsSessionID: An implementation-dependent session identifier to | dtlsSessionID: An implementation-dependent session identifier to | |||
| reference the specific DTLS session. | reference the specific DTLS session. | |||
| DTLS and UDP do not provide a session de-multiplexing mechanism and | DTLS and UDP do not provide a session de-multiplexing mechanism and | |||
| it is possible that implementations will only be able to identify a | it is possible that implementations will only be able to identify a | |||
| unique session based on a unique combination of source address, | unique session based on a unique combination of source address, | |||
| destination address, source UDP port number and destination UDP port | destination address, source UDP port number and destination UDP port | |||
| number. Because of this, when establishing a new sessions | number. Because of this, when establishing a new sessions | |||
| implementations MUST use a different UDP source port number for each | implementations MUST use a different UDP source port number for each | |||
| connection to a remote destination IP-address/port-number combination | connection to a remote destination IP-address/port-number combination | |||
| to ensure the remote entity can properly disambiguate between | to ensure the remote entity can properly disambiguate between | |||
| multiple sessions from a host to the same port on a server. | multiple sessions from a host to the same port on a server. SCTP | |||
| does provide session de-multiplexing so this restriction is not | ||||
| needed for DTLS/SCTP implementations. | ||||
| The procedural details for establishing a session are further | The procedural details for establishing a session are further | |||
| described in Section 5.3. | described in Section 5.3. | |||
| Upon completion of the process the DTLS Transport Model returns | Upon completion of the process the DTLS Transport Model returns | |||
| status information and, if the process was successful the | status information and, if the process was successful the | |||
| dtlsSessionID and other implementation-dependent data from DTLS are | dtlsSessionID. Other implementation-dependent data from DTLS are | |||
| also returned. The dtlsSessionID is stored in an implementation- | also returned. The dtlsSessionID is stored in an implementation- | |||
| dependent manner and tied to the tmSecurityData for future use of | dependent manner and tied to the tmSecurityData for future use of | |||
| this session. | this session. | |||
| 4.4.2. DTLS Services for an Incoming Message | 4.4.2. DTLS Services for an Incoming Message | |||
| When the DTLS Transport Model invokes the DTLS record layer to verify | When the DTLS Transport Model invokes the DTLS record layer to verify | |||
| proper security for the incoming message, it must use the following | proper security for the incoming message, it must use the following | |||
| ASI: | ASI: | |||
| skipping to change at page 21, line 42 ¶ | skipping to change at page 23, line 39 ¶ | |||
| service primitives are as follows: | service primitives are as follows: | |||
| statusInformation: An indication of whether the process was | statusInformation: An indication of whether the process was | |||
| successful or not. If not, then the status information will | successful or not. If not, then the status information will | |||
| include the error indication provided by DTLS. | include the error indication provided by DTLS. | |||
| dtlsSessionID: An implementation-dependent session identifier to | dtlsSessionID: An implementation-dependent session identifier to | |||
| reference the specific DTLS session. How the DTLS session ID is | reference the specific DTLS session. How the DTLS session ID is | |||
| obtained for each message is implementation-dependent. As an | obtained for each message is implementation-dependent. As an | |||
| implementation hint, the DTLS Transport Model can examine incoming | implementation hint, the DTLS Transport Model can examine incoming | |||
| messages to determine the source IP address and port number and | messages to determine the source IP address, source port number, | |||
| use these values to look up the local DTLS session ID in the list | destination IP address, and destination port number and use these | |||
| of active sessions. | values to look up the local DTLS session ID in the list of active | |||
| sessions. | ||||
| wholeDtlsMsg: The whole message as received on the wire. | wholeDtlsMsg: The whole message as received on the wire. | |||
| wholeDtlsMsgLength: The length of the message as it was received on | wholeDtlsMsgLength: The length of the message as it was received on | |||
| the wire. | the wire. | |||
| incomingMessage: The whole SNMP message stripped of all DTLS privacy | incomingMessage: The whole SNMP message stripped of all DTLS privacy | |||
| and integrity data. | and integrity data. | |||
| incomingMessageLength: The length of the SNMP message stripped of | incomingMessageLength: The length of the SNMP message stripped of | |||
| skipping to change at page 22, line 48 ¶ | skipping to change at page 24, line 45 ¶ | |||
| outgoingMessage: The outgoing message to send to DTLS for | outgoingMessage: The outgoing message to send to DTLS for | |||
| encapsulation. | encapsulation. | |||
| outgoingMessageLength: The length of the outgoing message. | outgoingMessageLength: The length of the outgoing message. | |||
| 4.5. Cached Information and References | 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. | to transport and security. "Transport Subsystem for the Simple | |||
| Network Management Protocol" [I-D.ietf-isms-tmsm] defines general | ||||
| The RFC3411 architecture uses caches to maintain the short-term | requirements for caches and references. | |||
| message state, and uses references in the ASIs to pass this | ||||
| information between subsystems. | ||||
| This document defines the requirements for a cache to handle the | ||||
| longer-term transport state information, using a tmStateReference | ||||
| parameter to pass this information between subsystems. | ||||
| To simplify the elements of procedure, the release of state | ||||
| information is not always explicitly specified. As a general rule, | ||||
| if state information is available when a message being processed gets | ||||
| discarded, the state related to that message SHOULD also be | ||||
| discarded. If state information is available when a relationship | ||||
| between engines is severed, such as the closing of a transport | ||||
| session, the state information for that relationship SHOULD also be | ||||
| discarded. | ||||
| Since the contents of a cache are meaningful only within an | ||||
| implementation, and not on-the-wire, the format of the cache and the | ||||
| LCD are implementation-specific. | ||||
| 4.5.1. securityStateReference | ||||
| The securityStateReference parameter is defined in RFC3411. Its | ||||
| primary purpose is to provide a mapping between a request and the | ||||
| corresponding response. This cache is not accessible to Transport | ||||
| Models, and an entry is typically only retained for the lifetime of a | ||||
| request-response pair of messages. | ||||
| 4.5.2. tmStateReference | ||||
| For each transport session, information about the transport security | ||||
| is stored in a cache. The tmStateReference parameter is used to pass | ||||
| model-specific and mechanism-specific parameters between the | ||||
| Transport subsystem and transport-aware Security Models. | ||||
| The tmStateReference cache will typically remain valid for the | ||||
| duration of the transport session, and hence may be used for several | ||||
| messages. | ||||
| Since this cache is only used within an implementation, and not on- | ||||
| the-wire, the precise contents and format are implementation- | ||||
| dependent. However, for interoperability between Transport Models | ||||
| and transport-aware Security Models, entries in this cache must | ||||
| include at least the following fields: | ||||
| transportDomain | ||||
| transportAddress | ||||
| tmSecurityName | ||||
| tmRequestedSecurityLevel | ||||
| tmTransportSecurityLevel | ||||
| tmSameSecurity | ||||
| tmSessionID | ||||
| 4.5.2.1. Transport information | ||||
| Information about the source of an incoming SNMP message is passed up | ||||
| from the Transport subsystem as far as the Message Processing | ||||
| subsystem. However these parameters are not included in the | ||||
| processIncomingMsg ASI defined in RFC3411, and hence this information | ||||
| is not directly available to the Security Model. | ||||
| A transport-aware Security Model might wish to take account of the | ||||
| transport protocol and originating address when authenticating the | ||||
| request, and setting up the authorization parameters. It is | ||||
| therefore necessary for the Transport Model to include this | ||||
| information in the tmStateReference cache, so that it is accessible | ||||
| to the Security Model. | ||||
| o transportDomain: the transport protocol (and hence the Transport | ||||
| Model) used to receive the incoming message | ||||
| o transportAddress: the source of the incoming message. | ||||
| The ASIs used for processing an outgoing message all include explicit | ||||
| transportDomain and transportAddress parameters. The values within | ||||
| the securityStateReference cache might override these parameters for | ||||
| outgoing messages. | ||||
| 4.5.2.2. securityName | ||||
| There are actually three distinct "identities" that can be identified | ||||
| during the processing of an SNMP request over a secure transport: | ||||
| o transport principal: the transport-authenticated identity, on | ||||
| whose behalf the secure transport connection was (or should be) | ||||
| established. This value is transport-, mechanism- and | ||||
| implementation- specific, and is only used within a given | ||||
| Transport Model. | ||||
| o tmSecurityName: a human-readable name (in snmpAdminString format) | ||||
| representing this transport identity. This value is transport- | ||||
| and implementation-specific, and is only used (directly) by the | ||||
| Transport and Security Models. | ||||
| o securityName: a human-readable name (in snmpAdminString format) | ||||
| representing the SNMP principal in a model-independent manner. | ||||
| The transport principal may or may not be the same as the | ||||
| tmSecurityName. Similarly, the tmSecurityName may or may not be the | ||||
| same as the securityName as seen by the Application and Access | ||||
| Control subsystems. In particular, a non-transport-aware Security | ||||
| Model will ignore tmSecurityName completely when determining the SNMP | ||||
| securityName. | ||||
| However it is important that the mapping between the transport | ||||
| principal and the SNMP securityName (for transport-aware Security | ||||
| Models) is consistent and predictable, to allow configuration of | ||||
| suitable access control and the establishment of transport | ||||
| connections. | ||||
| 4.5.2.3. securityLevel | ||||
| There are two distinct issues relating to security level as applied | ||||
| to secure transports. For clarity, these are handled by separate | ||||
| fields in the tmStateReference cache: | ||||
| o tmTransportSecurityLevel: an indication from the Transport Model | ||||
| of the level of security offered by this session. The Security | ||||
| Model can use this to ensure that incoming messages were suitably | ||||
| protected before acting on them. | ||||
| o tmRequestedSecurityLevel: an indication from the Security Model of | ||||
| the level of security required to be provided by the transport | ||||
| protocol. The Transport Model can use this to ensure that | ||||
| outgoing messages will not be sent over an insufficiently secure | ||||
| session. | ||||
| 4.5.2.4. Session Information | ||||
| For security reasons, if a secure transport session is closed between | ||||
| the time a request message is received and the corresponding response | ||||
| message is sent, then the response message SHOULD be discarded, even | ||||
| if a new session has been established. The SNMPv3 WG decided that | ||||
| this should be a SHOULD architecturally, and it is a security-model- | ||||
| specific decision whether to REQUIRE this. | ||||
| o tmSameSecurity: this flag is used by a transport-aware Security | ||||
| Model to indicate whether the Transport Model MUST enforce this | ||||
| restriction. | ||||
| o tmSessionID: in order to verify whether the session has changed, | ||||
| the Transport Model must be able to compare the session used to | ||||
| receive the original request with the one to be used to send the | ||||
| response. This typically requires some form of session | ||||
| identifier. This value is only ever used by the Transport Model, | ||||
| so the format and interpretation of this field are model-specific | ||||
| and implementation-dependent. | ||||
| When processing an outgoing message, if tmSameSecurity is true, then | ||||
| the tmSessionID MUST match the current transport session, otherwise | ||||
| the message MUST be discarded, and the dispatcher notified that | ||||
| sending the message failed. | ||||
| 4.5.3. DTLS Transport Model Cached Information | ||||
| For the DTLS Transport Model, the session state is maintained using | ||||
| tmStateReference. Upon opening each DTLS session, the DTLS Transport | ||||
| Model stores model- and mechanism-specific information about the | ||||
| session in a cache, referenced by tmStateReference. An | ||||
| implementation might store the contents of the cache in a Local | ||||
| Configuration Datastore (LCD). | ||||
| At a minimum, the following parameters are stored in the cache: | ||||
| tmTransportDomain = Specified by the application tmSameSecurity = | ||||
| boolean value set by the security model or false by default | ||||
| tmTransportAddress = Specified by the application | ||||
| tmRequestedSecurityLevel = ["noAuthNoPriv" | "authNoPriv" | | ||||
| "authPriv" ] the security level requested by the application | ||||
| tmSecurityLevel = ["noAuthNoPriv" | "authNoPriv" | "authPriv" ] the | ||||
| security level of the established DTLS session | ||||
| tmSecurityName = the security name associated with a principal | ||||
| The tmStateReference cache is used to pass a reference to these | ||||
| values between the DTLS Transport Model and the security model. | ||||
| The DTLS Transport Model has the responsibility for releasing the | ||||
| complete tmStateReference and deleting the associated information | ||||
| when the session is destroyed. | ||||
| 4.5.3.1. Transport Information | ||||
| The tmTransportDomain and tmTransportAddress identify the type and | ||||
| address of the remote DTLS transport endpoint. The domain for | ||||
| address types for DTLS sessions SHOULD be "snmpDTLSDomain" and the | ||||
| address SHOULD be one that conforms to the details specified in the | ||||
| "SnmpDTLSAddress" textual convention. | ||||
| 4.5.3.2. tmRequestedSecurityLevel | ||||
| The tmRequestedSecurityLevel is the security level requested by the | ||||
| application. This parameter is set in the cache by the security | ||||
| model and used by DTLS Transport Model initiating a session to select | ||||
| the appropriate cipher_suites and other configuration needed settings | ||||
| for establishing the session. The DTLS Transport Model MUST ensure | ||||
| that the actual security provided by the session (tmSecurityLevel) is | ||||
| at least as high as the requested security level | ||||
| (tmRequestedSecurityLevel). | ||||
| 4.5.3.3. tmSecurityLevel | ||||
| The tmSecurityLevel is the actual security level of the established | ||||
| session. See Section 3.1.2 for more detail about security levels. | ||||
| How the chosen cipher_suites and other DTLS session parameters are | ||||
| translated into a security level at the DTLS Transport Model is | ||||
| implementation dependent and/or policy specific. Implementations | ||||
| MUST NOT use NULL algorithms for fulfilling authentication or | ||||
| encryption needs indicated by the tmSecurityLevel. | ||||
| 4.5.3.4. tmSecurityName | ||||
| The tmSecurityName is the name of the principal on whose behalf the | ||||
| message is being sent. This field is set via the mapping defined in | ||||
| the dtlstmCertificateToSNTable when mapping incoming client | ||||
| connection certificates to a tmSecurityName. For outgoing | ||||
| connections, the application will specify the value that should be | ||||
| placed in this field (possibly by extracting it from the SNMP-TARGET- | ||||
| MIB's snmpTargetParamsSecurityName value). | ||||
| 4.5.4. Transport Model LCD | 4.5.1. DTLS Transport Model Cached Information | |||
| Implementations may store DTLS-specific and model-specific | The DTLSTM has no specific responsibilities regarding the cached | |||
| information in a LCD. The DTLS session ID is one such parameter that | information beyond those discussed in "Transport Subsystem for the | |||
| could be stored in the LCD. When messages are to be routed for | Simple Network Management Protocol" [I-D.ietf-isms-tmsm] | |||
| encapsulation or for integrity verification and decryption the | ||||
| message and the DTLS session ID must be passed to the DTLS transport | ||||
| layer for processing. Therefore, the DTLS Transport Model MUST | ||||
| maintain a one-to-one mapping between the DTLS session ID and the | ||||
| tmStateReference cache entry for that session. Implementations will | ||||
| need to store the DTLS session ID in the tmStateReference cache to | ||||
| simplify the procedure. | ||||
| 5. Elements of Procedure | 5. Elements of Procedure | |||
| Abstract service interfaces have been defined by RFC 3411 to describe | Abstract service interfaces have been defined by RFC 3411 to describe | |||
| the conceptual data flows between the various subsystems within an | the conceptual data flows between the various subsystems within an | |||
| SNMP entity. The DTLSTM uses some of these conceptual data flows | SNMP entity. The DTLSTM uses some of these conceptual data flows | |||
| when communicating between subsystems. These RFC 3411-defined data | when communicating between subsystems. These RFC 3411-defined data | |||
| flows are referred to here as public interfaces. | flows are referred to here as public interfaces. | |||
| 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 28, line 39 ¶ | skipping to change at page 25, line 45 ¶ | |||
| Transport Model when it receives a DTLS protected packet. The steps | Transport Model when it receives a DTLS protected packet. The steps | |||
| are broken into two different sections. The first section describes | are broken into two different sections. The first section describes | |||
| the needed steps for de-multiplexing multiple DTLS sessions and the | the needed steps for de-multiplexing multiple DTLS sessions and the | |||
| second section describes the steps which are specific to transport | second section describes the steps which are specific to transport | |||
| processing once the DTLS processing has been completed. | processing once the DTLS processing has been completed. | |||
| 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 | |||
| SSH, TLS or other TCP-based session streams. The DTLS protocol, | SSH, TLS or other TCP-based session streams. The DTLS protocol, | |||
| which is UDP-based, does not have a session identifier that allows | which is datagram-based, does not have a session identifier when run | |||
| implementations to determine through which session a packet is | over UDP that allows implementations to determine through which | |||
| arriving like TCP-based streams have. Thus, a process for de- | session a packet is arriving like SCTP-based and TCP-based streams | |||
| multiplexing sessions must be incorporated into the procedures for an | have. Thus, a process for de-multiplexing sessions when used over | |||
| incoming message. The steps in this section describe how this can be | UDP must be incorporated into the procedures for an incoming message. | |||
| accomplished, although any implementation dependent method for doing | The steps in this section describe how this can be accomplished, | |||
| so should be suitable as long as the results are consistently | although any implementation dependent method for doing so should be | |||
| deterministic. The important results from the steps in this section | suitable as long as the results are consistently deterministic. The | |||
| are the transportDomain, the transportAddress, the wholeMessage, the | important results from the steps in this section are the | |||
| transportDomain, the transportAddress, the wholeMessage, the | ||||
| wholeMessageLength, and a unique implementation-dependent session | wholeMessageLength, and a unique implementation-dependent session | |||
| identifier. | identifier. | |||
| This procedure assumes that upon session establishment, an entry in a | This procedure assumes that upon session establishment, an entry in a | |||
| local transport mapping table is created in the Transport Model's | local transport mapping table is created in the Transport Model's | |||
| LCD. This transport mapping table entry should be able to map a | LCD. This transport mapping table entry should be able to map a | |||
| unique combination of the remote address, remote port number, local | unique combination of the remote address, remote port number, local | |||
| address and local port number to a implementation-dependent | address and local port number to a implementation-dependent | |||
| dtlsSessionID. | dtlsSessionID. | |||
| skipping to change at page 30, line 14 ¶ | skipping to change at page 27, line 24 ¶ | |||
| 5.1.2. Transport Processing for Incoming Messages | 5.1.2. Transport Processing for Incoming Messages | |||
| The procedures in this section describe how the DTLS Transport should | The procedures in this section describe how the DTLS Transport should | |||
| process messages that have already been properly extracted from the | process messages that have already been properly extracted from the | |||
| DTLS stream, as described in Section 5.1.1. | DTLS stream, as described in Section 5.1.1. | |||
| 1) Create a tmStateReference cache for the subsequent reference and | 1) Create a tmStateReference cache for the subsequent reference and | |||
| assign the following values within it: | assign the following values within it: | |||
| tmTransportDomain = snmpDTLSDomain | tmTransportDomain = snmpDTLSUDPDomain or snmpDTLSSCTPDomain as | |||
| appropriate. | ||||
| tmTransportAddress = The address the message originated from, | tmTransportAddress = The address the message originated from, | |||
| determined in an implementation dependent way. | determined in an implementation dependent way. | |||
| tmSecurityLevel = The derived tmSecurityLevel for the session, | tmSecurityLevel = The derived tmSecurityLevel for the session, | |||
| as discussed in Section 3.1.2 and Section 5.3. | as 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 and Section 5.3. | discussed in and Section 5.3. This value MUST be constant | |||
| during the lifetime of the DTLS session. | ||||
| tmSessionID = The dtlsSessionID, which MUST be A unique session | tmSessionID = The dtlsSessionID, which MUST be A unique session | |||
| identifier for this DTLS session. The contents and format of | identifier for this DTLS session. 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 | unique to the session. A session identifier MUST NOT be | |||
| reused until all references to it are no longer in use. The | reused until all references to it are no longer in use. The | |||
| tmSessionID is equal to the dtlsSessionID discussed in | tmSessionID is equal to the dtlsSessionID discussed in | |||
| Section 5.1.1. tmSessionID refers to the session identifier | Section 5.1.1. tmSessionID refers to the session identifier | |||
| when stored in the tmStateReference and dtlsSessionID refers | when stored in the tmStateReference and dtlsSessionID refers | |||
| to the session identifier when stored in the LCD. They MUST | to the session identifier when stored in the LCD. They MUST | |||
| skipping to change at page 31, line 36 ¶ | skipping to change at page 28, line 49 ¶ | |||
| 2) If tmSameSecurity is true and either tmSessionID is undefined or | 2) If tmSameSecurity is true and either tmSessionID is undefined or | |||
| refers to a session that is no longer open then increment the | refers to a session that is no longer open then increment the | |||
| dtlstmSessionNoAvailableSessions counter, discard the message and | dtlstmSessionNoAvailableSessions counter, discard the message and | |||
| return the error indication in the statusInformation. Processing | return the error indication in the statusInformation. Processing | |||
| of this message stops. | of this message stops. | |||
| 3) If tmSameSecurity is false and tmSessionID refers to a session | 3) If tmSameSecurity is false and tmSessionID refers to a session | |||
| that is no longer available then an implementation SHOULD open a | that is no longer available then an implementation SHOULD open a | |||
| new session using the openSession() ASI as described below in | new session using the openSession() ASI as described below in | |||
| step 3b. An implementation MAY choose to return an error to the | step 4b. An implementation MAY choose to return an error to the | |||
| calling module. | calling module. | |||
| 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. | |||
| 3a) 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. | |||
| 3b) 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 4.4.1). 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 | |||
| dtlstmSessionOpenErrors, and return an error indication to | dtlstmSessionOpenErrors, and return an error indication to | |||
| the calling module. | the calling module. | |||
| 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 in the previous step, pass the | was one or the session resulting in the previous step, pass the | |||
| skipping to change at page 32, line 33 ¶ | skipping to change at page 29, line 48 ¶ | |||
| The following sections describe the procedures followed by a DTLS | The following sections describe the procedures followed by a DTLS | |||
| Transport Model when establishing a session as a Command Generator, a | Transport Model when establishing a session as a Command Generator, a | |||
| Notification Originator or as part of a Proxy Forwarder. | Notification Originator or as part of a Proxy Forwarder. | |||
| The following describes the procedure to follow to establish a | The following describes the procedure to follow to establish a | |||
| session between SNMP engines to exchange SNMP messages. This process | session between SNMP engines to exchange SNMP messages. This process | |||
| is followed by any SNMP engine establishing a session for subsequent | is followed by any SNMP engine establishing a session for subsequent | |||
| use. | use. | |||
| This MAY done automatically for SNMP messages which are not Response | This MAY be done automatically for SNMP messages which are not | |||
| or Report messages. | Response or Report messages. | |||
| DTLS provides no explicit manner for transmitting an identity the | DTLS provides no explicit manner for transmitting an identity the | |||
| client wishes to connect to during or prior to key exchange to | client wishes to connect to during or prior to key exchange to | |||
| facilitate certificate selection at the server (e.g. at a | facilitate certificate selection at the server (e.g. at a | |||
| Notification Receiver). I.E., there is no available mechanism for | Notification Receiver). I.E., there is no available mechanism for | |||
| sending notifications to a specific principal at a given UDP/port | sending notifications to a specific principal at a given UDP or SCTP | |||
| combination. Therefore, implementations MAY support responding with | port. Therefore, implementations MAY support responding with | |||
| multiple identities using separate UDP port numbers to indicate the | multiple identities using separate UDP or SCTP port numbers to | |||
| desired principal or some other implementation-dependent solution. | indicate the desired principal or some other implementation-dependent | |||
| solution. | ||||
| 1) The client selects the appropriate certificate and cipher_suites | 1) The client selects the appropriate certificate and cipher_suites | |||
| for the key agreement based on the tmSecurityName and the | for the key agreement based on the tmSecurityName and the | |||
| tmRequestedSecurityLevel for the session. For sessions being | tmRequestedSecurityLevel for the session. For sessions being | |||
| established as a result of a SNMP-TARGET-MIB based operation, the | established as a result of a SNMP-TARGET-MIB based operation, the | |||
| certificate will potentially have been identified via the | certificate will potentially have been identified via the | |||
| dtlstmParamsTable mapping and the cipher_suites will have to be | dtlstmParamsTable mapping and the cipher_suites will have to be | |||
| taken from system-wide or implementation-specific configuration. | taken from system-wide or implementation-specific configuration. | |||
| Otherwise, the certificate and appropriate cipher_suites will | Otherwise, the certificate and appropriate cipher_suites will | |||
| need to be passed to the openSession() ASI as supplemental | need to be passed to the openSession() ASI as supplemental | |||
| skipping to change at page 36, line 13 ¶ | skipping to change at page 33, line 27 ¶ | |||
| This MIB module is for managing DTLS Transport Model information. | This MIB module is for managing DTLS Transport Model information. | |||
| 6.5.1. MIB Modules Required for IMPORTS | 6.5.1. MIB Modules Required for IMPORTS | |||
| The following MIB module imports items from SNMPV2-SMI [RFC2578], | The following MIB module imports items from SNMPV2-SMI [RFC2578], | |||
| SNMPV2-TC [RFC2579], SNMP-FRAMEWORK-MIB [RFC3411], SNMP-TARGET-MIB | SNMPV2-TC [RFC2579], SNMP-FRAMEWORK-MIB [RFC3411], SNMP-TARGET-MIB | |||
| [RFC3413] and SNMP-CONF [RFC2580]. | [RFC3413] and SNMP-CONF [RFC2580]. | |||
| 7. MIB Module Definition | 7. MIB Module Definition | |||
| DTLSTM-MIB DEFINITIONS ::= BEGIN | DTLSTM-MIB DEFINITIONS ::= BEGIN | |||
| IMPORTS | IMPORTS | |||
| MODULE-IDENTITY, OBJECT-TYPE, | MODULE-IDENTITY, OBJECT-TYPE, | |||
| OBJECT-IDENTITY, snmpModules, snmpDomains, | OBJECT-IDENTITY, snmpModules, snmpDomains, | |||
| Counter32, Unsigned32 | Counter32, Unsigned32 | |||
| FROM SNMPv2-SMI | FROM SNMPv2-SMI | |||
| TEXTUAL-CONVENTION, TimeStamp, RowStatus, StorageType | TEXTUAL-CONVENTION, TimeStamp, RowStatus, StorageType | |||
| FROM SNMPv2-TC | FROM SNMPv2-TC | |||
| MODULE-COMPLIANCE, OBJECT-GROUP | MODULE-COMPLIANCE, OBJECT-GROUP | |||
| FROM SNMPv2-CONF | FROM SNMPv2-CONF | |||
| SnmpAdminString | SnmpAdminString | |||
| FROM SNMP-FRAMEWORK-MIB | FROM SNMP-FRAMEWORK-MIB | |||
| snmpTargetParamsEntry | snmpTargetParamsEntry | |||
| FROM SNMP-TARGET-MIB | FROM SNMP-TARGET-MIB | |||
| ; | ; | |||
| dtlstmMIB MODULE-IDENTITY | dtlstmMIB MODULE-IDENTITY | |||
| LAST-UPDATED "200807070000Z" | LAST-UPDATED "200807070000Z" | |||
| ORGANIZATION " " | ORGANIZATION " " | |||
| CONTACT-INFO "WG-EMail: | CONTACT-INFO "WG-EMail: | |||
| Subscribe: | Subscribe: | |||
| Chairs: | Chairs: | |||
| Co-editors: | Co-editors: | |||
| " | " | |||
| DESCRIPTION "The DTLS Transport Model MIB | DESCRIPTION "The DTLS Transport Model MIB | |||
| Copyright (C) The IETF Trust (2008). This | Copyright (C) The IETF Trust (2008). This | |||
| version of this MIB module is part of RFC XXXX; | 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 | ||||
| -- for this document and remove this note | ||||
| REVISION "200807070000Z" | REVISION "200807070000Z" | |||
| 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 | ||||
| -- for this document and remove this note | ||||
| ::= { snmpModules xxxx } | ::= { snmpModules xxxx } | |||
| -- RFC Ed.: replace xxxx with IANA-assigned number and | ||||
| -- remove this note | ||||
| -- ************************************************ | ||||
| -- subtrees of the SNMP-DTLS-TM-MIB | ||||
| -- ************************************************ | ||||
| dtlstmNotifications OBJECT IDENTIFIER ::= { dtlstmMIB 0 } | dtlstmNotifications OBJECT IDENTIFIER ::= { dtlstmMIB 0 } | |||
| dtlstmObjects OBJECT IDENTIFIER ::= { dtlstmMIB 1 } | dtlstmObjects OBJECT IDENTIFIER ::= { dtlstmMIB 1 } | |||
| dtlstmConformance OBJECT IDENTIFIER ::= { dtlstmMIB 2 } | dtlstmConformance OBJECT IDENTIFIER ::= { dtlstmMIB 2 } | |||
| -- ************************************************ | ||||
| -- Objects | ||||
| -- ************************************************ | ||||
| snmpDTLSDomain OBJECT-IDENTITY | snmpDTLSUDPDomain OBJECT-IDENTITY | |||
| STATUS current | STATUS current | |||
| DESCRIPTION | DESCRIPTION | |||
| "The SNMP over DTLS transport domain. The corresponding | "The SNMP over DTLS transport domain. The corresponding | |||
| transport address is of type SnmpDTLSAddress. | transport address is of type SnmpDTLSUDPAddress. | |||
| When an SNMP entity uses the snmpDTLSDomain transport | When an SNMP entity uses the snmpDTLSUDPDomain transport | |||
| model, it must be capable of accepting messages up to | model, it must be capable of accepting messages up to | |||
| the maximum MTU size for an interface it supports, minus the | the maximum MTU size for an interface it supports, minus the | |||
| needed IP, UDP, DTLS and other protocol overheads. | needed IP, UDP, DTLS and other protocol overheads. | |||
| The securityName prefix to be associated with the | The securityName prefix to be associated with the | |||
| snmpDTLSDomain is 'dtls'. This prefix may be used by | snmpDTLSUDPDomain is 'dudp'. This prefix may be used by | |||
| security models or other components to identify what secure | security models or other components to identify what secure | |||
| transport infrastructure authenticated a securityName." | transport infrastructure authenticated a securityName." | |||
| ::= { snmpDomains yy } | ::= { snmpDomains yy } | |||
| -- RFC Ed.: replace yy with IANA-assigned number and | ||||
| -- remove this note | ||||
| -- RFC Ed.: replace 'dudp' with the actual IANA assigned prefix string | ||||
| -- if 'dtls' is not assigned to this document. | ||||
| snmpDTLSSCTPDomain OBJECT-IDENTITY | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "The SNMP over DTLS transport domain. The corresponding | ||||
| transport address is of type SnmpDTLSSCTPAddress. | ||||
| SnmpDTLSAddress ::= TEXTUAL-CONVENTION | When an SNMP entity uses the snmpDTLSSCTPDomain transport | |||
| DISPLAY-HINT "1a" | model, it must be capable of accepting messages up to | |||
| STATUS current | the maximum MTU size for an interface it supports, minus the | |||
| DESCRIPTION | needed IP, SCTP, DTLS and other protocol overheads. | |||
| "Represents a UDP connection address for an IPv4 address, an | ||||
| IPv6 address or an ASCII encoded host name and port number. | ||||
| The hostname must be encoded in ASCII, as specified in RFC3490 | The securityName prefix to be associated with the | |||
| (Internationalizing Domain Names in Applications) followed by | snmpDTLSSCTPDomain is 'dsct'. This prefix may be used by | |||
| a colon ':' (ASCII character 0x3A) and a decimal port number | security models or other components to identify what secure | |||
| in ASCII. The name SHOULD be fully qualified whenever | transport infrastructure authenticated a securityName." | |||
| possible. | ||||
| An IPv4 address must be a dotted decimal format followed by a | ::= { snmpDomains zz } | |||
| colon ':' (ASCII character 0x3A) and a decimal port number in | ||||
| ASCII. | ||||
| An IPv6 address must be a colon separated format, surrounded | -- RFC Ed.: replace zz with IANA-assigned number and | |||
| by square brackets (ASCII characters 0x5B and 0x5D), followed | -- remove this note | |||
| by a colon ':' (ASCII character 0x3A) and a decimal port | ||||
| number in ASCII. | ||||
| Values of this textual convention may not be directly usable | -- RFC Ed.: replace 'dsct' with the actual IANA assigned prefix string | |||
| as transport-layer addressing information, and may require | -- if 'dtls' is not assigned to this document. | |||
| 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 | SnmpDTLSUDPAddress ::= TEXTUAL-CONVENTION | |||
| have snmpDTLSAddress values must fully describe how (and when) | DISPLAY-HINT "1a" | |||
| such names are to be resolved to IP addresses and vice versa. | STATUS current | |||
| DESCRIPTION | ||||
| "Represents a UDP connection address for an IPv4 address, an | ||||
| IPv6 address or an ASCII encoded host name and port number. | ||||
| This textual convention SHOULD NOT be used directly in object | The hostname must be encoded in ASCII, as specified in RFC3490 | |||
| definitions since it restricts addresses to a specific | (Internationalizing Domain Names in Applications) followed by | |||
| format. However, if it is used, it MAY be used either on its | a colon ':' (ASCII character 0x3A) and a decimal port number | |||
| own or in conjunction with TransportAddressType or | in ASCII. The name SHOULD be fully qualified whenever | |||
| TransportDomain as a pair. | possible. | |||
| When this textual convention is used as a syntax of an index | An IPv4 address must be a dotted decimal format followed by a | |||
| object, there may be issues with the limit of 128 | colon ':' (ASCII character 0x3A) and a decimal port number in | |||
| sub-identifiers specified in SMIv2, STD 58. It is RECOMMENDED | ASCII. | |||
| 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)) | ||||
| X509IdentifierHashType ::= TEXTUAL-CONVENTION | An IPv6 address must be a colon separated format, surrounded | |||
| STATUS current | by square brackets (ASCII characters 0x5B and 0x5D), followed | |||
| DESCRIPTION | by a colon ':' (ASCII character 0x3A) and a decimal port | |||
| "Identifies a hashing algorithm type that will be used for | number in ASCII. | |||
| identifying an X.509 certificate. | ||||
| The md5(1) value SHOULD NOT be used." | Values of this textual convention may not be directly usable | |||
| SYNTAX INTEGER { md5(1), sha1(2), sha256(3) } | 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). | ||||
| X509IdentifierHash ::= TEXTUAL-CONVENTION | The DESCRIPTION clause of TransportAddress objects that may | |||
| STATUS current | have snmpDTLSUDPAddress values must fully describe how (and | |||
| DESCRIPTION | when) such names are to be resolved to IP addresses and vice | |||
| "A hash value that uniquely identifies a certificate within a | versa. | |||
| systems local certificate store. The length of the value | ||||
| stored in an object of type X509IdentifierHash is dependent on | ||||
| the hashing algorithm that produced the hash. | ||||
| MIB structures making use of this textual convention should | This textual convention SHOULD NOT be used directly in object | |||
| have an accompanying object of type X509IdentifierHashType. | definitions since it restricts addresses to a specific | |||
| " | format. However, if it is used, it MAY be used either on its | |||
| SYNTAX OCTET STRING | own or in conjunction with TransportAddressType or | |||
| TransportDomain as a pair. | ||||
| When this textual convention is used as a syntax of an index | ||||
| object, there may be issues with the limit of 128 | ||||
| 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)) | ||||
| dtlstmSession OBJECT IDENTIFIER ::= { dtlstmObjects 1 } | SnmpDTLSSCTPAddress ::= TEXTUAL-CONVENTION | |||
| DISPLAY-HINT "1a" | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "Represents a SCTP connection address for an IPv4 address, an | ||||
| IPv6 address or an ASCII encoded host name and port number. | ||||
| dtlstmSessionOpens OBJECT-TYPE | The hostname must be encoded in ASCII, as specified in RFC3490 | |||
| SYNTAX Counter32 | (Internationalizing Domain Names in Applications) followed by | |||
| MAX-ACCESS read-only | a colon ':' (ASCII character 0x3A) and a decimal port number | |||
| STATUS current | in ASCII. The name SHOULD be fully qualified whenever | |||
| DESCRIPTION | possible. | |||
| "The number of times an openSession() request has been | ||||
| executed as an SSH client, whether it succeeded or failed." | ||||
| ::= { dtlstmSession 1 } | ||||
| dtlstmSessionCloses OBJECT-TYPE | An IPv4 address must be a dotted decimal format followed by a | |||
| SYNTAX Counter32 | colon ':' (ASCII character 0x3A) and a decimal port number in | |||
| MAX-ACCESS read-only | ASCII. | |||
| STATUS current | ||||
| DESCRIPTION | ||||
| "The number of times a closeSession() request has been | ||||
| executed as an SSH client, whether it succeeded or failed." | ||||
| ::= { dtlstmSession 2 } | ||||
| dtlstmSessionOpenErrors OBJECT-TYPE | An IPv6 address must be a colon separated format, surrounded | |||
| SYNTAX Counter32 | by square brackets (ASCII characters 0x5B and 0x5D), followed | |||
| MAX-ACCESS read-only | by a colon ':' (ASCII character 0x3A) and a decimal port | |||
| STATUS current | number in ASCII. | |||
| DESCRIPTION | ||||
| "The number of times an openSession() request failed to open a | ||||
| session as a SSH client, for any reason." | ||||
| ::= { dtlstmSession 3 } | ||||
| dtlstmSessionNoAvailableSessions OBJECT-TYPE | Values of this textual convention may not be directly usable | |||
| SYNTAX Counter32 | as transport-layer addressing information, and may require | |||
| MAX-ACCESS read-only | run-time resolution. As such, applications that write them | |||
| STATUS current | must be prepared for handling errors if such values are not | |||
| DESCRIPTION | supported, or cannot be resolved (if resolution occurs at the | |||
| "The number of times an outgoing message was dropped because | time of the management operation). | |||
| the session associated with the passed tmStateReference was no | ||||
| longer (or was never) available." | ||||
| ::= { dtlstmSession 4 } | ||||
| dtlstmSessionInvalidClientCertificates OBJECT-TYPE | The DESCRIPTION clause of TransportAddress objects that may | |||
| SYNTAX Counter32 | have snmpDTLSSCTPAddress values must fully describe how (and | |||
| MAX-ACCESS read-only | when) such names are to be resolved to IP addresses and vice | |||
| STATUS current | versa. | |||
| DESCRIPTION | ||||
| "The number of times an incoming session was not established | ||||
| on an SSH server because the presented client certificate was | ||||
| invalid. Reasons for invalidation includes, but is not | ||||
| limited to, crypographic validation failures and lack of a | ||||
| suitable mapping row in the dtlstmCertificateToSNTable." | ||||
| ::= { dtlstmSession 5 } | ||||
| dtlstmSessionInvalidServerCertificates OBJECT-TYPE | This textual convention SHOULD NOT be used directly in object | |||
| SYNTAX Counter32 | definitions since it restricts addresses to a specific | |||
| MAX-ACCESS read-only | format. However, if it is used, it MAY be used either on its | |||
| STATUS current | own or in conjunction with TransportAddressType or | |||
| DESCRIPTION | TransportDomain as a pair. | |||
| "The number of times an outgoing session was not established | ||||
| on an SSH client because the presented server certificate was | ||||
| invalid. Reasons for invalidation includes, but is not | ||||
| limited to, crypographic validation failures and an unexpected | ||||
| presented certificate identity." | ||||
| ::= { dtlstmSession 6 } | ||||
| dtlstmDTLSProtectionErrors OBJECT-TYPE | When this textual convention is used as a syntax of an index | |||
| SYNTAX Counter32 | object, there may be issues with the limit of 128 | |||
| MAX-ACCESS read-only | sub-identifiers specified in SMIv2, STD 58. It is RECOMMENDED | |||
| STATUS current | that all MIB documents using this textual convention make | |||
| DESCRIPTION | explicit any limitations on index component lengths that | |||
| "The number of times DTLS processing resulted in a message | management software must observe. This may be done either by | |||
| being discarded because it failed its integrity test, | including SIZE constraints on the index components or by | |||
| decryption processing or other DTLS processing." | specifying applicable constraints in the conceptual row | |||
| DESCRIPTION clause or in the surrounding documentation." | ||||
| SYNTAX OCTET STRING (SIZE (1..255)) | ||||
| ::= { dtlstmSession 7 } | X509IdentifierHashType ::= TEXTUAL-CONVENTION | |||
| STATUS current | ||||
| DESCRIPTION | ||||
| "Identifies a hashing algorithm type that will be used for | ||||
| identifying an X.509 certificate. | ||||
| The md5(1) value SHOULD NOT be used." | ||||
| SYNTAX INTEGER { md5(1), sha1(2), sha256(3) } | ||||
| dtlstmConfig OBJECT IDENTIFIER ::= { dtlstmObjects 2 } | X509IdentifierHash ::= TEXTUAL-CONVENTION | |||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A hash value that uniquely identifies a certificate within a | ||||
| systems local certificate store. The length of the value | ||||
| stored in an object of type X509IdentifierHash is dependent on | ||||
| the hashing algorithm that produced the hash. | ||||
| MIB structures making use of this textual convention should | ||||
| have an accompanying object of type X509IdentifierHashType. | ||||
| " | ||||
| SYNTAX OCTET STRING | ||||
| dtlstmCertificateMapping OBJECT IDENTIFIER ::= { dtlstmConfig 1 } | -- The dtlstmSession Group | |||
| dtlstmCertificateToSNCount OBJECT-TYPE | dtlstmSession OBJECT IDENTIFIER ::= { dtlstmObjects 1 } | |||
| SYNTAX Unsigned32 | ||||
| MAX-ACCESS read-only | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A count of the number of entries in the | ||||
| dtlstmCertificateToSNTable" | ||||
| ::= { dtlstmCertificateMapping 1 } | ||||
| dtlstmCertificateToSNTableLastChanged OBJECT-TYPE | dtlstmSessionOpens OBJECT-TYPE | |||
| SYNTAX TimeStamp | SYNTAX Counter32 | |||
| MAX-ACCESS read-only | MAX-ACCESS read-only | |||
| STATUS current | STATUS current | |||
| DESCRIPTION | DESCRIPTION | |||
| "The value of sysUpTime.0 when the dtlstmCertificateToSNTable | "The number of times an openSession() request has been | |||
| was last modified through any means, or 0 if it has not been | executed as an SSH client, whether it succeeded or failed." | |||
| modified since the command responder was started." | ::= { dtlstmSession 1 } | |||
| ::= { dtlstmCertificateMapping 2 } | ||||
| dtlstmCertificateToSNTable OBJECT-TYPE | dtlstmSessionCloses OBJECT-TYPE | |||
| SYNTAX SEQUENCE OF DtlstmCertificateToSNEntry | SYNTAX Counter32 | |||
| MAX-ACCESS not-accessible | MAX-ACCESS read-only | |||
| STATUS current | STATUS current | |||
| DESCRIPTION | DESCRIPTION | |||
| "A table listing the X.509 certificates known to the entity | "The number of times a closeSession() request has been | |||
| and the associated method for determining the SNMPv3 security | executed as an SSH client, whether it succeeded or failed." | |||
| name from a certificate. | ::= { dtlstmSession 2 } | |||
| On an incoming DTLS/SNMP connection the client's presented | dtlstmSessionOpenErrors OBJECT-TYPE | |||
| certificate should be examined and validated based on an | SYNTAX Counter32 | |||
| established trusted CA certificate or self-signed public | MAX-ACCESS read-only | |||
| certificate. This table does not provide a mechanism for | STATUS current | |||
| uploading the certificates as that is expected to occur | DESCRIPTION | |||
| through an out-of-band transfer. | "The number of times an openSession() request failed to open a | |||
| session as a SSH client, for any reason." | ||||
| ::= { dtlstmSession 3 } | ||||
| Once the authenticity of the certificate has been verified, | dtlstmSessionNoAvailableSessions OBJECT-TYPE | |||
| this table can be consulted to determine the appropriate | SYNTAX Counter32 | |||
| securityName to identify the remote connection. This is done | MAX-ACCESS read-only | |||
| by comparing the issuer's fingerprint hash type and value and | STATUS current | |||
| the certificate's fingerprint hash type and value against the | DESCRIPTION | |||
| dtlstmCertHashType and dtlstmCertHashValue values in each | "The number of times an outgoing message was dropped because | |||
| entry of this table. If a matching entry is found then the | the session associated with the passed tmStateReference was no | |||
| securityName is selected based on the dtlstmCertMapType, | longer (or was never) available." | |||
| dtlstmCertHashType, dtlstmCertHashValue and | ::= { dtlstmSession 4 } | |||
| dtlstmCertSecurityName fields and the resulting securityName | ||||
| is used to identify the other side of the DTLS connection. | ||||
| This table should be treated as an ordered list of mapping | dtlstmSessionInvalidClientCertificates OBJECT-TYPE | |||
| rules to check. The first mapping rule appropriately matching | SYNTAX Counter32 | |||
| a certificate in the local certificate store with a | MAX-ACCESS read-only | |||
| corresponding hash type (dtlstmCertHashType) and hash value | STATUS current | |||
| (dtlstmCertHashValue) will be used to perform the mapping from | DESCRIPTION | |||
| X.509 certificate values to a securityName. If, after a | "The number of times an incoming session was not established | |||
| matching row is found but the mapping can not succeed for some | on an SSH server because the presented client certificate was | |||
| other reason then further attempts to perform the mapping MUST | invalid. Reasons for invalidation includes, but is not | |||
| NOT be taken. For example, if the entry being checked | limited to, crypographic validation failures and lack of a | |||
| contains a dtlstmCertMapType of bySubjectAltName(2) and an | suitable mapping row in the dtlstmCertificateToSNTable." | |||
| incoming connection uses a certificate with an issuer | ::= { dtlstmSession 5 } | |||
| certificate matching the dtlstmCertHashType and | ||||
| dtlstmCertHashValue fields but the connecting certificate does | ||||
| not contain a subjectAltName field then the lookup operation | ||||
| must be treated as a failure. No further rows are examined for | ||||
| other potential mappings. | ||||
| Missing values of dtlstmCertID are acceptable and | dtlstmSessionInvalidServerCertificates OBJECT-TYPE | |||
| implementations should treat missing entries as a failed match | SYNTAX Counter32 | |||
| and should continue to the next highest numbered row. E.G., | MAX-ACCESS read-only | |||
| the table may legally contain only two rows with dtlstmCertID | STATUS current | |||
| values of 10 and 20. | DESCRIPTION | |||
| "The number of times an outgoing session was not established | ||||
| on an SSH client because the presented server certificate was | ||||
| invalid. Reasons for invalidation includes, but is not | ||||
| limited to, crypographic validation failures and an unexpected | ||||
| presented certificate identity." | ||||
| ::= { dtlstmSession 6 } | ||||
| Users are encouraged to make use of certificates with | dtlstmDTLSProtectionErrors OBJECT-TYPE | |||
| subjectAltName fields that can be used as securityNames so | SYNTAX Counter32 | |||
| that a single root CA certificate can allow all child | MAX-ACCESS read-only | |||
| certificate's subjectAltName to map directly to a securityName | STATUS current | |||
| via a 1:1 transformation. However, this table is flexible | DESCRIPTION | |||
| enough to allow for situations where existing deployed | "The number of times DTLS processing resulted in a message | |||
| certificate infrastructures do not provide adequate | being discarded because it failed its integrity test, | |||
| subjectAltName values for use as SNMPv3 securityNames. | decryption processing or other DTLS processing." | |||
| Certificates may also be mapped to securityNames using the | ::= { dtlstmSession 7 } | |||
| CommonName portion of the Subject field which is also a | ||||
| scalable method of mapping certificate components to | ||||
| securityNames. Finally, direct mapping from each individual | ||||
| certificate fingerprint to a securityName is possible but | ||||
| requires one entry in the table per securityName." | ||||
| ::= { dtlstmCertificateMapping 3 } | ||||
| dtlstmCertificateToSNEntry OBJECT-TYPE | -- Configuration Objects | |||
| SYNTAX DtlstmCertificateToSNEntry | ||||
| MAX-ACCESS not-accessible | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A row in the dtlstmCertificateToSNTable that specifies a | ||||
| mapping for an incoming DTLS certificate to a securityName to | ||||
| use for the connection." | ||||
| INDEX { dtlstmCertID } | ||||
| ::= { dtlstmCertificateToSNTable 1 } | ||||
| DtlstmCertificateToSNEntry ::= SEQUENCE { | dtlstmConfig OBJECT IDENTIFIER ::= { dtlstmObjects 2 } | |||
| dtlstmCertID Unsigned32, | ||||
| dtlstmCertHashType X509IdentifierHashType, | ||||
| dtlstmCertHashValue X509IdentifierHash, | ||||
| dtlstmCertMapType INTEGER, | ||||
| dtlstmCertSecurityName SnmpAdminString, | ||||
| dtlstmCertStorageType StorageType, | ||||
| dtlstmCertRowStatus RowStatus | ||||
| } | ||||
| dtlstmCertID OBJECT-TYPE | -- Certificate mapping | |||
| SYNTAX Unsigned32 | ||||
| MAX-ACCESS not-accessible | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A unique arbitrary number index for a given certificate | ||||
| entry." | ||||
| ::= { dtlstmCertificateToSNEntry 1 } | ||||
| dtlstmCertHashType OBJECT-TYPE | dtlstmCertificateMapping OBJECT IDENTIFIER ::= { dtlstmConfig 1 } | |||
| SYNTAX X509IdentifierHashType | dtlstmCertificateToSNCount OBJECT-TYPE | |||
| MAX-ACCESS read-create | SYNTAX Unsigned32 | |||
| STATUS current | MAX-ACCESS read-only | |||
| DESCRIPTION | STATUS current | |||
| "The hash algorithm to use when applying a hash to a X.509 | DESCRIPTION | |||
| certificate for purposes of referring to it from the | "A count of the number of entries in the | |||
| dtlstmCertHashValue column. | dtlstmCertificateToSNTable" | |||
| ::= { dtlstmCertificateMapping 1 } | ||||
| The md5(1) value SHOULD NOT be used." | dtlstmCertificateToSNTableLastChanged OBJECT-TYPE | |||
| DEFVAL { sha256 } | SYNTAX TimeStamp | |||
| ::= { dtlstmCertificateToSNEntry 2 } | MAX-ACCESS read-only | |||
| STATUS current | ||||
| DESCRIPTION | ||||
| "The value of sysUpTime.0 when the dtlstmCertificateToSNTable | ||||
| was last modified through any means, or 0 if it has not been | ||||
| modified since the command responder was started." | ||||
| ::= { dtlstmCertificateMapping 2 } | ||||
| dtlstmCertHashValue OBJECT-TYPE | dtlstmCertificateToSNTable OBJECT-TYPE | |||
| SYNTAX X509IdentifierHash | SYNTAX SEQUENCE OF DtlstmCertificateToSNEntry | |||
| MAX-ACCESS read-create | MAX-ACCESS not-accessible | |||
| STATUS current | STATUS current | |||
| DESCRIPTION | DESCRIPTION | |||
| "A cryptographic hash of a X.509 certificate. The use of this | "A table listing the X.509 certificates known to the entity | |||
| hash is dictated by the dtlstmCertMapType column. | and the associated method for determining the SNMPv3 security | |||
| " | name from a certificate. | |||
| ::= { dtlstmCertificateToSNEntry 3 } | ||||
| dtlstmCertMapType OBJECT-TYPE | On an incoming DTLS/SNMP connection the client's presented | |||
| SYNTAX INTEGER { specified(1), bySubjectAltName(2), byCN(3) } | certificate should be examined and validated based on an | |||
| MAX-ACCESS read-create | established trusted CA certificate or self-signed public | |||
| STATUS current | certificate. This table does not provide a mechanism for | |||
| DESCRIPTION | uploading the certificates as that is expected to occur | |||
| "The mapping type used to obtain the securityName from the | through an out-of-band transfer. | |||
| certificate. The possible values of use and their usage | ||||
| methods are defined as follows: | ||||
| specified(1): The securityName that should be used locally to | Once the authenticity of the certificate has been verified, | |||
| identify the remote entity is directly specified | this table can be consulted to determine the appropriate | |||
| in the dtlstmCertSecurityName column from this | securityName to identify the remote connection. This is done | |||
| table. The dtlstmCertHashValue MUST refer to a | by comparing the issuer's fingerprint hash type and value and | |||
| X.509 client certificate that will be mapped | the certificate's fingerprint hash type and value against the | |||
| directly to the securityName specified in the | dtlstmCertHashType and dtlstmCertHashValue values in each | |||
| dtlstmCertSecurityName column. | entry of this table. If a matching entry is found then the | |||
| securityName is selected based on the dtlstmCertMapType, | ||||
| dtlstmCertHashType, dtlstmCertHashValue and | ||||
| dtlstmCertSecurityName fields and the resulting securityName | ||||
| is used to identify the other side of the DTLS connection. | ||||
| bySubjectAltName(2): | This table should be treated as an ordered list of mapping | |||
| The securityName that should be used locally to | rules to check. The first mapping rule appropriately matching | |||
| identify the remote entity should be taken from | a certificate in the local certificate store with a | |||
| the subjectAltName portion of the X.509 | corresponding hash type (dtlstmCertHashType) and hash value | |||
| certificate. The dtlstmCertHashValue MUST refer | (dtlstmCertHashValue) will be used to perform the mapping from | |||
| to a trust anchor certificate that is | X.509 certificate values to a securityName. If, after a | |||
| responsible for issuing certificates with | matching row is found but the mapping can not succeed for some | |||
| carefully controlled subjectAltName fields. | other reason then further attempts to perform the mapping MUST | |||
| NOT be taken. For example, if the entry being checked | ||||
| contains a dtlstmCertMapType of bySubjectAltName(2) and an | ||||
| incoming connection uses a certificate with an issuer | ||||
| certificate matching the dtlstmCertHashType and | ||||
| dtlstmCertHashValue fields but the connecting certificate does | ||||
| not contain a subjectAltName field then the lookup operation | ||||
| must be treated as a failure. No further rows are examined for | ||||
| other potential mappings. | ||||
| byCN(3): The securityName that should be used locally to | Missing values of dtlstmCertID are acceptable and | |||
| identify the remote entity should be taken from | implementations should treat missing entries as a failed match | |||
| the CommonName portion of the Subject field from | and should continue to the next highest numbered row. E.G., | |||
| the X.509 certificate. The dtlstmCertHashValue | the table may legally contain only two rows with dtlstmCertID | |||
| MUST refer to a trust anchor certificate that is | values of 10 and 20. | |||
| responsible for issuing certificates with | ||||
| carefully controlled CommonName fields." | ||||
| DEFVAL { specified } | ||||
| ::= { dtlstmCertificateToSNEntry 4 } | ||||
| dtlstmCertSecurityName OBJECT-TYPE | Users are encouraged to make use of certificates with | |||
| SYNTAX SnmpAdminString (SIZE(0..32)) | subjectAltName fields that can be used as securityNames so | |||
| MAX-ACCESS read-create | that a single root CA certificate can allow all child | |||
| STATUS current | certificate's subjectAltName to map directly to a securityName | |||
| DESCRIPTION | via a 1:1 transformation. However, this table is flexible | |||
| "The securityName that the session should use if the | enough to allow for situations where existing deployed | |||
| dtlstmCertMapType is set to specified(1), otherwise the value | certificate infrastructures do not provide adequate | |||
| in this column should be ignored. If dtlstmCertMapType is set | subjectAltName values for use as SNMPv3 securityNames. | |||
| to specifed(1) and this column contains a zero-length string | Certificates may also be mapped to securityNames using the | |||
| (which is not a legal securityName value) this row is | CommonName portion of the Subject field which is also a | |||
| effectively disabled and the match will not be considered | scalable method of mapping certificate components to | |||
| successful." | securityNames. Finally, direct mapping from each individual | |||
| DEFVAL { "" } | certificate fingerprint to a securityName is possible but | |||
| ::= { dtlstmCertificateToSNEntry 5 } | requires one entry in the table per securityName." | |||
| ::= { dtlstmCertificateMapping 3 } | ||||
| dtlstmCertStorageType OBJECT-TYPE | dtlstmCertificateToSNEntry OBJECT-TYPE | |||
| SYNTAX StorageType | SYNTAX DtlstmCertificateToSNEntry | |||
| MAX-ACCESS read-create | MAX-ACCESS not-accessible | |||
| STATUS current | STATUS current | |||
| DESCRIPTION | DESCRIPTION | |||
| "The storage type for this conceptual row. Conceptual rows | "A row in the dtlstmCertificateToSNTable that specifies a | |||
| having the value 'permanent' need not allow write-access to | mapping for an incoming DTLS certificate to a securityName to | |||
| any columnar objects in the row." | use for the connection." | |||
| DEFVAL { nonVolatile } | INDEX { dtlstmCertID } | |||
| ::= { dtlstmCertificateToSNEntry 6 } | ::= { dtlstmCertificateToSNTable 1 } | |||
| dtlstmCertRowStatus OBJECT-TYPE | DtlstmCertificateToSNEntry ::= SEQUENCE { | |||
| SYNTAX RowStatus | dtlstmCertID Unsigned32, | |||
| MAX-ACCESS read-create | dtlstmCertHashType X509IdentifierHashType, | |||
| STATUS current | dtlstmCertHashValue X509IdentifierHash, | |||
| DESCRIPTION | dtlstmCertMapType INTEGER, | |||
| "The status of this conceptual row. This object may be used | dtlstmCertSecurityName SnmpAdminString, | |||
| to create or remove rows from this table. | dtlstmCertStorageType StorageType, | |||
| dtlstmCertRowStatus RowStatus | ||||
| } | ||||
| The value of this object has no effect on whether | dtlstmCertID OBJECT-TYPE | |||
| other objects in this conceptual row can be modified." | SYNTAX Unsigned32 | |||
| ::= { dtlstmCertificateToSNEntry 7 } | MAX-ACCESS not-accessible | |||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A unique arbitrary number index for a given certificate | ||||
| entry." | ||||
| ::= { dtlstmCertificateToSNEntry 1 } | ||||
| dtlstmCertHashType OBJECT-TYPE | ||||
| SYNTAX X509IdentifierHashType | ||||
| MAX-ACCESS read-create | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "The hash algorithm to use when applying a hash to a X.509 | ||||
| certificate for purposes of referring to it from the | ||||
| dtlstmCertHashValue column. | ||||
| dtlstmParamsCount OBJECT-TYPE | The md5(1) value SHOULD NOT be used." | |||
| SYNTAX Unsigned32 | DEFVAL { sha256 } | |||
| MAX-ACCESS read-only | ::= { dtlstmCertificateToSNEntry 2 } | |||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A count of the number of entries in the | ||||
| dtlstmParamsTable" | ||||
| ::= { dtlstmCertificateMapping 4 } | ||||
| dtlstmParamsTableLastChanged OBJECT-TYPE | dtlstmCertHashValue OBJECT-TYPE | |||
| SYNTAX TimeStamp | SYNTAX X509IdentifierHash | |||
| MAX-ACCESS read-only | MAX-ACCESS read-create | |||
| STATUS current | STATUS current | |||
| DESCRIPTION | DESCRIPTION | |||
| "The value of sysUpTime.0 when the dtlstmParamsTable | "A cryptographic hash of a X.509 certificate. The use of this | |||
| was last modified through any means, or 0 if it has not been | hash is dictated by the dtlstmCertMapType column. | |||
| modified since the command responder was started." | " | |||
| ::= { dtlstmCertificateMapping 5 } | ::= { dtlstmCertificateToSNEntry 3 } | |||
| dtlstmParamsTable OBJECT-TYPE | dtlstmCertMapType OBJECT-TYPE | |||
| SYNTAX SEQUENCE OF DtlstmParamsEntry | SYNTAX INTEGER { specified(1), bySubjectAltName(2), byCN(3) } | |||
| MAX-ACCESS not-accessible | MAX-ACCESS read-create | |||
| STATUS current | STATUS current | |||
| DESCRIPTION | DESCRIPTION | |||
| "This table augments the SNMP-TARGET-MIB's | "The mapping type used to obtain the securityName from the | |||
| snmpTargetParamsTable with additional a DTLS client-side | certificate. The possible values of use and their usage | |||
| certificate certificate identifier to use when establishing | methods are defined as follows: | |||
| new DTLS connections." | ||||
| ::= { dtlstmCertificateMapping 6 } | ||||
| dtlstmParamsEntry OBJECT-TYPE | specified(1): The securityName that should be used locally to | |||
| SYNTAX DtlstmParamsEntry | identify the remote entity is directly specified | |||
| MAX-ACCESS not-accessible | in the dtlstmCertSecurityName column from this | |||
| STATUS current | table. The dtlstmCertHashValue MUST refer to a | |||
| DESCRIPTION | X.509 client certificate that will be mapped | |||
| "A conceptual row containing a locally held certificate's hash | directly to the securityName specified in the | |||
| type and hash value for a given snmpTargetParamsEntry. The | dtlstmCertSecurityName column. | |||
| values in this row should be ignored if not the connection | ||||
| that needs to be established, as indicated by the | ||||
| SNMP-TARGET-MIB infrastructure, is not a DTLS based | ||||
| connection." | ||||
| AUGMENTS { snmpTargetParamsEntry } | ||||
| ::= { dtlstmParamsTable 1 } | ||||
| DtlstmParamsEntry ::= SEQUENCE { | bySubjectAltName(2): | |||
| dtlstmParamsHashType X509IdentifierHashType, | The securityName that should be used locally to | |||
| dtlstmParamsHashValue X509IdentifierHash, | identify the remote entity should be taken from | |||
| dtlstmParamsStorageType StorageType, | the subjectAltName portion of the X.509 | |||
| dtlstmParamsRowStatus RowStatus | certificate. The dtlstmCertHashValue MUST refer | |||
| } | to a trust anchor certificate that is | |||
| responsible for issuing certificates with | ||||
| carefully controlled subjectAltName fields. | ||||
| dtlstmParamsHashType OBJECT-TYPE | byCN(3): The securityName that should be used locally to | |||
| SYNTAX X509IdentifierHashType | identify the remote entity should be taken from | |||
| MAX-ACCESS read-create | the CommonName portion of the Subject field from | |||
| STATUS current | the X.509 certificate. The dtlstmCertHashValue | |||
| DESCRIPTION | MUST refer to a trust anchor certificate that is | |||
| "The hash algorithm type for the hash stored in the | responsible for issuing certificates with | |||
| dtlstmParamsHash column to identify a locally-held X.509 | carefully controlled CommonName fields." | |||
| certificate that should be used when initiating a DTLS | DEFVAL { specified } | |||
| connection as a DTLS client." | ::= { dtlstmCertificateToSNEntry 4 } | |||
| DEFVAL { sha256 } | ||||
| ::= { dtlstmParamsEntry 1 } | ||||
| dtlstmParamsHashValue OBJECT-TYPE | dtlstmCertSecurityName OBJECT-TYPE | |||
| SYNTAX X509IdentifierHash | SYNTAX SnmpAdminString (SIZE(0..32)) | |||
| MAX-ACCESS read-create | MAX-ACCESS read-create | |||
| STATUS current | STATUS current | |||
| DESCRIPTION | DESCRIPTION | |||
| "A cryptographic hash of a X.509 certificate. This object | "The securityName that the session should use if the | |||
| should store the hash of a locally held X.509 certificate that | dtlstmCertMapType is set to specified(1), otherwise the value | |||
| should be used when initiating a DTLS connection as a DTLS | in this column should be ignored. If dtlstmCertMapType is set | |||
| client." | to specifed(1) and this column contains a zero-length string | |||
| ::= { dtlstmParamsEntry 2 } | (which is not a legal securityName value) this row is | |||
| effectively disabled and the match will not be considered | ||||
| successful." | ||||
| DEFVAL { "" } | ||||
| ::= { dtlstmCertificateToSNEntry 5 } | ||||
| dtlstmParamsStorageType OBJECT-TYPE | dtlstmCertStorageType 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 } | |||
| ::= { dtlstmParamsEntry 3 } | ::= { dtlstmCertificateToSNEntry 6 } | |||
| dtlstmParamsRowStatus OBJECT-TYPE | dtlstmCertRowStatus 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. | |||
| The value of this object has no effect on whether | The value of this object has no effect on whether | |||
| other objects in this conceptual row can be modified." | other objects in this conceptual row can be modified." | |||
| ::= { dtlstmParamsEntry 4 } | ::= { dtlstmCertificateToSNEntry 7 } | |||
| -- Maps securityNames to certificates for use by the SNMP-TARGET-MIB | ||||
| dtlstmCompliances OBJECT IDENTIFIER ::= { dtlstmConformance 1 } | dtlstmParamsCount OBJECT-TYPE | |||
| SYNTAX Unsigned32 | ||||
| MAX-ACCESS read-only | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A count of the number of entries in the | ||||
| dtlstmParamsTable" | ||||
| ::= { dtlstmCertificateMapping 4 } | ||||
| dtlstmGroups OBJECT IDENTIFIER ::= { dtlstmConformance 2 } | dtlstmParamsTableLastChanged OBJECT-TYPE | |||
| SYNTAX TimeStamp | ||||
| MAX-ACCESS read-only | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "The value of sysUpTime.0 when the dtlstmParamsTable | ||||
| was last modified through any means, or 0 if it has not been | ||||
| modified since the command responder was started." | ||||
| ::= { dtlstmCertificateMapping 5 } | ||||
| dtlstmParamsTable OBJECT-TYPE | ||||
| SYNTAX SEQUENCE OF DtlstmParamsEntry | ||||
| MAX-ACCESS not-accessible | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "This table augments the SNMP-TARGET-MIB's | ||||
| snmpTargetParamsTable with additional a DTLS client-side | ||||
| certificate certificate identifier to use when establishing | ||||
| new DTLS connections." | ||||
| ::= { dtlstmCertificateMapping 6 } | ||||
| dtlstmCompliance MODULE-COMPLIANCE | dtlstmParamsEntry OBJECT-TYPE | |||
| STATUS current | SYNTAX DtlstmParamsEntry | |||
| DESCRIPTION | MAX-ACCESS not-accessible | |||
| "The compliance statement for SNMP engines that support the | STATUS current | |||
| SNMP-DTLS-TM-MIB" | DESCRIPTION | |||
| MODULE | "A conceptual row containing a locally held certificate's hash | |||
| MANDATORY-GROUPS { dtlstmStatsGroup, | type and hash value for a given snmpTargetParamsEntry. The | |||
| dtlstmIncomingGroup, dtlstmOutgoingGroup } | values in this row should be ignored if not the connection | |||
| ::= { dtlstmCompliances 1 } | that needs to be established, as indicated by the | |||
| SNMP-TARGET-MIB infrastructure, is not a DTLS based | ||||
| connection." | ||||
| AUGMENTS { snmpTargetParamsEntry } | ||||
| ::= { dtlstmParamsTable 1 } | ||||
| dtlstmStatsGroup OBJECT-GROUP | DtlstmParamsEntry ::= SEQUENCE { | |||
| OBJECTS { | dtlstmParamsHashType X509IdentifierHashType, | |||
| dtlstmSessionOpens, | dtlstmParamsHashValue X509IdentifierHash, | |||
| dtlstmSessionCloses, | dtlstmParamsStorageType StorageType, | |||
| dtlstmSessionOpenErrors, | dtlstmParamsRowStatus RowStatus | |||
| dtlstmSessionNoAvailableSessions, | } | |||
| dtlstmSessionInvalidClientCertificates, | ||||
| dtlstmSessionInvalidServerCertificates, | ||||
| dtlstmDTLSProtectionErrors | ||||
| } | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A collection of objects for maintaining | ||||
| statistical information of an SNMP engine which | ||||
| implements the SNMP DTLS Transport Model." | ||||
| ::= { dtlstmGroups 1 } | ||||
| dtlstmIncomingGroup OBJECT-GROUP | dtlstmParamsHashType OBJECT-TYPE | |||
| OBJECTS { | SYNTAX X509IdentifierHashType | |||
| dtlstmCertificateToSNCount, | MAX-ACCESS read-create | |||
| dtlstmCertificateToSNTableLastChanged, | STATUS current | |||
| dtlstmCertHashType, | DESCRIPTION | |||
| dtlstmCertHashValue, | "The hash algorithm type for the hash stored in the | |||
| dtlstmCertMapType, | dtlstmParamsHash column to identify a locally-held X.509 | |||
| dtlstmCertSecurityName, | certificate that should be used when initiating a DTLS | |||
| dtlstmCertStorageType, | connection as a DTLS client." | |||
| dtlstmCertRowStatus | DEFVAL { sha256 } | |||
| } | ::= { dtlstmParamsEntry 1 } | |||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A collection of objects for maintaining | ||||
| incoming connection certificate mappings to | ||||
| securityNames of an SNMP engine which implements the | ||||
| SNMP DTLS Transport Model." | ||||
| ::= { dtlstmGroups 2 } | ||||
| dtlstmOutgoingGroup OBJECT-GROUP | dtlstmParamsHashValue OBJECT-TYPE | |||
| OBJECTS { | SYNTAX X509IdentifierHash | |||
| dtlstmParamsCount, | MAX-ACCESS read-create | |||
| dtlstmParamsTableLastChanged, | STATUS current | |||
| dtlstmParamsHashType, | DESCRIPTION | |||
| dtlstmParamsHashValue, | "A cryptographic hash of a X.509 certificate. This object | |||
| dtlstmParamsStorageType, | should store the hash of a locally held X.509 certificate that | |||
| dtlstmParamsRowStatus | should be used when initiating a DTLS connection as a DTLS | |||
| } | client." | |||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A collection of objects for maintaining | ||||
| outgoing connection certificates to use when opening | ||||
| connections as a result of SNMP-TARGET-MIB settings." | ||||
| ::= { dtlstmGroups 3 } | ||||
| END | ::= { dtlstmParamsEntry 2 } | |||
| dtlstmParamsStorageType OBJECT-TYPE | ||||
| SYNTAX StorageType | ||||
| MAX-ACCESS read-create | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "The storage type for this conceptual row. Conceptual rows | ||||
| having the value 'permanent' need not allow write-access to | ||||
| any columnar objects in the row." | ||||
| DEFVAL { nonVolatile } | ||||
| ::= { dtlstmParamsEntry 3 } | ||||
| dtlstmParamsRowStatus OBJECT-TYPE | ||||
| SYNTAX RowStatus | ||||
| MAX-ACCESS read-create | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "The status of this conceptual row. This object may be used | ||||
| to create or remove rows from this table. | ||||
| The value of this object has no effect on whether | ||||
| other objects in this conceptual row can be modified." | ||||
| ::= { dtlstmParamsEntry 4 } | ||||
| -- ************************************************ | ||||
| -- dtlstmMIB - Conformance Information | ||||
| -- ************************************************ | ||||
| dtlstmCompliances OBJECT IDENTIFIER ::= { dtlstmConformance 1 } | ||||
| dtlstmGroups OBJECT IDENTIFIER ::= { dtlstmConformance 2 } | ||||
| -- ************************************************ | ||||
| -- Compliance statements | ||||
| -- ************************************************ | ||||
| dtlstmCompliance MODULE-COMPLIANCE | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "The compliance statement for SNMP engines that support the | ||||
| SNMP-DTLS-TM-MIB" | ||||
| MODULE | ||||
| MANDATORY-GROUPS { dtlstmStatsGroup, | ||||
| dtlstmIncomingGroup, dtlstmOutgoingGroup } | ||||
| ::= { dtlstmCompliances 1 } | ||||
| -- ************************************************ | ||||
| -- Units of conformance | ||||
| -- ************************************************ | ||||
| dtlstmStatsGroup OBJECT-GROUP | ||||
| OBJECTS { | ||||
| dtlstmSessionOpens, | ||||
| dtlstmSessionCloses, | ||||
| dtlstmSessionOpenErrors, | ||||
| dtlstmSessionNoAvailableSessions, | ||||
| dtlstmSessionInvalidClientCertificates, | ||||
| dtlstmSessionInvalidServerCertificates, | ||||
| dtlstmDTLSProtectionErrors | ||||
| } | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A collection of objects for maintaining | ||||
| statistical information of an SNMP engine which | ||||
| implements the SNMP DTLS Transport Model." | ||||
| ::= { dtlstmGroups 1 } | ||||
| dtlstmIncomingGroup OBJECT-GROUP | ||||
| OBJECTS { | ||||
| dtlstmCertificateToSNCount, | ||||
| dtlstmCertificateToSNTableLastChanged, | ||||
| dtlstmCertHashType, | ||||
| dtlstmCertHashValue, | ||||
| dtlstmCertMapType, | ||||
| dtlstmCertSecurityName, | ||||
| dtlstmCertStorageType, | ||||
| dtlstmCertRowStatus | ||||
| } | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A collection of objects for maintaining | ||||
| incoming connection certificate mappings to | ||||
| securityNames of an SNMP engine which implements the | ||||
| SNMP DTLS Transport Model." | ||||
| ::= { dtlstmGroups 2 } | ||||
| dtlstmOutgoingGroup OBJECT-GROUP | ||||
| OBJECTS { | ||||
| dtlstmParamsCount, | ||||
| dtlstmParamsTableLastChanged, | ||||
| dtlstmParamsHashType, | ||||
| dtlstmParamsHashValue, | ||||
| dtlstmParamsStorageType, | ||||
| dtlstmParamsRowStatus | ||||
| } | ||||
| STATUS current | ||||
| DESCRIPTION | ||||
| "A collection of objects for maintaining | ||||
| outgoing connection certificates to use when opening | ||||
| connections as a result of SNMP-TARGET-MIB settings." | ||||
| ::= { dtlstmGroups 3 } | ||||
| END | ||||
| 8. Operational Considerations | 8. Operational Considerations | |||
| This section discusses various operational aspects of the solution | This section discusses various operational aspects of the solution | |||
| 8.1. Sessions | 8.1. Sessions | |||
| 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 DTLS client and the DTLS server. State | association between the DTLS client and the DTLS server. State | |||
| information for the sessions are maintained in each DTLSTM and this | information for the sessions are maintained in each DTLSTM and this | |||
| skipping to change at page 51, line 6 ¶ | skipping to change at page 49, line 43 ¶ | |||
| contextEngineID discovery mechanism. A recommended discovery | contextEngineID discovery mechanism. A recommended discovery | |||
| solution is documented in [RFC5343]. | solution is documented in [RFC5343]. | |||
| 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 DTLS security services. The security threats and how the | utilize DTLS security services. The security threats and how the | |||
| DTLS transport model mitigates these threats are covered in detail | DTLS 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 Appendices D, E, and F of TLS 1.1 [RFC4346]. DTLS adds | described in Section 11 and Appendices D, E, and F of TLS 1.2 | |||
| to the security considerations of TLS only because it is more | [RFC5246]. DTLS adds to the security considerations of TLS only | |||
| vulnerable to denial of service attacks. A random cookie exchange | because it is more vulnerable to denial of service attacks. A random | |||
| was added to the handshake to prevent anonymous denial of service | cookie exchange was added to the handshake to prevent anonymous | |||
| attacks. RFC 4347 recommends that the cookie exchange is utilized | denial of service attacks. RFC 4347 recommends that the cookie | |||
| for all handshakes and therefore it is RECOMMENDED that implementers | exchange is utilized for all handshakes and therefore it is | |||
| also support this cookie exchange. | RECOMMENDED that implementers also support this cookie exchange. | |||
| 9.1. Certificates, Authentication, and Authorization | 9.1. Certificates, Authentication, and Authorization | |||
| Implementations are responsible for providing a security certificate | Implementations are responsible for providing a security certificate | |||
| configuration installation . Implementations SHOULD support | configuration installation . Implementations SHOULD support | |||
| certificate revocation lists and expiration of certificates or other | certificate revocation lists and expiration of certificates or other | |||
| access control mechanisms. | access control mechanisms. | |||
| DTLS provides for both authentication of the identity of the DTLS | DTLS provides for both authentication of the identity of the DTLS | |||
| server and authentication of the identity of the DTLS client. Access | server and authentication of the identity of the DTLS client. Access | |||
| to MIB objects for the authenticated principal MUST be enforced by an | to MIB objects for the authenticated principal MUST be enforced by an | |||
| access control subsystem (e.g. the VACM). | access control subsystem (e.g. the VACM). | |||
| Authentication of the Command Generator principal's identity is | Authentication of the Command Generator principal's identity is | |||
| important for use with the SNMP access control subsystem to ensure | important for use with the SNMP access control subsystem to ensure | |||
| that only authorized principals have access to potentially sensitive | that only authorized principals have access to potentially sensitive | |||
| data. The authenticated identity of the Command Generator | data. The authenticated identity of the Command Generator | |||
| principal's certificate is mapped to an SNMP model-independent | principal's certificate is mapped to an SNMP model-independent | |||
| securityName for use with SNMP access control, as discussed in | securityName for use with SNMP access control. | |||
| Section 4.5.3.4, Section 7 and other sections. | ||||
| Furthermore, the DTLS handshake only provides assurance that the | Furthermore, the DTLS handshake only provides assurance that the | |||
| certificate of the authenticated identity has been signed by an | certificate of the authenticated identity has been signed by an | |||
| configured accepted Certificate Authority. DTLS has no way to | configured accepted Certificate Authority. DTLS has no way to | |||
| further authorize or reject access based on the authenticated | further authorize or reject access based on the authenticated | |||
| identity. An Access Control Model (such as the VACM) provides access | identity. An Access Control Model (such as the VACM) provides access | |||
| control and authorization of a Command Generator's requests to a | control and authorization of a Command Generator's requests to a | |||
| Command Responder and a Notification Responder's authorization to | Command Responder and a Notification Responder's authorization to | |||
| receive Notifications from a Notification Originator. However to | receive Notifications from a Notification Originator. However to | |||
| avoid man-in-the-middle attacks both ends of the DTLS based | avoid man-in-the-middle attacks both ends of the DTLS based | |||
| skipping to change at page 53, line 7 ¶ | skipping to change at page 51, line 43 ¶ | |||
| including full support for the USM (see [RFC3414]) and the DTLS | including full support for the USM (see [RFC3414]) and the DTLS | |||
| Transport Model cryptographic mechanisms (for authentication and | Transport Model cryptographic mechanisms (for authentication and | |||
| privacy). | privacy). | |||
| 10. IANA Considerations | 10. IANA Considerations | |||
| IANA is requested to assign: | IANA is requested to assign: | |||
| 1. a UDP port number in the range 1..1023 in the | 1. a UDP port number in the range 1..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 SNMP over a DTLS Transport Model as | be the default port for SNMP command messages over a DTLS/UDP | |||
| defined in this document, | Transport Model as defined in this document, | |||
| 2. a UDP port number in the range 1..1023 in the | 2. a UDP port number in the range 1..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 SNMPTRAP over a DTLS Transport Model as | be the default port for SNMP notification messages over a DTLS/ | |||
| defined in this document, | UDP Transport Model as defined in this document, | |||
| 3. an SMI number under snmpDomains for the snmpDTLSDomain object | 3. a SCTP port number in the range 1..1023 in the | |||
| http://www.iana.org/assignments/port-numbers registry which will | ||||
| be the default port for SNMP command messages over a DTLS/SCTP | ||||
| Transport Model as defined in this document, | ||||
| 4. a SCTP port number in the range 1..1023 in the | ||||
| http://www.iana.org/assignments/port-numbers registry which will | ||||
| be the default port for SNMP notification messages over a DTLS/ | ||||
| SCTP Transport Model as defined in this document, | ||||
| 5. an SMI number under snmpDomains for the snmpDTLSUDPDomain object | ||||
| identifier, | identifier, | |||
| 4. a SMI number under snmpModules, for the MIB module in this | 6. an SMI number under snmpDomains for the snmpDTLSSCTPDomain object | |||
| identifier, | ||||
| 7. a SMI number under snmpModules, for the MIB module in this | ||||
| document, | document, | |||
| 5. "dtls" as the corresponding prefix for the snmpDTLSDomain in the | 8. "dudp" as the corresponding prefix for the snmpDTLSUDPDomain in | |||
| SNMP Transport Model registry; | the SNMP Transport Model registry, | |||
| 9. "dsct" as the corresponding prefix for the snmpDTLSSCTPDomain in | ||||
| the SNMP Transport Model registry; | ||||
| 11. Acknowledgements | 11. Acknowledgements | |||
| This document closely follows and copies the Secure Shell Transport | This document closely follows and copies the Secure Shell Transport | |||
| Model for SNMP defined by David Harrington and Joseph Salowey in | Model for SNMP defined by David Harrington and Joseph Salowey in | |||
| [I-D.ietf-isms-secshell]. | [I-D.ietf-isms-secshell]. | |||
| This work was supported in part by the United States Department of | This work was supported in part by the United States Department of | |||
| Defense. Large portions of this document are based on work by | Defense. Large portions of this document are based on work by | |||
| General Dynamics C4 Systems and the following individuals: Brian | General Dynamics C4 Systems and the following individuals: Brian | |||
| skipping to change at page 54, line 44 ¶ | skipping to change at page 53, line 49 ¶ | |||
| [RFC3418] Presuhn, R., "Management Information Base (MIB) for the | [RFC3418] Presuhn, R., "Management Information Base (MIB) for the | |||
| Simple Network Management Protocol (SNMP)", STD 62, | Simple Network Management Protocol (SNMP)", STD 62, | |||
| RFC 3418, December 2002. | RFC 3418, December 2002. | |||
| [RFC3584] Frye, R., Levi, D., Routhier, S., and B. Wijnen, | [RFC3584] Frye, R., Levi, D., Routhier, S., and B. Wijnen, | |||
| "Coexistence between Version 1, Version 2, and Version 3 | "Coexistence between Version 1, Version 2, and Version 3 | |||
| of the Internet-standard Network Management Framework", | of the Internet-standard Network Management Framework", | |||
| BCP 74, RFC 3584, August 2003. | BCP 74, RFC 3584, August 2003. | |||
| [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
| (TLS) Protocol Version 1.1", RFC 4346, April 2006. | ||||
| [RFC4347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | [RFC4347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | |||
| Security", RFC 4347, April 2006. | Security", RFC 4347, April 2006. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
| (TLS) Protocol Version 1.2", RFC 5246, August 2008. | ||||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, May 2008. | (CRL) Profile", RFC 5280, May 2008. | |||
| [I-D.ietf-isms-transport-security-model] | [I-D.ietf-isms-transport-security-model] | |||
| Harington, D., "Transport Security Model for SNMP". | Harington, D., "Transport Security Model for SNMP". | |||
| [I-D.ietf-isms-tmsm] | [I-D.ietf-isms-tmsm] | |||
| Harington, D. and J. Schoenwaelder, "Transport Subsystem | Harington, D. and J. Schoenwaelder, "Transport Subsystem | |||
| skipping to change at page 59, line 4 ¶ | skipping to change at line 2606 ¶ | |||
| 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 | |||
| US | US | |||
| Phone: +1 530 792 1913 | Phone: +1 530 792 1913 | |||
| Email: ietf@hardakers.net | Email: ietf@hardakers.net | |||
| Full Copyright Statement | ||||
| Copyright (C) The IETF Trust (2008). | ||||
| This document is subject to the rights, licenses and restrictions | ||||
| contained in BCP 78, and except as set forth therein, the authors | ||||
| retain all their rights. | ||||
| This document and the information contained herein are provided on an | ||||
| "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
| OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | ||||
| THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | ||||
| OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | ||||
| THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
| Intellectual Property | ||||
| The IETF takes no position regarding the validity or scope of any | ||||
| Intellectual Property Rights or other rights that might be claimed to | ||||
| pertain to the implementation or use of the technology described in | ||||
| this document or the extent to which any license under such rights | ||||
| might or might not be available; nor does it represent that it has | ||||
| made any independent effort to identify any such rights. Information | ||||
| on the procedures with respect to rights in RFC documents can be | ||||
| found in BCP 78 and BCP 79. | ||||
| Copies of IPR disclosures made to the IETF Secretariat and any | ||||
| assurances of licenses to be made available, or the result of an | ||||
| attempt made to obtain a general license or permission for the use of | ||||
| such proprietary rights by implementers or users of this | ||||
| specification can be obtained from the IETF on-line IPR repository at | ||||
| http://www.ietf.org/ipr. | ||||
| The IETF invites any interested party to bring to its attention any | ||||
| copyrights, patents or patent applications, or other proprietary | ||||
| rights that may cover technology that may be required to implement | ||||
| this standard. Please address the information to the IETF at | ||||
| ietf-ipr@ietf.org. | ||||
| End of changes. 149 change blocks. | ||||
| 974 lines changed or deleted | 914 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/ | ||||