Re: [Rum] [EXT] RUM security model

"Olle E. Johansson" <oej@edvina.net> Thu, 22 October 2020 06:29 UTC

Return-Path: <oej@edvina.net>
X-Original-To: rum@ietfa.amsl.com
Delivered-To: rum@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2839D3A0B8E for <rum@ietfa.amsl.com>; Wed, 21 Oct 2020 23:29:35 -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, 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 XtOolIkt7Smk for <rum@ietfa.amsl.com>; Wed, 21 Oct 2020 23:29:31 -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 3EF113A0B8C for <rum@ietf.org>; Wed, 21 Oct 2020 23:29:29 -0700 (PDT)
Received: from pinguicula.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 18A7D25F9; Thu, 22 Oct 2020 08:29:26 +0200 (CEST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.1\))
From: "Olle E. Johansson" <oej@edvina.net>
In-Reply-To: <38090A50-6572-4A8E-97D4-C260323365AE@brianrosen.net>
Date: Thu, 22 Oct 2020 08:29:25 +0200
Cc: Olle E Johansson <oej@edvina.net>, Eugene Christensen <echristensen@sorenson.com>, "rum@ietf.org" <rum@ietf.org>, Paul Kyzivat <pkyzivat@alum.mit.edu>
Content-Transfer-Encoding: quoted-printable
Message-Id: <EC92824F-0175-407A-8175-A95DFE197B22@edvina.net>
References: <4d6ba97f-a83d-3d36-14a9-c6e84dd5b874@alum.mit.edu> <7A11F680-9EA6-4477-9BD8-6A7755AD0054@brianrosen.net> <7fdb95e6-e954-7275-60f7-462cf07eff0e@alum.mit.edu> <CAOPrzE1ONDUcGwvcfRhpyu9YM5JJJD92AsLKaeXvXqH4fmNbBw@mail.gmail.com> <92b5d34b-2fbf-0e2b-8562-8f7d11c5123b@alum.mit.edu> <F03944C6-0C19-4964-94A8-658B338526D4@brianrosen.net> <5e6d8446-c267-5113-aff1-fc87576b1317@alum.mit.edu> <BYAPR04MB49835526E9F63A38A5C56B86A31C0@BYAPR04MB4983.namprd04.prod.outlook.com> <38090A50-6572-4A8E-97D4-C260323365AE@brianrosen.net>
To: Brian Rosen <br@brianrosen.net>
X-Mailer: Apple Mail (2.3608.120.23.2.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rum/T40PRoGi02yKqxcwuQkJKot_qF0>
Subject: Re: [Rum] [EXT] RUM security model
X-BeenThere: rum@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Relay User Machine <rum.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rum>, <mailto:rum-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rum/>
List-Post: <mailto:rum@ietf.org>
List-Help: <mailto:rum-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rum>, <mailto:rum-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 22 Oct 2020 06:29:35 -0000


> On 21 Oct 2020, at 16:40, Brian Rosen <br@brianrosen.net> wrote:
> 
> If a magic number (often this is called an “API Key”) is good enough, I can write text for it.  The client code would have a version and the key sent to the server in Registration.  The server can verify the code was one it issued, for that version.  The code would be per-provider.
Sending API keys or any other tokens in a header in SIP is not a good idea. Which is why we said MUST encrypt in the SIP/Oauth2 document.
Remember that there can be multiple proxys in the path and giving them the API key is not a good thing.

The API key can be used as a secret in a HTTP digest auth with a strong checksum (hint: Not MD5)

> 
> Brute force and DDoS attacks can’t be addressed by this document except in the Security Consideration section.  They are implementation issues.  
If there are specific attack vectors to RUM that doesn’t apply to SIP implementations in general, yes.

/O
> 
> Brian
> 
> 
>> On Oct 21, 2020, at 9:32 AM, Eugene Christensen <echristensen@sorenson.com> wrote:
>> 
>> Brian,
>> 
>> You mentioned the use of a magic number.  Is that the same as the use of an authorization key that is built into the product with the respective provider's key(s)?  If so I believe that could possibly work.  If I understand that correctly, the provider's would give a key to the developer that would be unique to that application and version.  When that application attempts to connect to a provider, the provider will know what company's app and version it is and be able to accept the connection once it has been verified in the lab.  If it goes rogue thereafter, as I understand it, the providers could revoke that access.
>> 
>> Regarding some concerns with an open API, here are three that should be captured:
>> - Brute force attacks - A bad actor could use an API to determine a user's password.
>> - Untested clients - A problem caused unintentionally by an endpoint developer with good intentions. 
>> - DDOS attacks - A bad actor could try to bring a system down by sending multiple requests from different IP addresses making it difficult to block.
>> 
>> 
>> Thanks,
>> Eugene.
>> 
>> CONFIDENTIALITY NOTICE. This e-mail transmission, and any documents, files or previous e-mail messages attached to it, may contain confidential and proprietary information. If you are not the intended recipient, or a person responsible for delivering it to the intended recipient, you are hereby notified that any disclosure, copying, distribution or use of any of the information contained in or attached to this message is STRICTLY PROHIBITED. If you have received this transmission in error, please immediately notify me by reply e-mail at echristensen@sorenson.com or by telephone at +1 (801) 287-9419, and destroy the original transmission and its attachments without reading them or saving them to disk.
>> 
>> -----Original Message-----
>> From: Rum <rum-bounces@ietf.org> On Behalf Of Paul Kyzivat
>> Sent: Tuesday, October 20, 2020 9:34 AM
>> To: Brian Rosen <br@brianrosen.net>
>> Cc: rum@ietf.org
>> Subject: Re: [Rum] [EXT] RUM security model
>> 
>> [EXTERNAL] 
>> 
>> I think this discussion highlights the need to first nail down the threat model that the providers want to protect against.
>> 
>> James: can you take a crack at that? Possibly pull in some of the other providers if you think they will be willing.
>> 
>> (I wonder if providers currently have any sort of robust protection against malicious impersonation of their devices? I'm guessing it is only security by obscurity.)
>> 
>> 	Thanks,
>> 	Paul
>> 
>> On 10/20/20 10:10 AM, Brian Rosen wrote:
>>> Yes, both apps, one app steals the credential from the other (same machine, same user).
>>> 
>>> I also don’t think a downloaded test would be particularly helpful unless we built in a bunch of mechanism that allowed automation of testing.
>>> 
>>> And then, what would stop an app from playing nice with a test, and then nasty when it wanted to?
>>> 
>>> Both of these exploits do assume that the app developer intends to flaunt approval in some way.  If that’s not a threat that is important to guard against then a simple magic number for an app is enough.  An app gets tested by a provider, and is given a magic number that it provides, securely, in some way.  As long as the providers trust the app developer to not misuse the magic number, it’s an indication that the app (at a particular version presumably) was trusted.
>>> 
>>> As long as malicious actors can be ignored, I think we could do something.  I don’t think that is worth much, but if it is, I can write text.
>>> 
>>> If you want to protect against malicious actors, then I don’t know how.  TPM won’t work - doesn’t work in Android/iOS.  It’s mostly a PC thing.  Even with TPM, what you need is something like a digest of the code.  You can’t get that.
>>> 
>>> Brian
>>> 
>>> 
>>>> On Oct 16, 2020, at 11:17 AM, Paul Kyzivat <pkyzivat@alum.mit.edu> wrote:
>>>> 
>>>> On 10/15/20 8:24 PM, Brian Rosen wrote:
>>>>> Nope, it just takes a hacker to create a piece of code that patches an app to look like another app.
>>>> 
>>>> I don't follow.
>>>> 
>>>> A user gets a device capable of passing the tests. He requests to enroll it with is provider as one of his devices. As part of that, a test is run between the device and the provider's enrollment server. Then the provider gives the device some sort of cert that can be used when registering.
>>>> 
>>>> Next, the user decides to try out some other rogue device on his account. Normally he would repeat the above, and the device would fail the test. Instead, he might cause the rogue device to steal the cert from the device that passed. I think he can't help but know he is doing something illicit.
>>>> 
>>>> I guess if these were both just apps, then a remote attack on the device could install a rogue app that impersonates the valid one and steals its credentials. Is that what you had in mind?
>>>> 
>>>> Perhaps we need to spend some time with the providers enumerating the attacks they are concerned with.
>>>> 
>>>> 	Thanks,
>>>> 	Paul
>>>> 
>>>>> On Thu, Oct 15, 2020 at 8:19 PM Paul Kyzivat <pkyzivat@alum.mit.edu <mailto:pkyzivat@alum.mit.edu>> wrote:
>>>>>   On 10/15/20 7:52 PM, Brian Rosen wrote:
>>>>>> I don’t think even that would work because there isn’t any way to
>>>>>   know that the app that was approved is the app that is being used.
>>>>>   Yes, I guess you are right. But at least it would require the end user
>>>>>   to enter into a conspiracy with the app developers, and be able to get
>>>>>   the credential out of one app and into another.
>>>>>            Thanks,
>>>>>            Paul
>>>>>> What systems like iOS does is rely on the fact that you can’t
>>>>>   download and run an app that hasn’t been vetted. The code is signed
>>>>>   and the signature is checked every time the app starts. We don’t
>>>>>   have an environment like that.  We can’t control what is downloaded
>>>>>   and we can’t check signatures.
>>>>>> I don’t think there is a reliable way to do this. If someone has
>>>>>   an idea, please explain it, but we can’t be in a “you do something”
>>>>>   position without a clue as to how.
>>>>>> 
>>>>>> Now, if the app was an iOS app, then the right thing happens.
>>>>>   There are few other systems that are wired down like that. Android,
>>>>>   for example, allows you to download and run from arbitrary sites if
>>>>>   the device is configured to allow that.
>>>>>> 
>>>>>> Brian
>>>>>> 
>>>>>> 
>>>>>>> On Oct 15, 2020, at 6:30 PM, Paul Kyzivat <pkyzivat@alum.mit.edu
>>>>>   <mailto:pkyzivat@alum.mit.edu>> wrote:
>>>>>>> 
>>>>>>> Eugene,
>>>>>>> 
>>>>>>>> On 10/15/20 3:30 PM, Eugene Christensen wrote:
>>>>>>>> Brian,
>>>>>>>> Admittedly I do not fully understand certificates and
>>>>>   authentication but would client certificates or mutual
>>>>>   authentication with a shared secret work here?
>>>>>>> 
>>>>>>> I'm also not a security expert. To my understanding, the key
>>>>>   problem is that you want a proof that an implementation has passed
>>>>>   some sort of test. That is more or less equivalent to having a
>>>>>   special certification authority that is able to assign a certificate
>>>>>   based on the passing of a test. But for the system to work that
>>>>>   certificate needs to be bound to the entity (hw/sw) that passed the
>>>>>   test. It can't be possible to transfer that certificate to a
>>>>>   different device.
>>>>>>> 
>>>>>>> A possible alternative would be for each provider to have its
>>>>>   own test service. When a user gets a new device/application, as part
>>>>>   of the initial registration of their device with the provider, this
>>>>>   test would be run. Then the result of that would be granting of
>>>>>   credentials for that device to access that provider's system.
>>>>>>> 
>>>>>>>   Thanks,
>>>>>>>   Paul
>>>>>>> 
>>>>>>>> Thank you.
>>>>>>>> Eugene
>>>>>>>> *CONFIDENTIALITY NOTICE.*This e-mail transmission, and any
>>>>>   documents, files or previous e-mail messages attached to it, may
>>>>>   contain confidential and proprietary information. If you are not the
>>>>>   intended recipient, or a person responsible for delivering it to the
>>>>>   intended recipient, you are hereby notified that any disclosure,
>>>>>   copying, distribution or use of any of the information contained in
>>>>>   or attached to this message is STRICTLY PROHIBITED. If you have
>>>>>   received this transmission in error, please immediately notify me by
>>>>>   reply e-mail at echristensen@sorenson.com
>>>>>   <mailto:echristensen@sorenson.com> <mailto:echristensen@sorenson.com
>>>>>   <mailto:echristensen@sorenson.com>>or by telephone at +1 (801)
>>>>>   287-9419, and destroy the original transmission and its attachments
>>>>>   without reading them or saving them to disk.
>>>>>>>> *From:* Brian Rosen <br@brianrosen.net <mailto:br@brianrosen.net>>
>>>>>>>> *Sent:* Wednesday, September 30, 2020 5:47 PM
>>>>>>>> *To:* Eugene Christensen <echristensen@sorenson.com
>>>>>   <mailto:echristensen@sorenson.com>>
>>>>>>>> *Cc:* rum@ietf.org <mailto:rum@ietf.org>
>>>>>>>> *Subject:* Re: [Rum] [EXT] RUM security model
>>>>>>>> [EXTERNAL]
>>>>>>>> I think we understand why you want it. What we don’t understand
>>>>>   is what mechanism would provide it. I am generally aware of this
>>>>>   class of problem and I’m not aware of a solution that will work.  So
>>>>>   what we need is a suggested mechanism that provides the assurance
>>>>>   you want that is technically sound.
>>>>>>>> Brian
>>>>>>>> On Wed, Sep 30, 2020 at 6:30 PM Eugene Christensen
>>>>>   <echristensen@sorenson.com <mailto:echristensen@sorenson.com>
>>>>>   <mailto:echristensen@sorenson.com
>>>>>   <mailto:echristensen@sorenson.com>>> wrote:
>>>>>>>>   Thanks for considering how we might implement this security
>>>>>>>>   mechanism.  May I add my voice that it is essential that we
>>>>>   find an
>>>>>>>>   option for providing this desired security, whatever it is.  It
>>>>>>>>   could be detrimental to the VRS providers to have UAs out
>>>>>   there,
>>>>>>>>   with the ability to register with VRS providers without
>>>>>   first being
>>>>>>>>   fully vetted.  It is our practice anytime we make updates
>>>>>   to our UAs
>>>>>>>>   to test how they work with our UAS before we ever release
>>>>>   the new UA
>>>>>>>>   software into our production environment.  We only want UAs
>>>>>>>>   registering that have undergone this rigorous testing with our
>>>>>>>>   systems and then only with users which we have awareness of.
>>>>>>>>   Thanks,
>>>>>>>>   Eugene Christensen
>>>>>>>>   CONFIDENTIALITY NOTICE. This e-mail transmission, and any
>>>>>   documents,
>>>>>>>>   files or previous e-mail messages attached to it, may contain
>>>>>>>>   confidential and proprietary information. If you are not the
>>>>>>>>   intended recipient, or a person responsible for delivering
>>>>>   it to the
>>>>>>>>   intended recipient, you are hereby notified that any
>>>>>   disclosure,
>>>>>>>>   copying, distribution or use of any of the information
>>>>>   contained in
>>>>>>>>   or attached to this message is STRICTLY PROHIBITED. If you have
>>>>>>>>   received this transmission in error, please immediately
>>>>>   notify me by
>>>>>>>>   reply e-mail at echristensen@sorenson.com
>>>>>   <mailto:echristensen@sorenson.com>
>>>>>>>>   <mailto:echristensen@sorenson.com
>>>>>   <mailto:echristensen@sorenson.com>> or by telephone at +1 (801)
>>>>>>>>   287-9419, and destroy the original transmission and its
>>>>>   attachments
>>>>>>>>   without reading them or saving them to disk.
>>>>>>>>   --     Rum mailing list
>>>>>>>> Rum@ietf.org <mailto:Rum@ietf.org> <mailto:Rum@ietf.org
>>>>>   <mailto:Rum@ietf.org>>
>>>>>>>> https://www.ietf.org/mailman/listinfo/rum
>>>>>   <https://www.ietf.org/mailman/listinfo/rum>
>>>>>>>>   <https://www.ietf.org/mailman/listinfo/rum
>>>>>   <https://www.ietf.org/mailman/listinfo/rum>>
>>>>>>> 
>>>>>>> --
>>>>>>> Rum mailing list
>>>>>>> Rum@ietf.org <mailto:Rum@ietf.org>
>>>>>>> https://www.ietf.org/mailman/listinfo/rum
>>>>>   <https://www.ietf.org/mailman/listinfo/rum>
>>>> 
>>> 
>> 
>> --
>> Rum mailing list
>> Rum@ietf.org
>> https://www.ietf.org/mailman/listinfo/rum
> 
> -- 
> Rum mailing list
> Rum@ietf.org
> https://www.ietf.org/mailman/listinfo/rum