comments on draft-ietf-impp-cpim-pidf-05

"Peterson, Jon" <[email protected]>
Newsgroups gmane.ietf.impp
Message-ID <[email protected]>
Sugano-san, all,

As I've been working through the CPIM framework document, I've been
comparing its contents to the PIDF draft in order to determine whether or
not we have a complete solution (and if not, trying to figure out where
things should be filled in). The PIDF document looks very strong - I think
it is quite close to completion. I do have a few issues below, some of which
I think are impactful.

If necessary, I'd be happy to provide text corresponding to any of the
issues below, provided the group believes they merit remedy.

Jon Peterson
NeuStar, Inc.

----

- I think the Security Considerations need to be expanded to account for a
number of security properties of notifications. First of all, RFC2779
dictates a MUST-level requirement for authentication and confidentiality
(while it doesn't mention integrity explicitly, it follows from these other
two) for notification. Therefore, the Sec Cons should at least note that the
requirement to support a security mechanism with these properties is at a
MUST level, not a SHOULD. Also, note that deferring this function to the
'transport protocol' (we might want to use another term here, to
differentiate this from layer 4 protocols - maybe 'using protocol'?) has a
number of dangerous implications, the most serious of which is that the
contents of a confidential notification would be revealed to a CPIM gateway
when an encrypted message was passed from one CPIM-compliant protocol to
another. I believe this security must be staged around the MIME body, not
the transport layer, if we're to have any hope of interoperability and
actual end-to-end security. One base security mechanism has to be required
for PIDF, including a minimum ciphersuite - although I suspect both of these
should probably be stated in the base CPIM spec, in order that the same
security mechanism is required for presence and instant messaging. Section
2.1 item (f) could probably be a little more specific about the security
requirements that are inherited from RFC2779 - (f) is more of a summary.

- A few things about timestamps. First, I think that 2.2 (b) should mention
RFC2779 Appendix A item A7. I think it needs to say that RFC2779 noted that
timestamps had some complications, but that their use in PIDF does not
require any global synchronization - that timing should be loosely
synchronized well within the uncertainty of disparate time sources. Section
4.1.7 should also offer a little guidance on semantics for watchers of
presence information with timestamps. The text here should at least suggest
that presence information is created at a particular time, and that presence
information ages; some CPIM-compliant watchers may choose to expire
information that is old (without specifying any recommended interval). I
also think this section could offer some normative recommendation for
presentities to include timestamps in presence information they generate -
maybe SHOULD. The Security Considerations should also mention the security
properties of timestamps in PIDF - that is, protection from out-of-order
delivery of presence information, and aging of presence information. The
threats that go unaddressed if presence information is sent without
timestamps should be described.

- PIDF rightly defines only a bare-bones presence format and a means to
extend that format. While I don't believe we need to add any more presence
functionality to the baseline PIDF, I do think that some further information
about how to extend PIDF could be extremely useful. We need to make it
easier for new presence states to be proposed as standard extensions to
PIDF. First, I believe that the document could greatly benefit from an
example of an XML Schema for an extension to PIDF that could be used as a
reference by those that intend to extend PIDF (perhaps an XML Schema
definition for the 'local' extension shown in 4.2.4). There is already an
example of how a PIDF body would look with such an extension, which benefits
implementers, but protocol designers could use some help with authoring
these extensions as well. Secondly, I think the document should offer some
guidance about how extensions are managed at a process level in the IETF or
elsewhere. Should extensions (with their XML Schema and motivational text)
be published as RFCs, or it enough to just register the URN in the
designated namespace? Is any particular review process required for these
extensions? Personally, I think that the semantics of these extensions merit
inclusion in an RFC, and that this should be strongly encouraged if not
required. If standardization is not encouraged, I fear this will lead to the
balkanization of presence extensions, the proliferation of many slightly
differing but unfortunately non-interoperable presence extensions that will
be used by competing protocols or providers.

- The mustUnderstand attribute in 4.2.3 provides some primitive but useful
capability-negotiation features for extensions to PIDF. However, I think
there is a unsolved problem with the use of this attribute. When a watcher
subscribes to a presentity, if the presentity generates presence information
that always uses a mandatory extension that the watcher doesn't understand,
then the watcher will always discard the presence information - there
doesn't seem to be any way for the watcher to communicate that it cannot
understand presence information containing a given mandatory extension
(there's no SOAP fault), or any way for them both to negotiate downwards to
<basic>. One could argue that this isn't that big a problem, but it could
pose a significant obstacle to interoperability, especially if the extension
mechanism encourages the development of proprietary or single-purpose
extensions. I think that ideally, there should always be a way to negotiate
down to something that all devices support, namely <basic>  - I suspect that
this is what RFC2779 3.1.1 and especially the second half of 3.1.4 really
meant (though I would be interested to know if anyone feels otherwise).
Without this, SIMPLE could develop SIMPLE-specific presence, APEX could
develop APEX-specific presence, and never the twain would meet. Three
solutions to this problem come to mind. First, I don't think RFC2779
requires us to have a mustUnderstand-like concept - we could abandon it,
saying that <basic> is mandatory and all extensions are optional (which
leads us to what the current text in the last paragraph of 4.2.4 describes).
Second, we could develop a concept that a subscription operation can specify
the presence extensions that the watcher supports, and use this to begin
some sort of negotiation process. Obviously, there are serious obstacles to
undertaking the second option; it would require a lot of new mechanism. The
third solution would be to note that this is an open issue in 4.2.3 and say
that we'll try to come back and fix it later (probably by developing some
version of the second solution). There are probably some other attacks on
this problem, but based on my current understanding, I'd recommend the
first.

- Nits:

1.0 - Second to last paragraph, last sentence: About extensibility and
scope. I think extensibility is within the scope of this memo - I'd suggest
striking this sentence.

2.1 - Is there a distinction intended between (d) and (g)? If so, perhaps it
should be clearer. If not, I'd suggest that (g) be removed (since (d) seems
to be inclusive of (g)).

2.2 - This section should note in a new item (c) the 'mustUnderstand'
attribute from 4.2.3, if it is still included in the PIDF draft. As far as I
can tell, 'mustUnderstand' does not derive from the requirements of RFC2779.

3.2 - The list here consists of (implicitly) mandatory and OPTIONAL elements
in a PIDF MIME body - would we benefit at all from having three levels of
granularity: MUST, SHOULD and MAY strength? It strikes me that 'human
readable comments' sound like a MAY, whereas timestamps (as I suggest above)
sound like a SHOULD.  

4.2.3 - The final paragraph contains a single sentence hinged on a should -
should that be a SHOULD? or a MUST? If it is a SHOULD, then maybe the
attribute would best be named 'shouldUnderstand'? Whatever the strength, the
sentence should be normative.
 



  [reminder: [email protected] for non-technical discussions, please]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.