Re: [sipcore] I-D Action: draft-ietf-sipcore-sip-token-authnz-02.txt

"Olle E. Johansson" <oej@edvina.net> Thu, 11 July 2019 17:24 UTC

Return-Path: <oej@edvina.net>
X-Original-To: sipcore@ietfa.amsl.com
Delivered-To: sipcore@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DD2D0120198 for <sipcore@ietfa.amsl.com>; Thu, 11 Jul 2019 10:24:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9gH-SjuxAUDb for <sipcore@ietfa.amsl.com>; Thu, 11 Jul 2019 10:24:57 -0700 (PDT)
Received: from smtp7.webway.se (smtp7.webway.se [212.3.14.205]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EDD9E1200D8 for <sipcore@ietf.org>; Thu, 11 Jul 2019 10:24:56 -0700 (PDT)
Received: from haworthia-20.webway.org (h-205-16.A165.corp.bahnhof.se [176.10.205.16]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp7.webway.se (Postfix) with ESMTPSA id 00261A40; Thu, 11 Jul 2019 19:24:52 +0200 (CEST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
From: "Olle E. Johansson" <oej@edvina.net>
In-Reply-To: <7AEC21E0-B0A6-4303-B936-F183ED6EC05D@ericsson.com>
Date: Thu, 11 Jul 2019 19:24:52 +0200
Cc: Olle E Johansson <oej@edvina.net>, Paul Kyzivat <pkyzivat@alum.mit.edu>, "sipcore@ietf.org" <sipcore@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <0ADB13C4-FDEE-4012-865A-6E0C98D7F0D4@edvina.net>
References: <156249821133.14592.1211919336596009446@ietfa.amsl.com> <c8d5c42e-ab21-80e8-3189-c8592dd02d3a@alum.mit.edu> <HE1PR07MB3161C55955B2FCED2C0F6A9993F60@HE1PR07MB3161.eurprd07.prod.outlook.com> <68ed93ae-57df-6bc7-774b-47959417abda@alum.mit.edu> <HE1PR07MB3161D46B4A44FC7E789ADDB893F10@HE1PR07MB3161.eurprd07.prod.outlook.com> <4a9787e5-b5e2-bc08-0fa0-fae6bd44148d@alum.mit.edu> <527F4C39-F065-4335-A939-6D443F1801E7@ericsson.com> <5bb63c0c-130d-7f69-10b0-1ed1b274cc58@alum.mit.edu> <87AD4BB8-CE77-4FD7-BB72-6643DF513058@ericsson.com> <168b1354-b35b-edee-e5f9-d4ddbecfae40@alum.mit.edu> <607A513F-8616-4777-8B5E-59390E845709@ericsson.com> <b6ca4c79-5a17-10da-3882-20bc8b0e9b98@alum.mit.edu> <89A28FAE-A25A-4AFF-9A94-91E09FDD6C3B@ericsson.com> <2aa8cb91-aac6-b66e-e54a-b9f6c650ce02@alum.mit.edu> <D7218ABE-F204-407B-ADE1-39DAB98C2A98@ericsson.com> <cd23be26-c383-8b72-cdf1-4436a6bc175f@alum.mit.edu> <59F235A8-2BD4-49B5-8890-E793E1CF40EC@ericsson.com> <64b7d784-3f34-dd11-d7e2-b22fe621cd70@alum.mit.edu> <7AEC21E0-B0A6-4303-B936-F183ED6EC05D@ericsson.com>
To: Christer Holmberg <christer.holmberg@ericsson.com>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <https://mailarchive.ietf.org/arch/msg/sipcore/uPZmdxbnv6EMC5TlUIXAKkza3Tc>
Subject: Re: [sipcore] I-D Action: draft-ietf-sipcore-sip-token-authnz-02.txt
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sipcore>, <mailto:sipcore-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sipcore/>
List-Post: <mailto:sipcore@ietf.org>
List-Help: <mailto:sipcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 11 Jul 2019 17:25:03 -0000


> On 11 Jul 2019, at 17:02, Christer Holmberg <christer.holmberg@ericsson.com> wrote:
> 
> Hi,
> 
>>>>>>> All I am saying is that one should not send a token to someone that it has NOT been issued for.
>>>>>> 
>>>>>>    Then you are saying that a token should *never* be included in a request
>>>>>>    to a target for which you have not received a challenge some time in the
>>>>>>    past.
>>>>>> 
>>>>>>    That is a bit extreme, but I guess you can specify that if you think it
>>>>>>    is the right thing to do.
>>>>> 
>>>>> That is my understanding of the generic OAuth security considerations: you don't give a token to someone it was not intended for.
>>>>> 
>>>>> Of course, if you know (based on whatever configuration/policy) that it's ok to give the token to the target I guess you could do it.
>>>>> 
>>>>>>    But note that this logic won't always work for Proxy-Authenticate. You
>>>>>>    *might* know that a particular proxy will be visited (if it is mentioned
>>>>>>    on a Route header), but it is pretty common for the request to visit
>>>>>>    proxies unknown (at least in advance) to the UAC.
>>>>> 
>>>>> It is important to remember that, since the token needs to be protected, a proxy needs to have the
>>>>> associated protection credentials to be able to access the token.
>>>> 
>>>> I'm lost here. How is the token protected? Is it because it is passed by
>>>> reference, and other credentials are needed to dereference it? Or is it
>>>> passed by value but encrypted?
>>> 
>>>     That depends on how your protect it.
>>> 
>>>     If the oauth2 token itself is encrypted, and only authorized entities can decrypt it, then I guess it does 
>>>     not matter if a non-authorized user gets it, as it will not be able to use it.
>> 
>> Is this going to be defined, or is the intent to leave it open?
>> I don't understand how things can work if it is left open.
> 
>    We normally don't specify HOW to protect SIP information, because it can done in  many different ways, we only say when 
>    some piece of information needs to be protected.
And where have that kind of thinking led us? We need at least one working interoperable solution for implementers to iimplement
as a baseline, while not forbidding others. 
> 
>    Also, in the case of oauth2 tokens, as they can be encoded in many different ways, some of which have their own built-in protections (e.g., JWT), we can't specify a single solution that works for all. We can only specify what security characteristics must be fulfilled.
We can surely specify a working solution that is the base interoperability level. Otherwise we will just produce a
document that goes to the archives and leads to isolated vendor-specific islands. I don’t like that.
I do agree with leaving it open to add other ways of doing things in the future, but  I think we need to deliver
a fully specifieid working solution.

> 
>>> But, if the oauth2 token is sent in "plain text", then the SIP signaling needs to be protected/encrypted. 
>>> But, in that case, if I make a phone call to you, and the call itself is valid, then I should not send you the 
>>> oauth2 token unless it's meant for you, because once you decrypt the signaling you will have access to it.
>>> 
>>>    What is important is that a non-authorized user should not have access to a non-protected oauth2 token.
>> 
>> I don't see how this can work. How does the UAC *know* if the server it 
>> is sending credentials to is authorized to receive those credentials?
>> 
>> In general the UAC doesn't know what proxies and UAS the request will 
>> visit. All it knows is the request-URI. Since there generally isn't a 
>> direct connection from UAC to UAS TLS authentication doesn't help.
> 
>    In that case you should use encoding with built-in protection, that only authorized entities are able to decrypt. JWT provides 
>    such protection, so I assume it wouldn't matter if a non-authorized entity receives it. And, as far as the OAuth token is concerned, you don't have to protect the SIP signaling when using JWT (there may of course be other reasons why you need to protect the SIP signaling).

Most SIP signalling protection - TLS - is hop by hop. We need protection from the UA to the service domain - possibly across a few intermediate servers.


/O