Jonathan Rosenberg writes:
 > Let me rephrase the problem. A user makes a call from a PSTN phone
 > through a PSTN->SIP gateway. This call arrives at a proxy server, then
 > gets routed to a UAS. Either or both of the proxy/UAS might challenge
 > this request. In this case, who is being authenticated, the gateway
 > itself, or the user calling in through the gateway? If its the user
 > themselves, how would that work?

    It depends. Clearly the gateway must proxy the
    authentication no matter what.
 
 > One might argue that authentication of a gateway by a proxy is useless;
 > really in this case you want a hop by hop security mechanism like IPSec
 > or TLS, and forgo completely the high overhead SIP authentication for
 > each message. Then again, in the absence of support for IPSec or TLS,
 > SIP proxy authentication migth provide a way to authenticate the gateway
 > from a proxy.

   Probably, though you may again want to have a "default"
   service which is authenticated as the gateway (directly
   or implicitly through the lower level SA) and a user
   authenticated service.

 > It also seems unlikely the UAS would really be interested in
 > authenticating the originating gateway.

   Why not? It may very well be that I don't trust
   or have control over my first hop proxy. Assuming
   that the gateway had a default secondary dialtone
   IVR maze which would change the From: address and
   respond to any challenges with a PIN, this is 
   pretty much exactly what you'd want.
 
 > Some options:
 > 
 > 1. The realm indicates this. For example, a realm of "gateway" would
 > indicate that the gateway is being authenticated, "user" means the user.
 > We wouldn't need to standardize the actual words here, but rather
 > standardize that the realm would indicate which was the case through
 > administrative configuration.
 > 
 > 2. Use a different response code for each case. Probably not a great
 > idea.
 > 
 > 3. Others?

   I think it's a slippery slope trying to draw
   a difference between "gateway" and "user". A 
   better way to think of this, IMO, is that a
   particular device may at any time take on one
   or more identities, and that at any point each
   proxy/UAS is entitled to demand authentication
   for an identity in its realm. This is consistant
   with real life: I have a drivers license for
   driving, a credit card for buying dinner and
   a cisco badge for getting into our buildings.
   At each place, a different identity is stored in
   those pieces of plastic and each demand the
   proper one for its realm. 

 > I'll also note that this problem is not limited to gateways - its the
 > fundamental issue of whether you authenticate a device or a user, and
 > could equally well apply to a softphone application, single line
 > gateway, and trunking gateway.

   Yes, I'll say again that like my wallet, it
   is necessary to be brutally parsimonious about
   the size of credentials. For SIP, I really,
   really think we need to introduce the concept
   of cached credentials on the UA/proxies so that
   you can transfer a relatively large and/or
   expensive credential (kerberos ticket,
   X.509...) once, and use a keyed hash for
   subsequent messages. If it were just one
   credential that might be demanded upon the
   path, it might be OK (and with public key
   operations, even that is doubtful), but the
   possibility of an unlimited (where for both
   kerberos and X.509 "unlimited" is > 2) set
   of credentials means that you couldn't do
   UDP INVITE's without fragmentation which 
   really sux.

   An iterative model of challenge/response/cache
   where the UAC sends a keyed hash based on a
   shared symmetric key after the initial
   challenge would scale *much* better.

                Mike

Reply via email to