Re: [COSE] draft-prorock-cose-post-quantum-signatures [Was: Re: Call for COSE Agenda Items for IETF 113 in Vienna]

Mike Prorock <mprorock@mesur.io> Tue, 15 March 2022 15:16 UTC

Return-Path: <mprorock@mesur.io>
X-Original-To: cose@ietfa.amsl.com
Delivered-To: cose@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7D6C73A1529 for <cose@ietfa.amsl.com>; Tue, 15 Mar 2022 08:16:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.908
X-Spam-Level:
X-Spam-Status: No, score=-1.908 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=mesur-io.20210112.gappssmtp.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id z2Ou4CLuuNcl for <cose@ietfa.amsl.com>; Tue, 15 Mar 2022 08:16:47 -0700 (PDT)
Received: from mail-vs1-xe2e.google.com (mail-vs1-xe2e.google.com [IPv6:2607:f8b0:4864:20::e2e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3FAF83A1520 for <cose@ietf.org>; Tue, 15 Mar 2022 08:16:47 -0700 (PDT)
Received: by mail-vs1-xe2e.google.com with SMTP id a186so21174000vsc.3 for <cose@ietf.org>; Tue, 15 Mar 2022 08:16:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mesur-io.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=G1XByUtS15FfqDGdejt85p+KW+zeCYNBxGjkolpfaag=; b=UqeY619jw5ezDsbqBSphVEn94LYzEohtUeMnYXplBT8LgWUHPZaDvbmU1gX/k5Zle8 C09d+fyzWUAfKFn1k6micV8ZyXPsNRgCDXeI79Fg5PJwBOzg5o2VzF0B3LMRYLIWZQIE TLvtnqTyGXQnOELFXKFQsDCnxVOBe3ofhdg6qpNX3vrC53raZ2LphhilWNPu9jlgrA6s 5/ZO3bnI1Ja9f6LHIpj8eGBgnOoueB658qExHYSS5YNz9d7cLHGQBXkcCmsFNCHlbe5l X3u9aT6upIZl0q57SkMWcCLMwVKNyx3R0CExb35fyRy1QJbqZGm23f1FM4Wevp22Jd7c 84UA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=G1XByUtS15FfqDGdejt85p+KW+zeCYNBxGjkolpfaag=; b=mBuGM2RaN8Coo/c5IJfhYE+3biX6yi+O2WgviXMsX5jQdrMoXSGHqncRUMWOkjRYsX qHP/MpDBfgwbJ8lqgs88gvlIIRwhU9bAmVuiil0/9QXw3kF7poGcV1p1Ein6fRncAQMh hM6Al85zObrqMcnDutWP5k63zqNXV+EBa3Nmv+lloz0Mfz0tmy4vz1BekrTqyOW5zEqC Oo1dfoMvbcFFLgUaAUkkK5Bqf0RsI90WvNjEEqLj1bLG7KHTxHemdT83NEqO7fGUUpup gm23q5oMx3NFrotcSmwQZKsaqw/+SP+P+DzdN9ifsT/P5k7AXwQ98Q5TJ7WGhx6whSr4 Wfdw==
X-Gm-Message-State: AOAM5308YB1hczlhi3PMAj3XolbhHNmTt+vCVePbpc90QmuOWfBY9UfG tdhfSYkXJUvQ6u3tR0lHJp9mtgQsh0d9xwenYBvz
X-Google-Smtp-Source: ABdhPJy5z5+sEDdTmPR2I1X3TwXINvN6QbW0UIwaIg47jgQ/eYO2oCL8DX4gq3IIvWS2WUtsAH1Bx0F8fi0t84sLcEE=
X-Received: by 2002:a67:e909:0:b0:322:76b9:d7ad with SMTP id c9-20020a67e909000000b0032276b9d7admr12696227vso.60.1647357405460; Tue, 15 Mar 2022 08:16:45 -0700 (PDT)
MIME-Version: 1.0
References: <SA2PR00MB1002DE43864B01F70546A691F50F9@SA2PR00MB1002.namprd00.prod.outlook.com> <CAN8C-_Jo_-=Jpava0db6BgR4j_BEyZp_3hN6VEv7MJuBwCsPQA@mail.gmail.com> <3053B653-6F26-421F-8498-1002030F3CD8@alkaline-solutions.com> <CAN8C-_JA2fN2HYVjbOjKUBJhJybo0DcLBZJEDoQpMznVi7Pxng@mail.gmail.com>
In-Reply-To: <CAN8C-_JA2fN2HYVjbOjKUBJhJybo0DcLBZJEDoQpMznVi7Pxng@mail.gmail.com>
From: Mike Prorock <mprorock@mesur.io>
Date: Tue, 15 Mar 2022 11:16:34 -0400
Message-ID: <CAGJKSNRWfK8T4+zk6mF80KUKyndjoKvTvJiUtzD1u9u8_rSecA@mail.gmail.com>
To: Orie Steele <orie@transmute.industries>
Cc: David Waite <david@alkaline-solutions.com>, Mike Jones <Michael.Jones@microsoft.com>, Ilari Liusvaara <ilariliusvaara@welho.com>, Russ Housley <housley@vigilsec.com>, "cose@ietf.org" <cose@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000f88eab05da43482d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/cose/2HkebUUO1RH_6dPsZQfUA2Gxq1g>
Subject: Re: [COSE] draft-prorock-cose-post-quantum-signatures [Was: Re: Call for COSE Agenda Items for IETF 113 in Vienna]
X-BeenThere: cose@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: CBOR Object Signing and Encryption <cose.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cose>, <mailto:cose-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cose/>
List-Post: <mailto:cose@ietf.org>
List-Help: <mailto:cose-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cose>, <mailto:cose-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 15 Mar 2022 15:16:53 -0000

Orie,
I think other alternative would be:
kty: PQL        // post quantum - lattice based
alg: CRYDI3  // crystals dilithium, parameter set 3
x: public
d: private

and
kty: PQH       // post quantum - hash based
alg: SP-SHAKE256-[n]-[w]-[h]-[d]-[k]-[t]  // SPHINCS+, shake256, parameter
set as noted
x: public
d: private

Mike Prorock
CTO, Founder
https://mesur.io/



On Tue, Mar 15, 2022 at 10:32 AM Orie Steele <orie@transmute.industries>
wrote:

> The goal in registering new JWK and JWS compatible terms for the family of
> post quantum crypto systems is to register only what is needed to identify
> the key and the signature.
>
> We are not trying to add any additional parameters, in the abstract, we
> want to convey "key type", "public key" and "private key", while following
> the conventions that came before us.
>
> So far, we think the OKP style Ed25519 keys are the model to follow, here
> is a reminder:
>
>       "kty": "OKP",
>       "crv": "Ed25519",
>       "x": "3ygWe2mas7ZvquJ2E_aNh3wJEcLPsHp_8r0UXoyhBwQ",
>       "d": "EKCZgwCYoasDC61z5aWR6LqvPbpxWPKFY1PexeW5WSw"
>
> https://www.rfc-editor.org/rfc/rfc8037.html#section-2 (reminder that crv
> is required... so sadly it seems we will need a new key type).
>
> this would mean something like this:
>
> kty: PQK
> pset: CRYD3 // handled like "crv" was for kty: OKP, with a new value for
> every new key type from lattice, hash or isogeny based systems
> alg: CRYD3 // optional
> x: pub
> d: priv
>
> another alternative would be:
>
> kty: CRYD3 // with a new value for every new key type from lattice, hash
> or isogeny based systems
> alg: CRYD3 // optional
> x: pub
> d: priv
>
> OS
>
>
> On Tue, Mar 15, 2022 at 1:48 AM David Waite <david@alkaline-solutions.com>
> wrote:
>
>>
>>
>> On Mar 14, 2022, at 2:19 PM, Orie Steele <orie@transmute.industries>
>> wrote:
>>
>> <snip>
>>
>> So for a dilithium example:
>>
>> kty: PQK (required)
>> pset: CRYD3 (required)
>> x: ... (required)
>> alg: CRYD3 (optional)
>>
>>
>> Would you expect additional parameters (say “s1” and “s2”) for private
>> keys?
>>
>> Is X consistent within a parameter set, or is there variability (such as
>> the algorithm to generate the matrix from a seed value, or the option to
>> include a full matrix)
>>
>> Obviously JWK thumbprint will need to be aware of all required fields,
>> and will need to drop all optional fields in order to be useful.
>>
>>
>> And if those rules aren’t generic and simple, it is possible we have
>> rolled multiple key types into one “kty”. The “EC” key type allowed just
>> “X” coordinates for other curves, but my interpretation is that “OKP” was
>> still created because the public value for Edwards curves was defined with
>> a different packed binary format.
>>
>> I posit it is better to have experimental key types for experimental key
>> formats, vs the potential for a complex set of key forms in future
>> production deployments. That is not to say that I have an informed opinion
>> on stability of any proposal.
>>
>> If we don't define something like "pset" and we don't make "alg" required
>> for "kty:PQK"... the only optional will be to explode based on mismatched
>> keys / signatures... unless I am missing something... we have the same
>> problem with P-256 keys today... when "alg" is not present, you can't tell
>> if the key is for "signing" or "key agreement"... which means that any JWE
>> / JWS can target that key, and the key representation won't catch what the
>> key was intended for... unless "alg" and "use" are present... which nobody
>> can rely on, because they are marked optional.
>>
>>
>> Parameter set seems appropriate, as long as it is the term of art for the
>> category of key type, and (for a given parameter set name) is in a
>> non-extensible format.
>>
>> WRT the usage of “alg” - there can be multiple algorithms that leverage
>> the same underlying key object, which means a subtype is a different level
>> of restrictiveness/specificity than specifying an algorithm. A single
>> instantiated key of a subtype can be used with multiple algorithms (“RS”
>> and “PS” families), and a single algorithm can be used with multiple key
>> subtypes - such as “ECDH-ES” and “EdDSA”.
>>
>> This would make the subtype of a key and its algorithmic usage
>> restrictions orthogonal.
>>
>> Take a look at:
>> https://auth0.com/docs/secure/tokens/json-web-tokens/json-web-key-set-properties
>>
>> Notice that they include "alg" and "use"... if both are optional, why
>> include them in such an example?
>>
>>
>> FWIW I think making "alg" required is the best thing to do for new key
>> types moving forward (it addresses future ambiguity / explicit over
>> implicit makes me feel safer).
>>
>>
>> The “alg” and “use” parameters are restrictions on key object usage,
>> rather than specifying the key object cryptographic properties themselves.
>> IMHO, one needs an underlying PKI or just blanket immutability which
>> restricts a party from changing such parameters over time for them to have
>> value.
>>
>> Historically these have not been “self asserted”, but rather asserted by
>> an authority in a PKI system who has made an integrity protected statement
>> about the key (e.g. a public certificate). In this case they may not be
>> self-imposed restrictions, but restrictions by the trust broker, such as
>> “they can’t act as a sub-CA” or “check here to see if the authority marked
>> this key as revoked”.
>>
>> Likewise, key usage restrictions are systems-specific. An example would
>> be key operations (also specified in the JWK RFC, distinct from “use”).
>> Verification relationships in decentralized identifier documents are
>> arguably another example of operational restrictions, albeit in a graph
>> rather than a simple broker hierarchy.
>>
>> -DW
>>
>
>
> --
> *ORIE STEELE*
> Chief Technical Officer
> www.transmute.industries
>
> <https://www.transmute.industries>
> _______________________________________________
> COSE mailing list
> COSE@ietf.org
> https://www.ietf.org/mailman/listinfo/cose
>