draft-ietf-sipping-config-framework-17.txt | draft-ietf-sipping-config-framework-18.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: August 20, 2010 CableLabs | Expires: April 10, 2011 CableLabs | |||
February 16, 2010 | October 7, 2010 | |||
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-17 | draft-ietf-sipping-config-framework-18 | |||
Abstract | Abstract | |||
This document specifies a framework to enable configuration of | This document specifies a framework to enable configuration of | |||
Session Initiation Protocol (SIP) User Agents in SIP deployments. | Session Initiation Protocol (SIP) User Agents in SIP deployments. | |||
The framework provides a means to deliver profile data that User | The framework provides a means to deliver profile data that User | |||
Agents need to be functional, automatically and with minimal or no | Agents need to be functional, automatically and with minimal or no | |||
User and Administrative intervention. The framework describes how | User and Administrative intervention. The framework describes how | |||
SIP User Agents can discover sources, request profiles and receive | SIP User Agents can discover sources, request profiles and receive | |||
notifications related to profile modifications. As part of this | notifications related to profile modifications. As part of this | |||
framework, a new SIP event package is defined for notification of | framework, a new SIP event package is defined for notification of | |||
profile changes. The framework provides minimal data retrieval | profile changes. The framework provides minimal data retrieval | |||
options to ensure interoperability. The framework does not include | options to ensure interoperability. The framework does not include | |||
specification of the profile data within its scope. | specification of the profile data within its scope. | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and 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). Note that other groups may also distribute | |||
other groups may also distribute working documents as Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at | This Internet-Draft will expire on April 10, 2011. | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | ||||
The list of Internet-Draft Shadow Directories can be accessed at | ||||
http://www.ietf.org/shadow.html. | ||||
This Internet-Draft will expire on August 20, 2010. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2010 IETF Trust and the persons identified as the | Copyright (c) 2010 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
skipping to change at page 2, line 15 | skipping to change at page 2, line 10 | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the BSD License. | described in the Simplified BSD License. | |||
This document may contain material from IETF Documents or IETF | This document may contain material from IETF Documents or IETF | |||
Contributions published or made publicly available before November | Contributions published or made publicly available before November | |||
10, 2008. The person(s) controlling the copyright in some of this | 10, 2008. The person(s) controlling the copyright in some of this | |||
material may not have granted the IETF Trust the right to allow | material may not have granted the IETF Trust the right to allow | |||
modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. Reference Model . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.3. Profile Types . . . . . . . . . . . . . . . . . . . . . . 11 | 3.3. Profile Types . . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.4. Profile delivery stages . . . . . . . . . . . . . . . . . 12 | 3.4. Profile delivery stages . . . . . . . . . . . . . . . . . 11 | |||
3.5. Supported Device Types . . . . . . . . . . . . . . . . . . 12 | ||||
4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
4.1. Simple Deployment Scenario . . . . . . . . . . . . . . . . 12 | 4.1. Simple Deployment Scenario . . . . . . . . . . . . . . . . 13 | |||
4.2. Devices supporting multiple users from different | 4.2. Devices supporting multiple users from different | |||
Service Providers . . . . . . . . . . . . . . . . . . . . 14 | Service Providers . . . . . . . . . . . . . . . . . . . . 14 | |||
5. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 16 | 5. Profile Delivery Framework . . . . . . . . . . . . . . . . . . 16 | |||
5.1. Profile delivery stages . . . . . . . . . . . . . . . . . 16 | 5.1. Profile delivery stages . . . . . . . . . . . . . . . . . 16 | |||
5.1.1. Profile Enrollment . . . . . . . . . . . . . . . . . . 17 | 5.1.1. Profile Enrollment . . . . . . . . . . . . . . . . . . 17 | |||
5.1.2. Content Retrieval . . . . . . . . . . . . . . . . . . 19 | 5.1.2. Content Retrieval . . . . . . . . . . . . . . . . . . 19 | |||
5.1.3. Change Notification . . . . . . . . . . . . . . . . . 19 | 5.1.3. Change Notification . . . . . . . . . . . . . . . . . 19 | |||
5.1.4. Enrollment Data and Caching . . . . . . . . . . . . . 20 | 5.1.4. Enrollment Data and Caching . . . . . . . . . . . . . 20 | |||
5.2. Securing Profile Delivery . . . . . . . . . . . . . . . . 23 | 5.2. Securing Profile Delivery . . . . . . . . . . . . . . . . 24 | |||
5.2.1. Securing Profile Enrollment . . . . . . . . . . . . . 24 | 5.2.1. Securing Profile Enrollment . . . . . . . . . . . . . 24 | |||
5.2.2. Securing Content Retrieval . . . . . . . . . . . . . . 25 | 5.2.2. Securing Content Retrieval . . . . . . . . . . . . . . 25 | |||
5.2.3. Securing Change Notification . . . . . . . . . . . . . 26 | 5.2.3. Securing Change Notification . . . . . . . . . . . . . 26 | |||
5.3. Additional Considerations . . . . . . . . . . . . . . . . 26 | 5.3. Additional Considerations . . . . . . . . . . . . . . . . 26 | |||
5.3.1. Bootstrapping Identities and Credentials . . . . . . . 26 | 5.3.1. Bootstrapping Identities and Credentials . . . . . . . 26 | |||
5.3.2. Profile Enrollment Request Attempt . . . . . . . . . . 28 | 5.3.2. Profile Enrollment Request Attempt . . . . . . . . . . 28 | |||
5.3.3. Device Types . . . . . . . . . . . . . . . . . . . . . 32 | 5.3.3. Profile Data . . . . . . . . . . . . . . . . . . . . . 32 | |||
5.3.4. Profile Data . . . . . . . . . . . . . . . . . . . . . 32 | 5.3.4. Profile Data Frameworks . . . . . . . . . . . . . . . 33 | |||
5.3.5. Profile Data Frameworks . . . . . . . . . . . . . . . 33 | 5.3.5. Additional Profile Types . . . . . . . . . . . . . . . 33 | |||
5.3.6. Additional Profile Types . . . . . . . . . . . . . . . 34 | 5.3.6. Deployment considerations . . . . . . . . . . . . . . 34 | |||
5.3.7. Deployment considerations . . . . . . . . . . . . . . 34 | 5.4. Support for NATs . . . . . . . . . . . . . . . . . . . . . 34 | |||
5.4. Support for NATs . . . . . . . . . . . . . . . . . . . . . 35 | ||||
6. Event Package Definition . . . . . . . . . . . . . . . . . . . 35 | 6. Event Package Definition . . . . . . . . . . . . . . . . . . . 35 | |||
6.1. Event Package Name . . . . . . . . . . . . . . . . . . . . 35 | 6.1. Event Package Name . . . . . . . . . . . . . . . . . . . . 35 | |||
6.2. Event Package Parameters . . . . . . . . . . . . . . . . . 35 | 6.2. Event Package Parameters . . . . . . . . . . . . . . . . . 35 | |||
6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 38 | 6.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . . 38 | |||
6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 39 | 6.4. Subscription Duration . . . . . . . . . . . . . . . . . . 38 | |||
6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 39 | 6.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 39 | |||
6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 39 | 6.6. Notifier Processing of SUBSCRIBE Requests . . . . . . . . 39 | |||
6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . . 40 | 6.7. Notifier Generation of NOTIFY Requests . . . . . . . . . . 39 | |||
6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . . 40 | 6.8. Subscriber Processing of NOTIFY Requests . . . . . . . . . 40 | |||
6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 41 | 6.9. Handling of Forked Requests . . . . . . . . . . . . . . . 41 | |||
6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 41 | 6.10. Rate of Notifications . . . . . . . . . . . . . . . . . . 41 | |||
6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . . 41 | 6.11. State Agents . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 | 7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
7.1. Example 1: Device requesting profile . . . . . . . . . . . 41 | 7.1. Example 1: Device requesting profile . . . . . . . . . . . 41 | |||
7.2. Example 2: Device obtaining change notification . . . . . 44 | 7.2. Example 2: Device obtaining change notification . . . . . 44 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | |||
8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 48 | 8.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 48 | |||
8.2. Registry of SIP configuration profile types . . . . . . . 48 | 8.2. Registry of SIP configuration profile types . . . . . . . 48 | |||
skipping to change at page 5, line 24 | skipping to change at page 5, line 24 | |||
intervention. | intervention. | |||
Many deployments of SIP User Agents require dynamic configuration and | Many deployments of SIP User Agents require dynamic configuration and | |||
cannot rely on pre-configuration. This framework provides a standard | cannot rely on pre-configuration. This framework provides a standard | |||
means of providing dynamic configuration which simplifies deployments | means of providing dynamic configuration which simplifies deployments | |||
containing SIP User Agents from multiple vendors. This framework | containing SIP User Agents from multiple vendors. This framework | |||
also addresses change notifications when profiles change. However, | also addresses change notifications when profiles change. However, | |||
the framework does not define the content or format of the profile, | the framework does not define the content or format of the profile, | |||
leaving that to future standardization activities. | leaving that to future standardization activities. | |||
This document is organized as follows. Section 3 provides a high- | This document is organized as follows. The normative requirements | |||
are contained in Section 5 (framework operations) and Section 6 (the | ||||
event package definition). The rest of the document provides | ||||
introductory and supporting explanations. Section 3 provides a high- | ||||
level overview of the abstract components, profiles, and the profile | level overview of the abstract components, profiles, and the profile | |||
delivery stages. Section 4 provides some motivating use cases. | delivery stages. Section 4 provides some motivating use cases. | |||
Section 5 provides details of the framework operation and | ||||
requirements. Section 6 provides a concise event package definition. | ||||
Section 7 follows with illustrative examples of the framework in use. | Section 7 follows with illustrative examples of the framework in use. | |||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
This document also reuses the SIP terminology defined in [RFC3261] | This document also reuses the SIP terminology defined in [RFC3261] | |||
and [RFC3265], and specifies the usage of the following terms. | and [RFC3265], and specifies the usage of the following terms. | |||
Device: software or hardware entity containing one or more SIP user | Device: software or hardware entity containing one or more SIP user | |||
agents. It may also contain entities such as a DHCP client. | agents. It may also contain applications such as a DHCP client. | |||
Device Provider: the entity responsible for managing a given device. | Device Provider: the entity responsible for managing a given device. | |||
Local Network Provider: the entity that controls the local network | Local Network Provider: the entity that controls the local network | |||
to which a given device is connected. | to which a given device is connected. | |||
SIP Service Provider: the entity providing SIP services to users. | SIP Service Provider: the entity providing SIP services to users. | |||
This can refer to private enterprises or public entities. | This can refer to private or public enterprises. | |||
Profile: configuration data set specific to an entity (e.g., user, | Profile: configuration data set specific to an entity (e.g., user, | |||
device, local network or other). | device, local network or other). | |||
Profile Type: a particular category of Profile data (e.g., User, | Profile Type: a particular category of Profile data (e.g., User, | |||
Device, Local Network or other). | Device, Local Network or other). | |||
Profile Delivery Server (PDS): the source of a Profile, it is the | Profile Delivery Server (PDS): the source of a Profile, it is the | |||
logical collection of the Profile Notification Component (PNC) and | logical collection of the Profile Notification Component (PNC) and | |||
the Profile Content Component(PCC). | the Profile Content Component(PCC). | |||
skipping to change at page 7, line 19 | skipping to change at page 7, line 26 | |||
messages (SUBSCRIBE and NOTIFY; [RFC3265]) and traditional file | messages (SUBSCRIBE and NOTIFY; [RFC3265]) and traditional file | |||
retrieval protocols, such as HTTP [RFC2616], to discover, monitor, | retrieval protocols, such as HTTP [RFC2616], to discover, monitor, | |||
and retrieve configuration profiles. The framework defines three | and retrieve configuration profiles. The framework defines three | |||
types of profiles (local-network, device, and user) in order to | types of profiles (local-network, device, and user) in order to | |||
separate aspects of the configuration which may be independently | separate aspects of the configuration which may be independently | |||
managed by different administrative domains. The initial SUBSCRIBE | managed by different administrative domains. The initial SUBSCRIBE | |||
message for each profile allows the UA to describe itself (both its | message for each profile allows the UA to describe itself (both its | |||
implementation and the identity requesting the profile), while | implementation and the identity requesting the profile), while | |||
requesting access to a profile by type, without prior knowledge of | requesting access to a profile by type, without prior knowledge of | |||
the profile name or location. Discovery mechanisms are specified to | the profile name or location. Discovery mechanisms are specified to | |||
help the UA form the subscription URI (the Request-URI for the SIP | help the UA form the Subscription URI (the Request-URI for the SIP | |||
SUBSCRIBE). The SIP UAS handling these subscriptions is the Profile | SUBSCRIBE). The SIP UAS handling these subscriptions is the Profile | |||
Delivery Server (PDS). When the PDS accepts a subscription, it sends | Delivery Server (PDS). When the PDS accepts a subscription, it sends | |||
a NOTIFY to the device. The initial NOTIFY from the PDS for each | a NOTIFY to the device. The initial NOTIFY from the PDS for each | |||
profile may contain profile data or a reference to the location of | profile may contain profile data or a reference to the location of | |||
the profile, to be retrieved using HTTP or similar file retrieval | the profile, to be retrieved using HTTP or similar file retrieval | |||
protocols. By maintaining a subscription to each profile, the UA | protocols. By maintaining a subscription to each profile, the UA | |||
will receive additional NOTIFY messages if the profile is later | will receive additional NOTIFY messages if the profile is later | |||
changed. These may contain a new profile, a reference to a new | changed. These may contain a new profile, a reference to a new | |||
profile, or a description of profile changes, depending on the | profile, or a description of profile changes, depending on the | |||
Content-Type [RFC3261] in use by the subscription. The framework | Content-Type [RFC3261] in use by the subscription. The framework | |||
skipping to change at page 11, line 37 | skipping to change at page 11, line 37 | |||
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. | |||
Additional profile types may also be specified. | Additional profile types may also be specified by future work within | |||
the IETF. The data models associated with each profile type are out | ||||
PDSs and devices will implement all the three profile types. A | of scope for this document. | |||
device that has not been configured otherwise will try to obtain all | ||||
the three profile types, in the order specified by this framework. A | ||||
device being bootstrapped SHOULD request the device profile type (see | ||||
Section 5.3.1 for more information). The device can be configured | ||||
with a different behavior via profile data previously obtained by the | ||||
device, or by using 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 12, line 31 | skipping to change at page 12, line 23 | |||
Profile Content Retrieval: the process by which a device retrieves | Profile Content Retrieval: the process by which a device retrieves | |||
profile contents, if the profile enrollment resulted in content | profile contents, if the profile enrollment resulted in content | |||
indirection information. | indirection information. | |||
Profile Change Notification: the process by which a device is | Profile Change Notification: the process by which a device is | |||
notified of any changes to an enrolled profile. This may provide | notified of any changes to an enrolled profile. This may provide | |||
the device with modified profile data or content indirection | the device with modified profile data or content indirection | |||
information. | information. | |||
3.5. Supported Device Types | ||||
The examples in this framework tend to associate devices with | ||||
entities that are accessible to end-users. However, this is not | ||||
necessarily the only type of device that can utilize the specified | ||||
Framework. Devices can be entities such as SIP Phones or soft | ||||
clients, with or without user interfaces (that allow for device | ||||
Configuration), entities in the network that do not directly | ||||
communicate with any users (e.g., gateways, media servers, etc) or | ||||
network infrastructure elements (e.g., SIP servers). The framework | ||||
is extensible for use with such device types. However, it is to be | ||||
noted that some of these other device types (e.g., network elements) | ||||
may also be configurable using other mechanisms. The use of this | ||||
framework in conjunction with other mechanisms (specified outside of | ||||
this document), is out of scope. | ||||
4. Use Cases | 4. Use Cases | |||
This section provides a small, non-comprehensive set of | This section provides a small, non-comprehensive set of | |||
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. | |||
skipping to change at page 17, line 12 | skipping to change at page 17, line 12 | |||
for use 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. | |||
PDSs and devices MUST implement all the three profile types. A | ||||
device that has not been configured otherwise SHOULD try to obtain | ||||
all the three profile types, in the order specified by this | ||||
framework. The exceptions are bootstrapping when it SHOULD request | ||||
the device profile type (see Section 5.3.1) or when it has been | ||||
explicitly configured with a different order via mechanisms such as: | ||||
previously retrieved profile data, pre-configuration or manual | ||||
configuration. | ||||
Profile enrollment consists of the following operations, in the | Profile enrollment consists of the following operations, in the | |||
specified order. | specified order. | |||
Enrollment request transmission | Enrollment request transmission | |||
Profile enrollment is initiated when the device transmits a SIP | Profile enrollment is initiated when the device transmits a SIP | |||
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, device or user | |||
credentials. Such data can be "configured" during device | identities and credentials. Such data can be "configured" during | |||
manufacturing, by the user, or via profile data enrollment (see | device manufacturing, by the user, or via profile data enrollment | |||
Section 5.3.1). The data can also be "discovered" using the | (see Section 5.3.1). The data can also be "discovered" using the | |||
procedures specified by this framework. The "discovered" data can | procedures specified by this framework. The "discovered" data can | |||
be retained across device resets (but not across factory resets) | be retained across device resets (but not across factory resets) | |||
and such data is referred to as "cached". Thus, data can be | and such data is referred to as "cached". Thus, data can be | |||
configured, discovered or cached. The following requirements | configured, discovered or cached. The following requirements | |||
apply. | apply. | |||
* If the device is configured with a specific domain name (for | * If the device is configured with a specific domain name (for | |||
the local network provider or device provider), it MUST NOT | the local network provider or device provider), it MUST NOT | |||
attempt "discovery" of the domain name. This is the case when | attempt "discovery" of the domain name. This is the case when | |||
the device is pre-configured (e.g., via a user interface) to be | the device is pre-configured (e.g., via a user interface) to be | |||
skipping to change at page 18, line 5 | skipping to change at page 18, line 14 | |||
'example.net', it cannot present a user AoR associated with the | 'example.net', it cannot present a user AoR associated with the | |||
local domain 'example.com'. | local domain 'example.com'. | |||
* The device SHOULD adhere to the following order of data usage: | * The device SHOULD adhere to the following order of data usage: | |||
configured, cached and discovered. An exception is when the | configured, cached and discovered. An exception is when the | |||
device is explicitly configured to use a different order. | device is explicitly configured to use a different order. | |||
Upon failure to obtain the profile using any methods specified in | Upon failure to obtain the profile using any methods specified in | |||
this framework, the device MAY provide a user interface to allow | this framework, the device MAY provide a user interface to allow | |||
for user intervention. This can result in temporary, one-time | for user intervention. This can result in temporary, one-time | |||
data to bootstrap the device. Such temporary data is not | data to bootstrap the device. Such temporary data is not | |||
considered to be "configured" and SHOULD NOT not be cached across | considered to be "configured" and SHOULD NOT be cached across | |||
resets. The configuration obtained using such data MAY provide | resets. The configuration obtained using such data MAY provide | |||
the configuration data required for the device to continue | the configuration data required for the device to continue | |||
functioning normally. | functioning normally. | |||
Devices attempting enrollment MUST comply with the SIP-specific | Devices attempting enrollment MUST comply with the SIP-specific | |||
event notification specified in [RFC3265], the event package | event notification specified in [RFC3265], the event package | |||
requirements specified in Section 6.2, and the security | requirements specified in Section 6.2, and the security | |||
requirements specified in Section 5.2. | requirements specified in Section 5.2. | |||
Enrollment request admittance | Enrollment request admittance | |||
skipping to change at page 20, line 29 | skipping to change at page 20, line 38 | |||
describes the requirements for creating a SIP SUBSCRIBE for | describes the requirements for creating a SIP SUBSCRIBE for | |||
enrollment, the caching requirements and how data can be discovered. | enrollment, the caching requirements and how data can be discovered. | |||
5.1.4.1. Local-Network Profile | 5.1.4.1. Local-Network Profile | |||
To create a Subscription URI to request the local-network profile a | To create a Subscription URI to request the local-network profile a | |||
device needs the local network domain name, the device identifier and | device needs the local network domain name, the device identifier and | |||
optionally a user AoR with associated credentials (if one is | optionally a user AoR with associated credentials (if one is | |||
configured). Since the device can be potentially initialized in a | configured). Since the device can be potentially initialized in a | |||
different local-network each time, it SHOULD NOT cache the local | different local-network each time, it SHOULD NOT cache the local | |||
network domain, the SIP subscription URI or the local-network profile | network domain, the SIP Subscription URI or the local-network profile | |||
data across resets. An exception to this is when the device can | data across resets. An exception to this is when the device can | |||
confirm that it is reinitialized in the same network (using means | confirm that it is reinitialized in the same network (using means | |||
outside the scope of this document). Thus, in most cases, the device | outside the scope of this document). Thus, in most cases, the device | |||
needs to discover the local network domain name. The device | needs to discover the local network domain name. The device | |||
discovers this by establishing IP connectivity in the local network | discovers this by establishing IP connectivity in the local network | |||
(such as via DHCP or pre-configured IP information). Once | (such as via DHCP or pre-configured IP information). Once | |||
established, the device MUST attempt to use the local network domain | established, the device MUST attempt to use the local network domain | |||
obtained via pre-configuration, if available. If it is not pre- | obtained via pre-configuration, if available. If it is not pre- | |||
configured, it MUST employ dynamic discovery using DHCPv4 ([RFC2132], | configured, it MUST employ dynamic discovery using DHCPv4 ([RFC2132], | |||
Domain Name option) or DHCPv6 ([RFC4704]). Once the local network | Domain Name option) or DHCPv6 ([RFC4704]). Once the local network | |||
skipping to change at page 20, line 42 | skipping to change at page 21, line 4 | |||
outside the scope of this document). Thus, in most cases, the device | outside the scope of this document). Thus, in most cases, the device | |||
needs to discover the local network domain name. The device | needs to discover the local network domain name. The device | |||
discovers this by establishing IP connectivity in the local network | discovers this by establishing IP connectivity in the local network | |||
(such as via DHCP or pre-configured IP information). Once | (such as via DHCP or pre-configured IP information). Once | |||
established, the device MUST attempt to use the local network domain | established, the device MUST attempt to use the local network domain | |||
obtained via pre-configuration, if available. If it is not pre- | obtained via pre-configuration, if available. If it is not pre- | |||
configured, it MUST employ dynamic discovery using DHCPv4 ([RFC2132], | configured, it MUST employ dynamic discovery using DHCPv4 ([RFC2132], | |||
Domain Name option) or DHCPv6 ([RFC4704]). Once the local network | Domain Name option) or DHCPv6 ([RFC4704]). Once the local network | |||
domain is obtained, the device creates the SIP SUBSCRIBE for | domain is obtained, the device creates the SIP SUBSCRIBE for | |||
enrollment as described below. | enrollment as described below. | |||
o The device MUST NOT populate the user part of the Request-URI. | o The device MUST NOT populate the user part of the Request-URI. | |||
The device MUST set the host portion of the Request-URI to the | The device MUST set the host portion of the Request-URI to the | |||
dot-separated concatenation of "_sipuaconfig" and the local | dot-separated concatenation of "_sipuaconfig" and the local | |||
network domain (see example below). | network domain (see example below). | |||
o If the device has been configured with a user AoR for the local | o If the device has been configured with a user AoR for the local | |||
network domain (verified as explained in Section 5.2) it MUST use | network domain (verified as explained in Section 5.2) the device | |||
it to populate the "From" field, unless configured not to (due to | MUST use it to populate the "From" field, unless configured not to | |||
privacy concerns, for example). Otherwise, the device MUST set | (due to privacy concerns, for example). Otherwise, the device | |||
the "From" field to a value of "anonymous@anonymous.invalid". | MUST set the "From" field to a value of | |||
"anonymous@anonymous.invalid". | ||||
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 [RFC5626]. The device MUST | 'Contact' header, as specified in [RFC5626]. The device MUST | |||
ensure that the value of this parameter is the same as that | ensure that the value of this parameter is the same as that | |||
included in any subsequent profile enrollment request. | included in any subsequent profile enrollment request. | |||
For example, if the device requested and received the local domain | For example, if the device requested and received the local domain | |||
name via DHCP to be: airport.example.net, then the local-network | name via DHCP to be: airport.example.net, then the local-network | |||
Profile SUBSCRIBE Request-URI would look like: | Profile SUBSCRIBE Request-URI would look like: | |||
sip:_sipuaconfig.airport.example.net | sip:_sipuaconfig.airport.example.net | |||
skipping to change at page 21, line 46 | skipping to change at page 22, line 8 | |||
change frequently. Thus, the device is allowed to, and SHOULD cache | change frequently. Thus, the device is allowed to, and SHOULD cache | |||
the Subscription URI for the device profile upon successful | the Subscription URI for the device profile upon successful | |||
enrollment. Exceptions include cases where the device identifier has | enrollment. Exceptions include cases where the device identifier has | |||
changed (e.g., new network card), device provider information has | changed (e.g., new network card), device provider information has | |||
changed (e.g., user initiated change) or the device cannot obtain its | changed (e.g., user initiated change) or the device cannot obtain its | |||
profile using the Subscription URI. Thus, when available, the device | profile using the Subscription URI. Thus, when available, the device | |||
MUST use a cached Subscription URI. If no cached URI is available | MUST use a cached Subscription URI. If no cached URI is available | |||
then it needs to create a Subscription URI. To create a Subscription | then it needs to create a Subscription URI. To create a Subscription | |||
URI, the device needs a device identity and the device provider's | URI, the device needs a device identity and the device provider's | |||
domain name. Unless already configured, the device needs to discover | domain name. Unless already configured, the device needs to discover | |||
the necessary information and form the subscription URI. In such | the necessary information and form the Subscription URI. In such | |||
cases, the following requirements apply for creating a Subscription | cases, the following requirements apply for creating a Subscription | |||
URI for requesting the device profile: | URI for requesting the device profile: | |||
o The device MUST populate the user part of the Request-URI with the | o The device MUST populate the user part of the Request-URI with the | |||
device identifier. The device MUST set the host portion of the | device identifier. The device MUST set the host portion of the | |||
Request-URI to the domain name of the device provider. The device | Request-URI to the domain name of the device provider. The device | |||
identifier format is explained in detail later in this section. | 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 | |||
skipping to change at page 22, line 39 | skipping to change at page 22, line 46 | |||
domain name of the outbound proxy during the DHCP process, using | domain name of the outbound proxy during the DHCP process, using | |||
the DHCP option for SIP servers defined in [RFC3361] or [RFC3319] | the DHCP option for SIP servers defined in [RFC3361] or [RFC3319] | |||
(for 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 device identifier, it | o If the device cannot use a non-alterable device identifier, it | |||
skipping to change at page 23, line 20 | skipping to change at page 23, line 27 | |||
in the user part of an addr-spec ([RFC4122]), and must be escaped. | in the user part of an addr-spec ([RFC4122]), and must be escaped. | |||
For example, the instance ID: | For example, the instance ID: | |||
urn:uuid:f81d4fae-7ced-11d0-a765-00a0c91e6bf6@example.com | urn:uuid:f81d4fae-7ced-11d0-a765-00a0c91e6bf6@example.com | |||
would be escaped to look as follows in a URI: | would be escaped to look as follows in a URI: | |||
sip:urn%3auuid%3af81d4fae-7ced-11d0-a765-00a0c91e6bf6@ | sip:urn%3auuid%3af81d4fae-7ced-11d0-a765-00a0c91e6bf6@ | |||
example.com | example.com | |||
The ABNF for the UUID representation is provided in [RFC4122] | The ABNF ([RFC5234]) for the UUID representation is provided in | |||
[RFC4122] | ||||
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 | An authoritative SIP proxy for a SIP provider's network that receives | |||
a profile enrollment request for the user profile type will route | a profile enrollment request for the user profile type will route | |||
based on the Event Header field values, thus allowing a subscription | based on the Event Header field values, thus allowing a subscription | |||
to the user's AoR to be routed to the appropriate PDS. | 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, data integrity and data confidentiality. | |||
process by which you verify that an entity is who it claims to be, | Authentication is the process by which you verify that an entity is | |||
such as a user AoR presented during profile enrollment. Message | who it claims to be, such as a user AoR presented during profile | |||
integrity provides the assurance that the message contents | enrollment. Message integrity provides the assurance that the | |||
transmitted between two entities, such as between the PDS and the | message contents transmitted between two entities, such as between | |||
device, has not been modified during transit. Privacy ensures that | the PDS and the device, has not been modified during transit. | |||
the message contents have not been subjected to monitoring by | Privacy ensures that the message contents have not been subjected to | |||
unwanted elements during transit. Authentication and message | monitoring by unwanted elements during transit. Authentication and | |||
integrity are required to ensure that the profile contents were | data integrity are required to ensure that the profile contents were | |||
received by a valid entity, from a valid source, and without any | received by a valid entity, from a valid source, and without any | |||
modifications during transit. For profiles that contain sensitive | modifications during transit. For profiles that contain sensitive | |||
data, privacy is also required. | data, data confidentiality is also required. | |||
For an overview of potential security threats, refer to Section 9. | For an overview of potential security threats, refer to Section 9. | |||
For information on how the device can be configured with identities | For information on how the device can be configured with identities | |||
and credentials, refer to Section 5.3.1. The following subsections | and credentials, refer to Section 5.3.1. The following subsections | |||
provide the security requirements associated with each profile | provide the security requirements associated with each profile | |||
delivery stage, and applies to each of profile types specified by | delivery stage, and applies to each of profile types specified by | |||
this framework. | this framework. | |||
5.2.1. Securing Profile Enrollment | 5.2.1. Securing Profile Enrollment | |||
Profile enrollment may result in sensitive profile data. In such | Profile enrollment may result in sensitive profile data. In such | |||
cases, the PDS MUST authenticate the device, except during the | cases, the PDS MUST authenticate the device, except during the | |||
bootstrapping scenario when the device does not have existing | bootstrapping scenario when the device does not have existing | |||
credentials (see Section 5.3.1 for more information on | credentials (see Section 5.3.1 for more information on | |||
bootstrapping). Additionally, the device MUST authenticate the PDS | bootstrapping). Additionally, the device MUST authenticate the PDS | |||
to ensure that it is obtaining sensitive profile data from a valid | to ensure that it is obtaining sensitive profile data from a valid | |||
PDS. | PDS. | |||
To authenticate a device that has been configured with identities and | To authenticate a device that has been configured with identities and | |||
credentials as specified in Section 5.3.1 and support profiles | credentials as specified in Section 5.3.1 and support profiles | |||
containing sensitive profile data (refer to Section 5.3.4), devices | containing sensitive profile data (refer to Section 5.3.3), devices | |||
and PDSs MUST support Digest Authentication as specified in | and PDSs MUST support Digest Authentication (over TLS) as specified | |||
[RFC3261]. Future enhancements may provide other authentication | in [RFC3261]. Future enhancements may provide other authentication | |||
methods such as authentication using X.509 certificates. For the | methods such as authentication using X.509 certificates. For the | |||
device to authenticate the PDS, the device MUST mutually authenticate | device to authenticate the PDS, the device MUST mutually authenticate | |||
with the PDS during digest authentication (device challenges the PDS, | with the PDS during digest authentication (device challenges the PDS, | |||
which responds with the Authorization header). Transmission of | which responds with the Authorization header). Transmission of | |||
sensitive profile data also requires message integrity. This can be | sensitive profile data also requires data integrity. This can be | |||
accomplished by configuring the device with, or by ensuring that the | accomplished by configuring the device with, or by ensuring that the | |||
discovery process during profile enrollment provides, a SIPS URI | discovery process during profile enrollment provides, a SIPS URI | |||
resulting in TLS establishment ([RFC5246]). TLS also prevents | resulting in TLS establishment ([RFC5246]). TLS also prevents | |||
offline dictionary attacks when digest authentication is used. Thus, | offline dictionary attacks when digest authentication is used. Thus, | |||
in the absence of TLS, the device MUST NOT respond to any | in the absence of TLS, the device MUST NOT respond to any | |||
authentication challenges. It is to be noted that the digest | authentication challenges. It is to be noted that the digest | |||
credentials used for obtaining profile data via this framework may, | credentials used for obtaining profile data via this framework may, | |||
or may not, be the same as that used for SIP registration (see | or may not, be the same as that used for SIP registration (see | |||
Section 5.3.1). | Section 5.3.1). In addition, while [RFC3261] considers MD5 to be a | |||
reasonable choice to compute the hash, and this may have been true | ||||
when [RFC3261] was published, implementers are recommended to use | ||||
stronger alternatives such as SHA-256. Refer to [FIPS-180-3] and | ||||
[RFC4634] for more information about SHA-256. | ||||
When the PDS challenges a profile enrollment request, and it fails, | When the PDS challenges a profile enrollment request, and it fails, | |||
the PDS MAY refuse enrollment or provide profile data without the | the PDS MAY refuse enrollment or provide profile data without the | |||
user-specific information (e.g., to bootstrap a device as indicated | user-specific information (e.g., to bootstrap a device as indicated | |||
in Section 5.3.1). If the device challenges, but fails to | in Section 5.3.1). If the device challenges, but fails to | |||
authenticate the PDS, it MUST reject the initial notification and | authenticate the PDS, it MUST reject the initial notification and | |||
retry the profile enrollment process. If the device is configured | retry the profile enrollment process. If the device is configured | |||
with, or discovers, a SIPS URI but TLS establishment fails because | with, or discovers, a SIPS URI but TLS establishment fails because | |||
the next-hop SIP entity does not support TLS, the device SHOULD | the next-hop SIP entity does not support TLS, the device SHOULD | |||
attempt other resolved next-hop SIP entities. When the device | attempt other resolved next-hop SIP entities. When the device | |||
skipping to change at page 25, line 50 | skipping to change at page 26, line 17 | |||
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, except for bootstrapping a device via the device | profile data, except for bootstrapping a device via the device | |||
profile. A device MUST authenticate the PCC as specified in | 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 | |||
authentication as specified in [RFC2617], with the exception of a | authentication as specified in [RFC2617], with the exception of a | |||
device that is being bootstrapped for the first time via the device | device that is being bootstrapped for the first time via the device | |||
profile. The resulting TLS channel also provides message integrity | profile. The resulting TLS channel also provides data integrity and | |||
and privacy. | data confidentiality. | |||
5.2.3. Securing Change Notification | 5.2.3. Securing Change Notification | |||
If the device requested enrollment via a SIP subscription with a non- | If the device requested enrollment via a SIP subscription with a non- | |||
zero 'Expires' parameter, it can also result in change notifications | zero 'Expires' parameter, it can also result in change notifications | |||
for the duration of the subscription. For change notifications | for the duration of the subscription. For change notifications | |||
containing sensitive profile data, this framework RECOMMENDS the use | containing sensitive profile data, this framework RECOMMENDS the use | |||
of the SIP Identity header as specified in [RFC4474]. When the SIP | of the SIP Identity header as specified in [RFC4474]. When the SIP | |||
Identity header is used, the PDS MUST set the host portion of the AoR | Identity header is used, the PDS MUST set the host portion of the AoR | |||
in the 'From' header to the Provider's domain (the user portion is a | in the 'From' header to the Provider's domain (the user portion is a | |||
entity-specific identifier). This provides header and body integrity | entity-specific identifier). This provides header and body integrity | |||
as well. However, for sensitive profile data requiring privacy, if | as well. However, for sensitive profile data requiring data | |||
the contact URI to which the NOTIFY request is to be sent is not | confidentiality , if the contact URI to which the NOTIFY request is | |||
SIPS, the PDS MUST use content indirection. Additionally, the PDS | to be sent is not SIPS, the PDS MUST use content indirection. | |||
MUST also use content indirection for notifications containing | Additionally, the PDS MUST also use content indirection for | |||
sensitive profile data, when the profile enrollment was not | notifications containing sensitive profile data, when the profile | |||
authenticated. | enrollment was not authenticated. | |||
5.3. Additional Considerations | 5.3. Additional Considerations | |||
This section provides additional considerations such as details on | This section provides additional considerations such as details on | |||
how a device obtains identities and credentials, backoff and retry | how a device obtains identities and credentials, backoff and retry | |||
methods, guidelines on profile data and additional profile types. | methods, guidelines on profile data and additional profile types. | |||
5.3.1. Bootstrapping Identities and Credentials | 5.3.1. Bootstrapping Identities and Credentials | |||
When requesting a profile the profile delivery server will likely | When requesting a profile the profile delivery server will likely | |||
skipping to change at page 27, line 36 | skipping to change at page 27, line 47 | |||
For example, the profile data can direct the end-user to a web | For example, the profile data can direct the end-user to a web | |||
portal to obtain a subscription. Upon obtaining a successful | portal to obtain a subscription. Upon obtaining a successful | |||
subscription, the end-user or the device can be provided with | subscription, the end-user or the device can be provided with | |||
the necessary identities and credentials. | the necessary identities and credentials. | |||
* Content indirection information to a PCC that can provide | * Content indirection information to a PCC that can provide | |||
identities and credentials. As an example, consider a device | identities and credentials. As an example, consider a device | |||
that has a X.509 certificate that can be authenticated by the | that has a X.509 certificate that can be authenticated by the | |||
PCC. In such a case, the PCC can use HTTPS to provide | PCC. In such a case, the PCC can use HTTPS to provide | |||
identities and associated credentials. | identities and associated credentials. | |||
* Profile data containing identities and credentials that can be | * Profile data containing identities and credentials that can be | |||
used to bootstrap the device (see Section 5.3.4 for profile | used to bootstrap the device (see Section 5.3.3 for profile | |||
data recommendations). This can be used in cases where the | data recommendations). This can be used in cases where the | |||
device is initialized for the first time, or after a factory | device is initialized for the first time, or after a factory | |||
reset. This can be considered only in cases where the device | reset. This can be considered only in cases where the device | |||
is initialized in the Provider's network, for obvious security | is initialized in the Provider's network, for obvious security | |||
reasons. | reasons. | |||
For interoperability purposes, this framework requires PDSs and | ||||
devices to support the last option (above), which is to use this | ||||
framework. Specifically, the option of providing identities and | ||||
credentials via the profile data MUST be supported. | ||||
Additionally, AoRs are typically known by PDSs that serve the domain | Additionally, AoRs are typically known by PDSs that serve the domain | |||
indicated by the AoR. Thus, devices can only present the configured | indicated by the AoR. Thus, devices can only present the configured | |||
AoRs in the respective domains. An exception is the use of federated | AoRs in the respective domains. An exception is the use of federated | |||
identities. This allows a device to use a user's AoR in multiple | identities. This allows a device to use a user's AoR in multiple | |||
domains. Further even within the same domain, the device's domain | domains. Further even within the same domain, the device's domain | |||
proxy and the PDS may be in two different realms, and as such may be | proxy and the PDS may be in two different realms, and as such may be | |||
associated with different credentials for digest authentication. In | associated with different credentials for digest authentication. In | |||
such cases, multiple credentials may be configured, and associated | such cases, multiple credentials may be configured, and associated | |||
with the realms in which they are to be used. This framework | with the realms in which they are to be used. This framework | |||
specifies only digest authentication for profile enrollment and the | specifies only digest authentication for profile enrollment and the | |||
skipping to change at page 32, line 23 | skipping to change at page 32, line 23 | |||
supported by the profile data model; not to be confused with an empty | supported by the profile data model; not to be confused with an empty | |||
NOTIFY), or via an explicit profile data element that invalidates the | NOTIFY), or via an explicit profile data element that invalidates the | |||
data. A device receiving such a NOTIFY MUST discard the applicable | data. A device receiving such a NOTIFY MUST discard the applicable | |||
profile (i.e., it cannot even store it in the cache). Additionally, | profile (i.e., it cannot even store it in the cache). Additionally, | |||
if a factory reset is available and performed on a device, it MUST | if a factory reset is available and performed on a device, it MUST | |||
reset the device to its initial state prior to any configuration. | reset the device to its initial state prior to any configuration. | |||
Specifically, the device MUST set the device back to the state when | Specifically, the device MUST set the device back to the state when | |||
it was originally distributed. | 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 following | specified in this framework, the device MUST enroll in the following | |||
default order: local-network, device and user. The pseudo-code | default order: local-network, device and user. The pseudo-code | |||
presented earlier (Figure 7) differentiates between 'mandatory' and | presented earlier (Figure 7) differentiates between 'mandatory' and | |||
'non-mandatory' profiles. This distinction is left to profile data | 'non-mandatory' profiles. This distinction is left to profile data | |||
definitions. | 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. Profile Data | |||
The examples in this framework tend to associate devices with | ||||
entities that are accessible to end-users. However, this is not | ||||
necessarily the only type of device that can utilize the specified | ||||
Framework. Devices can be entities such as SIP Phones or soft | ||||
clients, with or without user interfaces (that allow for device | ||||
Configuration), entities in the network that do not directly | ||||
communicate with any users (e.g., gateways, media servers, etc) or | ||||
network infrastructure elements e.g., SIP servers). | ||||
5.3.4. Profile Data | ||||
This framework does not specify the contents for any profile type. | This framework does not specify the contents for any profile type. | |||
Follow-on standardization activities are expected to address profile | Follow-on standardization activities are expected to address profile | |||
contents. However, the framework provides the following requirements | contents. However, the framework provides the following requirements | |||
and recommendations for profile data definitions: | and recommendations for profile data definitions: | |||
o The device profile type SHOULD specify parameters to configure the | o The device profile type SHOULD specify parameters to configure the | |||
identities and credentials for use in scenarios such as | identities and credentials for use in scenarios such as | |||
bootstrapping (see Section 5.3.1) and run-time modifications to | bootstrapping (see Section 5.3.1) and run-time modifications to | |||
identities and credentials. This framework recommends the device | identities and credentials. This framework recommends the device | |||
profile to provide the identities and credentials due to a couple | profile provide the identities and credentials due to a couple of | |||
of reasons. The local-network profile may not always be | reasons. The local-network profile may not always be available, | |||
available, and even if present, may not be controlled by the | and even if present, may not be controlled by the device provider | |||
device provider who controls device configuration to provide | who controls device configuration to provide services. Further, | |||
services. Further, the device may not have any users configured | the device may not have any users configured prior to being | |||
prior to being bootstrapped, resulting in an absence of user | bootstrapped, resulting in an absence of user profile requests. | |||
profile requests. However, this framework does not prevent other | However, this framework does not prevent other profile types from | |||
profile types from providing identities and credentials to meet | providing identities and credentials to meet deployment needs. | |||
deployment needs. For example, the user profile can contain | For example, the user profile can contain identities and | |||
identities and credentials for communicating with specific | credentials for communicating with specific applications. | |||
applications. | ||||
o Each profile MUST clearly identify if it may contain any sensitive | o Each profile MUST clearly identify if it may contain any sensitive | |||
data. Such profiles MUST also identify the data elements that are | data. Such profiles MUST also identify the data elements that are | |||
considered sensitive, i.e., data that cannot be compromised. As | considered sensitive, i.e., data that cannot be disclosed to | |||
an example, a device profile definition may identify itself as | unauthorized parties. As an example, a device profile definition | |||
containing sensitive data and indicate data such as device | may identify itself as containing sensitive data and indicate data | |||
credentials to be sensitive. | such as device credentials to be sensitive. | |||
o When the device receives multiple profiles, the contents of each | o When the device receives multiple profiles, the contents of each | |||
profile type SHOULD only contain data relevant to the entity it | profile type SHOULD only contain data relevant to the entity it | |||
represents. As an example, consider a device that obtains all the | represents. As an example, consider a device that obtains all the | |||
defined profiles. Information pertaining to the local network is | defined profiles. Information pertaining to the local network is | |||
contained in the 'local-network' profile and not the 'user' | contained in the 'local-network' profile and not the 'user' | |||
profile. This does not preclude relevant data about a different | profile. This does not preclude relevant data about a different | |||
entity from being included in a profile type, e.g., the 'device' | entity from being included in a profile type, e.g., the 'device' | |||
profile type may contain information about the users allowed to | profile type may contain information about the users allowed to | |||
access services via the device. A profile may also contain | access services via the device. A profile may also contain | |||
starting information to obtain subsequent Profiles. | starting information to obtain subsequent Profiles. | |||
o Data overlap SHOULD be avoided across profile types, unless | o Data overlap SHOULD be avoided across profile types, unless | |||
necessary. If data overlap is present, prioritization of the data | necessary. If data overlap is present, prioritization of the data | |||
is left to data definitions. As an example, the device profile | is left to data definitions. As an example, the device profile | |||
may contain the list of codecs to be used by the device and the | may contain the list of codecs to be used by the device and the | |||
user Profile (for a user on the device) may contain the codecs | user Profile (for a user on the device) may contain the codecs | |||
preferred by the user. Thus, the same data (usable codecs) is | preferred by the user. Thus, the same data (usable codecs) is | |||
present in two profiles. However, the data definitions may | present in two profiles. However, the data definitions may | |||
indicate that to function effectively, any codec chosen for | indicate that to function effectively, any codec chosen for | |||
communication needs to be present in both the profiles. | communication needs to be present in both the profiles. | |||
5.3.5. Profile Data Frameworks | 5.3.4. Profile Data Frameworks | |||
The framework specified in this document does not address profile | The framework specified in this document does not address profile | |||
data representation, storage or retrieval protocols. It assumes that | data representation, storage or retrieval protocols. It assumes that | |||
the PDS has a PCC based on existing or other Profile Data Frameworks. | the PDS has a PCC based on existing or other Profile Data Frameworks. | |||
While this framework does not impose specific constraints on any such | While this framework does not impose specific constraints on any such | |||
framework, it does allow for the propagation of profile content to | framework, it does allow for the propagation of profile content to | |||
the PDS (specifically the PCC) from a network element or the device. | the PDS (specifically the PCC). Thus, Profile Data or Retrieval | |||
Thus, Profile Data or Retrieval frameworks used in conjunction with | frameworks used in conjunction with this framework MAY consider | |||
this framework MAY consider techniques for propagating incremental, | techniques for propagating incremental, atomic changes to the PDS. | |||
atomic changes to the PDS. One means for propagating changes to a | One means for propagating changes to a PDS is XCAP ([RFC4825]). | |||
PDS is defined in XCAP ([RFC4825]). | ||||
5.3.6. Additional Profile Types | 5.3.5. Additional Profile Types | |||
This document specifies three profile types: local-network, device | This document specifies three profile types: local-network, device | |||
and user. However, there may be use cases for additional profile | and user. However, there may be use cases for additional profile | |||
types. e.g., profile types for application specific profile data or | types. e.g., profile types for application specific profile data or | |||
to provide enterprise-specific policies. Definition of such | to provide enterprise-specific policies. Definition of such | |||
additional profile types is not prohibited, but considered out of | additional profile types is not prohibited, but considered out of | |||
scope for this document. Such profile definitions MUST specify the | scope for this document. Such profile definitions MUST specify the | |||
order of retrieval with respect to all the other profiles such as the | order of retrieval with respect to all the other profiles such as the | |||
local-network, device and user profile types defined in this | local-network, device and user profile types defined in this | |||
document. | document. | |||
5.3.7. Deployment considerations | 5.3.6. Deployment considerations | |||
The framework defined in this document was designed to address | The framework defined in this document was designed to address | |||
various deployment considerations, some of which are highlighted | various deployment considerations, some of which are highlighted | |||
below. | below. | |||
Provider relationships: | Provider relationships: | |||
o The local network provider and the SIP service provider can often | o The local network provider and the SIP service provider can often | |||
be different entities, with no administrative or business | be different entities, with no administrative or business | |||
relationship with each other. | relationship with each other. | |||
o There may be multiple SIP service providers involved, one for each | o There may be multiple SIP service providers involved, one for each | |||
skipping to change at page 37, line 11 | skipping to change at page 36, line 48 | |||
Also, additional content types may be defined along with the profile | Also, additional content types may be defined along with the profile | |||
formats that can be used in the Accept header of the SUBSCRIBE to | formats that can be used in the Accept header of the SUBSCRIBE to | |||
filter or indicate what data sets of the profile are desired. | filter or indicate what data sets of the profile are desired. | |||
6.2.2. vendor, model and version | 6.2.2. vendor, model and version | |||
The "vendor", "model" and "version" parameter values are tokens | The "vendor", "model" and "version" parameter values are tokens | |||
specified by the implementer of the user agent. These parameters | specified by the implementer of the user agent. These parameters | |||
MUST be provided in the SUBSCRIBE request for all profile types. The | MUST be provided in the SUBSCRIBE request for all profile types. The | |||
implementer SHOULD use their DNS domain name (e.g., example.com) as | implementer SHOULD use their DNS domain name (e.g., example.com) as | |||
the value of the "vendor" parameter so that it is known to be unique. | the value of the "vendor" parameter so that it is known to be unique, | |||
These parameters are useful to the PDS to affect the profiles | unless there is a good reason not to. Examples of exceptions | |||
provided. In some scenarios it is desirable to provide different | include: if the vendor does not have an assigned DNS domain name, if | |||
profiles based upon these parameters. e.g., feature property X in a | they are using a different vendor's implementation etc. These | |||
profile may work differently on two versions of the same user agent. | parameters are useful to the PDS to affect the profiles provided. In | |||
This gives the PDS the ability to compensate for or take advantage of | some scenarios it is desirable to provide different profiles based | |||
the differences. In the following ABNF defining the syntax, EQUAL | upon these parameters. e.g., feature property X in a profile may work | |||
and quoted-string are defined in [RFC3261]. | differently on two versions of the same user agent. This gives the | |||
PDS the ability to compensate for or take advantage of the | ||||
differences. In the following ABNF defining the syntax, EQUAL and | ||||
quoted-string are defined in [RFC3261]. | ||||
Vendor = "vendor" EQUAL quoted-string | Vendor = "vendor" EQUAL quoted-string | |||
Model = "model" EQUAL quoted-string | Model = "model" EQUAL quoted-string | |||
Version = "version" EQUAL quoted-string | Version = "version" EQUAL quoted-string | |||
6.2.3. effective-by parameter | 6.2.3. effective-by parameter | |||
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. If it is absent, the device SHOULD attempt to make the | immediately. If it is absent, the device SHOULD attempt to make the | |||
profile data effective at the earliest possible opportunity that does | profile data effective at the earliest possible opportunity that does | |||
not disrupt any services being offered. The "effective-by" parameter | not disrupt any services being offered. The "effective-by" parameter | |||
is ignored in all messages other than the NOTIFY request. In the | is ignored in all messages other than the NOTIFY request. In the | |||
following ABNF, EQUAL and DIGIT are defined in [RFC3261]. | following ABNF, EQUAL and DIGIT are defined in [RFC3261]. | |||
Effective-By = "effective-by" EQUAL 1*DIGIT | Effective-By = "effective-by" EQUAL 1*DIGIT | |||
skipping to change at page 38, line 29 | skipping to change at page 38, line 21 | |||
The following table shows the use of Event header parameters in | The following table shows the use of Event header parameters in | |||
SUBSCRIBE requests for the three profile types: | SUBSCRIBE requests for the three profile types: | |||
profile-type || device | user | local-network | profile-type || device | user | local-network | |||
============================================= | ============================================= | |||
vendor || m | m | m | vendor || m | m | m | |||
model || m | m | m | model || m | m | m | |||
version || m | m | m | version || m | m | m | |||
effective-by || | | | effective-by || | | | |||
m - mandatory | m - MUST be provided | |||
s - SHOULD be provided | s - SHOULD be provided | |||
o - optional | o - OPTIONAL to be provided | |||
Non-specified means that the parameter has no meaning and should be | Non-specified means that the parameter has no meaning and should be | |||
ignored. | ignored. | |||
The following table shows the use of Event header parameters in | The following table shows the use of Event header parameters in | |||
NOTIFY requests for the three profile types: | NOTIFY requests for the three profile types: | |||
profile-type || device | user | local-network | profile-type || device | user | local-network | |||
============================================= | ============================================= | |||
vendor || | | | vendor || | | | |||
skipping to change at page 41, line 21 | skipping to change at page 41, line 17 | |||
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 | |||
The rate of notifications for the profiles in this framework is | The rate of notifications for the profiles in this framework is | |||
deployment specific, but expected to be infrequent. Hence, the Event | deployment specific, but expected to be infrequent. Hence, the Event | |||
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 the | relevant to this framework. Both the examples are derived from the | |||
use case illustrated in Section 4.1, specifically the request for the | use case illustrated in Section 4.1, specifically the request for the | |||
skipping to change at page 50, line 7 | skipping to change at page 50, line 7 | |||
other SIP proxies, if required). | other SIP proxies, if required). | |||
When a PDS receives the enrollment request, it can either challenge | When a PDS receives the enrollment request, it can either challenge | |||
any contained identity or admit the enrollment. Authorization rules | any contained identity or admit the enrollment. Authorization rules | |||
then decide if the enrollment gets accepted. If accepted, the PDS | then decide if the enrollment gets accepted. If accepted, the PDS | |||
sends an initial notification that contains either the profile data, | sends an initial notification that contains either the profile data, | |||
or content indirection information. The profile data can contain | or content indirection information. The profile data can contain | |||
generic profile data (common across multiple devices) or information | generic profile data (common across multiple devices) or information | |||
specific to an entity (such as the device or a user). If specific to | specific to an entity (such as the device or a user). If specific to | |||
an entity, it may contain sensitive information such as credentials. | an entity, it may contain sensitive information such as credentials. | |||
Compromise of sensitive data can lead to threats such as | Disclosure of sensitive data can lead to threats such as | |||
impersonation attacks (establishing rogue sessions), theft of service | impersonation attacks (establishing rogue sessions), theft of service | |||
(if services are obtainable), and zombie attacks. It is important | (if services are obtainable), and zombie attacks. It is important | |||
for the device to ensure the authenticity of the PNC and the PCC | for the device to ensure the authenticity of the PNC and the PCC | |||
since impersonation of the SIP service provider can lead to Denial of | since impersonation of the SIP service provider can lead to Denial of | |||
Service and Man-in-the-Middle attacks. | Service and Man-in-the-Middle attacks. | |||
Profile content retrieval allows a device to retrieve profile data | Profile content retrieval allows a device to retrieve profile data | |||
via content indirection from a PCC. This communication is | via content indirection from a PCC. This communication is | |||
accomplished using one of many profile delivery protocols or | accomplished using one of many profile delivery protocols or | |||
frameworks, such as HTTP or HTTPS as specified in this document. | frameworks, such as HTTP or HTTPS as specified in this document. | |||
However, since the profile data returned is subject to the same | However, since the profile data returned is subject to the same | |||
considerations as that sent via profile notification, similar threats | considerations as that sent via profile notification, similar threats | |||
exist. For example, denial of service attacks (rogue devices bombard | exist. For example, denial of service attacks (rogue devices bombard | |||
the PCC with requests for a specific profile) and attempts to modify | the PCC with requests for a specific profile) and attempts to modify | |||
erroneous data onto the PCC (since the location and format may be | erroneous data onto the PCC (since the location and format may be | |||
known). Thus, for the delivery of any sensitive profile data, | known). Thus, for the delivery of any sensitive profile data, | |||
authentication of the entity requesting profile data is required. It | authentication of the entity requesting profile data is required. It | |||
is also important for the requesting entity to authenticate the | is also important for the requesting entity to authenticate the | |||
profile source via content indirection, and ensure that the sensitive | profile source via content indirection, and ensure that the sensitive | |||
profile data is protected via message integrity. For sensitive data | profile data is protected via data integrity. For sensitive data | |||
that should not be subject to snooping, privacy is also required. | that should not be disclosed to unauthorized parties, data | |||
confidentiality is also required. | ||||
The following sub-sections highlight the security considerations that | The following sub-sections highlight the security considerations that | |||
are specific to each profile type. | are specific to each profile type. | |||
9.1. Local-network profile | 9.1. Local-network profile | |||
A local network may or may not (e.g., home router) support local- | A local network may or may not (e.g., home router) support local- | |||
network profiles as specified in this framework. Even if supported, | network profiles as specified in this framework. Even if supported, | |||
the PDS may only be configured with a generic local-network profile | the PDS may only be configured with a generic local-network profile | |||
that is provided to every device that requests the local-network | that is provided to every device that requests the local-network | |||
profile. Such a PDS may not implement any authentication | profile. Such a PDS may not implement any authentication | |||
requirements or TLS. | requirements or TLS. | |||
Alternatively, certain deployments may require the entities - device | Alternatively, certain deployments may require the entities - device | |||
and the PDS - to authenticate each other prior to successful profile | and the PDS - to authenticate each other prior to successful profile | |||
enrollment. Such networks may pre-configure user identities to the | enrollment. Such networks may pre-configure user identities to the | |||
devices and allow user-specific local-network profiles. In such | devices and allow user-specific local-network profiles. In such | |||
networks the PDS will support digest, and the devices are configured | networks the PDS will support digest authentication, and the devices | |||
with user identities and credentials as specified in Section 5.3.1. | are configured with user identities and credentials as specified in | |||
If sensitive profile data is being transmitted, the user identity is | Section 5.3.1. If sensitive profile data is being transmitted, the | |||
a SIPS URI that results in TLS with the next-hop (which is | user identity is a SIPS URI that results in TLS with the next-hop | |||
authenticated), and digest authentication is used by the PDS and the | (which is authenticated), and digest authentication is used by the | |||
device. | PDS and the device. | |||
This framework supports both use cases and any variations in-between. | This framework supports both use cases and any variations in-between. | |||
However, devices obtaining local-network profiles from an | However, devices obtaining local-network profiles from an | |||
unauthenticated PDS are cautioned against potential Man-in-the-Middle | unauthenticated PDS are cautioned against potential Man-in-the-Middle | |||
or PDS impersonation attacks. This framework requires that a device | or PDS impersonation attacks. This framework requires that a device | |||
reject sensitive data, such as credentials, from unauthenticated | reject sensitive data, such as credentials, from unauthenticated | |||
local-network sources. It also prohibits devices from responding to | local-network sources. It also prohibits devices from responding to | |||
authentication challenges in the absence of TLS on all hops as a | authentication challenges in the absence of TLS on all hops as a | |||
result of using a SIPS URI. Responding to unauthenticated challenges | result of using a SIPS URI. Responding to unauthenticated challenges | |||
allows for dictionary attacks that can reveal weak passwords. The | allows for dictionary attacks that can reveal weak passwords. The | |||
skipping to change at page 52, line 17 | skipping to change at page 52, line 18 | |||
If not, the device can still guarantee header and body integrity if | If not, the device can still guarantee header and body integrity if | |||
the profile data contains the domain certificate (but the data can | the profile data contains the domain certificate (but the data can | |||
still be invalid or malicious). In such cases, devices supporting | still be invalid or malicious). In such cases, devices supporting | |||
user interfaces may obtain confirmation from the user trying to | user interfaces may obtain confirmation from the user trying to | |||
bootstrap the device (confirming header and body integrity). | bootstrap the device (confirming header and body integrity). | |||
However, when the SIP Identity header is not present, or the device | However, when the SIP Identity header is not present, or the device | |||
is not capable of validating it, the bootstrapping data is | is not capable of validating it, the bootstrapping data is | |||
unauthenticated and obtained without any integrity protection. Such | unauthenticated and obtained without any integrity protection. Such | |||
bootstrapping data, however, may contain only temporary credentials | bootstrapping data, however, may contain only temporary credentials | |||
(SIPS URI and digest credentials) that can be used to reconnect to | (SIPS URI and digest credentials) that can be used to reconnect to | |||
the network to ensure message integrity and privacy prior to | the network to ensure data integrity and data confidentiality prior | |||
obtaining long-term credentials. It is to be noted that such devices | to obtaining long-term credentials. It is to be noted that such | |||
are at the mercy of the network they request the device profile from. | devices are at the mercy of the network they request the device | |||
If they are initialized in a rogue network, or get hijacked by a | profile from. If they are initialized in a rogue network, or get | |||
rogue PDS, the end-user may be left without desired device operation | hijacked by a rogue PDS, the end-user may be left without desired | |||
or, worse, unwanted operation. To mitigate such factors the device | device operation or, worse, unwanted operation. To mitigate such | |||
provider may communicate temporary credentials (e.g., passwords that | factors the device provider may communicate temporary credentials | |||
can be entered via an interface) or permanent credentials (e.g., a | (e.g., passwords that can be entered via an interface) or permanent | |||
USB device) to the end-user for connectivity. If such methods are | credentials (e.g., a USB device) to the end-user for connectivity. | |||
used, those credentials MUST be quickly replaced by large-entropy | If such methods are used, those credentials MUST be quickly replaced | |||
credentials, to minimize the impact of dictionary attacks. Future | by large-entropy credentials, to minimize the impact of dictionary | |||
enhancements to this framework may specify device capabilities that | attacks. Future enhancements to this framework may specify device | |||
allow for authentication without any provider specific configuration | capabilities that allow for authentication without any provider | |||
(e.g., X.509 certificates using PKI can allow for authentication by | specific configuration (e.g., X.509 certificates using PKI can allow | |||
any provider with access to the CA certificate). Alternatively, the | for authentication by any provider with access to the CA | |||
device may be pre-configured with with credentials for use with | certificate). Alternatively, the device may be pre-configured with | |||
content indirection mechanisms. In such circumstances a PDS can use | with credentials for use with content indirection mechanisms. In | |||
secure content indirection mechanism, such as HTTPS, to provide the | such circumstances a PDS can use secure content indirection | |||
bootstrapping data. | mechanism, such as HTTPS, to provide the bootstrapping data. | |||
Once a device is associated with a device provider the device profile | Once a device is associated with a device provider the device profile | |||
is vital to device operation. This is because the device profile can | is vital to device operation. This is because the device profile can | |||
contain important operational information such as users that are to | contain important operational information such as users that are to | |||
be allowed access (white-list or black-list), user credentials (if | be allowed access (white-list or black-list), user credentials (if | |||
required) and other sensitive information. Thus, it is necessary to | required) and other sensitive information. Thus, it is necessary to | |||
ensure that any device profile containing sensitive information is | ensure that any device profile containing sensitive information is | |||
obtained via an authenticated source, with integrity protection, and | obtained via an authenticated source, with integrity protection, and | |||
delivered to an authenticated device. For sensitive information such | delivered to an authenticated device. For sensitive information such | |||
as credentials, privacy is also required. The framework requires | as credentials, data confidentiality is also required. The framework | |||
that devices obtain sensitive information only from authenticated | requires that devices obtain sensitive information only from | |||
entities except while it is being bootstrapped. In cases where | authenticated entities except while it is being bootstrapped. In | |||
privacy needs to be mandated for notifications, the device provider | cases where data confidentiality needs to be mandated for | |||
can configure the device with a SIPS URI, to be used as the | notifications, the device provider can configure the device with a | |||
subscription URI, during profile enrollment. The framework also | SIPS URI, to be used as the Subscription URI, during profile | |||
requires a PDS presenting sensitive profile data to use digest | enrollment. The framework also requires a PDS presenting sensitive | |||
authentication. This ensures that the data is delivered to an | profile data to use digest authentication. This ensures that the | |||
authenticated entity. Authentication of profile retrieval via | data is delivered to an authenticated entity. Authentication of | |||
content indirection for sensitive profiles is via HTTPS utilizing | profile retrieval via content indirection for sensitive profiles is | |||
HTTP digest. | via HTTPS utilizing HTTP digest. | |||
9.3. User profile | 9.3. User profile | |||
Devices can only request user profiles for users that are known by a | Devices can only request user profiles for users that are known by a | |||
SIP service provider. PDSs are required to reject user profile | SIP service provider. PDSs are required to reject user profile | |||
enrollment requests for any users that are unknown in the network. | enrollment requests for any users that are unknown in the network. | |||
For known user AoRs that are allowed to retrieve profiles, the | For known user AoRs that are allowed to retrieve profiles, the | |||
security considerations are similar to that of the device profile | security considerations are similar to that of the device profile | |||
(except for bootstrapping). | (except for bootstrapping). | |||
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, Henning Schulzrinne, | |||
Schulzrinne from Columbia University, Cullen Jennings from Cisco, | Cullen Jennings, Rohan Mahy, Rich Schaaf, Volker Hilt, Adam Roach, | |||
Rohan Mahy from Plantronics, Rich Schaaf from Pingtel, Volker Hilt | Hisham Khartabil, Henry Sinnreich, Martin Dolly, John Elwell, Elliot | |||
from Bell Labs, Adam Roach of Estacado Systems, Hisham Khartabil from | Eichen, Robert Liao, Dale Worley, Francois Audet, Roni Even, Jason | |||
Telio, Henry Sinnreich from MCI, Martin Dolly from AT&T Labs, John | Fischl, Josh Littlefield, and Nhut Nguyen. | |||
Elwell from Siemens, Elliot Eichen and Robert Liao from Verizon, Dale | ||||
Worley from Pingtel, Francois Audet from Nortel, Roni Even from | ||||
Polycom, Jason Fischl from Counterpath, Josh Littlefield from Cisco, | ||||
Nhut Nguyen from Samsung. | ||||
The final revisions of this document were a product of design team | The final revisions of this document were a product of design team | |||
discussions. The editor wishes to extend special appreciation to the | discussions. The editor wishes to extend special appreciation to the | |||
following design team members for their numerous reviews and specific | following design team members for their numerous reviews and specific | |||
contributions to various sections: Josh Littlefield from Cisco | contributions to various sections: Josh Littlefield (Overview, | |||
(Overview, Section 6), Peter Blatherwick from Mitel (Section 6), | Section 6), Peter Blatherwick (Section 6), Cullen Jennings | |||
Cullen Jennings (Security), Sam Ganesan (Section 6) and Mary Barnes | (Security), Sam Ganesan (Section 6) and Mary Barnes (layout, Section | |||
(layout, Section 6). | 6). | |||
The following design team members are thanked for numerous reviews | The following design team members are thanked for numerous reviews | |||
and general contributions: Martin Dolly from AT&T Labs, Jason Fischl | and general contributions: Martin Dolly from AT&T Labs, Jason Fischl | |||
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, Donald Lukacs, Roni Even, | |||
from Telcordia, Roni Even from Polycom, David Robbins from Verizon, | David Robbins, Shida Schubert, and Eugene Nechamkin. The editor | |||
Shida Schubert from NTT Advanced Technology Corporation, and Eugene | would also like to extend a special thanks to the comments and | |||
Nechamkin from Broadcom. The editor would also like to extend a | recommendations provided by the SIPPING WG, specifically Keith Drage | |||
special thanks to the comments and recommendations provided by the | (restructuring proposal) and John Elwell (numerous reviews and | |||
SIPPING WG, specifically Keith Drage from Lucent (restructuring | ||||
proposal) and John Elwell from Siemens (numerous reviews and | ||||
recommendations). | recommendations). | |||
Additionally, appreciation is also due to Peter Koch for expert DNS | Additionally, appreciation is also due to Peter Koch for expert DNS | |||
advice. | advice. | |||
And finally, sincere appreciation is extended to the chairs (Mary | And finally, sincere appreciation is extended to the chairs (Mary | |||
Barnes from Nortel and Gonzalo Camarillo from Ericsson), the past/ | Barnes and Gonzalo Camarillo), the past/current Area Directors | |||
current Area Directors (Cullen Jennings from Cisco, Jon Peterson from | (Cullen Jennings, Jon Peterson, and Robert Sparks) for facilitating | |||
Neustar, and Robert Sparks from Tekelec) for facilitating | ||||
discussions, reviews and contributions; and, the expert reviewers | discussions, reviews and contributions; and, the expert reviewers | |||
from the IESG (Peter McCann from Motorola, Catherine Meadows from | from the IESG (Peter McCann, Catherine Meadows). | |||
Naval Research Laboratory). | ||||
11. References | 11. References | |||
11.1. Normative References | 11.1. Normative References | |||
[FIPS-180-3] | ||||
National Institute of Standards and Technology (NIST), | ||||
"Secure Hash Standard (SHS)", FIPS PUB 180-3, | ||||
October 2008. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |||
[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | |||
Leach, P., Luotonen, A., and L. Stewart, "HTTP | Leach, P., Luotonen, A., and L. Stewart, "HTTP | |||
Authentication: Basic and Digest Access Authentication", | Authentication: Basic and Digest Access Authentication", | |||
skipping to change at page 55, line 31 | skipping to change at page 55, line 29 | |||
May 2006. | May 2006. | |||
[RFC4704] Volz, B., "The Dynamic Host Configuration Protocol for | [RFC4704] Volz, B., "The Dynamic Host Configuration Protocol for | |||
IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) | IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) | |||
Option", RFC 4704, October 2006. | Option", RFC 4704, October 2006. | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
May 2008. | May 2008. | |||
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | ||||
Specifications: ABNF", STD 68, RFC 5234, January 2008. | ||||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
(TLS) Protocol Version 1.2", RFC 5246, August 2008. | (TLS) Protocol Version 1.2", RFC 5246, August 2008. | |||
[RFC5626] Jennings, C., Mahy, R., and F. Audet, "Managing Client- | [RFC5626] Jennings, C., Mahy, R., and F. Audet, "Managing Client- | |||
Initiated Connections in the Session Initiation Protocol | Initiated Connections in the Session Initiation Protocol | |||
(SIP)", RFC 5626, October 2009. | (SIP)", RFC 5626, October 2009. | |||
11.2. Informative References | 11.2. Informative References | |||
[I-D.ietf-ecrit-phonebcp] | [I-D.ietf-ecrit-phonebcp] | |||
Rosen, B. and J. Polk, "Best Current Practice for | Rosen, B. and J. Polk, "Best Current Practice for | |||
Communications Services in support of Emergency Calling", | Communications Services in support of Emergency Calling", | |||
draft-ietf-ecrit-phonebcp-14 (work in progress), | draft-ietf-ecrit-phonebcp-15 (work in progress), | |||
January 2010. | July 2010. | |||
[RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | [RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | |||
STD 9, RFC 959, October 1985. | STD 9, RFC 959, October 1985. | |||
[RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | |||
Extensions", RFC 2132, March 1997. | Extensions", RFC 2132, March 1997. | |||
[RFC4510] Zeilenga, K., "Lightweight Directory Access Protocol | [RFC4510] Zeilenga, K., "Lightweight Directory Access Protocol | |||
(LDAP): Technical Specification Road Map", RFC 4510, | (LDAP): Technical Specification Road Map", RFC 4510, | |||
June 2006. | June 2006. | |||
[RFC4634] Eastlake, D. and T. Hansen, "US Secure Hash Algorithms | ||||
(SHA and HMAC-SHA)", RFC 4634, July 2006. | ||||
[RFC4825] Rosenberg, J., "The Extensible Markup Language (XML) | [RFC4825] Rosenberg, J., "The Extensible Markup Language (XML) | |||
Configuration Access Protocol (XCAP)", RFC 4825, May 2007. | Configuration Access Protocol (XCAP)", RFC 4825, May 2007. | |||
Authors' Addresses | Authors' Addresses | |||
Daniel Petrie | Daniel Petrie | |||
SIPez LLC. | SIPez LLC. | |||
34 Robbins Rd | 246A Park Ave | |||
Arlington, MA 02476 | Arlington, MA 02476 | |||
USA | USA | |||
Email: dan.ietf AT SIPez DOT com | Email: dan.ietf AT SIPez DOT com | |||
URI: http://www.SIPez.com/ | URI: http://www.SIPez.com/ | |||
Sumanth Channabasappa (Editor) | Sumanth Channabasappa (Editor) | |||
CableLabs | CableLabs | |||
858 Coal Creek Circle | 858 Coal Creek Circle | |||
Louisville, Co 80027 | Louisville, Co 80027 | |||
End of changes. 69 change blocks. | ||||
200 lines changed or deleted | 217 lines changed or added | |||
This html diff was produced by rfcdiff 1.40. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |