Groupe de travail Réseau	O. Levin, Microsoft Corporation	
Request for Comments : 4488	mai 2006	
Catégorie : Sur la voie de la normalisation	Traduction Claude Brière de L'Isle	

Suppression de l'abonnement implicite à la méthode REFER du ptotocole d'initialisation de session (SIP)

Statut du présent mémoire
Le présent document spécifie un protocole de l’Internet en cours de normalisation pour la communauté de l’Internet, et appelle à des discussions et suggestions pour son amélioration. Prière de se référer à l’édition en cours des "Protocoles officiels de l’Internet" (STD 1) pour voir l’état de normalisation et le statut de ce protocole. La distribution du présent mémoire n’est soumise à aucune restriction.

Notice de Copyright
Copyright (C) The Internet Society (2006).

Résumé
L'extension REFER du protocole d'initialisation de session (SIP, Session Initiation Protocol) définie dans la RFC 3515 établit automatiquement un abonnement d'événement normalement de courte durée utilisé pour notifier à la partie qui envoie une demande REFER l'état du receveur lors de l'exécution de la transaction demandée par le REFER. Ces notifications ne sont pas nécessaires dans tous les cas. La présente spécification donne le moyen d'empêcher l'établissement automatique d'un abonnement d'événement et les notifications qui en découlent en utilisant un nouveau champ d'en-tête d'extension SIP qui peut être inclus dans une demande REFER.
Table des matières
1. Introduction	1
2. Terminologie	2
3. Motifs	2
4. Définitions	2
5. Prévention du fourchement des demandes REFER	3
6. Exemple	3
7. Considérations relatives à l'IANA	4
8. Considérations sur la sécurité	4
9. Remerciements	4
10. Références	4
10.1 Références normatives	4
10.2 Références pour information	5
Adresse de l'auteur	5
Déclaration complète de droits de reproduction	5

 	1.	Introduction

La spécification REFER [RFC3515] indique que chaque REFER crée un abonnement implicite entre l'émetteur de REFER et le receveur de REFER.

Le présent document définit un nouveau champ d'en-tête SIP : "Refer-Sub" significatif seulement au sein d'une transaction REFER. Ce champ d'en-tête, quand il est réglé à "faux", spécifie qu'un émetteur de REFER demande que le receveur de REFER n'établisse pas un abonnement implicite, ni le dialogue résultant.

Le présent document définit une nouvelle étiquette d'option : "norefersub". Cette étiquette, quand elle est incluse dans le champ d'en-tête Supported, indique qu'un agent d'utilisateur (UA, User Agent) est capable d'accepter une demande REFER sans créer un abonnement implicite lorsque il agit comme receveur de REFER.

 	2.	Terminologie

Les mots clés "DOIT", "NE DOIT PAS", "EXIGE", "DEVRA", "NE DEVRA PAS", "DEVRAIT", "NE DEVRAIT PAS", "RECOMMANDE", "PEUT", et "FACULTATIF" en majuscules dans ce document sont à interpréter comme décrit dans le BCP 14, [RFC2119].

Pour simplifier la discussions de la méthode REFER et de ses extensions, les trois termes ci-dessous sont utilisés tout au long du document :
o	émetteur de REFER : l'UA qui produit la demande REFER.
o	receveur de REFER : l'UA qui reçoit la demande REFER.
o	cible de REFER : l'UA désigné dans l'identifiant de ressource universel (URI, Uniform Resource Identifier) Refer-To.

 	3.	Motifs

La spécification REFER rend obligatoire que chaque REFER crée un abonnement implicite entre l'émetteur de REFER et le receveur de REFER. Cet abonnement résulte en l'envoi d'au moins un NOTIFY du receveur de REFER à l'émetteur de REFER. Le receveur de REFER peut choisir d'annuler l'abonnement implicite avec ce NOTIFY. L'émetteur de REFER peut choisir d'annuler cet abonnement implicite avec un SUBSCRIBE explicite (Expires: 0) après réception du NOTIFY initial.

Un des objets de la demande d'un abonnement implicite et du NOTIFY initial est de permettre la situation où la demande REFER se trouve fourchée et où l'émetteur de REFER a besoin d'un moyen pour voir les multiples dialogues qui peuvent être établis par suite du REFER fourché. C'est la même approche qu'utilisée pour traiter le fourchement des demandes SUBSCRIBE [RFC3265]. Lorsque l'émetteur de REFER spécifie explicitement que le fouchement ne se produit pas, l'exigence d'établissement d'un abonnement implicite n'est pas nécessaire.

Un autre objet du NOTIFY est d'informer l'émetteur de REFER des progrès de la transaction SIP qui résulte du REFER chez le receveur de REFER. Dans le cas où l'émetteur de REFER est déjà informé des progrès de l'opération demandée, comme lorsque l'émetteur de REFER a un abonnement explicite au paquetage d'événements de dialogue chez le receveur de REFER, l'abonnement implicite et le trafic résultant de NOTIFY relatifs au REFER peut créer une surcharge inutile du réseau.

 	4.	Définitions

Le présent document définit un nouveau champ d'en-tête SIP : "Refer-Sub". Ce champ d'en-tête n'est significatif et ne PEUT être utilisé qu'avec une demande REFER et la réponse 2XX correspondante. Ce champ d'en-tête réglé à "faux" spécifie qu'un émetteur de REFER demande que le receveur de REFER n'établisse pas un abonnement implicite ni le dialogue résultant. Noter que quand on utilise cette extension, le REFER reste une demande de rafraîchissement de cible (comme dans le cas par défaut -- quand l'extension n'est pas utilisée).

Le présent document ajoute l'entrée suivante au Tableau 2 de la [RFC3261]. Des ajouts à ce tableau sont aussi fournis pour les méthodes d'extension au moment de la publication du présent document. Ceci est donné pour l'agrément du lecteur et n'est en aucune façon normatif :

Champ d'en-tête	où	ACK mandataire	BYE	CAN	INV	OPT	REG	MSG
Refer-Sub	R, 2xx	-	-	-	-	-	-	-

Champ d'en-tête	où	SUB	NOT	REF	INF	UPD	PRA	PUB
Refer-Sub	R, 2xx	-	- 	o	- 	-	-	-

Le champ d'en-tête Refer-Sub PEUT être chiffré au titre du chiffrement de bout en bout.

La syntaxe du champ d'en-tête suit le BNF défini ci-dessous :
Refer-Sub = "Refer-Sub" HCOLON refer-sub-value *(SEMI exten)
refer-sub-value = "vrai" / "faux"
exten = generic-param

où la syntaxe de generic-param est définie dans la [RFC3261].

Le champ d'en-tête "Refer-Sub" réglé à "faux" ne PEUT être utilisé par l'émetteur de REFER que quand l'émetteur de REFER peut être certain que la demande REFER ne va pas être fourchée.

Si le receveur de REFER prend en charge l'extension et veut traiter la transaction REFER sans établir un abonnement implicite, il DOIT insérer le champ d'en-tête "Refer-Sub" réglé à "faux" dans la réponse 2xx à l'émetteur de REFER. Dans ce cas, aucun abonnement implicite n'est créé. Par conséquent, aucun nouveau dialogue n'est créé si ce REFER a été produit en dehors d'un dialogue existant.

Si l'émetteur de REFER insère le champ d'en-tête "Refer-Sub" réglé à "faux", mais si le receveur de REFER ne suit pas la suggestion (c'est-à-dire, soit n'inclut pas le champ d'en-tête "Refer-Sub", soit inclut le champ d'en-tête "Refer-Sub" réglé à "vrai" dans la réponse 2xx) un abonnement implicite est créé comme dans le cas par défaut.

Le présent document définit aussi une nouvelle étiquette d'option, "norefersub". Cette étiquette, quand elle est incluse dans le champ d'en-tête Supported, spécifie qu'un agent d'utilisateur est capable d'accepter une demande REFER sans créer un abonnement implicite quand il agit comme receveur de REFER.

L'émetteur de REFER peut connaître les capacités du receveur de REFER à partir de la présence des étiquettes d'option dans le champ d'en-tête Supported de la demande ou réponse d'initiation du dialogue. Une autre façon d'apprendre les capacités serait en utilisant "présence", comme défini dans la [RFC5196]. Cependant, si les capacités du receveur de REFER ne sont pas connues, utiliser l'étiquette "norefersub" avec le champ d'en-tête Require N'est PAS RECOMMANDÉ.  Ceci est dû au fait que au cas où le receveur de REFER ne prendrait pas en charge l'extension, afin de revenir au REFER normal, l'émetteur de REFER aura besoin de produire une nouvelle transaction REFER, résultant donc en allers-retours supplémentaires.

Comme décrit au paragraphe 8.2.2.3 de la [RFC3261], un receveur de REFER va rejeter une demande REFER contenant un champ d'en-tête Require: norefersub avec une réponse 420 (Mauvaise extension) sauf si il prend en charge cette extension. Noter que Require: norefersub peut être présent avec un champ d'en-tête Refer-Sub: faux

 	5.	Prévention du fourchement des demandes REFER

La spécification de REFER permet la possibilité de fourcher une demande REFER qui est envoyée en dehors d'un dialogue existant. De plus, un mandataire peut fourcher un type de méthode inconnu. Si le fourchement devait se produire, l'envoyeur du REFER avec "Refer-Sub" ne va pas le savoir car une seule réponse 2xx va être transmise par le mandataire fourcheur. Par suite, il est de la responsabilité du producteur du REFER avec "Refer-Sub" de s'assurer qu'aucun fourchement ne va en résulter.

Si une demande REFER à un certain URI de demande devait fourcher, l'émetteur de REFER NE DEVRAIT PAS inclure le champ d'en-tête "Refer-Sub". L'émetteur de REFER DEVRAIT utiliser des mécanismes normalisés pour s'assurer que la demande REFER ne fourche pas. En l'absence de tout autre mécanisme, l'URI de demande de la demande REFER DEVRAIT avoir les propriétés d'agent d'utilisateur acheminable mondialement (GRUU, Globally Routable User Agent URI) conformément aux définitions de la [RFC5627] car ces propriétés assurent que la demande ne va pas fourcher.

 	6.	Exemple

Un exemple de REFER qui supprime l'abonnement implicite est montré ci-dessous. Noter que les conventions utilisées dans le document de message d'essai de résistance SIP [RFC4475] sont réutilisées, spécifiquement l'étiquette <allOneLine>.

REFER sip:pc-b@exemple.com SIP/2.0
Via: SIP/2.0/TCP issuer.exemple.com;branch=z9hG4bK-a-1
From: <sip:a@exemple.com>;tag=1a
<allOneLine>
To: sip:b@exemple.com;opaque=urn:uuid:f8
1d4fae-7dec-11d0-a765-00a0c91e6bf6;grid=99a
</allOneLine>
Call-ID: 1@issuer.exemple.com
CSeq: 234234 REFER
Max-Forwards: 70
Refer-To: <sip:c@exemple.com;method=INVITE>
Refer-Sub: faux
Supported: norefersub
Contact: sip:a@issuer.exemple.com
Content-Length: 0

 	7.	Considérations relatives à l'IANA

Le présent document enregistre un nouveau champ d'en-tête SIP "Refer-Sub". Ce champ d'en-tête n'est significatif que pour la demande REFER définie dans la [RFC3515] et la réponse correspondante. Les informations suivantes ont été ajoutées au registre de champ d'en-tête SIP dans le registre des paramètres SIP :
o Nom d'en-tête : Refer-Sub
o Forme compacte : aucune
o Référence : RFC 4488

Le présent document enregistre aussi une nouvelle étiquette d'option SIP, "norefersub", l'ajoutant au sous registre des étiquettes d'option SIP dans le registre des paramètres SIP. Les informations requises pour cet enregistrement, comme spécifiées dans la [RFC3261], sont :
o Nom : norefersub
o Description : cette étiquette d'option spécifie la capacité d'un agent d'utilisateur d'accepter une demande REFER sans établir un abonnement implicite (par rapport au cas par défaut défini dans la [RFC3515]).

 	8.	Considérations sur la sécurité

L'objet de cette extension SIP est de modifier le comportement attendu du receveur de REFER. Le changement de comportement est que le receveur de REFER n'établisse pas de dialogue et ne renvoie pas de messages NOTIFY à l'émetteur de REFER. À ce titre une inclusion malveillante d'un champ d'en-tête "Refer-Sub" réglé à "faux" réduit le traitement et les exigences d'état chez le receveur. Par suite, son utilisation dans une attaque de déni de service semble limité.

Par ailleurs, en insérant un champ d'en-tête "Refer-Sub" réglé à "faux", un attaquant interposé (MitM, man-in-the-middle) peut éventuellement exploiter le mécanisme pour une suppression plus facile (qu'une interception) des notifications provenant du receveur de REFER sans que l'émetteur de REFER le remarque. Aussi, en supprimant un champ d'en-tête "Refer-Sub" réglé à "faux", un MitM peut causer la génération par le receveur de REFER de notifications sur le dialogue implicite qui autrement auraient été supprimées par l'émetteur de REFER.

Pour se protéger contre ces sortes d'attaques par interposition, la protection de l'intégrité devrait être utilisée. Par exemple, l'émetteur de REFER pourrait utiliser S/MIME comme expliqué dans la [RFC3261] pour se protéger contre ces sortes d'attaques.

 	9.	Remerciements

La communauté SIP tient à remercier Sriram Parameswar pour ses idées, présentées à l'origine dans "Suppression  de l'abonnement implicite à Refer" (octobre 2002) qui a servi de base à la présente spécification.

 	10.	Références
 	10.1	Références normatives
[RFC2119]	S. Bradner, "Mots clés à utiliser dans les RFC pour indiquer les niveaux d'exigence", BCP 14, mars 1997. (MàJ par RFC8174)

[RFC3261]	J. Rosenberg et autres, "SIP : Protocole d'initialisation de session", juin 2002. (Mise à jour par 3265, 3853, 4320, 4916, 5393, 6665, 8217, 8760)

[RFC3265]	A.B. Roach, "Notification d'événement spécifique du protocole d'initialisation de session (SIP)", juin 2002. (MàJ par RFC6446) (Remplacée par la RFC6665) 

[RFC3515]	R. Sparks, "Méthode Refer du protocole d'initialisation de session (SIP)", avril 2003. (MàJ par RFC8217)

 	10.2	Références pour information

[RFC4475]	R. Sparks et autres, "Messages d'essais de résistance du protocole d'initialisation de session (SIP)", mai 2006. (Info.)

[RFC5196]	M. Lonnfors, K. Kiss, "Extension de capacité d'agent d'utilisateur au format de données d'information de présence (PIDF) du protocole d'initialisation de session (SIP)", septembre 2008. (P.S.)

[RFC5627]	J. Rosenberg, "Obtension et utilisation des URI d'agent d'utilisateur mondialement acheminable (GRUU) dans le protocole d'initialisation de session (SIP)", octobre 2009. (P. S.)

 	Adresse de l'auteur

Orit Levin
Microsoft Corporation
One Microsoft Way
Redmond, WA  98052
USA

téléphone : 425-722-2225
mél : oritl@microsoft.com 

 	Déclaration complète de droits de reproduction

Copyright (C) The IETF Trust (2006).

Le présent document est soumis aux droits, licences et restrictions contenus dans le BCP 78, et à www.rfc-editor.org, et sauf pour ce qui est mentionné ci-après, les auteurs conservent tous leurs droits.

Le présent document et les informations contenues sont fournis sur une base "EN L’ÉTAT" et le contributeur, l’organisation qu’il ou elle représente ou qui le/la finance (s’il en est), la INTERNET SOCIETY et la INTERNET ENGINEERING TASK FORCE déclinent toutes garanties, exprimées ou implicites, y compris mais non limitées à toute garantie que l’utilisation des informations encloses ne viole aucun droit ou aucune garantie implicite de commercialisation ou d’aptitude à un objet particulier.

Propriété intellectuelle
L’IETF ne prend pas position sur la validité et la portée de tout droit de propriété intellectuelle ou autres droits qui pourrait être revendiqués au titre de la mise en œuvre ou l’utilisation de la technologie décrite dans le présent document ou sur la mesure dans laquelle toute licence sur de tels droits pourrait être ou n’être pas disponible ; pas plus qu’elle ne prétend avoir accompli aucun effort pour identifier de tels droits. Les informations sur les procédures de l’ISOC au sujet des droits dans les documents de l’ISOC figurent dans les BCP  78 et BCP 79.

Des copies des dépôts d’IPR faites au secrétariat de l’IETF et toutes assurances de disponibilité de licences, ou le résultat de tentatives faites pour obtenir une licence ou permission générale d’utilisation de tels droits de propriété par ceux qui mettent en œuvre ou utilisent la présente spécification peuvent être obtenues sur répertoire en ligne des IPR de l’IETF à http://www.ietf.org/ipr .

L’IETF invite toute partie intéressée à porter son attention sur tous copyrights, licences ou applications de licence, ou autres droits de propriété qui pourraient couvrir les technologies qui peuvent être nécessaires pour mettre en œuvre la présente norme. Prière d’adresser les informations à l’IETF à ietf-ipr@ietf.org.

Remerciement 
Le financement de la fonction d’édition des RFC est fourni par l'activité de soutien administatif (IASA) de l'IETF.