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 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 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. 46 change blocks. | ||||
208 lines changed or deleted | 244 lines changed or added | |||
This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |