draft-ietf-sipping-config-framework-13.txt | draft-ietf-sipping-config-framework-14.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: April 27, 2008 CableLabs | Expires: May 21, 2008 CableLabs | |||
October 25, 2007 | November 18, 2007 | |||
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-13 | draft-ietf-sipping-config-framework-14 | |||
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 April 27, 2008. | This Internet-Draft will expire on May 21, 2008. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2007). | |||
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 | |||
skipping to change at page 2, line 24 | skipping to change at page 2, line 24 | |||
3.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.3. Profile Types . . . . . . . . . . . . . . . . . . . . . . 9 | 3.3. Profile Types . . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.4. Profile delivery stages . . . . . . . . . . . . . . . . . 10 | 3.4. Profile delivery stages . . . . . . . . . . . . . . . . . 10 | |||
4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.1. Simple Deployment Scenario . . . . . . . . . . . . . . . . 11 | 4.1. Simple Deployment Scenario . . . . . . . . . . . . . . . . 11 | |||
4.2. Devices supporting multiple users from different | 4.2. Devices supporting multiple users from different | |||
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 . . . . . . . . . . . . . . . . . . 14 | 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 . . . . . . . . . . . . . 21 | 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 . . . . . . . . . . . . . 24 | 5.2.3. Securing Change Notification . . . . . . . . . . . . . 23 | |||
5.3. Additional Considerations . . . . . . . . . . . . . . . . 24 | 5.3. Additional Considerations . . . . . . . . . . . . . . . . 24 | |||
5.3.1. Identities and Credentials . . . . . . . . . . . . . . 24 | 5.3.1. Identities and Credentials . . . . . . . . . . . . . . 24 | |||
5.3.2. Profile Enrollment Request Attempt . . . . . . . . . . 26 | 5.3.2. Profile Enrollment Request Attempt . . . . . . . . . . 25 | |||
5.3.3. Device Types . . . . . . . . . . . . . . . . . . . . . 30 | 5.3.3. Device Types . . . . . . . . . . . . . . . . . . . . . 29 | |||
5.3.4. Profile Data . . . . . . . . . . . . . . . . . . . . . 30 | 5.3.4. Profile Data . . . . . . . . . . . . . . . . . . . . . 29 | |||
5.3.5. Profile Data Frameworks . . . . . . . . . . . . . . . 31 | 5.3.5. Profile Data Frameworks . . . . . . . . . . . . . . . 30 | |||
5.3.6. Additional Profile Types . . . . . . . . . . . . . . . 31 | 5.3.6. Additional Profile Types . . . . . . . . . . . . . . . 31 | |||
5.3.7. Deployment considerations . . . . . . . . . . . . . . 32 | 5.3.7. Deployment considerations . . . . . . . . . . . . . . 31 | |||
5.4. Usage of Outbound . . . . . . . . . . . . . . . . . . . . 32 | 5.4. Support for NATs . . . . . . . . . . . . . . . . . . . . . 31 | |||
6. Event Package Definition . . . . . . . . . . . . . . . . . . . 33 | 6. Event Package Definition . . . . . . . . . . . . . . . . . . . 32 | |||
6.1. Event Package Name . . . . . . . . . . . . . . . . . . . . 33 | 6.1. Event Package Name . . . . . . . . . . . . . . . . . . . . 32 | |||
6.2. Event Package Parameters . . . . . . . . . . . . . . . . . 33 | 6.2. Event Package Parameters . . . . . . . . . . . . . . . . . 32 | |||
6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 36 | 6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 35 | |||
6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 36 | 6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 35 | |||
6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 37 | 6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 36 | |||
6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 37 | 6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 36 | |||
6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . . 37 | 6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . . 36 | |||
6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . . 38 | 6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . . 37 | |||
6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 38 | 6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 37 | |||
6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 39 | 6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 38 | |||
6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . . 39 | 6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . . 38 | |||
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | |||
7.1. Example 1: Device requesting profile . . . . . . . . . . . 39 | 7.1. Example 1: Device requesting profile . . . . . . . . . . . 38 | |||
7.2. Example 2: Device obtaining change notification . . . . . 42 | 7.2. Example 2: Device obtaining change notification . . . . . 41 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | |||
8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 46 | 8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 45 | |||
8.2. Registry of SIP configuration profile types . . . . . . . 46 | 8.2. Registry of SIP configuration profile types . . . . . . . 45 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 46 | |||
9.1. Local-network profile . . . . . . . . . . . . . . . . . . 49 | 9.1. Local-network profile . . . . . . . . . . . . . . . . . . 47 | |||
9.2. Device profile . . . . . . . . . . . . . . . . . . . . . . 50 | 9.2. Device profile . . . . . . . . . . . . . . . . . . . . . . 48 | |||
9.3. User profile . . . . . . . . . . . . . . . . . . . . . . . 51 | 9.3. User profile . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 52 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 53 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . . 53 | 11.1. Normative References . . . . . . . . . . . . . . . . . . . 51 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . . 54 | 11.2. Informative References . . . . . . . . . . . . . . . . . . 52 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 54 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 52 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 56 | Intellectual Property and Copyright Statements . . . . . . . . . . 54 | |||
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 9, line 31 | skipping to change at page 9, line 31 | |||
variation in between, one needs to allow for profile delivery via | variation in between, one needs to allow for profile delivery via | |||
one, or more, Providers. The framework accomplishes this by | one, or more, Providers. The framework accomplishes this by | |||
specifying multiple profile types and a set of profile delivery | specifying multiple profile types and a set of profile delivery | |||
stages to obtain them. These are introduced in the sub-sections to | stages to obtain them. These are introduced in the sub-sections to | |||
follow. | follow. | |||
3.3. Profile Types | 3.3. Profile Types | |||
The framework handles the presence of potentially different Providers | The framework handles the presence of potentially different Providers | |||
by allowing for multiple profile types. Clients request each profile | by allowing for multiple profile types. Clients request each profile | |||
and obtain them from the same, or different, Providers. Additional | separately, and obtain them from the same, or different, Providers. | |||
profile types may also be specified. A deployment can also choose to | A deployment can also choose to pre-configure the device to request | |||
pre-configure the device to request only a subset of the specified | only a subset of the specified profile types. The framework | |||
profile types. The framework specifies three basic profile types, as | specifies three basic profile types, as follows: | |||
follows: | ||||
Local Network Profile: contains configuration data related to the | Local Network Profile: contains configuration data related to the | |||
local network to which a device is directly connected, provided by | local network to which a device is directly connected, provided by | |||
the Local Network Provider. | the Local Network Provider. | |||
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. | |||
PDSs and devices will implement all the three profile types. Unless | Additional profile types may also be specified. | |||
configured otherwise, a device will try to obtain all the three | PDSs and devices will implement all the three profile types. A | |||
profile types. A retrieval order is specified by the framework. The | device that has not been configured otherwise will try to obtain all | |||
data models associated with each profile type is out of scope for | the three profile types, in the order specified by this framework. | |||
this document. Follow-on standardization activities are expected to | The device can be configuration with a different behavior via profile | |||
specify such data models. | data previously obtained by the device, other means such as pre- | |||
configuration or manual 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 11, line 11 | skipping to change at page 11, line 8 | |||
representative use cases to further illustrate how this Framework can | representative use cases to further illustrate how this Framework can | |||
be utilized in SIP deployments. The first use case is simplistic in | be utilized in SIP deployments. The first use case is simplistic in | |||
nature, whereas the second is relatively complex. The use cases | nature, whereas the second is relatively complex. The use cases | |||
illustrate the effectiveness of the framework in either scenario. | illustrate the effectiveness of the framework in either scenario. | |||
For Security Considerations please refer to Section 5 and Section 9. | For Security Considerations please refer to Section 5 and Section 9. | |||
4.1. Simple Deployment Scenario | 4.1. Simple Deployment Scenario | |||
Description: Consider a deployment scenario (e.g., a small private | Description: Consider a deployment scenario (e.g., a small private | |||
enterprise) where a single entity enables the local network, manages | enterprise) where a participating device implements this framework | |||
deployed devices and provides SIP services. The devices only attach | and is configured, using previously obtained profile data, to request | |||
to the local network, and are pre-configured with a single user. | only the device profile. Assume that the device operates in the same | |||
network as the PDS (i.e., there is no NAT) and it obtains its IP | ||||
The following assumptions apply: | configuration using DHCP. Typical communication between the device | |||
o The device profile data contains all the information necessary | and the PDS will traverse one or more SIP proxies, but is not | |||
for the device to participate in the local network and obtain | required, and is omitted in this illustration. | |||
services. | ||||
o The device is pre-configured to only request the device profile. | ||||
o The enrollment notification contains the profile data (profile | ||||
content retrieval is not required). | ||||
o There are no proxies in the network. | ||||
Figure 4 illustrates this use case and highlights the communications | Figure 4 illustrates the sequence of events that include device | |||
relevant to the framework specified in this document. | startup and a successful profile enrollment for the device profile | |||
that results in device profile data. It then illustrates how a | ||||
change in the profile data is delivered via Profile Change | ||||
Notification. | ||||
+----------------------+ | +----------------------+ | |||
+--------+ | Local Network, Device| | +--------+ | Provider's Network | | |||
| Device | |& SIP Service Provider| | | Device | | | | |||
| | | | | | | | | | |||
+--------+ | DHCP PDS | | +--------+ | DHCP PDS | | |||
+----------------------+ | +----------------------+ | |||
| | | | | | | | |||
(A) |<============== DHCP =============>| | | (A) |<============== DHCP =============>| | | |||
| | | | | | |||
| | | | | | |||
| | | | | | |||
(B) |<=========== Profile Enrollment ============>| | (B) |<=========== Profile Enrollment ============>| | |||
| | Profile data | | | Profile data | |||
skipping to change at page 12, line 4 | skipping to change at page 11, line 41 | |||
| | | | | | |||
| | | | | | |||
(B) |<=========== Profile Enrollment ============>| | (B) |<=========== Profile Enrollment ============>| | |||
| | Profile data | | | Profile data | |||
| | is modified | | | is modified | |||
| | | | | | |||
(C) |<============ Profile Change ================| | (C) |<============ Profile Change ================| | |||
| Notification | | | Notification | | |||
| | | | | | |||
| | | | | | |||
Figure 4: Use Case 1 | Figure 4: Use Case 1 | |||
The following is an explanation of the interactions in Figure 4. | The following is an explanation of the interactions in Figure 4. | |||
(A) Upon initialization, the device obtains IP configuration | (A) Upon initialization, the device obtains IP configuration | |||
parameters using DHCP. | parameters such as IP address using DHCP. | |||
(B) The device performs Profile Enrollment for the device profile; | (B) The device requests profile enrollment for the device profile. | |||
the device profile data is contained in the enrollment | Successful enrollment provides it with a notification containing | |||
notification. | the device profile data. | |||
(C) Due to a modification of the device profile, a Profile Change | (C) Due to a modification of the device profile, a profile change | |||
Notification is sent across to the device, along with the | notification is sent across to the device, along with the | |||
modified profile. | modified profile. | |||
4.2. Devices supporting multiple users from different Service Providers | 4.2. Devices supporting multiple users from different Service Providers | |||
Description: Consider a single device (e.g., Kiosk at an airport) | Description: Consider a single device that allows multiple users to | |||
that allows multiple users to obtain services from a list of pre- | obtain services from different SIP Service Providers, e.g., a kiosk | |||
configured SIP Service Providers. | at an airport. | |||
The following assumptions apply: | The following assumptions apply: | |||
o Provider A is the Device and Local Network Provider for the | o Provider A is the Device and Local Network Provider for the | |||
device, and the SIP Service Provider for user A; Provider B is | device, and the SIP Service Provider for user A; Provider B is | |||
the SIP Service Provider for user B. | the SIP Service Provider for user B. | |||
o Profile enrollment always results in content indirection | o Profile enrollment always results in content indirection | |||
information requiring profile content retrieval. | information requiring profile content retrieval. | |||
o Communication between the device and the PDSs is facilitated by | o Communication between the device and the PDSs is facilitated via | |||
SIP proxies. | one or more SIP proxies (only one is shown in the illustration). | |||
Figure 4 illustrates the use case and highlights the communications | Figure 4 illustrates the use case and highlights the communications | |||
relevant to the framework specified in this document. | relevant to the framework specified in this document. | |||
User User | User User | |||
A B +----------------------+ +----------------------+ | A B +----------------------+ +----------------------+ | |||
+--------+ | Provider | | Provider | | +--------+ | Provider | | Provider | | |||
| Device | | A | | B | | | Device | | A | | B | | |||
| | | | | | | | | | | | | | |||
+--------+ | DHCP PROXY PDS | | PROXY PDS | | +--------+ | DHCP PROXY PDS | | PROXY PDS | | |||
skipping to change at page 14, line 30 | skipping to change at page 14, line 30 | |||
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. | |||
The discovery mechanisms for profile enrollment described by the | ||||
framework, or the profile data themselves, can result in outbound | ||||
proxies that support devices behind NATs, using procedures specified | ||||
in [I-D.ietf-sip-outbound]. | ||||
5. Profile Delivery Framework | 5. Profile Delivery Framework | |||
This section specifies the profile delivery framework. It provides | This section specifies the profile delivery framework. It provides | |||
the requirements for the three profile delivery stages introduced in | the requirements for the three profile delivery stages introduced in | |||
Section 3.4 and presents the associated security requirements. It | Section 3.4 and presents the associated security requirements. It | |||
also presents considerations such as back-off and retry mechanisms. | also presents considerations such as back-off and retry mechanisms. | |||
5.1. Profile delivery stages | 5.1. Profile delivery stages | |||
The three profile delivery stages - enrollment, content retrieval and | The three profile delivery stages - enrollment, content retrieval and | |||
change notification - apply to any profile type specified for use | change notification - apply separately to each profile type specified | |||
with this framework. The following sub-sections provide the | for use with this framework. The following sub-sections provide the | |||
requirements associated with each stage. | requirements associated with each stage. | |||
5.1.1. Profile Enrollment | 5.1.1. Profile Enrollment | |||
Profile enrollment is the process by means of which a device | Profile enrollment is the process by means of which a device | |||
requests, and receives, profile data. Each profile type specified in | requests, and receives, profile data. Each profile type specified in | |||
this document requires an independent enrollment request. However, a | this document requires an independent enrollment request. However, a | |||
particular PDS can support enrollment for one or more profile types. | particular PDS can support enrollment for one or more profile types. | |||
Profile enrollment consists of the following operations, in the | Profile enrollment consists of the following operations, in the | |||
skipping to change at page 15, line 21 | skipping to change at page 15, line 28 | |||
SUBSCRIBE request [RFC3265] for the 'ua-profile' event package, | SUBSCRIBE request [RFC3265] for the 'ua-profile' event package, | |||
specified in Section 6. The profile being requested is indicated | specified in Section 6. The profile being requested is indicated | |||
using the 'profile-type' parameter. The device MUST transmit the | using the 'profile-type' parameter. The device MUST transmit the | |||
SIP SUBSCRIBE message via configured outbound proxies for the | SIP SUBSCRIBE message via configured outbound proxies for the | |||
destination domain, or in accordance with RFC 3263 [RFC3263]. | destination domain, or in accordance with RFC 3263 [RFC3263]. | |||
The device needs certain data to create an enrollment request, | The device needs certain data to create an enrollment request, | |||
form a Request URI, and authenticate to the network. This | form a Request URI, and authenticate to the network. This | |||
includes the profile provider's domain name, identities and | includes the profile provider's domain name, identities and | |||
credentials. Such data can be "configured" during device | credentials. Such data can be "configured" during device | |||
manufacturing, by the user, or via profile data retrieval (see | manufacturing, by the user, or via profile data enrollment (see | |||
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 | |||
skipping to change at page 19, line 27 | skipping to change at page 19, line 29 | |||
SIP UA instance. Even though every device may get the same (or | SIP UA instance. Even though every device may get the same (or | |||
similar) local-network Profile, the uniqueness of the "+sip.instance" | similar) local-network Profile, the uniqueness of the "+sip.instance" | |||
parameter provides an important capability. Having unique instance | parameter provides an important capability. Having unique instance | |||
ID fields allows the management of the local network to track devices | ID fields allows the management of the local network to track devices | |||
present in the network and consequently also manage resources such as | present in the network and consequently also manage resources such as | |||
bandwidth allocation. | bandwidth allocation. | |||
5.1.4.2. Device Profile Type | 5.1.4.2. Device Profile Type | |||
Once associated with a device, the device provider is not expected to | Once associated with a device, the device provider is not expected to | |||
change frequently. An exception is a user who changes device | change frequently. Thus, the device is allowed to, and SHOULD cache | |||
providers, but retains the device. Thus, the device is allowed to, | the Subscription URI for the device profile upon successful | |||
and SHOULD cache the Subscription URI for the device profile upon | enrollment. Exceptions include cases where the device identifier has | |||
successful enrollment. Exceptions include cases where the device | changed (e.g., new network card), device provider information has | |||
identifier has changed (e.g., new network card), device provider | changed (e.g., user initiated change) or the device cannot obtain its | |||
information has changed (e.g., user initiated change) or the device | profile using the Subscription URI. Thus, when available, the device | |||
cannot obtain its profile using the Subscription URI. Thus, when | MUST use a cached Subscription URI. If no cached URI is available | |||
available, the device MUST use a cached Subscription URI. If no | then it needs to create a Subscription URI. To create a Subscription | |||
cached URI is available then it needs to create a Subscription URI. | URI, the device needs a device identity and the device provider's | |||
To create a Subscription URI, the device needs a device identity and | domain name. Unless already configured, the device needs to discover | |||
the device provider's domain name. Unless already configured, the | the necessary information and form the subscription URI. In such | |||
device needs to discover the necessary information and form the | cases, the following requirements apply for creating a Subscription | |||
subscription URI. In such cases, the following requirements apply | URI for requesting the device profile: | |||
for creating a Subscription URI for requesting the device profile: | ||||
o The device MUST use the device identifier and the device | o The device MUST populate the user part of the Request URI with the | |||
provider's domain name to form the Request URI. | device identifier. The device MUST set the host portion of the | |||
Request URI to the domain name of the device provider. The device | ||||
identifier format is explained in detail later in this section. | ||||
o The device MUST set the "From" field to a value of anonymous@ | o The device MUST set the "From" field to a value of anonymous@ | |||
<device provider's domain>. | <device provider's domain>. | |||
o The device MUST include the +sip.instance parameter within the | o The device MUST include the +sip.instance parameter within the | |||
'Contact' header, as specified in [I-D.ietf-sip-outbound]. The | 'Contact' header, as specified in [I-D.ietf-sip-outbound]. The | |||
device MUST use the same value as the one presented while | device MUST use the same value as the one presented while | |||
requesting the local-network profile. | requesting the local-network profile. | |||
Note that the discovered AoR for the Request URI can be overridden by | Note that the discovered AoR for the Request URI can be overridden by | |||
a special, provisioned, AoR that is unique to the device. In such | a special, provisioned, AoR that is unique to the device. In such | |||
cases, the provisioned AoR is used to form the Request URI and to | cases, the provisioned AoR is used to form the Request URI and to | |||
populate the From field. | populate the From field. | |||
skipping to change at page 20, line 8 | skipping to change at page 20, line 15 | |||
o The device MUST include the +sip.instance parameter within the | o The device MUST include the +sip.instance parameter within the | |||
'Contact' header, as specified in [I-D.ietf-sip-outbound]. The | 'Contact' header, as specified in [I-D.ietf-sip-outbound]. The | |||
device MUST use the same value as the one presented while | device MUST use the same value as the one presented while | |||
requesting the local-network profile. | requesting the local-network profile. | |||
Note that the discovered AoR for the Request URI can be overridden by | Note that the discovered AoR for the Request URI can be overridden by | |||
a special, provisioned, AoR that is unique to the device. In such | a special, provisioned, AoR that is unique to the device. In such | |||
cases, the provisioned AoR is used to form the Request URI and to | cases, the provisioned AoR is used to form the Request URI and to | |||
populate the From field. | populate the From field. | |||
If the device is not configured with an AoR, and needs a domain name, | If the device is not configured with an AoR, and needs a domain name | |||
it can either use a configured domain name, if available, or discover | to populate the Request URI and the From field, it can either use a | |||
it. The options to discover are described below. The device MUST | configured domain name, if available, or discover it. The options to | |||
use the results of each successful discovery process for one | discover are described below. The device MUST use the results of | |||
enrollment attempt, in the order specified below. | each successful discovery process for one enrollment attempt, in the | |||
order specified below. | ||||
o Option 1: Devices that support DHCP MUST attempt to obtain the | o Option 1: Devices that support DHCP MUST attempt to obtain the | |||
hostname of the outbound proxy during the DHCP process, using the | domain name of the outbound proxy during the DHCP process, using | |||
DHCP option for SIP servers defined in [RFC3361] or [RFC3319] (for | the DHCP option for SIP servers defined in [RFC3361] or [RFC3319] | |||
IPv4 and IPv6 respectively). | (for IPv4 and IPv6 respectively). | |||
o Option 2: Devices that support DHCP MUST attempt to obtain the | o Option 2: Devices that support DHCP MUST attempt to obtain the | |||
local IP network domain during the DHCP process (refer to | local IP network domain during the DHCP process (refer to | |||
[RFC2132] and [RFC4704] ). | [RFC2132] and [RFC4704] ). | |||
o Option 3: Devices MUST use the local network domain name | o Option 3: Devices MUST use the local network domain name | |||
(configured or discovered to retrieve the local-network profile), | (configured or discovered to retrieve the local-network profile), | |||
prefixing it with the label "_sipuaconfig". | prefixing it with the label "_sipuaconfig". | |||
If the device needs to create a subscription URI and needs to use its | If the device needs to create a subscription URI and needs to use its | |||
device identifier, it MUST use the UUID-based URN representation as | device identifier, it MUST use the UUID-based URN representation as | |||
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 MAC Address, it SHOULD | o If the device cannot use a non-alterable device identifier, it | |||
use an alternative non-alterable device identifier. For example, | SHOULD use an alternative non-alterable device identifier. For | |||
the International Manufacturer's Equipment Identifier (IMEI) for | example, the International Manufacturer's Equipment Identifier | |||
mobile devices. | (IMEI) for 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 As a note, when the URN is used as the user part of the Request | o Note: when the URN is used as the user part of the Request URI, it | |||
URI, it MUST be URL escaped | MUST be URL escaped since the colon (":") is not a legal character | |||
The colon (":") is not a legal character in the user part of an | in the user part of an addr-spec ([RFC4122]), and must be escaped. | |||
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@ | |||
example.com | example.com | |||
The ABNF for the UUID representation is provided in [RFC4122] | The ABNF for the UUID representation is provided in [RFC4122] | |||
skipping to change at page 21, line 20 | skipping to change at page 21, line 25 | |||
5.1.4.3. User Profile Type | 5.1.4.3. User Profile Type | |||
To create a Subscription URI to request the user profile on behalf of | To create a Subscription URI to request the user profile on behalf of | |||
a user, the device needs to know the user's AoR. This can be | a user, the device needs to know the user's AoR. This can be | |||
statically or dynamically configured on the device (e.g., user input, | statically or dynamically configured on the device (e.g., user input, | |||
or propagated as part of the device profile). Similar to device | or propagated as part of the device profile). Similar to device | |||
profiles, the content and propagation of user profiles may differ, | profiles, the content and propagation of user profiles may differ, | |||
based on deployment scenarios (i.e., users belonging to the same | based on deployment scenarios (i.e., users belonging to the same | |||
domain may - or may not - be provided the same profile). To create a | domain may - or may not - be provided the same profile). To create a | |||
subscription URI, the following rules apply: | subscription URI, the following rules apply: | |||
o The device MUST set the Request URI to the user AoR. | o The device MUST set the Request URI to the user AoR. | |||
o The device MUST populate the "From" field with the user AoR. | o The device MUST populate the "From" field with the user AoR. | |||
An authoritative SIP proxy for a SIP provider's network that receives | ||||
a profile enrollment request for the user profile type will route | ||||
based on the Event Header field values, thus allowing a subscription | ||||
to the user's AoR to be routed to the appropriate PDS. | ||||
5.2. Securing Profile Delivery | 5.2. Securing Profile Delivery | |||
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. At a minimum, authentication and | unwanted elements during transit. For profile data that contains | |||
message integrity are required to ensure that the profile contents | sensitive information, authentication and message integrity are | |||
were received by a valid entity, from a valid source, and without any | required to ensure that the profile contents were received by a valid | |||
modifications during transit. For profiles that contain sensitive | entity, from a valid source, and without any modifications during | |||
data, privacy is required to ensure that the data is not snooped by | transit. For profiles that contain sensitive data, privacy is also | |||
unwanted elements. | required. | |||
For an overview of potential security threats, refer to Section 9.The | For an overview of potential security threats, refer to Section 9. | |||
requirements to address the concerns are required for all stages of | For information on how the device can be configured with identities | |||
profile delivery, and are presented in the following subsections. | and credentials, refer to Section 5.3.1. The following subsections | |||
provide the security requirements associated with each profile | ||||
delivery stage, and applies to each of profile types specified by | ||||
this framework. | ||||
5.2.1. Securing Profile Enrollment | 5.2.1. Securing Profile Enrollment | |||
During profile enrollment, the device needs to authenticate two | Profile enrollment may result in sensitive profile data. In such | |||
entities. The next-hop entity, i.e., a proxy or a PDS, to which the | cases, the PDS MUST authenticate the device, except during the | |||
device transmits the profile enrollment request, and the initial | bootstrapping scenario when the device does not have existing | |||
notification from the PDS. On the Provider's side, a PDS that | credentials. Additionally, the device MUST authenticate the PDS to | |||
recognizes an identity, such as the user AoR, that will result in | ensure that it is obtaining sensitive profile data from a valid PDS, | |||
sensitive (or even non-generic) data included in the initial or | except in the bootstrapping scenario. | |||
change notifications, will need to authenticate the device claiming | ||||
such identities. | ||||
Authentication of the next-hop entity by the device is accomplished | ||||
by using the procedures specified in [RFC2818], Section 3.1, over an | ||||
establish TLS connection ([RFC4346]). The 'Server Identity' in this | ||||
case is always the domain of the next-hop SIP entity. A device | ||||
presenting a SIPS URI as a user AoR MUST establish TLS with the next- | ||||
hop SIP entity to which it sends the enrollment request. In all | ||||
other cases, the device SHOULD still attempt establishment of TLS | ||||
with the next-hop SIP entity. An exception is when it is explicitly | ||||
configured not to. If it attempts to establish TLS and it fails | ||||
because the next-hop SIP entity does not support TLS, the device | ||||
SHOULD attempt other resolved next-hop SIP entities prior to | ||||
attempting enrollment without TLS. If the device attempts to | ||||
establish a TLS session and fails to verify the next-hop entity | ||||
(e.g., the domain name could not be verified) the device MUST NOT | ||||
continue with the current enrollment request, and must retry with | ||||
other resolved next-hop SIP entities. If the device is attempting to | ||||
establish TLS, and exhausts the entire list of next-hop entities, | ||||
then: | ||||
o if the device has a user interface, and unless configured not to, | ||||
the device SHOULD prompt the user if it can continue without TLS; | ||||
o if the device has no user interface, and unless configured not to, | ||||
the device MUST retry enrollment without TLS and without | ||||
presenting any configured user AoR (note: this means that user | ||||
profiles cannot be retrieved). | ||||
In the absence of a Server Identity authenticated TLS session with | ||||
the next-hop SIP entity: | ||||
o the device MUST NOT respond to any authentication challenges; | ||||
o the device MUST ignore any notifications containing sensitive | ||||
profile data. | ||||
Once enrolled, the device obtains the initial notification. This is | To authenticate a device that has been configured with identities and | |||
authenticated using two methods. If this initial notification was | credentials as specified in Section 5.3.1 and support profiles | |||
transmitted on the mutually authenticated TLS session established for | containing sensitive profile data (refer to Section 5.3.4), devices | |||
enrollment requests, then it is considered authenticated. If not, | and PDSs MUST support Digest Authentication as specified in | |||
the device MUST verify the presence of a SIP Identity header from the | [RFC3261]. Future enhancements may provide other authentication | |||
PDS and validate that it belongs to the Provider's domain. If the | methods such as authentication using X.509 certificates. For the | |||
SIP Identity header is absent or the device cannot validate it, the | device to authenticate the PDS, the device MUST mutually authenticate | |||
device MUST reject any sensitive profile data. If the SIP Identity | with the PDS during digest authentication (device challenges the | |||
header is present, and the device cannot validate it, then it MUST | client that responds with the Authorization header). Transmission of | |||
reject the profile data and retry enrollment. To allow for this | sensitive profile data also requires message integrity. This can be | |||
authentication, the PDS SHOULD include the SIP Identity header as | provided by configuring the device with a SIPS URI resulting in TLS | |||
specified in [RFC4474]. Exceptions are PDSs that do not serve | establishment ([RFC4346]). TLS also prevents offline dictionary | |||
sensitive profiles, or those in deployments where communication with | attacks when digest authentication is used. Thus, in the absence of | |||
the PDS in the absence of a mutually authenticated TLS is disallowed. | TLS, the device MUST NOT respond to any authentication challenges. | |||
When the SIP Identify header is used, the PDS MUST set the host | It is to be noted that the digest credentials used for obtaining | |||
portion of the AoR in the 'From' header to the Provider's domain. | profile data via this framework may, or may not, be the same as that | |||
used for SIP registration (see Section 5.3.1). | ||||
Note that both Server Identity authentication ([RFC2818]) and SIP | When the PDS challenges a profile enrollment request, and it fails, | |||
Identity ([RFC4474] require X.509 certificates. Additionally, the | the PDS MAY refuse enrollment or provide profile data without the | |||
use of TLS and mutual authentication also provides message integrity | user-specific information (e.g., to bootstrap a device that may have | |||
and privacy between the device and the next-hop entity. When the | misplaced credentials). If the device challenges, but fails to | |||
next-hop entity is a proxy, the Provider will need ensure mutual | authenticate the PDS, it MUST reject the initial notification and | |||
authentication and integrity between intermediary components such as | retry the profile enrollment process. If the device is configured | |||
proxies and PDSs. This is mandatory when a SIPS URI is presented by | with a SIPS URI and TLS establishment fails because the next-hop SIP | |||
the device. | entity does not support TLS, the device SHOULD attempt other resolved | |||
next-hop SIP entities. When the device establishes TLS with the | ||||
next-hop entity, the device MUST use the procedures specified in | ||||
[RFC2818], Section 3.1, for authentication, unless it does not have | ||||
any configured information to verify the same (e.g., prior to | ||||
bootstrapping). The 'Server Identity' in this case is always the | ||||
domain of the next-hop SIP entity. If the device attempts | ||||
validation, and it fails, it MUST reject the intial notification and | ||||
retry profile enrollment. In the absence of TLS and a mechanism for | ||||
mutual authentication, the PDS MUST NOT present any sensitive profile | ||||
data in the initial notification, except when the device is being | ||||
boostrapped. It MAY still use content indirection to transmit | ||||
sensitive profile data. | ||||
Authentication of the identity requesting the profile is accomplished | When a device is being provided with bootstrapping profile data | |||
by the PDS by using the Digest Authentication mechanism, over TLS. | containing sensitive information, the PDS SHOULD use the SIP Identity | |||
Thus, devices and PDSs MUST implement Digest Authentication specified | header as specified in [RFC4474] within the notification. This helps | |||
in [RFC3261], and TLS as specified in [RFC4346]. If the device | with devices that MAY be pre-configured with certificates to validate | |||
presents a user AoR, it should be recognized by the network. If not | bootstrapping sources (e.g., list of allowed domain certificates, or | |||
(e.g., discovered or device identities) it may not be known by the | a list of root CA certificates using PKI). Further, the profile data | |||
PDS (and hence, may not be associated with credentials). If known by | may contain the domain certificate used for creating the SIP Identity | |||
the PDS and the notification will result in data specific to the user | header, for devices that are not pre-configured with any information, | |||
AoR, the PDS MUST challenge the request using Digest authentication | and can be used to guarantee header and body integrity. It can also | |||
specified in [RFC3261]. If the device successfully responds to the | allow the device to present the identity of the PDS to a user for | |||
challenge, it is provided the initial notification, which contains | verification (if such an interface exists). When the SIP Identity | |||
the profile data within, or via content indirection. If user | header is used, the PDS MUST set the host portion of the AoR in the | |||
authentication fails the PDS MAY refuse enrollment, or provide | 'From' header to the Provider's domain (the user portion is a entity- | |||
profile data without the user-specific information. As a note, if | specific identifier). If the device is capable of validating the SIP | |||
the PDS attempts authentication in the absence of an authenticated | Identity, and it fails, it MUST reject bootstrapping profile data. | |||
TLS session between the device and the next-hop entity, it will be | ||||
ignored by the device. A PDS that does not perform authentication | ||||
MUST use content indirection to a PCC that supports authentication, | ||||
integrity protection and privacy for conveying sensitive 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 | |||
sensitive profile data then the PDS MUST use a HTTPS URI for content | sensitive profile data then the PDS MUST use a HTTPS URI for content | |||
indirection. PCCs and devices MUST NOT use HTTP for sensitive | indirection. PCCs and devices MUST NOT use HTTP for sensitive | |||
profile data. A device MUST authenticate the PCC as specified in | profile data, except for bootstrapping a device via the device | |||
profile. A device MUST authenticate the PCC as specified in | ||||
[RFC2818], Section 3.1. A device that is being provided with profile | [RFC2818], Section 3.1. A device that is being provided with profile | |||
data that contains sensitive data MUST be authenticated using Digest | data that contains sensitive data MUST be authenticated using digest | |||
as specified in [RFC2617], with the exception of a device that is | authentication as specified in [RFC2617], with the exception of a | |||
being bootstrapped for the first time. The resulting mutually | device that is being bootstrapped for the first time via the device | |||
authenticated TLS channel also provides message integrity. | profile. The resulting TLS channel also provides message integrity | |||
and privacy. | ||||
5.2.3. Securing Change Notification | 5.2.3. Securing Change Notification | |||
A successful profile enrollment results in an initial 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 the duration of the subscription. For change notifications | |||
containing sensitive profile data, this framework RECOMMENDS the use | ||||
If the device established TLS with the next-hop entity then any such | of the SIP Identity header as specified in [RFC4474]. When the SIP | |||
notifications SHOULD be sent over the same TLS session by the PDS. | Identity header is used, the PDS MUST set the host portion of the AoR | |||
If the TLS session exists, the device MUST ignore any notifications | in the 'From' header to the Provider's domain (the user portion is a | |||
sent outside the TLS session. If no such TLS session exists, the | entity-specific identifier). This provides header and body integrity | |||
device MUST NOT accept any sensitive profile data without verifying | as well. However, for sensitive profile data that needs privacy and | |||
the presence of, and validating, a SIP Identity header. | is not being transmitted over a channel such as TLS, the PDS MUST use | |||
content indirection. Additionally, the PDS MUST also use content | ||||
A PDS that does not support TLS MUST use content indirection to a PCC | indirection for notifications containing sensitive profile data, when | |||
that supports authentication and integrity protection for conveying | the profile enrollment was not authenticated. | |||
sensitive profile data. | ||||
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. 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 such as | |||
a user AoR. To do so, the device needs to be configured. This can | a user AoR. To do so, the device needs to be configured. This can | |||
be accomplished in one of many ways: | 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 USB drives. | |||
End-user interface | End-user interface | |||
The end-user may be provided with user AoRs and credentials. The | The end-user may be provided with the necessary identities and | |||
end-user can then configure the device (using a user interface), | credentials. The end-user can then configure the device (using a | |||
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 three kinds of | In such a case the device profile can provide one of the following | |||
information: | to bootstap the device: | |||
* Profile data that allows the end-user to communicate with the | ||||
device or SIP service provider. The provider can then use any | ||||
applicable method (e.g., web portal) to provide the user AoR. | ||||
* Profile data that redirects the device to an entity, such as | ||||
the PCC, that can provide identity data. As an example, | ||||
consider a device that has a X.509 certificate that can be | ||||
authenticated by the PCC. In such a case, the PCC can use | ||||
HTTPS to provide the user AoR. | ||||
* Profile data containing user identity to be used. This can be | ||||
used in cases where the device is initialized for the first | ||||
time, or after a factory reset, in the device provider's | ||||
network. | ||||
If a device presents a user AoR in the enrollment request, the PDS | * Profile data that allows the end-user to communicate by non-SIP | |||
can challenge it. To respond to such authentication challenges, the | means with the device provider or SIP service provider. The | |||
device needs to have associated credentials. Thus, any of the | provider can then use any applicable method (e.g., web portal) | |||
configuration methods indicated above need to provide the user | to provide the user AoR. | |||
credentials along with any AoRs. | * Content indirection information to a PCC that can provide | |||
identities and credentials. As an example, consider a device | ||||
that has a X.509 certificate that can be authenticated by the | ||||
PCC. In such a case, the PCC can use HTTPS to provide | ||||
identities and associated credentials. | ||||
* Profile data containing identities and credentials that can be | ||||
used to bootstrap the device. This can be used in cases where | ||||
the device is initialized for the first time, or after a | ||||
factory reset. This can be considered only in cases where the | ||||
device 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. | 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 | ||||
The configured user AoR and associated credentials can be used in | associated with different credentials for digest authentication. In | |||
applicable domains for any of the profile types specified by this | such cases, multiple credentials may be configured, and associated | |||
framework. In the absence of the user AoR, the device is not | with the realms in which they are to be used. This framework | |||
expected to contain any other credentials. Future enhancements can | specifies only digest authentication and the device is not expected | |||
specify additional identities and credentials. | to contain any other credentials. Future enhancements can specify | |||
additional identities and credentials such as X.509 certificates. | ||||
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 28, line 7 | skipping to change at page 27, line 7 | |||
,->| Profile +--/Apply Profile-->| Successful | | ,->| Profile +--/Apply Profile-->| Successful | | |||
/ | | |(monitoring)|<--. | / | | |(monitoring)|<--. | |||
Timeout +--+---------+ +--+----+----+ : | Timeout +--+---------+ +--+----+----+ : | |||
/Retry ; ^ | : ; | /Retry ; ^ | : ; | |||
`------' | NOTIFY w. Cont.Ind | `-------' | `------' | NOTIFY w. Cont.Ind | `-------' | |||
+---/Retrieve Profile-----+ NOTIFY w. Profile | +---/Retrieve Profile-----+ NOTIFY w. Profile | |||
/Apply Profile | /Apply Profile | |||
Figure 6: Device State Diagram | Figure 6: Device State Diagram | |||
As a reminder: | As a reminder: | |||
o The timeout for SIP messages is specified by [RFC3261] | o The timeout for SIP messages is specified by [RFC3261]. In the | |||
cases where this is not specified such as the timeout to wait for | ||||
the initial notification during profile enrollment, it is left to | ||||
device implementations or future protocol enhancements. | ||||
o The timeout for profile retrieval using content indirection will | o The timeout for profile retrieval using content indirection will | |||
be as specified by profile retrieval protocols employed | be as specified by profile retrieval protocols employed. If none | |||
exists, it is left to device implementations. | ||||
In addition, since profile enrollment is a process unique to this | In addition, since profile enrollment is a process unique to this | |||
framework, the device MUST follow the enrollment attempt along with | framework, the device MUST follow the enrollment attempt along with | |||
exponential backoff and retry mechanisms as indicated in Figure 7. | exponential backoff and retry mechanisms as indicated in Figure 7. | |||
Function for Profile Enrollment () | Function for Profile Enrollment () | |||
Iteration i=0 | Init Function: Iteration i=0 | |||
Loop: Attempt | Loop 1: Attempt | |||
Loop: For each SIP Subscription URI | Loop 2: For each SIP Subscription URI | |||
Loop: For each next-hop SIP entity | Loop 3: For each next-hop SIP entity | |||
- Prepare & transmit Enrollment Request | - Prepare & transmit Enrollment Request | |||
- Await Enrollment Acceptance and initial NOTIFY | - Await Enrollment Acceptance and initial NOTIFY | |||
+ If the profile enrollment is successful | + If the profile enrollment is successful | |||
= Exit this function() | = Exit this function() | |||
+ If profile enrollment fails due to an explicit | + If profile enrollment fails due to an explicit | |||
failure or a timeout as specified in RFC3261 | failure or a timeout as specified in RFC3261 | |||
= Continue with this function() | = Continue with the next-hop SIP entity (Loop 3) | |||
End Loop: Next-hop SIP entity contact | End Loop: Loop 3 | |||
End Loop: SIP Subscription URI formation | End Loop: Loop 2 | |||
(Note: If you are here, profile enrollment did not succeed) | (Note: If you are here, profile enrollment did not succeed) | |||
+ Is any valid cached profile data available? | + Is any valid cached profile data available? | |||
= If yes, use it and continue with this function() | = If yes, use it and continue with Loop 1 | |||
+ If the enrollment request is for a non-mandatory profile | + If the enrollment request is for a non-mandatory profile | |||
= then spawn the next profile and continue with this | = Start profile enrollment for the next profile, | |||
function() | if applicable | |||
- Delay for 2^i*(64*T1); -- this is exponential backoff | - Delay for 2^i*(64*T1); -- this is exponential backoff | |||
- increment i; | - increment i; | |||
- If i>8, reset i=8; | - If i>8, reset i=8; | |||
End loop: Attempt | End loop: Loop 1 | |||
End Function() | End Function() | |||
Figure 7: Profile Enrollment Attempt (pseudo-code) | Figure 7: Profile Enrollment Attempt (pseudo-code) | |||
The pseudo-code above (Figure 7) allows for cached profiles to be | The pseudo-code above (Figure 7) allows for cached profiles to be | |||
used. However, any cached Local Network profile MUST NOT be used | used. However, any cached Local Network profile MUST NOT be used | |||
unless the device can ensure that it is in the same local network | unless the device can ensure that it is in the same local network | |||
which provided the cached data. This framework does not provide any | which provided the cached data. This framework does not provide any | |||
procedures for local network recognition. Any cached device and user | procedures for local network recognition. Any cached device and user | |||
profiles MUST only be used in domains that they are associated with. | profiles MUST only be used in domains that they are associated with. | |||
For example, a cached device profile is used only when the associated | For example, a cached device profile is used only when the associated | |||
domain matches the current device provider's domain. If a PDS wants | domain matches the current device provider's domain. If a PDS wants | |||
to invalidate a profile it may do so by transmitting a NOTIFY with an | to invalidate a profile it may do so by transmitting a NOTIFY with an | |||
'empty profile' (not to be confused with an empty NOTIFY). A device | 'empty profile', i.e., profile instance without any included data (if | |||
receiving such a NOTIFY MUST discard the applicable profile (i.e., it | supported by the profile data model; not to be confused with an empty | |||
cannot even store it in the cache). Additionally, if a factory reset | NOTIFY), or via an explicit profile data element that invalidates the | |||
is available and performed on a device, it MUST reset the device to | data. A device receiving such a NOTIFY MUST discard the applicable | |||
its initial state prior to any configuration. Specifically, the | profile (i.e., it cannot even store it in the cache). Additionally, | |||
device MUST set the device back to the state when it was originally | if a factory reset is available and performed on a device, it MUST | |||
distributed. | reset the device to its initial state prior to any configuration. | |||
Specifically, the device MUST set the device back to the state when | ||||
it was originally distributed. | ||||
The order of profile enrollment is important. For the profiles | The order of profile enrollment is important. For the profiles | |||
specified in this framework, the device must enroll in the order: | specified in this framework, the device must enroll in the following | |||
local-network, device and user. The pseudo-code presented earlier | default order: local-network, device and user. The pseudo-code | |||
(Figure 7) differentiates between 'mandatory' and 'non-mandatory' | presented earlier (Figure 7) differentiates between 'mandatory' and | |||
profiles. This distinction is left to profile data definitions. | 'non-mandatory' profiles. This distinction is left to profile data | |||
definitions. | ||||
It is to be noted that this framework does not allow the devices to | It is to be noted that this framework does not allow the devices to | |||
inform the PDSs of profile retrieval errors such as invalid data. | inform the PDSs of profile retrieval errors such as invalid data. | |||
Follow-on standardization activities are expected to address this | Follow-on standardization activities are expected to address this | |||
feature. | feature. | |||
5.3.3. Device Types | 5.3.3. Device Types | |||
The examples in this framework tend to associate devices with | The examples in this framework tend to associate devices with | |||
entities that are accessible to end-users. However, this is not | entities that are accessible to end-users. However, this is not | |||
skipping to change at page 32, line 39 | skipping to change at page 31, line 46 | |||
o The relationship between devices and users can be many-to-many | o The relationship between devices and users can be many-to-many | |||
(e.g., a particular device may allow for many users to obtain | (e.g., a particular device may allow for many users to obtain | |||
subscription services through it, and individual users may have | subscription services through it, and individual users may have | |||
access to multiple devices). | access to multiple devices). | |||
o Each user may have different preferences for use of services, and | o Each user may have different preferences for use of services, and | |||
presentation of those services in the device user interface. | presentation of those services in the device user interface. | |||
o Each user may have different personal information applicable to | o Each user may have different personal information applicable to | |||
use of the device, either as related to particular services, or | use of the device, either as related to particular services, or | |||
independent of them. | independent of them. | |||
5.4. Usage of Outbound | 5.4. Support for NATs | |||
PDSs that support devices behind NATs, and devices that can be behind | PDSs that support devices behind NATs, and devices that can be behind | |||
NATs can use procedures specified in [I-D.ietf-sip-outbound]. The | NATs can use procedures specified in [I-D.ietf-sip-outbound]. The | |||
Outbound proxies can be configured or discovered. Clients that | Outbound proxies can be configured or discovered. Clients that | |||
support such behavior MUST include the 'outbound' option-tag in a | support such behavior MUST include the 'outbound' option-tag in a | |||
Supported header field value, and add the "ob" parameter as specified | Supported header field value, and add the "ob" parameter as specified | |||
in [I-D.ietf-sip-outbound] within the SIP SUBSCRIBE for profile | in [I-D.ietf-sip-outbound] within the SIP SUBSCRIBE for profile | |||
enrollment. | enrollment. | |||
6. Event Package Definition | 6. Event Package Definition | |||
skipping to change at page 34, line 6 | skipping to change at page 33, line 6 | |||
sub-sections. | sub-sections. | |||
6.2.1. profile-type | 6.2.1. profile-type | |||
The "profile-type" parameter is used to indicate the token name of | The "profile-type" parameter is used to indicate the token name of | |||
the profile type the user agent wishes to obtain and to be notified | the profile type the user agent wishes to obtain and to be notified | |||
of subsequent changes. This document defines three logical types of | of subsequent changes. This document defines three logical types of | |||
profiles and their token names. They are as follows: | profiles and their token names. They are as follows: | |||
local-network: specifying the "local-network" type profile indicates | local-network: specifying the "local-network" type profile indicates | |||
the desire for profile data specific to the local network. | the desire for profile data, and potentially, profile change | |||
notifications specific to the local network. | ||||
device: specifying the "device" type profile(s) indicates the desire | device: specifying the "device" type profile(s) indicates the desire | |||
for the profile data and profile change notification that is | for the profile data, and potentially, profile change notification | |||
specific to the device or user agent. | that is specific to the device or user agent. | |||
user: Specifying "user" type profile indicates the desire for the | user: Specifying "user" type profile indicates the desire for the | |||
profile data and profile change notification specific to the user. | profile data, and potentially, profile change notification | |||
specific to the user. | ||||
The profile type is identified in the Event header parameter: | The profile type is identified in the Event header parameter: | |||
"profile-type". A separate SUBSCRIBE dialog is used for each profile | "profile-type". A separate SUBSCRIBE dialog is used for each profile | |||
type. Thus, the subscription dialog on which a NOTIFY arrives | type. Thus, the subscription dialog on which a NOTIFY arrives | |||
implies which profile's data is contained in, or referred to, by the | implies which profile's data is contained in, or referred to, by the | |||
NOTIFY message body. The Accept header of the SUBSCRIBE request MUST | NOTIFY message body. The Accept header of the SUBSCRIBE request MUST | |||
include the MIME types for all profile content types for which the | include the MIME types for all profile content types for which the | |||
subscribing user agent wishes to retrieve profiles, or receive change | subscribing user agent wishes to retrieve profiles, or receive change | |||
notifications. | notifications. | |||
skipping to change at page 35, line 24 | skipping to change at page 34, line 26 | |||
The "effective-by" parameter in the Event header of the NOTIFY | The "effective-by" parameter in the Event header of the NOTIFY | |||
request specifies the maximum number of seconds before the user agent | request specifies the maximum number of seconds before the user agent | |||
must attempt to make the new profile effective. The "effective-by" | must attempt to make the new profile effective. The "effective-by" | |||
parameter MAY be provided in the NOTIFY request for any of the | parameter MAY be provided in the NOTIFY request for any of the | |||
profile types. A value of 0 (zero) indicates that the subscribing | profile types. A value of 0 (zero) indicates that the subscribing | |||
user agent must attempt to make the profiles effective immediately | user agent must attempt to make the profiles effective immediately | |||
(despite possible service interruptions). This gives the PDS the | (despite possible service interruptions). This gives the PDS the | |||
power to control when the profile is effective. This may be | power to control when the profile is effective. This may be | |||
important to resolve an emergency problem or disable a user agent | important to resolve an emergency problem or disable a user agent | |||
immediately. The "effective-by" parameter is ignored in all messages | immediately. If it is absent, the device SHOULD attempt to make the | |||
other than the NOTIFY request. In the following ABNF, EQUAL and | profile data effective at the earliest possible opportunity that does | |||
DIGIT are defined in [RFC3261]. | not disrupt any services being offered. The "effective-by" parameter | |||
is ignored in all messages other than the NOTIFY request. In the | ||||
following ABNF, EQUAL and DIGIT are defined in [RFC3261]. | ||||
Effective-By = "effective-by" EQUAL 1*DIGIT | Effective-By = "effective-by" EQUAL 1*DIGIT | |||
6.2.4. Summary of event parameters | 6.2.4. Summary of event parameters | |||
The following are example Event headers which may occur in SUBSCRIBE | The following are example Event headers which may occur in SUBSCRIBE | |||
requests. These examples are not intended to be complete SUBSCRIBE | requests. These examples are not intended to be complete SUBSCRIBE | |||
requests. | requests. | |||
Event: ua-profile;profile-type=device; | Event: ua-profile;profile-type=device; | |||
skipping to change at page 36, line 34 | skipping to change at page 35, line 39 | |||
profile-type || device | user | local-network | profile-type || device | user | local-network | |||
============================================= | ============================================= | |||
vendor || | | | vendor || | | | |||
model || | | | model || | | | |||
version || | | | version || | | | |||
effective-by || o | o | o | effective-by || o | o | o | |||
6.3. SUBSCRIBE Bodies | 6.3. SUBSCRIBE Bodies | |||
This package defines no use of the SUBSCRIBE request body. If | This package defines no use of the SUBSCRIBE request body. If | |||
present, it SHOULD be ignored. The exception being future | present, it SHOULD be ignored. Exceptions include future | |||
enhancements to the framework which may specify a use for the | enhancements to the framework which may specify a use for the | |||
SUBSCRIBE request body. | SUBSCRIBE request body. | |||
6.4. Subscription Duration | 6.4. Subscription Duration | |||
The duration of a subscription is specific to SIP deployments and no | The duration of a subscription is specific to SIP deployments and no | |||
specific recommendation is made by this Event Package. If absent, a | specific recommendation is made by this Event Package. If absent, a | |||
value of 86400 seconds (24 hours; 1 day) is RECOMMENDED since the | value of 86400 seconds (24 hours; 1 day) is RECOMMENDED since the | |||
presence (or absence) of a device subscription is not time critical | presence (or absence) of a device subscription is not time critical | |||
to the regular functioning of the PDS. | to the regular functioning of the PDS. | |||
skipping to change at page 37, line 12 | skipping to change at page 36, line 13 | |||
subscription, can be accomplished by setting the 'Expires' parameter | subscription, can be accomplished by setting the 'Expires' parameter | |||
to a value of Zero, as specified in [RFC3265]. | to a value of Zero, as specified in [RFC3265]. | |||
6.5. NOTIFY Bodies | 6.5. NOTIFY Bodies | |||
The framework specifying the Event Package allows for the NOTIFY body | The framework specifying the Event Package allows for the NOTIFY body | |||
to contain the profile data, or a pointer to the profile data using | to contain the profile data, or a pointer to the profile data using | |||
content indirection. For profile data delivered via content | content indirection. For profile data delivered via content | |||
indirection, i.e., a pointer to a PCC, then the Content-ID MIME | indirection, i.e., a pointer to a PCC, then the Content-ID MIME | |||
header, as described in [RFC4483] MUST be used for each Profile | header, as described in [RFC4483] MUST be used for each Profile | |||
document URI. At a minimum, the "http:" and "https:" URI schemes | document URI. At a minimum, the "http:" [RFC2616] and "https:" | |||
MUST be supported; other URI schemes MAY be supported based on the | [RFC2818] URI schemes MUST be supported; other URI schemes MAY be | |||
Profile Data Frameworks (examples include FTP [RFC0959], HTTP | supported based on the Profile Data Frameworks (examples include FTP | |||
[RFC2616], HTTPS [RFC2818], LDAP [RFC4510] and XCAP [RFC4825] ). | [RFC0959], LDAP [RFC4510] and XCAP [RFC4825] ). | |||
A non-empty NOTIFY body MUST include a MIME type specified in the | A non-empty NOTIFY body MUST include a MIME type specified in the | |||
'Accept' header of the SUBSCRIBE. Further, if the Accept header of | 'Accept' header of the SUBSCRIBE. Further, if the Accept header of | |||
the SUBSCRIBE included the MIME type message/external-body | the SUBSCRIBE included the MIME type message/external-body | |||
(indicating support for content indirection) then the PDS MAY use | (indicating support for content indirection) then the PDS MAY use | |||
content indirection in the NOTIFY body for providing the profiles. | content indirection in the NOTIFY body for providing the profiles. | |||
6.6. Notifier Processing of SUBSCRIBE Requests | 6.6. Notifier Processing of SUBSCRIBE Requests | |||
A successful SUBSCRIBE request results in a NOTIFY with either | A successful SUBSCRIBE request results in a NOTIFY with either | |||
skipping to change at page 37, line 40 | skipping to change at page 36, line 41 | |||
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. | either accept or 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. no body or content | data) or provide no profile information (i.e., empty NOTIFY). | |||
indirection). | ||||
If the URI in the SUBSCRIBE request is a known identity and the | If the identity indicated in the SUBSCRIBE request (From header) is a | |||
requested profile information is available (i.e. as specified in the | known identity and the requested profile information is available | |||
profile-type parameter of the Event header), the Notifier SHOULD send | (i.e. as specified in the profile-type parameter of the Event | |||
a NOTIFY with profile data. Profile data MAY be sent as profile | header), the Notifier SHOULD send a NOTIFY with profile data. | |||
contents or via Content Indirection (if the content indirection MIME | Profile data MAY be sent as profile contents or via Content | |||
type was included in the Accept header). The Notifier MUST NOT use | Indirection (if the content indirection MIME type was included in the | |||
any scheme that was not indicated in the "schemes" Contact header | Accept header). The Notifier MUST NOT use any scheme that was not | |||
field. | indicated in the "schemes" Contact header field. | |||
The Notifier MAY specify when the new profiles must be made effective | The Notifier MAY specify when the new profiles must be made effective | |||
by the Subscriber by specifying a maximum time in seconds (zero or | by the Subscriber by specifying a maximum time in seconds (zero or | |||
more) in the "effective-by" event header parameter. | more) in the "effective-by" event header parameter. | |||
If the SUBSCRIBE was received over an integrity protected SIP | If the SUBSCRIBE was received over an integrity protected SIP | |||
communications channel, the Notifier SHOULD send the NOTIFY over the | communications channel, the Notifier SHOULD send the NOTIFY over the | |||
same channel. | same channel. | |||
6.8. Subscriber Processing of NOTIFY Requests | 6.8. Subscriber Processing of NOTIFY Requests | |||
skipping to change at page 38, line 38 | skipping to change at page 37, line 38 | |||
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 timeframe 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. The Subscriber wishes to support alternative | with those URI schemes. If the Subscriber wishes to support | |||
URI schemes it MUST be indicated in the "schemes" Contact header | alternative URI schemes they MUST each be indicated in the "schemes" | |||
field parameter as defined in [RFC4483]. The Subscriber MUST also be | Contact header field parameter as defined in [RFC4483]. The | |||
prepared to receive a NOTIFY request with no body. The subscriber | Subscriber MUST also be prepared to receive a NOTIFY request with no | |||
MUST NOT reject the NOTIFY request with no body. The subscription | body. The subscriber MUST NOT reject the NOTIFY request with no | |||
dialog MUST NOT be terminated by a NOTIFY with no body. | body. The subscription dialog MUST NOT be terminated by a empty | |||
NOTIFY, i.e., with no body. | ||||
6.9. Handling of Forked Requests | 6.9. Handling of Forked Requests | |||
This Event package allows the creation of only one dialog as a result | This Event package allows the creation of only one dialog as a result | |||
of an initial SUBSCRIBE request as described in section 4.4.9 of | of an initial SUBSCRIBE request as described in section 4.4.9 of | |||
[RFC3265]. It does not support the creation of multiple | [RFC3265]. It does not support the creation of multiple | |||
subscriptions using forked SUBSCRIBE requests. | subscriptions using forked SUBSCRIBE requests. | |||
6.10. Rate of Notifications | 6.10. Rate of Notifications | |||
skipping to change at page 39, line 19 | skipping to change at page 38, line 19 | |||
Package specification does not specify a throttling or minimum period | Package specification does not specify a throttling or minimum period | |||
between NOTIFY requests | between NOTIFY requests | |||
6.11. State Agents | 6.11. State Agents | |||
State agents are not applicable to this Event Package. | State agents are not applicable to this Event Package. | |||
7. Examples | 7. Examples | |||
This section provides examples along with sample SIP message bodies | This section provides examples along with sample SIP message bodies | |||
relevant to this framework. Both the examples are derived from a | relevant to this framework. Both the examples are derived from the | |||
snapshot of Section 4.1, specifically the request for the device | use case illustrated in Section 4.1, specifically the request for the | |||
profile. The examples are purely informative and in case of | device profile. The examples are informative only. | |||
conflicts with the framework or protocols used for illustration, the | ||||
latter should be deemed normative. | ||||
7.1. Example 1: Device requesting profile | 7.1. Example 1: Device requesting profile | |||
This example illustrates the detailed message flows between the | This example illustrates the detailed message flows between the | |||
device and the SIP Service Provider's network for requesting and | device and the SIP Service Provider's network for requesting and | |||
retrieving the profile (the flow uses the device profile as an | retrieving the profile (the flow uses the device profile as an | |||
example). | example). | |||
The following are assumed for this example: | The following are assumed for this example: | |||
skipping to change at page 41, line 9 | skipping to change at page 40, line 9 | |||
framework. | framework. | |||
* Note: Some of the header fields (e.g., SUBSCRIBE, Event, via) | * Note: Some of the header fields (e.g., SUBSCRIBE, Event, via) | |||
are continued on a separate line due to format constraints of | are continued on a separate line due to format constraints of | |||
this document. | this document. | |||
SUBSCRIBE sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | SUBSCRIBE sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | |||
@example.com SIP/2.0 | @example.com SIP/2.0 | |||
Event: ua-profile;profile-type=device;vendor="vendor.example.net"; | Event: ua-profile;profile-type=device;vendor="vendor.example.net"; | |||
model="Z100";version="1.2.3"; | model="Z100";version="1.2.3"; | |||
From: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | From: anonymous@example.com;tag=1234 | |||
@example.com;tag=1234 | ||||
To: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | To: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | |||
Call-ID: 3573853342923422@192.0.2.44 | Call-ID: 3573853342923422@192.0.2.44 | |||
CSeq: 2131 SUBSCRIBE | CSeq: 2131 SUBSCRIBE | |||
Contact: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | Contact: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | |||
@example.com | @192.168.1.44 | |||
;+sip.instance="<urn:uuid:00000000-0000-0000-0000-123456789AB0>" | ;+sip.instance="<urn:uuid:00000000-0000-0000-0000-123456789AB0>" | |||
;schemes="http,https" | ;schemes="http,https" | |||
Via: SIP/2.0/TCP 192.0.2.41; | Via: SIP/2.0/TCP 192.0.2.41; | |||
branch=z9hG4bK6d6d35b6e2a203104d97211a3d18f57a | branch=z9hG4bK6d6d35b6e2a203104d97211a3d18f57a | |||
Accept: message/external-body, application/x-z100-device-profile | Accept: message/external-body, application/x-z100-device-profile | |||
Content-Length: 0 | Content-Length: 0 | |||
(SRes) | (SRes) | |||
the SUBSCRIBE request is received by a SIP Proxy in the Service | the SUBSCRIBE request is received by a SIP Proxy in the Service | |||
skipping to change at page 42, line 6 | skipping to change at page 41, line 6 | |||
secure communications channel (e.g., TLS). | secure communications channel (e.g., TLS). | |||
(NTFY) | (NTFY) | |||
subsequently, the PDS transmits a SIP NOTIFY message indicating | subsequently, the PDS transmits a SIP NOTIFY message indicating | |||
the profile location | the profile location | |||
* Note: Some of the fields (e.g., content-type) are continued on | * Note: Some of the fields (e.g., content-type) are continued on | |||
a separate line due to format constraints of this document. | a separate line due to format constraints of this document. | |||
NOTIFY sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | NOTIFY sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB | |||
@192.0.2.44 SIP/2.0 | @192.168.1.44 SIP/2.0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
From: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | From: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | |||
;tag=abca | ;tag=abca | |||
To: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | To: sip:urn%3auuid%3a00000000-0000-1000-0000-00FF8D82EDCB@example.com | |||
;tag=1231 | ;tag=1234 | |||
Call-ID: 3573853342923422@192.0.2.44 | Call-ID: 3573853342923422@192.0.2.44 | |||
CSeq: 322 NOTIFY | CSeq: 322 NOTIFY | |||
Via: SIP/2.0/UDP 192.0.2.3; | Via: SIP/2.0/UDP 192.0.2.3; | |||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d0 | branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d0 | |||
MIME-Version: 1.0 | MIME-Version: 1.0 | |||
Content-Type: message/external-body; access-type="URL"; | Content-Type: message/external-body; access-type="URL"; | |||
expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | |||
URL="http://example.com/z100-000000000000.html"; | URL="http://example.com/z100-000000000000.html"; | |||
size=9999; | size=9999; | |||
hash=10AB568E91245681AC1B | hash=10AB568E91245681AC1B | |||
skipping to change at page 45, line 32 | skipping to change at page 44, line 32 | |||
(A-RS) Device A accepts the NOTIFY and sends a 200 OK | (A-RS) Device A accepts the NOTIFY and sends a 200 OK | |||
(B-NT) PDS transmits a NOTIFY message to device B indicating the | (B-NT) PDS transmits a NOTIFY message to device B 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.43 SIP/2.0 | NOTIFY sip:userX@192.0.2.43 SIP/2.0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
From: sip:userX@sip.example.net;tag=abce | From: sip:userX@sip.example.net;tag=abce | |||
To: sip:userX@sip.example.net.net;tag=1235 | To: sip:userX@sip.example.net.net;tag=1234 | |||
Call-ID: 3573853342923422@192.0.2.43 | Call-ID: 3573853342923422@192.0.2.43 | |||
CSeq: 322 NOTIFY | CSeq: 322 NOTIFY | |||
Via: SIP/2.0/UDP 192.0.2.3; | Via: SIP/2.0/UDP 192.0.2.3; | |||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d2 | branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d2 | |||
MIME-Version: 1.0 | MIME-Version: 1.0 | |||
Content-Type: message/external-body; access-type="URL"; | Content-Type: message/external-body; access-type="URL"; | |||
expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | expiration="Mon, 01 Jan 2010 09:00:00 UTC"; | |||
URL="http://www.example.com/user-x-profile.html"; | URL="http://www.example.com/user-x-profile.html"; | |||
size=9999; | size=9999; | |||
hash=123456789AAABBBCCCDD | hash=123456789AAABBBCCCDD | |||
skipping to change at page 47, line 29 | skipping to change at page 46, line 29 | |||
CONTACT: | CONTACT: | |||
------- | ------- | |||
sumanth@cablelabs.com | sumanth@cablelabs.com | |||
Daniel Petrie dan.ietf AT SIPez DOT com | Daniel Petrie dan.ietf AT SIPez DOT com | |||
Note to RFC editor: Please replace RFCXXXX with the RFC number | Note to RFC editor: Please replace RFCXXXX with the RFC number | |||
assigned to this document. | assigned to this document. | |||
9. Security Considerations | 9. Security Considerations | |||
The framework specified in this document enables profile data | The framework specified in this documents specifies profile delivery | |||
delivery to devices. It specifies profile delivery stages, an event | stages, an event package and three profile types to enable profile | |||
package and several profile types. | delivery. The profile delivery stages are: enrollment, content | |||
retrieval, and change notification. The event package helps with | ||||
There are three stages: Enrollment, Content Retrieval, and Change | enrollment and change notifications. Each profile type allows for | |||
Notification. | profile retrieval from a PDS belonging to a specific provider. | |||
+------+ +-----+ | ||||
| | | | | ||||
|Device| | PNC | | ||||
| | | | | ||||
+------+ +-----+ | ||||
| | | ||||
| Profile Enrollment | | ||||
|---------------------->| | ||||
| | | ||||
| Initial Notification | | ||||
|<----------------------| | ||||
| | | ||||
+------+ +-----+ | ||||
| | | | | ||||
|Device| | PNC | | ||||
| | | | | ||||
+------+ +-----+ | ||||
| | | ||||
| Profile Enrollment | | ||||
|---------------------->| | ||||
| | | ||||
| Change Notification | | ||||
|<----------------------| | ||||
| | | ||||
+------+ +-----+ | ||||
| | | | | ||||
|Device| | PCC | | ||||
| | | | | ||||
+------+ +-----+ | ||||
| | | ||||
| Profile Request | (When content | ||||
|---------------------->| indirection | ||||
| | is used) | ||||
| Profile Response | | ||||
|<----------------------| | ||||
| | | ||||
PNC = Profile Notification Component | ||||
PCC = Profile Content Component | ||||
Figure 23: Profile Delivery Stages | ||||
Enrollment allows a device to request a profile. To transmit the | Enrollment allows a device to request, and if successful, enroll with | |||
request the device relies on configured, cached or discovered data. | a PDS to obtain profile data. To transmit the request the device | |||
Such data includes provider domain names, identities, and | relies on configured, cached or discovered data. Such data includes | |||
credentials. The device either uses configured Outbound proxies or | provider domain names, identities, and credentials. The device | |||
discoveries the next-hop entity using [RFC3263] that can result in a | either uses configured outbound proxies or discovers the next-hop | |||
SIP proxy or the PDS. It then transmits the request, after | entity using [RFC3263] that can result in a SIP proxy or the PDS. It | |||
establishing a TLS session if required. If obtained via a SIP proxy, | then transmits the request. A SIP Proxy receving the request uses | |||
the Request-URI is used to route it to a PDS (via an authoritative | the Request-URI and event header contents to route it to a PDS (via | |||
SIP proxy, 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 | |||
the presented identity (if any) or admit the enrollment. | any contained identity or admit the enrollment. Authorization rules | |||
Authorization then decides if the enrollment is accepted. If | then decide if the enrollment gets accepted. If accepted, the PDS | |||
accepted, the PDS sends an initial notification that contains either | sends an initial notification that contains either the profile data, | |||
the profile data, or content indirection information. The profile | or content indirection information. The profile data can contain | |||
data can contain information specific to an entity (such as the | generic profile data (common across multiple devices) or information | |||
device or a user) and may contain sensitive information (such as | specific to an entity (such as the device or a user). If specific to | |||
credentials). Compromise of such data can lead to threats such as | an entity, it and may contain sensitive information such as | |||
impersonation attacks (establishing rogue sessions), theft of service | credentials. Compromise of sensitive data can lead to threats such | |||
(if services are obtainable), and zombie attacks. Even if the | as impersonation attacks (establishing rogue sessions), theft of | |||
profile data is provided using content indirection, PCC information | service (if services are obtainable), and zombie attacks. Even if | |||
within the notification can lead to threats such as denial of service | the profile data is provided using content indirection, PCC | |||
attacks (rogue devices bombard the PCC with requests for a specific | information within the notification can lead to threats such as | |||
profile) and attempts to modify erroneous data onto the PCC (since | denial of service attacks (rogue devices bombard the PCC with | |||
the location and format may be known). It is also important for the | requests for a specific profile) and attempts to modify erroneous | |||
device to ensure the authenticity of the PNC since impersonation of | data onto the PCC (since the location and format may be known). It | |||
the SIP service provider can lead to Denial of Service, Man-in-the- | is also important for the device to ensure the authenticity of the | |||
Middle attacks, etc. | 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 | |||
from a PCC. This communication is accomplished using one of many | via content indirection from a PCC. This communication is | |||
profile delivery protocols or frameworks, such as HTTP or HTTPS as | accomplished using one of many profile delivery protocols or | |||
specified in this document. However, since the profile data returned | frameworks, such as HTTP or HTTPS as specified in this document. | |||
is subject to the same considerations as that sent via profile | However, since the profile data returned is subject to the same | |||
notification, the same threats exist. | considerations as that sent via profile notification, similar threats | |||
exist. Thus, for the delivery of any sensitive profile data, | ||||
authentication of the entity requesting profile data is required. It | ||||
is also important for the requesting entity to authenticate the PDS | ||||
and ensure that the sensitive profile data is protected via message | ||||
integrity. For sensitive data that should not be subject to | ||||
snooping, privacy is also required. | ||||
Profile-specific considerations follow. | The following sub-sections highlight the security considerations that | |||
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 capable of accessing the network. | that is provided to every device that requests the local-network | |||
Such a PDS may not implement any authentication requirements or TLS. | profile. Such a PDS may not implement any authentication | |||
requirements or TLS. | ||||
Alternatively, certain deployments may require the entities - device | Alternatively, certain deployments may require the entities - device | |||
and the PDS - to mutually authenticate prior to profile enrollment. | and the PDS - to authenticate each other prior to succesful profile | |||
Such networks may pre-configure user identities to the devices and | enrollment. Such networks may pre-configure user identities to the | |||
allow user-specific local-network profiles. In such networks the PDS | devices and allow user-specific local-network profiles. In such | |||
will contain X.509 certificates and support TLS, and the devices are | networks the PDS will support digest, and the devices are configured | |||
pre-configured with user identities, credentials and implement TLS. | with user identities and credentials as specified in Section 5.3.1. | |||
If sensitive profile data is being transmitted, the user identity 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 | ||||
device. | ||||
This framework supports both use cases and 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 MiM or PDS | |||
impersonation attacks. This framework requires that a device reject | impersonation attacks. This framework requires that a device reject | |||
sensitive data, such as credentials, from unauthenticated local- | sensitive data, such as credentials, from unauthenticated local- | |||
network sources (exceptions are noted). It also prohibits devices | network sources. It also prohibits devices from responding to | |||
from responding to authentication challenges from unauthenticated | authentication challenges in the absence of TLS. Responding to | |||
PDSs. Responding to unauthenticated challenges allows for dictionary | unauthenticated challenges allows for dictionary attacks that can | |||
attacks that can reveal weak passwords. | reveal weak passwords. | |||
If deployments prefer devices to obtain profiles only from pre- | ||||
configured domains (e.g., partner networks), they MAY require such | ||||
devices to establish TLS prior to obtaining the local-network | ||||
profile. | ||||
The use of SIP Identity is useful in cases when TLS is not used but | The use of SIP Identity is useful for the device to validate | |||
the device still obtains a profile (e.g., the local-network profile). | notifications in the absence of a secure channel such as TLS. In | |||
In such cases the device provider, or the user, can use the SIP | such cases the device can validate the SIP Identity header to verify | |||
Identity header to verify the source of the local-network profile. | the source of the local-network profile. However, the presence of | |||
However, the presence of the header does not guarantee the validity | the header does not guarantee the validity of the data. It verifies | |||
of the data. It verifies the source and confirms data integrity, but | the source and confirms data integrity, but the data obtained from an | |||
the data obtained from an undesired source may still be invalid | undesired source may still be invalid, e.g., invalid outbound proxy | |||
(e.g., it can be invalid or contain malicious content). | information, resulting in Denial of Service. Thus, devices | |||
requesting the local-network profile from 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 of trials and self-subscription to SIP services (not to | for purposes such as trials, self-subscription (not to be confused | |||
be confused with [RFC3265]), emergency services | with [RFC3265]) and emergency services ([I-D.ietf-ecrit-phonebcp]). | |||
([I-D.ietf-ecrit-phonebcp]), or to devices that are known by the PDS. | ||||
Devices that are not aware of any device providers (i.e., no cached | ||||
or configured information) will have to discover a PDS in the network | ||||
they connect to. In such a case the discovered information may lead | ||||
them to a PDS that provides enough profile data to enable device | ||||
operation. This configuration can also provide a user AoR that can | ||||
be used in the local-network and credentials (temporary or long-term) | ||||
that will be used for future communication with the network. This | ||||
may enable the device to communicate with a device provider who | ||||
allows for self-subscription (e.g., web interface, interactive voice | ||||
response or customer service representative). It may also allow the | ||||
device a choice of device providers and allow the end-user to choose | ||||
one. It is to be noted that such devices are at the mercy of the | ||||
network they connect to initially. If they are initialized in a | ||||
rogue network, or get hijacked by a rogue PDS, the end-user may be | ||||
left without desired device operation, or worse unwanted operation. | ||||
To mitigate such factors the device provider may communicate | ||||
temporary credentials (PINs that can be entered via an interface) or | ||||
permanent credentials (e.g., a USB device) to the end-user for | ||||
connectivity. If such methods are used the large-entropy credentials | ||||
MUST be used, or quickly replaced with such, to minimize the impact | ||||
of dictionary attacks. Future enhancements to this framework may | ||||
specify device capabilities that allow for mutual authentication | ||||
without pre-configuration (e.g., X.509 certificates using PKI). | ||||
Once a device is associated with a device provider (either | This framework allows for the device profile to be used for | |||
dynamically or via pre-configuration using a user interface or prior | bootstrapping a device. Such boostrapping profile data may contain | |||
to distribution), the device profile is vital to device operation. | enough information to connect to a Provider. For example, it may | |||
This is because the device profile can contain important operational | enable the device to communicate with a device provider, allowing for | |||
information such as users that are to be allowed access (white-list | trial or self-subscription services via visual or audio interfaces | |||
or black-list), user credentials (if required) and other sensitive | (e.g., interactive voice response), or customer service | |||
information. Thus, it is also necessary to ensure that the device | representatives. The profile data may also allow the device a choice | |||
profile is not obtained via an unauthenticated source or tampered | of device providers and allow the end-user to choose one. The | |||
during transit. Thus the framework requires that devices supporting | profile data may also contain identities and credentials (temporary | |||
any sensitive device profiles establish next-hop authenticated TLS | or long-term) that can be used to obtain further profile data from | |||
connections prior to device enrollment. However, given the | the network. If it contains such sensitive data, the framework | |||
importance of the device profile it also allows for profile requests | recommends the use of the SIP Identity header by the PDS. However, | |||
in cases where the PDS does not implement TLS. It also allows the | to be able to validate the header, the device needs to be pre- | |||
PDSs to perform authentication without requiring TLS. However, this | configured with the knowledge of allowable domains or certificates | |||
leaves the communication open to MiM attacks and SHOULD be avoided. | for validation (e.g., using PKI). If not, the device can still | |||
Additionally any credential used SHOULD be of sufficiently large- | guarantee header and body integrity if the profile data contains the | |||
entropy to prevent dictionary attacks. Devices SHOULD use the | domain certificate (but the data can still be invalid or malicious). | |||
'cnonce' parameter ([RFC2617]) to thwart "offline" dictionary | In such cases, devices supporting user interfaces may obtain | |||
attacks. | confirmation from the user trying to boostrap the device (confirming | |||
header and body integrity). However, when the SIP Identity header is | ||||
not present, or the device is not capable of validating it, the | ||||
bootstrapping data is unauthenticated and obtained without any | ||||
integrity protection. Such bootstrapping data, however, may contain | ||||
only temporary credentials (SIPS URI and digest credentials) that can | ||||
be used to reconnect to the network to ensure message integrity and | ||||
privacy prior to obtaining long-term credentials. It is to be noted | ||||
that such devices are at the mercy of the network they request the | ||||
device profile from. If they are initialized in a rogue network, or | ||||
get hijacked by a rogue PDS, the end-user may be left without desired | ||||
device operation or, worse, unwanted operation. To mitigate such | ||||
factors the device provider may communicate temporary credentials | ||||
(PINs that can be entered via an interface) or permanent credentials | ||||
(e.g., a USB device) to the end-user for connectivity. If such | ||||
methods are used then large-entropy credentials MUST be used, or | ||||
quickly replaced with such, to minimize the impact of dictionary | ||||
attacks. Future enhancements to this framework may specify device | ||||
capabilities that allow for authentication without any pre- | ||||
configuration (e.g., X.509 certificates using PKI). Alternatively, a | ||||
PDS can use secure content indirection mechanisms such as HTTPS to | ||||
provide the bootstrapping data. | ||||
Once a device is associated with a device provider the device profile | ||||
is vital to device operation. This is because the device profile can | ||||
contain important operational information such as users that are to | ||||
be allowed access (white-list or black-list), user credentials (if | ||||
required) and other sensitive information. Thus, it is necessary to | ||||
ensure that any device profile containing sensitive information is | ||||
obtained via an authenticated source, with integrity protection, and | ||||
delivered to an authenticated device. For sensitive information such | ||||
as credentials, privacy is also required. The framework requires | ||||
that devices obtain sensitive information only from authenticated | ||||
entities except while it is being bootstrapped. In cases where | ||||
privacy needs to be mandated for notifications, the device provider | ||||
can configure the device with a SIPS URI, to be used as the | ||||
subscription URI, during profile enrollment. The framework also | ||||
requires that a PDS presenting sensitive profile data to use digest | ||||
authentication. This ensures that the data is delivered to an | ||||
authenticated entity. Authentication of profile retrieval via | ||||
content indirection for sensitive profiles is via HTTPS. | ||||
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. Thus, PDSs are prohibited from accepting user | SIP service provider. PDSs are required to reject user profile | |||
profile enrollment requests for users that are unknown in the | enrollment requests for any users that are unknown in the network. | |||
network. If the user AoR is a SIPS URI then the device is required | For known user AoRs that are allowed to retrieve profiles, the | |||
to establish a next-hop authenticated TLS session. This framework | security considerations are similar to that of the device profile | |||
requires this for profiles with sensitive data. If it is a SIP URI, | (except for bootstrapping). | |||
then the device is still recommended to attempt TLS establishment to | ||||
ensure protection against rogue PDSs. Further, the PDS will | ||||
authenticate requests prior to accepting profile enrollment requests | ||||
that can result in sensitive data. A mutually authenticated TLS | ||||
channel provides message integrity and privacy. | ||||
10. Acknowledgements | 10. Acknowledgements | |||
The author appreciates all those who contributed and commented on the | The author appreciates all those who contributed and commented on the | |||
many iterations of this document. Detailed comments were provided by | many iterations of this document. Detailed comments were provided by | |||
the following individuals: Jonathan Rosenberg from Cisco, Henning | the following individuals: Jonathan Rosenberg from Cisco, Henning | |||
Schulzrinne from Columbia University, Cullen Jennings from Cisco, | Schulzrinne from Columbia University, Cullen Jennings from Cisco, | |||
Rohan Mahy from Plantronics, Rich Schaaf from Pingtel, Volker Hilt | Rohan Mahy from Plantronics, Rich Schaaf from Pingtel, Volker Hilt | |||
from Bell Labs, Adam Roach of Estacado Systems, Hisham Khartabil from | from Bell Labs, Adam Roach of Estacado Systems, Hisham Khartabil from | |||
Telio, Henry Sinnreich from MCI, Martin Dolly from AT&T Labs, John | Telio, Henry Sinnreich from MCI, Martin Dolly from AT&T Labs, John | |||
skipping to change at page 52, line 40 | skipping to change at page 50, line 48 | |||
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). | proposal) and John Elwell from Siemens. | |||
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 | |||
End of changes. 90 change blocks. | ||||
482 lines changed or deleted | 460 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/ |