Re: [nfsv4] questions w.r.t RPC-over-TLS draft
Chuck Lever <chuck.lever@oracle.com> Tue, 21 January 2020 15:55 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 A0D9B120818 for <nfsv4@ietfa.amsl.com>; Tue, 21 Jan 2020 07:55:51 -0800 (PST)
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 SOxKD9QOI6RI for <nfsv4@ietfa.amsl.com>; Tue, 21 Jan 2020 07:55:45 -0800 (PST)
Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) (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 7C9CB120170 for <nfsv4@ietf.org>; Tue, 21 Jan 2020 07:55:45 -0800 (PST)
Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.27/8.16.0.27) with SMTP id 00LFrxr3065892; Tue, 21 Jan 2020 15:55: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-2019-08-05; bh=SECO75KEqQFSeQJ/zSlPlflAGIxr/qg1AX+LQp2uvjU=; b=fa+MCiIbLoNBe7H989n3TXamLXRiA3RI1i8Dr0QD0Dvn1Bldj/19KOI1DYmOUgSLFojU aPnf5UWir2qJ5mzKCpBzpTDiqqWHEhJnDKI2wyqlL3ytsYCEK1OpOcXueSqSe0HUYW07 JRDh79y6D51FPf9DOD0D/IAV19Sjr8v07rzHFSNgYE53gHTUvYPk7Pcy4FNVYZfPQBrW BR1uLVi5503r2Nh4oWdq+uZOUrGWaRp4xGPYO18JtwX4Wm+rw7HqIuzXaWHdOjxMk6jn eE5YBVR8+7PBGLKa/SiAbDsGOi155k07x0u5XGaxfceM6F2mb2YZh6eYWTyIQsexbKXr uA==
Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2130.oracle.com with ESMTP id 2xkseue1n7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 21 Jan 2020 15:55:44 +0000
Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.27/8.16.0.27) with SMTP id 00LFsvm9020769; Tue, 21 Jan 2020 15:55:44 GMT
Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3030.oracle.com with ESMTP id 2xnsa8vv7y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 21 Jan 2020 15:55:44 +0000
Received: from abhmp0004.oracle.com (abhmp0004.oracle.com [141.146.116.10]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 00LFtfMR031638; Tue, 21 Jan 2020 15:55:42 GMT
Received: from anon-dhcp-152.1015granger.net (/68.61.232.219) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 21 Jan 2020 07:55:41 -0800
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: <YQBPR0101MB1427364BAFED4564FD0FD67BDD320@YQBPR0101MB1427.CANPRD01.PROD.OUTLOOK.COM>
Date: Tue, 21 Jan 2020 10:55:40 -0500
Cc: "nfsv4@ietf.org" <nfsv4@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <0FF8087F-E4C6-4ABB-8F92-6224724939FC@oracle.com>
References: <YQBPR0101MB142761C64D6A842CB99EADC0DD320@YQBPR0101MB1427.CANPRD01.PROD.OUTLOOK.COM> <0E8060A0-B8DA-462E-915E-9121824A7A3D@oracle.com> <YQBPR0101MB1427364BAFED4564FD0FD67BDD320@YQBPR0101MB1427.CANPRD01.PROD.OUTLOOK.COM>
To: Rick Macklem <rmacklem@uoguelph.ca>
X-Mailer: Apple Mail (2.3445.104.11)
X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9506 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-1911140001 definitions=main-2001210127
X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9506 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-1911140001 definitions=main-2001210127
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/7l8pXmh2E-W9M0zxnL7C4QnXuUs>
Subject: Re: [nfsv4] questions w.r.t RPC-over-TLS draft
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, 21 Jan 2020 15:55:52 -0000
> On Jan 20, 2020, at 6:08 PM, Rick Macklem <rmacklem@uoguelph.ca> wrote: > > Chuck Lever wrote: >> May I add the FreeBSD implementation of RPC/TLS to Section 6? Did I >> already ask you this and simply forgot to add it? > Definitely a "work in progress" at this time, so you can decide if it should be > mentioned. (I am making pretty good progress, but the FreeBSD kernel TLS > only works for send at this time, unless you have hardware that does TOE. > It may be a few months before the kernel TLS can do receive, so that it > actually works.) > >>> On Jan 19, 2020, at 7:30 PM, Rick Macklem <rmacklem@uoguelph.ca> wrote: >>> >>> Hi, >>> >>> I've started implementing RPC-over-TLS for NFS and have run into a couple >>> of questions related to the draft (#4, I haven't downloaded #5). >>> >>> 1 - Given this description... >>> The flavor value of the verifier received in the reply message from >>> the server MUST be AUTH_NONE. The bytes of the verifier's string >>> encode the fixed ASCII characters "STARTTLS". >>> >>> Is the verifier coded as: >>> A: verifier length: 8 >>> bytes STARTTLS >>> OR >>> B: verifier length: 12 >>> string length: 8 >>> bytes STARTTLS >>> >>> ie. Is there supposed to be a string length as coded by xdr_string() in the >>> verifier? (It is the words "verifier string" the above that I find confusing.) >> >> I agree, "string" is confusing. It should rather say "fixed-length >> opaque". > This might still hint at an extra length field. A "fixed-length opaque" is explicitly defined in Section 3.9 of RFC 1832. No length field. > How about something like "The body of the verifier consists of the 8 ASCII bytes STARTTLS"? > (Btw, this is how I had coded it and then, when I read "verifier string" I wasn't sure.) OK, here's what I've changed it to: > The flavor value of the verifier received in the reply message from > the server MUST be AUTH_NONE. The length of the verifier's body > field is eight. The bytes of the verifier's body field encode the > ASCII characters "STARTTLS" as a fixed-length opaque. Thoughts? >> Section 7.2 of RFC 1831 has this: >> >> enum auth_flavor { >> AUTH_NONE = 0, >> AUTH_SYS = 1, >> AUTH_SHORT = 2 >> /* and more to be defined */ >> >> }; >> >> struct opaque_auth { >> auth_flavor flavor; >> opaque body<400>; >> >> }; >> >> The flavor field contains AUTH_NONE (0), the opaque's length field >> contains 8, and the opaque's data contains the ASCII characters >> "STARTTLS". >> >> >>> Then there is this sentence... >>> AUTH_ERROR. If the client sends a STARTTLS after it has sent other >>> non-encrypted RPC traffic or after a TLS session has already been >>> negotiated, the server MUST silently discard it. >>> >>> Does "other non-encrypted RPC traffic" refer specifically to traffic between >>> the NULL RPC with AUTH_TLS and the STARTTLS or does it refer to non-NULL RPC traffic >or?? >> >> The client can't start a TLS session on a connection after it >> has sent non-NULL RPC traffic. > Cool. Maybe it needs to say that the NULL RPC with authentication flavor of AUTH_TLS > constitutes a STARTTLS operation. It's meant only to indicate that the sender supports RPC-over-TLS. Is that really the same as a STARTTLS operation? The replacement text reads: > If an RPC client attempts to use AUTH_TLS for anything other than the > NULL RPC procedure, the RPC server MUST respond with a reject_stat of > AUTH_ERROR. If the client initiates a TLS session after it has sent > unencrypted non-NULL RPC traffic the server MUST silently discard it. > That still doesn't really clarify if a NULL RPC with authentication flavor of AUTH_NULL > is also allowed before the NULL RPC with authentication flavor of AUTH_TLS. It seems to me the new text clearly allows an unencrypted NULL RPC at any time. I'm not sure that's even feasible, but it's an implementer's choice. > (FreeBSD currently uses NULL RPCs with AUTH_NULL as a "ping" to figure out if > the server is up, however it uses a separate TCP connection to do this, so it shouldn't > matter if it allowed on the same connection.) The NULL with AUTH_TLS should be able to act as both announcing support for RPC-over-TLS and a ping for a particular RPC Program. >>> I am also confused about what "sends a STARTTLS" actually means? >>> (I'll admit I know nothing about TLS and can only find STARTTLS mentioned w.r.t. >>> an SMTP email command.) >>> >>> Does this mean that the 8 bytes STARTTLS goes on the wire immediately after >>> a NULL RPC with AUTH_TLS or does it mean the 8 bytes STARTTLS goes in a >>> TCP RPC message (an 8byte message as indicated by the RPC over TCP record >>> mark, which would normally be too small) or does "sends a STARTTLS" just saying >>> that the TLS handshake should come immediately after the NULL RPC with AUTH_TLS? >> >> >> "sends a STARTTLS" means "initiates a TLS session." > That clarifies it. It might be even clearer if it said "initiates a TLS handshake"? > Alternately, defining the NULL RPC with authentication flavor AUTH_TLS as a STARTTLS > command would do so as well. > > One slight problem here is that the above would seem to be TCP specific, since it assumes > ordering, but is not in the TCP section. I know nothing about the UDP case and have no intention of implementing it, but it does seem that is TCP specific? (Would the UDP variant be non-NULL RPC traffic from the same client > IP address or do you just not worry about this for UDP?) Agreed, that language should probably be moved to Section 5.1.1. -- Chuck Lever
- [nfsv4] questions w.r.t RPC-over-TLS draft Rick Macklem
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Rick Macklem
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Mkrtchyan, Tigran
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Chuck Lever
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Rick Macklem
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Chuck Lever
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Rick Macklem
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Benjamin Kaduk
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Mkrtchyan, Tigran
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Rick Macklem
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Benjamin Kaduk
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Rick Macklem
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Chuck Lever
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft Chuck Lever
- Re: [nfsv4] questions w.r.t RPC-over-TLS draft David Noveck