Re: [kitten] [nfsv4] draft-ietf-nfsv4-rpcsec-gssv3: request for review

Nico Williams <nico@cryptonector.com> Fri, 01 August 2014 22:15 UTC

Return-Path: <nico@cryptonector.com>
X-Original-To: kitten@ietfa.amsl.com
Delivered-To: kitten@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 797B01B28B6; Fri, 1 Aug 2014 15:15:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.666
X-Spam-Level:
X-Spam-Status: No, score=-1.666 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, IP_NOT_FRIENDLY=0.334, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=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 EjRK8qKUALbF; Fri, 1 Aug 2014 15:15:38 -0700 (PDT)
Received: from homiemail-a87.g.dreamhost.com (sub4.mail.dreamhost.com [69.163.253.135]) by ietfa.amsl.com (Postfix) with ESMTP id 4A8C61A013B; Fri, 1 Aug 2014 15:15:38 -0700 (PDT)
Received: from homiemail-a87.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a87.g.dreamhost.com (Postfix) with ESMTP id B85C226C063; Fri, 1 Aug 2014 15:15:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=cryptonector.com; h=date :from:to:cc:subject:message-id:references:mime-version :content-type:in-reply-to:content-transfer-encoding; s= cryptonector.com; bh=0qeus2tHwHW/QddVl2BgsoPYUKM=; b=PaUqt1F0BPB fmpA4JztrpCkRB0GDIADdtD7kN71ZQ7HgX1xyTmnWKfEhkIXHO1zKLN/9O8d9jv1 N+TIfHPoVIy2u0KW0UMn9MpKvTXs1qRHAEiuLy/ek5ugY+vr2Z3zU6XesxboReZW 8+bEJyqtv2bYHFjNsjcR52cxyX6AgUcs=
Received: from localhost (108-207-244-174.lightspeed.austtx.sbcglobal.net [108.207.244.174]) (Authenticated sender: nico@cryptonector.com) by homiemail-a87.g.dreamhost.com (Postfix) with ESMTPA id 3E40626C05E; Fri, 1 Aug 2014 15:15:37 -0700 (PDT)
Date: Fri, 01 Aug 2014 17:15:36 -0500
From: Nico Williams <nico@cryptonector.com>
To: "Adamson, Andy" <William.Adamson@netapp.com>
Message-ID: <20140801221535.GA3579@localhost>
References: <DC941FEB-725A-49E1-8C38-FF765454827C@netapp.com> <alpine.GSO.1.10.1407301239260.21571@multics.mit.edu> <20140801055401.GA7409@localhost> <8FD0C272-6FD3-44FE-BD3D-BAB220E0FF13@netapp.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
In-Reply-To: <8FD0C272-6FD3-44FE-BD3D-BAB220E0FF13@netapp.com>
User-Agent: Mutt/1.5.21 (2010-09-15)
Content-Transfer-Encoding: quoted-printable
Archived-At: http://mailarchive.ietf.org/arch/msg/kitten/stXpRQscg3jUfYA7s_OI8OYNT3A
Cc: "kitten@ietf.org" <kitten@ietf.org>, NFSv4 <nfsv4@ietf.org>
Subject: Re: [kitten] [nfsv4] draft-ietf-nfsv4-rpcsec-gssv3: request for review
X-BeenThere: kitten@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Common Authentication Technologies - Next Generation <kitten.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/kitten>, <mailto:kitten-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/kitten/>
List-Post: <mailto:kitten@ietf.org>
List-Help: <mailto:kitten-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/kitten>, <mailto:kitten-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 01 Aug 2014 22:15:39 -0000

On Fri, Aug 01, 2014 at 08:28:25PM +0000, Adamson, Andy wrote:
> On Aug 1, 2014, at 1:54 AM, Nico Williams <nico@cryptonector.com> wrote:
> > On Thu, Jul 31, 2014 at 06:38:09PM -0400, Benjamin Kaduk wrote:
> >> Hmm, this seems to have gotten rather long.  
> 
> Well, it’s two pages shorter than draft-williams-rpcsecgssv3-02.txt (!)

:)

> >> Multi-principal authentication
> >> 
> >> This draft proposes a multi-principal authentication scheme,
> >> restricted to just the case of a privileged client process on a
> > 
> > No, not only the case of a privileged client process.
> 
> Sure, but for the Multi-principal piece we do say the following which says that the use-case is privileged client process….

It was always my intention that traditional (read: multi-user
shared-cache) NFS client implementations would just always use
"multi-principal" contexts when doing any RPCs on a user's behalf.

That is, addressing the "user can impersonate the server to the client"
problem was always my first and foremost goal with this protocol, though
I didn't always say so explicitly (since at the time the attack was not
well-known, I didn't want to publicize it).

The conveyance of privilege (or under-privilege) is secondary, but
extremely useful.

(Was "multi-principal" my name for this?  No, I called them compound
authentication.  I prefer "compound".)

Local privilege or lack thereof is irrelevant to when compound
authentication is to be used.  The only relevant detail for that is: is
the client trusting the server's response in any way that could
compromise it or other users on the same client if the user on behalf of
which the RPC is being done could impersonate the server.  That's a
mouthful, sorry (shorter version: shared-cache).

>    RPCSEC_GSSv3 clients MAY assert a multi-principal authentication of
>    the client host principal and a user principal.  This feature is
>    needed, for example, when a client wishes to use authority assertions
>    that the server may only grant if a user and a client are
>    authenticated together to the server.  Thus a server may refuse to
>    grant requested authority to a user acting alone (e.g., via an
>    unprivileged user-space program), 
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^6

That does not imply that compound contexts are only for privileged
processes.  Not at all.

> >> However, I don't think this is strong enough; I think this scheme
> >> requires the "privacy" level of protection.  Otherwise, an attacker
> >> could replay the nonce+MIC and obtain an RPCSEC_GSS context that
> >> will authenticate as the user from the "inner" context, without
> >> actually proving that it possesses the user's credentials.  In
> > 
> > The client's credentials are required to make progress.
> 
> So you do need to be a ‘privileged client process’ - in order to use
> the client’s machine credentials.

No.  The client (the kernel, whatever) does it on behalf of the user.

> >  That stops
> > replay attacks.  We need only bind things sufficiently to the new
> > RPCSEC_GSS security context handle and the client credentials.
> 
> An evil user that can get root on a client machine wouldn’t need to
> [...]

Stop right there!  We *always* assume local security when dealing with
security protocols :)  There's no need to state this assumption.  It's
bedrock.  Kerberos, PKI, EAP, SSH, ... -- all assume local security, and
can't do anything but assume local security.

Obviously the cache poisoning problem is/can be a local security problem,
but one we can address via a protocol like this.  But we still assume
local security in that protocol.

Nico
--