| < draft-schoenw-snmp-tlsm-01.txt | draft-schoenw-snmp-tlsm-02.txt > | |||
|---|---|---|---|---|
| Network Working Group D. Harrington | Network Working Group D. Harrington | |||
| Internet-Draft Independent | Internet-Draft Independent | |||
| Expires: April 1, 2005 J. Schoenwaelder | Expires: November 27, 2005 J. Schoenwaelder | |||
| International University Bremen | International University Bremen | |||
| October 2004 | May 26, 2005 | |||
| Transport Mapping Security Model (TMSM) for the Simple Network | Transport Mapping Security Model (TMSM) for the Simple Network | |||
| Management Protocol version 3 (SNMPv3) | Management Protocol version 3 (SNMPv3) | |||
| draft-schoenw-snmp-tlsm-01.txt | draft-schoenw-snmp-tlsm-02.txt | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft and is subject to all provisions | By submitting this Internet-Draft, each author represents that any | |||
| of section 3 of RFC 3667. By submitting this Internet-Draft, each | applicable patent or other IPR claims of which he or she is aware | |||
| author represents that any applicable patent or other IPR claims of | have been or will be disclosed, and any of which he or she becomes | |||
| which he or she is aware have been or will be disclosed, and any of | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| which he or she become aware will be disclosed, in accordance with | ||||
| RFC 3668. | ||||
| 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 | other groups may also distribute working documents as Internet- | |||
| Internet-Drafts. | Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on April 1, 2005. | This Internet-Draft will expire on November 27, 2005. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The Internet Society (2004). | Copyright (C) The Internet Society (2005). | |||
| Abstract | Abstract | |||
| This document describes a Transport Mapping Security Model (TMSM) for | This document describes a Transport Mapping Security Model (TMSM) for | |||
| the Simple Network Management Protocol (SNMP) architecture defined in | the Simple Network Management Protocol (SNMP) architecture defined in | |||
| RFC3411. At this stage, this document does not provide a complete | RFC3411. At this stage, this document describes a framework, not a | |||
| solution - it rather identifies and discusses some key aspects that | protocol. It does not provide a complete solution - it rather | |||
| need discussion and future work. | identifies and discusses some key aspects that need discussion and | |||
| future work. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Requirements of a Transport Mapping Security Model . . . . . . 4 | 3. Requirements of a Transport Mapping Security Model . . . . . . 5 | |||
| 3.1 Security Requirements . . . . . . . . . . . . . . . . . . 4 | 3.1 Security Requirements . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2 Architectural Modularity Requirements . . . . . . . . . . 5 | 3.1.1 Security Protocol Requirements . . . . . . . . . . . . 5 | |||
| 3.3 Passing messages between Dispatchers . . | 3.1.2 Session Requirements . . . . . . . . . . . . . . . . . 6 | |||
| . . . . . . . . . 5 | 3.2 Architectural Modularity Requirements . . . . . . . . . . 6 | |||
| 3.4 Security Parameter Passing Requirement . . . . . . . . . . 6 | 3.2.1 USM and the RFC3411 Architecture . . . . . . . . . . . 9 | |||
| 3.4.1 Using an ASI . . . . . . . . . . . . . . . . . . . . . 6 | 3.2.2 TMSM and the RFC3411 Architecture . . . . . . . . . . 10 | |||
| 3.4.2 Using a cache . . . . . . . . . . . . . . . . . . . . 6 | 3.3 Passing Messages between Subsystems . . . . . . . . . . . 11 | |||
| 3.4.3 Using an encapsulating header . . . . . . . . . . . . 7 | 3.4 Security Parameter Passing Requirement . . . . . . . . . . 12 | |||
| 3.4.4 Using existing fields in a message . . . . . . . . . . 7 | 3.4.1 Define an Abstract Service Iinterface . . . . . . . . 13 | |||
| 3.5 Access Control Requirements . . . . . . . . . . . . . . . 8 | 3.4.2 Using an encapsulating header . . . . . . . . . . . . 13 | |||
| 3.5.1 Architectural securityName Binding Requirement . . . . 8 | 3.4.3 Modifying Existing Fields in an SNMP Message . . . . . 13 | |||
| 4. Fields in the SNMPv3 message . . . . . . . . . . . . . . . . . 8 | 3.4.4 Using a cache . . . . . . . . . . . . . . . . . . . . 14 | |||
| 4.1 msgVersion . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.5 Architectural Requirements for Access Control . . . . . . 14 | |||
| 4.2 msgGlobalData . . . . . . . . . . . . . . . . . . . . . . 9 | 3.5.1 securityName Binding . . . . . . . . . . . . . . . . . 14 | |||
| 4.3 securityLevel and msgFlags . . . . . . . . . . . . . . . . 9 | 3.5.2 Separation of Authentication and Authorization . . . . 15 | |||
| 4.4 The tmStateReference for Passing Security Parameters . . . 11 | 4. Integration with the SNMPv3 message format . . . . . . . . . . 16 | |||
| 4.5 securityStateReference Cached Security Data . . . . . . . 11 | 4.1 msgVersion . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 4.5.1 Prepare an Outgoing SNMP Message . . . . . . . . . . . 12 | 4.2 msgGlobalData . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 4.5.2 Prepare Data Elements from an Incoming SNMP Message . 12 | 4.3 securityLevel and msgFlags . . . . . . . . . . . . . . . . 17 | |||
| 4.6 Notifications . . . . . . . . . . . . . . . . . . . . . . 13 | 4.4 The tmStateReference for Passing Security Parameters . . . 18 | |||
| 5. Transport Mapping Security Model Samples . . . . . . . . . . . 13 | 4.5 securityStateReference Cached Security Data . . . . . . . 18 | |||
| 5.1 TLS/TCP Transport Mapping Security Model . . . . . . . . . 13 | 4.5.1 Prepare an Outgoing SNMP Message . . . . . . . . . . . 19 | |||
| 5.1.1 tmStateReference for TLS . . . . . . . . . . . . . . . 13 | 4.5.2 Prepare Data Elements from an Incoming SNMP Message . 20 | |||
| 5.1.2 MP portion for TLS TM-Security Model . . . . . . . . . 14 | 4.6 Notifications . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.1.3 MIB Module for TLS Security . . . . . . . . . . . . . 14 | 5. Transport Mapping Security Model Samples . . . . . . . . . . . 21 | |||
| 5.2 DTLS/UDP Transport Mapping Security Model . . . . . . . . 14 | 5.1 TLS/TCP Transport Mapping Security Model . . . . . . . . . 21 | |||
| 5.2.1 tmStateReference for DTLS . . . . . . . . . . . . . . 15 | 5.1.1 tmStateReference for TLS . . . . . . . . . . . . . . . 21 | |||
| 5.3 SASL Transport Mapping Security Model . . . . . . . . . . 16 | 5.1.2 MPSP for TLS TM-Security Model . . . . . . . . . . . . 22 | |||
| 5.3.1 tmStateReference for SASL DIGEST-MD5 . . . . . . . . 16 | 5.1.3 MIB Module for TLS Security . . . . . . . . . . . . . 22 | |||
| 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | 5.2 DTLS/UDP Transport Mapping Security Model . . . . . . . . 22 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 5.2.1 tmStateReference for DTLS . . . . . . . . . . . . . . 23 | |||
| 7.1 Normative References . . . . . . . . . . . . . . . . . . . . 17 | 5.3 SASL Transport Mapping Security Model . . . . . . . . . . 24 | |||
| 7.2 Informative References . . . . . . . . . . . . . . . . . . . 18 | 5.3.1 tmStateReference for SASL DIGEST-MD5 . . . . . . . . 24 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 18 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | |||
| A. Message security versus session security . . . . . . . . . . . 19 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| A.1 msgFlags versus actual security . . . . . . . . . . . . . 19 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| A.2 Message security versus session security . . . . . . . . . 19 | 8.1 Normative References . . . . . . . . . . . . . . . . . . . 25 | |||
| Intellectual Property and Copyright Statements . . . . . . . . 21 | 8.2 Informative References . . . . . . . . . . . . . . . . . . 26 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 27 | ||||
| A. Questions about msgFlags: . . . . . . . . . . . . . . . . . . 27 | ||||
| A.1 msgFlags versus actual security . . . . . . . . . . . . . 27 | ||||
| A.2 Message security versus session security . . . . . . . . . 29 | ||||
| Intellectual Property and Copyright Statements . . . . . . . . 30 | ||||
| 1. Introduction | 1. Introduction | |||
| This document describes a Transport Mapping Security Model (TMSM) for | ||||
| the Simple Network Management Protocol (SNMP) architecture defined in | ||||
| RFC3411. At this stage, this document describes a framework, not a | ||||
| protocol. It does not provide a complete solution - it rather | ||||
| identifies and discusses some key aspects that need discussion and | ||||
| future work. | ||||
| There are multiple ways to secure one's home or business, but they | There are multiple ways to secure one's home or business, but they | |||
| largely boil down to a continuum of alternatives. Let's consider | largely boil down to a continuum of alternatives. Let's consider | |||
| three general approaches. In the first approach, an individual/ | three general approaches. In the first approach, an individual could | |||
| company could buy a gun, learn to use it, and sit on your front porch | buy a gun, learn to use it, and sit on your front porch waiting for | |||
| waiting for intruders. In the second approach, one could hire an | intruders. In the second approach, one could hire an employee with a | |||
| employee with a gun, schedule the employee, position the employee to | gun, schedule the employee, position the employee to guard what you | |||
| guard what you want protected, hire a second guard to cover if the | want protected, hire a second guard to cover if the first gets sick, | |||
| first gets sick, and so on. In the third approach, you could hire a | and so on. In the third approach, you could hire a security company, | |||
| security company, tell them what you want protected, and they could | tell them what you want protected, and they could hire employees, | |||
| hire employees, train them, buy the guns, position the guards, | train them, buy the guns, position the guards, schedule the guards, | |||
| schedule the guards, send a replacement when a guard cannot make it, | send a replacement when a guard cannot make it, etc., thus providing | |||
| etc., thus providing the security you want, with no significant | the security you want, with no significant effort on your part other | |||
| effort on your part other than identifying requirements and verifying | than identifying requirements and verifying the quality of the | |||
| the quality of the 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 (MD5=the gun), but provides all the coordination. | existing mechanisms (MD5=the gun), 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 user and key | infrastructures. USM therefore requires a separate user and key | |||
| management infrastructure. Operators have reported that deploying | management infrastructure. Operators have reported that deploying | |||
| another user and key management infrastructure in order to use SNMPv3 | another user and key management infrastructure in order to use SNMPv3 | |||
| is a reason for not deploying SNMPv3 at this point in time. It is | is a reason for not deploying SNMPv3 at this point in time. It is | |||
| possible but difficult to define external mechanisms that handle the | possible but difficult to define external mechanisms that handle the | |||
| distribution of keys for use by the USM approach. | distribution of keys for use by the USM approach. | |||
| A solution based on the second approach might use a USM-compliant | A solution based on the second approach might use a USM-compliant | |||
| architecture, but replace the authentication mechanism with an | architecture, but replace the authentication mechanism with an | |||
| external mechanism, such as RADIUS, to provide the authentication | external mechanism, such as RADIUS, to provide the authentication | |||
| service. It might be possible to utilize an external protocol to | service. It might be possible to utilize an external protocol to | |||
| encrypt a message, to check timeliness, to check data integrity, etc. | encrypt a message, to check timeliness, to check data integrity, etc. | |||
| It is difficult to cobble together a number of subcontracted services | It is difficult to cobble together a number of subcontracted services | |||
| and coordinate them however, because it is difficult to build solid | and coordinate them however, because it is difficult to build solid | |||
| security bindings between the various services, and potential for | security bindings between the various services, and potential for | |||
| gaps in the security is significant. | gaps in the security is significant. | |||
| A solution based on the third approach might utilize one or more | A solution based on the third approach might utilize one or more | |||
| lower-layer security mechanisms to provide the message-oriented | lower-layer security mechanisms to provide the message-oriented | |||
| security services required. These would include authentication of | security services required. These would include authentication of | |||
| the sender, encryption, timeliness checking, and data integrity | the sender, encryption, timeliness checking, and data integrity | |||
| checking. There are a number of IETF standards available or in | checking. There are a number of IETF standards available or in | |||
| development to address these problems at lower layers, frequently at | development to address these problems at lower layers, frequently at | |||
| the transport layer. A solution based on this approach might also | the transport layer. A solution based on this approach might also | |||
| utilize a "transport" that is actually another application operating | utilize a "transport application" that is actually another | |||
| at the application layer, such as SSH [SSHauth] | application operating at the application layer, such as SSH [SSHauth] | |||
| This document proposes a Transport Mapping Security Model (TMSM), as | This document proposes a Transport Mapping Security Model (TMSM), as | |||
| an extension of the SNMPv3 architecture, that would allow security to | an extension of the SNMPv3 architecture, that would allow security to | |||
| be provided an external protocol connected to the SNMP engine through | be provided by an external protocol connected to the SNMP engine | |||
| an SNMP transport-mapping. Such a TMSM would then enable the use of | through an SNMP transport-mapping. Such a TMSM would then enable the | |||
| existing security mechanisms such as (TLS) [RFC2246], Kerberos | use of existing security mechanisms such as (TLS) [RFC2246], Kerberos | |||
| [RFC1510] or SASL [RFC2222] within the SNMPv3 architecture. | [RFC1510] or SASL [RFC2222] within the SNMPv3 architecture. | |||
| As pointed out in the EUSM proposal [EUSM], it is desirable to use | As pointed out in the EUSM proposal [EUSM], it is desirable to use | |||
| mechanisms that could "unify the approach for administrative security | mechanisms that could "unify the approach for administrative security | |||
| for SNMPv3 and CLI" and other management interfaces. The use of | for SNMPv3 and CLI" and other management interfaces. The use of | |||
| security services provided by lower layers or other applications is | security services provided by lower layers or other applications is | |||
| the approach commonly used for the CLI, and is the approach being | the approach commonly used for the CLI, and is the approach being | |||
| proposed for NETCONF | proposed for NETCONF | |||
| This document provides the motivation for leveraging transport layer | This document describes the motivation for leveraging transport layer | |||
| security mechanisms for secure SNMP communication, identifies some | security mechanisms for secure SNMP communication, identifies some | |||
| key issues and provides some proposals for design choices that may be | key issues and provides some proposals for design choices that may be | |||
| made to provide a workable solution that meets operational | made to provide a workable solution that meets operational | |||
| requirements and fits into the SNMP architecture defined in [RFC3411] | requirements and fits into the SNMP architecture defined in [RFC3411] | |||
| 2. Motivation | 2. Motivation | |||
| There are a number of Internet security protocols and mechanisms that | There are a number of Internet security protocols and mechanisms that | |||
| are in wide spread use. Many of them try to provide a generic | are in wide spread use. Many of them try to provide a generic | |||
| infrastructure to be used by many different application layer | infrastructure to be used by many different application layer | |||
| protocols. The motivation behind TMSM is to leverage these | protocols. The motivation behind TMSM is to leverage these | |||
| protocols where it seems useful. | protocols where it seems useful. | |||
| There are a number of challenges to be addressed to map the security | There are a number of challenges to be addressed to map the security | |||
| provided by a secure transport into the SNMP architecture so that | provided by a secure transport into the SNMP architecture so that | |||
| SNMP continues to work without any surprises. These are discussed in | SNMP continues to work without any surprises. These are discussed in | |||
| detail below. | detail below. | |||
| Some points requiring further WG research and discussion are | ||||
| identified by [todo] markers in the text. | ||||
| 3. Requirements of a Transport Mapping Security Model | 3. Requirements of a Transport Mapping Security Model | |||
| 3.1 Security Requirements | 3.1 Security Requirements | |||
| Transport mapping security protocols SHOULD ideally provide the | Transport mapping security protocols SHOULD ideally provide the | |||
| protection against the following message-oriented threats [RFC3411]: | protection against the following message-oriented threats [RFC3411]: | |||
| 1. modification of information | 1. modification of information | |||
| 2. masquerade | 2. masquerade | |||
| 3. message stream modification | 3. message stream modification | |||
| 4. disclosure | 4. disclosure | |||
| According to [RFC3411], it i | ||||
| s not required to protect against denial | According to [RFC3411], it is not required to protect against denial | |||
| of service or traffic analysis. | of service or traffic analysis. | |||
| 3.1.1 Security Protocol Requirements | ||||
| There are a number of standard protocols that could be proposed as | ||||
| possible solutions within the TMSM framework. Some factors should be | ||||
| considered when selecting a protocol for use within this framework. | ||||
| Using a protocol in a manner for which it was not designed has | ||||
| numerous problems. The advertised security characteristics of a | ||||
| protocol may depend on its being used as designed; when used in other | ||||
| ways, it may not deliver the expected security characteristics. It | ||||
| is recommended that any proposed model include a discussion of the | ||||
| applicability statement of the protocols to be used. | ||||
| A protocol used for the TMSM framework should ideally require no | ||||
| modifications to the protocol. Modifying the protocol may change its | ||||
| security characteristics in ways that would impact other existing | ||||
| usages. If a change is necessary, the change should be an extension | ||||
| that has no impact on the existing usages. It is recommended that | ||||
| any proposed model include a discussion of potential impact on other | ||||
| usages of the protocol. | ||||
| It has been a long-standing requirement that SNMP be able to work | ||||
| when the network is unstable, to enable network troubleshooting and | ||||
| repair. The UDP approach has been considered to meet that need well, | ||||
| with an assumption that getting small messages through, even if out | ||||
| of order, is better than gettting no messages through. There has | ||||
| been a long debate about whether UDP actually offers better support | ||||
| than TCP when the underlying IP or lower layers are unstable. There | ||||
| has been recent discussion of whether operators actually use SNMP to | ||||
| troubleshoot and repair unstable networks. | ||||
| There has been discussion of ways SNMP could be extended to better | ||||
| support management/monitoring needs when a network is running just | ||||
| fine. Use of a TCP transport, for example, could enable larger | ||||
| message sizes and more efficient table retrievals. | ||||
| TMSM models MUST be able to coexist with other protocol models, and | ||||
| may be designed to utilize either TCP or UDP, depending on the | ||||
| transport. | ||||
| 3.1.2 Session Requirements | ||||
| Sessions are not part of RFC3411 architecture, but are considered | ||||
| desirable because the cost of authentication can be amortized over | ||||
| potentially many transactions. | ||||
| For transports that utilize sessions, a session should have a single | ||||
| user and security level associated with it. If an exchange between | ||||
| communicating engines would require a different security level or | ||||
| would be on behalf of a different user, then another session would be | ||||
| needed. An immediate consequence of this is that implementations | ||||
| should be able to maintain some reasonable number of concurrent | ||||
| sessions. | ||||
| 3.2 Architectural Modularity Requirements | 3.2 Architectural Modularity Requirements | |||
| [RFC3411] section 3 describes a modular architecture to allow the | [RFC3411] section 3 describes a modular architecture to allow the | |||
| evolution of the SNMP protocol standards over time. This | evolution of the SNMP protocol standards over time, and to minimize | |||
| side effects between subsystems when changes are made. This | ||||
| architecture includes a Security Subsystem which is responsible for | architecture includes a Security Subsystem which is responsible for | |||
| realizing security services. | realizing security services. | |||
| Transport mapping security is by its very nature a security layer | In SNMPv2, there were many problems of side effects between | |||
| which is plugged in between the transport layer and the dispatcher. | subsystems caused by the manipulation of MIB objects, especially | |||
| Conceptually, transport mapping security models will be called from | those related to authentication and authorization, because many of | |||
| within the Transport Mapping portion of an SNMP engine, or will be | the parameters were stored in shared MIB objects, and different | |||
| positioned between the transport mapping subsystem and the | models and protocols could assign different values to the objects. | |||
| dispatcher. | Contributors assumed slightly different shades of meaning depending | |||
| on the models and protocols being used. As the shared MIB module | ||||
| design was modified to accommodate a specific model, other models | ||||
| which used the same MIB objects were broken. | ||||
| ASIs were developed to pass model-independent parameters. The models | ||||
| were required to translate from their model-dependent formats into a | ||||
| model-independent format, defined using model-independent semantics, | ||||
| which would not impact other models. | ||||
| Parameters have been provided in the ASIs to pass model-independent | ||||
| information about the authentication that has been provided. These | ||||
| parameters include a model-independent identifier of the security | ||||
| "principal", the security model used to perform the authentication, | ||||
| and which SNMP-specific security features were applied to the message | ||||
| (authentication and/or privacy). | ||||
| The design of a transport mapping security model must abide the goals | The design of a transport mapping security model must abide the goals | |||
| of the RFC3411 architecture, section 1. To that end, this transport | of the RFC3411 architecture. To that end, this transport mapping | |||
| mapping security model proposal focuses on a modular subsystem that | security model proposal focuses on a modular subsystem that can be | |||
| can be advanced through the standards process independently of other | advanced through the standards process independently of other | |||
| proposals, and independent of other subsystems as much as possible. | proposals, and independent of other subsystems as much as possible. | |||
| This subsystem is designed as an architectural extension that permits | There has been some discussion of maintaining multiple tunnels or | |||
| different transport mapping security protocols to be "plugged into" | sessions for different security levels or for different | |||
| this subsystem, to support supplemental transport mapping security | applications.The ability to have an application select different | |||
| models in addition to those described here. | sessions or connections on a per-message basis would likely require a | |||
| modification to the SNMP architecture to provide new ASIs, which is | ||||
| out of scope for this document. | ||||
| IETF standards typically require one mandatory-to-implement solution, | IETF standards typically require one mandatory-to-implement solution, | |||
| with the capability of adding new security mechanisms in the future. | with the capability of adding new security mechanisms in the future. | |||
| Any transport mapping security model should define one | Any transport mapping security model should define one minimum- | |||
| minimum-compliance mechanism, preferably one which is already widely | compliance mechanism, preferably one which is already widely deployed | |||
| deployed within the transport layer security protocol used. | within the transport layer security protocol used. | |||
| This architectural extension is illustrated by the following diagram, | The TMSM subsystem is designed as an architectural extension that | |||
| which is a modified version of the diagram taken from the SNMP | permits additional transport security protocols to be "plugged into" | |||
| architecture document. | the RFC3411 architecture, supported by corresponding transport- | |||
| security-aware transport mapping models. | ||||
| TODO: Insert drawing here... | The RFC3411 architecture, and the USM approach, assume that a | |||
| security model is called by a message-processing model and will | ||||
| perform multiple security functions. The TMSM approach performs | ||||
| similar functions but performs them in different places within the | ||||
| archtitecture, so we need to distinguish the two locations for | ||||
| security processing. | ||||
| 3.3 Passing messages between Dispatchers | Transport mapping security is by its very nature a security layer | |||
| which is plugged into the RFC3411 architecture between the transport | ||||
| layer and the message dispatcher. Conceptually, transport mapping | ||||
| security processing will be called from within the Transport Mapping | ||||
| functionality of an SNMP engine dispatcher to perform the translation | ||||
| of transport security parameters to/from security-model-independent | ||||
| parameters. This transport mapping security processor will be | ||||
| referred to in this document as TMSP. | ||||
| Typically, with a TMSM model, the transport mapping will establish an | Additional functionality may be performed as part of the message | |||
| encrypted tunnel between the transport mappings of two SNMP engines, | processing function, i.e. in the security subsystem of the RFC3411 | |||
| without passing anything to the SNMP dispatcher. One transport | architecture. This document will refer to message processor's | |||
| mapping security model instance encrypts all messages, and the other | security processor as the MPSP. | |||
| transport mapping security model instance decrypts the messages. | ||||
| Thus a TMSM is composed of both a TPSP and an MPSP. | ||||
| +------------------------------+ | ||||
| | Network | | ||||
| +------------------------------+ | ||||
| ^ ^ ^ | ||||
| | | | | ||||
| v v v | ||||
| +-----+ +-----+ +-------+ | ||||
| | UDP | | TCP | . . . | other | | ||||
| +-----+ +-----+ +-------+ | ||||
| ^ ^ ^ | ||||
| | | | | ||||
| v v v | ||||
| +------+ +-----+ +-------+ | ||||
| | DTLS | | TLS | . . . | other | | ||||
| +------+ +-----+ +-------+ (traditional SNMP agent) | ||||
| +-------------------------------------------------------------------+ | ||||
| | ^ | | ||||
| | | | | ||||
| | Dispatcher v | | ||||
| | +-------------------+ | | ||||
| | | Transport | +--------------------+ | | ||||
| | | Mapping |<---> | Transport Mapping | | | ||||
| | | (e.g., RFC 3417) | | Security Processor | | | ||||
| | | | +--------------------+ | | ||||
| | | | | | ||||
| | | | +---------------------+ +----------------+ | | ||||
| | | | | Message Processing | | Security | | | ||||
| | | | | Subsystem | | Subsystem | | | ||||
| | | | | +------------+ | | | | | ||||
| | | | | +->| v1MP * |<--->| +------------+ | | | ||||
| | | | | | +------------+ | | | Other | | | | ||||
| | | | | | +------------+ | | | Security | | | | ||||
| | | | | +->| v2cMP * |<--->| | Model | | | | ||||
| | | Message | | | +------------+ | | +------------+ | | | ||||
| | | Dispatcher <--------->| +------------+ | | +------------+ | | | ||||
| | | | | +->| v3MP * |<--->| | User-based | | | | ||||
| | | | | | +------------+ | | | Security | | | | ||||
| | | PDU Dispatcher | | | +------------+ | | | Model | | | | ||||
| | +-------------------+ | +->| otherMP * |<--->| +------------+ | | | ||||
| | ^ | +------------+ | | | | | ||||
| | | +---------------------+ +----------------+ | | ||||
| | v | | ||||
| | +-------+-------------------------+---------------+ | | ||||
| | ^ ^ ^ | | ||||
| | | | | | | ||||
| | v v v | | ||||
| | +-------------+ +---------+ +--------------+ +-------------+ | | ||||
| | | COMMAND | | ACCESS | | NOTIFICATION | | PROXY | | | ||||
| | | RESPONDER |<->| CONTROL |<->| ORIGINATOR | | FORWARDER | | | ||||
| | | application | | | | applications | | application | | | ||||
| | +-------------+ +---------+ +--------------+ +-------------+ | | ||||
| | ^ ^ | | ||||
| | | | | | ||||
| | v v | | ||||
| | +----------------------------------------------+ | | ||||
| | | MIB instrumentation | SNMP entity | | ||||
| +-------------------------------------------------------------------+ | ||||
| 3.2.1 USM and the RFC3411 Architecture | ||||
| This following diagrams illustrate the difference in the security | ||||
| processing done by the USM model and the security processing done by | ||||
| a TMSM model. | ||||
| The USM security model is encapsulated by the messaging model, | ||||
| because the messaging model needs to (for incoming messages) 1) | ||||
| decode the ASN.1 (messaging model) 2) determine the SNMP security | ||||
| model and parameters (messaging model) 3) decrypt the encrypted | ||||
| portions of the message (security model) 4) translate parameters to | ||||
| model-independent parameters (security model) 5) determine which | ||||
| application should get the decrypted portions (messaging model), and | ||||
| 6) pass on the decrypted portions with model-independent parameters. | ||||
| The USM approach uses SNMP-specific message security and parameters. | ||||
| | -----------------------------------------------| | ||||
| | transport layer | | ||||
| | -----------------------------------------------| | ||||
| ^ | ||||
| | | ||||
| v | ||||
| -------------------------------------------------- | ||||
| | -----------------------------------------------| | ||||
| | | transport mapping | | ||||
| | -----------------------------------------------| | ||||
| | ^ | ||||
| | | | ||||
| | v | ||||
| | --------------------------------------------- | | ||||
| | --------------------- ------------------ | | ||||
| | SNMP messaging <--> | decryption + | | | ||||
| | | translation | | | ||||
| | --------------------- ------------------ | | ||||
| | ^ | ||||
| | | | ||||
| | v | ||||
| | --------------------- ------------------ | | ||||
| | | SNMP applications | <--> | access control | | | ||||
| | --------------------- ------------------ | | ||||
| | --------------------------------------------- | | ||||
| 3.2.2 TMSM and the RFC3411 Architecture | ||||
| In the TMSM approach, the order of the steps differ and may be | ||||
| handled by different subsystems: 1) decrypt the encrypted portions of | ||||
| the message (transport layer) 2) determine the SNMP security model | ||||
| and parameters (transport mapping) 3*) translate parameters to model- | ||||
| independent parameters (transport mapping) 4) decode the ASN.1 | ||||
| (messaging model) 5) determine which application should get the | ||||
| decrypted portions (messaging model) 6*) translate parameters to | ||||
| model-independent parameters (security model) 7) pass on the | ||||
| decrypted portions with model-independent security parameters This is | ||||
| largely based on having non-SNMP-specific message security and | ||||
| parameters. The transport mapping model might provide the | ||||
| translation from (e.g.) TLS user to securityName in step 3, OR The | ||||
| TLS user might be passed to the messaging model to pass to a TMSM | ||||
| security model to do the translation in step 6, if the WG decides all | ||||
| translations should use the same translation table (e.g. the USM | ||||
| MIB). | ||||
| | -----------------------------------------------| | ||||
| | ------------------ | | ||||
| | transport layer <--> | decryption | | | ||||
| | ------------------ | | ||||
| | -----------------------------------------------| | ||||
| ^ | ||||
| | | ||||
| v | ||||
| -------------------------------------------------- | ||||
| | -----------------------------------------------| | ||||
| | ------------------ | | ||||
| | transport mapping <--> | translation* | | | ||||
| | ------------------ | | ||||
| | -----------------------------------------------| | ||||
| | ^ | ||||
| | | | ||||
| | v | ||||
| | --------------------------------------------- | | ||||
| | ------------------ | | ||||
| | SNMP messaging <--> | translation* | | | ||||
| | ------------------ | | ||||
| | --------------------- ------------------ | | ||||
| | ^ | ||||
| | | | ||||
| | v | ||||
| | --------------------- ------------------ | | ||||
| | | SNMP applications | <--> | access control | | | ||||
| | --------------------- ------------------ | | ||||
| | --------------------------------------------- | | ||||
| 3.3 Passing Messages between Subsystems | ||||
| RFC3411 defines ASIs that describe the passing of messages between | ||||
| subsystem within an engine, and the parameters which are expected to | ||||
| be passed between the subsystems. The ASIs generally pass model- | ||||
| independent information. | ||||
| A TMSM model will establish an encrypted tunnel between the transport | ||||
| mappings of two SNMP engines. One transport mapping security model | ||||
| instance encrypts all messages, and the other transport mapping | ||||
| security model instance decrypts the messages. | ||||
| After the transport layer tunnel is established, then SNMP messages | After the transport layer tunnel is established, then SNMP messages | |||
| can conceptually be sent through the tunnel from one SNMP engine | can conceptually be sent through the tunnel from one SNMP message | |||
| dispatcher to another SNMP engine dispatcher. SNMP messages are | dispatcher to another SNMP message dispatcher. Once the tunnel is | |||
| passed unencrypted from the source dispatcher to its own TMSM, and | established, multiple SNMP messages may be able to be passed through | |||
| presented unencrypted to the destination SNMP dispatcher. | the same tunnel. | |||
| Once the tunnel is established, multiple SNMP messages may be able to | Within an engine, outgoing SNMP messages are passed unencrypted from | |||
| be passed through the same tunnel. | the message dispatcher to the transport mapping, and incoming | |||
| messages are passed unencrypted from the transport mapping to the | ||||
| message dispatcher. | ||||
| 3.4 Security Parameter Passing Requirement | 3.4 Security Parameter Passing Requirement | |||
| [RFC3411] section 4 describes primitives to describe the abstract | [RFC3411] section 4 describes primitives to describe the abstract | |||
| service interfaces used to conceptually pass information between the | service interfaces used to conceptually pass information between the | |||
| various subsystems, models and applications within the architecture. | various subsystems, models and applications within the architecture. | |||
| A Transport mapping Security Model must pass information between | ||||
| subsystems as well. | ||||
| The RFC3411 architecture has no ASI parameters for passing security | The security parameters include a model-independent identifier of the | |||
| information between the transport mapping and the dispatcher, and | security "principal", the security model used to perform the | |||
| between the dispatcher and the message processing model. Since the | authentication, and which SNMP-specific security services were | |||
| TM portion of the security model and the MP portion of the security | (should be) applied to the message (authentication and/or privacy). | |||
| model are co-resident within an implementation, it is assumed there | ||||
| is a trust relationship that exists within the implementation. There | ||||
| are four approaches that could be used for passing information | ||||
| between the TM portion of the securitymodel and the MP portion of the | ||||
| security model : | ||||
| we could define an ASI to supplement the existing ASIs, or | ||||
| the TMSM could pass the information in an implementation-specific | ||||
| cache, or | ||||
| the TMSM could add a header to encapsulate the SNMP message, or | ||||
| the TMSM could utilize fields already defined in the existing | ||||
| SNMPv3 message. | ||||
| 3.4.1 Using an ASI | In the RFC3411 architecture, the messaging model must unpack SNMP- | |||
| specific security parameters from the message before calling a | ||||
| security model to authenticate and decrypt an incoming message, | ||||
| perform integrity checking, and translate model-specific security | ||||
| parameters into model-independent parameters. In the TMSM approach, | ||||
| the security -model specific parameters are not all carried in the | ||||
| SNMP message, and can be determined from the transport layer by the | ||||
| transport mapping, before the message processing begins. | ||||
| RFC3411 discusses the purpose, and an explicit non-purpose, of the | [todo] For outgoing messages, it is necessary to have an MPSP because | |||
| ASI approach: "This modularity of specification is not meant to be | it is the MPSP that actually creates the message from it scomponent | |||
| interpreted as imposing any specific requirements on implementation." | parts. Does the MPSP need to know the transport address or the | |||
| An ASI is not an API, and following a defined ASI is not required for | actual transport security capabilities, or can this be handled in the | |||
| interoperability, so implementors are really free to use any method | TMSP, given the model-independent (and message-version-independent) | |||
| they choose. However, defining an ASI has the advantage of being | parameters? Are there any security services provided by the MPSP for | |||
| consistent with existing RFC3411/3412 practice. | an outgoing message? | |||
| 3.4.2 Using a cache | [todo] For incoming messages, is there security functionality that | |||
| can only be handled after the message version is known, such as the | ||||
| comparison of transport security capabilities and msgFlags? Does | ||||
| that functionality need to know the transport address and session or | ||||
| just the model-independent security parameters (securityName, model, | ||||
| level)? Are there any SNMP-specific parameters that need to be | ||||
| unpacked from the message for MPSP handling? msgFlags, securityLevel, | ||||
| etc.? | ||||
| A cache mechanism could be used, into which the TM portion of the | The RFC3411 architecture has no ASI parameters for passing security | |||
| security model puts information about the security applied to an | information between the transport mapping and the dispatcher, and | |||
| incoming message, and an MP portion of the security model extracts | between the dispatcher and the message processing model. If there is | |||
| that information from the cache. The cache is not passed via an | a need to have an MPSP called from the message processing model to, | |||
| explicit ASI. Given that there may be multiple TM-security caches, a | for example, verify that msgFlags and the transport security are | |||
| cache ID probably needs to be passed in the message in the ASI so the | consistent, then it will be necessary to pass the model-independent | |||
| MP portion of the security model knows which cache to consult. This | security parameters from the TPSP through to the MPSP. | |||
| approach would be consistent with the securityStateReference cache | ||||
| already being passed around in the ASI. | ||||
| The cache could be thought of as an additional parameter in the ASI. | There are four approaches that could be used for passing information | |||
| The ASI would not need to be changed since the SNMPv3 WG expected | between the TMSP and an MPSP. | |||
| that additional parameters could be passed for value-add features of | 1. we could define an ASI to supplement the existing ASIs, or | |||
| specific implementations. | 2. the TMSM could add a header to encapsulate the SNMP message, | |||
| 3. the TMSM could utilize fields already defined in the existing | ||||
| SNMPv3 message, or | ||||
| 4. the TMSM could pass the information in an implementation-specific | ||||
| cache or via a MIB module. | ||||
| 3.4.3 Using an encapsulating header | 3.4.1 Define an Abstract Service Iinterface | |||
| Abstract service interfaces [RFC3411] are defined by a set of | ||||
| primitives that specify the services provided and the abstract data | ||||
| elements that are to be passed when the services are invoked. | ||||
| Defining additional ASIs to pass the security and transport | ||||
| information from the transport mapping to a messaging security model | ||||
| has the advantage of being consistent with existing RFC3411/3412 | ||||
| practice, and helps to ensure that any TMSM proposals pass the | ||||
| necessary data, and do not cause side effects by creating model- | ||||
| specific dependencies between itself and other models or other | ||||
| subsystems other than those that are clearly defined by an ASI. | ||||
| 3.4.2 Using an encapsulating header | ||||
| A header could encapsulate the SNMP message to pass necessary | A header could encapsulate the SNMP message to pass necessary | |||
| information from the TM portion of the security model to the | information from the TMSP to the dispatcher and then to a messaging | |||
| dispatcher and then to the MP portion of the security model. The | security model. The message header would be included in the | |||
| message header would be included in the wholeMessage ASI parameter, | wholeMessage ASI parameter, and would be removed by a corresponding | |||
| and would be removed by a corresponding messaging model. This would | messaging model. This would imply the (one and only) messaging | |||
| imply a new messaging model would need to be specified as well. The | dispatcher would need to be modified to determine which SNMP message | |||
| other approaches may be able to use the standard SNMPv3 messaging | version was involved, and a new message processing model would need | |||
| model, with a new MP-security model. | to be developed that knew how to extract the header from the message | |||
| and pass it to the MPSP. | ||||
| 3.4.4 Using existing fields in a message | 3.4.3 Modifying Existing Fields in an SNMP Message | |||
| [RFC3412] describes the SNMPv3 message, which contains fields to pass | [RFC3412] describes the SNMPv3 message, which contains fields to pass | |||
| security related parameters. The TMSM could use these fields in an | security related parameters. The TMSM could use these fields in an | |||
| SNMPv3 message, or comparable fields in other message formats to pass | SNMPv3 message, or comparable fields in other message formats to pass | |||
| information between transport mapping security models in different | information between transport mapping security models in different | |||
| SNMP engines, and to pass information between a TM security model and | SNMP engines, and to pass information between a transport mapping | |||
| the corresponding MP security model. | security model and a corresponding messaging security model. | |||
| It is importnat to understand that SNMP messages are ASN.1 encoded, | If the fields in an incoming SNMPv3 message are changed by the TMSP | |||
| and the SNMP architecture places no constraints on how the ASN.1 gets | before passing it to the MPSP, then the TMSP will need to decode the | |||
| decoded - it might be decoded in one massive decode, or individual | ASN.1 message, modify the fields, and re-encode the message in ASN.1 | |||
| portions of the message, such as individual varbinds, may be decoded | before passing the message on to the message dispatcher or to the | |||
| only as needed. This is an implementation decision. | transport layer. This would require an intimate knowledge of the | |||
| message format and message versions so the TMSP knew which fields | ||||
| could be modified. This would seriously violate the modularity of | ||||
| the architecture. | ||||
| If the fields in an incoming SNMPv3 message are changed by the TM | 3.4.4 Using a cache | |||
| portion before passing it to the MP portion, then the TM portion will | ||||
| need to encode its parameters in ASN.1 or the message model would | ||||
| need to be modified to permit non-encoded data to be added to the | ||||
| message in a manner that would not impact the existing ASN.1 | ||||
| encoding/decoding of the message. In addition, the MP portion may | ||||
| not be able to perform a transport-independent message integrity | ||||
| check, and transport-independent encryption may not be able to be | ||||
| performed by the MP portion of the model. While it may be desirable | ||||
| for most TMSM models to perform those services through the TM portion | ||||
| of the model, assuming the use of a cache or an encapsulating header | ||||
| would not impose such constraints on future models. | ||||
| This document will describe a cache approac | A cache mechanism could be used, into which the TMSP puts information | |||
| h, but an encapsulating | about the security applied to an incoming message, and an MPSP | |||
| header or other mechanisms could also be used if preferred for | extracts that information from the cache. Given that there may be | |||
| specific TM security models. | multiple TM-security caches, a cache ID would need to be passed | |||
| through an ASI so the MPSP knows which cache of information to | ||||
| consult. | ||||
| 3.5 Access Control Requirements | The cache reference could be thought of as an additional parameter in | |||
| the ASIs between the transport mapping and the messaging security | ||||
| model. The RFC3411 ASIs would not need to be changed since the | ||||
| SNMPv3 WG expected that additional parameters could be passed for | ||||
| value-add features of specific implementations. | ||||
| 3.5.1 Architectural securityName Binding Requirement | This approach does create dependencies between a model-specific TPSP | |||
| and a corresponding specific MPSP. If a TMSM-model-independent ASI | ||||
| parameter is passed, this approach would be consistent with the | ||||
| securityStateReference cache already being passed around in the ASI. | ||||
| This document will describe a cache-based approach. | ||||
| 3.5 Architectural Requirements for Access Control | ||||
| 3.5.1 securityName Binding | ||||
| For SNMP access control to function properly, the security mechanism | For SNMP access control to function properly, the security mechanism | |||
| must establish a securityName, which is the security model | must establish a security model identifier, a securityLevel, and a | |||
| independent identifier for a principal, a security model identifier, | securityName, which is the security model independent identifier for | |||
| and a securityLevel. The SNMPv3 message processing architecture | a principal. The SNMPv3 message processing architecture subsystem | |||
| subsystem relies on a message model based security model, such as | relies on a security model, such as USM, to play a role in security | |||
| USM, to play an role in security that goes beyond protecting the | that goes beyond protecting the message - it provides a mapping | |||
| message - it ties various security models for the same principal to a | between the USM-specific principal to a security-model independent | |||
| security-model independent securityName which can be used for | securityName which can be used for subsequent processing, such as for | |||
| subsequent processing, such as for access control. | access control. | |||
| The TMSM assumes two portions to a security model, one tied to the | The TMSM is a two-stage security model, with a transport mapping | |||
| transport mapping and another tied to the message processing model. | security process (TMSP) and a message processing security process | |||
| and will be referred to here as a TM-portion and an MP-portion of the | (MPSP). Depending on the design of the specific TMSM model, i.e. | |||
| security model. Depending on the specific design of the security | ||||
| model, different features might be provided by the TM portion or by | which transport layer protocol is used, different features might be | |||
| the MP portion. For example, the binding of a mechanism-specific | provided by the TMSP or by the MPSP. For example, the translation | |||
| authenticated identity to a securityName might be done by the TM | from a mechanism-specific authenticated identity to a securityName | |||
| portion or by the MP portion. | might be done by the TMSP or by the MPSP. [todo] It may be possible | |||
| to define a consistent division of stages regardless of the transport | ||||
| layer protocol used, and a consistent division of functionality would | ||||
| be preferred. | ||||
| The SNMP architecture distinguishes between messages with no | The SNMP architecture distinguishes between messages with no | |||
| authentication and no privacy (noAuthNoPriv), authentication without | authentication and no privacy (noAuthNoPriv), authentication without | |||
| privacy (authNoPriv) and authentication with privacy (authPriv). | privacy (authNoPriv) and authentication with privacy (authPriv). | |||
| Hence, the authentication of a transport layer identity plays an | Hence, the authentication of a transport layer identity plays an | |||
| important role and must be considered by any transport layer security | important role and must be considered by any TMSM, and user | |||
| mechanism used. However, it is also possible that a second level of | authentication must be available via the transport layer security | |||
| authentication, one provided by a AAA server, for example, may be | protocol. | |||
| used to provide the authentication identity which is bound to the | ||||
| securityName, if the type of authentication provided by the transport | ||||
| layer (e.g. host-based or anonymous) is considered adequate to | ||||
| secure and/or encrypt the message, but inadequate to provide the | ||||
| desired granularity of access control (e.g. user-based). | ||||
| 4. Fields in the SNMPv3 message | If the type of authentication provided by the transport layer (e.g. | |||
| host-based or anonymous) is considered adequate to secure and/or | ||||
| encrypt the message, but inadequate to provide the desired | ||||
| granularity of access control (e.g. user-based), a second | ||||
| authentication, e.g. one provided by a AAA server, may be used to | ||||
| provide the authentication identity which is bound to the | ||||
| securityName. This approach would require a good analysis of the | ||||
| potential for man-in-the-middle attacks or masquerade possibilities. | ||||
| 3.5.2 Separation of Authentication and Authorization | ||||
| A TMSM security model should take care to not violate the separation | ||||
| of authentication and authorization in the RFC3411 architecture.. | ||||
| The isAccessAllowed() primitive is used for passing security-model | ||||
| independent parameters between the subsystems of the architecture. | ||||
| Mapping of (securityModel, securityName) to an access control policy | ||||
| should be handled within the access control subsystem, not the | ||||
| security subsystem, to be consistent with the modularity of the | ||||
| RFC3411 architecture. This separation was a deliberate decision of | ||||
| the SNMPv3 WG, to allow support for authentication protocols which | ||||
| did not provide authorization capabilities, and to support | ||||
| authorization schemes, such as VACM, that do not perform their own | ||||
| authentication. | ||||
| An authorization model MAY require authentication by certain | ||||
| securityModels and a minimum securityLevel to allow access to the | ||||
| data. | ||||
| TMSM is an enhancement for the SNMPv3 privacy and authentication | ||||
| provisions, but it is not a significant improvement for the | ||||
| authorization needs of SNMPv3. TMSM provides all the model- | ||||
| independent parameters for the isAccessAllowed() primitive [RFC3411]. | ||||
| TMSM does not specify how the securityModel and securityName could be | ||||
| dynamically mapped to a VACM-style groupName. The mapping of | ||||
| (securityModel, securityName) to a groupName is a VACM-specific | ||||
| mechanism for naming an access control policy, and for tying the | ||||
| named policy to the addressing capabilities of the data modeling | ||||
| language (e.g. SMIv2), the operations supported, and other factors. | ||||
| Providing a binding outside the Access Control subsystem might create | ||||
| dependencies that could make it harder to develop alternate models of | ||||
| access control, such as one built on UNIX groups, Windows domains, | ||||
| XML hierarchies, or task-based controls. The preferred approach is | ||||
| to pass the model-independent security parameters via the | ||||
| isAccessAllowed() ASI, and perform the mapping within the access | ||||
| control model. | ||||
| To provide support for protocols which simultaneously send | ||||
| information for authentication and authorization, such as RADIUS, | ||||
| model-specific authorization information MAY be cached or otherwise | ||||
| made available to the access control subsystem, e.g. via a MIB table | ||||
| similar to the vacmSecurityToGroupTable, so the access control | ||||
| subsystem can create an approrpiate binding between the model- | ||||
| independent securityModel and securityName and a model-specific | ||||
| access control policy. This may be highly undesirable, however, if | ||||
| it creates a dependency between a security model and an access | ||||
| control model, just as it is undesirable that the TMSM approach | ||||
| creates a dependency between a TMSP and an MPSP. | ||||
| 4. Integration with the SNMPv3 message format | ||||
| TMSM proposals can use the SNMPv3 message format, defined in RFC3412, | ||||
| section 6. This seection discusses how the fields could be reused. | ||||
| 4.1 msgVersion | 4.1 msgVersion | |||
| For proposals that reuse the SNMPv3 message format, this field should | For proposals that reuse the SNMPv3 message format, this field should | |||
| contain the value 3. | contain the value 3. | |||
| 4.2 msgGlobalData | 4.2 msgGlobalData | |||
| msgID and msgMaxSize are used identically for the TMSM models as for | msgID and msgMaxSize are used identically for the TMSM models as for | |||
| the USM model. | the USM model. | |||
| msgSecurityModel should be set to a value from the SnmpSecurityModel | msgSecurityModel should be set to a value from the SnmpSecurityModel | |||
| enumeration [RFC3410] to identify the specific TMSM model. | enumeration [RFC3411] to identify the specific TMSM model. Each | |||
| standards-track TMSM model should have an enumeration assigned by | ||||
| IANA. Each enterprise-specific security model should have an | ||||
| enumeration assigned following instructions in the description of the | ||||
| SnmpSecurityModel TEXTUAL-CONVENTION from RFC3411. | ||||
| msgSecurityParameters is used identically for the TMSM models as for | msgSecurityParameters would carry security information required for | |||
| the USM model. | message security processing. It is unclear whether this field would | |||
| be useful or what parameters would be carried to support security, | ||||
| since message security is provided by an external process, and | ||||
| msgSecurityParameters are not used by the access control subsystem. | ||||
| RFC3412 defines two primitives, generateRequestMsg() and | ||||
| processIncomingMsg() which require the specification of an | ||||
| authoritative SNMP entity. [todo] We need to discuss what the meaning | ||||
| of authoritative would be in a TMSM environment, whether the specific | ||||
| services provided in USM security from msgSecurityParameters still | ||||
| are needed, and how the Message Processing model provides this | ||||
| information to the security model via generateRequestMsg() and | ||||
| processIncomingMsg() primitives. RFC3412 specifies that "The data in | ||||
| the msgSecurityParameters field is used exclusively by the Security | ||||
| Model, and the contents and format of the data is defined by the | ||||
| Security Model. This OCTET STRING is not interpreted by the v3MP, | ||||
| but is passed to the local implementation of the Security Model | ||||
| indicated by the msgSecurityModel field in the message." | ||||
| msgFlags have the same values for the TMSM models as for the USM | msgFlags have the same values for the TMSM models as for the USM | |||
| model. "The authFlag and privFlag fields indicate the securityLevel | model. "The authFlag and privFlag fields indicate the securityLevel | |||
| that was applied to the message before it was sent on the wire." | that was applied to the message before it was sent on the wire." | |||
| 4.3 securityLevel and msgFlags | 4.3 securityLevel and msgFlags | |||
| For an outgoing message, msgFlags is the requested security for the | For an outgoing message, msgFlags is the requested security for the | |||
| message; if a TMSM cannot provide the requested securityLevel, the | message; if a TMSM cannot provide the requested securityLevel, the | |||
| model MUST describe a standard behavior that is followed for that | model MUST describe a standard behavior that is followed for that | |||
| situation. If the TMSM cannot provide at least the requested level | situation. If the TMSM cannot provide at least the requested level | |||
| of security, the TMSM MUST discard the request and SHOULD notify the | of security, the TMSM MUST discard the request and SHOULD notify the | |||
| message processing model that the request failed. [dbh: how is yet | message processing model that the request failed. [dbh: how is yet to | |||
| to be determined, and may be model-specific or | be determined, and may be model-specific or implementation-specific.] | |||
| implementation-specific.] | ||||
| For an outgoing message, if the TMSM is able to provide stronger | For an outgoing message, if the TMSM is able to provide stronger | |||
| than requested security, that may be acceptable. The transport layer | than requested security, that may be acceptable. The transport layer | |||
| protocol would need to indicate to the receiver what security has | protocol would need to indicate to the receiver what security has | |||
| been applied to the actual message. To avoid the need to mess with | been applied to the actual message. To avoid the need to mess with | |||
| the ASN.1 encoding, the SNMPv3 message carries the requested | the ASN.1 encoding, the SNMPv3 message carries the requested | |||
| msgFlags, not the actual securityLevel applied to the message. If a | msgFlags, not the actual securityLevel applied to the message. If a | |||
| message format other than SNMPv3 is used, then the new message may | message format other than SNMPv3 is used, then the new message may | |||
| carry the more accurate securityLevel in the SNMP message. | carry the more accurate securityLevel in the SNMP message. | |||
| For an incoming message, the receiving TMSM knows what must be done | For an incoming message, the receiving TMSM knows what must be done | |||
| to process the message based on the transport layer mechanisms. If | to process the message based on the transport layer mechanisms. If | |||
| the underlying transport security mechanisms for the receiver cannot | the underlying transport security mechanisms for the receiver cannot | |||
| provide the matching securityLevel, then the message should follow | provide the matching securityLevel, then the message should follow | |||
| the standard behaviors for the transport security mechanism, or be | the standard behaviors for the transport security mechanism, or be | |||
| discarded silently. | discarded silently. | |||
| Part of the responsibility of the TMSM is to ensure that the actual | Part of the responsibility of the TMSM is to ensure that the actual | |||
| security provided by the underlying transport layer security | security provided by the underlying transport layer security | |||
| mechanisms is configured to meet or exceed the securityLevel required | mechanisms is configured to meet or exceed the securityLevel required | |||
| by the msgFlags in the SNMP message. When the MP portion of the | by the msgFlags in the SNMP message. When the MPSP processes the | |||
| security model processes the incoming message, it should compare the | incoming message, it should compare the msgFlags field to the | |||
| msgFlags field to the securityLevel actually provided for the message | securityLevel actually provided for the message by the transport | |||
| by the transport layer security. If they differ, the MP portion of | layer security. If they differ, the MPSP should determine whether | |||
| the security model should determine whether the changed securityLevel | the changed securityLevel is acceptable. If not, it should discard | |||
| is acceptable. If not, it should discard the message. Depending on | the message. Depending on the model, the MPSP may issue a reportPDU | |||
| the model, the MP portion may issue a reportPDU with the XXXXXXX | with the XXXXXXX model-specific counter. | |||
| model-specific counter. | ||||
| Questions about msgFlags: | ||||
| Is the securityLevel looked at before the security model gets to | ||||
| it.? No. the security model has two parts - the TM portion and | ||||
| the MP portion. The securityLevel is looked at by the TM portion | ||||
| before it gets to the MP piece, but both are parts of the same | ||||
| security model. | ||||
| Would it be legal for the security model to ignore the incoming | ||||
| flags and change them before passing them back up? If it changed | ||||
| them, it wouldn't necessarily be ignoring them. The TM portion | ||||
| should pass both an actual securityLevel applied to the message, | ||||
| and the msgFlags in the SNMP message to the MP piece for | ||||
| consideration related to access control.. The msgFlags parameter | ||||
| in the SNMP message is never changed when processing an incoming | ||||
| message. | ||||
| Would it be legal for the security model to ignore the outgoing | ||||
| flags and change them before passing them out? no; because the two | ||||
| portions are parts of the same security model, either the MP piece | ||||
| should recognize that a securityLevel cannot be met or exceeded, | ||||
| and reject the message during the message-build phase, or the TM | ||||
| piece should determine if it is possible to honor the request. It | ||||
| is possible to apply an increased securityLevel for an outgoing | ||||
| request, but the procedure to do so must be spelled out clearly in | ||||
| the model design. | ||||
| The security model would need to (MUST) check the incoming | ||||
| security level flags to make sure they matched the TLS/whatever | ||||
| session setup and if not drop the message. Yes, mostly. | ||||
| Depending on the model, either the TM portion or the MP portion | ||||
| MUST verify that the actual processing met or exceeded the | ||||
| securityLevel requested by the msgFlags and that it is acceptable | ||||
| to the specific-model processing (or operator configuration) for | ||||
| this different securityLevel to be applied to the message. This | ||||
| is also true (especially) for outgoing messages. | ||||
| You might legally be able to have a authNoPriv message that is | ||||
| actually encrypted via the transport (but not the other way around | ||||
| of course). Yes, a TMSM could define that as the behavior (or | ||||
| permit an operator to specify that is acceptable behavior) when a | ||||
| requested securityLevel cannot be provided, but a stronger | ||||
| securityLevel can be provided. | ||||
| See the Appendix A appendix for further discussion of the msgFlags | ||||
| field ve | ||||
| rsus the actual securityLevel provided. [dbh: it may be a | ||||
| good thing to merge the Question and Answer with the appendix, either | ||||
| here or there.] | ||||
| 4.4 The tmStateReference for Passing Security Parameters | 4.4 The tmStateReference for Passing Security Parameters | |||
| A tmStateReference is used to pass data between the TM portion and | A tmStateReference is used to pass data between the TMSP and the | |||
| the MP portion of the security model, similar to the | MPSP, similar to the securityStateReference described in RFC3412. | |||
| securityStateReference described in RFC3412. This can be envisioned | This can be envisioned as being appended to the ASIs between the TM | |||
| as being appended to the ASIs between the TM and the MP or as being | and the MP or as being passed in an encapsulating header. | |||
| passed in an encapsulating header. | ||||
| The TM portion of the security model may provide only some aspects of | The TMSP may provide only some aspects of security, and leave some | |||
| security, and leave some aspects to the MP portion of the model. | aspects to the MPSP. tmStateReference should be used to pass any | |||
| tmStateReference should be used to pass any parameters, in a model- | parameters, in a model- and mechanism-specific format, that will be | |||
| and mechanism-specific format, that will be needed to coordinate the | needed to coordinate the activities of the TMSP and MPSP, and the | |||
| activities of the TM and MP portions of the model, and the parameters | parameters subsequently passed in securityStateReference . For | |||
| subsequently passed in securityStateReference . For example, the TM | example, the TMSP may provide privacy and data integrity and | |||
| portion may provide privacy and data integrity and authentication and | authentication and authorization policy retrievals, or some subset of | |||
| authorization policy retrievals, or some subset of these features, | these features, depending on the features available in the transport | |||
| depending on the features available in the transport mechanisms. A | mechanisms. A field in tmStateReference should identify which | |||
| field in tmStateReference should identify which services were | services were provided for each received message by the TMSP, the | |||
| provided for each received message by the TM portion, the | ||||
| securityLevel applied to the received message, the model-specific | securityLevel applied to the received message, the model-specific | |||
| security identity, the session identifier for session based transport | security identity, the session identifier for session based transport | |||
| security, and so on. | security, and so on. | |||
| 4.5 securityStateReference Cached Security Data | 4.5 securityStateReference Cached Security Data | |||
| From RFC3411: "For each message received, the Security Model caches | From RFC3411: "For each message received, the Security Model caches | |||
| the state information such that a Response message can be generated | the state information such that a Response message can be generated | |||
| using the same security information, even if the Local Configuration | using the same security information, even if the Local Configuration | |||
| Datastore is altered between the time of the incoming request and the | Datastore is altered between the time of the incoming request and the | |||
| outgoing response. | outgoing response. | |||
| A Message Processing Model has the responsibility for explicitly | A Message Processing Model has the responsibility for explicitly | |||
| releasing the cached data if such data is no longer needed. To | releasing the cached data if such data is no longer needed. To | |||
| enable this, an abstract securityStateReference data element is | enable this, an abstract securityStateReference data element is | |||
| passed from the Security Model to the Message Processing Model. The | passed from the Security Model to the Message Processing Model. The | |||
| cached security data may be implicitly released via the generation of | cached security data may be implicitly released via the generation of | |||
| a response, or explicitly released by using the stateRelease | a response, or explicitly released by using the stateRelease | |||
| primitive, as described in section 4.5.1." | primitive, as described in RFC3411 section 4.5.1." | |||
| To differentiate what information needs to be provided to the MP | For the TMSM approach, the TMSP may need to provide information to | |||
| portion by the TM portion, and vice-versa, this document will | the message processing model, such as the security-model-independent | |||
| differentiate the tmStateReference from the securityStateReference. | securityName, securityLevel, and securityModel parameters, and for | |||
| An implementation MAY use one cache and one reference to serve both | responses, the messaging model may need to pass the parameters back | |||
| to the TMSP. To differentiate what information needs to be provided | ||||
| to the message processing model by the TMSP, and vice-versa, this | ||||
| document will differentiate the tmStateReference provide by the TMSP | ||||
| from the securityStateReference provided by the MPSP. An | ||||
| implementation MAY use one cache and one reference to serve both | ||||
| functions, but an implementor must be aware of the cache-release | functions, but an implementor must be aware of the cache-release | |||
| issues to prevent the cache from being released before the TM portion | issues to prevent the cache from being released before the transport | |||
| has had an opportunity to extract the information it needs. | mapping has had an opportunity to extract the information it needs. | |||
| 4.5.1 Prepare an Outgoing SNMP Message | 4.5.1 Prepare an Outgoing SNMP Message | |||
| According to RFC3412, section 7.1, the SNMPv3 message processing | Following RFC3412, section 7.1, the SNMPv3 message processing model | |||
| model calls the MP portion of the TM security model using the | uses the generateResponseMsg() or generateRequestMsg() primitives, to | |||
| generateResponseMsg() or generateRequestMsg(). The MP portion of the | call the MPSP. The message processing model, or the MPSP it calls, | |||
| model may need to put information into the tmStateReference cache for | may need to put information into the tmStateReference cache for use | |||
| use by the TM portion of the model, such as: | by the TMSP, such as: | |||
| tmSecurityStateReference - the unique identifier for the cached | tmSecurityStateReference - the unique identifier for the cached | |||
| information | information | |||
| tmTransportDomain | tmTransportDomain | |||
| tmTransportAddress | tmTransportAddress | |||
| tmSecurityModel - an indicator of which mechanisms to use | tmSecurityModel - an indicator of which mechanisms to use | |||
| tmSecurityName - a model-specific identifier of the security | tmSecurityName - a model-specific identifier of the security | |||
| principal | principal | |||
| tmSecurityLevel - an indicator of which security services are | tmSecurityLevel - an indicator of which security services are | |||
| requested | requested | |||
| and may contain additional information such as | and may contain additional information such as | |||
| tmSessionID | tmSessionID | |||
| tmSessionKey | tmSessionKey | |||
| tmSessionMsgID | tmSessionMsgID | |||
| According to RFC3411, section 4.1.1, the application provides the | ||||
| transportDomain and transportAddress to the PDU dispatcher via the | ||||
| sendPDU() primitive. If we permit multiple sessions per | ||||
| transportAddress, then we would need to define how session | ||||
| identifiers get passed from the application to the PDU dispatcher | ||||
| (and then to the MP model). | ||||
| The SNMP over TCP Transport Mapping document [RFC3430] says that TCP | ||||
| connections can be recreated dynamically or kept for future use and | ||||
| actually leaves all that to the transport mapping. | ||||
| [todo] we might define a new transportDomain and transportAddress, | ||||
| which includes the address and session identifier. For situations | ||||
| where a session has not yet been established, we could pass a 0x0000 | ||||
| session identifier (or whatever) to indicate that a session should be | ||||
| established. | ||||
| We might have a MIB module that records the session information for | ||||
| subsequent use by the applications and other subsytems, or it might | ||||
| be passed in the tmStateReference cache. For notifications, I assume | ||||
| the SNMPv3 notification tables would be a place to find the address, | ||||
| but I'm not sure how to identify the presumably-dynamic session | ||||
| identifiers. The MIB module could identify whether the session was | ||||
| initiated by the remote engine or initiated by the current engine, | ||||
| and possibly assigned a purpose (incoming request/response or | ||||
| outgoing notifications). First we need to decide whether to handle | ||||
| notifications and requests in one or two (or more) sessions, which | ||||
| might depend on the transport protocol we choose (the same problem | ||||
| netconf faced). | ||||
| 4.5.2 Prepare Data Elements from an Incoming SNMP Message | 4.5.2 Prepare Data Elements from an Incoming SNMP Message | |||
| For an incoming message, the TM portion of a model will need to put | For an incoming message, the TMSP will need to put information from | |||
| information from the transport mechanisms used into the | the transport mechanisms used into the tmStateReference so the MPSP | |||
| tmStateReference so the MP portion of the model can extract the | can extract the information and add it conceptually to the | |||
| information and add it conceptually to the securityStateReference. | securityStateReference. | |||
| The tmStateReference cache will likely contain at least the following | The tmStateReference cache will likely contain at least the following | |||
| information: | information: | |||
| tmStateReference - a unique identifier for the cached information | tmStateReference - a unique identifier for the cached information | |||
| tmSecurityStateReference - the unique identifier for the cached | tmSecurityStateReference - the unique identifier for the cached | |||
| information | information | |||
| tmTransportDomain | tmTransportDomain | |||
| tmTransportAddress | tmTransportAddress | |||
| tmSecurityModel - an indicator of which mechanisms to use | tmSecurityModel - an indicator of which mechanisms to use | |||
| tmSecurityName - a model-specific identifier of the security | tmSecurityName - a model-specific identifier of the security | |||
| skipping to change at page 13, line 11 ¶ | skipping to change at page 21, line 4 ¶ | |||
| tmAuthProtocol | tmAuthProtocol | |||
| tmPrivProtocol | tmPrivProtocol | |||
| and may contain additional information such as | and may contain additional information such as | |||
| tmSessionID | tmSessionID | |||
| tmSessionKey | tmSessionKey | |||
| tmSessionMsgID | tmSessionMsgID | |||
| 4.6 Notifications | 4.6 Notifications | |||
| For notifications, if the cache has been released and then session | For notifications, if the cache has been released and then session | |||
| closed, then the MP portion of the security model will request the TM | closed, then the MPSP will request the TMSP to establish a session, | |||
| portion of the security model to establish a session, populate the | populate the cache, and pass the securityStateReference to the MPSP. | |||
| cache, and pass the securityStateReference to the MP portion of the | ||||
| security model. | ||||
| TODO: We need to determine what state needs to be saved here. | [todo] We need to determine what state needs to be saved here. | |||
| 5. Transport Mapping Security Model Samples | 5. Transport Mapping Security Model Samples | |||
| There are a number of standard protocols that could be proposed as | ||||
| possible solutions within the TMSM framework. Some factors should be | ||||
| considered when selecting a protocol for use within this framework. | ||||
| Using a protocol in a manner for which is was not designed has | ||||
| numerous problems. The advertised security characteristics of a | ||||
| protocol may depend on its being used as designed; when used in other | ||||
| ways, it may not deliver the expected security characteristics. It | ||||
| is recommended that any proposed model include a discussion of the | ||||
| applicability statement of the protocols to be used. | ||||
| 5.1 TLS/TCP Transport Mapping Security Model | 5.1 TLS/TCP Transport Mapping Security Model | |||
| SNMP supports multiple transports. The preferred transport for SNMP | SNMP supports multiple transports. The preferred transport for SNMP | |||
| over IP is UDP [RFC3417]. An experimental transport for SNMP over | over IP is UDP [RFC3417]. An experimental transport for SNMP over | |||
| TCP is defined in [RFC3430]. | TCP is defined in [RFC3430]. | |||
| TLS/TCP will create an association between the TMSM of one SNMP | TLS/TCP will create an association between the TMSM of one SNMP | |||
| entity and the TMSM of another SNMP entity. The created "tunnel" may | entity and the TMSM of another SNMP entity. The created "tunnel" may | |||
| provide encryption and data integrity. Both encryption and data | provide encryption and data integrity. Both encryption and data | |||
| integrity are optional features in TLS. The TLS TM portion of the | integrity are optional features in TLS. The TLS TMSP MUST provide | |||
| security model MUST provide authentication if auth is requested in | authentication if auth is requested in the securityLevel of the SNMP | |||
| the securityLevel of the SNMP message request (RFC3412 4.1.1). The | message request (RFC3412 4.1.1). The TLS TM-security model MUST | |||
| TLS TM-security model MUST specify that the messages be encrypted if | specify that the messages be encrypted if priv is requested in the | |||
| priv is requested in the securityLevel parameter of the SNMP message | securityLevel parameter of the SNMP message request (RFC3412 4.1.1). | |||
| request (RFC3412 4.1.1). | ||||
| The TLS TM-security model SHOULD use the TLS Handshake Protocol with | The TLS TM-security model MUST support the TLS Handshake Protocol | |||
| mutual authentication. | with mutual authentication. | |||
| 5.1.1 tmStateReference for TLS | 5.1.1 tmStateReference for TLS | |||
| Upon establishment of a TLS session, the TM-security model will cache | Upon establishment of a TLS session, the TMSP will cache the state | |||
| the state information. A tmStateReference that is unique within the | information. A unique tmStateReference will be passed to the | |||
| SNMP entity will be stored in the cache, and passed to the | corresponding MPSP. The MPSP will pass the securityStateReference to | |||
| corresponding MP portion of the security model, to enable lookup. | the Message Processing Model for memory management. | |||
| The MP security model will pass the securityStateReference to the | ||||
| Message Processing Model for memory management. | ||||
| The tmStateReference cache: | The tmStateReference cache: | |||
| tmStateReference | tmStateReference | |||
| tmSecurityStateReference | tmSecurityStateReference | |||
| tmTransportDomain = TCP/IPv4 | tmTransportDomain = TCP/IPv4 | |||
| tmTransportAddress = x.x.x.x:y | tmTransportAddress = x.x.x.x:y | |||
| tmSecurityModel - TLS TMSM | tmSecurityModel - TLS TMSM | |||
| tmSecurityName = "dbharrington" | tmSecurityName = "dbharrington" | |||
| tmSecurityLevel = "authPriv" | tmSecurityLevel = "authPriv" | |||
| tmAuthProtocol = Handshake MD5 | tmAuthProtocol = Handshake MD5 | |||
| tmPrivProtocol = Handshake DES | tmPrivProtocol = Handshake DES | |||
| tmSessionID = Handshake session identifier | tmSessionID = Handshake session identifier | |||
| tmSessionKey = Handshake peer certificate | tmSessionKey = Handshake peer certificate | |||
| tmSessionMasterSecret = master secret | tmSessionMasterSecret = master secret | |||
| tmSessionParameters = compression method, cipher spec, | tmSessionParameters = compression method, cipher spec, is- | |||
| is-resumable | resumable | |||
| 5.1.2 MP portion for TLS TM-Security Model | 5.1.2 MPSP for TLS TM-Security Model | |||
| messageProcessingModel = SNMPv3 | messageProcessingModel = SNMPv3 | |||
| securityModel = TLS TMSM | securityModel = TLS TMSM | |||
| securityName = tmSecurityName | securityName = tmSecurityName | |||
| securityLevel = msgSecurityLevel | securityLevel = msgSecurityLevel | |||
| 5.1.3 MIB Module for TLS Security | 5.1.3 MIB Module for TLS Security | |||
| Each security model should use its own MIB module, rather than | Each security model should use its own MIB module, rather than | |||
| utilizing the USM MIB, to eliminate dependencies on a model that | utilizing the USM MIB, to eliminate dependencies on a model that | |||
| could be replaced some day. See RFC3411 section 4.1.1. | could be replaced some day. See RFC3411 section 4.1.1. | |||
| The TLS MIB module needs to provide the mapping from model-specific | The TLS MIB module needs to provide the mapping from model-specific | |||
| identity to a model independent securityName. | identity to a model independent securityName. | |||
| TO | [todo] Module needs to be worked out once things become stable... | |||
| DO: Module needs to be worked out once things become stable... | ||||
| 5.2 DTLS/UDP Transport Mapping Security Model | 5.2 DTLS/UDP Transport Mapping Security Model | |||
| DTLS has been proposed as a UDP-based TLS. Transport Layer Security | DTLS has been proposed as a UDP-based TLS. Transport Layer Security | |||
| (TLS) [RFC2246] traditionally requires a connection-oriented | (TLS) [RFC2246] traditionally requires a connection-oriented | |||
| transport and is usually used over TCP. Datagram Transport Layer | transport and is usually used over TCP. Datagram Transport Layer | |||
| Security (DTLS) [DTLS] provides security services equivalent to TLS | Security (DTLS) [DTLS] provides security services equivalent to TLS | |||
| for connection-less transports such as UDP. | for connection-less transports such as UDP. | |||
| DTLS provides all the security services needed from an SNMP | DTLS provides all the security services needed from an SNMP | |||
| architectural point of view. Although it is possible to derive a | architectural point of view. Although it is possible to derive a | |||
| securityName from the public key certificates (e.g. the subject | securityName from the public key certificates (e.g. the subject | |||
| field), this approach requires to install certificates on agents and | field), this approach requires installing certificates on all SNMP | |||
| as well as managers, leading to a certificate management problem | entities, leading to a certificate management problem which does not | |||
| which again does not integrate well with established AAA systems. | integrate well with established AAA systems. [todo] why does this not | |||
| integrate well with existing AAA systems? | ||||
| Another option is to run an authentication exchange which is | Another option is to run an authentication exchange which is | |||
| integrated with TLS, such as Secure Remote Password with TLS | integrated with TLS, such as Secure Remote Password with TLS [SRP- | |||
| TLS]. A similar option would be to use Kerberos authentication with | ||||
| [SRP-TLS]. A similar option would be to use Kerberos authentication | TLS as defined in [RFC2712]. | |||
| with TLS as defined in [RFC2712]. | ||||
| It is important to stress that the authentication exchange must be | It is important to stress that the authentication exchange must be | |||
| integrated into the TLS mechanism to prevent man-in-the-middle | integrated into the TLS mechanism to prevent man-in-the-middle | |||
| attacks. While SASL [RFC2222] is often used on top of a TLS | attacks. While SASL [RFC2222] is often used on top of a TLS | |||
| encrypted channel to authenticate users, this choice seems to be | encrypted channel to authenticate users, this choice seems to be | |||
| problematic until the mechanism to cryptographically bind SASL into | problematic until the mechanism to cryptographically bind SASL into | |||
| the TLS mechanism has been defined. | the TLS mechanism has been defined. | |||
| DTLS will create an association between the TMSM of one SNMP entity | DTLS will create an association between the TMSM of one SNMP entity | |||
| and the TMSM of another SNMP entity. The created "tunnel" may | and the TMSM of another SNMP entity. The created "tunnel" may | |||
| provide encryption and data integrity. Both encryption and data | provide encryption and data integrity. Both encryption and data | |||
| integrity are optional features in DTLS. The DTLS TM-security model | integrity are optional features in DTLS. The DTLS TM-security model | |||
| MUST provide authentication if auth is requested in the securityLevel | MUST provide authentication if auth is requested in the securityLevel | |||
| of the SNMP message request (RFC3412 4.1.1). The TLS TM-security | of the SNMP message request (RFC3412 4.1.1). The TLS TM-security | |||
| model MUST specify that the messages be encrypted if priv is | model MUST specify that the messages be encrypted if priv is | |||
| requested in the securityLevel parameter of the SNMP message request | requested in the securityLevel parameter of the SNMP message request | |||
| (RFC3412 4.1.1). | (RFC3412 4.1.1). | |||
| The DTLS TM-security model SHOULD use the TLS Handshake Protocol with | The DTLS TM-security model MUST support the TLS Handshake Protocol | |||
| mutual authentication. | with mutual authentication. | |||
| 5.2.1 tmStateReference for DTLS | 5.2.1 tmStateReference for DTLS | |||
| Upon establishment of a DTLS session, the TM-security model will | Upon establishment of a DTLS session, the TMSP will cache the state | |||
| cache the state information. A tmStateReference that is unique | information. A unique tmStateReference will be passed to the | |||
| within the SNMP entity will be stored in the cache, and passed to the | corresponding MPSP. The MPSP will pass the securityStateReference to | |||
| corresponding MP portion of the security model, to enable lookup. | the Message Processing Model for memory management. | |||
| The MP security model will pass the securityStateReference to the | ||||
| Message Processing Model for memory management. | ||||
| The tmStateReference cache: | The tmStateReference cache: | |||
| tmStateReference | tmStateReference | |||
| tmSecurityStateReference | tmSecurityStateReference | |||
| tmTransportDomain = UDP/IPv4 | tmTransportDomain = UDP/IPv4 | |||
| tmTransportAddress = x.x.x.x:y | tmTransportAddress = x.x.x.x:y | |||
| tmSecurityModel - DTLS TMSM | tmSecurityModel - DTLS TMSM | |||
| tmSecurityName = "dbharrington" | tmSecurityName = "dbharrington" | |||
| tmSecurityLevel = "authPriv" | tmSecurityLevel = "authPriv" | |||
| tmAuthProtocol = Handshake MD5 | tmAuthProtocol = Handshake MD5 | |||
| tmPrivProtocol = Handshake DES | tmPrivProtocol = Handshake DES | |||
| tmSessionID = Handshake session identifier | tmSessionID = Handshake session identifier | |||
| tmSessionKey = Handshake peer certificate | tmSessionKey = Handshake peer certificate | |||
| tmSessionMasterSecret = master secret | tmSessionMasterSecret = master secret | |||
| tmSessionParameters = compression method, cipher spec, | tmSessionParameters = compression method, cipher spec, is- | |||
| is-resumable | resumable | |||
| tmSessionSequence = epoch, sequence | tmSessionSequence = epoch, sequence | |||
| TODO: | [todo] | |||
| Need to discuss to what extent DTLS is a reasonable choice for | Need to discuss to what extent DTLS is a reasonable choice for | |||
| SNMP interactions. | SNMP interactions. | |||
| What is the status of the work to cryptographically bind SASL to | What is the status of the work to cryptographically bind SASL to | |||
| DTLS? | DTLS? | |||
| More details need to be worked out... | More details need to be worked out... | |||
| 5.3 SASL Transport Mapping Security Model | 5.3 SASL Transport Mapping Security Model | |||
| The Simple Authentication and Security Layer (SASL) [RFC2222] | The Simple Authentication and Security Layer (SASL) [RFC2222] | |||
| provides a hook for authentication and security mechanisms to be used | provides a hook for authentication and security mechanisms to be used | |||
| skipping to change at page 16, line 36 ¶ | skipping to change at page 24, line 36 ¶ | |||
| authentication, if msgFlags is set to authNoPriv, the qop-value | authentication, if msgFlags is set to authNoPriv, the qop-value | |||
| should be set to auth-int; if msgFlags is authPriv, then qop-value | should be set to auth-int; if msgFlags is authPriv, then qop-value | |||
| should be auth-conf. | should be auth-conf. | |||
| Realm is optional, but can be utilized by the securityModel if | Realm is optional, but can be utilized by the securityModel if | |||
| desired. SNMP does not use this value, but a TMSM could map the | desired. SNMP does not use this value, but a TMSM could map the | |||
| realm into SNMP processing in various ways. For example, realm and | realm into SNMP processing in various ways. For example, realm and | |||
| username could be concatenated to be the securityName value, e.g. | username could be concatenated to be the securityName value, e.g. | |||
| helpdesk::username", or the realm could be used to specify a | helpdesk::username", or the realm could be used to specify a | |||
| groupname to use in the VACM access control. This would be similar | groupname to use in the VACM access control. This would be similar | |||
| to the EUSM's approach to having the securityName-to-group mapping | to having the securityName-to-group mapping done by the external AAA | |||
| done by the external AAA server. | server. | |||
| 5.3.1 tmStateReference for SASL DIGEST-MD5 | 5.3.1 tmStateReference for SASL DIGEST-MD5 | |||
| The tmStateReference cache: | The tmStateReference cache: | |||
| tmStateReference | tmStateReference | |||
| tmSecurityStateReference | tmSecurityStateReference | |||
| tmTransportDomain = TCP/IPv4 | tmTransportDomain = TCP/IPv4 | |||
| tmTransportAddress = x.x.x.x:y | tmTransportAddress = x.x.x.x:y | |||
| tmSecurityModel - SASL TMSM | tmSecurityModel - SASL TMSM | |||
| tmSecurityName = username | tmSecurityName = username | |||
| tmSecurityLevel = [auth-conf] | tmSecurityLevel = [auth-conf] | |||
| tmAuthProtocol = md5-sess | tmAuthProtocol = md5-sess | |||
| tmPrivProtocol = 3des | tmPrivProtocol = 3des | |||
| tmServicesProvided = | tmServicesProvided = | |||
| mutual authentication, | mutual authentication, | |||
| reauthentication, | reauthentication, | |||
| integrity, | integrity, | |||
| encryption | encryption | |||
| tmParameters = "realm=helpdesk, serv-type=SNMP | tmParameters = "realm=helpdesk, serv-type=SNMP | |||
| 6. Acknowledgments | 6. Security Considerations | |||
| This document describes an architectural approach and multiple | ||||
| proposed configurations that would permit SNMPv3 to utilize transport | ||||
| layer security services. Each section containing a proposal should | ||||
| discuss the security considerations of that approach. [todo] expand | ||||
| as needed. | ||||
| Perfect forward secrecy guarantees that compromise of long term | ||||
| secret keys does not result in disclosure of past session keys. | ||||
| It is considered desirable by some industry segements that TMSM | ||||
| security models should utilize transport layer security that | ||||
| addresses perfect forward secrecy at least for encryption keys. | ||||
| 7. Acknowledgments | ||||
| The authors would like to thank Ira McDonald, Ken Hornstein, and | The authors would like to thank Ira McDonald, Ken Hornstein, and | |||
| Nagendra Modadugu for their comments and suggestions. | Nagendra Modadugu for their comments and suggestions. | |||
| 7. References | 8. References | |||
| 7.1 Normative References | 8.1 Normative References | |||
| [RFC3411] Harrington, D., Presuhn, R. and B. Wijnen, "An | [RFC3411] Harrington, D., Presuhn, R., and B. Wijnen, "An | |||
| Architecture for Describing Simple Network Management | Architecture for Describing Simple Network Management | |||
| Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, | Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, | |||
| December 2002. | December 2002. | |||
| [RFC3412] Case, J., Harrington, D., Presuhn, R. and B. Wijnen, | [RFC3412] Case, J., Harrington, D., Presuhn, R., and B. Wijnen, | |||
| "Message processing and Dispatching for SNMP", STD 62, RFC | "Message processing and Dispatching for SNMP", STD 62, | |||
| 3412, December 2002. | RFC 3412, December 2002. | |||
| [RFC3414] Blumenthal, U. and B. Wijnen, "User-based Security Model | [RFC3414] Blumenthal, U. and B. Wijnen, "User-based Security Model | |||
| (USM) for version 3 of the Simple Network Management | (USM) for version 3 of the Simple Network Management | |||
| Protocol (SNMPv3)", STD 62, RFC 3414, December 2002. | Protocol (SNMPv3)", STD 62, RFC 3414, December 2002. | |||
| [RFC3417] Presuhn (Editor), R., "Transport Mappings for the Simple | [RFC3417] Presuhn (Editor), R., "Transport Mappings for the Simple | |||
| Network Management Protocol (SNMP)", STD 62, RFC 3417, | Network Management Protocol (SNMP)", STD 62, RFC 3417, | |||
| December 2002. | December 2002. | |||
| [RFC3430] Schoenwaelder, J., "Simple Network Management Protocol | [RFC3430] Schoenwaelder, J., "Simple Network Management Protocol | |||
| skipping to change at page 18, line 5 ¶ | skipping to change at page 26, line 21 ¶ | |||
| [RFC1510] Kohl, J. and B. Neuman, "The Kerberos Network | [RFC1510] Kohl, J. and B. Neuman, "The Kerberos Network | |||
| Authentication Service (V5)", RFC 1510, September 1993. | Authentication Service (V5)", RFC 1510, September 1993. | |||
| [RFC2222] Myers, J., "Simple Authentication and Security Layer | [RFC2222] Myers, J., "Simple Authentication and Security Layer | |||
| (SASL)", STD 62, RFC RFC2222, October 1997. | (SASL)", STD 62, RFC RFC2222, October 1997. | |||
| [DTLS] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | [DTLS] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | |||
| Security", ID draft-rescorla-dtls-01.txt, July 2004. | Security", ID draft-rescorla-dtls-01.txt, July 2004. | |||
| 7.2 Informative References | 8.2 Informative References | |||
| [RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart, | [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, | |||
| "Introduction and Applicability Statements for | "Introduction and Applicability Statements for Internet- | |||
| Internet-Standard Management Framework", RFC 3410, | Standard Management Framework", RFC 3410, December 2002. | |||
| December 2002. | ||||
| [RFC2712] Medvinsky, A. and M. Hur, "Addition of Kerberos Cipher | [RFC2712] Medvinsky, A. and M. Hur, "Addition of Kerberos Cipher | |||
| Suites to Transport Layer Security (TLS)", RFC 2712, | Suites to Transport Layer Security (TLS)", RFC 2712, | |||
| October 1999. | October 1999. | |||
| [SRP-TLS] Taylor, D., Wu, T., Mavroyanopoulos, M. and T. Perrin, | [SRP-TLS] Taylor, D., Wu, T., Mavroyanopoulos, M., and T. Perrin, | |||
| "Using SRP for TLS Authentication", | ||||
| "Using SRP for TLS Authentication", ID | ID draft-ietf-tls-srp-08.txt, August 2004. | |||
| draft-ietf-tls-srp-08.txt, August 2004. | ||||
| [EUSM] Narayan, D., McCloghrie, K., Salowey, J. and C. Elliot, | [EUSM] Narayan, D., McCloghrie, K., Salowey, J., and C. Elliot, | |||
| "External USM for SNMPv3", ID | "External USM for SNMPv3", | |||
| draft-kaushik-snmp-external-usm-00.txt, July 2004. | ID draft-kaushik-snmp-external-usm-00.txt, July 2004. | |||
| [NETCONF] Enns, R., "NETCONF Configuration Protocol", ID | [NETCONF] Enns, R., "NETCONF Configuration Protocol", | |||
| draft-ietf-netconf-prot-04.txt, October 2004. | ID draft-ietf-netconf-prot-04.txt, October 2004. | |||
| [SSHauth] Lonvick, C., "SSH Authentication Protocol", ID | [SSHauth] Lonvick, C., "SSH Authentication Protocol", | |||
| draft-ietf-secsh-userauth-21.txt, June 2004. | ID draft-ietf-secsh-userauth-21.txt, June 2004. | |||
| Authors' Addresses | Authors' Addresses | |||
| David Harrington | David Harrington | |||
| Independent | Independent | |||
| Harding Rd | Harding Rd | |||
| Portsmouth NH | Portsmouth NH | |||
| USA | USA | |||
| Phone: +1 603 436 8634 | Phone: +1 603 436 8634 | |||
| EMail: dbharrington@comcast.net | Email: dbharrington@comcast.net | |||
| Juergen Schoenwaelder | Juergen Schoenwaelder | |||
| International University Bremen | International 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 | |||
| Appendix A. Message security versus session security | Appendix A. Questions about msgFlags: | |||
| [todo] many of these questions can be resolved by deciding whether | ||||
| the TMSP or MPSP provides the service of comparing msgFlags (from | ||||
| inside the message) to actual capabilities of the transport layer | ||||
| security (external to the message). It may however be necessary to | ||||
| provide this service for two slightly different purposes depending on | ||||
| whether the message is outgoing (and may need to be checked by the | ||||
| TMSP when a new transport session might be created) or the message is | ||||
| incoming ( the capabilities of the transport layer session are | ||||
| already known, but msgFlags has not been unpacked yet at the TMSP, so | ||||
| the comparison must be done at the MPSP). Of course, we really only | ||||
| need to compare the authflag and the privflag, i.e. the | ||||
| securityLevel, so if we pass the securityLevel between the two | ||||
| stages, then they each have the info they need to do their respective | ||||
| comparisons. | ||||
| There have been a large number of questions about msgFlags in the | ||||
| TMSM approach, mostly concerning the msgFlags value and the actual | ||||
| security provided, and whether msgFlags can be used to initiate per- | ||||
| message or per-session security. | ||||
| A.1 msgFlags versus actual security | A.1 msgFlags versus actual security | |||
| Using IPSEC, SSH, or SSL/TLS to provide security services "below" the | Using IPSEC, SSH, or SSL/TLS to provide security services "below" the | |||
| SNMP message, the use of securityName and securityLevel will differ | SNMP message, the use of securityName and securityLevel will differ | |||
| from the USM/VACM approach to SNMP access control. VACM uses the | from the USM/VACM approach to SNMP access control. VACM uses the | |||
| "securityName" and the "securityLevel" to determine if access is | "securityName" and the "securityLevel" to determine if access is | |||
| allowed. With the SNMPv3 message and USM security model, both | allowed. With the SNMPv3 message and USM security model, both | |||
| securityLevel and securityName are contained in every SNMPv3 message. | securityLevel and securityName are contained in every SNMPv3 message. | |||
| Any proposal for a security model using IPSEC, SSH, or SSL/TLS needs | Any proposal for a security model using IPSEC, SSH, or SSL/TLS needs | |||
| to specify how this info is made available to the SNMPv3 message | to specify how this info is made available to the SNMPv3 message | |||
| processing, and how it is used. | processing, and how it is used. | |||
| One specific case to consider is the relationship between the | One specific case to consider is the relationship between the | |||
| msgFlags of an SNMPv3 message, and the actual services provided by | msgFlags of an SNMPv3 message, and the actual services provided by | |||
| the lower layer security. For example, if a session is set up with | the lower layer security. For example, if a session is set up with | |||
| encryption, is the priv bit always (or never) set in the msgFlags | encryption, is the priv bit always (or never) set in the msgFlags | |||
| field, and is the PDU never (or always) encrypted? Do msgFlags have | field, and is the PDU never (or always) encrypted? Do msgFlags have | |||
| to match the security services provided by the lower layer, or are | to match the security services provided by the lower layer, or are | |||
| the msgFlags ignored and the values from the lower layer used? | the msgFlags ignored and the values from the lower layer used? | |||
| A.2 Message security versus session security | Is the securityLevel looked at before the security model gets to | |||
| it.? No. the security model has two parts - the TMSP and the | ||||
| For SBSM, and for many TMSM models, securityName is specified during | MPSP. The securityLevel is looked at by the TMSP before it gets | |||
| session setup, and associated with the session identifier. Is it | to the MPSP, but both are parts of the same security model. | |||
| possible for the request (and notification) originator to specify per | Would it be legal for the security model to ignore the incoming | |||
| message auth and encryption services, or are they are "fixed" by the | flags and change them before passing them back up? If it changed | |||
| transport/session model? | them, it wouldn't necessarily be ignoring them. The TMSP should | |||
| pass both an actual securityLevel applied to the message, and the | ||||
| If a session is created as 'authPriv', then keys for encryption would | msgFlags in the SNMP message to the MPSP for consideration related | |||
| still be negotiated once at the beginning of the session. But if a | to access control.. The msgFlags parameter in the SNMP message is | |||
| message is presented to the session with a security level of | never changed when processing an incoming message. | |||
| authNoPriv, then that message could simply be authenticated and not | Would it be legal for the security model to ignore the outgoing | |||
| encrypted. Wouldn't that also have some security benefit, in that it | flags and change them before passing them out? no; because the two | |||
| reduces the encrypted data available to an attacker gathering packets | stages are parts of the same security model, either the MPSP | |||
| to try and discover the encryption keys? | should recognize that a securityLevel cannot be met or exceeded, | |||
| and reject the message during the message-build phase, or the TMSP | ||||
| Agents are often resource-constrained. Adding sessions increases the | should determine if it is possible to honor the request. It is | |||
| need for resources, we shouldn't require two sessions when one can | possible to apply an increased securityLevel for an outgoing | |||
| suffice. 2 bytes per session structure and a compare or two is much | request, but the procedure to do so must be spelled out clearly in | |||
| less of a resource burden on an agent than two separate sessions. | the model design. | |||
| The security model MUST check the incoming security level flags to | ||||
| make sure they matched the transport session setup. and if not | ||||
| drop the message. Yes, mostly. Depending on the model, either | ||||
| the TMSP or the MPSP MUST verify that the actual processing met or | ||||
| exceeded the securityLevel requested by the msgFlags and that it | ||||
| is acceptable to the specific-model processing (or operator | ||||
| configuration) for this different securityLevel to be applied to | ||||
| the message. This is also true (especially) for outgoing | ||||
| messages. | ||||
| You might legally be able to have a authNoPriv message that is | ||||
| actually encrypted via the transport (but not the other way around | ||||
| of course). Yes, a TMSM could define that as the behavior (or | ||||
| permit an operator to specify that is acceptable behavior) when a | ||||
| requested securityLevel cannot be provided, but a stronger | ||||
| securityLevel can be provided. | ||||
| It's not just about CPU power of the device but the percentage of CPU | A.2 Message security versus session security | |||
| cycles that are spent on network management. There isn't much value | ||||
| in using encryption for a performance management system polling PEs | ||||
| for performance data on thousands of interfaces every ten minutes,it | ||||
| just adds significant overhead to processing of the packet. Using an | ||||
| encrypted TLS channel for everything may not work for use cases in | ||||
| performance management wherein we collect massive amounts of non | ||||
| sensitive data at periodic intervals. Each SNMP "session" would have | ||||
| to negotiate two separate protection channels (authPriv and | ||||
| authNoPriv) and for every packet the SNMP engine will use the | ||||
| appropriate channel based on the desired securityLevel. | ||||
| If the underlying transport layer security was configurable on a | For SBSM, and for many TMSM models, securityName is specified | |||
| per-message basis, a TMSM could have a MIB module with configurable | during session setup, and associated with the session identifier. | |||
| maxSecurityLevel and a minSecurityLevel objects to identify the range | Is it possible for the request (and notification) originator to | |||
| of possible levels, and not all messages sent via that session are of | specify per message auth and encryption services, or are they are | |||
| the same level. A session's maxSecurityLevel would identify the | "fixed" by the transport/session model? | |||
| maximum security it could provide, and a session created with a | If a session is created as 'authPriv', then keys for encryption | |||
| minSecurityLevel of authPriv would reject an attempt to send an | would still be negotiated once at the beginning of the session. | |||
| authNoPriv message. | But if a message is presented to the session with a security level | |||
| of authNoPriv, then that message could simply be authenticated and | ||||
| not encrypted. Wouldn't that also have some security benefit, in | ||||
| that it reduces the encrypted data available to an attacker | ||||
| gathering packets to try and discover the encryption keys? | ||||
| Some SNMP entities are resource-constrained. Adding sessions | ||||
| increases the need for resources, we shouldn't require two | ||||
| sessions when one can suffice. 2 bytes per session structure and a | ||||
| compare or two is much less of a resource burden than two separate | ||||
| sessions. | ||||
| It's not just about CPU power of the device but the percentage of | ||||
| CPU cycles that are spent on network management. There isn't much | ||||
| value in using encryption for a performance management system | ||||
| polling PEs for performance data on thousands of interfaces every | ||||
| ten minutes,it just adds significant overhead to processing of | ||||
| the packet. Using an encrypted TLS channel for everything may not | ||||
| work for use cases in performance management wherein we collect | ||||
| massive amounts of non sensitive data at periodic intervals. Each | ||||
| SNMP "session" would have to negotiate two separate protection | ||||
| channels (authPriv and authNoPriv) and for every packet the SNMP | ||||
| engine will use the appropriate channel based on the desired | ||||
| securityLevel. | ||||
| If the underlying transport layer security was configurable on a | ||||
| per-message basis, a TMSM could have a MIB module with | ||||
| configurable maxSecurityLevel and a minSecurityLevel objects to | ||||
| identify the range of possible levels, and not all messages sent | ||||
| via that session are of the same level. A session's | ||||
| maxSecurityLevel would identify the maximum security it could | ||||
| provide, and a session created with a minSecurityLevel of authPriv | ||||
| would reject an attempt to send an authNoPriv message. | ||||
| Intellectual Property Statement | Intellectual Property Statement | |||
| The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
| Intellectual Property Rights or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed to | |||
| pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
| this document or the extent to which any license under such rights | 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 | might or might not be available; nor does it represent that it has | |||
| made any independent effort to identify any such rights. Information | made any independent effort to identify any such rights. Information | |||
| on the procedures with respect to rights in RFC documents can be | on the procedures with respect to rights in RFC documents can be | |||
| skipping to change at page 21, line 41 ¶ | skipping to change at page 30, line 41 ¶ | |||
| This document and the information contained herein are provided on an | This document and the information contained herein are provided on an | |||
| "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |||
| OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | |||
| ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | |||
| INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | |||
| INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
| Copyright Statement | Copyright Statement | |||
| Copyright (C) The Internet Society (2004). This document is subject | Copyright (C) The Internet Society (2005). This document is subject | |||
| to the rights, licenses and restrictions contained in BCP 78, and | to the rights, licenses and restrictions contained in BCP 78, and | |||
| except as set forth therein, the authors retain all their rights. | except as set forth therein, the authors retain all their rights. | |||
| Acknowledgment | Acknowledgment | |||
| Funding for the RFC Editor function is currently provided by the | Funding for the RFC Editor function is currently provided by the | |||
| Internet Society. | Internet Society. | |||
| End of changes. 98 change blocks. | ||||
| 414 lines changed or deleted | 841 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/ | ||||