All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <jejb@linux.vnet.ibm.com>
To: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Cc: "tpmdd-devel@lists.sourceforge.net" 
	<tpmdd-devel@lists.sourceforge.net>,
	"linux-security-module@vger.kernel.org" 
	<linux-security-module@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [tpmdd-devel] [PATCH RFC 0/4] RFC: in-kernel resource manager
Date: Thu, 05 Jan 2017 11:55:49 -0800	[thread overview]
Message-ID: <1483646149.2515.83.camel@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170105192025.GB12587@obsidianresearch.com>

On Thu, 2017-01-05 at 12:20 -0700, Jason Gunthorpe wrote:
> On Thu, Jan 05, 2017 at 10:33:43AM -0800, James Bottomley wrote:
> 
> > > A combo ioctl that could setup the session, issue an operation in
> > > it
> > > and then delete the session, for instance.
> > 
> > This would work for encryption or HMAC sessions, but probably not 
> > for policy sessions, because they can have an arbitrarily large 
> > command sequence to construct them.
> 
> I'd rather give up features (eg policy sessions, if necessary) for 
> the unpriv fd than give up security of the unpriv fd.

We don't really have that choice: Keys require authorization, so you
have to have an auth session.  If you want things like PCR sealed or
time limited keys, you don't really have a choice on policy sessions
either.

I think we've got to the point where arguing about our divergent use
requirements shows the default should be 0600 and every command enabled
so that whatever changes the device to 0666 also applies the command
filter policy.  It's the fully safe default that satisfies everyone.
Once you have the command blacklist, you can blacklist every policy
command before you make your device 0666.  That effecively achieves
what you want because no-one can now initiate a policy session.

> We always have the out that special stuff can go down the priv path.
> 
> > The other issue we're likely to run into if we do it this way is
> > delayed error reporting.
> 
> Not sure I follow.

If we try to issue a load of commands as a transaction, you only get
the error when the transaction is executed, even if the entity causing
the problem is way back in the command sequence.

> > How about a more traditional approach which would be leasing 
> > (basically what we use for NFS).  Any application opening a session
> > would have
> 
> Doesn't this just change the DOS vector? Now the attacker has to 
> delay execution of TPM commands long enough to force session leases 
> to time out. That isn't too hard to do, asking the TPM to make a RSA 
> key can take seconds, for instance.

I really don't think we can prevent all types of DoS in the TPM.  After
all, in a lot of current silicon, it can take up to 90 seconds to
generate an RSA key using the KDF ... the TPM is unavailable while this
is happening, so there's your DoS on a standard command.

What we need to aim for is effective resource sharing.  The 64 handle
limit is one of the nasty ones that a bunch of applications could
accidentally overflow.  A lease model bounds the TPM blocked time while
you're waiting for an available handle and coping with a lease timeout
can be done in the TSS.  TPM execution time could be added to lease
expiry, so even if someone's doing a sequence of RSA KDFs, you
eventually get your job executed as long as we do the execution of
blocked commands in a strict order.  In this model, you can "DoS" me by
substantially delaying the execution of my commands, but you can't
prevent it from executing within a bounded time.  I suppose we could
even make TPM execution time an RLIMIT.

James

  reply	other threads:[~2017-01-05 19:56 UTC|newest]

Thread overview: 150+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-02 13:22 [PATCH RFC 0/4] RFC: in-kernel resource manager Jarkko Sakkinen
2017-01-02 13:22 ` Jarkko Sakkinen
2017-01-02 13:22 ` [PATCH RFC 1/4] tpm: migrate struct tpm_buf to struct tpm_chip Jarkko Sakkinen
2017-01-02 13:22   ` Jarkko Sakkinen
2017-01-02 21:01   ` Jason Gunthorpe
2017-01-02 21:01     ` Jason Gunthorpe
2017-01-03  0:57     ` Jarkko Sakkinen
2017-01-03 19:13       ` Jason Gunthorpe
2017-01-03 19:13         ` Jason Gunthorpe
2017-01-04 12:29         ` Jarkko Sakkinen
2017-01-04 12:29           ` Jarkko Sakkinen
2017-01-02 13:22 ` [PATCH RFC 2/4] tpm: validate TPM 2.0 commands Jarkko Sakkinen
2017-01-02 13:22   ` Jarkko Sakkinen
     [not found]   ` <20170102132213.22880-3-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-01-04 18:04     ` Stefan Berger
2017-01-04 18:19       ` [tpmdd-devel] " James Bottomley
2017-01-04 18:19         ` James Bottomley
     [not found]         ` <1483553976.2561.38.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2017-01-04 18:59           ` Stefan Berger
     [not found]             ` <OF3FD1DF4F.FB87C3F2-ON0025809E.00682E9B-8525809E.00684A8A-8eTO7WVQ4XIsd+ienQ86orlN3bxYEBpz@public.gmane.org>
2017-01-04 19:05               ` James Bottomley
     [not found]                 ` <1483556735.2561.53.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2017-01-04 19:22                   ` Stefan Berger
     [not found]                     ` <OFDFABBD23.E5E1F639-ON0025809E.006924C4-8525809E.006A7568-8eTO7WVQ4XIsd+ienQ86orlN3bxYEBpz@public.gmane.org>
2017-01-09 22:17                       ` Jarkko Sakkinen
     [not found]                         ` <20170109221700.q7tq362rd6r23d5b-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-01-09 22:39                           ` Stefan Berger
2017-01-04 18:44       ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04 18:44         ` Jason Gunthorpe
2017-01-02 13:22 ` [PATCH RFC 3/4] tpm: export tpm2_flush_context_cmd Jarkko Sakkinen
2017-01-02 13:22   ` Jarkko Sakkinen
2017-01-02 13:22 ` [PATCH RFC 4/4] tpm: add the infrastructure for TPM space for TPM 2.0 Jarkko Sakkinen
2017-01-02 13:22   ` Jarkko Sakkinen
2017-01-02 21:09   ` Jason Gunthorpe
2017-01-02 21:09     ` Jason Gunthorpe
2017-01-03  0:37     ` Jarkko Sakkinen
2017-01-03 18:46       ` Jason Gunthorpe
2017-01-03 18:46         ` Jason Gunthorpe
2017-01-04 12:43         ` Jarkko Sakkinen
2017-01-04 12:43           ` Jarkko Sakkinen
2017-01-03 19:16       ` Jason Gunthorpe
2017-01-03 19:16         ` Jason Gunthorpe
2017-01-04 12:45         ` Jarkko Sakkinen
2017-01-04 12:45           ` Jarkko Sakkinen
     [not found]   ` <20170102132213.22880-5-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-01-04 17:50     ` Stefan Berger
2017-01-09 22:11       ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-02 16:36 ` [tpmdd-devel] [PATCH RFC 0/4] RFC: in-kernel resource manager James Bottomley
2017-01-02 19:33   ` Jarkko Sakkinen
2017-01-02 19:33     ` Jarkko Sakkinen
2017-01-02 21:40     ` [tpmdd-devel] " James Bottomley
2017-01-02 21:40       ` James Bottomley
2017-01-03  5:26       ` [tpmdd-devel] " James Bottomley
2017-01-03 13:41         ` Jarkko Sakkinen
2017-01-03 13:41           ` Jarkko Sakkinen
2017-01-03 16:14           ` [tpmdd-devel] " James Bottomley
2017-01-03 16:14             ` James Bottomley
2017-01-03 18:36             ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-03 18:36               ` Jarkko Sakkinen
2017-01-03 19:14               ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-03 19:14                 ` Jarkko Sakkinen
2017-01-03 19:34                 ` [tpmdd-devel] " James Bottomley
2017-01-03 19:34                   ` James Bottomley
2017-01-03 21:54         ` [tpmdd-devel] " Jason Gunthorpe
2017-01-03 21:54           ` Jason Gunthorpe
2017-01-04 12:58           ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-04 12:58             ` Jarkko Sakkinen
2017-01-04 16:55             ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04 16:55               ` Jason Gunthorpe
2017-01-04  5:47         ` [tpmdd-devel] " Andy Lutomirski
2017-01-04 13:00           ` Jarkko Sakkinen
2017-01-03 13:51       ` Jarkko Sakkinen
2017-01-03 13:51         ` Jarkko Sakkinen
2017-01-03 16:36         ` [tpmdd-devel] " James Bottomley
2017-01-03 16:36           ` James Bottomley
2017-01-03 18:40           ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-03 21:47           ` Jason Gunthorpe
2017-01-03 22:21             ` Ken Goldman
2017-01-03 22:21               ` Ken Goldman
2017-01-03 23:20               ` [tpmdd-devel] " Jason Gunthorpe
2017-01-03 23:20                 ` Jason Gunthorpe
     [not found]             ` <20170103214702.GC29656-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-03 22:22               ` Ken Goldman
2017-01-03 22:39             ` [tpmdd-devel] " James Bottomley
2017-01-03 22:39               ` James Bottomley
2017-01-04  0:17               ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04  0:29                 ` James Bottomley
2017-01-04  0:29                   ` James Bottomley
2017-01-04  0:56                   ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04  0:56                     ` Jason Gunthorpe
2017-01-04 12:50                 ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-04 12:50                   ` Jarkko Sakkinen
2017-01-04 14:53                   ` [tpmdd-devel] " James Bottomley
2017-01-04 14:53                     ` James Bottomley
2017-01-04 18:31                     ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04 18:31                       ` Jason Gunthorpe
2017-01-04 18:57                       ` [tpmdd-devel] " James Bottomley
2017-01-04 18:57                         ` James Bottomley
2017-01-04 19:24                         ` [tpmdd-devel] " Jason Gunthorpe
2017-01-04 19:24                           ` Jason Gunthorpe
     [not found]                 ` <20170104001732.GB32185-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-10 18:55                   ` Ken Goldman
2017-01-04 12:48             ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-04 12:48               ` Jarkko Sakkinen
     [not found]           ` <1483461370.2464.19.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2017-01-03 22:18             ` Ken Goldman
2017-01-03 21:32   ` [tpmdd-devel] " Jason Gunthorpe
2017-01-03 21:32     ` Jason Gunthorpe
2017-01-03 22:03     ` [tpmdd-devel] " James Bottomley
2017-01-05 15:52 ` Fuchs, Andreas
2017-01-05 15:52   ` Fuchs, Andreas
2017-01-05 17:27   ` [tpmdd-devel] " Jason Gunthorpe
2017-01-05 17:27     ` Jason Gunthorpe
2017-01-05 18:06     ` [tpmdd-devel] " James Bottomley
2017-01-05 18:06       ` James Bottomley
2017-01-06  8:43       ` [tpmdd-devel] " Andreas Fuchs
2017-01-06  8:43         ` Andreas Fuchs
     [not found]         ` <410e3045-58dc-5415-30c1-c86eb916b6c8-iXjGqz/onsDSyEMIgutvibNAH6kLmebB@public.gmane.org>
2017-01-10 18:57           ` Ken Goldman
2017-01-05 18:33     ` [tpmdd-devel] " James Bottomley
2017-01-05 18:33       ` James Bottomley
2017-01-05 19:20       ` Jason Gunthorpe
2017-01-05 19:20         ` Jason Gunthorpe
2017-01-05 19:55         ` James Bottomley [this message]
2017-01-05 19:55           ` [tpmdd-devel] " James Bottomley
2017-01-05 22:21           ` Jason Gunthorpe
2017-01-05 22:21             ` Jason Gunthorpe
2017-01-05 22:58             ` [tpmdd-devel] " James Bottomley
2017-01-05 22:58               ` James Bottomley
2017-01-05 23:50               ` [tpmdd-devel] " Jason Gunthorpe
2017-01-05 23:50                 ` Jason Gunthorpe
2017-01-06  0:36                 ` [tpmdd-devel] " James Bottomley
2017-01-06  0:36                   ` James Bottomley
2017-01-06  8:59                   ` Andreas Fuchs
2017-01-06  8:59                     ` Andreas Fuchs
2017-01-06 19:10                     ` [tpmdd-devel] " Jason Gunthorpe
2017-01-06 19:10                       ` Jason Gunthorpe
2017-01-06 19:02                   ` [tpmdd-devel] " Jason Gunthorpe
2017-01-06 19:02                     ` Jason Gunthorpe
2017-01-10 19:03         ` Ken Goldman
2017-01-10 19:03           ` Ken Goldman
2017-01-09 22:39   ` [tpmdd-devel] " Jarkko Sakkinen
2017-01-09 22:39     ` Jarkko Sakkinen
2017-01-11 10:03     ` Andreas Fuchs
2017-01-11 10:03       ` Andreas Fuchs
2017-01-04 16:12 Dr. Greg Wettstein
2017-01-04 16:12 ` Dr. Greg Wettstein
2017-01-09 23:16 ` Jarkko Sakkinen
2017-01-10 19:29   ` Ken Goldman
2017-01-10 19:29     ` Ken Goldman
2017-01-11 11:36     ` Jarkko Sakkinen
2017-01-10 20:05   ` Jason Gunthorpe
2017-01-11 10:00     ` Andreas Fuchs
2017-01-11 18:03       ` Jason Gunthorpe
2017-01-11 18:27         ` Stefan Berger
2017-01-11 19:18           ` Jason Gunthorpe
2017-01-11 11:34     ` Jarkko Sakkinen
2017-01-11 15:39       ` James Bottomley
2017-01-11 17:56         ` Jason Gunthorpe
2017-01-11 18:25           ` James Bottomley
2017-01-11 19:04             ` Jason Gunthorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1483646149.2515.83.camel@linux.vnet.ibm.com \
    --to=jejb@linux.vnet.ibm.com \
    --cc=jgunthorpe@obsidianresearch.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=tpmdd-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.