lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <5549FB94.6020601@freescale.com>
Date:	Wed, 6 May 2015 14:31:32 +0300
From:	Horia Geantă <horia.geanta@...escale.com>
To:	Tadeusz Struk <tadeusz.struk@...el.com>,
	<herbert@...dor.apana.org.au>
CC:	<corbet@....net>, <keescook@...omium.org>, <qat-linux@...el.com>,
	<jwboyer@...hat.com>, <richard@....at>, <d.kasatkin@...sung.com>,
	<linux-kernel@...r.kernel.org>, <steved@...hat.com>,
	<dhowells@...hat.com>, <vgoyal@...hat.com>,
	<james.l.morris@...cle.com>, <jkosina@...e.cz>,
	<zohar@...ux.vnet.ibm.com>, <davem@...emloft.net>,
	<jdelvare@...e.de>, <linux-crypto@...r.kernel.org>
Subject: Re: [PATCH RFC 0/2] crypto: Introduce Public Key Encryption API

On 5/4/2015 11:42 PM, Tadeusz Struk wrote:
> Hi Horia,
> On 05/04/2015 06:16 AM, Horia Geantă wrote:
>>> 	int (*sign)(struct pke_request *pkereq);
>>>> 	int (*verify)(struct pke_request *pkereq);
>>>> 	int (*encrypt)(struct pke_request *pkereq);
>>>> 	int (*decrypt)(struct pke_request *pkereq);
>> Where would be the proper place for keygen operation?
> 
> This will need to be extended to support keygen.
> 
>>
>> AFAICT algorithms currently map to primitives + encoding methods, which
>> is not flexible. For e.g. current RSA implementation hardcodes the
>> PKCS1-v1_5 encoding method, making it hard to add OAEP(+) etc.
>>
>> One solution would be to map algorithms to primitives only. Encoding
>> methods need to be abstracted somehow, maybe using templates to wrap the
>> algorithms.
> 
> So far there is only one rsa implementation in kernel and it is only used
> by module signing code.
> Later we can add templates or simply one can register "oaep-rsa" algorithm.

I am thinking that it would be more logical for "rsa" to represent only
the *primitives*, for e.g. RSASP1, RSAVP1, RSAEP, RSADP (in rfc3447
terminology).

Then pkcs1_v15(rsa), oaep(rsa), pss(rsa) (i.e. RSAES-PKCS1-v1_5,
RSAES-OAEP, RSASSA-PSS encryption and/or signature schemes) would share
the primitives implementation, the only thing that would differ being
the encoding/padding method.

This is similar to symmetric ciphers convention of having the mode
defined as a wrapper: we have cbc(aes), ctr(aes), gcm(aes) and not
cbc-aes, ctr-aes, gcm-aes.

Another thing to consider is that there might be crypto engines which
are able to perform only "textbook" rsa. This would allow for the
primitives to be offloaded, while the encoding methods would be
performed in SW.

Thanks,
Horia


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ