All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
To: Jarkko Sakkinen
	<jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	Jason Gunthorpe
	<jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
Cc: tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Ken Goldman <kgoldman-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	greg-R92VP3DqSWVWk0Htik3J/w@public.gmane.org
Subject: Re: [PATCH RFC 0/4] RFC: in-kernel resource manager
Date: Wed, 11 Jan 2017 07:39:53 -0800	[thread overview]
Message-ID: <1484149193.2509.12.camel@HansenPartnership.com> (raw)
In-Reply-To: <20170111113416.4h6ucm5y3hjjnfhv-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

On Wed, 2017-01-11 at 13:34 +0200, Jarkko Sakkinen wrote:
> On Tue, Jan 10, 2017 at 01:05:58PM -0700, Jason Gunthorpe wrote:
> > On Tue, Jan 10, 2017 at 01:16:35AM +0200, Jarkko Sakkinen wrote:
> > > On Wed, Jan 04, 2017 at 10:12:41AM -0600, Dr. Greg Wettstein
> > > wrote:
> > > > The kernel needs a resource manager.  Everyone needs to think 
> > > > VERY hard and VERY, VERY carefully about what gets put into the
> > > > kernel.  In making a decision, put the ABSOLUTE smallest amount 
> > > > of code into the kernel which allows various 'TPM2 
> > > > personalities' to be implemented in userspace and functionally 
> > > > verified and protected by the physical instance.  The emergence 
> > > > of commodity TEE's (SGX, et.al) should be in the back of
> > > > everyone's mind as a factor in the roadmap.
> > > 
> > > Here's my cuts for the kernel:
> > > 
> > > - Kernel virtualizes handle areas. It's mechanical.
> > > - Kernel does not virtualize bodies. It's not mechanical.
> > > - At least the first version of the RM will not do other than
> > > session
> > >   isolation for sessions.
> > > 
> > > This keeps the core for RM inside the kernel small and tight.
> > 
> > I think this makes sense.
> > 
> > In addition the kernel should only permit RM operations that are 
> > known to be 100% correct with the RM.
> > 
> > I think you should stick with your original design basic design,
> > except instead of using an ioctl to switch modes, use an ioctl to
> > execute the operation:
> > 
> > struct tpm_ioctl_operation {
> >    u16 mode;  // == TPM1_RAW,TPM2_RAW,TPM1_RM,TPM2_RM
> >    u16 locality;
> >    u32 txlen;
> >    u32 rxlen;
> >    const void *txbuf;
> >    void *rxbuf;
> > };
> > 
> > The userspace broker would be expected to use a mixture of RM and 
> > RAW operations.
> > 
> > Let's deal with the idea of another cdev some other day when 
> > someone can figure out a comprehensive way to do that securely for
> > unpriv..
> 
> James, what do you think about this proposal?

I don't think it's a good idea for the reasons stated before:

RAW access means the ability to DoS the TPM simply by exhausting
handles.  Therefore, I think most applications only get RM access.  If
you adopt this proposal, then, if you're only opening a single fd, we
can't go by the unix permissions (even the RM only applications need to
open it), so we'd need some permissions infrastructure within the
kernel to reject RAW access from RM only users.  That's why having
multiple devices is much better because we can use the usual UNIX
mechanism to separate access from raw and rm.  I'm less sure about
localities, but there may be the same issue at some point (not all
applications get access to all localities).  It would be good to get
the localities use case sorted out before adding it to an ioctl based
interfaces.

James



------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi

WARNING: multiple messages have this Message-ID (diff)
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
	Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Cc: Ken Goldman <kgoldman@us.ibm.com>,
	tpmdd-devel@lists.sourceforge.net,
	linux-security-module@vger.kernel.org, greg@enjellic.com,
	linux-kernel@vger.kernel.org
Subject: Re: [tpmdd-devel] [PATCH RFC 0/4] RFC: in-kernel resource manager
Date: Wed, 11 Jan 2017 07:39:53 -0800	[thread overview]
Message-ID: <1484149193.2509.12.camel@HansenPartnership.com> (raw)
In-Reply-To: <20170111113416.4h6ucm5y3hjjnfhv@intel.com>

On Wed, 2017-01-11 at 13:34 +0200, Jarkko Sakkinen wrote:
> On Tue, Jan 10, 2017 at 01:05:58PM -0700, Jason Gunthorpe wrote:
> > On Tue, Jan 10, 2017 at 01:16:35AM +0200, Jarkko Sakkinen wrote:
> > > On Wed, Jan 04, 2017 at 10:12:41AM -0600, Dr. Greg Wettstein
> > > wrote:
> > > > The kernel needs a resource manager.  Everyone needs to think 
> > > > VERY hard and VERY, VERY carefully about what gets put into the
> > > > kernel.  In making a decision, put the ABSOLUTE smallest amount 
> > > > of code into the kernel which allows various 'TPM2 
> > > > personalities' to be implemented in userspace and functionally 
> > > > verified and protected by the physical instance.  The emergence 
> > > > of commodity TEE's (SGX, et.al) should be in the back of
> > > > everyone's mind as a factor in the roadmap.
> > > 
> > > Here's my cuts for the kernel:
> > > 
> > > - Kernel virtualizes handle areas. It's mechanical.
> > > - Kernel does not virtualize bodies. It's not mechanical.
> > > - At least the first version of the RM will not do other than
> > > session
> > >   isolation for sessions.
> > > 
> > > This keeps the core for RM inside the kernel small and tight.
> > 
> > I think this makes sense.
> > 
> > In addition the kernel should only permit RM operations that are 
> > known to be 100% correct with the RM.
> > 
> > I think you should stick with your original design basic design,
> > except instead of using an ioctl to switch modes, use an ioctl to
> > execute the operation:
> > 
> > struct tpm_ioctl_operation {
> >    u16 mode;  // == TPM1_RAW,TPM2_RAW,TPM1_RM,TPM2_RM
> >    u16 locality;
> >    u32 txlen;
> >    u32 rxlen;
> >    const void *txbuf;
> >    void *rxbuf;
> > };
> > 
> > The userspace broker would be expected to use a mixture of RM and 
> > RAW operations.
> > 
> > Let's deal with the idea of another cdev some other day when 
> > someone can figure out a comprehensive way to do that securely for
> > unpriv..
> 
> James, what do you think about this proposal?

I don't think it's a good idea for the reasons stated before:

RAW access means the ability to DoS the TPM simply by exhausting
handles.  Therefore, I think most applications only get RM access.  If
you adopt this proposal, then, if you're only opening a single fd, we
can't go by the unix permissions (even the RM only applications need to
open it), so we'd need some permissions infrastructure within the
kernel to reject RAW access from RM only users.  That's why having
multiple devices is much better because we can use the usual UNIX
mechanism to separate access from raw and rm.  I'm less sure about
localities, but there may be the same issue at some point (not all
applications get access to all localities).  It would be good to get
the localities use case sorted out before adding it to an ioctl based
interfaces.

James

  parent reply	other threads:[~2017-01-11 15:39 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <kgoldman@us.ibm.com>
2017-01-04 16:12 ` [tpmdd-devel] [PATCH RFC 0/4] RFC: in-kernel resource manager Dr. Greg Wettstein
2017-01-04 16:12   ` Dr. Greg Wettstein
     [not found]   ` <201701041612.v04GCfPK031525-DHO+NtfOqB5PEDpkEIzg7wC/G2K4zDHf@public.gmane.org>
2017-01-04 18:37     ` Kenneth Goldman
2017-01-09 23:16   ` [tpmdd-devel] " 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
     [not found]       ` <20170110200558.GA5102-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-11 10:00         ` Andreas Fuchs
2017-01-11 10:00           ` [tpmdd-devel] " Andreas Fuchs
     [not found]           ` <ee6c1e48-e21f-d05e-0939-473001224aba-iXjGqz/onsDSyEMIgutvibNAH6kLmebB@public.gmane.org>
2017-01-11 15:59             ` Ken Goldman
2017-01-11 18:03             ` Jason Gunthorpe
2017-01-11 18:03               ` [tpmdd-devel] " Jason Gunthorpe
     [not found]               ` <20170111180328.GB22783-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-11 18:27                 ` Stefan Berger
2017-01-11 18:27                   ` [tpmdd-devel] " Stefan Berger
2017-01-11 19:18                   ` Jason Gunthorpe
2017-01-11 11:34         ` Jarkko Sakkinen
2017-01-11 11:34           ` [tpmdd-devel] " Jarkko Sakkinen
     [not found]           ` <20170111113416.4h6ucm5y3hjjnfhv-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-01-11 15:39             ` James Bottomley [this message]
2017-01-11 15:39               ` James Bottomley
     [not found]               ` <1484149193.2509.12.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2017-01-11 17:56                 ` Jason Gunthorpe
2017-01-11 17:56                   ` [tpmdd-devel] " Jason Gunthorpe
2017-01-11 18:25                   ` James Bottomley
2017-01-11 19:04                     ` Jason Gunthorpe
2017-01-02 13:22 Jarkko Sakkinen
2017-01-02 13:22 ` Jarkko Sakkinen
2017-01-02 16:36 ` [tpmdd-devel] " James Bottomley
     [not found]   ` <1483374980.2458.13.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2017-01-02 19:33     ` Jarkko Sakkinen
     [not found]       ` <20170102193320.trawto65nkjccbao-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-01-02 21:40         ` James Bottomley
2017-01-03  5:26           ` [tpmdd-devel] " James Bottomley
     [not found]             ` <1483421218.19261.4.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2017-01-03 13:41               ` Jarkko Sakkinen
     [not found]                 ` <20170103134100.stgxkmzbckon4jfb-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-01-03 16:14                   ` James Bottomley
     [not found]                     ` <1483460095.2464.6.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2017-01-03 18:36                       ` Jarkko Sakkinen
     [not found]                         ` <20170103183602.ar5typcvy2rx7cjs-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-01-03 19:14                           ` Jarkko Sakkinen
     [not found]                             ` <20170103191456.vpl6ny7rbgu3yigx-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-01-03 19:34                               ` James Bottomley
2017-01-03 21:54               ` Jason Gunthorpe
     [not found]                 ` <20170103215445.GD29656-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-04 12:58                   ` Jarkko Sakkinen
     [not found]                     ` <20170104125810.3qkkfe72cnb76ige-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-01-04 16:55                       ` Jason Gunthorpe
     [not found]           ` <1483393248.2458.32.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2017-01-03 13:51             ` Jarkko Sakkinen
     [not found]               ` <20170103135121.4kh3jld5gaq3ptj4-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-01-03 16:36                 ` James Bottomley
2017-01-03 21:47                   ` [tpmdd-devel] " Jason Gunthorpe
     [not found]                     ` <20170103214702.GC29656-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-03 22:21                       ` Ken Goldman
2017-01-03 23:20                         ` Jason Gunthorpe
2017-01-03 22:22                       ` Ken Goldman
2017-01-03 22:39                       ` James Bottomley
2017-01-04  0:17                         ` [tpmdd-devel] " Jason Gunthorpe
     [not found]                           ` <20170104001732.GB32185-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-04  0:29                             ` James Bottomley
     [not found]                               ` <1483489799.2464.79.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2017-01-04  0:56                                 ` Jason Gunthorpe
2017-01-04 12:50                             ` Jarkko Sakkinen
     [not found]                               ` <20170104125045.7lorpe55drnrqce5-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-01-04 14:53                                 ` James Bottomley
     [not found]                                   ` <1483541583.2561.20.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2017-01-04 18:31                                     ` Jason Gunthorpe
     [not found]                                       ` <20170104183125.GC783-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-04 18:57                                         ` James Bottomley
     [not found]                                           ` <1483556271.2561.50.camel-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>
2017-01-04 19:24                                             ` Jason Gunthorpe
2017-01-10 18:55                             ` Ken Goldman
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     ` Jason Gunthorpe
     [not found] ` <20170102132213.22880-1-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-01-05 15:52   ` Fuchs, Andreas
     [not found]     ` <9F48E1A823B03B4790B7E6E69430724DC7C149F6-pTbww/UJF9iZbMGAS439G2SU2VBt9E6NG9Ur7JDdleE@public.gmane.org>
2017-01-05 17:27       ` Jason Gunthorpe
     [not found]         ` <20170105172726.GA11680-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-05 18:06           ` James Bottomley
     [not found]             ` <1483639595.2515.52.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
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
     [not found]           ` <1483641223.2515.62.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2017-01-05 19:20             ` Jason Gunthorpe
2017-01-05 19:55               ` [tpmdd-devel] " James Bottomley
     [not found]                 ` <1483646149.2515.83.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2017-01-05 22:21                   ` Jason Gunthorpe
     [not found]                     ` <20170105222118.GC31047-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-05 22:58                       ` James Bottomley
     [not found]                         ` <1483657126.2515.107.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2017-01-05 23:50                           ` Jason Gunthorpe
2017-01-06  0:36                             ` [tpmdd-devel] " James Bottomley
     [not found]                               ` <1483663002.2515.134.camel-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2017-01-06  8:59                                 ` Andreas Fuchs
     [not found]                                   ` <f5c8f4a2-d4ad-a2a0-9443-26589c58f9a7-iXjGqz/onsDSyEMIgutvibNAH6kLmebB@public.gmane.org>
2017-01-06 19:10                                     ` Jason Gunthorpe
     [not found]               ` <20170105192025.GB12587-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-10 19:03                 ` Ken Goldman
2017-01-10 19:03                   ` Ken Goldman

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=1484149193.2509.12.camel@HansenPartnership.com \
    --to=james.bottomley-d9phhud1jfjcxq6kfmz53/egyhegw8jk@public.gmane.org \
    --cc=greg-R92VP3DqSWVWk0Htik3J/w@public.gmane.org \
    --cc=jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org \
    --cc=kgoldman-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    /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.