Re: [nfsv4] [EXTERNAL] Re: Review of draft-ietf-nfsv4-rpc-tls04

Chuck Lever <chucklever@gmail.com> Sun, 08 December 2019 16:58 UTC

Return-Path: <chucklever@gmail.com>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A9BCA1200A4 for <nfsv4@ietfa.amsl.com>; Sun, 8 Dec 2019 08:58:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 SOeM9GrR9Dcj for <nfsv4@ietfa.amsl.com>; Sun, 8 Dec 2019 08:58:48 -0800 (PST)
Received: from mail-yb1-xb44.google.com (mail-yb1-xb44.google.com [IPv6:2607:f8b0:4864:20::b44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 31D9B120025 for <nfsv4@ietf.org>; Sun, 8 Dec 2019 08:58:48 -0800 (PST)
Received: by mail-yb1-xb44.google.com with SMTP id x139so5186061ybe.4 for <nfsv4@ietf.org>; Sun, 08 Dec 2019 08:58:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=E7nFYBoszlXAoVWg857gr6Y2sCiWreFUc73jcm2GOE8=; b=sTnJSFxHCw7fbLfonKPKC3ocilid77eofOqAV0zEEqG+gDb4N8fNkMLQ/P9iE8oVvM sbhGRf/mSFEohnEiuI1MtFhr7704mBQyo92EWo1enjUcTLuuUf7mdjK+s9YIVsUhptJt ezcaGTYAiPIvSgINhRpjE4dxfkx+TVLPWjx3NLEG7yjDNgA2aUzNODQtvMaWq2o/qrNR 84xC+4fM0FROH/FulSYUfk0vdUmgTVx97lHjOaqDrtGgoVsdhCDyGLpBFSqs304k0pw0 OffCOkLHwBWvnTmYRBs5lD9vRrkjwAmQpRKmZLOUC7mx+W/3NhK9tphu07ERwIgePB1j I+Bw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=E7nFYBoszlXAoVWg857gr6Y2sCiWreFUc73jcm2GOE8=; b=j7em3xdRGuI2u71HTfdWIS/tPbxOJkkrcUrQblMBzMxI/qnVMoJTAWvBQSyk/1Am0X tHbbtGXRYjKFdlEu3Wffm5aGk3/R5gLHjSYUl0J68VqxBWY4DqmG/T6TlNT1/A737uXj 60PAqltdJ8QENFQCtqburgO0mRxkuW/+zgs46efeL2HH9PNcoJ38OthKxM2wFDz428AA 90uQ1ClljOZWsOIvXjexnuPLBSKhXeA+0HO5sTf4hByOIWJwrnyg1+sZStoGlz9Xg1pX XiVoxl/ko/v9Q1h0FX9NZdt0pOwSHHdoP2cpdqm6LriInWZcheEfVRYOOKzga+Pdcq/a LzTQ==
X-Gm-Message-State: APjAAAUUDeDjtpV6ULT+Ov9UjPT6+IMlKGPnZfm42sWgm7+2ypBqfuPt cyMF3a9ync9Q2EOCJuhW1xw=
X-Google-Smtp-Source: APXvYqz1iRRF9lybmzyykwZdQQcNUX51JJjok2TxIqkshedRv2rkcJBL2pixLJyEN3Qg8VPlax7S5A==
X-Received: by 2002:a25:d4c6:: with SMTP id m189mr18240892ybf.133.1575824327286; Sun, 08 Dec 2019 08:58:47 -0800 (PST)
Received: from anon-dhcp-152.1015granger.net (c-68-61-232-219.hsd1.mi.comcast.net. [68.61.232.219]) by smtp.gmail.com with ESMTPSA id d80sm9288361ywa.58.2019.12.08.08.58.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 08 Dec 2019 08:58:46 -0800 (PST)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
From: Chuck Lever <chucklever@gmail.com>
In-Reply-To: <c4a0ccc6-ebea-1732-d088-d645f970a3e5@talpey.com>
Date: Sun, 08 Dec 2019 11:58:44 -0500
Cc: NFSv4 <nfsv4@ietf.org>, Trond Myklebust <trondmy@gmail.com>
Content-Transfer-Encoding: quoted-printable
Message-Id: <8F73800E-1589-4EC4-90C0-FF349472C391@gmail.com>
References: <CADaq8jdbQJFKS7xoeP+wLMhT0e8gSQQeqHDsV7PHNbT_YC+hSQ@mail.gmail.com> <11820D8F-A192-46EE-AD32-8561BCBE31A2@oracle.com> <MN2PR21MB143931B6F1DC40FF6A765AAEA05F0@MN2PR21MB1439.namprd21.prod.outlook.com> <CADaq8jf5Dh8bMmA2fcDKBknTbz-Oah1dZH=KRawjSRtOa6zh5w@mail.gmail.com> <63ADA2AC-815D-4899-B863-4FD321A968ED@oracle.com> <MN2PR21MB143950BE6F7130739D1280CAA05F0@MN2PR21MB1439.namprd21.prod.outlook.com> <741F6898-6A1B-4968-BC63-B9CDBB97C16F@oracle.com> <b1b36bba-2d60-3665-db67-0e58a2c82dc7@talpey.com> <CEB4BEE5-2BC3-44BB-873F-57FD24F00E45@oracle.com> <c4a0ccc6-ebea-1732-d088-d645f970a3e5@talpey.com>
To: Tom Talpey <tom@talpey.com>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/jPoG6Pmn9nzRnII8RHR7JUVfJno>
Subject: Re: [nfsv4] [EXTERNAL] Re: Review of draft-ietf-nfsv4-rpc-tls04
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nfsv4/>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Dec 2019 16:58:51 -0000

Having had some time to digest this....


> On Dec 6, 2019, at 4:44 PM, Tom Talpey <tom@talpey.com> wrote:
> 
> On 12/6/2019 4:30 PM, Chuck Lever wrote:
>>> On Dec 6, 2019, at 3:58 PM, Tom Talpey <tom@talpey.com> wrote:
>>> 
>>> On 12/6/2019 2:46 PM, Chuck Lever wrote:
>>>>> On Dec 6, 2019, at 2:24 PM, Tom Talpey <ttalpey@microsoft.com> wrote:
>>>>> 
>>>>>> -----Original Message-----
>>>>>> From: Chuck Lever <chuck.lever@oracle.com>
>>>>>> Sent: Friday, December 6, 2019 2:12 PM
>>>>>> To: David Noveck <davenoveck@gmail.com>; Black, David
>>>>>> <David.Black@dell.com>
>>>>>> Cc: Tom Talpey <ttalpey@microsoft.com>; NFSv4 <nfsv4@ietf.org>
>>>>>> Subject: Re: [nfsv4] [EXTERNAL] Re: Review of draft-ietf-nfsv4-rpc-tls04
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Dec 6, 2019, at 11:53 AM, David Noveck <davenoveck@gmail.com>
>>>>>> wrote:
>>>>>>> 
>>>>>>> On Fri, Dec 6, 2019 at 10:28 AM Tom Talpey <ttalpey@microsoft.com>
>>>>>> wrote:
>>>>>>>> -----Original Message-----
>>>>>>>> From: nfsv4 <nfsv4-bounces@ietf.org> On Behalf Of Chuck Lever
>>>>>>>> Sent: Friday, December 6, 2019 10:11 AM
>>>>>>>> To: David Noveck <davenoveck@gmail.com>
>>>>>>>> Cc: NFSv4 <nfsv4@ietf.org>
>>>>>>>> Subject: [EXTERNAL] Re: [nfsv4] Review of draft-ietf-nfsv4-rpc-tls04
>>>>>> 
>>>>>>>> Essentially, we want to require that the host separates
>>>>>>>> the encryption of each tenant's traffic.
>>>>>>> 
>>>>>>> I think the move from "user identiy domain" to "tenant" is helpful here even
>>>>>>> though you would have to explain what multipe tenants, which, as Tom
>>>>>>> points out, can alsooccur without virtalization per se, bein involved.
>>>>>> 
>>>>>> 
>>>>>> Fair 'nuf. To me "tenant" and "user identity domain" mean the same thing
>>>>>> in this context. In Linux, a tenant container is represented by a set of
>>>>>> namespaces, one of which controls the user identity mapping. So "user
>>>>>> identity domain" seems natural to me, but maybe not to others.
>>>>>> 
>>>>>> RFC 4949 does not have a convenient definition of "tenant."
>>>>>> 
>>>>>> RFC 7644 Section 6 comes close.
>>>>>> 
>>>>>> David Black, perhaps you might have thoughts based on your work on
>>>>>> network virtualization overlays ( RFCs 736[45] )?
>>>>> 
>>>>> I'm arguing the opposite - that there's no need to bring in "tenant" or
>>>>> "virtualization" or adding references to nvo, etc. Unless you have a very
>>>>> specific vulnerability in mind that this needs to cover.
>>>>> 
>>>>> In other words, keep it simple and at the highest-level abstraction possible.
>>>> I'm flexible, and philosophically agree that an abstract requirement
>>>> would be best. I just don't yet see how to make that happen. "Tenancy"
>>>> seems to me like an inseparable part of the discussion.
>>> 
>>> [replying from a different account]
>>> 
>>> I think "tenant" is a loaded word, especially when you seek an
>>> RFC-based definition. I understand the tenant container and namespace
>>> approach, but it's only one approach, and shouldn't be written into
>>> the protocol justification.
>>> 
>>> For example, the SMB3 protocol protects its traffic with per-user
>>> keys, and even safely mixes user traffic on a single connection
>>> because of this isolation. But this is implemented independent of
>>> containers and virtualization.
>> With RPCSEC GSS, each user gets its own key as well.
> 
> Indeed, yes.
> 
>> With TLS, a set of users shares a single host key. The constraint
>> we need to state here is how much key sharing is secure/recommended/
>> allowed.
> 
> I disagree - this is an implementation choice not a TLS requirement.
> This is the trap I think the draaft needs to avoid falling into.

What I meant is "With the current iteration of RPC-on-TLS,". I agree
TLS itself does not make a single key per client requirement.


> A single machine key is great for protecting HTTPS to a laptop, it
> covers traffic through unsafe networks and gives us a bit of server
> authentication. But NFS is a different scenario.
> 
>> In addition, Section 4.2 has this language:
>>>    In either of these modes, RPC user authentication is not affected by
>>>    the use of transport layer security.  Once a TLS session is
>>>    established, the server MUST NOT substitute RPC_AUTH_TLS, or the
>>>    remote identity used for TLS peer authentication, for existing forms
>>>    of per-request RPC user authentication specified by [RFC5531].
>> The document explicitly prohibits the use of these keys for making
>> authorization decisions about individual users. In other words, a
>> TLS identity in this case is not the same as an RPC user.
> 
> Right. But the language you quote is pretty vague. "Existing forms of
> per-request RPC user authentiction" I have to think about that long and
> hard, much less translate to a specific thing to MUST NOT do.

It does seem vague to the point of being unimplementable. I will have
to strengthen this paragraph significantly. Consider below:


>>>> If you have an example, that would help.
>>> 
>>> Well, it's the same thing - per-user NFS/RPC/TLS mounts, but it
>>> leaves out any mention of containers or namespaces or tenancy.
>>> Those are today's Linux approach, but they are by no means required
>>> to drive the protocol. I'm just suggesting the draft can say this
>>> without any of that baggage.
>> Again, I don't disagree with any of this. But I'm stuck when trying
>> to bridge the gap between "the draft can say this" and actually
>> writing the text. I'm not arguing with you, just trying to shake out
>> what it is we need to say in the document.
>>> A user then becomes an "authenticated principal", and the RPC/TLS
>>> connection may therefore be protected by a key derived from this
>>> authentication.
>> As above: RPC on TLS explicitly does not bind an RPC user to a TLS
>> identity in this iteration of the protocol. RPC users share the
>> encrypted TLS session. The TLS identity represents the client, not
>> the users.
> 
> But again, why not? Is that forbidden somehow? Or is it simply the
> way most OS's implement it?

The reason the current protocol does not bind the client certificate
to a particular user is because we want to enable encryption in the
following usage scenarios:

 - The client has no certificate

 - The client has a certificate that is shared amongst some or all
   of its users

 - Each user has her own certificate (or, the client has a single
   user which is indistinguishable from the host itself)

The problem is that, given the currently proposed protocol extension,
the server has no way to distinguish between the latter two cases.
IMO this is why the server MUST NOT treat the client's TLS identity
as identical to an RPC user in this iteration of the protocol.

I've cc'd my co-author for his thoughts, hoping he has had an
opportunity to follow this thread.


>>> Or, if the administrator allows, it can be a
>>> per-machine key, or shared in other ways.
>> That's the (only) model we are trying to express here. And perhaps
>> we need to take care not to prevent a future protocol iteration
>> from going further and binding a single RPC user to a TLS identity.
>>> But this would not be
>>> as secure as the former, and the implications need to be stated.
>> To state those implications, IMO we need to express the concept of
>> a set of one or more users that reside in a single user identity
>> domain -- ie, users that are administered in the same security realm.

--
Chuck Lever
chucklever@gmail.com