Re: [nfsv4] AD review of draft-ietf-nfsv4-rpc-tls

Chuck Lever <chuck.lever@oracle.com> Sun, 12 April 2020 16:52 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 D44F93A100C for <nfsv4@ietfa.amsl.com>; Sun, 12 Apr 2020 09:52:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.268
X-Spam-Level:
X-Spam-Status: No, score=-2.268 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.168, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_PASS=-0.001, UNPARSEABLE_RELAY=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 sNS4kX67PvBg for <nfsv4@ietfa.amsl.com>; Sun, 12 Apr 2020 09:52:21 -0700 (PDT)
Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) (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 941D03A1009 for <nfsv4@ietf.org>; Sun, 12 Apr 2020 09:52:21 -0700 (PDT)
Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 03CGnH01188742; Sun, 12 Apr 2020 16:52:20 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-2020-01-29; bh=+UXl/wGV8ay2lS9Lvw367VZhZGKeZ30oOnR2YTupII4=; b=t/cZRekLearMyiqPX4fUB7AA8tccXbFVtmbPJEFKZ2Ba+Oky7qtx9cCsUN6xWu4/gRJ2 scYj0F2zBW/Qp/N1t4xBQfpLBGnRL37hmUgohL23vvI5uCjECSj4bapEAwnGnfHGqS2t 9qUQ+o9HNApWEv4pWNOH4y6hr3gylmuVnVI6CE24YY6I8OoYfbjqfgS6DpNEw5Ouz1IO AlPSvtiOpZiFDf9daHL7evQBrEeR/KKhbmuL35evlivxtjX612nHG0T/3SJeuszkSOwE QX7fZS5lR2MFMFH3ahEq6+d4R8zt+4dD7VCTl65NoNDMwJPZB79rgFGl0sGmVuBtw8bj 0Q==
Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2120.oracle.com with ESMTP id 30b6hpbday-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 12 Apr 2020 16:52:20 +0000
Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 03CGlcFJ068000; Sun, 12 Apr 2020 16:50:19 GMT
Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3030.oracle.com with ESMTP id 30bqcbhgmw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 12 Apr 2020 16:50:19 +0000
Received: from abhmp0011.oracle.com (abhmp0011.oracle.com [141.146.116.17]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 03CGoIiw008628; Sun, 12 Apr 2020 16:50:19 GMT
Received: from anon-dhcp-153.1015granger.net (/68.61.232.219) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 12 Apr 2020 09:50:18 -0700
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
From: Chuck Lever <chuck.lever@oracle.com>
In-Reply-To: <20200412163238.GP88064@mit.edu>
Date: Sun, 12 Apr 2020 12:50:17 -0400
Cc: "nfsv4@ietf.org" <nfsv4@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <93C777E4-1C58-4307-9943-680E2527A7A3@oracle.com>
References: <FA2D661E-A787-4772-8F9D-A7594AE82F38@oracle.com> <CADaq8jciLWhL_FMmPcsdrVVS=9Gee8SYAsqi36H5v9iuNo7Pgw@mail.gmail.com> <E414F060-532B-4017-AC7E-5869884B2153@oracle.com> <e5796752c6204ffdd78503b1a9c9045cfd761e52.camel@gmail.com> <F9AC44CE-750E-416A-944D-E2382524020E@oracle.com> <19d2513b1093fc71223e361afca90d1a1ad6183a.camel@gmail.com> <35D9AEC0-7961-4C44-9715-26409D6182E4@oracle.com> <QB1PR01MB36492235E6EF60129A0329D7DDDE0@QB1PR01MB3649.CANPRD01.PROD.OUTLOOK.COM> <20200412023716.GN88064@mit.edu> <A302DD40-DAA7-4473-AB5F-0950533A3D5E@oracle.com> <20200412163238.GP88064@mit.edu>
To: Benjamin Kaduk <kaduk@mit.edu>
X-Mailer: Apple Mail (2.3445.104.11)
X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9589 signatures=668686
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2003020000 definitions=main-2004120153
X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9589 signatures=668686
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 mlxlogscore=999 clxscore=1015 mlxscore=0 phishscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2003020000 definitions=main-2004120153
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/s0cXPL1aD_BGGFIKCfb5VcFZAiY>
Subject: Re: [nfsv4] AD review of draft-ietf-nfsv4-rpc-tls
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, 12 Apr 2020 16:52:23 -0000


> On Apr 12, 2020, at 12:32 PM, Benjamin Kaduk <kaduk@mit.edu> wrote:
> 
> On Sun, Apr 12, 2020 at 12:27:14PM -0400, Chuck Lever wrote:
>> Hi Ben -
>> 
>>> On Apr 11, 2020, at 10:37 PM, Benjamin Kaduk <kaduk@mit.edu> wrote:
>>> 
>>> On Fri, Apr 10, 2020 at 03:33:51PM +0000, Rick Macklem wrote:
>>>> Chuck Lever wrote:
>>>> [stuff snipped]
>>>>> Then I started thinking about TCP.
>>>>> 
>>>>> Since we have implementations that use the same connection to transport
>>>>> multiple RPC programs, we have to make a different statement. What should
>>>>> that statement be?
>>>>> 
>>>>> I wondered again about whether it makes sense to permit or encourage
>>>>> multiple TLS sessions on the same connection.
>>>>> 
>>>>> If you wanted to, how would you establish a second TLS session? Because
>>>>> of the "no clear-text RPCs after a TLS session has been established"
>>>>> stipulation, the client would have to perform a bunch of AUTH_TLS probes
>>>>> _before_ sending any ClientHello messages.
>>>>> 
>>>>> (And in any event we probably want rpc-tls to discuss what should happen
>>>>> if there is traffic on the connection between the AUTH_TLS probe and
>>>>> the ClientHello message).
>>>> I think that multiple AUTH_TLS probes before sending ClientHello
>>>> is both difficult to implement and confusing.
>>>> 
>>>> The AUTH_TLS probe serves two purposes well.
>>>> 1 - It establishes whether or not RPC-over-TLS is supported by the server.
>>>> 2 - If supported, it triggers a TLS handshake for the first session.
>>>> 
>>>> If you do want multiple TLS sessions on the same TCP connection (I'll assume TLS
>>>> allows this?), then I think a separate kind of AUTH_TLS Null RPC which is done
>>> 
>>> TLS doesn't really allow this.
>> 
>> I want to understand how to word the text in rpc-tls. "this" here means
>> "multiple TLS sessions on the same TCP connection" ? What happens when
>> the client peer sends a second ClientHello message on a connection with
>> an established TLS session? I haven't been able to find a firm description
>> of how a server is supposed to respond in this case.
> 
> There's two possibilities that I see:
> 
> (1) the second ClientHello is unencrypted, in which case the server sees a
> TLS record whose deprotection fails and aborts the connection
> 
> (2) the second ClientHello is encrypted with the current record-protection
> keys, in which case a TLS 1.2 server starts the "renegotiation" process and
> a TLS 1.3 server aborts the connection for a protocol violation.
> 
> TLS 1.2 renegotiation semantics are not particularly well specified, which
> is part of why renegotiation was removed from TLS 1.3.  In particular, many
> people will argue that that the "renegotiated" handshake would completely
> replace the original one in a logical sense, so that only one client
> authentication would be active (the latest one).  What is clear is that
> only one cryptographic context would be active, so you could not interleave
> TLS records on the TCP stream that are protected by different encryption
> keys.
> 
> Does that help?

Yes this explanation does help, thank you! rpc-tls requires the use of TLS
1.3 or later, so it needn't be concerned with the TLS 1.2 renegotiation
case at all.

The RPC-on-TLS protocol already assumed only a single TLS session per
connection. It will simplify the text, I think, that the multiple
session case, though not supported, is right off the table.

Within the next day or two I intend to post updated text for Sections 4.1
and 5.1, based on the conversation from the past few days, for review and
comment.


--
Chuck Lever