From mboxrd@z Thu Jan 1 00:00:00 1970 From: kai.huang@intel.com (Huang, Kai) Date: Fri, 17 Aug 2018 02:49:11 +0000 Subject: [RFC] KEYS: inject an MKTME specific safety check in the keyctl revoke path In-Reply-To: <20180814020538.GA18424@alison-desk.jf.intel.com> References: <20180814020538.GA18424@alison-desk.jf.intel.com> Message-ID: <1534474145.2908.4.camel@intel.com> To: linux-security-module@vger.kernel.org List-Id: linux-security-module.vger.kernel.org On Mon, 2018-08-13 at 19:05 -0700, Alison Schofield wrote: > This RFC is asking for feedback on a problem I'm running into using > the Kernel Key Service for MKTME (MultiKey Total Memory Encryption). > > I previously posted an RFC with the proposal to create a new key type > "mktme" to support MKTME (Multi-Key Total Memory Encryption). > https://www.spinics.net/lists/keyrings/msg03702.html > > The MKTME key service maps userspace keys to hardware keyids. Those > keys are used in a new system call that encrypts memory. The keys > need to be tightly controlled. One example is that userspace keys > should not be revoked while the hardware keyid slot is still in use. > > The KEY_FLAG_KEEP bit offers good control. The mktme service uses > that > bit to prevent userspace keys from disappearing without the service > being notified. > > Problem is that we need a safe and synchronous way to revoke keys. > The > way .revoke methods function now, the key service type is called late > in the revoke process. The mktme key service has no means to reject > the > request. So, even if the mktme service sanity checks the request in > its > .revoke method, it's too late to do anything about it. > > This proposal inserts an MKTME specific check earlier into the > existing > keyctl path. If it is safe to revoke the key, mktme key > service > will turn off KEY_FLAG_KEEP and let the revoke continue (and > succeed). > Otherwise, not safe, KEY_FLAG_KEEP stays on, and the revoke continues > (and fails). > > I considered proposing a new keyctl