draft-ietf-isms-tmsm-15.txt   draft-ietf-isms-tmsm-16.txt 
Network Working Group D. Harrington Network Working Group D. Harrington
Internet-Draft Huawei Technologies (USA) Internet-Draft Huawei Technologies (USA)
Updates: 3411,3412,3414,3417 J. Schoenwaelder Updates: 3411,3412,3414,3417 J. Schoenwaelder
(if approved) Jacobs University Bremen (if approved) Jacobs University Bremen
Intended status: Standards Track November 1, 2008 Intended status: Standards Track February 25, 2009
Expires: May 5, 2009 Expires: August 29, 2009
Transport Subsystem for the Simple Network Management Protocol (SNMP) Transport Subsystem for the Simple Network Management Protocol (SNMP)
draft-ietf-isms-tmsm-15 draft-ietf-isms-tmsm-16
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 May 5, 2009. This Internet-Draft will expire on August 29, 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 defines a Transport Subsystem, extending the Simple This document defines a Transport Subsystem, extending the Simple
Network Management Protocol (SNMP) architecture defined in RFC 3411. Network Management Protocol (SNMP) architecture defined in RFC 3411.
This document defines a subsystem to contain Transport Models, This document defines a subsystem to contain Transport Models,
comparable to other subsystems in the RFC3411 architecture. As work comparable to other subsystems in the RFC3411 architecture. As work
is being done to expand the transports to include secure transports is being done to expand the transports to include secure transports
such as SSH and TLS, using a subsystem will enable consistent design such as SSH and TLS, using a subsystem will enable consistent design
and modularity of such Transport Models. This document identifies and modularity of such Transport Models. This document identifies
skipping to change at page 2, line 21 skipping to change at page 2, line 39
2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Requirements of a Transport Model . . . . . . . . . . . . . . 8 3. Requirements of a Transport Model . . . . . . . . . . . . . . 8
3.1. Message Security Requirements . . . . . . . . . . . . . . 8 3.1. Message Security Requirements . . . . . . . . . . . . . . 8
3.1.1. Security Protocol Requirements . . . . . . . . . . . . 8 3.1.1. Security Protocol Requirements . . . . . . . . . . . . 8
3.2. SNMP Requirements . . . . . . . . . . . . . . . . . . . . 8 3.2. SNMP Requirements . . . . . . . . . . . . . . . . . . . . 8
3.2.1. Architectural Modularity Requirements . . . . . . . . 9 3.2.1. Architectural Modularity Requirements . . . . . . . . 9
3.2.2. Access Control Requirements . . . . . . . . . . . . . 12 3.2.2. Access Control Requirements . . . . . . . . . . . . . 12
3.2.3. Security Parameter Passing Requirements . . . . . . . 13 3.2.3. Security Parameter Passing Requirements . . . . . . . 13
3.2.4. Separation of Authentication and Authorization . . . . 13 3.2.4. Separation of Authentication and Authorization . . . . 13
3.3. Session Requirements . . . . . . . . . . . . . . . . . . . 14 3.3. Session Requirements . . . . . . . . . . . . . . . . . . . 14
3.3.1. Session Selection . . . . . . . . . . . . . . . . . . 14 3.3.1. No SNMP Sessions . . . . . . . . . . . . . . . . . . . 14
3.3.2. Session Establishment Requirements . . . . . . . . . . 15 3.3.2. Session Establishment Requirements . . . . . . . . . . 15
3.3.3. Session Maintenance Requirements . . . . . . . . . . . 16 3.3.3. Session Maintenance Requirements . . . . . . . . . . . 16
3.3.4. Message security versus session security . . . . . . . 16 3.3.4. Message security versus session security . . . . . . . 16
4. Scenario Diagrams and the Transport Subsystem . . . . . . . . 17 4. Scenario Diagrams and the Transport Subsystem . . . . . . . . 17
5. Cached Information and References . . . . . . . . . . . . . . 17 5. Cached Information and References . . . . . . . . . . . . . . 17
5.1. securityStateReference . . . . . . . . . . . . . . . . . . 18 5.1. securityStateReference . . . . . . . . . . . . . . . . . . 18
5.2. tmStateReference . . . . . . . . . . . . . . . . . . . . . 18 5.2. tmStateReference . . . . . . . . . . . . . . . . . . . . . 18
5.2.1. Transport information . . . . . . . . . . . . . . . . 19 5.2.1. Transport information . . . . . . . . . . . . . . . . 19
5.2.2. securityName . . . . . . . . . . . . . . . . . . . . . 19 5.2.2. securityName . . . . . . . . . . . . . . . . . . . . . 19
5.2.3. securityLevel . . . . . . . . . . . . . . . . . . . . 20 5.2.3. securityLevel . . . . . . . . . . . . . . . . . . . . 20
5.2.4. Session Information . . . . . . . . . . . . . . . . . 20 5.2.4. Session Information . . . . . . . . . . . . . . . . . 21
6. Abstract Service Interfaces . . . . . . . . . . . . . . . . . 21 6. Abstract Service Interfaces . . . . . . . . . . . . . . . . . 21
6.1. sendMessage ASI . . . . . . . . . . . . . . . . . . . . . 21 6.1. sendMessage ASI . . . . . . . . . . . . . . . . . . . . . 22
6.2. Changes to RFC3411 Outgoing ASIs . . . . . . . . . . . . . 22 6.2. Changes to RFC3411 Outgoing ASIs . . . . . . . . . . . . . 22
6.2.1. Message Processing Subsystem Primitives . . . . . . . 22 6.2.1. Message Processing Subsystem Primitives . . . . . . . 22
6.2.2. Security Subsystem Primitives . . . . . . . . . . . . 23 6.2.2. Security Subsystem Primitives . . . . . . . . . . . . 24
6.3. The receiveMessage ASI . . . . . . . . . . . . . . . . . . 25 6.3. The receiveMessage ASI . . . . . . . . . . . . . . . . . . 25
6.4. Changes to RFC3411 Incoming ASIs . . . . . . . . . . . . . 26 6.4. Changes to RFC3411 Incoming ASIs . . . . . . . . . . . . . 26
6.4.1. Message Processing Subsystem Primitive . . . . . . . . 26 6.4.1. Message Processing Subsystem Primitive . . . . . . . . 26
6.4.2. Security Subsystem Primitive . . . . . . . . . . . . . 27 6.4.2. Security Subsystem Primitive . . . . . . . . . . . . . 27
7. Security Considerations . . . . . . . . . . . . . . . . . . . 28 7. Security Considerations . . . . . . . . . . . . . . . . . . . 28
7.1. Coexistence, Security Parameters, and Access Control . . . 29 7.1. Coexistence, Security Parameters, and Access Control . . . 29
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 30 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 31
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 31 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 31
10.1. Normative References . . . . . . . . . . . . . . . . . . . 31 10.1. Normative References . . . . . . . . . . . . . . . . . . . 31
10.2. Informative References . . . . . . . . . . . . . . . . . . 32 10.2. Informative References . . . . . . . . . . . . . . . . . . 32
Appendix A. Why tmStateReference? . . . . . . . . . . . . . . . . 33 Appendix A. Why tmStateReference? . . . . . . . . . . . . . . . . 34
A.1. Define an Abstract Service Interface . . . . . . . . . . . 33 A.1. Define an Abstract Service Interface . . . . . . . . . . . 34
A.2. Using an Encapsulating Header . . . . . . . . . . . . . . 34 A.2. Using an Encapsulating Header . . . . . . . . . . . . . . 34
A.3. Modifying Existing Fields in an SNMP Message . . . . . . . 34 A.3. Modifying Existing Fields in an SNMP Message . . . . . . . 35
A.4. Using a Cache . . . . . . . . . . . . . . . . . . . . . . 34 A.4. Using a Cache . . . . . . . . . . . . . . . . . . . . . . 35
Appendix B. Open Issues . . . . . . . . . . . . . . . . . . . . . 35 Appendix B. Open Issues . . . . . . . . . . . . . . . . . . . . . 35
Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 35 Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 36
1. Introduction 1. Introduction
This document defines a Transport Subsystem, extending the Simple This document defines a Transport Subsystem, extending the Simple
Network Management Protocol (SNMP) architecture defined in [RFC3411]. Network Management Protocol (SNMP) architecture defined in [RFC3411].
This document identifies and describes some key aspects that need to This document identifies and describes some key aspects that need to
be considered for any Transport Model for SNMP. be considered for any Transport Model for SNMP.
1.1. The Internet-Standard Management Framework 1.1. The Internet-Standard Management Framework
skipping to change at page 4, line 30 skipping to change at page 4, line 30
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 RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
Non uppercased versions of the keywords should be read as in normal Non uppercased versions of the keywords should be read as in normal
English. They will usually, but not always, be used in a context English. They will usually, but not always, be used in a context
relating to compatibility with the RFC3411 architecture or the relating to compatibility with the RFC3411 architecture or the
subsystem defined here, but which might have no impact on on-the-wire subsystem defined here, but which might have no impact on on-the-wire
compatibility. These terms are used as guidance for designers of compatibility. These terms are used as guidance for designers of
proposed IETF models to make the designs compatible with RFC3411 proposed IETF models to make the designs compatible with RFC3411
subsystems and Abstract Service Interfaces (see section 3.2). subsystems and Abstract Service Interfaces (ASIs) (see section 3.2).
Implementers are free to implement differently. Some usages of these Implementers are free to implement differently. Some usages of these
lowercase terms are simply normal English usage. lowercase terms are simply normal English usage.
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 that use
different variations of the same terminology. This is consistent different variations of the same terminology. This is consistent
with the IESG decision to not require the SNMPv3 terminology be with the IESG decision to not require the SNMPv3 terminology be
modified to match the usage of other non-SNMP specifications when modified to match the usage of other non-SNMP specifications when
SNMPv3 was advanced to Full Standard. SNMPv3 was advanced to Full Standard.
skipping to change at page 6, line 27 skipping to change at page 6, line 27
In the first approach, an individual could sit on his front porch In the first approach, an individual could sit on his front porch
waiting for intruders. In the second approach, he could hire an waiting for intruders. In the second approach, he could hire an
employee , schedule the employee, position the employee to guard what employee , schedule the employee, position the employee to guard what
he wants protected, hire a second guard to cover if the first gets he wants protected, hire a second guard to cover if the first gets
sick, and so on. In the third approach, he could hire a security sick, and so on. In the third approach, he could hire a security
company, tell them what he wants protected, and leave the details to company, tell them what he wants protected, and leave the details to
them. Considerations of hiring and training employees, positioning them. Considerations of hiring and training employees, positioning
and scheduling the guards, arranging for cover, etc., are the and scheduling the guards, arranging for cover, etc., are the
responsibility of the security company. The individual therefore responsibility of the security company. The individual therefore
achieves the desired security, with no significant effort with no achieves the desired security, with no significant effort on his part
significant effort on his part other than identifying requirements other than identifying requirements and verifying the quality of
and verifying the quality of service being provided. service being provided.
The User-based Security Model (USM) as defined in [RFC3414] largely The User-based Security Model (USM) as defined in [RFC3414] largely
uses the first approach - it provides its own security. It utilizes uses the first approach - it provides its own security. It utilizes
existing mechanisms (e.g., SHA), but provides all the coordination. existing mechanisms (e.g., SHA), but provides all the coordination.
USM provides for the authentication of a principal, message USM provides for the authentication of a principal, message
encryption, data integrity checking, timeliness checking, etc. encryption, data integrity checking, timeliness checking, etc.
USM was designed to be independent of other existing security USM was designed to be independent of other existing security
infrastructures. USM therefore requires a separate principal and key infrastructures. USM therefore requires a separate principal and key
management infrastructure. Operators have reported that deploying management infrastructure. Operators have reported that deploying
skipping to change at page 9, line 28 skipping to change at page 9, line 28
architecture does not include a subsystem for Transport Models, architecture does not include a subsystem for Transport Models,
despite the fact there are multiple transport mappings already despite the fact there are multiple transport mappings already
defined for SNMP. This document describes a Transport Subsystem that defined for SNMP. This document describes a Transport Subsystem that
is compatible with the RFC3411 architecture. As work is being done is compatible with the RFC3411 architecture. As work is being done
to use secure transports such as SSH and TLS, using a subsystem will to use secure transports such as SSH and TLS, using a subsystem will
enable consistent design and modularity of such Transport Models. enable consistent design and modularity of such Transport Models.
The design of this Transport Subsystem accepts the goals of the The design of this Transport Subsystem accepts the goals of the
RFC3411 architecture defined in section 1.5 of [RFC3411]. This RFC3411 architecture defined in section 1.5 of [RFC3411]. This
Transport Subsystem uses a modular design that permits Transport Transport Subsystem uses a modular design that permits Transport
Models to be "plugged into" the RFC3411 architecture, supported by Models (which may or may not be security-aware) to be "plugged into"
corresponding Transport Models (which may or may not be security- the RFC3411 architecture . Such Transport Models would be
aware). Such Transport Models would be independent of other modular independent of other modular SNMP components as much as possible.
SNMP components as much as possible. This design also permits This design also permits Transport Models to be advanced through the
Transport Models to be advanced through the standards process standards process independently of other Transport Models.
independently of other Transport Models.
To encourage a basic level of interoperability, IETF standards To encourage a basic level of interoperability, any Transport Model
typically require one mandatory-to-implement solution, with the SHOULD define one mandatory-to-implement security mechanism, but
capability of adding new mechanisms in the future. Any Transport
Model SHOULD define one minimum-compliance security mechanism, but
should also be able to support additional existing and new should also be able to support additional existing and new
mechanisms. mechanisms.
The following diagram depicts the SNMPv3 architecture including the The following diagram depicts the SNMPv3 architecture including the
new Transport Subsystem defined in this document, and a new Transport new Transport Subsystem defined in this document, and a new Transport
Security Model defined in [I-D.ietf-isms-transport-security-model]. Security Model defined in [I-D.ietf-isms-transport-security-model].
+------------------------------+ +------------------------------+
| Network | | Network |
+------------------------------+ +------------------------------+
skipping to change at page 11, line 28 skipping to change at page 11, line 28
independent values. This document amends some of the ASIs defined in independent values. This document amends some of the ASIs defined in
RFC 3411, and these changes are covered in section 6. RFC 3411, and these changes are covered in section 6.
New Security Models may be defined that understand how to work with New Security Models may be defined that understand how to work with
these modified ASIs and the transport-information cache. One such these modified ASIs and the transport-information cache. One such
Security Model, the Transport Security Model, is defined in Security Model, the Transport Security Model, is defined in
[I-D.ietf-isms-transport-security-model]. [I-D.ietf-isms-transport-security-model].
3.2.1.2. Changes to RFC3411 processing 3.2.1.2. Changes to RFC3411 processing
The introduction of secure transports also affects the The introduction of secure transports affects the responsibilities
responsibilities and order of processing within the RFC3411 and order of processing within the RFC3411 architecture. While the
architecture. While the steps are the same, they may occur in a steps are the same, they may occur in a different order, and may be
different order, and may be done by different subsystems. With the done by different subsystems. With the existing RFC3411
existing RFC3411 architecture, security processing starts when the architecture, security processing starts when the Message Processing
Message Processing Model decodes portions of the encoded message to Model decodes portions of the encoded message to extract parameters
extract parameters that identify which Security Model should handle that identify which Security Model should handle the security-related
the security-related tasks. tasks.
A secure transport performs those security functions on the message, A secure transport performs those security functions on the message,
*before* the message is decoded. Some of these functions might then before the message is decoded. Some of these functions might then be
be repeated by the selected Security Model. repeated by the selected Security Model.
3.2.1.3. Passing Information between SNMP Engines 3.2.1.3. Passing Information between SNMP Engines
A secure Transport Model will establish an authenticated and/or A secure Transport Model will establish an authenticated and possibly
encrypted tunnel between the Transport Models of two SNMP engines. encrypted tunnel between the Transport Models of two SNMP engines.
After a transport layer tunnel is established, then SNMP messages can After a transport layer tunnel is established, then SNMP messages can
be sent through the tunnel from one SNMP engine to the other. be sent through the tunnel from one SNMP engine to the other.
Transport Models MAY support sending multiple SNMP messages through Transport Models MAY support sending multiple SNMP messages through
the same tunnel. the same tunnel.
3.2.2. Access Control Requirements 3.2.2. Access Control Requirements
RFC3411 made some design decisions related to the support of an RFC3411 made some design decisions related to the support of an
Access Control Subsystem. These include establishing and passing in Access Control Subsystem. These include establishing and passing in
skipping to change at page 12, line 22 skipping to change at page 12, line 22
3.2.2.1. securityName and securityLevel Mapping 3.2.2.1. securityName and securityLevel Mapping
SNMP data access controls are expected to work on the basis of who SNMP data access controls are expected to work on the basis of who
can perform what operations on which subsets of data, and based on can perform what operations on which subsets of data, and based on
the security services that will be provided to secure the data in the security services that will be provided to secure the data in
transit. The securityModel and securityLevel parameters establish transit. The securityModel and securityLevel parameters establish
the protections for transit - whether authentication and privacy the protections for transit - whether authentication and privacy
services will be or have been applied to the message. The services will be or have been applied to the message. The
securityName is a model-independent identifier of the security securityName is a model-independent identifier of the security
"principal", "principal".
The Message Processing Subsystem relies on a Security Model, such as
USM, to play a role in security that goes beyond protecting the
message - it provides a mapping between the security-model-specific
principal for an incoming message to a security-model independent
securityName which can be used for subsequent processing, such as for
access control. The securityName is mapped from a mechanism-specific
identity, and this mapping must be done for incoming messages by the
Security Model before it passes securityName to the Message
Processing Model via the processIncoming ASI.
Documents defining a new transport domain MUST define a prefix that A Security Model plays a role in security that goes beyond protecting
will be prepended to all passed tmSecurityNames. The prefix MUST the message - it provides a mapping between the security-model-
include from one to four ASCII characters, not including a ":" (ASCII specific principal for an incoming message to a security-model
0x3a) character. A tmSecurityName is constructed by concatenating independent securityName which can be used for subsequent processing,
the prefix and a ":" (ASCII 0x3a) character followed by a non-empty such as for access control. The securityName is mapped from a
identity in an snmpAdminString compatible format. Transport domains mechanism-specific identity, and this mapping must be done for
and their corresponding prefixes are coordinated via the IANA incoming messages by the Security Model before it passes securityName
registry "SNMP Transport Domains". to the Message Processing Model via the processIncoming ASI.
A Security Model is also responsible to specify, via the A Security Model is also responsible to specify, via the
securityLevel parameter, whether incoming messages have been securityLevel parameter, whether incoming messages have been
authenticated and/or encrypted, and to ensure that outgoing messages authenticated and encrypted, and to ensure that outgoing messages are
are authenticated and/or encrypted based on the value of authenticated and encrypted based on the value of securityLevel.
A Transport Model MAY provide suggested values for securityName and
securityLevel. A Security Model may have multiple sources for
determining the principal and desired security services, and a
particular Security Model may or may not utilize the values proposed
by a Transport Model when deciding the value of securityName and
securityLevel. securityLevel.
The introduction of a secure transport protocol means that the Documents defining a new transport domain MUST define a prefix that
translation from a mechanism-specific identity to a tmSecurityName MAY be prepended by the Security Model to all passed securityNames.
and tmTransportSecurityLevel will be done by a Transport Model. A The prefix MUST include from one to four ASCII characters, not
Security Model may have multiple sources for determining the including a ":" (ASCII 0x3a) character. If a prefix is used, a
principal and desired security services, and a particular Security securityName is constructed by concatenating the prefix and a ":"
Model may or may not utilize the tmSecurityName mapping and (ASCII 0x3a) character followed by a non-empty identity in an
tmTransportSecurityLevel proposed by the Transport Model when snmpAdminString compatible format. Transport domains and their
deciding the value of the securityName and securityLevel to be passed corresponding prefixes are coordinated via the IANA registry "SNMP
to the Message Processing Model. Transport Domains".
3.2.3. Security Parameter Passing Requirements 3.2.3. Security Parameter Passing Requirements
A Message Processing Model might unpack SNMP-specific security A Message Processing Model might unpack SNMP-specific security
parameters from an incoming message before calling a specific parameters from an incoming message before calling a specific
Security Model to handle the security-related processing of the Security Model to handle the security-related processing of the
message. When using a secure Transport Model, some security message. When using a secure Transport Model, some security
parameters might be extracted from the transport layer by the parameters might be extracted from the transport layer by the
Transport Model before the message is passed to the Message Transport Model before the message is passed to the Message
Processing Subsystem. Processing Subsystem.
skipping to change at page 13, line 45 skipping to change at page 13, line 41
independent parameters (securityModel, securityName, and independent parameters (securityModel, securityName, and
securityLevel) are passed between the Security Subsystem, the securityLevel) are passed between the Security Subsystem, the
applications, and the Access Control Subsystem. applications, and the Access Control Subsystem.
This separation was a deliberate decision of the SNMPv3 WG, to allow This separation was a deliberate decision of the SNMPv3 WG, to allow
support for authentication protocols which do not provide data access support for authentication protocols which do not provide data access
authorization capabilities, and to support data access authorization authorization capabilities, and to support data access authorization
schemes, such as VACM, that do not perform their own authentication. schemes, such as VACM, that do not perform their own authentication.
A Message Processing Model determines which Security Model is used, A Message Processing Model determines which Security Model is used,
either based on the message version, e.g., SNMPv1 and SNMPv2c, and either based on the message version, e.g., SNMPv1 and SNMPv2c, or
possibly by a value specified in the message, (e.g. msgSecurityModel possibly by a value specified in the message, e.g., msgSecurityModel
field in SNMPv3). field in SNMPv3.
The Security Model makes the decision which securityName and The Security Model makes the decision which securityName and
securityLevel values are passed as model-independent parameters to an securityLevel values are passed as model-independent parameters to an
application, which then passes them via the isAccessAllowed ASI to application, which then passes them via the isAccessAllowed ASI to
the Access Control Subsystem. the Access Control Subsystem.
An Access Control Model performs the mapping from the model- An Access Control Model performs the mapping from the model-
independent security parameters to a policy within the Access Control independent security parameters to a policy within the Access Control
Model that is access-control-model-dependent. Model that is access-control-model-dependent.
skipping to change at page 14, line 22 skipping to change at page 14, line 18
securityLevel parameters will be determined. It can propose an securityLevel parameters will be determined. It can propose an
authenticated identity (via the tmSecurityName field), but there is authenticated identity (via the tmSecurityName field), but there is
no guarantee that this value will be used by the Security Model. For no guarantee that this value will be used by the Security Model. For
example, non-transport-aware Security Models will typically determine example, non-transport-aware Security Models will typically determine
the securityName (and securityLevel) based on the contents of the the securityName (and securityLevel) based on the contents of the
SNMP message itself. Such Security Models will simply not know that SNMP message itself. Such Security Models will simply not know that
the tmStateReference cache exists. the tmStateReference cache exists.
Further, even if the Transport Model can influence the choice of Further, even if the Transport Model can influence the choice of
securityName, it cannot directly determine the authorization allowed securityName, it cannot directly determine the authorization allowed
to this identity. If two different Transport Model each authenticate to this identity. If two different Transport Models each
a transport principal, that are then both mapped to the same authenticate a transport principal, that are then both mapped to the
securityName, then these two identities will typically be afforded same securityName, then these two identities will typically be
exactly the same authorization by the Access Control Model. afforded exactly the same authorization by the Access Control Model.
The only way for the Access Control Model to differentiate between The only way for the Access Control Model to differentiate between
identities based on the underlying Transport Model, would be for such identities based on the underlying Transport Model, would be for such
transport-authenticated identities to be mapped to distinct transport-authenticated identities to be mapped to distinct
securityNames. How and if this is done is Security-Model-dependent. securityNames. How and if this is done is Security-Model-dependent.
3.3. Session Requirements 3.3. Session Requirements
Some secure transports have a notion of sessions, while other secure Some secure transports have a notion of sessions, while other secure
transports provide channels or other session-like mechanism. transports provide channels or other session-like mechanism.
skipping to change at page 14, line 48 skipping to change at page 14, line 44
layer session-like mechanisms. Transport-layer sessions that can layer session-like mechanisms. Transport-layer sessions that can
secure multiple SNMP messages within the lifetime of the session are secure multiple SNMP messages within the lifetime of the session are
considered desirable because the cost of authentication can be considered desirable because the cost of authentication can be
amortized over potentially many transactions. How a transport amortized over potentially many transactions. How a transport
session is actually established, opened, closed, or maintained is session is actually established, opened, closed, or maintained is
specific to a particular Transport Model. specific to a particular Transport Model.
To reduce redundancy, this document describes aspects that are To reduce redundancy, this document describes aspects that are
expected to be common to all Transport Model sessions. expected to be common to all Transport Model sessions.
3.3.1. Session Selection 3.3.1. No SNMP Sessions
The architecture defined in [RFC3411] and the Transport Subsystem The architecture defined in [RFC3411] and the Transport Subsystem
defined in this document do not support SNMP sessions or include a defined in this document do not support SNMP sessions or include a
session selector in the Abstract Service Interfaces. The Transport session selector in the Abstract Service Interfaces.
Subsystem does not have access to the pduType, so cannot select a
given session for particular types of traffic. However certain The Transport Subsystem may support transport sessions. However, the
parameters of these ASIs might be used to guide the selection of the transport subsystem does not have access to the pduType, so cannot
appropriate transport session to use for a given request. select a given transport session for particular types of traffic.
Certain parameters of these ASIs might be used to guide the selection
of an appropriate transport session to use for a given request by an
application.
The transportDomain and transportAddress identify the transport The transportDomain and transportAddress identify the transport
connection to a remote network node. Elements of the transport connection to a remote network node. Elements of the transport
address (such as the port number) can be used to select different address (such as the port number) might be used by an application to
sessions for particular request types. For example, UDP ports 161 send a particular PDU type to a particular transport address.
and 162 have typically been used to separate SNMP notifications from
other request/response traffic.
The tmSecurityName identifies which security principal to communicate The securityName identifies which security principal to communicate
with at that address (e.g., different NMS applications), and the with at that address (e.g., different NMS applications), and the
tmRequestedSecurityLevel might permit selection of different sets of securityLevel might permit selection of different sets of security
security properties for different purposes (e.g., encrypted SETs vs. properties for different purposes (e.g., encrypted SETs vs. non-
non-encrypted GETs). encrypted GETs).
In summary, a unique combination of transportDomain,
transportAddress, securityName, and securityLevel could serve to
identify a given transport session. Different values for any of
these parameters would imply the use of a different session.
However, because the handling of transport sessions is specific to However, because the handling of transport sessions is specific to
each transport model, some transport models MAY restrict the each transport model, some transport models MAY restrict selecting a
applicability of these parameters for selecting an associated particular transport session.
transport session.
An application might use a unique combination of transportDomain,
transportAddress, securityModel, securityName, and securityLevel to
try to force the selection of a given transport session. This usage
is NOT RECOMMENDED because it is not guaranteed to be interoperable
across implementatioins and across models.
Implementations SHOULD be able to maintain some reasonable number of Implementations SHOULD be able to maintain some reasonable number of
concurrent sessions, and MAY provide non-standard internal mechanisms concurrent transport sessions, and MAY provide non-standard internal
to select sessions. mechanisms to select transport sessions.
3.3.2. Session Establishment Requirements 3.3.2. Session Establishment Requirements
SNMP applications provide the transportDomain, transportAddress, SNMP applications provide the transportDomain, transportAddress,
securityName, and securityLevel to be used to create a new session. securityName, and securityLevel to be used to create a new session.
If the Transport Model cannot provide at least the requested level of If the Transport Model cannot provide at least the requested level of
security, the Transport Model SHOULD discard the message and SHOULD security, the Transport Model SHOULD discard the message and SHOULD
notify the dispatcher that establishing a session and sending the notify the dispatcher that establishing a session and sending the
message failed. Similarly, if the session cannot be established, message failed. Similarly, if the session cannot be established,
skipping to change at page 17, line 19 skipping to change at page 17, line 19
Commander Generator to poll for potentially non-sensitive performance Commander Generator to poll for potentially non-sensitive performance
data on thousands of interfaces every ten minutes; the encryption data on thousands of interfaces every ten minutes; the encryption
might add significant overhead to processing of the messages. might add significant overhead to processing of the messages.
Some Transport Models might support only specific authentication and Some Transport Models might support only specific authentication and
encryption services, such as requiring all messages to be carried encryption services, such as requiring all messages to be carried
using both authentication and encryption, regardless of the security using both authentication and encryption, regardless of the security
level requested by an SNMP application. A Transport Model MAY level requested by an SNMP application. A Transport Model MAY
upgrade the security level requested by a transport-aware security upgrade the security level requested by a transport-aware security
model, i.e. noAuthNoPriv and authNoPriv might be sent over an model, i.e. noAuthNoPriv and authNoPriv might be sent over an
authenticated and encrypted session. authenticated and encrypted session. A Transport Model MUST NOT
downgrade the security level requested by a transport-aware security
model, and SHOULD discard any message where this would occur.
4. Scenario Diagrams and the Transport Subsystem 4. Scenario Diagrams and the Transport Subsystem
RFC3411 section 4.6.1 and 4.6.2 provide scenario diagrams to RFC3411 section 4.6.1 and 4.6.2 provide scenario diagrams to
illustrate how an outgoing message is created, and how an incoming illustrate how an outgoing message is created, and how an incoming
message is processed. RFC3411 does not define ASIs for "Send SNMP message is processed. RFC3411 does not define ASIs for the "Send
Request Message to Network" or "Receive SNMP Response Message from SNMP Request Message to Network", "Receive SNMP Response Message from
Network", and does not define ASIs for "Receive SNMP Message from Network", "Receive SNMP Message from Network" and "Send SNMP message
Network" or "Send SNMP message to Network". to Network" arrows in these diagrams.
This document defines a sendMessage ASI to send SNMP messages to the This document defines two ASIs corresponding to these arrows: a
network, and a receiveMessage ASI to receive SNMP messages from the sendMessage ASI to send SNMP messages to the network, and a
network, regardless of pduType. receiveMessage ASI to receive SNMP messages from the network. These
ASIs are used for all SNMP messages, regardless of pduType.
5. Cached Information and References 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.
The RFC3411 architecture uses caches to maintain the short-term The RFC3411 architecture uses caches to maintain the short-term
message state, and uses references in the ASIs to pass this message state, and uses references in the ASIs to pass this
information between subsystems. information between subsystems.
This document defines the requirements for a cache to handle the This document defines the requirements for a cache to handle
longer-term transport state information, using a tmStateReference additional short-term message state and longer-term transport state
parameter to pass this information between subsystems. information, using a tmStateReference parameter to pass this
information between subsystems.
To simplify the elements of procedure, the release of state To simplify the elements of procedure, the release of state
information is not always explicitly specified. As a general rule, information is not always explicitly specified. As a general rule,
if state information is available when a message being processed gets if state information is available when a message being processed gets
discarded, the state related to that message SHOULD also be discarded, the state related to that message SHOULD also be
discarded. If state information is available when a relationship discarded. If state information is available when a relationship
between engines is severed, such as the closing of a transport between engines is severed, such as the closing of a transport
session, the state information for that relationship SHOULD also be session, the state information for that relationship SHOULD also be
discarded. discarded.
Since the contents of a cache are meaningful only within an Since the contents of a cache are meaningful only within an
implementation, and not on-the-wire, the format of the cache and the implementation, and not on-the-wire, the format of the cache is
LCD are implementation-specific. implementation-specific.
5.1. securityStateReference 5.1. securityStateReference
The securityStateReference parameter is defined in RFC3411. Its The securityStateReference parameter is defined in RFC3411. Its
primary purpose is to provide a mapping between a request and the primary purpose is to provide a mapping between a request and the
corresponding response. This cache is not accessible to Transport corresponding response. This cache is not accessible to Transport
Models, and an entry is typically only retained for the lifetime of a Models, and an entry is typically only retained for the lifetime of a
request-response pair of messages. request-response pair of messages.
5.2. tmStateReference 5.2. tmStateReference
For each transport session, information about the transport security For each transport session, information about the transport security
is stored in a cache. The tmStateReference parameter is used to pass is stored in a tmState cache or datastore, that is referenced by a
tmStateReference. The tmStateReference parameter is used to pass
model-specific and mechanism-specific parameters between the model-specific and mechanism-specific parameters between the
Transport subsystem and transport-aware Security Models. Transport subsystem and transport-aware Security Models.
The tmStateReference cache will typically remain valid for the In general, when necessary, the tmState is populated by the security
duration of the transport session, and hence may be used for several model for outgoing messages and by the transport model for incoming
messages. messages. However, in both cases, the model populating the tmState
may have incomplete information, and the missing information might be
populated by the other model when the information becomes available.
The tmState might contain both long-term and short-term information.
The session information typically remains valid for the duration of
the transport session, might be used for several messages, and might
be stored in a local configuration datastore. Some information has a
shorter lifespan, such as tmSameSecurity and tmRequestedSecurityLevel
which are associated with a specific message.
Since this cache is only used within an implementation, and not on- Since this cache is only used within an implementation, and not on-
the-wire, the precise contents and format are implementation- the-wire, the precise contents and format of the cache are
dependent. However, for interoperability between Transport Models implementation-dependent. For architectural modularity between
and transport-aware Security Models, entries in this cache must Transport Models and transport-aware Security Models, a fully-defined
include at least the following fields: tmState MUST conceptually include at least the following fields:
transportDomain tmTransportDomain
transportAddress tmTransportAddress
tmSecurityName tmSecurityName
tmRequestedSecurityLevel tmRequestedSecurityLevel
tmTransportSecurityLevel tmTransportSecurityLevel
tmSameSecurity tmSameSecurity
tmSessionID tmSessionID
The details of these fields are described in the following
subsections.
5.2.1. Transport information 5.2.1. Transport information
Information about the source of an incoming SNMP message is passed up Information about the source of an incoming SNMP message is passed up
from the Transport subsystem as far as the Message Processing from the Transport subsystem as far as the Message Processing
subsystem. However these parameters are not included in the subsystem. However these parameters are not included in the
processIncomingMsg ASI defined in RFC3411, and hence this information processIncomingMsg ASI defined in RFC3411, and hence this information
is not directly available to the Security Model. is not directly available to the Security Model.
A transport-aware Security Model might wish to take account of the A transport-aware Security Model might wish to take account of the
transport protocol and originating address when authenticating the transport protocol and originating address when authenticating the
request, and setting up the authorization parameters. It is request, and setting up the authorization parameters. It is
therefore necessary for the Transport Model to include this therefore necessary for the Transport Model to include this
information in the tmStateReference cache, so that it is accessible information in the tmStateReference cache, so that it is accessible
to the Security Model. to the Security Model.
o transportDomain: the transport protocol (and hence the Transport o tmTransportDomain: the transport protocol (and hence the Transport
Model) used to receive the incoming message Model) used to receive the incoming message
o transportAddress: the source of the incoming message. o tmTransportAddress: the source of the incoming message.
The ASIs used for processing an outgoing message all include explicit The ASIs used for processing an outgoing message all include explicit
transportDomain and transportAddress parameters. The values within transportDomain and transportAddress parameters. The values within
the securityStateReference cache might override these parameters for the securityStateReference cache might override these parameters for
outgoing messages. outgoing messages.
5.2.2. securityName 5.2.2. securityName
There are actually three distinct "identities" that can be identified There are actually three distinct "identities" that can be identified
during the processing of an SNMP request over a secure transport: during the processing of an SNMP request over a secure transport:
skipping to change at page 19, line 49 skipping to change at page 20, line 18
implementation- specific, and is only used within a given implementation- specific, and is only used within a given
Transport Model. Transport Model.
o tmSecurityName: a human-readable name (in snmpAdminString format) o tmSecurityName: a human-readable name (in snmpAdminString format)
representing this transport identity. This value is transport- representing this transport identity. This value is transport-
and implementation-specific, and is only used (directly) by the and implementation-specific, and is only used (directly) by the
Transport and Security Models. Transport and Security Models.
o securityName: a human-readable name (in snmpAdminString format) o securityName: a human-readable name (in snmpAdminString format)
representing the SNMP principal in a model-independent manner. representing the SNMP principal in a model-independent manner.
This value is used directly by SNMP Applications, the access
control subsystem, the message processing subsystem, and the
security subsystem.
The transport principal may or may not be the same as the The transport principal may or may not be the same as the
tmSecurityName. Similarly, the tmSecurityName may or may not be the tmSecurityName. Similarly, the tmSecurityName may or may not be the
same as the securityName as seen by the Application and Access same as the securityName as seen by the Application and Access
Control subsystems. In particular, a non-transport-aware Security Control subsystems. In particular, a non-transport-aware Security
Model will ignore tmSecurityName completely when determining the SNMP Model will ignore tmSecurityName completely when determining the SNMP
securityName. securityName.
However it is important that the mapping between the transport However it is important that the mapping between the transport
principal and the SNMP securityName (for transport-aware Security principal and the SNMP securityName (for transport-aware Security
skipping to change at page 22, line 23 skipping to change at page 22, line 44
sendMessage( sendMessage(
IN destTransportDomain -- transport domain to be used IN destTransportDomain -- transport domain to be used
IN destTransportAddress -- transport address to be used IN destTransportAddress -- transport address to be used
IN outgoingMessage -- the message to send IN outgoingMessage -- the message to send
IN outgoingMessageLength -- its length IN outgoingMessageLength -- its length
IN tmStateReference -- reference to transport state IN tmStateReference -- reference to transport state
) )
6.2. Changes to RFC3411 Outgoing ASIs 6.2. Changes to RFC3411 Outgoing ASIs
[DISCUSS: this section has been significantly rewritten and
reorganized. This needs to be checked thoroughly to verify no
technical changes have been introduced in the editorial changes.]
Additional parameters have been added to the ASIs defined in RFC3411, Additional parameters have been added to the ASIs defined in RFC3411,
concerned with communication between the Dispatcher and Message concerned with communication between the Dispatcher and Message
Processing subsystems, and between the Message Processing and Processing subsystems, and between the Message Processing and
Security Subsystems. Security Subsystems.
6.2.1. Message Processing Subsystem Primitives 6.2.1. Message Processing Subsystem Primitives
A tmStateReference parameter has been added as an OUT parameter to A tmStateReference parameter has been added as an OUT parameter to
the prepareOutgoingMessage and prepareResponseMessage ASIs. This is the prepareOutgoingMessage and prepareResponseMessage ASIs. This is
passed from Message Processing Subsystem to the dispatcher, and from passed from Message Processing Subsystem to the dispatcher, and from
skipping to change at page 23, line 52 skipping to change at page 24, line 9
OUT destTransportDomain -- destination transport domain OUT destTransportDomain -- destination transport domain
OUT destTransportAddress -- destination transport address OUT destTransportAddress -- destination transport address
OUT outgoingMessage -- the message to send OUT outgoingMessage -- the message to send
OUT outgoingMessageLength -- its length OUT outgoingMessageLength -- its length
OUT tmStateReference -- (NEW) reference to transport state OUT tmStateReference -- (NEW) reference to transport state
) )
6.2.2. Security Subsystem Primitives 6.2.2. Security Subsystem Primitives
transportDomain and transportAddress parameters have been added as IN transportDomain and transportAddress parameters have been added as IN
parameters to the generateOutgoingMessage and generateResponseMessage parameters to the generateRequestMsg and generateResponseMsg ASIs,
ASIs, and a tmStateReference parameter has been added as an OUT and a tmStateReference parameter has been added as an OUT parameter.
parameter. The transportDomain and transportAddress parameters will The transportDomain and transportAddress parameters will have been
have been passed into the Message Processing Subsystem from the passed into the Message Processing Subsystem from the dispatcher, and
dispatcher, and are passed on to the Security Subsystem. The are passed on to the Security Subsystem. The tmStateReference
tmStateReference parameter will be passed from the Security Subsystem parameter will be passed from the Security Subsystem back to the
back to the Message Processing Subsystem, and on to the dispatcher Message Processing Subsystem, and on to the dispatcher and Transport
and Transport subsystems. subsystems.
If a cache exists for a session identifiable from the If a cache exists for a session identifiable from the
transportDomain, transportAddress, tmSecurityName and requested tmTransportDomain, tmTransportAddress, tmSecurityName and requested
securityLevel, then a transport-aware Security Model might create a securityLevel, then a transport-aware Security Model might create a
tmStateReference parameter to this cache, and pass that as an OUT tmStateReference parameter to this cache, and pass that as an OUT
parameter. parameter.
statusInformation = statusInformation =
generateRequestMessage( generateRequestMsg(
IN transportDomain -- (NEW) destination transport domain IN transportDomain -- (NEW) destination transport domain
IN transportAddress -- (NEW) destination transport address IN transportAddress -- (NEW) destination transport address
IN messageProcessingModel -- typically, SNMP version IN messageProcessingModel -- typically, SNMP version
IN globalData -- message header, admin data IN globalData -- message header, admin data
IN maxMessageSize -- of the sending SNMP entity IN maxMessageSize -- of the sending SNMP entity
IN securityModel -- for the outgoing message IN securityModel -- for the outgoing message
IN securityEngineID -- authoritative SNMP entity IN securityEngineID -- authoritative SNMP entity
IN securityName -- on behalf of this principal IN securityName -- on behalf of this principal
IN securityLevel -- Level of Security requested IN securityLevel -- Level of Security requested
IN scopedPDU -- message (plaintext) payload IN scopedPDU -- message (plaintext) payload
OUT securityParameters -- filled in by Security Module OUT securityParameters -- filled in by Security Module
OUT wholeMsg -- complete generated message OUT wholeMsg -- complete generated message
OUT wholeMsgLength -- length of generated message OUT wholeMsgLength -- length of generated message
OUT tmStateReference -- (NEW) reference to transport state OUT tmStateReference -- (NEW) reference to transport state
) )
)
statusInformation = statusInformation =
generateResponseMessage( generateResponseMsg(
IN transportDomain -- (NEW) destination transport domain IN transportDomain -- (NEW) destination transport domain
IN transportAddress -- (NEW) destination transport address IN transportAddress -- (NEW) destination transport address
IN messageProcessingModel -- SNMPv3 Message Processing IN messageProcessingModel -- Message Processing Model
-- Model IN globalData -- msgGlobalData
IN globalData -- msgGlobalData from step 7 IN maxMessageSize -- from msgMaxSize
IN maxMessageSize -- from msgMaxSize (step 7c) IN securityModel -- as determined by MPM
IN securityModel -- as determined in step 7e
IN securityEngineID -- the value of snmpEngineID IN securityEngineID -- the value of snmpEngineID
IN securityName -- on behalf of this principal IN securityName -- on behalf of this principal
IN securityLevel -- for the outgoing message IN securityLevel -- for the outgoing message
IN scopedPDU -- as prepared in step 6) IN scopedPDU -- as provided by MPM
IN securityStateReference -- as determined in step 2 IN securityStateReference -- as provided by MPM
OUT securityParameters -- filled in by Security Module OUT securityParameters -- filled in by Security Module
OUT wholeMsg -- complete generated message OUT wholeMsg -- complete generated message
OUT wholeMsgLength -- length of generated message OUT wholeMsgLength -- length of generated message
OUT tmStateReference -- (NEW) reference to transport state OUT tmStateReference -- (NEW) reference to transport state
) )
)
6.3. The receiveMessage ASI 6.3. The receiveMessage ASI
The receiveMessage ASI is used to pass a message from the Transport The receiveMessage ASI is used to pass a message from the Transport
Subsystem to the Dispatcher. In the diagram in section 4.6.1 of RFC Subsystem to the Dispatcher. In the diagram in section 4.6.1 of RFC
3411, the receiveMessage ASI replaces the text "Receive SNMP Response 3411, the receiveMessage ASI replaces the text "Receive SNMP Response
Message from Network". In section 4.6.2, the receiveMessage ASI Message from Network". In section 4.6.2, the receiveMessage ASI
replaces the text "Receive SNMP Message from Network". replaces the text "Receive SNMP Message from Network".
When a message is received on a given transport session, if a cache When a message is received on a given transport session, if a cache
does not already exist for that session, the Transport Model might does not already exist for that session, the Transport Model might
skipping to change at page 28, line 27 skipping to change at page 28, line 27
OUT securityName -- identification of the principal OUT securityName -- identification of the principal
OUT scopedPDU, -- message (plaintext) payload OUT scopedPDU, -- message (plaintext) payload
OUT maxSizeResponseScopedPDU -- maximum size sender can handle OUT maxSizeResponseScopedPDU -- maximum size sender can handle
OUT securityStateReference -- reference to security state OUT securityStateReference -- reference to security state
) -- information, needed for response ) -- information, needed for response
7. Security Considerations 7. Security Considerations
This document defines an architectural approach that permits SNMP to This document defines an architectural approach that permits SNMP to
utilize transport layer security services. Each proposed Transport utilize transport layer security services. Each proposed Transport
Model should discuss the security considerations of the Transport Model should discuss the security considerations of that Transport
Model. Model.
It is considered desirable by some industry segments that SNMP It is considered desirable by some industry segments that SNMP
Transport Models should utilize transport layer security that Transport Models should utilize transport layer security that
addresses perfect forward secrecy at least for encryption keys. addresses perfect forward secrecy at least for encryption keys.
Perfect forward secrecy guarantees that compromise of long term Perfect forward secrecy guarantees that compromise of long term
secret keys does not result in disclosure of past session keys. Each secret keys does not result in disclosure of past session keys. Each
proposed Transport Model should include a discussion in its security proposed Transport Model should include a discussion in its security
considerations of whether perfect forward security is appropriate for considerations of whether perfect forward security is appropriate for
the Transport Model. that Transport Model.
Since the cache and LCD will contain security-related parameters, The Denial of Service characteristics of various transport models and
security protocols will vary and should be evaluated when determining
the applicability of a transport model to a particular deployment
situation.
Since the cache will contain security-related parameters,
implementers should store this information (in memory or in implementers should store this information (in memory or in
persistent storage) in a manner to protect it from unauthorized persistent storage) in a manner to protect it from unauthorized
disclosure and/or modification. disclosure and/or modification.
Care must be taken to ensure that a SNMP engine is sending packets Care must be taken to ensure that a SNMP engine is sending packets
out over a transport using credentials that are legal for that engine out over a transport using credentials that are legal for that engine
to use on behalf of that user. Otherwise an engine that has multiple to use on behalf of that user. Otherwise an engine that has multiple
transports open might be "tricked" into sending a message through the transports open might be "tricked" into sending a message through the
wrong transport. wrong transport.
skipping to change at page 29, line 24 skipping to change at page 29, line 29
described by this document does not alter that. described by this document does not alter that.
The architecture change described by this document does however, The architecture change described by this document does however,
allow SNMP to support two different approaches to security - message- allow SNMP to support two different approaches to security - message-
driven security and transport-driven security. With message-driven driven security and transport-driven security. With message-driven
security, SNMP provides its own security, and passes security security, SNMP provides its own security, and passes security
parameters within the SNMP message; with transport-driven security, parameters within the SNMP message; with transport-driven security,
SNMP depends on an external entity to provide security during SNMP depends on an external entity to provide security during
transport by "wrapping" the SNMP message. transport by "wrapping" the SNMP message.
In times of network stress, the security protocol and its underlying
security mechanisms SHOULD NOT depend upon the ready availability of
other network services (e.g., Network Time Protocol (NTP) or
Authentication, Authorization, and Accounting (AAA) protocols or
certificate authorities). The User-based Security Model was
explicitly designed to not depend upon external network services, and
provides its own security services. It is RECOMMENDED that operators
provision authPriv USM to supplement any security model or transport
model that has external dependencies, so that secure SNMP
communications can continue when the external network service is not
available.
Using a non-transport-aware security model with a secure transport
model is NOT RECOMMENDED, for the following reasons.
Security models defined before the Transport Security Model (i.e., Security models defined before the Transport Security Model (i.e.,
SNMPv1, SNMPv2c, and USM) do not support transport-based security, SNMPv1, SNMPv2c, and USM) do not support transport-based security,
and only have access to the security parameters contained within the and only have access to the security parameters contained within the
SNMP message. They do not know about the security parameters SNMP message. They do not know about the security parameters
associated with a secure transport. As a result, the Access Control associated with a secure transport. As a result, the Access Control
Subsystem bases its decisions on the security parameters extracted Subsystem bases its decisions on the security parameters extracted
from the SNMP message, not on transport-based security parameters. from the SNMP message, not on transport-based security parameters.
Implications of coexistence of older security models with secure Implications of combining older security models with secure transport
transport models are known. The securityName used for access control models are known. The securityName used for access control decisions
decisions represents an SNMP-authenticated identity, not the is based on the message-driven identity, which might be
transport-authenticated identity. (I can transport-authenticate as unauthenticated, not the transport-driven authenticated identity:
guest and then simply use a community name for root, or a USM non-
authenticated identity.)
o An SNMPv1 message will always be paired with an SNMPv1 Security o An SNMPv1 message will always be paired with an SNMPv1 Security
Model (per RFC3584), regardless of the transport mapping or Model (per RFC3584), regardless of the transport mapping or
transport model used, and access controls will be based on the transport model used, and access controls will be based on the
community name. unauthenticated community name.
o An SNMPv2c message will always be paired with an SNMPv2c Security o An SNMPv2c message will always be paired with an SNMPv2c Security
Model (per RFC3584), regardless of the transport mapping or Model (per RFC3584), regardless of the transport mapping or
transport model used, and access controls will be based on the transport model used, and access controls will be based on the
community name. unauthenticated community name.
o An SNMPv3 message will always be paired with the securityModel o An SNMPv3 message will always be paired with the securityModel
specified in the msgSecurityParameters field of the message (per specified in the msgSecurityParameters field of the message (per
RFC3412), regardless of the transport mapping or transport model RFC3412), regardless of the transport mapping or transport model
used. If the SNMPv3 message specifies the User-based Security used. If the SNMPv3 message specifies the User-based Security
Model (USM), access controls will be based on the USM user. If Model (USM), with noAuthNoPriv, then the access controls will be
the SNMPv3 message specifies the Transport Security Model (TSM), based on the unauthenticated USM user.
access controls will be based on the principal authenticated by
the transport. o For outgoing messages, if a secure transport model is selected in
combination with a security model that does not populate a
tmStateReference, the secure transport model SHOULD detect the
lack of a valid tmStateReference and fail.
8. IANA Considerations 8. IANA Considerations
IANA is requested to create a new registry in the Simple Network IANA is requested to create a new registry in the Simple Network
Management Protocol (SNMP) Number Spaces. The new registry should be Management Protocol (SNMP) Number Spaces. The new registry should be
called "SNMP Transport Domains". This registry will contain ASCII called "SNMP Transport Domains". This registry will contain ASCII
strings of one to four characters to identify prefixes for strings of one to four characters to identify prefixes for
corresponding SNMP transport domains. Each transport domain requires corresponding SNMP transport domains. Each transport domain requires
an OID assignment under snmpDomains [RFC2578] . Values are to be an OID assignment under snmpDomains [RFC2578] . Values are to be
assigned via RFC2434 "Specification Required". assigned via [RFC5226] "Specification Required".
The registry should be populated with the following initial entries: The registry should be populated with the following initial entries:
Registry Name: SNMP Transport Domains Registry Name: SNMP Transport Domains
Reference: [RFC2578] [RFC3417] [XXXX] Reference: [RFC2578] [RFC3417] [XXXX]
Registration Procedures: Specification Required Registration Procedures: Specification Required
Each domain is assigned a MIB-defined OID under snmpDomains Each domain is assigned a MIB-defined OID under snmpDomains
Prefix snmpDomain Reference Prefix snmpDomains Reference
------- ----------------------------- --------- ------- ----------------------------- ---------
udp snmpUDPDomain RFC3417 udp snmpUDPDomain RFC3417
clns snmpCLNSDomain RFC3417 clns snmpCLNSDomain RFC3417
cons snmpCONSDomain RFC3417 cons snmpCONSDomain RFC3417
ddp snmpDDPDomain RFC3417 ddp snmpDDPDomain RFC3417
ipx snmpIPXDomain RFC3417 ipx snmpIPXDomain RFC3417
prxy rfc1157Domain RFC3417 prxy rfc1157Domain RFC3417
-- NOTE to RFC editor: replace XXXX with actual RFC number -- NOTE to RFC editor: replace XXXX with actual RFC number
-- for this document and remove this note -- for this document and remove this note
skipping to change at page 33, line 5 skipping to change at page 33, line 36
[RFC4251] Ylonen, T. and C. Lonvick, [RFC4251] Ylonen, T. and C. Lonvick,
"The Secure Shell (SSH) "The Secure Shell (SSH)
Protocol Architecture", Protocol Architecture",
RFC 4251, January 2006. RFC 4251, January 2006.
[RFC4741] Enns, R., "NETCONF [RFC4741] Enns, R., "NETCONF
Configuration Protocol", Configuration Protocol",
RFC 4741, December 2006. RFC 4741, December 2006.
[RFC5226] Narten, T. and H.
Alvestrand, "Guidelines for
Writing an IANA
Considerations Section in
RFCs", BCP 26, RFC 5226,
May 2008.
[I-D.ietf-isms-transport-security-model] Harrington, D. and W. [I-D.ietf-isms-transport-security-model] Harrington, D. and W.
Hardaker, "Transport Hardaker, "Transport
Security Model for SNMP", d Security Model for SNMP", d
raft-ietf-isms-transport- raft-ietf-isms-transport-
security-model-09 (work in security-model-10 (work in
progress), October 2008. progress), October 2008.
[I-D.ietf-isms-secshell] Harrington, D., Salowey, [I-D.ietf-isms-secshell] Harrington, D., Salowey,
J., and W. Hardaker, J., and W. Hardaker,
"Secure Shell Transport "Secure Shell Transport
Model for SNMP", Model for SNMP",
draft-ietf-isms-secshell-12 draft-ietf-isms-secshell-13
(work in progress), (work in progress),
October 2008. November 2008.
[I-D.ietf-syslog-protocol] Gerhards, R., "The syslog [I-D.ietf-syslog-protocol] Gerhards, R., "The syslog
Protocol", draft-ietf- Protocol", draft-ietf-
syslog-protocol-23 (work in syslog-protocol-23 (work in
progress), September 2007. progress), September 2007.
Appendix A. Why tmStateReference? Appendix A. Why tmStateReference?
This appendix considers why a cache-based approach was selected for This appendix considers why a cache-based approach was selected for
passing parameters. passing parameters.
skipping to change at page 35, line 18 skipping to change at page 36, line 10
open issues section before publishing this document as an RFC. (If open issues section before publishing this document as an RFC. (If
it is not empty, please send it back to the editor to resolve. it is not empty, please send it back to the editor to resolve.
o o
Appendix C. Change Log Appendix C. Change Log
NOTE to RFC editor: Please remove this change log before publishing NOTE to RFC editor: Please remove this change log before publishing
this document as an RFC. this document as an RFC.
Changes from -15- to -16-
o editorial changes
o clarified long-term vs short-term nature of tmState
o removed any references to LCD
Changes from -14- to -15- Changes from -14- to -15-
o editorial changes and reorganization o editorial changes and reorganization
Changes from -13- to -14- Changes from -13- to -14-
o o
Changes from -12- to -13- Changes from -12- to -13-
skipping to change at page 37, line 44 skipping to change at page 38, line 44
Transport Model processing Transport Model processing
removed discussion of speculative features that might exist in removed discussion of speculative features that might exist in
future Transport Models future Transport Models
removed openSession and closeSession ASIs, since those are model- removed openSession and closeSession ASIs, since those are model-
dependent dependent
removed the MIB module removed the MIB module
removed the MIB boilerplate intro (this memo defines a SMIv2 MIB removed the MIB boilerplate intro (this memo defines a SMIv2 MIB )
...)
removed IANA considerations related to the now-gone MIB module removed IANA considerations related to the now-gone MIB module
removed security considerations related to the MIB module
removed security considerations related to the MIB module
removed references needed for the MIB module removed references needed for the MIB module
changed receiveMessage ASI to use origin transport domain/address changed receiveMessage ASI to use origin transport domain/address
updated Parameter CSV appendix updated Parameter CSV appendix
Changes from revision -03- to -04- Changes from revision -03- to -04-
changed title from Transport Mapping Security Model Architectural changed title from Transport Mapping Security Model Architectural
Extension to Transport Subsystem Extension to Transport Subsystem
skipping to change at page 39, line 4 skipping to change at page 39, line 49
changed tmSessionReference back to tmStateReference changed tmSessionReference back to tmStateReference
Changes from revision -02- to -03- Changes from revision -02- to -03-
o removed session table from MIB module o removed session table from MIB module
o removed sessionID from ASIs o removed sessionID from ASIs
o reorganized to put ASI discussions in EOP section, as was done in o reorganized to put ASI discussions in EOP section, as was done in
SSHSM SSHSM
o changed user auth to client auth
o changed user auth to client auth
o changed tmStateReference to tmSessionReference o changed tmStateReference to tmSessionReference
o modified document to meet consensus positions published by JS o modified document to meet consensus positions published by JS
* authoritative is model-specific * authoritative is model-specific
* msgSecurityParameters usage is model-specific * msgSecurityParameters usage is model-specific
* msgFlags vs. securityLevel is model/implementation-specific * msgFlags vs. securityLevel is model/implementation-specific
skipping to change at page 42, line 4 skipping to change at line 1863
Phone: +1 603 436 8634 Phone: +1 603 436 8634
EMail: dharrington@huawei.com EMail: dharrington@huawei.com
Juergen Schoenwaelder Juergen Schoenwaelder
Jacobs University Bremen Jacobs University Bremen
Campus Ring 1 Campus Ring 1
28725 Bremen 28725 Bremen
Germany Germany
Phone: +49 421 200-3587 Phone: +49 421 200-3587
EMail: j.schoenwaelder@iu-bremen.de EMail: j.schoenwaelder@iu-bremen.de
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. 77 change blocks. 
178 lines changed or deleted 240 lines changed or added

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