RE: On the need for presence service identifiers

"Peterson, Jon" <[email protected]>
Newsgroups gmane.ietf.impp
Message-ID <[email protected]>
A few more notes below. Sorry for the length...

Jon Peterson
NeuStar, Inc.

> -----Original Message-----
> From: [email protected] [mailto:[email protected]]
> Sent: Wednesday, August 21, 2002 6:29 AM
> To: Peterson, Jon
> Cc: [email protected]; [email protected]
> Subject: Re: On the need for presence service identifiers
> 
> 
> "Peterson, Jon" <[email protected]> writes:
> 
[snip]
> 
> Maybe this will calm your fears.  Let's look at the big picture.  The
> goal is to produce a protocol that meets the requirements outlined in
> RFC 2779.  The requirement in focus is 5.2.4 of RFC 2779.
> 
>    The protocol MUST provide means of protecting B from another
>    PRINCIPAL C "spoofing" notification messages about B.
> 
> I have proposed an anti-spoofing mechanism that uses X.509 V3
> Certificates, presence service identifiers, and notification content
> that is timestamped and signed when a notification operation is
> invoked.  If the protocol supports this mechanism, I believe we will
> have a protocol that satisfies 5.2.4.
> 

There are a number of other requirements the CPIM protocol must satisfy,
including:

   5.2.1. The protocol MUST provide means of ensuring that only the
   PRINCIPAL A being sent the NOTIFICATION by B can read the
   NOTIFICATION.

I don't think this bodes well for any architecture in which we stage
security (particularly confidentiality) at some intermediary that isn't
under the control of the principal B. I think 5.2.1 says that the device
that generates presence information MUST be able to apply its own security
properties to presence information. Presumably, any further security added
by a presence service would therefore have to be an additional layer around
any security added by the presentity (unless the presence service and
presentity roles were performed by the same device).

> The requirement does not force implementors to protect a watcher from
> being spoofed.  Implementors are free to provide no support for
> digital signatures.  Furthermore, implementors are free to provide
> some means of protecting a watcher against being spoofed even if the
> mechanism contains known vulnerabilities.
> 

Um... this is a smaller point, but I think the requirements in RFC2779 do
entail that CPIM-compliant applications MUST implement an end-to-end
security mechanism. However, this does not compel anyone to use said
security, just that devices which are compliant with CPIM have to support a
common mechanism. 

> For example, an implementation of the protocol could provide presence
> services that distribute presence information that is signed by the
> person that created the information, not by the services themselves.
> Since this mechanism is vulnerable to the attack I will describe next,
> this mechanism cannot be the only one allowed by the protocol, for it
> would then not satisfy 5.2.4.
> 

I'm going to try saying this again; let's see if it works this time:

If a party C sends A some information about B that is true, I'm not sure why
this would be considered spoofing. In this attack, C is sending A
information about B that says "at this time, B's presence was X", and this
information is accurate. This is only a problem if A assumes it means
something other than it does; that is, if A assumes that this is B's current
presence. Having the presence service add a timestamp to the message when it
sends a notification is not the only way, at a protocol level, to make sure
that A understands that this is not B's current presence.

> Assume Alice <pres:[email protected]> and Bob <pres:[email protected]>
> communicate with each other via instant messaging.  On Sunday, both of
> them publish presence information giving their inbox and stating their
> inbox is closed.  Each individual signs and dates the information.
> 
> Eve subscribes to both Alice's and Bob's presentity and saves Sunday's
> version of their presence information.  On Monday, either by playing
> with DNS or by intercepting traffic between alice.com and bob.com, Eve
> sends Bob's old presence information to Alice, and Alice's old
> information to Bob.  Because of this, all day Monday, Alice and Bob
> think each other is offline, and fail to communicate.  Alice and Bob
> have no way of knowing that the presence information they have is
> stale.  This attack is foiled if notification content is timestamped
> and signed when a notification operation is invoked.
> 

This is good, because this reveals another difference in our assumptions -
the attack you describe above is an active attack, whereas up until now I've
been working under the assumption that we are only trying to prevent passive
attacks.

<security background>
In passive attacks, the attacker can read traffic on the wire, and inject
arbitrary traffic onto the wire. In active attacks, attackers can also
remove any traffic on the wire. There is a big difference between these two
sorts of attacks. All protocols usually want to develop protection against
passive attacks, but some do not choose to build mechanisms to defend
against active attacks, for basically two reasons:

- Because it is much harder to stage an attack active than a passive attack.
Active attacks basically entail compromising some machine that is in the
path of all traffic coming two and from the target, like a router, and then
running code that inspects packets and decides to remove some of them in
real time. This requires a significant amount of sophistication and
investment in acquiring compromised machines. Passive attacks, by way of
contrast, just require that the attacker can read packets, which entails no
real-time decision making.
- Because an active attacker can remove arbitrary packets from the network,
they can trivially deny any service to the victim, and thus defending your
IM&P traffic is the least of your problems. Seriously, an active attacker
can walk all over you in any number of ways - if someone is able to stage an
active attack on you, no security properties that are built into any
higher-layer protocol are going to improve your condition. An active
attacker could, for example, just discard all instant messages or other
communications that Alice or Bob might send to one another on the basis of
their beliefs about presence information, which sort of defeats the purpose
of sharing presence in the first place. There tends to be very little return
on an investment in security that defends against an active attack. 
</security background>

Above you correctly note that in order to stage this attack, Eve must be
capable of intercepting traffic between alice.com and bob.com. Otherwise,
when Alice comes online, their Monday presence notification (with a more
recent signature than the Sunday data) would be transmitted to Bob.
Presumably, if Alice saw a chunk of presence information that was signed and
timestamped by the presentity recently, and one that was so signed and
timestamped yesterday (generated by a passive attacker), Alice could make an
easy decision to use the more recent information. So I would contend that
your example is essentially an active attack.

I also contend that 5.2.4 does not require us to defend against active
attacks. C can send a 'spoofed' message as a passive attacker, and from the
way 5.2.4 reads, I believe it is describing the threat of passive attack,
not active attack. It does say anything about C intercepting messages sent
by B; and note 5.2.2 as well.

I also must reiterate that I don't believe RFC2779 requires us to protect
against replay attacks (see Security Expectation A7) - though I agree it
would be nice.

But all that said, to consider your attack: I'm confused - if this type of
attack is launched, you say that Alice and Bob have no way of knowing that
the information they've received is stale? I mean, if the presence
information were internally timestamped, then they would know that the most
recent presence report they had received was timestamped a long time ago,
correct? I think they do have a way of knowing that it's not current -
because the information says that it describes the state of a principal
yesterday. Just because it is old doesn't mean that it's wrong, that's true
- but just because it's the most recent presence report they've received,
that doesn't mean it's valid at this minute. What if Alice or Bob crashes
ungracefully, or a fiber cut occurs, and one of them cannot publish new
presence information saying that they have gone off-line (assuming they had
published something saying they were on-line to start with)? Surely the last
received presence information (saying that they are on-line) becomes stale
at some point, right?

Because otherwise, an active attacker like Eve wouldn't even have to resend
the old presence information, presumably - Alice and Bob would go on
indefinitely believing that the last presence information they received from
one another is still good. So why, in your attack, does Eve have to send new
notifications to Alice and Bob containing the old presence information?
Because you're assuming that Alice and Bob only consider the information to
be stale when the timestamp on the notification is stale, that is, when they
haven't received a notification recently. I could just easily contend that
they should consider the information to be stale when the timestamp within
the latest presence information they received is similarly stale.

[As an aside, note that in your example, if Eve wants to convince Alice and
Bob that one another are off-line, if Eve is an active attacker, why bother
replaying presence information at all? Why not just send nothing and
intercept all notifications? Wouldn't that always be interpreted as
'offline' by Alice and Bob? Spoofing isn't really helping Eve to deny
service here - but as an active attacker, again, Eve doesn't really need to
spoof. More reason to think that 5.2.4 probably doesn't cover defense
against an active attack.]

Now, let's talk about what it would be like if the notification were
timestamped, but the presence information generated by the presentity were
not timestamped. Consider another scenario involving an active attacker.
What if the active attacker filters the link between the presentity and its
presence service? In other words, when Alice tries to publish her presence
information to her presence service from her presentity, the attacker does
not allow Alice's publication to reach the presence service. What will the
presence service report then? It does not have the latest presence
information that Alice has generated, but it will happily sign and timestamp
its notifications containing this outdated presence information as if this
was the latest presence information about Alice. If we follow your model,
then Bob would believe this information to be current, because the timestamp
on the notification is current. In this case it would be very valuable to
have a timestamp inside the presence information at well, so Bob could know
that Alice generated this information some time ago.

There may be some value in timestamping notifications if we want to protect
against active attacks - but I think even if this timestamp were included, I
think we would still need to have the timestamp within the presence
information that shows when the presentity generated it.

> > If you mean here that end users (i.e. presentities) wouldn't be
permitted to
> > sign their own presence information, then your model directly violates
> > RFC2778/RFC2779. This simply isn't acceptable.
> 
> I mean that sites using X.509 certificates can set up a policy that
> restricts which certificates can be used to sign presence
> notifications.  You don't get that kind of control otherwise.
> 

I still don't think I understand what you mean here - but designing
protocols which somehow deprive end-users of the capability to secure
private information about themselves is unwise, and I believe against the
spirit of the 2778/2779 model.

> John
> 
> 
> 
>   [reminder: [email protected] for non-technical 
> discussions, please]
> 



  [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.