Re: [nfsv4] Benjamin Kaduk's Discuss on draft-ietf-nfsv4-rpc-tls-08: (with DISCUSS and COMMENT)

Benjamin Kaduk <kaduk@mit.edu> Thu, 08 October 2020 21:50 UTC

Return-Path: <kaduk@mit.edu>
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 A490A3A0CCA; Thu, 8 Oct 2020 14:50:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 udJczC3KssKg; Thu, 8 Oct 2020 14:49:59 -0700 (PDT)
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11]) (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 CE7E33A0CA8; Thu, 8 Oct 2020 14:49:58 -0700 (PDT)
Received: from kduck.mit.edu ([24.16.140.251]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id 098Lnsmd019726 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 8 Oct 2020 17:49:56 -0400
Date: Thu, 8 Oct 2020 14:49:53 -0700
From: Benjamin Kaduk <kaduk@mit.edu>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: draft-ietf-nfsv4-rpc-tls@ietf.org, The IESG <iesg@ietf.org>, nfsv4@ietf.org, nfsv4-chairs@ietf.org
Message-ID: <20201008214953.GC89563@kduck.mit.edu>
References: <159419140773.2153.2711644434582054796@ietfa.amsl.com> <10A7F6F5-3EF6-481A-AFD7-4C30A2F59E88@oracle.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <10A7F6F5-3EF6-481A-AFD7-4C30A2F59E88@oracle.com>
User-Agent: Mutt/1.12.1 (2019-06-15)
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/8EZH3WSHj1nJMEvnDR-0feuA_QI>
Subject: Re: [nfsv4] Benjamin Kaduk's Discuss on draft-ietf-nfsv4-rpc-tls-08: (with DISCUSS and COMMENT)
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: Thu, 08 Oct 2020 21:50:01 -0000

On Tue, Sep 01, 2020 at 11:26:21AM -0400, Chuck Lever wrote:
> 
> 
> > On Jul 8, 2020, at 2:56 AM, Benjamin Kaduk via Datatracker <noreply@ietf.org> wrote:
> > 
> > Benjamin Kaduk has entered the following ballot position for
> > draft-ietf-nfsv4-rpc-tls-08: Discuss
> > 
> > When responding, please keep the subject line intact and reply to all
> > email addresses included in the To and CC lines. (Feel free to cut this
> > introductory paragraph, however.)
> > 
> > 
> > Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
> > for more information about IESG DISCUSS and COMMENT positions.
> > 
> > 
> > The document, along with other ballot positions, can be found here:
> > https://datatracker.ietf.org/doc/draft-ietf-nfsv4-rpc-tls/
> > 
> > 
> > 
> > ----------------------------------------------------------------------
> > DISCUSS:
> > ----------------------------------------------------------------------
> > 
> > (8) Can we clarify the status of DNSSEC (or DANE) requirements?  Section 1
> > assumes that support for DNSSEC is already available in an RPC
> > implementation, but Section 7.1.1 says that "Clients [sic] implementors can
> > choose from" a list of things including DANE TLSA records.  Why would we
> > require DNSSEC support but not using the records if they're present?
> 
> OK, I'm parsing this comment more closely now.
> 
> The statement in Section 1 you refer to above is:
> 
>    The protocol specification in the current document assumes that
>    support for RPC, TLS, PKI, GSS-API, and DNSSEC is already available
>    in an RPC implementation where TLS support is to be added.
> 
> I hadn't counted this as a "requirement" since a BCP14 keyword is
> not used, and because it appears in the Introduction as background
> material.
> 
> Section 7.1.1 currently says this:
>                                                               Clients
>    implementers can choose from the following to mitigate STRIPTLS
>    attacks:
> 
>    *  A TLSA record [RFC6698] can alert clients that TLS is expected to
>       work, and provide a binding of hostname to X.509 identity.  If TLS
>       cannot be negotiated or authentication fails, the client
>       disconnects and reports the problem.
> 
>    *  Client security policy can require that a TLS session is
>       established on every connection.  If an attacker spoofs the
>       handshake, the client disconnects and reports the problem.  If
>       TLSA records are not available, this approach is strongly
>       encouraged.
> 
> Here, it is assumed that the RPC-over-TLS implementation has DNSSEC
> support. What is not assumed is that the peer always operates in
> an environment where the DNS administrator has configured TLSA
> records.
> 
> I'm open to suggestions on how to structure this section more clearly.

My main point (or question?) here is whether (or when) we require
RPC-over-TLS clients to perform TLSA queries when attempting STARTTLS.  The
current text in 7.1.1 comes across (at least to me) as a statement of fact:
if you want to protect against downgrade, TLSA records do that (when they
exist).  There is no requirement or suggestion to actually check for the
TLSA record and obtain that protection.  Now, making additional DNS queries
is not always great for performance, and if the client is running in an
opportunistic mode it may not care about the lack of downgrade protection,
so it's not a foregone conclusion that we should be putting in text like
"clients MUST check for the existence of a TLSA record for the target
server before initiating an RPC-over-TLS connection", but I do think we
should consider the question of what (if any) level of requirement is
appropriate and under what conditions.  (The flip side of this question is
that if we don't have any case where we require the use of the DNSSEC
support, we may not need to state that we assume it to be present.)

Thanks,

Ben