| < draft-ietf-sipping-config-framework-14.txt | draft-ietf-sipping-config-framework-15.txt > | |||
|---|---|---|---|---|
| SIPPING D. Petrie | SIPPING D. Petrie | |||
| Internet-Draft SIPez LLC. | Internet-Draft SIPez LLC. | |||
| Intended status: Standards Track S. Channabasappa, Ed. | Intended status: Standards Track S. Channabasappa, Ed. | |||
| Expires: May 21, 2008 CableLabs | Expires: August 16, 2008 CableLabs | |||
| November 18, 2007 | February 13, 2008 | |||
| A Framework for Session Initiation Protocol User Agent Profile Delivery | A Framework for Session Initiation Protocol User Agent Profile Delivery | |||
| draft-ietf-sipping-config-framework-14 | draft-ietf-sipping-config-framework-15 | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
| applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
| have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| 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 | |||
| skipping to change at page 1, line 35 ¶ | skipping to change at page 1, line 35 ¶ | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on May 21, 2008. | This Internet-Draft will expire on August 16, 2008. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2008). | |||
| Abstract | Abstract | |||
| This document specifies a framework to enable configuration of | This document specifies a framework to enable configuration of | |||
| Session Initiation Protocol (SIP) User Agents in SIP deployments. | Session Initiation Protocol (SIP) User Agents in SIP deployments. | |||
| The framework provides a means to deliver profile data that User | The framework provides a means to deliver profile data that User | |||
| Agents need to be functional, automatically and with minimal or no | Agents need to be functional, automatically and with minimal or no | |||
| User and Administrative intervention. The framework describes how | User and Administrative intervention. The framework describes how | |||
| SIP User Agents can discover sources, request profiles and receive | SIP User Agents can discover sources, request profiles and receive | |||
| notifications related to profile modifications. As part of this | notifications related to profile modifications. As part of this | |||
| skipping to change at page 2, line 31 ¶ | skipping to change at page 2, line 31 ¶ | |||
| Service Providers . . . . . . . . . . . . . . . . . . . . 12 | Service Providers . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 14 | 5. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 14 | |||
| 5.1. Profile delivery stages . . . . . . . . . . . . . . . . . 14 | 5.1. Profile delivery stages . . . . . . . . . . . . . . . . . 14 | |||
| 5.1.1. Profile Enrollment . . . . . . . . . . . . . . . . . . 15 | 5.1.1. Profile Enrollment . . . . . . . . . . . . . . . . . . 15 | |||
| 5.1.2. Content Retrieval . . . . . . . . . . . . . . . . . . 17 | 5.1.2. Content Retrieval . . . . . . . . . . . . . . . . . . 17 | |||
| 5.1.3. Change Notification . . . . . . . . . . . . . . . . . 17 | 5.1.3. Change Notification . . . . . . . . . . . . . . . . . 17 | |||
| 5.1.4. Enrollment Data and Caching . . . . . . . . . . . . . 18 | 5.1.4. Enrollment Data and Caching . . . . . . . . . . . . . 18 | |||
| 5.2. Securing Profile Delivery . . . . . . . . . . . . . . . . 21 | 5.2. Securing Profile Delivery . . . . . . . . . . . . . . . . 21 | |||
| 5.2.1. Securing Profile Enrollment . . . . . . . . . . . . . 22 | 5.2.1. Securing Profile Enrollment . . . . . . . . . . . . . 22 | |||
| 5.2.2. Securing Content Retrieval . . . . . . . . . . . . . . 23 | 5.2.2. Securing Content Retrieval . . . . . . . . . . . . . . 23 | |||
| 5.2.3. Securing Change Notification . . . . . . . . . . . . . 23 | 5.2.3. Securing Change Notification . . . . . . . . . . . . . 24 | |||
| 5.3. Additional Considerations . . . . . . . . . . . . . . . . 24 | 5.3. Additional Considerations . . . . . . . . . . . . . . . . 24 | |||
| 5.3.1. Identities and Credentials . . . . . . . . . . . . . . 24 | 5.3.1. Bootstrapping Identities and Credentials . . . . . . . 24 | |||
| 5.3.2. Profile Enrollment Request Attempt . . . . . . . . . . 25 | 5.3.2. Profile Enrollment Request Attempt . . . . . . . . . . 26 | |||
| 5.3.3. Device Types . . . . . . . . . . . . . . . . . . . . . 29 | 5.3.3. Device Types . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 5.3.4. Profile Data . . . . . . . . . . . . . . . . . . . . . 29 | 5.3.4. Profile Data . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 5.3.5. Profile Data Frameworks . . . . . . . . . . . . . . . 30 | 5.3.5. Profile Data Frameworks . . . . . . . . . . . . . . . 31 | |||
| 5.3.6. Additional Profile Types . . . . . . . . . . . . . . . 31 | 5.3.6. Additional Profile Types . . . . . . . . . . . . . . . 32 | |||
| 5.3.7. Deployment considerations . . . . . . . . . . . . . . 31 | 5.3.7. Deployment considerations . . . . . . . . . . . . . . 32 | |||
| 5.4. Support for NATs . . . . . . . . . . . . . . . . . . . . . 31 | 5.4. Support for NATs . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 6. Event Package Definition . . . . . . . . . . . . . . . . . . . 32 | 6. Event Package Definition . . . . . . . . . . . . . . . . . . . 33 | |||
| 6.1. Event Package Name . . . . . . . . . . . . . . . . . . . . 32 | 6.1. Event Package Name . . . . . . . . . . . . . . . . . . . . 33 | |||
| 6.2. Event Package Parameters . . . . . . . . . . . . . . . . . 32 | 6.2. Event Package Parameters . . . . . . . . . . . . . . . . . 33 | |||
| 6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 35 | 6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 35 | 6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 37 | |||
| 6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 36 | 6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 36 | 6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 37 | |||
| 6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . . 36 | 6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . . 38 | |||
| 6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . . 37 | 6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . . 38 | |||
| 6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 37 | 6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 39 | |||
| 6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 38 | 6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 39 | |||
| 6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . . 38 | 6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 7.1. Example 1: Device requesting profile . . . . . . . . . . . 38 | 7.1. Example 1: Device requesting profile . . . . . . . . . . . 39 | |||
| 7.2. Example 2: Device obtaining change notification . . . . . 41 | 7.2. Example 2: Device obtaining change notification . . . . . 42 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 45 | 8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 46 | |||
| 8.2. Registry of SIP configuration profile types . . . . . . . 45 | 8.2. Registry of SIP configuration profile types . . . . . . . 46 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 46 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | |||
| 9.1. Local-network profile . . . . . . . . . . . . . . . . . . 47 | 9.1. Local-network profile . . . . . . . . . . . . . . . . . . 48 | |||
| 9.2. Device profile . . . . . . . . . . . . . . . . . . . . . . 48 | 9.2. Device profile . . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 9.3. User profile . . . . . . . . . . . . . . . . . . . . . . . 50 | 9.3. User profile . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 50 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 51 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 52 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . . 51 | 11.1. Normative References . . . . . . . . . . . . . . . . . . . 52 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . . 52 | 11.2. Informative References . . . . . . . . . . . . . . . . . . 53 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 52 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 54 | |||
| Intellectual Property and Copyright Statements . . . . . . . . . . 54 | Intellectual Property and Copyright Statements . . . . . . . . . . 55 | |||
| 1. Introduction | 1. Introduction | |||
| SIP User Agents require configuration data to function properly. | SIP User Agents require configuration data to function properly. | |||
| Examples include local network, device and user specific information. | Examples include local network, device and user specific information. | |||
| A configuration data set specific to an entity is termed a profile. | A configuration data set specific to an entity is termed a profile. | |||
| For example, device profile contains the configuration data related | For example, device profile contains the configuration data related | |||
| to a device. The process of providing devices with one or more | to a device. The process of providing devices with one or more | |||
| profiles is termed profile delivery. Ideally, this profile delivery | profiles is termed profile delivery. Ideally, this profile delivery | |||
| process should be automatic and require minimal or no user | process should be automatic and require minimal or no user | |||
| skipping to change at page 8, line 7 ¶ | skipping to change at page 8, line 7 ¶ | |||
| | | | | |||
| | | | | |||
| ---- | ---- | |||
| |User| | |User| | |||
| ---- | ---- | |||
| Figure 2: Simple Deployment Model | Figure 2: Simple Deployment Model | |||
| In more complex deployments, devices connect via a local network that | In more complex deployments, devices connect via a local network that | |||
| is not controlled by the SIP Service Provider, such as devices that | is not controlled by the SIP Service Provider, such as devices that | |||
| connect via available public WiFi hotspots. In such cases, local | connect via available public WiFi hot spots. In such cases, local | |||
| network providers may wish to provide local network information such | network providers may wish to provide local network information such | |||
| as bandwidth constraints to the devices. | as bandwidth constraints to the devices. | |||
| Devices may also be controlled by device providers that are | Devices may also be controlled by device providers that are | |||
| independent of the SIP service provider who provides user services, | independent of the SIP service provider who provides user services, | |||
| such as kiosks that allow users to access services from remote | such as kiosks that allow users to access services from remote | |||
| locations. In such cases the profile data may have to be obtained | locations. In such cases the profile data may have to be obtained | |||
| from different profile sources: local network provider, device | from different profile sources: local network provider, device | |||
| provider and SIP service provider. This is indicated in Figure 3 . | provider and SIP service provider. This is indicated in Figure 3 . | |||
| skipping to change at page 10, line 6 ¶ | skipping to change at page 10, line 6 ¶ | |||
| Device Profile: contains configuration data related to a specific | Device Profile: contains configuration data related to a specific | |||
| device, provided by the Device Provider. | device, provided by the Device Provider. | |||
| User Profile: contains configuration data related to a specific | User Profile: contains configuration data related to a specific | |||
| User, as required to reflect that user's preferences and the | User, as required to reflect that user's preferences and the | |||
| particular services subscribed to. It is provided by the SIP | particular services subscribed to. It is provided by the SIP | |||
| Service Provider. | Service Provider. | |||
| Additional profile types may also be specified. | Additional profile types may also be specified. | |||
| PDSs and devices will implement all the three profile types. A | PDSs and devices will implement all the three profile types. A | |||
| device that has not been configured otherwise will try to obtain all | device that has not been configured otherwise will try to obtain all | |||
| the three profile types, in the order specified by this framework. | the three profile types, in the order specified by this framework. A | |||
| The device can be configuration with a different behavior via profile | device being bootstrapped SHOULD request the device profile type (see | |||
| data previously obtained by the device, other means such as pre- | Section 5.3.1 for more information). The device can be configured | |||
| configuration or manual configuration. The data models associated | with a different behavior via profile data previously obtained by the | |||
| with each profile type are out of scope for this document. Follow-on | device, or by using other means such as pre-configuration or manual | |||
| standardization activities are expected to specify such data models. | configuration. The data models associated with each profile type are | |||
| out of scope for this document. Follow-on standardization activities | ||||
| are expected to specify such data models. | ||||
| 3.4. Profile delivery stages | 3.4. Profile delivery stages | |||
| The framework specified in this document requires a device to | The framework specified in this document requires a device to | |||
| explicitly request profiles. It also requires one or more PDSs which | explicitly request profiles. It also requires one or more PDSs which | |||
| provide the profile data. The processes that lead a device to obtain | provide the profile data. The processes that lead a device to obtain | |||
| profile data, and any subsequent changes, can be explained in three | profile data, and any subsequent changes, can be explained in three | |||
| stages, termed the profile delivery stages. | stages, termed the profile delivery stages. | |||
| Profile Enrollment: the process by which a device requests, and if | Profile Enrollment: the process by which a device requests, and if | |||
| skipping to change at page 14, line 18 ¶ | skipping to change at page 14, line 18 ¶ | |||
| parameters using DHCP. This also provides the local domain | parameters using DHCP. This also provides the local domain | |||
| information to help with local-network profile enrollment. | information to help with local-network profile enrollment. | |||
| (B) The device requests profile enrollment for the local network | (B) The device requests profile enrollment for the local network | |||
| profile. It receives an enrollment notification containing | profile. It receives an enrollment notification containing | |||
| content indirection information from Provider A's PDS. The | content indirection information from Provider A's PDS. The | |||
| device retrieves the profile (this contains useful information | device retrieves the profile (this contains useful information | |||
| such as firewall port restrictions and available bandwidth). | such as firewall port restrictions and available bandwidth). | |||
| (C) The device then requests profile enrollment for the device | (C) The device then requests profile enrollment for the device | |||
| profile. It receives an enrollment notification resulting in | profile. It receives an enrollment notification resulting in | |||
| device profile content retrieval. The device initializes the | device profile content retrieval. The device initializes the | |||
| User interface for services. | user interface for services. | |||
| (D) User A with a pre-existing service relationship with Provider A | (D) User A with a pre-existing service relationship with Provider A | |||
| attempts communication via the user Interface. The device uses | attempts communication via the user Interface. The device uses | |||
| the user supplied information (including any credential | the user supplied information (including any credential | |||
| information) and requests profile enrollment for user A's | information) and requests profile enrollment for user A's | |||
| profile. Successful enrollment and profile content retrieval | profile. Successful enrollment and profile content retrieval | |||
| results in services for user A. | results in services for user A. | |||
| (E) At a different point in time, user B with a service relationship | (E) At a different point in time, user B with a service relationship | |||
| with Provider B attempts communication via the user Interface. | with Provider B attempts communication via the user Interface. | |||
| It enrolls and retrieves user B's profile and this results in | It enrolls and retrieves user B's profile and this results in | |||
| services for user B. | services for user B. | |||
| skipping to change at page 15, line 39 ¶ | skipping to change at page 15, line 39 ¶ | |||
| Section 5.3.1). The data can also be "discovered" using the | Section 5.3.1). The data can also be "discovered" using the | |||
| procedures specified by this framework. The "discovered" data can | procedures specified by this framework. The "discovered" data can | |||
| be retained across device resets (but not across factory resets) | be retained across device resets (but not across factory resets) | |||
| and such data is referred to as "cached". Thus, data can be | and such data is referred to as "cached". Thus, data can be | |||
| configured, discovered or cached. The following requirements | configured, discovered or cached. The following requirements | |||
| apply. | apply. | |||
| * If the device is configured with a specific domain name (for | * If the device is configured with a specific domain name (for | |||
| the local network provider or device provider), it MUST NOT | the local network provider or device provider), it MUST NOT | |||
| attempt "discovery" of the domain name. This is the case when | attempt "discovery" of the domain name. This is the case when | |||
| the device is pre-configured (e.g., via a UI) to be managed by | the device is pre-configured (e.g., via a user interface) to be | |||
| specific entities. | managed by specific entities. | |||
| * The device MUST only use data associated with the provider's | * The device MUST only use data associated with the provider's | |||
| domain in an enrollment request. As an example, when the | domain in an enrollment request. As an example, when the | |||
| device is requesting a local-network profile in the domain | device is requesting a local-network profile in the domain | |||
| 'example.net', it cannot present a user AoR associated with the | 'example.net', it cannot present a user AoR associated with the | |||
| local domain 'example.com'. | local domain 'example.com'. | |||
| * The device SHOULD adhere to the following order of data usage: | * The device SHOULD adhere to the following order of data usage: | |||
| configured, cached and discovered. An exception is when the | configured, cached and discovered. An exception is when the | |||
| device is explicitly configured to use a different order. | device is explicitly configured to use a different order. | |||
| Upon failure to obtain the profile using any methods specified in | Upon failure to obtain the profile using any methods specified in | |||
| skipping to change at page 16, line 30 ¶ | skipping to change at page 16, line 30 ¶ | |||
| in the Request-URI (the same way it would handle any other | in the Request-URI (the same way it would handle any other | |||
| SUBSCRIBE message). The authoritative proxy is required to | SUBSCRIBE message). The authoritative proxy is required to | |||
| examine the request (e.g., event package) and transmit it to a PDS | examine the request (e.g., event package) and transmit it to a PDS | |||
| capable of addressing the profile enrollment request. | capable of addressing the profile enrollment request. | |||
| A PDS receiving the enrollment request SHOULD respond to the | A PDS receiving the enrollment request SHOULD respond to the | |||
| request, or proxy it to a PDS that can respond. An exception is | request, or proxy it to a PDS that can respond. An exception is | |||
| when a policy prevents a response (e.g., recognition of a DoS | when a policy prevents a response (e.g., recognition of a DoS | |||
| attack, an invalid device, etc.). The PDS then verifies the | attack, an invalid device, etc.). The PDS then verifies the | |||
| identity presented in the request and performs any necessary | identity presented in the request and performs any necessary | |||
| authentication. Once authentication is successful, the PDS MAY | authentication. Once authentication is successful, the PDS MUST | |||
| admit or reject the enrollment request, based on applicable | either admit or reject the enrollment request, based on applicable | |||
| authorization policies. A PDS admitting the enrollment request | authorization policies. A PDS admitting the enrollment request | |||
| indicates it via a 2xx-class response, as specified in [RFC3265]. | indicates it via a 2xx-class response, as specified in [RFC3265]. | |||
| Refer to Section 6.6 and Section 5.2 for more information on | Refer to Section 6.6 and Section 5.2 for more information on | |||
| subscription request handling and security requirements, | subscription request handling and security requirements, | |||
| respectively. | respectively. | |||
| Enrollment request acceptance | Enrollment request acceptance | |||
| A PDS that admits the enrollment request verifies applicable | A PDS that admits the enrollment request verifies applicable | |||
| policies, identifies the requested profile data and prepares a SIP | policies, identifies the requested profile data and prepares a SIP | |||
| NOTIFY message to the device. Such a notification can either | NOTIFY message to the device. Such a notification can either | |||
| contain the profile data or contain content indirection | contain the profile data or contain content indirection | |||
| information that results in the device performing profile content | information that results in the device performing profile content | |||
| retrieval. The PDS then transmits the prepared SIP notification. | retrieval. The PDS then transmits the prepared SIP notification. | |||
| When the device successfully receives and accepts the SIP | When the device successfully receives and accepts the SIP | |||
| notification, profile enrollment is complete. | notification, profile enrollment is complete. | |||
| When it receives the SIP NOTIFY message, indicating successful | When it receives the SIP NOTIFY message, indicating successful | |||
| profile enrollment, the device MUST make the new profile effective | profile enrollment, the device SHOULD make the new profile | |||
| within the specified timeframe, as described in Section 6.2. | effective within the specified time frame, as described in | |||
| Section 6.2. The exception is when the profile data is delivered | ||||
| via content indirection, and the device cannot obtain the profile | ||||
| data within the specified time frame. | ||||
| Once profile enrollment is successful, the PDS MUST consider the | Once profile enrollment is successful, the PDS MUST consider the | |||
| device enrolled for the specific profile, for the duration of the | device enrolled for the specific profile, for the duration of the | |||
| subscription. | subscription. | |||
| 5.1.2. Content Retrieval | 5.1.2. Content Retrieval | |||
| A successful profile enrollment leads to an initial SIP notification, | A successful profile enrollment leads to an initial SIP notification, | |||
| and may result in subsequent change notifications. Each of these | and may result in subsequent change notifications. Each of these | |||
| notifications can either contain profile data, or content indirection | notifications can either contain profile data, or content indirection | |||
| skipping to change at page 20, line 45 ¶ | skipping to change at page 20, line 47 ¶ | |||
| specified in [RFC4122]. The following requirements apply: | specified in [RFC4122]. The following requirements apply: | |||
| o When the device has a non-alterable MAC address it SHOULD use | o When the device has a non-alterable MAC address it SHOULD use | |||
| version 1 UUID representation with the timestamp and clock | version 1 UUID representation with the timestamp and clock | |||
| sequence bits set to a value of '0'. This will allow for easy | sequence bits set to a value of '0'. This will allow for easy | |||
| recognition, and uniqueness of MAC address based UUIDs. An | recognition, and uniqueness of MAC address based UUIDs. An | |||
| exception is the case where the device supports independent device | exception is the case where the device supports independent device | |||
| configuration for more than one SIP UA. An example would be | configuration for more than one SIP UA. An example would be | |||
| multiple SIP UAs on the same platform. | multiple SIP UAs on the same platform. | |||
| o If the device cannot use a non-alterable device identifier, it | o If the device cannot use a non-alterable device identifier, it | |||
| SHOULD use an alternative non-alterable device identifier. For | SHOULD use an alternative non-alterable device identifier. For | |||
| example, the International Manufacturer's Equipment Identifier | example, the International Mobile Equipment Identity (IMEI) for | |||
| (IMEI) for mobile devices. | mobile devices. | |||
| o If the device cannot use a non-alterable MAC Address, it MUST be | o If the device cannot use a non-alterable MAC Address, it MUST be | |||
| use the same approach as defining a user agent Instance ID in | use the same approach as defining a user agent Instance ID in | |||
| [I-D.ietf-sip-outbound]. | [I-D.ietf-sip-outbound]. | |||
| o Note: when the URN is used as the user part of the Request URI, it | o Note: when the URN is used as the user part of the Request URI, it | |||
| MUST be URL escaped since the colon (":") is not a legal character | MUST be URL escaped since the colon (":") is not a legal character | |||
| in the user part of an addr-spec ([RFC4122]), and must be escaped. | in the user part of an addr-spec ([RFC4122]), and must be escaped. | |||
| For example, the instance ID: | For example, the instance ID: | |||
| urn:uuid:f81d4fae-7ced-11d0-a765-00a0c91e6bf6@example.com | urn:uuid:f81d4fae-7ced-11d0-a765-00a0c91e6bf6@example.com | |||
| would be escaped to look as follows in a URI: | would be escaped to look as follows in a URI: | |||
| sip:urn%3auuid%3af81d4fae-7ced-11d0-a765-00a0c91e6bf6@ | sip:urn%3auuid%3af81d4fae-7ced-11d0-a765-00a0c91e6bf6@ | |||
| skipping to change at page 21, line 45 ¶ | skipping to change at page 21, line 49 ¶ | |||
| Profile data can contain sensitive information that needs to be | Profile data can contain sensitive information that needs to be | |||
| secured, such as identities and credentials. Security involves | secured, such as identities and credentials. Security involves | |||
| authentication, message integrity and privacy. Authentication is the | authentication, message integrity and privacy. Authentication is the | |||
| process by which you verify that an entity is who it claims to be, | process by which you verify that an entity is who it claims to be, | |||
| such as a user AoR presented during profile enrollment. Message | such as a user AoR presented during profile enrollment. Message | |||
| integrity provides the assurance that the message contents | integrity provides the assurance that the message contents | |||
| transmitted between two entities, such as between the PDS and the | transmitted between two entities, such as between the PDS and the | |||
| device, has not been modified during transit. Privacy ensures that | device, has not been modified during transit. Privacy ensures that | |||
| the message contents have not been subjected to monitoring by | the message contents have not been subjected to monitoring by | |||
| unwanted elements during transit. For profile data that contains | unwanted elements during transit. Authentication and message | |||
| sensitive information, authentication and message integrity are | integrity are required to ensure that the profile contents were | |||
| required to ensure that the profile contents were received by a valid | received by a valid entity, from a valid source, and without any | |||
| entity, from a valid source, and without any modifications during | modifications during transit. For profiles that contain sensitive | |||
| transit. For profiles that contain sensitive data, privacy is also | data, privacy is also required. | |||
| required. | ||||
| For an overview of potential security threats, refer to Section 9. | For an overview of potential security threats, refer to Section 9. | |||
| For information on how the device can be configured with identities | For information on how the device can be configured with identities | |||
| and credentials, refer to Section 5.3.1. The following subsections | and credentials, refer to Section 5.3.1. The following subsections | |||
| provide the security requirements associated with each profile | provide the security requirements associated with each profile | |||
| delivery stage, and applies to each of profile types specified by | delivery stage, and applies to each of profile types specified by | |||
| this framework. | this framework. | |||
| 5.2.1. Securing Profile Enrollment | 5.2.1. Securing Profile Enrollment | |||
| Profile enrollment may result in sensitive profile data. In such | Profile enrollment may result in sensitive profile data. In such | |||
| cases, the PDS MUST authenticate the device, except during the | cases, the PDS MUST authenticate the device, except during the | |||
| bootstrapping scenario when the device does not have existing | bootstrapping scenario when the device does not have existing | |||
| credentials. Additionally, the device MUST authenticate the PDS to | credentials (see Section 5.3.1 for more information on | |||
| ensure that it is obtaining sensitive profile data from a valid PDS, | bootstrapping). Additionally, the device MUST authenticate the PDS | |||
| except in the bootstrapping scenario. | to ensure that it is obtaining sensitive profile data from a valid | |||
| PDS, except in the bootstrapping scenario. | ||||
| To authenticate a device that has been configured with identities and | To authenticate a device that has been configured with identities and | |||
| credentials as specified in Section 5.3.1 and support profiles | credentials as specified in Section 5.3.1 and support profiles | |||
| containing sensitive profile data (refer to Section 5.3.4), devices | containing sensitive profile data (refer to Section 5.3.4), devices | |||
| and PDSs MUST support Digest Authentication as specified in | and PDSs MUST support Digest Authentication as specified in | |||
| [RFC3261]. Future enhancements may provide other authentication | [RFC3261]. Future enhancements may provide other authentication | |||
| methods such as authentication using X.509 certificates. For the | methods such as authentication using X.509 certificates. For the | |||
| device to authenticate the PDS, the device MUST mutually authenticate | device to authenticate the PDS, the device MUST mutually authenticate | |||
| with the PDS during digest authentication (device challenges the | with the PDS during digest authentication (device challenges the PDS, | |||
| client that responds with the Authorization header). Transmission of | which responds with the Authorization header). Transmission of | |||
| sensitive profile data also requires message integrity. This can be | sensitive profile data also requires message integrity. This can be | |||
| provided by configuring the device with a SIPS URI resulting in TLS | accomplished by configuring the device with, or by ensuring that the | |||
| establishment ([RFC4346]). TLS also prevents offline dictionary | discovery process during profile enrollment provides, a SIPS URI | |||
| attacks when digest authentication is used. Thus, in the absence of | resulting in TLS establishment ([RFC4346]). TLS also prevents | |||
| TLS, the device MUST NOT respond to any authentication challenges. | offline dictionary attacks when digest authentication is used. Thus, | |||
| It is to be noted that the digest credentials used for obtaining | in the absence of TLS, the device MUST NOT respond to any | |||
| profile data via this framework may, or may not, be the same as that | authentication challenges. It is to be noted that the digest | |||
| used for SIP registration (see Section 5.3.1). | credentials used for obtaining profile data via this framework may, | |||
| or may not, be the same as that used for SIP registration (see | ||||
| Section 5.3.1). | ||||
| When the PDS challenges a profile enrollment request, and it fails, | When the PDS challenges a profile enrollment request, and it fails, | |||
| the PDS MAY refuse enrollment or provide profile data without the | the PDS MAY refuse enrollment or provide profile data without the | |||
| user-specific information (e.g., to bootstrap a device that may have | user-specific information (e.g., to bootstrap a device as indicated | |||
| misplaced credentials). If the device challenges, but fails to | in Section 5.3.1). If the device challenges, but fails to | |||
| authenticate the PDS, it MUST reject the initial notification and | authenticate the PDS, it MUST reject the initial notification and | |||
| retry the profile enrollment process. If the device is configured | retry the profile enrollment process. If the device is configured | |||
| with a SIPS URI and TLS establishment fails because the next-hop SIP | with, or discovers, a SIPS URI but TLS establishment fails because | |||
| entity does not support TLS, the device SHOULD attempt other resolved | the next-hop SIP entity does not support TLS, the device SHOULD | |||
| next-hop SIP entities. When the device establishes TLS with the | attempt other resolved next-hop SIP entities. When the device | |||
| next-hop entity, the device MUST use the procedures specified in | establishes TLS with the next-hop entity, the device MUST use the | |||
| [RFC2818], Section 3.1, for authentication, unless it does not have | procedures specified in [RFC2818], Section 3.1, for authentication, | |||
| any configured information to verify the same (e.g., prior to | unless it does not have any configured information (e.g., CA | |||
| bootstrapping). The 'Server Identity' in this case is always the | certificate) to perform authentication (like prior to bootstrapping). | |||
| domain of the next-hop SIP entity. If the device attempts | The 'Server Identity' for authentication is always the domain of the | |||
| validation, and it fails, it MUST reject the intial notification and | next-hop SIP entity. If the device attempts validation, and it | |||
| retry profile enrollment. In the absence of TLS and a mechanism for | fails, it MUST reject the initial notification and retry profile | |||
| mutual authentication, the PDS MUST NOT present any sensitive profile | enrollment. In the absence of a SIPS URI for the device and a | |||
| data in the initial notification, except when the device is being | mechanism for mutual authentication, the PDS MUST NOT present any | |||
| boostrapped. It MAY still use content indirection to transmit | sensitive profile data in the initial notification, except when the | |||
| sensitive profile data. | device is being bootstrapped. It MAY still use content indirection | |||
| to transmit sensitive profile data. | ||||
| When a device is being provided with bootstrapping profile data | When a device is being provided with bootstrapping profile data | |||
| containing sensitive information, the PDS SHOULD use the SIP Identity | within the notification, and it contains sensitive information, the | |||
| header as specified in [RFC4474] within the notification. This helps | SIP Identity header SHOULD be used as specified in [RFC4474]. This | |||
| with devices that MAY be pre-configured with certificates to validate | helps with devices that MAY be pre-configured with certificates to | |||
| bootstrapping sources (e.g., list of allowed domain certificates, or | validate bootstrapping sources (e.g., list of allowed domain | |||
| a list of root CA certificates using PKI). Further, the profile data | certificates, or a list of root CA certificates using PKI). When the | |||
| may contain the domain certificate used for creating the SIP Identity | SIP Identity header is used, the PDS MUST set the host portion of the | |||
| header, for devices that are not pre-configured with any information, | AoR in the 'From' header to the Provider's domain (the user portion | |||
| and can be used to guarantee header and body integrity. It can also | is a entity-specific identifier). If the device is capable of | |||
| allow the device to present the identity of the PDS to a user for | validating the SIP Identity, and it fails, it MUST reject | |||
| verification (if such an interface exists). When the SIP Identity | bootstrapping profile data. | |||
| header is used, the PDS MUST set the host portion of the AoR in the | ||||
| 'From' header to the Provider's domain (the user portion is a entity- | ||||
| specific identifier). If the device is capable of validating the SIP | ||||
| Identity, and it fails, it MUST reject bootstrapping profile data. | ||||
| 5.2.2. Securing Content Retrieval | 5.2.2. Securing Content Retrieval | |||
| Initial or change notifications following a successful enrollment can | Initial or change notifications following a successful enrollment can | |||
| provide a device with the requested profile data, or use content | provide a device with the requested profile data, or use content | |||
| indirection to direct it to a PCC that can provide the profile data. | indirection to direct it to a PCC that can provide the profile data. | |||
| This document specifies HTTP and HTTPS as content retrieval | This document specifies HTTP and HTTPS as content retrieval | |||
| protocols. | protocols. | |||
| If the profile is provided via content indirection and contains | If the profile is provided via content indirection and contains | |||
| skipping to change at page 24, line 9 ¶ | skipping to change at page 24, line 15 ¶ | |||
| 5.2.3. Securing Change Notification | 5.2.3. Securing Change Notification | |||
| If the device requested enrollment via a SIP subscription with a non- | If the device requested enrollment via a SIP subscription with a non- | |||
| zero 'Expires' parameter, it can also result in change notifications | zero 'Expires' parameter, it can also result in change notifications | |||
| for the duration of the subscription. For change notifications | for the duration of the subscription. For change notifications | |||
| containing sensitive profile data, this framework RECOMMENDS the use | containing sensitive profile data, this framework RECOMMENDS the use | |||
| of the SIP Identity header as specified in [RFC4474]. When the SIP | of the SIP Identity header as specified in [RFC4474]. When the SIP | |||
| Identity header is used, the PDS MUST set the host portion of the AoR | Identity header is used, the PDS MUST set the host portion of the AoR | |||
| in the 'From' header to the Provider's domain (the user portion is a | in the 'From' header to the Provider's domain (the user portion is a | |||
| entity-specific identifier). This provides header and body integrity | entity-specific identifier). This provides header and body integrity | |||
| as well. However, for sensitive profile data that needs privacy and | as well. However, for sensitive profile data requiring privacy, if | |||
| is not being transmitted over a channel such as TLS, the PDS MUST use | the contact URI to which the NOTIFY request is to be sent is not | |||
| content indirection. Additionally, the PDS MUST also use content | SIPS, the PDS MUST use content indirection. Additionally, the PDS | |||
| indirection for notifications containing sensitive profile data, when | MUST also use content indirection for notifications containing | |||
| the profile enrollment was not authenticated. | sensitive profile data, when the profile enrollment was not | |||
| authenticated. | ||||
| 5.3. Additional Considerations | 5.3. Additional Considerations | |||
| This section provides additional considerations such as details on | This section provides additional considerations such as details on | |||
| how a device obtains identities and credentials, backoff and retry | how a device obtains identities and credentials, backoff and retry | |||
| methods, guidelines on profile data and additional profile types. | methods, guidelines on profile data and additional profile types. | |||
| 5.3.1. Identities and Credentials | 5.3.1. Bootstrapping Identities and Credentials | |||
| When requesting a profile the device can provide an identity such as | When requesting a profile the device can provide an identity (i.e., a | |||
| a user AoR. To do so, the device needs to be configured. This can | user AoR), and contain associated credentials for authentication. To | |||
| be accomplished in one of the following ways: | do so, the device needs to obtain this information via bootstrapping. | |||
| This can be accomplished in one of the following ways: | ||||
| Pre-configuration | Pre-configuration | |||
| The device may be pre-configured with identities and associated | The device may be pre-configured with identities and associated | |||
| credentials, such as a user AoR and digest password. | credentials, such as a user AoR and digest password. | |||
| Out-of-band methods | Out-of-band methods | |||
| A device or Provider may provide hardware- or software-based | A device or Provider may provide hardware- or software-based | |||
| credentials such as SIM cards or USB drives. | credentials such as SIM cards or Universal Serial Bus (USB) | |||
| drives. | ||||
| End-user interface | End-user interface | |||
| The end-user may be provided with the necessary identities and | The end-user may be provided with the necessary identities and | |||
| credentials. The end-user can then configure the device (using a | credentials. The end-user can then configure the device (using a | |||
| user interface), or present when required (e.g., IM login screen). | user interface), or present when required (e.g., IM login screen). | |||
| Using this framework | Using this framework | |||
| When a device is initialized, even if it has no pre-configured | When a device is initialized, even if it has no pre-configured | |||
| information, it can request the local-network and device profiles. | information, it can request the local-network and device profiles. | |||
| In such a case the device profile can provide one of the following | For purposes of bootstrapping, this framework recommends that the | |||
| to bootstap the device: | device profile provide one of the following to bootstrap the | |||
| device: | ||||
| * Profile data that allows the end-user to communicate by non-SIP | * Profile data that allows the end-user to communicate with the | |||
| means with the device provider or SIP service provider. The | device provider or SIP service provider using non-SIP methods. | |||
| provider can then use any applicable method (e.g., web portal) | For example, the profile data can direct the end-user to a web | |||
| to provide the user AoR. | portal to obtain a subscription. Upon obtaining a successful | |||
| subscription, the end-user or the device can be provided with | ||||
| the necessary identities and credentials. | ||||
| * Content indirection information to a PCC that can provide | * Content indirection information to a PCC that can provide | |||
| identities and credentials. As an example, consider a device | identities and credentials. As an example, consider a device | |||
| that has a X.509 certificate that can be authenticated by the | that has a X.509 certificate that can be authenticated by the | |||
| PCC. In such a case, the PCC can use HTTPS to provide | PCC. In such a case, the PCC can use HTTPS to provide | |||
| identities and associated credentials. | identities and associated credentials. | |||
| * Profile data containing identities and credentials that can be | * Profile data containing identities and credentials that can be | |||
| used to bootstrap the device. This can be used in cases where | used to bootstrap the device (see Section 5.3.4 for profile | |||
| the device is initialized for the first time, or after a | data recommendations). This can be used in cases where the | |||
| factory reset. This can be considered only in cases where the | device is initialized for the first time, or after a factory | |||
| device is initialized in the Provider's network, for obvious | reset. This can be considered only in cases where the device | |||
| security reasons. | is initialized in the Provider's network, for obvious security | |||
| reasons. | ||||
| Additionally, AoRs are typically known by PDSs that serve the domain | Additionally, AoRs are typically known by PDSs that serve the domain | |||
| indicated by the AoR. Thus, devices can only present the configured | indicated by the AoR. Thus, devices can only present the configured | |||
| AoRs in the respective domains. An exception is the use of federated | AoRs in the respective domains. An exception is the use of federated | |||
| identities. This allows a device to use a user's AoR in multiple | identities. This allows a device to use a user's AoR in multiple | |||
| domains. Further even within the same domain, the device's domain | domains. Further even within the same domain, the device's domain | |||
| proxy and the PDS may be in two different realms, and as such may be | proxy and the PDS may be in two different realms, and as such may be | |||
| associated with different credentials for digest authentication. In | associated with different credentials for digest authentication. In | |||
| such cases, multiple credentials may be configured, and associated | such cases, multiple credentials may be configured, and associated | |||
| with the realms in which they are to be used. This framework | with the realms in which they are to be used. This framework | |||
| specifies only digest authentication and the device is not expected | specifies only digest authentication for profile enrollment and the | |||
| to contain any other credentials. Future enhancements can specify | device is not expected to contain any other credentials. For profile | |||
| additional identities and credentials such as X.509 certificates. | retrieval using content indirection, the device will need to support | |||
| additional credentials such as X.509 certificates (for TLS). Future | ||||
| enhancements can specify additional credential types for profile | ||||
| enrollment and retrieval. | ||||
| 5.3.2. Profile Enrollment Request Attempt | 5.3.2. Profile Enrollment Request Attempt | |||
| A state diagram representing a device requesting any specific profile | A state diagram representing a device requesting any specific profile | |||
| defined by this framework is shown in Figure 6. | defined by this framework is shown in Figure 6. | |||
| +------------+ | +------------+ | |||
| | Initialize | | | Initialize | | |||
| +-----+------+ | +-----+------+ | |||
| | | | | |||
| skipping to change at page 30, line 6 ¶ | skipping to change at page 31, line 6 ¶ | |||
| network infrastructure elements e.g., SIP servers). | network infrastructure elements e.g., SIP servers). | |||
| 5.3.4. Profile Data | 5.3.4. Profile Data | |||
| This framework does not specify the contents for any profile type. | This framework does not specify the contents for any profile type. | |||
| Follow-on standardization activities are expected to address profile | Follow-on standardization activities are expected to address profile | |||
| contents. However, the framework provides the following requirements | contents. However, the framework provides the following requirements | |||
| and recommendations for profile data definitions: | and recommendations for profile data definitions: | |||
| o The device profile type SHOULD specify parameters to configure the | o The device profile type SHOULD specify parameters to configure the | |||
| identities and credentials. These parameters may be optional or | identities and credentials for use in scenarios such as | |||
| mandatory and will be used for dynamically configuring devices | bootstrapping (see Section 5.3.1) and run-time modifications to | |||
| that initialize in a network without any pre-configuration. | identities and credentials. This framework recommends the device | |||
| profile to provide the identities and credentials due to a couple | ||||
| of reasons. The local-network profile may not always be | ||||
| available, and even if present, may not be controlled by the | ||||
| device provider who controls device configuration to provide | ||||
| services. Further, the device may not have any users configured | ||||
| prior to being bootstrapped, resulting in an absence of user | ||||
| profile requests. However, this framework does not prevent other | ||||
| profile types from providing identities and credentials to meet | ||||
| deployment needs. For example, the user profile can contain | ||||
| identities and credentials for communicating with specific | ||||
| applications. | ||||
| o Each profile MUST clearly identify if it may contain any sensitive | o Each profile MUST clearly identify if it may contain any sensitive | |||
| data. Such profiles MUST also identify the data elements that are | data. Such profiles MUST also identify the data elements that are | |||
| considered sensitive, i.e., data that cannot be compromised. As | considered sensitive, i.e., data that cannot be compromised. As | |||
| an example, a device profile definition may identify itself as | an example, a device profile definition may identify itself as | |||
| containing sensitive data and indicate data such as device | containing sensitive data and indicate data such as device | |||
| credentials to be sensitive. | credentials to be sensitive. | |||
| o When the device receives multiple profiles, the contents of each | o When the device receives multiple profiles, the contents of each | |||
| profile type SHOULD only contain data relevant to the entity it | profile type SHOULD only contain data relevant to the entity it | |||
| represents. As an example, consider a device that obtains all the | represents. As an example, consider a device that obtains all the | |||
| defined profiles. Information pertaining to the local network is | defined profiles. Information pertaining to the local network is | |||
| skipping to change at page 36, line 41 ¶ | skipping to change at page 38, line 4 ¶ | |||
| Notifier is configured to accept such requests. | Notifier is configured to accept such requests. | |||
| The Notifier MAY also authenticate SUBSCRIBE messages even if the | The Notifier MAY also authenticate SUBSCRIBE messages even if the | |||
| NOTIFY is expected to only contain a pointer to profile data. | NOTIFY is expected to only contain a pointer to profile data. | |||
| Securing data sent via Content Indirection is covered in Section 9. | Securing data sent via Content Indirection is covered in Section 9. | |||
| If the profile type indicated in the "profile-type" Event header | If the profile type indicated in the "profile-type" Event header | |||
| parameter is unavailable or the Notifier is configured not to provide | parameter is unavailable or the Notifier is configured not to provide | |||
| it, the Notifier SHOULD return a 404 response to the SUBSCRIBE | it, the Notifier SHOULD return a 404 response to the SUBSCRIBE | |||
| request. If the specific user or device is unknown, the Notifier MAY | request. If the specific user or device is unknown, the Notifier MAY | |||
| either accept or reject the subscription with a 403 response. | accept the subscription, or else it may reject the subscription (with | |||
| a 403 response). | ||||
| 6.7. Notifier Generation of NOTIFY Requests | 6.7. Notifier Generation of NOTIFY Requests | |||
| As specified in [RFC3265], the Notifier MUST always send a NOTIFY | As specified in [RFC3265], the Notifier MUST always send a NOTIFY | |||
| request upon accepting a subscription. If the device or user is | request upon accepting a subscription. If the device or user is | |||
| unknown and the Notifier chooses to accept the subscription, the | unknown and the Notifier chooses to accept the subscription, the | |||
| Notifier MAY either respond with profile data (e.g., default profile | Notifier MAY either respond with profile data (e.g., default profile | |||
| data) or provide no profile information (i.e., empty NOTIFY). | data) or provide no profile information (i.e., empty NOTIFY). | |||
| If the identity indicated in the SUBSCRIBE request (From header) is a | If the identity indicated in the SUBSCRIBE request (From header) is a | |||
| skipping to change at page 37, line 31 ¶ | skipping to change at page 38, line 41 ¶ | |||
| 6.8. Subscriber Processing of NOTIFY Requests | 6.8. Subscriber Processing of NOTIFY Requests | |||
| A Subscriber to this event package MUST adhere to the NOTIFY request | A Subscriber to this event package MUST adhere to the NOTIFY request | |||
| processing behavior specified in [RFC3265]. If the Notifier | processing behavior specified in [RFC3265]. If the Notifier | |||
| indicated an effective time (using the "effective-by" Event Header | indicated an effective time (using the "effective-by" Event Header | |||
| parameter), the Subscriber SHOULD attempt to make the profiles | parameter), the Subscriber SHOULD attempt to make the profiles | |||
| effective within the specified time. Exceptions include deployments | effective within the specified time. Exceptions include deployments | |||
| that prohibit such behavior in certain cases (e.g., emergency | that prohibit such behavior in certain cases (e.g., emergency | |||
| sessions are in progress). When profile data cannot be applied | sessions are in progress). When profile data cannot be applied | |||
| within the recommended timeframe and this affects device behavior, | within the recommended time frame and this affects device behavior, | |||
| any actions to be taken SHOULD be defined by the profile data | any actions to be taken SHOULD be defined by the profile data | |||
| definitions. By default, the Subscriber is RECOMMENDED to make the | definitions. By default, the Subscriber is RECOMMENDED to make the | |||
| profiles effective as soon as possible. | profiles effective as soon as possible. | |||
| When accepting content indirection, the Subscriber MUST always | When accepting content indirection, the Subscriber MUST always | |||
| support "http:" or "https:" and be prepared to accept NOTIFY messages | support "http:" or "https:" and be prepared to accept NOTIFY messages | |||
| with those URI schemes. If the Subscriber wishes to support | with those URI schemes. If the Subscriber wishes to support | |||
| alternative URI schemes they MUST each be indicated in the "schemes" | alternative URI schemes they MUST each be indicated in the "schemes" | |||
| Contact header field parameter as defined in [RFC4483]. The | Contact header field parameter as defined in [RFC4483]. The | |||
| Subscriber MUST also be prepared to receive a NOTIFY request with no | Subscriber MUST also be prepared to receive a NOTIFY request with no | |||
| skipping to change at page 42, line 4 ¶ | skipping to change at page 43, line 4 ¶ | |||
| (XRes) | (XRes) | |||
| the HTTP server responds to the request via a HTTP response | the HTTP server responds to the request via a HTTP response | |||
| containing the profile contents | containing the profile contents | |||
| 7.2. Example 2: Device obtaining change notification | 7.2. Example 2: Device obtaining change notification | |||
| The following example illustrates the case where a user (X) is | The following example illustrates the case where a user (X) is | |||
| simultaneously accessing services via two different devices (e.g., | simultaneously accessing services via two different devices (e.g., | |||
| Multimedia entities on a PC and PDA) and has access to a user | Multimedia entities on a PC and PDA) and has access to a user | |||
| Interface (UI) that allows for changes to the user profile. | interface that allows for changes to the user profile. | |||
| The following are assumed for this example: | The following are assumed for this example: | |||
| o The devices (A & B) obtain the necessary profiles from the same | o The devices (A & B) obtain the necessary profiles from the same | |||
| SIP Service Provider. | SIP Service Provider. | |||
| o The SIP Service Provider also provides a user Interface (UI) that | o The SIP Service Provider also provides a user interface that | |||
| allows the user to change preferences that impact the user | allows the user to change preferences that impact the user | |||
| profile. | profile. | |||
| The flow diagram and an explanation of the messages follow. | The flow diagram and an explanation of the messages follow. | |||
| o Note: The example only shows retrieval of user X's profile, but it | o Note: The example only shows retrieval of user X's profile, but it | |||
| may request and retrieve other profiles (e.g., local-network, | may request and retrieve other profiles (e.g., local-network, | |||
| Device). | Device). | |||
| ----- ----- | ----- ----- | |||
| |User |_________| UI* | * = User Interface | |User |_________| UI* | * = User Interface | |||
| skipping to change at page 43, line 34 ¶ | skipping to change at page 44, line 34 ¶ | |||
| | | | | | | | | |||
| | (B-RX)|<= Retrieves User X's profile=>| | | (B-RX)|<= Retrieves User X's profile=>| | |||
| | | | | | | | | |||
| (A-EX) Device A discovers, enrolls and obtains notification related | (A-EX) Device A discovers, enrolls and obtains notification related | |||
| to user X's profile. | to user X's profile. | |||
| (A-RX) Device A retrieves user X's profile. | (A-RX) Device A retrieves user X's profile. | |||
| (B-EX) Device B discovers, enrolls and obtains notification related | (B-EX) Device B discovers, enrolls and obtains notification related | |||
| to user X's profile. | to user X's profile. | |||
| (B-RX) Device B retrieves user X's profile. | (B-RX) Device B retrieves user X's profile. | |||
| (HPut) Changes affected by the user via the user Interface (UI) are | (HPut) Changes affected by the user via the user interface are | |||
| uploaded to the HTTP Server. | uploaded to the HTTP Server. | |||
| * Note: The UI itself can act as a device and subscribe to user | * Note: The UI itself can act as a device and subscribe to user | |||
| X's profile. This is not the case in the example shown. | X's profile. This is not the case in the example shown. | |||
| (HRes) Changes are accepted by the HTTP server. | (HRes) Changes are accepted by the HTTP server. | |||
| (A-NT) PDS transmits a NOTIFY message to device A indicating the | (A-NT) PDS transmits a NOTIFY message to device A indicating the | |||
| changed profile. A sample message is shown below: | changed profile. A sample message is shown below: | |||
| Note: Some of the fields (e.g., Via) are continued on a | Note: Some of the fields (e.g., Via) are continued on a | |||
| separate line due to format constraints of this document. | separate line due to format constraints of this document. | |||
| NOTIFY sip:userX@192.0.2.44 SIP/2.0 | NOTIFY sip:userX@192.0.2.44 SIP/2.0 | |||
| skipping to change at page 47, line 6 ¶ | skipping to change at page 48, line 6 ¶ | |||
| the Request-URI and event header contents to route it to a PDS (via | the Request-URI and event header contents to route it to a PDS (via | |||
| other SIP proxies, if required). | other SIP proxies, if required). | |||
| When a PDS receives the enrollment request, it can either challenge | When a PDS receives the enrollment request, it can either challenge | |||
| any contained identity or admit the enrollment. Authorization rules | any contained identity or admit the enrollment. Authorization rules | |||
| then decide if the enrollment gets accepted. If accepted, the PDS | then decide if the enrollment gets accepted. If accepted, the PDS | |||
| sends an initial notification that contains either the profile data, | sends an initial notification that contains either the profile data, | |||
| or content indirection information. The profile data can contain | or content indirection information. The profile data can contain | |||
| generic profile data (common across multiple devices) or information | generic profile data (common across multiple devices) or information | |||
| specific to an entity (such as the device or a user). If specific to | specific to an entity (such as the device or a user). If specific to | |||
| an entity, it and may contain sensitive information such as | an entity, it may contain sensitive information such as credentials. | |||
| credentials. Compromise of sensitive data can lead to threats such | Compromise of sensitive data can lead to threats such as | |||
| as impersonation attacks (establishing rogue sessions), theft of | impersonation attacks (establishing rogue sessions), theft of service | |||
| service (if services are obtainable), and zombie attacks. Even if | (if services are obtainable), and zombie attacks. It is important | |||
| the profile data is provided using content indirection, PCC | for the device to ensure the authenticity of the PNC and the PCC | |||
| information within the notification can lead to threats such as | since impersonation of the SIP service provider can lead to Denial of | |||
| denial of service attacks (rogue devices bombard the PCC with | Service and Man-in-the-Middle attacks. | |||
| requests for a specific profile) and attempts to modify erroneous | ||||
| data onto the PCC (since the location and format may be known). It | ||||
| is also important for the device to ensure the authenticity of the | ||||
| PNC since impersonation of the SIP service provider can lead to | ||||
| Denial of Service and Man-in-the-Middle attacks. | ||||
| Profile content retrieval allows a device to retrieve profile data | Profile content retrieval allows a device to retrieve profile data | |||
| via content indirection from a PCC. This communication is | via content indirection from a PCC. This communication is | |||
| accomplished using one of many profile delivery protocols or | accomplished using one of many profile delivery protocols or | |||
| frameworks, such as HTTP or HTTPS as specified in this document. | frameworks, such as HTTP or HTTPS as specified in this document. | |||
| However, since the profile data returned is subject to the same | However, since the profile data returned is subject to the same | |||
| considerations as that sent via profile notification, similar threats | considerations as that sent via profile notification, similar threats | |||
| exist. Thus, for the delivery of any sensitive profile data, | exist. For example, denial of service attacks (rogue devices bombard | |||
| the PCC with requests for a specific profile) and attempts to modify | ||||
| erroneous data onto the PCC (since the location and format may be | ||||
| known). Thus, for the delivery of any sensitive profile data, | ||||
| authentication of the entity requesting profile data is required. It | authentication of the entity requesting profile data is required. It | |||
| is also important for the requesting entity to authenticate the PDS | is also important for the requesting entity to authenticate the | |||
| and ensure that the sensitive profile data is protected via message | profile source via content indirection, and ensure that the sensitive | |||
| integrity. For sensitive data that should not be subject to | profile data is protected via message integrity. For sensitive data | |||
| snooping, privacy is also required. | that should not be subject to snooping, privacy is also required. | |||
| The following sub-sections highlight the security considerations that | The following sub-sections highlight the security considerations that | |||
| are specific to each profile type. | are specific to each profile type. | |||
| 9.1. Local-network profile | 9.1. Local-network profile | |||
| A local network may or may not (e.g., home router) support local- | A local network may or may not (e.g., home router) support local- | |||
| network profiles as specified in this framework. Even if supported, | network profiles as specified in this framework. Even if supported, | |||
| the PDS may only be configured with a generic local-network profile | the PDS may only be configured with a generic local-network profile | |||
| that is provided to every device that requests the local-network | that is provided to every device that requests the local-network | |||
| profile. Such a PDS may not implement any authentication | profile. Such a PDS may not implement any authentication | |||
| requirements or TLS. | requirements or TLS. | |||
| Alternatively, certain deployments may require the entities - device | Alternatively, certain deployments may require the entities - device | |||
| and the PDS - to authenticate each other prior to succesful profile | and the PDS - to authenticate each other prior to successful profile | |||
| enrollment. Such networks may pre-configure user identities to the | enrollment. Such networks may pre-configure user identities to the | |||
| devices and allow user-specific local-network profiles. In such | devices and allow user-specific local-network profiles. In such | |||
| networks the PDS will support digest, and the devices are configured | networks the PDS will support digest, and the devices are configured | |||
| with user identities and credentials as specified in Section 5.3.1. | with user identities and credentials as specified in Section 5.3.1. | |||
| If sensitive profile data is being transmitted, the user identity is | If sensitive profile data is being transmitted, the user identity is | |||
| a SIPS URI that results in TLS with the next-hop (which is | a SIPS URI that results in TLS with the next-hop (which is | |||
| authenticated), and digest authentication is used by the PDS and the | authenticated), and digest authentication is used by the PDS and the | |||
| device. | device. | |||
| This framework supports both use cases and any variations in-between. | This framework supports both use cases and any variations in-between. | |||
| However, devices obtaining local-network profiles from an | However, devices obtaining local-network profiles from an | |||
| unauthenticated PDS are cautioned against potential MiM or PDS | unauthenticated PDS are cautioned against potential Man-in-the-Middle | |||
| impersonation attacks. This framework requires that a device reject | or PDS impersonation attacks. This framework requires that a device | |||
| sensitive data, such as credentials, from unauthenticated local- | reject sensitive data, such as credentials, from unauthenticated | |||
| network sources. It also prohibits devices from responding to | local-network sources. It also prohibits devices from responding to | |||
| authentication challenges in the absence of TLS. Responding to | authentication challenges in the absence TLS on all hops as a result | |||
| unauthenticated challenges allows for dictionary attacks that can | of using a SIPS URI. Responding to unauthenticated challenges allows | |||
| reveal weak passwords. | for dictionary attacks that can reveal weak passwords. The only | |||
| exception to accepting such sensitive data without authentication of | ||||
| the PDS is in the case of bootstrapping (see Section 5.3.1). In the | ||||
| case of bootstrapping, the methods employed need to be aware of | ||||
| potential security threats such as impersonation. | ||||
| The use of SIP Identity is useful for the device to validate | The use of SIP Identity is useful for the device to validate | |||
| notifications in the absence of a secure channel such as TLS. In | notifications in the absence of a secure channel such as TLS when a | |||
| such cases the device can validate the SIP Identity header to verify | SIPS URI is used. In such cases the device can validate the SIP | |||
| the source of the local-network profile. However, the presence of | Identity header to verify the source of the profile notification, and | |||
| the header does not guarantee the validity of the data. It verifies | the source of the profile data when content indirection is not used. | |||
| the source and confirms data integrity, but the data obtained from an | However, the presence of the header does not guarantee the validity | |||
| undesired source may still be invalid, e.g., invalid outbound proxy | of the data. It verifies the source and confirms data integrity, but | |||
| information, resulting in Denial of Service. Thus, devices | the data obtained from an undesired source may still be invalid, | |||
| requesting the local-network profile from unknown networks need to be | e.g., invalid outbound proxy information, resulting in Denial of | |||
| prepared to discard information that prevent retrieval of other, | Service. Thus, devices requesting the local-network profile from | |||
| required, profiles. | unknown networks need to be prepared to discard information that | |||
| prevent retrieval of other, required, profiles. | ||||
| 9.2. Device profile | 9.2. Device profile | |||
| Device profiles deal with device-specific configuration. They may be | Device profiles deal with device-specific configuration. They may be | |||
| provided to unknown devices that are attempting to obtaining profiles | provided to unknown devices that are attempting to obtaining profiles | |||
| for purposes such as trials, self-subscription (not to be confused | for purposes such as trials, self-subscription (not to be confused | |||
| with [RFC3265]) and emergency services ([I-D.ietf-ecrit-phonebcp]). | with [RFC3265]) and emergency services ([I-D.ietf-ecrit-phonebcp]). | |||
| This framework allows for the device profile to be used for | This framework allows for the device profile to be used for | |||
| bootstrapping a device. Such boostrapping profile data may contain | bootstrapping a device. Such bootstrapping profile data may contain | |||
| enough information to connect to a Provider. For example, it may | enough information to connect to a Provider. For example, it may | |||
| enable the device to communicate with a device provider, allowing for | enable the device to communicate with a device provider, allowing for | |||
| trial or self-subscription services via visual or audio interfaces | trial or self-subscription services via visual or audio interfaces | |||
| (e.g., interactive voice response), or customer service | (e.g., interactive voice response), or customer service | |||
| representatives. The profile data may also allow the device a choice | representatives. The profile data may also allow the device a choice | |||
| of device providers and allow the end-user to choose one. The | of device providers and allow the end-user to choose one. The | |||
| profile data may also contain identities and credentials (temporary | profile data may also contain identities and credentials (temporary | |||
| or long-term) that can be used to obtain further profile data from | or long-term) that can be used to obtain further profile data from | |||
| the network. If it contains such sensitive data, the framework | the network. This framework recommends the use of the SIP Identity | |||
| recommends the use of the SIP Identity header by the PDS. However, | header by the PDS. However, to be able to validate the SIP Identity | |||
| to be able to validate the header, the device needs to be pre- | header, the device needs to be pre-configured with the knowledge of | |||
| configured with the knowledge of allowable domains or certificates | allowable domains or certificates for validation (e.g., using PKI). | |||
| for validation (e.g., using PKI). If not, the device can still | If not, the device can still guarantee header and body integrity if | |||
| guarantee header and body integrity if the profile data contains the | the profile data contains the domain certificate (but the data can | |||
| domain certificate (but the data can still be invalid or malicious). | still be invalid or malicious). In such cases, devices supporting | |||
| In such cases, devices supporting user interfaces may obtain | user interfaces may obtain confirmation from the user trying to | |||
| confirmation from the user trying to boostrap the device (confirming | bootstrap the device (confirming header and body integrity). | |||
| header and body integrity). However, when the SIP Identity header is | However, when the SIP Identity header is not present, or the device | |||
| not present, or the device is not capable of validating it, the | is not capable of validating it, the bootstrapping data is | |||
| bootstrapping data is unauthenticated and obtained without any | unauthenticated and obtained without any integrity protection. Such | |||
| integrity protection. Such bootstrapping data, however, may contain | bootstrapping data, however, may contain only temporary credentials | |||
| only temporary credentials (SIPS URI and digest credentials) that can | (SIPS URI and digest credentials) that can be used to reconnect to | |||
| be used to reconnect to the network to ensure message integrity and | the network to ensure message integrity and privacy prior to | |||
| privacy prior to obtaining long-term credentials. It is to be noted | obtaining long-term credentials. It is to be noted that such devices | |||
| that such devices are at the mercy of the network they request the | are at the mercy of the network they request the device profile from. | |||
| device profile from. If they are initialized in a rogue network, or | If they are initialized in a rogue network, or get hijacked by a | |||
| get hijacked by a rogue PDS, the end-user may be left without desired | rogue PDS, the end-user may be left without desired device operation | |||
| device operation or, worse, unwanted operation. To mitigate such | or, worse, unwanted operation. To mitigate such factors the device | |||
| factors the device provider may communicate temporary credentials | provider may communicate temporary credentials (e.g., passwords that | |||
| (PINs that can be entered via an interface) or permanent credentials | can be entered via an interface) or permanent credentials (e.g., a | |||
| (e.g., a USB device) to the end-user for connectivity. If such | USB device) to the end-user for connectivity. If such methods are | |||
| methods are used then large-entropy credentials MUST be used, or | used, those credentials MUST be quickly replaced by large-entropy | |||
| quickly replaced with such, to minimize the impact of dictionary | credentials, to minimize the impact of dictionary attacks. Future | |||
| attacks. Future enhancements to this framework may specify device | enhancements to this framework may specify device capabilities that | |||
| capabilities that allow for authentication without any pre- | allow for authentication without any provider specific configuration | |||
| configuration (e.g., X.509 certificates using PKI). Alternatively, a | (e.g., X.509 certificates using PKI can allow for authentication by | |||
| PDS can use secure content indirection mechanisms such as HTTPS to | any provider with access to the CA certificate). Alternatively, the | |||
| provide the bootstrapping data. | device may be pre-configured with with credentials for use with | |||
| content indirection mechanisms. In such circumstances a PDS can use | ||||
| secure content indirection mechanism, such as HTTPS, to provide the | ||||
| bootstrapping data. | ||||
| Once a device is associated with a device provider the device profile | Once a device is associated with a device provider the device profile | |||
| is vital to device operation. This is because the device profile can | is vital to device operation. This is because the device profile can | |||
| contain important operational information such as users that are to | contain important operational information such as users that are to | |||
| be allowed access (white-list or black-list), user credentials (if | be allowed access (white-list or black-list), user credentials (if | |||
| required) and other sensitive information. Thus, it is necessary to | required) and other sensitive information. Thus, it is necessary to | |||
| ensure that any device profile containing sensitive information is | ensure that any device profile containing sensitive information is | |||
| obtained via an authenticated source, with integrity protection, and | obtained via an authenticated source, with integrity protection, and | |||
| delivered to an authenticated device. For sensitive information such | delivered to an authenticated device. For sensitive information such | |||
| as credentials, privacy is also required. The framework requires | as credentials, privacy is also required. The framework requires | |||
| that devices obtain sensitive information only from authenticated | that devices obtain sensitive information only from authenticated | |||
| entities except while it is being bootstrapped. In cases where | entities except while it is being bootstrapped. In cases where | |||
| privacy needs to be mandated for notifications, the device provider | privacy needs to be mandated for notifications, the device provider | |||
| can configure the device with a SIPS URI, to be used as the | can configure the device with a SIPS URI, to be used as the | |||
| subscription URI, during profile enrollment. The framework also | subscription URI, during profile enrollment. The framework also | |||
| requires that a PDS presenting sensitive profile data to use digest | requires a PDS presenting sensitive profile data to use digest | |||
| authentication. This ensures that the data is delivered to an | authentication. This ensures that the data is delivered to an | |||
| authenticated entity. Authentication of profile retrieval via | authenticated entity. Authentication of profile retrieval via | |||
| content indirection for sensitive profiles is via HTTPS. | content indirection for sensitive profiles is via HTTPS utilizing | |||
| HTTP digest. | ||||
| 9.3. User profile | 9.3. User profile | |||
| Devices can only request user profiles for users that are known by a | Devices can only request user profiles for users that are known by a | |||
| SIP service provider. PDSs are required to reject user profile | SIP service provider. PDSs are required to reject user profile | |||
| enrollment requests for any users that are unknown in the network. | enrollment requests for any users that are unknown in the network. | |||
| For known user AoRs that are allowed to retrieve profiles, the | For known user AoRs that are allowed to retrieve profiles, the | |||
| security considerations are similar to that of the device profile | security considerations are similar to that of the device profile | |||
| (except for bootstrapping). | (except for bootstrapping). | |||
| skipping to change at page 50, line 48 ¶ | skipping to change at page 52, line 6 ¶ | |||
| from Counterpath, Alvin Jiang of Engin and Francois Audet from | from Counterpath, Alvin Jiang of Engin and Francois Audet from | |||
| Nortel. | Nortel. | |||
| The following SIPPING WG members are thanked for numerous reviews, | The following SIPPING WG members are thanked for numerous reviews, | |||
| comments and recommendations: John Elwell from Siemens, Donald Lukacs | comments and recommendations: John Elwell from Siemens, Donald Lukacs | |||
| from Telcordia, Roni Even from Polycom, David Robbins from Verizon, | from Telcordia, Roni Even from Polycom, David Robbins from Verizon, | |||
| Shida Schubert from NTT Advanced Technology Corporation, and Eugene | Shida Schubert from NTT Advanced Technology Corporation, and Eugene | |||
| Nechamkin from Broadcom. The editor would also like to extend a | Nechamkin from Broadcom. The editor would also like to extend a | |||
| special thanks to the comments and recommendations provided by the | special thanks to the comments and recommendations provided by the | |||
| SIPPING WG, specifically Keith Drage from Lucent (restructuring | SIPPING WG, specifically Keith Drage from Lucent (restructuring | |||
| proposal) and John Elwell from Siemens. | proposal) and John Elwell from Siemens (numerous reviews and | |||
| recommendations). | ||||
| Additionally, appreciation is also due to Peter Koch for expert DNS | Additionally, appreciation is also due to Peter Koch for expert DNS | |||
| advice. | advice. | |||
| And finally, sincere appreciation is extended to the chairs (Mary | And finally, sincere appreciation is extended to the chairs (Mary | |||
| Barnes from Nortel and Gonzalo Camarillo from Ericsson) and the Area | Barnes from Nortel and Gonzalo Camarillo from Ericsson) and the Area | |||
| Directors (Cullen Jennings from Cisco and Jon Peterson from Neustar) | Directors (Cullen Jennings from Cisco and Jon Peterson from Neustar) | |||
| for facilitating discussions, reviews and contributions. | for facilitating discussions, reviews and contributions. | |||
| 11. References | 11. References | |||
| skipping to change at page 52, line 35 ¶ | skipping to change at page 53, line 43 ¶ | |||
| [I-D.ietf-ecrit-phonebcp] | [I-D.ietf-ecrit-phonebcp] | |||
| Rosen, B. and J. Polk, "Best Current Practice for | Rosen, B. and J. Polk, "Best Current Practice for | |||
| Communications Services in support of Emergency Calling", | Communications Services in support of Emergency Calling", | |||
| draft-ietf-ecrit-phonebcp-02 (work in progress), | draft-ietf-ecrit-phonebcp-02 (work in progress), | |||
| September 2007. | September 2007. | |||
| [I-D.ietf-sip-outbound] | [I-D.ietf-sip-outbound] | |||
| Jennings, C. and R. Mahy, "Managing Client Initiated | Jennings, C. and R. Mahy, "Managing Client Initiated | |||
| Connections in the Session Initiation Protocol (SIP)", | Connections in the Session Initiation Protocol (SIP)", | |||
| draft-ietf-sip-outbound-10 (work in progress), July 2007. | draft-ietf-sip-outbound-11 (work in progress), | |||
| November 2007. | ||||
| [RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | [RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | |||
| STD 9, RFC 959, October 1985. | STD 9, RFC 959, October 1985. | |||
| [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | |||
| Extensions", RFC 2132, March 1997. | Extensions", RFC 2132, March 1997. | |||
| [RFC4510] Zeilenga, K., "Lightweight Directory Access Protocol | [RFC4510] Zeilenga, K., "Lightweight Directory Access Protocol | |||
| (LDAP): Technical Specification Road Map", RFC 4510, | (LDAP): Technical Specification Road Map", RFC 4510, | |||
| June 2006. | June 2006. | |||
| skipping to change at page 54, line 7 ¶ | skipping to change at page 55, line 7 ¶ | |||
| CableLabs | CableLabs | |||
| 858 Coal Creek Circle | 858 Coal Creek Circle | |||
| Louisville, Co 80027 | Louisville, Co 80027 | |||
| USA | USA | |||
| Email: sumanth@cablelabs.com | Email: sumanth@cablelabs.com | |||
| URI: http://www.cablelabs.com/ | URI: http://www.cablelabs.com/ | |||
| Full Copyright Statement | Full Copyright Statement | |||
| Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2008). | |||
| This document is subject to the rights, licenses and restrictions | This document is subject to the rights, licenses and restrictions | |||
| contained in BCP 78, and except as set forth therein, the authors | contained in BCP 78, and except as set forth therein, the authors | |||
| retain all their rights. | retain all their rights. | |||
| 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, THE IETF TRUST AND | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | |||
| THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | |||
| OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | |||
| End of changes. 48 change blocks. | ||||
| 210 lines changed or deleted | 246 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/ | ||||