All of lore.kernel.org
 help / color / mirror / Atom feed
* cipher, tls, and keys
@ 2016-06-06 23:19 Mat Martineau
  2016-06-06 23:35 ` Denis Kenzior
  0 siblings, 1 reply; 4+ messages in thread
From: Mat Martineau @ 2016-06-06 23:19 UTC (permalink / raw)
  To: ell

[-- Attachment #1: Type: text/plain, Size: 1075 bytes --]


So far I've updated the asymmetric cipher code to work with the current 
version of the AF_ALG akcipher interface. This leaves the asymmetric 
cipher & tls disconnected from the new key/keyring code, which doesn't 
take advantage of the kernel's capabilities with akcipher and the keyring.

We have three options:

1. The current code works, so leave it as-is. I took this approach first 
to minimize changes while I got it working.

2. Make use of the keyctl() crypto API that's under review. This has the 
clearest upstream path because it was implemented by the keyring 
maintainer. Would simplify l_asymmetric_cipher code and involve fewer 
syscalls.

3. Continue with AF_ALG but make use of ALG_SET_KEY_ID and 
ALG_SET_PUB_KEY_ID to use keys already in a keyring. Would not be a big 
change, but the kernel patch set is a work in progress and much more 
uncertainty about upstream prospects / timing.


I like #2 because it makes for a clean API and simple userspace 
implementation. Anyone prefer other options?

--
Mat Martineau
Intel OTC

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: cipher, tls, and keys
  2016-06-06 23:19 cipher, tls, and keys Mat Martineau
@ 2016-06-06 23:35 ` Denis Kenzior
  2016-06-07 19:30   ` Mat Martineau
  0 siblings, 1 reply; 4+ messages in thread
From: Denis Kenzior @ 2016-06-06 23:35 UTC (permalink / raw)
  To: ell

[-- Attachment #1: Type: text/plain, Size: 1538 bytes --]

Hi Mat,

On 06/06/2016 06:19 PM, Mat Martineau wrote:
>
> So far I've updated the asymmetric cipher code to work with the current
> version of the AF_ALG akcipher interface. This leaves the asymmetric
> cipher & tls disconnected from the new key/keyring code, which doesn't
> take advantage of the kernel's capabilities with akcipher and the keyring.
>
> We have three options:
>
> 1. The current code works, so leave it as-is. I took this approach first
> to minimize changes while I got it working.
>
> 2. Make use of the keyctl() crypto API that's under review. This has the
> clearest upstream path because it was implemented by the keyring
> maintainer. Would simplify l_asymmetric_cipher code and involve fewer
> syscalls.

I agree that keyctl is the one to use.  I would keep the asymmetric 
cipher classes the way they are, but remove the sign/verify operations. 
  Mmake tls depend on keyctl/keyring directly for sign/verify.

>
> 3. Continue with AF_ALG but make use of ALG_SET_KEY_ID and
> ALG_SET_PUB_KEY_ID to use keys already in a keyring. Would not be a big
> change, but the kernel patch set is a work in progress and much more
> uncertainty about upstream prospects / timing.

Lets follow these patches, and if they ever get upstreamed, then we can 
update the asymmetric_cipher API to support these operations, just for 
completeness sake.

>
>
> I like #2 because it makes for a clean API and simple userspace
> implementation. Anyone prefer other options?
>

Regards,
-Denis


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: cipher, tls, and keys
  2016-06-06 23:35 ` Denis Kenzior
@ 2016-06-07 19:30   ` Mat Martineau
  2016-06-07 19:40     ` Denis Kenzior
  0 siblings, 1 reply; 4+ messages in thread
From: Mat Martineau @ 2016-06-07 19:30 UTC (permalink / raw)
  To: ell

[-- Attachment #1: Type: text/plain, Size: 2271 bytes --]

On Mon, 6 Jun 2016, Denis Kenzior wrote:

> Hi Mat,
>
> On 06/06/2016 06:19 PM, Mat Martineau wrote:
>> 
>> So far I've updated the asymmetric cipher code to work with the current
>> version of the AF_ALG akcipher interface. This leaves the asymmetric
>> cipher & tls disconnected from the new key/keyring code, which doesn't
>> take advantage of the kernel's capabilities with akcipher and the keyring.
>> 
>> We have three options:
>> 
>> 1. The current code works, so leave it as-is. I took this approach first
>> to minimize changes while I got it working.
>> 
>> 2. Make use of the keyctl() crypto API that's under review. This has the
>> clearest upstream path because it was implemented by the keyring
>> maintainer. Would simplify l_asymmetric_cipher code and involve fewer
>> syscalls.
>
> I agree that keyctl is the one to use.  I would keep the asymmetric cipher 
> classes the way they are, but remove the sign/verify operations.  Mmake tls 
> depend on keyctl/keyring directly for sign/verify.

keyctl/keyring can do encrypt/decrypt too, I'd like to pick one way or the 
other. Consistency in key handlng between sign/verify and encrypt/decrypt 
would make for a clearer ELL interface. Looks like we'll need to load the 
keys in to the keyring for encrypt/decrypt anyway (to get the key size), 
so might as well leverage the simpler interface for encrypt/decrypt too.

>
>> 
>> 3. Continue with AF_ALG but make use of ALG_SET_KEY_ID and
>> ALG_SET_PUB_KEY_ID to use keys already in a keyring. Would not be a big
>> change, but the kernel patch set is a work in progress and much more
>> uncertainty about upstream prospects / timing.
>
> Lets follow these patches, and if they ever get upstreamed, then we can 
> update the asymmetric_cipher API to support these operations, just for 
> completeness sake.

If we build a good asymmetric API (sign/verify/encrypt/decrypt) around 
keyctl I don't see a big benefit to supporting both AF_ALG-akcipher and 
keyctl. If an l_asymmetric_cipher instance had a long lifetime and was 
reused frequently, there would be some savings (less re-parsing of the 
keys inside the kernel), but tls doesn't use the asymmetric cipher API 
that way.

--
Mat Martineau
Intel OTC

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: cipher, tls, and keys
  2016-06-07 19:30   ` Mat Martineau
@ 2016-06-07 19:40     ` Denis Kenzior
  0 siblings, 0 replies; 4+ messages in thread
From: Denis Kenzior @ 2016-06-07 19:40 UTC (permalink / raw)
  To: ell

[-- Attachment #1: Type: text/plain, Size: 2699 bytes --]

Hi Mat,

On 06/07/2016 02:30 PM, Mat Martineau wrote:
> On Mon, 6 Jun 2016, Denis Kenzior wrote:
>
>> Hi Mat,
>>
>> On 06/06/2016 06:19 PM, Mat Martineau wrote:
>>>
>>> So far I've updated the asymmetric cipher code to work with the current
>>> version of the AF_ALG akcipher interface. This leaves the asymmetric
>>> cipher & tls disconnected from the new key/keyring code, which doesn't
>>> take advantage of the kernel's capabilities with akcipher and the
>>> keyring.
>>>
>>> We have three options:
>>>
>>> 1. The current code works, so leave it as-is. I took this approach first
>>> to minimize changes while I got it working.
>>>
>>> 2. Make use of the keyctl() crypto API that's under review. This has the
>>> clearest upstream path because it was implemented by the keyring
>>> maintainer. Would simplify l_asymmetric_cipher code and involve fewer
>>> syscalls.
>>
>> I agree that keyctl is the one to use.  I would keep the asymmetric
>> cipher classes the way they are, but remove the sign/verify
>> operations.  Mmake tls depend on keyctl/keyring directly for sign/verify.
>
> keyctl/keyring can do encrypt/decrypt too, I'd like to pick one way or
> the other. Consistency in key handlng between sign/verify and
> encrypt/decrypt would make for a clearer ELL interface. Looks like we'll
> need to load the keys in to the keyring for encrypt/decrypt anyway (to
> get the key size), so might as well leverage the simpler interface for
> encrypt/decrypt too.

TLS can use keyctl throughout.  This wasn't what my comment was about. 
I just meant that we should still make/keep a sane asymmetric cipher API 
in ell.

>
>>
>>>
>>> 3. Continue with AF_ALG but make use of ALG_SET_KEY_ID and
>>> ALG_SET_PUB_KEY_ID to use keys already in a keyring. Would not be a big
>>> change, but the kernel patch set is a work in progress and much more
>>> uncertainty about upstream prospects / timing.
>>
>> Lets follow these patches, and if they ever get upstreamed, then we
>> can update the asymmetric_cipher API to support these operations, just
>> for completeness sake.
>
> If we build a good asymmetric API (sign/verify/encrypt/decrypt) around
> keyctl I don't see a big benefit to supporting both AF_ALG-akcipher and
> keyctl. If an l_asymmetric_cipher instance had a long lifetime and was
> reused frequently, there would be some savings (less re-parsing of the
> keys inside the kernel), but tls doesn't use the asymmetric cipher API
> that way.

akcipher is more flexible, since you can use it with or without 
templates (such as pkcs1pad).  So while low priority, I'd still keep an 
akcipher abstraction around.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-06-07 19:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-06 23:19 cipher, tls, and keys Mat Martineau
2016-06-06 23:35 ` Denis Kenzior
2016-06-07 19:30   ` Mat Martineau
2016-06-07 19:40     ` Denis Kenzior

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.