Re: [Tigress] Left over comments from the interim

Eric Rescorla <ekr@rtfm.com> Thu, 02 November 2023 00:48 UTC

Return-Path: <ekr@rtfm.com>
X-Original-To: tigress@ietfa.amsl.com
Delivered-To: tigress@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3CC4FC17A743 for <tigress@ietfa.amsl.com>; Wed, 1 Nov 2023 17:48:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.905
X-Spam-Level:
X-Spam-Status: No, score=-1.905 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20230601.gappssmtp.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Bem_6z7_Dmag for <tigress@ietfa.amsl.com>; Wed, 1 Nov 2023 17:48:49 -0700 (PDT)
Received: from mail-yb1-xb35.google.com (mail-yb1-xb35.google.com [IPv6:2607:f8b0:4864:20::b35]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C8862C170615 for <tigress@ietf.org>; Wed, 1 Nov 2023 17:48:49 -0700 (PDT)
Received: by mail-yb1-xb35.google.com with SMTP id 3f1490d57ef6-d84c24a810dso389535276.2 for <tigress@ietf.org>; Wed, 01 Nov 2023 17:48:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20230601.gappssmtp.com; s=20230601; t=1698886129; x=1699490929; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=mBDjMyaiobRjaA+qQ/BKCb9an7vahRg3qsnhSfrJNhA=; b=ZekYq9Wdx0NxYrWGyY9psjnyEmh5+zaIVjpyyp3U3AbCeukYfjz0kUQY8/qCV9kuDt NA12Y7m6FJuJYfybrYQqFD8iJ0qJDUDyUEgHVUqTJFgiLysm8g27QUGt/F/bDhpnVVky xULkY7si+AqAnEG8hMOiV+xSsFZHogi8gB1sFLD2xa7PNfPGGgXy0v5PH8U3JHcH/ZQw gMc/E3R4+0K46uVasmtI8tnz2g1fy/SPGP3DKDLWtUFFKGAJ69J+ErtUkOg1J6ahGoo1 nW+yTPGUYym7zClfVDQo0U2jQn4lRSPLaURtzN394I/1d1adCtPTRxnEAjQQ/VbrvmzX qW2g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698886129; x=1699490929; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=mBDjMyaiobRjaA+qQ/BKCb9an7vahRg3qsnhSfrJNhA=; b=Vksu8Qo4hgRhbOVj33SYXm/5cJ9+RhH2SUhoZBDB4wR3S4V2YO2nXSCmtGn1O9G7I0 /d9DZuB/bgkatsz4Di6ptW4fgPdUD5euplJQzkLmnEYAzCYBEigVxDeM4JHS8gW+oldm XxTIEeCWpfQroym80shwJaBjxnqipqEdLSW1SKpT2ESncrfzEwN6oR0P3ByY3YpEje1C HK8WHUeCQfxPnd9yLlUFmFkNJLnujTH5H3iDeguLeD0HHfTLyVol5yUvPcqKIOZ/5yLi qhhH+dNL9VeslbzCtU/CKtA80GLYyT7huh7iev3z7ujYM8Y1Z80kBpskaMy583uvlo3l qPsA==
X-Gm-Message-State: AOJu0Yyb42Vbu/KTc7tKRSwZ4rt9hB0JVI9SEPEWpvRkPsB6IUIF3fU3 8a/vf6SbP+gZMNbVEFiDxXSpcuoqBRwjE9JvcLdoRw==
X-Google-Smtp-Source: AGHT+IGA6NwSA7wosOJGog1hzcDkN6ZsqjT+la1k+DF0pwJr8aerXfP5zASkzjOGh9zr6hhxzR3RQ4P1jRN+CiYmJi8=
X-Received: by 2002:a25:c7d1:0:b0:da0:ca94:c782 with SMTP id w200-20020a25c7d1000000b00da0ca94c782mr14346649ybe.20.1698886128673; Wed, 01 Nov 2023 17:48:48 -0700 (PDT)
MIME-Version: 1.0
References: <CALjsk148F_x-r3LKbNZ7qRQQddyz=oX4k0E1jt=5daOu0_JzkQ@mail.gmail.com> <91E81DA8-B2D0-4A18-9D12-D921AB363C05@heapingbits.net> <CABcZeBMPQ5gkE9hJww3CMn02ZEw2ACWk1t-3C9gSdQQahFW9rg@mail.gmail.com> <87F499F4-3F15-4E1D-9AA3-1620A08513D0@apple.com> <CABcZeBN8Q5zghGrL2ERybfuLoH1C6Y40iWeN1kvJnwSmg4bdWw@mail.gmail.com> <6D1FDEE7-9542-464D-B5C7-43DE39D55F0B@apple.com> <CABcZeBMvUndF4NfUfUxuwaEGTevKKzW9b9SDH1+0+qni+D5H0g@mail.gmail.com> <BC1465CB-2B48-4A43-A07D-17CDE27357A2@apple.com> <CABcZeBPJVDBoc2h-ytXO=tD4CKXi4ixsTbTqnJiwa27JnJFX4w@mail.gmail.com> <998C40CE-85F5-409B-B36C-327A45E32B46@apple.com>
In-Reply-To: <998C40CE-85F5-409B-B36C-327A45E32B46@apple.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Wed, 01 Nov 2023 17:48:11 -0700
Message-ID: <CABcZeBMUOPUCHxdJEUpL4hwW5JSLymD5Dud+6We_wCsMLzRK_A@mail.gmail.com>
To: Yogesh Karandikar <ykarandikar@apple.com>
Cc: Christopher Wood <caw@heapingbits.net>, Brad Lassey <lassey=40google.com@dmarc.ietf.org>, tigress@ietf.org
Content-Type: multipart/alternative; boundary="00000000000036c134060920c002"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tigress/eyZL09EYpskI1eGNSocD9ILl4mw>
Subject: Re: [Tigress] Left over comments from the interim
X-BeenThere: tigress@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Transfer dIGital cREdentialS Securely <tigress.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tigress>, <mailto:tigress-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tigress/>
List-Post: <mailto:tigress@ietf.org>
List-Help: <mailto:tigress-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tigress>, <mailto:tigress-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 02 Nov 2023 00:48:51 -0000

On Wed, Oct 25, 2023 at 12:38 PM Yogesh Karandikar <ykarandikar@apple.com>
wrote:

> Inline,
>
> Thanks,
> Yogesh
>
> On Oct 20, 2023, at 6:44 PM, Eric Rescorla <ekr@rtfm.com> wrote:
>
>
>
> On Fri, Oct 20, 2023 at 4:20 PM Yogesh Karandikar <ykarandikar@apple.com>
> wrote:
>
>> Replies inline,
>>
>> Thanks,
>> Yogesh
>>
>>
>> On Oct 16, 2023, at 12:47 PM, Eric Rescorla <ekr@rtfm.com> wrote:
>>
>>
>>
>> On Mon, Oct 16, 2023 at 11:55 AM Yogesh Karandikar <ykarandikar@apple.com>
>> wrote:
>>
>>> Hi Eric,
>>>
>>> Replies inline.
>>>
>>> Thanks,
>>> Yogesh
>>>
>>>
>>> On Oct 12, 2023, at 7:22 PM, Eric Rescorla <ekr@rtfm.com> wrote:
>>>
>>> Hi Yogesh,
>>>
>>> Thanks for fleshing out the scenario you have in mind. Some comments
>>> below.
>>>
>>> > Let’s assume Hotel as the vertical for this example.
>>> >
>>> > 1. Alice sends a Hotel credential invitation to Bob over channel_1
>>> > (with Security score of 3 because of a recently published research
>>> > paper about vulnerabilities)
>>> >
>>> > 2. The transport facilitates the provisioning information transfer to
>>> > B_device (the first device to claim the share). No other party is able
>>> > to snoop on this transfer.
>>> >
>>> > 3. B_device is at the hotel trying to access. B_Device’s credential
>>> > will be marked with security score of channel_1. Let’s say the Hotel’s
>>> > Credential policy blocks automatic access if the Credential was
>>> > generated using channel_1 with a score of less than 6. In this case
>>> > B_Device will not be able to use the Credential instead see an error
>>> > message asking the user to see the Hotel front desk. At the Front
>>> > desk, the person will be instructed to follow a protocol to perhaps
>>> > looks at some government ID, instructions from Alice or other policies
>>> > as defined by Hotel.
>>> >
>>> > In this case:
>>> >
>>> > if B_Device belonged to Bob, the intended Recipient, {
>>> >     the Front desk person removes restriction on the Credential.
>>> > } else {
>>> >     Front desk person rejects the Credential and follows Hotel
>>> protocol to deal with the situation
>>> > }
>>>
>>> First, it would be good to see an actual protocol sketch here, because
>>> there are both secure and insecure ways to do this. Specifically, I
>>> would like to focus on how the hotel establishes this question:
>>>
>>>    if B_Device belonged to Bob, the intended Recipient
>>>
>>> How specifically do you envision this working, and in particular what
>>> binds B's *device* to B's credentials? This is easy to get wrong
>>> and I don't think it's really reasonable to punt it to the verticals.
>>> That's leaving a sharp object around for others to step on.
>>>
>>>
>>> I’m not sure if I actually understand the question here.
>>>
>>> Currently when Alice rents a hotel room, she gets 2 (or more) physical
>>> key cards. Later Alice hands a key card to Bob and Bob can use it anywhere.
>>> In this process, Bob doesn’t need to go to front desk. Hotel doesn’t verify
>>> Bob’ identity. The idea is that Hotel trusts that Alice used her judgement
>>> and a secure channel to hand over the key card.
>>>
>>> In the Digital Credential world, the verticals are trying to mimic that
>>> user experience. Alice hands a Digital Credential to Bob using her
>>> judgement and a secure channel. All works well when the Hotel has
>>> reasonable trust in the channel. In that case Bob doesn’t need to see the
>>> front desk and there is no extra friction in use of the Credential.
>>>
>>
>> Yes, and this will work fine with both proposals described already.
>>
>>
>> Indeed if the channel_1 is secure, both proposal would be fine.
>>
>>
>>
>> In the key card world, Alice could have put the card in an envelope and
>>> put it under a door-mat to share with Bob. In that case, whoever gets the
>>> key card in hand can use it everywhere. Hotel would have no clue that
>>> happened.
>>>
>>> In the Digital Credential world Alice could use a “under the door-mat”
>>> channel. But now Hotel would know that the used channel doesn’t have
>>> security score they like. In that case the Credential doesn’t work right
>>> away unless the person with Credential is forced to see the Front desk.
>>> Hotel could call Alice to verify the name of the person (or she could use
>>> their website/App etc).
>>>
>>
>> Yes, but my point is that precisely how this is implemented matters. For
>> example, suppose that Alice and Attacker are both staying at the hotel and
>> Alice wants to transfer her key to Bob.
>>
>> In this case, however, she sends the invitation over an insecure channel
>> and so the attacker captures it and initiates the transfer protocol.
>>
>> The attacker then initiates his own transfer of his own room to Bob. This
>> causes Bob to go to the front desk and ask for the transfer to complete and
>> show his ID.
>>
>> The front desk calls Alice and says "Did you mean to do a transfer to
>> Bob". Alice says "yes" and the front desk and unblocks the transfer. This
>> causes the transfer to go through but to the attacker.
>>
>> In order prevent this, you need to bind the showing of the ID to the
>> actual transaction it is enabling. This should be possible, but it's not
>> trivial and we shouldn't be leaving that to the verticals.
>>
>>
>> This is actually not accurate.
>>
>> If Attacker intercepted Alice’s invite and acted upon it to get
>> Credential for Alice’s room. That Credential will still not work on Alice’s
>> room or common areas because it will be marked with security score of
>> channel_1 and will need to go through second-factor (Front desk visit in
>> this case).
>>
>> Attacker will still have to visit Front desk, they will call Alice if she
>> shared key with Attacker.
>>
>
> Not necessarily, because depending on the protocol the front desk has no
> way of knowing that the message from Alice actually went to the Attacker
> and not Bob.
>
>
> Again, the problem here is that you have not described a complete protocol
> and so it's not possible to know whether it in fact has the property you
> describe.
>
>
> Why does the front desk need to know that?
>
> Front desk person doesn’t need to understand the technical details of
> Credential sharing. They just need to follow a process defined by their
> employer.
>

Yes, I was using "Front desk" as metonymy for "the entire system at the
front deks"


>
> I thought the process would be pretty obvious to imagine for anyone who
> has ever tried to receive service in person or on phone for anything like
> airline tickets, hotel reservation.
>

Many things that seem obvious at a high level are insecure when examined in
detail, so it's important to actually define how things work.



 But let me spell it out:
>
>
>
> A personX approaches front desk and says my Credential that I received
> from my friend doesn’t work, can you help?
>
> Front Desk: Sure, tap your credential against this reader I have and I’ll
> get to see the details.
>

Here we have the first piece of new information, which is that there is a
reader at the front desk. That seems like (1) a fairly big deployment
hurdle and (2) makes the problem quite a bit easier, because now we have a
high bandwidth channel at this point of interaction.



PersonX taps the credential and front desk person gets details about which
> room the Credential is for and any other relevant details as defined by the
> Vertical.
>
> Front Desk, asks personX to confirm room number and name of friend who
> shared the Credential.
>
> If the information provided by personX matches what the Front Desk screen
> shows, front desk person can proceed with call to friend and government ID
> verification.
>

Great. But ISTM that you're making this more complicated than it has to be,
because you've
decided to treat the insecure channel (C1) as the introduction channel
rather than the secure
one (C2).

If we forget that we are doing a credential transfer and think about how
users get their
room keys at initial checkin, that requires either (1) a secure channel or
(2) an in-person
interaction which can be used to bootstrap a secure channel. It seems like
if we are
going to require (2) we could just do whatever it is hotels do in that case
for the
credential transfer as well.

This is pretty standard operating practice when trying to get some service
> from anything.
>

Actually, practices very quite substantially. As an example, you can
routinely check in
for airlines simply by presenting your ID without showing information from
the carrier
at all. This is secure(ish) because your identity will be checked again
later when you
try to go through security. Again, each situation needs its own security
analysis.


In the scenario you have described, if attacker sent their room’s
> Credential to Bob, then Bob’ information about Alice and room number won’t
> match.
>
> Same way when attacker approaches front desk, the information about
> Alice’s friend that Front desk receives won’t match.
>
>
>
>
>
>> Second, it seems to me that if we already have decided that there
>>> is a trusted third party in this case who can verify the user's
>>> ID directly and physically, then that interaction can also be
>>> used to bootstrap a secure channel in the manner suggested by
>>> Tommy. Specifically, when the Receiver goes to the front desk
>>> they exchange a key with the front desk (e.g., via a QR code)
>>> and that can be used to secure the rest of the transaction.
>>>
>>>
>>> Finally, this really seems like the easiest case. Surely there are
>>> situations in which people want to transfer credentials but there is
>>> no handy third party to facilitate physical authentication (e.g., I
>>> want to send someone my car keys). Do you have a proposed technical
>>> approach that would work in that case?
>>>
>>>
>>>
>>> In the car key world, there are proposal where the car itself introduces
>>> the second factor friction. It could be entering a PIN code obtained from
>>> the sharer, or presence of sharer’s key.
>>>
>>
>> Well, if the sharer's key is present then it can be used directly instead
>> of the system we are proposing to build here.
>>
>>
>>
>> What does used directly mean?
>>
>
> That if the sender and recipient's keys are in the same place, you can
> establish a secure channel at that time, e.g., by having Alice display a
> bar code that Bob's phone reads.
>
>
>
> Are you suggesting that if Alice and Bob can be in proximity, they should
> only share Credentials by a proximity method?
>

No.



> Also, are you assuming that proximity equals highest amount of security
> and hence Verticals should not worry about second factor?
>

Or rather that it is sufficiently secure that you don't need a second
factor.



>
> If it's a PIN, then actually doing the PIN securely in way that's not
>> subject to attack is not at all straightforward.
>>
>>
>>
>> Agreed, doing a PIN is only effective if done correctly.
>>
>> But that is something already prevalent in the industry. As someone had
>> mentioned in one of the earlier email threads how they received sms to
>> reset their email password.
>>
>> So it’s kind of a solved problem. Of-course it can be improved.
>>
>
> The reason that people think that SMS is safe as a password reset
> mechanism is that they are trusting the SMS channel, so this does not solve
> the problem at hand, which is when you do not trust the SMS channel and
> need to *bind* the exchange over the untrusted channel to the PIN. That is
> a much more difficult problem.
>
>
>
> To me Second factor is out of scope for Tigress, but it makes interesting
> conversation.
>

Well, again, I think the charter and threat model document are quite clear
on
this point, so it's more than just an "interesting conversation".

-Ekr


>
>
> -Ekr
>
>
>