Re: [nfsv4] New Version Notification for draft-cel-nfsv4-rpc-tls-01.txt

Chuck Lever <chuck.lever@oracle.com> Tue, 02 April 2019 15:15 UTC

Return-Path: <chuck.lever@oracle.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 C125912018E for <nfsv4@ietfa.amsl.com>; Tue, 2 Apr 2019 08:15:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.3
X-Spam-Level:
X-Spam-Status: No, score=-4.3 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, UNPARSEABLE_RELAY=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=oracle.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 TIk6x5P2oKfB for <nfsv4@ietfa.amsl.com>; Tue, 2 Apr 2019 08:15:46 -0700 (PDT)
Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) (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 00B2E120191 for <nfsv4@ietf.org>; Tue, 2 Apr 2019 08:15:45 -0700 (PDT)
Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x32ExFVV166298; Tue, 2 Apr 2019 15:15:44 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=content-type : mime-version : subject : from : in-reply-to : date : cc : content-transfer-encoding : message-id : references : to; s=corp-2018-07-02; bh=ZQOv9wbU6l8iVfiS6SZEK/1Wj1GBkPVFcPY2ilN3MLE=; b=J8yKAgK6+QSfh2HTDqKHzFjbHC5BADP1t5nG+p1EKDhckvZpX7+U7I3WzdHQQqR+yfWs wQ+JNDKaw8zb1QKESNgEOUgO1F+4/w/b7BUZTiQuWs1CjABr2C+PMl4072bdtt6hsN65 nk91K9vV8BrbnTEUpjgoHh4r/Y+1ouISDjUKD98BVO24/wcb6lUB5xa9oDvv9c7zmSXZ bbqRtgbUEI+HF+j78FAwhD5Z+soI7EYC1qN4jFVsOdYJWReS2Z1ChXl+kcxDR4A91Fwu 2JemmPC6XRBrAAQ7ah5eJneLqHWC0lsvpHKlIBlzV98LsefGG2CPV8lXsbc6h7ajq58X CA==
Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by aserp2120.oracle.com with ESMTP id 2rj0dnh209-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 02 Apr 2019 15:15:44 +0000
Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x32FFYqR187839; Tue, 2 Apr 2019 15:15:43 GMT
Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userp3020.oracle.com with ESMTP id 2rm8f5jakk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 02 Apr 2019 15:15:43 +0000
Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id x32FFgNP001785; Tue, 2 Apr 2019 15:15:42 GMT
Received: from anon-dhcp-171.1015granger.net (/68.61.232.219) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 02 Apr 2019 08:15:41 -0700
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 12.2 \(3445.102.3\))
From: Chuck Lever <chuck.lever@oracle.com>
In-Reply-To: <CAN-5tyEwvjSD59XhKdqshN3F57avh=3uOGjOCE5vf8R4u2FA4Q@mail.gmail.com>
Date: Tue, 02 Apr 2019 11:15:40 -0400
Cc: NFSv4 <nfsv4@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <C7FFE084-0192-40F1-929D-E9DA1F4BBAE7@oracle.com>
References: <154264272736.5235.8955444239583271708.idtracker@ietfa.amsl.com> <CO2PR0601MB7597A7490C43DAE5A3268E6B5D80@CO2PR0601MB759.namprd06.prod.outlook.com> <39802AA5-3F70-48C7-824B-CAC0FB871016@oracle.com> <CADaq8jc82bfxpjxz_f6Uy-4c0yazJujOrKo+TejPkx-q6qq_3Q@mail.gmail.com> <1480794517.422703.1553504031783.JavaMail.zimbra@desy.de> <4F7BC6A0-50F9-47BC-8465-28833835E7F6@oracle.com> <1119874674.601037.1553546666143.JavaMail.zimbra@desy.de> <946EFDD8-F04D-49CD-A1C8-D8E8A6D5EE35@oracle.com> <2020506870.740381.1553612716598.JavaMail.zimbra@desy.de> <CAN-5tyGggDUe2DNSjRc6vAyXgGo4LVwYVK5zmTOyr0soPFVKrQ@mail.gmail.com> <3705AA25-10DF-43BF-BE1D-B0BE27F705DE@eggert.org> <0E00BED9-74D4-4594-A7AC-FCD624461DD7@eggert.org> <880CC259-A82A-401F-A81D-5FCD6A9758B3@oracle.com> <SN4PR2101MB0736EF7A385F5D95107D4118A05F0@SN4PR2101MB0736.namprd21.prod.outlook.com> <3A634328-B190-473B-A6D7-C5878CC2654B@oracle.com> <SN4PR2101MB073663820F28F2AAA8766E38A05A0@SN4PR2101MB0736.namprd21.prod.outlook.com> <D43B092E-03D1-470F-AF57-1E9416E8518E@oracle.com> <CAN-5tyFU_9v=OQcvEfkC-YLJZTEenRyNa67YPJBBnNG8g0EsTQ@mail.gmail.com> <1362131D-77D7-4BF0-AD50-9B775508F439@oracle.com> <CAN-5tyEReyhjJn60QtqS4amMtz8B1W6Z7qpoXKWZLDeK2k0CYQ@mail.gmail.com> <BA8346C3-F491-42B6-8059-6DDAE52C58BA@oracle.com> <CAN-5tyEwvjSD59XhKdqshN3F57avh=3uOGjOCE5vf8R4u2FA4Q@mail.gmail.com>
To: Olga Kornievskaia <aglo@umich.edu>
X-Mailer: Apple Mail (2.3445.102.3)
X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9215 signatures=668685
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1904020102
X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9215 signatures=668685
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1904020102
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/uq6ETr1P8rzxiZrNwysk5w1bB14>
Subject: Re: [nfsv4] New Version Notification for draft-cel-nfsv4-rpc-tls-01.txt
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: Tue, 02 Apr 2019 15:15:51 -0000


> On Apr 2, 2019, at 10:28 AM, Olga Kornievskaia <aglo@umich.edu> wrote:
> 
> Hi Chuck,
> 
> First of all I apologizes for reading an out-dated version of the draft.
> 
> There are still several things I disagree with and some questions that I have:
> 
> 1. Encryption offload. I think it's unfair to list this as a benefit
> of switching to TLS from tradition encryption methods. TLS adds a very
> costly operation (public key encryption) which to reduce the impact on
> performance needs to leverage things like offload engines. The same
> link talks about how all modern CPUs have hardware support for
> symmetric key ciphers like AES which speeds things up. In my opinion,
> this list item should be removed.

TLS offload actually exists. GSS does not give us any practical
path for offloading encryption and decryption. If an example of
a commodity part that provides GSS offload can be identified,
I'll consider removing this bullet.


> -- what's a transient client?

An example is a guest's laptop.


> 2. "Per-client deployment and administrative costs are not scalable"
> (I'm assuming it means deploying keytabs). Yet the spec is talking
> about the use of host certificates. If existing design is not scalable
> so will the design with host certificates (or user certificates) as it
> requires the same deployment. In my opinion, this bullet should be
> removed (and so it the 3rd list item that talks about CPU cost of
> encryption).

Certificates on RPC clients are optional. In deployment scenarios
that don't provide client certificates, administrative cost is
lower.

I'll change the bullet to refer to "clients" instead of "host
systems".


> 3. Section 4.2.3 "Advanced forms of RPC authentication". I'm surprised
> to see this here because of the wording in Section 1. Specifically it
> says: "An alternative approach is to employ transport layer security
> mechanism". Here alternative was to the GSS mechanism which was listed
> as "hard to use". So nowhere was there a talk that TLS connection can
> be used with a GSS mechanism. Is this section suppose to be about the
> fact that RPCSEC GSS besides authentication also provides an encrypted
> connection? Then I think the section title should be changed to
> "RPCSEC GSS secure connection establishment"?   This section,blurs the
> lines of RPC identify authentication via GSS identities and the TLS
> authentication. In previous two section, it wasn't discussed what kind
> of RPC authentication would happen on top of the TLS connection. I
> think this whole section should be removed. Because it basically says
> there is no need to use GSS privacy/integrity since underlying TLS
> connection already provides that and since TLS is suppose to be
> alternative to GSS so why combined it.

We have to discuss the use of channel binding somewhere, and
we have to discuss the double host authentication because TLS
has a host authentication step and so does GSS. I don't see any
discussion of user authentication here.

I'll change the section title.


> 4. Section 5 is about TLS authentication and PKI identities. I find it
> confusing the use of RPC client. RPC client has RPC identities from
> the RPC RFC. Should we use TLS client here instead?
> 
> -- what is a TLS identifier? If it's defined in the TLS spec can we
> either copy a definition or provide a reference for it?

I'm looking for a generic term that encapsulates certificate,
PSK, or token binding to mean the identity of the peer host.
Anyone know of a appropriate term to use for that?


> -- If an (RPC/NFS) server suppose to make decisions about executing an
> RPC/NFS request based on the PKI identify shouldn't there be a talk
> about how to map the PKI identify into the NFSv4 identify?

RPC over TLS is strictly about encryption at the RPC layer. It
has nothing to do with the RPC user, and NFSv4 has no awareness
that TLS is in use at the transport layer.

The server may determine whether to accept or reject a connection
request based on the client's identity. That identity is not used
to authorize individual RPC requests.


> other comments in-line.
> 
> On Mon, Apr 1, 2019 at 6:58 PM Chuck Lever <chuck.lever@oracle.com> wrote:
>> 
>> 
>> 
>>> On Apr 1, 2019, at 4:31 PM, Olga Kornievskaia <aglo@umich.edu> wrote:
>>> 
>>> On Mon, Apr 1, 2019 at 1:50 PM Chuck Lever <chuck.lever@oracle.com> wrote:
>>>> 
>>>> Olga, thanks for your comments.
>>>> 
>>>> 
>>>>> On Apr 1, 2019, at 12:06 PM, Olga Kornievskaia <aglo@umich.edu> wrote:
>>>>> 
>>>>> Comments about the draft-1 and section 4.3 Authentication.
>>>>> 
>>>>> 1. Why is there no option of no client authentication and simply using
>>>>> server-side authentication and using AUTH_SYS on top of it (and
>>>>> perhaps this is addressed by the 2nd editorial comment in the [] but
>>>>> the lack including this as an option bothered me). I think this is the
>>>>> most useful option to be considered.
>>>> 
>>>> I quite agree that it is the most useful. I don't see where we are
>>>> specifically excluding that option, however.
>>> 
>>> Ok I guess I have issues with wording. That section talks about "host
>>> and user authentication". What is "host" here? Is this the NFS server
>>> or is this a client machine where a "user" might execute NFS
>>> operations? I really hope that "host" means an NFS server and it's the
>>> NFS server that will be authenticated via TLS (which means a
>>> server-side certificate will be used).
>> 
>> I thought that "host authentication" had an unambiguous meaning.
>> It means that the peer host is authenticated.
>> 
>> RPCSEC GSS performs host authentication using the service principals
>> on both peers.
>> 
>> With TLS, AIUI, the client can always authenticate the server, because
>> the server is required to have an identity (typically a certificate).
>> The server can authenticate a connecting client if the client has an
>> identity and presents it during the TLS handshake.
>> 
>> I can add "host authentication" and "user authentication" in the
>> Terminology section if people feel that would be helpful. Or should
>> I use "machine authentication" instead of "host authentication" ?
> 
> With the new organization of the draft I don't have those objections.
> 
>> 
>> 
>>> That leads to Option 1 wording.
>>> It's not clear which side would used a self-signed certificate and why
>>> we right away restricting/suggestion the type of the certificate. I
>>> think it would be better to say: "To establish a secure TLS connection
>>> at least a server-side PKI certificate is required and can provides
>>> server authentication. Statement: "end-to-end encryption is provided
>>> client certificate material" ... I don't think that's what end-to-end
>>> encryption typically means. I would rather say. "Mutual authentication
>>> is provided when client also presents a PKI certification during a TLS
>>> handshake." (or something of that sorts).
>>> 
>>> My wording of the options:
>>> TLS server-side authentication only with AUTH_SYS identity: To
>>> establish a secure TLS connection a server-side PKI certificate is
>>> required and provides server authentication (either self-signed or
>>> CA-certified certificates can be used). After TLS connection is
>>> established, the RPC client uses AUTH_SYS to identify users with the
>>> guarantee that the UID and GID values cannot be observed or altered in
>>> transit.
>>> 
>>> TLS mutual authentication with AUTH_SYS:  During TLS negotiation, the
>>> client identifies itself to the server with a PKI certificate.  As
>>> with encryption-only with AUTH_SYS, UID and GID values are well
>>> protected.  In addition, the server can use the client's PKI identity
>>> to perform additional authorization of this client's requests.
>>> 
>>> TLS server-side authentication only with RPCSEC GSS Kerberos identify:
>>> To establish a secure TLS connection a server-side PKI certificate is
>>> required and provides server authentication (either self-signed or
>>> CA-certified certificates can be used). The RPC client uses Kerberos
>>> to identify the client host and its users, but does not request GSS
>>> integrity or privacy services as the connection is already secured.
>>> 
>>> TLS mutual authentication with AUTH_NONE:  Each user establishes her
>>> own TLS context with the server, identified by a user PKI certficate.
>>> There is no need for any additional information at the RPC layer, so
>>> the RPC client can use the simplest authentication flavor for RPC
>>> transactions.  This configuration is not typical for NFS deployments,
>>> but it does enable strong certificate-based user authentication, which
>>> is currently not afforded by GSS.
>> 
>> This appears to be based on an outdated version of this document.
>> The latest version is here:
>> 
>> https://datatracker.ietf.org/doc/draft-ietf-nfsv4-rpc-tls/
>> 
>> I hope Section 4.2 of the latest revision answers your questions.
>> 
>> 
>>> If by "host" you don't mean the "server" and mean client's machine.
>>> And for the server we are not implying that it's OK to use self-signed
>>> certificates (which I really hoped we were not suggestion).
>>> 
>>> Then the options I propose should be:
>>> 1. TLS server-side authentication + AUTH_SYS user identity: this is
>>> the favorable option of no certificates on the client at all and only
>>> server is authenticated.
>>> 
>>> 2. TLS mutual authentication with machine certificates + AUTH_SYS user
>>> identity . This is where I think a suggestion to use a self-signed
>>> certificate can be made (however see my view below that I don't this
>>> client-side authentication gains us anything).
>>> 
>>> 3. TLS mutual authentication with user certificates + AUTH_SYS user identify
>>> 
>>> 4. TLS mutual authentication with machine certificate + Kerberos user identify
>>> 
>>> 5. TLS mutual authentication with user certificates + Kerberos user identify
>>> 
>>> 6. TLS mutual authentication with user certificates + AUTH_NONE
>>> 
>>> 
>>> 
>>>>> I don't see how adding
>>>>> self-signed client certificates adds to the security of the system but
>>>>> instead this adds a costly PKI operation that would impact the time it
>>>>> takes to establish a secure connection.
>>>> 
>>>> Self-signed certificates allow a form of weak authentication by the
>>>> server. At least it can audit which client is connecting. The
>>>> discussion of self-signed certs can be removed if it's not something
>>>> we want to explicitly commend.
>>> 
>>> In my personal option, adding self-signed (user) authentication
>>> provides no benefits as there no attack that it protects from. We are
>>> not proposing to use the identity gotten from the client-side of the
>>> TLS connection and map it to an nfs4 identity, are we (cue in the SPKM
>>> troubles here).
>> 
>> IIRC we eventually decided not to support the use of user certs
>> for RPC on TLS.
> 
> I don't think that's true as the Section 5.2 talks it.

Where? I see only discussion of the RPC client's identity.


> While there is
> definitely a lot more information about what should go into the user
> certificate and a concrete PKI identity : "an RPC client is uniquely
> identified by the tuple (serial number of presented client
> certificate;Issuer)" there is nothing about how to map this to the
> NFSv4 identify.

That's because the NFSv4 protocol is not aware of the use of TLS.
There is no connection between NFSv4 identities and TLS. If a user
certificate is employed, it is used strictly for host authentication.


--
Chuck Lever