From: Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
To: Kyle Moffett <kyle@moffetthome.net>
Cc: Miloslav Trmac <mitr@redhat.com>,
Herbert Xu <herbert@gondor.hengli.com.au>,
linux-crypto@vger.kernel.org, Neil Horman <nhorman@redhat.com>,
linux-kernel@vger.kernel.org, David Howells <dhowells@redhat.com>
Subject: Re: [PATCH 01/19] User-space API definition
Date: Mon, 06 Sep 2010 21:13:45 +0200 [thread overview]
Message-ID: <4C853D69.2080108@gmail.com> (raw)
In-Reply-To: <AANLkTim=nf7VVs0zDshivjrdFFYeWaoWYqAA6PCs3c4k@mail.gmail.com>
On 09/06/2010 08:00 PM, Kyle Moffett wrote:
>> The kernel keyring service is basically a system-wide data storage
>> service. /dev/crypto needs a quick way to refer to short-lived,
>> usually process-local, kernel-space data structures from
>> userspace.
> The problem with the approach you're proposing is that we then have
> two entirely separate classes of keys. First we have the existing
> keyring class, which can be securely and revokably passed between
> different processes with limited rights, but cannot be handed up to
> the kernel's cryptoapi.
I don't think this is the case. The NCR does not store any keys nor
retrieves them. It does delegate the burden of that to userspace
application. NCR exports a wrapped version of the key and the userspace
application stores it. It could use the keyring to store the keys or
could directly store them in the filesystem.
> Then we have your new class, which are anonymous keys with a brand
> new security model
> (which doesn't even have LSM hooks yet)
and what would this suggest?
> and which cannot be referenced by name. Another potential issue is
> that keys are never actually "unnamed", in that sense. If encryption
> keys truly were "anonymous" then you would find it impossible to
> reliably decrypt the data on the other end. For example, every RSA
> private key should be indexed either by the X.509 DN or for bare SSH
> keys by the public modulus information.
> Even transient SSL session
> keys are always put into an SSL session cache by apache or whatever
> to allow them to be reused across multiple TCP streams! So I would
> argue that an SSL implementation that uses this should actually
> create or use a keyring specifically as an SSL session cache (with
> keys indexed by SSL session ID).
Each key of NCR contains a key ID, that is the same in public
and private keys (if generated by NCR), and that could be used to index
it. Secret keys have a key id specified by the user. It does not require
you to use it though.
> It then becomes trivial to share an SSL session cache between 3
> independent HTTPS server programs from different vendors, such that
> the compromise of *any* of the processes would not in any way
> compromise the security of the session keys.
If you are sharing a cache, the protection given by NCR is actually not
used. Unless of course you start wrapping keys to ensure that noone
unauthorized except from the legitimate systems access them. Doing the
crypto in user-space would be more efficient in that case.
> So my recommendation would be to create some new operations of the
> existing keyring code:
> (1) If you *really* care about anonymous transient keys that are not
> identified by an SSL session ID or similar, then add a keyring
> operation for "create an anonymous key in keyring X, where the
> kernel creates a proper temporary name". An SSL implementation would
> default to using the process-local keyring, which means that
> everything would automatically go away on process exit.
> (2) Add cryptoapi hooks to automatically register keyring key types
> based on the loaded cryptoapi modules.
> (3) Add any necessary keyring operations for efficiently performing
> zero-copy cryptoapi calls using those key types.
I cannot get the big picture of you suggestions. How does this fit to
NCR given the explanation on how keys are (not) stored by NCR. Is your
suggestion about convenience calls to retrieve and store keys from and
to keyring? Or you are suggesting NCR to be using the keyring for its
internal reference of keys?
If it is the latter, what would be the advantage of doing that?
regards.
Nikos
next prev parent reply other threads:[~2010-09-06 19:13 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <272391166.1009231283787434910.JavaMail.root@zmail07.collab.prod.int.phx2.redhat.com>
2010-09-06 15:50 ` [PATCH 01/19] User-space API definition Miloslav Trmac
2010-09-06 18:00 ` Kyle Moffett
2010-09-06 19:13 ` Nikos Mavrogiannopoulos [this message]
2010-09-06 20:42 ` Kyle Moffett
2010-09-06 21:11 ` Nikos Mavrogiannopoulos
2010-09-07 3:05 ` Kyle Moffett
[not found] <1586512982.1019221283808142288.JavaMail.root@zmail07.collab.prod.int.phx2.redhat.com>
2010-09-06 21:39 ` Miloslav Trmac
[not found] <423332662.861981283506383923.JavaMail.root@zmail07.collab.prod.int.phx2.redhat.com>
2010-09-03 9:38 ` Miloslav Trmac
[not found] <1278368294.1123931282577639823.JavaMail.root@zmail07.collab.prod.int.phx2.redhat.com>
2010-08-23 15:37 ` Miloslav Trmac
2010-09-06 12:17 ` Herbert Xu
2010-09-06 12:33 ` Nikos Mavrogiannopoulos
2010-08-20 8:45 [PATCH 00/19] RFC, v2: "New" /dev/crypto user-space interface Miloslav Trmač
2010-08-20 8:45 ` [PATCH 01/19] User-space API definition Miloslav Trmač
2010-08-20 12:48 ` Stefan Richter
2010-08-21 7:35 ` Nikos Mavrogiannopoulos
2010-08-21 9:11 ` Miloslav Trmac
2010-08-20 17:12 ` Randy Dunlap
2010-08-21 13:09 ` Kyle Moffett
2010-08-21 14:54 ` Nikos Mavrogiannopoulos
2010-08-22 10:22 ` David Howells
2010-09-03 9:18 ` Herbert Xu
2010-09-03 9:34 ` Nikos Mavrogiannopoulos
2010-09-03 15:20 ` Nikos Mavrogiannopoulos
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=4C853D69.2080108@gmail.com \
--to=n.mavrogiannopoulos@gmail.com \
--cc=dhowells@redhat.com \
--cc=herbert@gondor.hengli.com.au \
--cc=kyle@moffetthome.net \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mitr@redhat.com \
--cc=nhorman@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).