Given RSA as a predecessor, wherein RS256 and PS256 are distinct padding modes 
for RSASSA, I'd prefer "kty" be specific configuration of an algorithm; e.g. 
Kyber-768-90s should be distinct from Kyber-768 or Kyber-512.


It may be tempting to generalize ("lattice" vs "hash-based") instead of specify 
("SPHINCS+SHAKE256" vs "SPHINCS+SHA256"), but being specific is less likely to 
encourage implementations to support in-band algorithm 
negotiation<https://www.howmanydayssinceajwtalgnonevuln.com/>.


________________________________
From: COSE <[email protected]> on behalf of Orie Steele 
<[email protected]>
Sent: Monday, July 11, 2022 6:59 AM
To: Ilari Liusvaara
Cc: cose
Subject: RE: [EXTERNAL][COSE] draft-prorock-cose-post-quantum-signatures [Was: 
Re: IETF 114 Call for Agenda Items]


CAUTION: This email originated from outside of the organization. Do not click 
links or open attachments unless you can confirm the sender and know the 
content is safe.


There is not a single elliptic curve system I am aware of that is acknowledged 
as being post quantum.

We're really just looking for consensus on what to use for `kty` for new post 
quantum schemes... it can't be OKP, EC, EC2.

It could be a unique class name for lattice, hash-based, isogeny... etc... 
(each a generic family)

But then the actual type would have to be signalled elsewhere, for example:

dilithium, kyber, falcon, sphincs, ntru, etc... (each a specific family)

Based on the existing conventions there is no obvious choice.

https://datatracker.ietf.org/doc/html/rfc7517#section-4.1

   The "kty" (key type) parameter identifies the cryptographic algorithm
   family used with the key, such as "RSA" or "EC".  "kty" values should
   either be registered in the IANA "JSON Web Key Types" registry
   established by [JWA] or be a value that contains a Collision-
   Resistant Name.  The "kty" value is a case-sensitive string.  This
   member MUST be present in a JWK.

   A list of defined "kty" values can be found in the IANA "JSON Web Key
   Types" registry established by [JWA]; the initial contents of this
   registry are the values defined in Section 6.1 of [JWA].

   The key type definitions include specification of the members to be
   used for those key types.  Members used with specific "kty" values
   can be found in the IANA "JSON Web Key Parameters" registry
   established by Section 8.1.

Given, RSA and EC/EC2 are "families"...

Option 1: (a single post quantium "family")
{ kty: AKP, pset: SPHINCS+-128s }
{ kty: AKP, pset: CRYDI3 }
{ kty: AKP, pset: FALCON-xxx }

Option 2: (specific system for post quantum family)
{ kty: CRYDI, pset: CRYDI3 }
{ kty: FALCON, pset: FALCON-xxx }
{ kty: SPHINCS+, pset: 128s }

Option 3: (generic system for post quantum family)
{ kty: LATTICE, pset: CRYDI3 }
{ kty: LATTICE, pset: FALCON-xxx }
{ kty: HASH, pset: SPHINCS+-128s }

Of these options I still think Option 1 matches most closely the existing 
systems...

See this list of "EC" types... that have drastically different security 
properties:
- https://www.iana.org/assignments/jose/jose.xhtml#web-key-elliptic-curve
- https://safecurves.cr.yp.to/index.html

If it's ok to have "secp256k1" and "secp384r1" both use kty: EC....

Then it follows that its ok for dilithium and falcon to both use kty: LATTICE

If it's ok to have "Ed25519" us "OKP" and "secp256r1" use EC....

Then it follows that it's ok for dilithium and falcon to both use kty: CRYDI 
and FALCON.

Can we agree to eliminate option 1?

OS

On Sat, Jul 9, 2022 at 3:50 AM Ilari Liusvaara 
<[email protected]<mailto:[email protected]>> wrote:
On Fri, Jul 08, 2022 at 10:34:11PM +0200, Anders Rundgren wrote:
> I can only iterate my claim that overloading an existing definition is an 
> unusual solution.
>
> However, since even the author of 
> https://datatracker.ietf.org/doc/html/rfc7517#section-4.1
> have abandoned [*] the (IMO) most logical interpretation, I guess
> this is it:
>
> All new keys having a "crv" SHOULD have "kty" = "OKP".

Well, if the new key is some prime-field weierstass elliptic curve,
then it should be EC (EC2 in COSE). EC/EC2 was designed for those
things.

BLS is not prime-field, so it does not fit EC/EC2.



-Ilari

_______________________________________________
COSE mailing list
[email protected]<mailto:[email protected]>
https://www.ietf.org/mailman/listinfo/cose


--
ORIE STEELE
Chief Technical Officer
www.transmute.industries

[https://drive.google.com/a/transmute.industries/uc?id=1hbftCJoB5KdeV_kzj4eeyS28V3zS9d9c&export=download]<https://www.transmute.industries>
_______________________________________________
COSE mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/cose

Reply via email to