Hi Adam,
thank you very much -- that's been most helpful indeed and I agree
with pretty much all the points. I would highlight the scope and
the actual verification mechanisms.
I think that the scope, better-than-nothing, which just works with
the same infrastructure, as for INVITE delivery, and makes on
particular trust assumptions, begins to be agreeable.
I agree too the actual verification mechanism, is difficult to agree
upon. For now,I would resort to listing how such can differ from each
other:
- it it E2E (i.e., without any support in the network)
-- that's obviously the objective
- does it work with existing UA implementations, at least with
some? That's desirable, not sure if really feasible.
- if it leans on some existing SIP extensions, are these specified
in a way that the scenario can unambiguously lean upon? (unfortunately
not the case with dialog package)
- does it work for requests that don't establish dialogs (preferably
yes)
- can it deal with forking?
So far I have heard further suggestions for using some combination of
OPTIONS, dialog authorization, or even a new method -- but we haven't
really yet tested those hard.
Also the applicability is a key aspect -- reverse routability
agreeably being the most important one (apart from latency, security
assumptions such as uncompromised DNS). I think the general
approach is to explain that positive assertions are useful, negative
don't give much, and document examples of when it fails, possibly
accompanied by remedy suggestions:
- unregistered UAC, UAC with call forwarding, anonymous UAC: don't do it :)
(possibly offer to retry)
- B2BUA: if you break it you fix it
- tel URI .... perhaps resolving to IP if possible?
- shared URI ....
- UAC's proxy forwarding SUBSCRIBEs somewhere else...
- 3pcc...
-jiri
Adam Roach wrote:
I've spent quite a bit of time over the past few days pondering the
approach laid out in the DERIVE draft. I think the approach of using
some form of "dial-back" to confirm identity has some merit (with a few
very strong caveats). I think the idea of leveraging already-defined
behavior is a good idea and somewhat clever; however, I suspect that the
exact mechanism defined in the current draft is not yet well enough
deployed for us to accept the limitations that it imposes.
The Need For User-Visible Caveats
=================================
As we've seen with the XMPP system, dial-back approaches can be used
with a fair amount of success to prevent certain types of identity
spoofing (see XEP-0220). Caveats associated with this approach in
general include reliance on security of the DNS and IP routing systems.
We have seen real-world attacks on bot h in the past [1][2], so we need
to make sure that user expectations for any dial-back system are set
appropriately.
SIP and Return Routability of AORs
==================================
However, when the flexibility of SIP routing is thrown into the mix, the
ability to reliably route back to the calling user's specific device
using that user's AOR becomes a much larger issue.
For example, a caller at a call center my well advertise a calling
identity that reflects the contact point for that call center as their
"From" identity. However, calls made to that identity will either reach
an IVR or be dispatched to a random call center device that has no
knowledge of the calling party's dialog. Other normal subscribed
services, such as time-of-day routing, can have similar results.
Further, interaction with find-me-follow-me services -- or, really, any
service with serial forking -- can potentially result in dramatic
post-dial-delays that make execution of such a call-back service
infeasible.
All of which is to say: any dial-back attempt using an AOR may
legitimately reach a device (or several devices) without reaching the
calling party's actual device. I would therefore assert that any
dial-back based strictly on AOR can at best confirm the veracity of the
"To" header field (with the DNS and routing caveats I mention above). It
cannot, under any circumstances, *refute* a claim.
Dialog-Package Re-Use
=====================
The actual use of the dialog event package in the DERIVE draft is
clever. The idea of being able to deploy a system based on what is
already in the field is very attractive, as it allows us to put the
solution into play immediately. However, based on results at SIPits, it
is supported by somewhere less than 50% of current UA implementations
(the estimate I got was "probably about one out of three").
That's actually not a bad percentage, especially considering that the
incidence of dialog package implementation should only go up -- it has
immense value in a number of useful services. However, the behavior that
the dialog event package needs to exhibit to support DERIVE is not
sufficiently well defined in RFC 4325. We've had a number of SIP experts
weigh in on the SIP mailing list with widely differing opinions about
how UAs *should* operate. And if *we* can't figure it out, I can
guarantee that implementors have done... let's use the work
"innovative"... things in this space.
In other words, I fear that whatever gains we achieve by re-using the
dialog event package are largely negated by the fact that we're using
the very aspects of it that have been most poorly specified.
Potential Alternate Approaches
==============================
If we don't re-use the dialog event package as-is, then we need to
either find some other widely-deployed, well-defined UA behavior that we
can leverage, or we need to define new behavior on both the caller and
callee equipment. I can't immediately think of a solution that falls
into the former category -- perhaps someone else can come up with
something clever. That leaves defining some new mechanism to address a
call-back mechanism. Jiri has suggest defining a new method for
call-back validation, and I think this is a reasonable approach.
Regardless of the approach taken, I would suggest that we should
leverage the use of public GRUUs to assist with routing to the proper
device. Devices that validate the identity of an incoming request can
render the public GRUU (with the ;gr parameter stripped) as the calling
party identity after they use it to reach the exact calling device. With
GRUUs thrown into the mix, we get around the issue of potentially being
unable to reach the calling party devices -- this allows us to return
actual negative hits in addition to positive hits.
In fact, if the calling party is using a GRUU, we might be able to
achieve some interesting results by taking the GRUU out of the Contact
header-field of the INVITE and sending back an innocuous in-dialog
request of some kind (UPDATE? OPTIONS? Dare I say INFO?) *without* any
route headers to see whether we get a 481 response...
Conclusion
==========
In short, I support work towards dial-back "better than nothing" style
security. And, while I commend the authors of DERIVE for their
ingenuity, I fear that the dialog event package is a poor enough fit
that we should explore other alternatives before going too far down this
path.
/a
[1]
http://arstechnica.com/news.ars/post/20080225-insecure-routing-redirects-youtube-to-pakistan.html
[2]
http://arstechnica.com/news.ars/post/20071212-dns-poisoning-used-to-redirect-unwitting-surfers.html
_______________________________________________
Sip mailing list https://www.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip
_______________________________________________
Sip mailing list https://www.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip