Re: [PATCH 2/2] keys, trusted: seal with a policy
On Wed, 2015-12-09 at 16:24 +0200, Jarkko Sakkinen wrote: > On Tue, Dec 08, 2015 at 06:56:17PM -0500, Mimi Zohar wrote: > > On Tue, 2015-12-08 at 22:24 +0200, Jarkko Sakkinen wrote: > > > On Tue, Dec 08, 2015 at 01:01:02PM +0200, Jarkko Sakkinen wrote: > > > > On Tue, Dec 08, 2015 at 09:35:05AM +1100, James Morris wrote: > > > > > On Mon, 7 Dec 2015, Jarkko Sakkinen wrote: > > > > > > > > > > > On Fri, Nov 20, 2015 at 01:34:35PM +1100, James Morris wrote: > > > > > > > On Wed, 18 Nov 2015, Jarkko Sakkinen wrote: > > > > > > > > > > > > > > > On Wed, Nov 18, 2015 at 11:21:01AM +1100, James Morris wrote: > > > > > > > > > On Tue, 17 Nov 2015, Jarkko Sakkinen wrote: > > > > > > > > > > > > > > > > > > > } > > > > > > > > > > break; > > > > > > > > > > + case Opt_policydigest: > > > > > > > > > > + if (!tpm2 || > > > > > > > > > > + strlen(args[0].from) != (2 * > > > > > > > > > > opt->digest_len)) > > > > > > > > > > + return -EINVAL; > > > > > > > > > > + kfree(opt->policydigest); > > > > > > > > > > + opt->policydigest = > > > > > > > > > > kzalloc(opt->digest_len, > > > > > > > > > > + GFP_KERNEL); > > > > You're allocating the exact amount of storage needed. There's no reason > > to use kzalloc here or elsewhere in the patch. > > Yup. I'll change this. > > > > > > > > > > > > > > > > > > > Is it correct to kfree opt->policydigest here before > > > > > > > > > allocating it? > > > > > > > > > > > > > > > > I think so. The same option might be encountered multiple times. > > > > > > > > > > > > > > This would surely signify an error? > > > > > > > > > > > > I'm following the semantics of other options. That's why I > > > > > > implemented > > > > > > it that way for example: > > > > > > > > > > > > keyctl add trusted kmk "new 32 keyhandle=0x8000 > > > > > > keyhandle=0x8000" > > > > > > > > > > > > is perfectly OK. I just thought that it'd be more odd if this option > > > > > > behaved in a different way... > > > > > > > > > > It seems broken to me -- if you're messing up keyctl commands you > > > > > might > > > > > want to know about it, but we should remain consistent. > > > > > > > > So should I return error if policyhandle/digest appears a second time? I > > > > agree that it'd be better to return -EINVAL. > > > > > > > > The existing behavior is such that any option can appear multiple times > > > > and I chose to be consistent with that. > > > > > > Mimi, David? > > > > I don't have a problem with changing the existing behavior to allow the > > options to be specified only once. > > I don't think this patch is right place to change the behavior as it > should be done for other options too. I think the easiest way of checking if a token has already been seen would be to define a flag and use test_and_set_bit(token, ) after the following code snippet. while ((p = strsep(, " \t"))) { if (*p == '\0' || *p == ' ' || *p == '\t') continue; token = match_token(p, key_tokens, args); Having a separate patch is probably a good idea. Mimi -- To unsubscribe from this list: send the line "unsubscribe linux-security-module" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] keys, trusted: seal with a policy
On Fri, Nov 20, 2015 at 01:34:35PM +1100, James Morris wrote: > On Wed, 18 Nov 2015, Jarkko Sakkinen wrote: > > > On Wed, Nov 18, 2015 at 11:21:01AM +1100, James Morris wrote: > > > On Tue, 17 Nov 2015, Jarkko Sakkinen wrote: > > > > > > > } > > > > break; > > > > + case Opt_policydigest: > > > > + if (!tpm2 || > > > > + strlen(args[0].from) != (2 * > > > > opt->digest_len)) > > > > + return -EINVAL; > > > > + kfree(opt->policydigest); > > > > + opt->policydigest = kzalloc(opt->digest_len, > > > > + GFP_KERNEL); > > > > > > Is it correct to kfree opt->policydigest here before allocating it? > > > > I think so. The same option might be encountered multiple times. > > This would surely signify an error? I'm following the semantics of other options. That's why I implemented it that way for example: keyctl add trusted kmk "new 32 keyhandle=0x8000 keyhandle=0x8000" is perfectly OK. I just thought that it'd be more odd if this option behaved in a different way... > -- > James Morris >/Jarkko -- To unsubscribe from this list: send the line "unsubscribe linux-security-module" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] keys, trusted: seal with a policy
On Mon, 7 Dec 2015, Jarkko Sakkinen wrote: > On Fri, Nov 20, 2015 at 01:34:35PM +1100, James Morris wrote: > > On Wed, 18 Nov 2015, Jarkko Sakkinen wrote: > > > > > On Wed, Nov 18, 2015 at 11:21:01AM +1100, James Morris wrote: > > > > On Tue, 17 Nov 2015, Jarkko Sakkinen wrote: > > > > > > > > > } > > > > > break; > > > > > + case Opt_policydigest: > > > > > + if (!tpm2 || > > > > > + strlen(args[0].from) != (2 * > > > > > opt->digest_len)) > > > > > + return -EINVAL; > > > > > + kfree(opt->policydigest); > > > > > + opt->policydigest = kzalloc(opt->digest_len, > > > > > + GFP_KERNEL); > > > > > > > > Is it correct to kfree opt->policydigest here before allocating it? > > > > > > I think so. The same option might be encountered multiple times. > > > > This would surely signify an error? > > I'm following the semantics of other options. That's why I implemented > it that way for example: > > keyctl add trusted kmk "new 32 keyhandle=0x8000 keyhandle=0x8000" > > is perfectly OK. I just thought that it'd be more odd if this option > behaved in a different way... It seems broken to me -- if you're messing up keyctl commands you might want to know about it, but we should remain consistent. -- James Morris-- To unsubscribe from this list: send the line "unsubscribe linux-security-module" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] keys, trusted: seal with a policy
On Tue, Nov 17, 2015 at 06:27:22PM +0200, Jarkko Sakkinen wrote: > Support for sealing with a authorization policy. > > Two new options for trusted keys: > > * 'policydigest=': provide an auth policy digest for sealing. > * 'policyhandle=': provide a policy session handle for unsealing. I think it is good to say a word about how to test this since the user space supports is still lagging a bit (there's no way to do a "sticky" handle in TSS2 yet). I have my own low-level test scripts over here: https://github.com/jsakkine/tpm2-scripts Trivial example: KEYHANDLE=$(sudo ./tpm2-root-key) POLICYDIGEST=$(sudo ./tpm2-pcr-policy --pcr 16 --name-alg=sha256 --bank=sha1 --trial) POLICYHANDLE=$(sudo ./tpm2-pcr-policy --pcr 16 --name-alg=sha256 --bank=sha1) KEYID=$(keyctl add trusted kmk "new 32 keyhandle=$KEYHANDLE hash=sha256 policydigest=$POLICYDIGEST" @u) keyctl pipe $KEYID keyctl clear @u keyctl add trusted kmk "load `cat blob.hex` keyhandle=$KEYHANDLE policyhandle=0x0300" @u keyctl clear @u sudo ./tpm2-flush $KEYHANDLE /Jarkko -- To unsubscribe from this list: send the line "unsubscribe linux-security-module" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] keys, trusted: seal with a policy
On Wed, 18 Nov 2015, Jarkko Sakkinen wrote: > On Wed, Nov 18, 2015 at 11:21:01AM +1100, James Morris wrote: > > On Tue, 17 Nov 2015, Jarkko Sakkinen wrote: > > > > > } > > > break; > > > + case Opt_policydigest: > > > + if (!tpm2 || > > > + strlen(args[0].from) != (2 * opt->digest_len)) > > > + return -EINVAL; > > > + kfree(opt->policydigest); > > > + opt->policydigest = kzalloc(opt->digest_len, > > > + GFP_KERNEL); > > > > Is it correct to kfree opt->policydigest here before allocating it? > > I think so. The same option might be encountered multiple times. This would surely signify an error? -- James Morris-- To unsubscribe from this list: send the line "unsubscribe linux-security-module" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html