| < draft-froment-sipping-spit-requirements-00.txt | draft-froment-sipping-spit-requirements-01.txt > | |||
|---|---|---|---|---|
| SIPPING H. Tschofenig, Ed. | SIPPING H. Tschofenig, Ed. | |||
| Internet-Draft Nokia Siemens Networks | Internet-Draft Nokia Siemens Networks | |||
| Intended status: Informational G. Dawirs | Intended status: Informational G. Dawirs | |||
| Expires: December 16, 2007 University of Namur | Expires: January 10, 2008 University of Namur | |||
| T. Froment | T. Froment | |||
| Alcatel-Lucent | Alcatel-Lucent | |||
| D. Wing | D. Wing | |||
| Cisco | Cisco | |||
| H. Schulzrinne | H. Schulzrinne | |||
| Columbia University | Columbia University | |||
| June 14, 2007 | July 9, 2007 | |||
| Requirements for Authorization Policies to tackle Spam for Internet | Requirements for Authorization Policies to tackle Spam and Unwanted | |||
| Telephony and Unwanted Traffic | Communication for Internet Telephony | |||
| draft-froment-sipping-spit-requirements-00.txt | draft-froment-sipping-spit-requirements-01.txt | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
| applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
| have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 42 ¶ | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on December 16, 2007. | This Internet-Draft will expire on January 10, 2008. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2007). | |||
| Abstract | Abstract | |||
| Spam over Internet Telephony (SPIT) is one of the foreseen future | Spam over Internet Telephony (SPIT) is one of the foreseen future | |||
| forms of spamming that SIP open-wide networks may have to handle. | forms of spamming that SIP open-wide networks may have to handle. | |||
| SPIT also has more impact on users than email spam since it is more | SPIT also has more impact on users than email spam since it is more | |||
| skipping to change at page 3, line 14 ¶ | skipping to change at page 3, line 14 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.1. Conditions . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Conditions . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.2. Actions . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2. Actions . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.3. Transformations . . . . . . . . . . . . . . . . . . . . . 8 | 3.3. Transformations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.4. Generic Requirements . . . . . . . . . . . . . . . . . . . 8 | 3.4. Generic Requirements . . . . . . . . . . . . . . . . . . . 8 | |||
| 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 12 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . . 13 | 7.1. Normative References . . . . . . . . . . . . . . . . . . . 12 | |||
| 7.2. References . . . . . . . . . . . . . . . . . . . . . . . . 13 | 7.2. References . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 15 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| Intellectual Property and Copyright Statements . . . . . . . . . . 17 | Intellectual Property and Copyright Statements . . . . . . . . . . 15 | |||
| 1. Introduction | 1. Introduction | |||
| The problem of SPIT is an important challenge and it appears that a | The problem of SPIT is an important challenge and it appears that a | |||
| combination of several techniques is desirable to provide a framework | combination of several techniques is desirable to provide a framework | |||
| to deal with it. | to deal with it. | |||
| One important building block is to provide a mechanism to instruct a | One important building block is to provide a mechanism to instruct a | |||
| trusted SIP proxy or any other SIP element to influence message | trusted SIP proxy or any other SIP element to influence message | |||
| handling of incoming requests according to policies. Different | handling of incoming requests according to policies. Different | |||
| skipping to change at page 5, line 14 ¶ | skipping to change at page 6, line 5 ¶ | |||
| 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], | |||
| with the important qualification that, unless otherwise stated, these | with the important qualification that, unless otherwise stated, these | |||
| terms apply to the design of the authorization policies, not its | terms apply to the design of the authorization policies, not its | |||
| implementation or application. | implementation or application. | |||
| The term 'Rule Maker' is defined in RFC 3693 [RFC3693]. | ||||
| 3. Requirements | 3. Requirements | |||
| This section lists the requirements categorized according to their | This section lists the requirements categorized according to their | |||
| applicability for the "conditions", "actions" and "transformation" | applicability for the "conditions", "actions" and "transformation" | |||
| parts of authorization policies. Furthermore, we describe | parts typically found in authorization policies. | |||
| requirements that are more generic in nature and apply to the entire | ||||
| rule set. | ||||
| 3.1. Conditions | 3.1. Conditions | |||
| The first set of requirements refer to identity related information. | The first set of requirements refer to identity related information. | |||
| Req-C 1: Policies MUST allow conditions to express single | Req-C 1: Policies MUST allow conditions to express single | |||
| authenticated identities. | authenticated identities. | |||
| Req-C 2: Policies MUST allow filtering based on the domain part of | Req-C 2: Policies MUST allow filtering based on the domain part of | |||
| the identity. | the identity. | |||
| Req-C 3: Policies MUST support the differentiation between | Req-C 3: Policies MUST support the differentiation between | |||
| authenticated and unauthenticated identities. | authenticated and unauthenticated identities. | |||
| Req-C 4: Policies MUST be able to express expections within a group | Req-C 4: Policies MUST be able to express exceptions within a group | |||
| of users/domain. | of users or a domain. | |||
| Req-C 5: Policies SHOULD allow an anonymous identity as a condition. | ||||
| Message handling might be different depending on the content of the | Message handling might be different depending on the content of the | |||
| SIP message header fields. | SIP message header fields. | |||
| Req-C 5: Policies SHOULD allow conditions to refer to the | Req-C 6: Policies SHOULD allow conditions to refer to the | |||
| "destination" (which corresponds to the "Request-URI") and | "destination" (which corresponds to the "Request-URI") and | |||
| "original-destination" (which corresponds to the "To" header). | "original-destination" (which corresponds to the "To" header). | |||
| Req-C 6: Policies SHOULD allow conditions to refer to the method | Req-C 7: Policies SHOULD allow conditions to refer to the method | |||
| invoked by the caller (e.g., INVITE, REFER, MESSAGE). | invoked by the caller (e.g., INVITE, REFER, MESSAGE). | |||
| Motivation: Some SIP methods are more intrusive than others | Motivation: Some SIP methods are more intrusive than others | |||
| (the default applicative behaviour when SIP MESSAGEs are | (the default applicative behaviour when SIP MESSAGEs are | |||
| received is often to pop-up the message on the UAS side), | received is often to pop-up the message on the UAS side), | |||
| adopting a different filtering policy depending of the method | adopting a different filtering policy depending of the method | |||
| invoked will enhance the user's protection. | invoked will enhance the user's protection. | |||
| Req-C 7: Policies SHOULD allow Rule Makers to take actions on | Req-C 8: Policies SHOULD allow the entity that writes the rules to | |||
| messages that are marked as Spam. | take actions on messages that are marked as Spam. | |||
| Note that such a condition element should be seen in | Note that such a condition element should be seen in | |||
| context of the authenticated domain or or otherwise | context of the authenticated domain or or otherwise | |||
| protected information to avoid security | protected information to avoid security | |||
| vulnerabilities. | vulnerabilities. | |||
| [Editor's Note: Should we allow message handling based on the | Req-C 9: Policies MAY allow to make decisions based on the current | |||
| existence or non-existence of certain SDP / SIP content, such as | state of the user. E.g., based on a user selected active | |||
| specific mime types? For example, is a "exists" test useful that | profile, or sphere or other presence information. | |||
| returns true if the headers listed in the argument exist within the | ||||
| message. Furthermore, do we need test operators (such as "allof" and | Req-C 10: Policies SHOULD support consitions based on the content | |||
| "anyof", which implement logical "and" and logical "or", | type and/or offered (or used) media of a message. | |||
| respectively)? | ||||
| Message handling might be different based on time. | Message handling might be different based on time. | |||
| Req-C 7: Policies SHOULD allow conditions that refer to the | Req-C 11: Policies SHOULD allow conditions that refer to the | |||
| reception date, time or period of time of the incoming | reception date, time, timezone or period of time of the | |||
| request. | incoming request. | |||
| Message handling might be different based on the language. | Message handling might be different based on the language. | |||
| Req-C 8: Policies SHOULD allow to make decisions based on the | Req-C 12: Policies SHOULD allow to make decisions based on the | |||
| languages in which the originator of the call wishes to | languages in which the originator of the call wishes to | |||
| communicate. | communicate. | |||
| Message handling might be different based on the SIP resource | ||||
| priority fields, on emergency service related messages or more | ||||
| generic forms of indicating the type of service. | ||||
| Req-C 9: Policies MAY allow to make decisions based on the presence | ||||
| of SIP Resouce Priority headers, as described in [RFC4412]. | ||||
| Req-C 10: Policies SHOULD allow to make decisions based on the | ||||
| messages marked as emergency calls indicated in | ||||
| [I-D.ietf-ecrit-service-urn]. | ||||
| Req-C 11: Policies MAY allow to make decisions based on service | ||||
| identification fields, see | ||||
| [I-D.rosenberg-sipping-service-identification]. | ||||
| 3.2. Actions | 3.2. Actions | |||
| Req-A 1: Policies SHOULD allow messages to get "blocked", i.e., to | Req-A 1: Policies SHOULD allow messages to get "blocked", i.e., to | |||
| stop forwarding the request and to return an answer with a | stop forwarding the request and to return an answer with a | |||
| ``403 Forbidden'' | ``403 Forbidden'' | |||
| Req-A 2: Policies SHOULD allow messages to get "politely blocked", | Req-A 2: Policies SHOULD allow messages to get "politely blocked", | |||
| i.e., to drop the request without returning an answer. | i.e., to drop the request without returning an answer. | |||
| Req-A 2: Policies SHOULD allow messages to get "marked", i.e., to | Req-A 3: Policies SHOULD allow messages to get "marked", i.e., to | |||
| forward the request and mark it as "potential Spam" for | forward the request and mark it as "potential Spam" for | |||
| filtering at the end point or at subsequent entities along the | filtering at the end point or at subsequent entities along the | |||
| signaling path. | signaling path. | |||
| Req-A 3: Policies SHOULD allow messages to be "allowed", i.e., to | Req-A 4: Policies SHOULD allow messages to be "allowed", i.e., to | |||
| forward this message. | forward this message. | |||
| Req-A 4: Policies MUST allow messages to be "redirected" to, for | Req-A 5: Policies MUST allow messages to be "redirected" to, for | |||
| example, voicemail or to a different device in the possession | example, voicemail or to a different device in the possession | |||
| of the user. | of the user. | |||
| Req-A 5: Policies MUST allow the ability to execute other SPIT | Req-A 6: Policies MUST allow executing other SPIT prevention | |||
| prevention procedures, such as computational puzzles | procedures, such as computational puzzles | |||
| [I-D.jennings-sip-hashcash] or the consent framework" | [I-D.jennings-sip-hashcash] or the consent framework" | |||
| [I-D.ietf-sip-consent-framework]. Ideally, a specification | [I-D.ietf-sip-consent-framework]. A specification developing | |||
| developing a SPIT prevention mechanism SHOULD provide | a SPIT prevention mechanism should provide information on how | |||
| information on how they can be incorporated into the | they can be incorporated into the authorization policy | |||
| authorization policy framework. | framework. | |||
| As an example, for a statistical analysis tool a URI is | ||||
| defined. The algorithms itself do not need to be | ||||
| standardized and hence the impact for authorization | ||||
| policies is mainly the ability to allow a Rule Maker to | ||||
| enable or to disable the usage of these statistical | ||||
| techniques for SPIT filtering and potentially to map | ||||
| the output of the analysis process to value range from | ||||
| 0 (i.e., the message is not classified as Spam) and 100 | ||||
| (i.e., the message was classified as as Spam). A Rule | ||||
| Maker may decide the appropriate action on the message | ||||
| depending on the determined SPIT probability. | ||||
| Req-A 6: Policies MAY allow an e-mail (or SMS, MMS) to be sent to | Req-A 7: Policies MAY allow an e-mail (or SMS, MMS) or other | |||
| the user about the actions taken due to a specific call | notifications to be sent to the user about the actions taken | |||
| attempt. | due to a specific call attempt. | |||
| 3.3. Transformations | 3.3. Transformations | |||
| Req-T 1: Policies SHOULD allow SIP messages to be marked with a | Req-T 1: Policies SHOULD allow SIP messages to be marked with a | |||
| certain SPIT probability in case SPIT detection and policy | certain SPIT probability in case SPIT detection and policy | |||
| enforcement is excecuted on different entities. For example, | enforcement is excecuted on different entities. For example, | |||
| a network element might run a statistical SPIT detection tool | a network element might run a statistical SPIT detection tool | |||
| but the authorization policies are executed on a different | but the authorization policies are executed on a different | |||
| entity, such as the end host. Note that it needs to be | entity, such as the end host. Note that it needs to be | |||
| ensured that an adversary is not able to set the SPIT | ensured that an adversary is not able to set the SPIT | |||
| skipping to change at page 9, line 4 ¶ | skipping to change at page 8, line 22 ¶ | |||
| certain SPIT probability in case SPIT detection and policy | certain SPIT probability in case SPIT detection and policy | |||
| enforcement is excecuted on different entities. For example, | enforcement is excecuted on different entities. For example, | |||
| a network element might run a statistical SPIT detection tool | a network element might run a statistical SPIT detection tool | |||
| but the authorization policies are executed on a different | but the authorization policies are executed on a different | |||
| entity, such as the end host. Note that it needs to be | entity, such as the end host. Note that it needs to be | |||
| ensured that an adversary is not able to set the SPIT | ensured that an adversary is not able to set the SPIT | |||
| probabity values since otherwise the authorization policies | probabity values since otherwise the authorization policies | |||
| that rely on such information are misguided. | that rely on such information are misguided. | |||
| 3.4. Generic Requirements | 3.4. Generic Requirements | |||
| Req-G 1: It SHOULD be possible to allow a hierarchy of authorization | Req-G 1: It SHOULD be possible to allow a hierarchy of authorization | |||
| policies to be used. | policies to be used. | |||
| It is quite likely that a rules from different rule writing | ||||
| entities are provided. For example, in a company environment | ||||
| policies from the system administrator are provided in | ||||
| addition to the end users policies. The former might reflect | ||||
| the overall company policy. The impact for the policy is | ||||
| mainly on the definition of an appropriate conflict resolution | ||||
| mechanism. | ||||
| Req-G 2: It MUST be possible for a client to learn the supported | Req-G 2: It MUST be possible for a client to learn the supported | |||
| authorization policy capabilities implemented by the server. | authorization policy capabilities implemented by the server. | |||
| Req-G 3: Policies MUST be extensible and these extensions MUST exist | Req-G 3: Policies MUST be extensible and these extensions MUST exist | |||
| within a different namespace. Furthermore, a published schema | within a different namespace. Furthermore, a published schema | |||
| and the namespace for elements defined within it MUST NOT be | and the namespace for elements defined within it MUST NOT be | |||
| altered by future specifications. | altered by future specifications. | |||
| Req-G 4: The policies MUST provide a mandatory-to-implement conflict | Req-G 4: The policies MUST provide a mandatory-to-implement conflict | |||
| resolution mechanism. | resolution mechanism. | |||
| skipping to change at page 13, line 5 ¶ | skipping to change at page 11, line 12 ¶ | |||
| consequence with impact for more than a single end point. These | consequence with impact for more than a single end point. These | |||
| security aspects are, however, not subject of this document. | security aspects are, however, not subject of this document. | |||
| 6. Acknowledgements | 6. Acknowledgements | |||
| The content of this document is inspired by the work of CPL | The content of this document is inspired by the work of CPL | |||
| [RFC3880], SIEVE [I-D.ietf-sieve-3028bis], Common Policy [RFC4745] | [RFC3880], SIEVE [I-D.ietf-sieve-3028bis], Common Policy [RFC4745] | |||
| and Presence Authorization Policy [I-D.ietf-simple-presence-rules]. | and Presence Authorization Policy [I-D.ietf-simple-presence-rules]. | |||
| We would like to thank the authors of these documents for their work. | We would like to thank the authors of these documents for their work. | |||
| Furthermore, we would like to thank Eva Leppanen for the detailed | ||||
| review provided in June 2006. | ||||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [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. | |||
| 7.2. References | 7.2. References | |||
| [I-D.ietf-ecrit-service-urn] | ||||
| Schulzrinne, H., "A Uniform Resource Name (URN) for | ||||
| Services", draft-ietf-ecrit-service-urn-06 (work in | ||||
| progress), March 2007. | ||||
| [I-D.ietf-sieve-3028bis] | [I-D.ietf-sieve-3028bis] | |||
| Showalter, T. and P. Guenther, "Sieve: An Email Filtering | Showalter, T. and P. Guenther, "Sieve: An Email Filtering | |||
| Language", draft-ietf-sieve-3028bis-12 (work in progress), | Language", draft-ietf-sieve-3028bis-12 (work in progress), | |||
| February 2007. | February 2007. | |||
| [I-D.ietf-simple-presence-rules] | [I-D.ietf-simple-presence-rules] | |||
| Rosenberg, J., "Presence Authorization Rules", | Rosenberg, J., "Presence Authorization Rules", | |||
| draft-ietf-simple-presence-rules-09 (work in progress), | draft-ietf-simple-presence-rules-10 (work in progress), | |||
| March 2007. | July 2007. | |||
| [I-D.ietf-sip-consent-framework] | [I-D.ietf-sip-consent-framework] | |||
| Rosenberg, J., "A Framework for Consent-Based | Rosenberg, J., "A Framework for Consent-Based | |||
| Communications in the Session Initiation Protocol (SIP)", | Communications in the Session Initiation Protocol (SIP)", | |||
| draft-ietf-sip-consent-framework-01 (work in progress), | draft-ietf-sip-consent-framework-02 (work in progress), | |||
| November 2006. | July 2007. | |||
| [I-D.jennings-sip-hashcash] | [I-D.jennings-sip-hashcash] | |||
| Jennings, C., "Computational Puzzles for SPAM Reduction in | Jennings, C., "Computational Puzzles for SPAM Reduction in | |||
| SIP", draft-jennings-sip-hashcash-05 (work in progress), | SIP", draft-jennings-sip-hashcash-05 (work in progress), | |||
| June 2007. | June 2007. | |||
| [I-D.rosenberg-sipping-service-identification] | ||||
| Rosenberg, J., "Identification of Communications Services | ||||
| in the Session Initiation Protocol (SIP)", | ||||
| draft-rosenberg-sipping-service-identification-02 (work in | ||||
| progress), May 2007. | ||||
| [RFC3693] Cuellar, J., Morris, J., Mulligan, D., Peterson, J., and | ||||
| J. Polk, "Geopriv Requirements", RFC 3693, February 2004. | ||||
| [RFC3880] Lennox, J., Wu, X., and H. Schulzrinne, "Call Processing | [RFC3880] Lennox, J., Wu, X., and H. Schulzrinne, "Call Processing | |||
| Language (CPL): A Language for User Control of Internet | Language (CPL): A Language for User Control of Internet | |||
| Telephony Services", RFC 3880, October 2004. | Telephony Services", RFC 3880, October 2004. | |||
| [RFC4412] Schulzrinne, H. and J. Polk, "Communications Resource | ||||
| Priority for the Session Initiation Protocol (SIP)", | ||||
| RFC 4412, February 2006. | ||||
| [RFC4474] Peterson, J. and C. Jennings, "Enhancements for | [RFC4474] Peterson, J. and C. Jennings, "Enhancements for | |||
| Authenticated Identity Management in the Session | Authenticated Identity Management in the Session | |||
| Initiation Protocol (SIP)", RFC 4474, August 2006. | Initiation Protocol (SIP)", RFC 4474, August 2006. | |||
| [RFC4745] Schulzrinne, H., Tschofenig, H., Morris, J., Cuellar, J., | [RFC4745] Schulzrinne, H., Tschofenig, H., Morris, J., Cuellar, J., | |||
| Polk, J., and J. Rosenberg, "Common Policy: A Document | Polk, J., and J. Rosenberg, "Common Policy: A Document | |||
| Format for Expressing Privacy Preferences", RFC 4745, | Format for Expressing Privacy Preferences", RFC 4745, | |||
| February 2007. | February 2007. | |||
| Authors' Addresses | Authors' Addresses | |||
| End of changes. 30 change blocks. | ||||
| 97 lines changed or deleted | 62 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||