« RFID passport rollout | Main | Nasal spray addiction »

March 12, 2006

Review of draft-bryan-sipping-p2p-02.txt

OVERVIEW
This draft describes a protocol and architecture for doing
"P2P SIP". What this means in practice is that registration
information is stored in a Distributed Hash Table, thus
in principle removing the need for centralized servers.


GENERAL COMMENTS

Use of SIP for DHT Functions
----------------------------
The protocol used in this draft uses SIP both for the usual
signalling functions and for DHT maintenance. This strikes
me as a poor design decision.

1. It means that while you will be able to use generic 
   DHT algorithms you won't be able to use a generic
   DHT service. There's nothing particularly special
   that this application requires from a DHT, so it seems
   like a classic architectural mistake to tie yourself
   to something specific.

2. It obscures what should be a clean architectural separation
   between lookup services (what the DHT is being used for)
   and signalling services (what SIP is used for now). This
   made some sense in the previous draft which actually 
   punned on the SIP messages (using INVITE to find the
   UA for the desired contact) but now that you're using
   REGISTER in order to explicitly separate these functions,
   there's really no value added here.

3. It's really confusing.



Security
--------
There are a number of known security issues with DHTs. In
the specific design described here:

1. There is no authentication for names. The authors write:

   "The lack of central authority to resolve name disputes in the
   namespace means that at some level this problem is unsolved.  The
   approach has tended to be to allow everyone to call themselves Wally
   then let the certificates sort them out.  Users with names that are
   often "stolen" by others will learn that theirs is a poor choice of
   name because it is too valuable, and they will select a less valuable
   name.  Equilibrium will prevail, or chaos."

I don't really understand how this works. If the attacker can 
insert itself at a single replica, it can create a systematic
inconsistency about the appropriate holder of a name. This
makes it very easy to mount an attack on a specific target. 
This draft seems to assume that it's specific names that are
valuable, but in many cases it's not the name itself but rather
the identity of the name holder that's valuable, so changing
your name won't help, at last not for long.

2. You need some mechanism for resolving which replica is 
correct. Otherwise, any inconsistency leads to what...?

3. The protection against Sybil attacks depends entirely on the
attacker not having access to a large block of routable
addresses. This is questionable at best with Pv4 and silly with
v6. Designing a protocol which is only secure on v4 seems unwise.
The discussion of this in 10.11 is clearly inadequate and I
don't really see how it can work unless you assume specific
address boundaries. 

It's not clear to me what constraints lead to this design. 
The use cases documents talk a lot about not necessarily
having access to a global nameservice, but the kind of
non-real-time access required for secure naming (e.g.,
to get DNSSEC "certificates") is very different from requiring
a full-time service. Having any kind of distributed naming
service obviates many of the security problems listed above.


These aren't security problems that can be solved by gluing on 
some crypto at the end of the day. Security for DHTs is a
major unsolved research problem, so this is rather worrisome.


DETAILED COMMENTS
S 7.2.1:

   ipport         =  IPV4address ":" port

And v6?


S 10.4:

   A P2P environment can do little to protect against an individual node
   compromising the registrations it is responsible for.  Accordingly, a
   UA cannot trust a response from a single node, whether it indicates a
   successful search or an error.  In the absence of other methods of
   verifying the response (such as having a certificate of the user
   being searched for and a signed registration that can be verified
   with the certificate) a UA should search for the primary registration
   and at least one replica.  Because the locations the replicas are
   stored are unrelated to the location of the primary registration, a
   single attacker is unlikely to be able to compromise both entries.
   As the overlay gains more nodes and more replicas are searched for,
   the odds of a compromise are reduced.

It's not clear to me why you think your replica model has superior
security properties to the "next N successors" model that chord uses.
In both cases, the attacker needs to compromise (or compromise
routing to) N nodes. And since the preimages of the next N node IDs
are randomly distributed in IP space, I don't see an advantage
here. Please explain.

S 10.7:

   computer.  Cao et al, [9] describe an approach that separates the
   storage of resource location information from the actual storage of
   the offline research.

Is "research" really the word you want here?

Posted by ekr at March 12, 2006 9:33 PM | Filed under:

Comments

Next up, an RFC for doing all of our DNS lookups in a DHT too!

Posted by: Bram at March 13, 2006 7:56 AM

It really reminds me of IRC net splits, where attackers induce a net split then take over some well known individual's "nick".

Posted by: Lisa Dusseault at March 20, 2006 4:44 PM

I am surprised - interesting comments http://boymedexams.ifrance.com

Posted by: pics gyno medical fetishes at March 20, 2006 6:44 PM