Re: [COSE] Benjamin Kaduk's Discuss on draft-ietf-cose-hash-sig-07: (with DISCUSS and COMMENT)
Benjamin Kaduk <kaduk@mit.edu> Thu, 05 December 2019 22:18 UTC
Return-Path: <kaduk@mit.edu>
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 38E731201A3; Thu, 5 Dec 2019 14:18:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 kR1fxcZmyZWx; Thu, 5 Dec 2019 14:18:15 -0800 (PST)
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 08F03120168; Thu, 5 Dec 2019 14:18:14 -0800 (PST)
Received: from kduck.mit.edu ([24.16.140.251]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id xB5MI6eW029406 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 5 Dec 2019 17:18:09 -0500
Date: Thu, 05 Dec 2019 14:18:06 -0800
From: Benjamin Kaduk <kaduk@mit.edu>
To: Russ Housley <housley@vigilsec.com>
Cc: Jim Schaad <jimsch@augustcellars.com>, IESG <iesg@ietf.org>, cose <cose@ietf.org>
Message-ID: <20191205221806.GH13890@kduck.mit.edu>
References: <157539486101.24700.12161503456212968239.idtracker@ietfa.amsl.com> <619FB9BA-BDEB-4E31-BC04-DF265F27E51D@vigilsec.com> <559B8753-15F1-4C18-A604-686FD0A96215@vigilsec.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <559B8753-15F1-4C18-A604-686FD0A96215@vigilsec.com>
User-Agent: Mutt/1.12.1 (2019-06-15)
Archived-At: <https://mailarchive.ietf.org/arch/msg/cose/RpxL9SGXhThL6AkzhuXoC71HT1A>
Subject: Re: [COSE] Benjamin Kaduk's Discuss on draft-ietf-cose-hash-sig-07: (with DISCUSS and COMMENT)
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: Thu, 05 Dec 2019 22:18:17 -0000
Hi Russ, On Wed, Dec 04, 2019 at 04:06:34PM -0500, Russ Housley wrote: > Ben: > > I am trying to work with Jim Schaad on your DISCUSS comment. He has done an implementation, so I'd like to get his insight. As it happens, I had had the same thought, so I expect he had the answer at hand for you :) > Turning to your comments ... > > > > > ---------------------------------------------------------------------- > > COMMENT: > > ---------------------------------------------------------------------- > > > > Related to the above Discuss, should we have an explicit statement that we do > > not define a way to convey an HSS/LMS private key in a COSE_Key object? > > (I think it is correct to not define such a thing, since conveying a > > stateful private key is something of a non-sequitur.) > > I agree that we do not want to define such a structure. I'm not sure where to say anything about it. The best place I can see is in Section 5 (Operational Considerations), as something like "Because of the need to maintain state across invocations of the signing algorithm, a COSE Key Type Parameter for encoding the private key (and its state) is deliberately not defined; serializing the state for conveyance presents too great a risk of state reuse to justify any potential benefit from doing so." > > It's not entirely clear to me how much of RFC 8554 we need to duplicate > > in order to give the reader an understanding of the signature structure > > we're using. A few times while reading Sections 2.x I had to > > double-check that I was reading the right document :) > > I tried to achieve a balance. I wanted to have enough to understand HSS, LMS, and LM-OTS. Understood, and I'm deferring to you on judging the balance. > > Section 1.1 > > > > If large-scale quantum computers are ever built, these computers will > > be able to break many of the public-key cryptosystems currently in > > use. A post-quantum cryptosystem [PQC] is a system that is secure > > against quantum computers that have more than a trivial number of > > quantum bits (qubits). It is open to conjecture when it will be > > > > (nit: they're also secure against quantum computers that do have a > > trivial number of bits. Yes, I know this is also true about classical > > signature algorithms with sufficiently large keys, but the text here is > > perhaps not making quite the point we want to make.) > > I suggest: > > If large-scale quantum computers are ever built, these computers will > have more than a trivial number of quantum bits (qubits) and they > will be able to break many of the public-key cryptosystems currently > in use. A post-quantum cryptosystem [PQC] is a system that is secure > against against such large-scale quantum computers. It is open to > conjecture when it will be feasible to build such computers; however, > RSA [RFC8017], DSA [DSS], ECDSA [DSS], and EdDSA [RFC8032] are all > vulnerable if large-scale quantum computers come to pass. A nice solution; thanks! > > Since the HSS/LMS signature algorithm does not depend on the > > difficulty of discrete logarithm or factoring, the HSS/LMS signature > > algorithm is considered to be post-quantum secure. The use of HSS/ > > LMS hash-based signatures to protect software update distribution, > > perhaps using the format that is being specified by the IETF SUIT > > Working Group, will allow the deployment of software that implements > > new cryptosystems. > > > > In light of the genart reviewer's comments, we could recast this as > > "there is desire have HSS/LMS-based signatures available to protect > > software update distribution, including from the IETF SUIT Working > > Group" to place the focus on the desire, which is more easily fixed in > > time, rather than the WG output, which will change with time. > > I suggest: > > Since the HSS/LMS signature algorithm does not depend on the > difficulty of discrete logarithm or factoring, the HSS/LMS signature > algorithm is considered to be post-quantum secure. The use of HSS/ > LMS hash-based signatures to protect software update distribution > will allow the deployment of future software that implements new > cryptosystems. By deploying HSS/LMS today, authentication and > integrity protection of the future software can be provided, even if > advances break current digital signature mechanisms. > > > Section 2.2 > > > > Each tree in the hash-based signature algorithm specified in > > [HASHSIG] uses the Leighton-Micali Signature (LMS) system. LMS > > systems have two parameters. The first parameter is the height of > > the tree, h, which is the number of levels in the tree minus one. > > > > I strongly suggest making it more clear that there are two (types of) > > trees involved -- the HSS tree of Section 2.1, and a tree within a given > > LMS signature (what's being discussed here). Just using an unadorned > > "the tree" is a recipe for confusion. > > Perhaps an introduction sentence is enough: > > Subordinate LMS trees are placed in the the HSS structure discussed > in Section 2.1. Each tree in the hash-based signature algorithm > specified in [HASHSIG] uses the Leighton-Micali Signature (LMS) > system. It seems to be, yes. > > The [HASHSIG] specification defines the value I as the private key > > identifier, and the same I value is used for all computations with > > the same LMS tree. In addition, the [HASHSIG] specification defines > > > > I think RFC 8554 uses I as the identifier for the key pair, not just the > > private key, and it seems that in the COSE context we are more likely to > > be referring to a public key than a private key. > > Section 4.3 of RFC 8554 says that x, I, and q are taken from the private key, so I think this text is accurate. > > To address your point, I suggest: > > The [HASHSIG] specification defines the value I as the private key > identifier, and the same I value is used for all computations with > the same LMS tree. The value I is also available in the public key. > In addition, the [HASHSIG] specification defines the value T[i] as > the m-byte string associated with the ith node in the LMS tree, where > and the nodes are indexed from 1 to 2^(h+1)-1. Thus, T[1] is the > m-byte string associated with the root of the LMS tree. > > > > Section 2.3 > > > > n - The number of bytes output by the hash function. This > > specification supports only SHA-256 [SHS], with n=32. > > > > H - A preimage-resistant hash function that accepts byte strings > > of any length, and returns an n-byte string. This > > specification supports only SHA-256 [SHS]. > > > > Is supporting other n values basically just a matter of allocating from > > a registry? If so, we might want to tweak the wording a bit to leave > > the possibility for such a generalization. > > Good point. I suggest: > > n - The number of bytes output by the hash function. For > SHA-256 [SHS], n=32. > > H - A preimage-resistant hash function that accepts byte strings > of any length, and returns an n-byte string. > > > The LM-OTS signature value can be summarized as the identifier of the > > LM-OTS variant, the random value, and a sequence of hash values (y[0] > > through y[p-1]) that correspond to the elements of the public key as > > described in Section 4.5 of [HASHSIG]: > > > > nit: I'd consider a different wording than "correspond to"; the > > correspondence is a bit hard to describe clearly, but "hash values that > > include as input" (or similar) is IMO fairly clear. > > I suggest: > > The LM-OTS signature value can be summarized as the identifier of the > LM-OTS variant, the random value, and a sequence of hash values (y[0] > through y[p-1]) as described in Section 4.5 of [HASHSIG]: > > u32str(otstype) || C || y[0] || ... || y[p-1] > > > Section 3 > > > > o The 'kty' field MUST be present, and it MUST be 'HSS-LMS'. > > > > (Re. "MUST be present", I note that RFC 8152 already has """The element > > "kty" is a required element in a COSE_Key map.""" > > Yes, but the check is still needed. I suggest: > > o The 'kty' field MUST be 'HSS-LMS'. > > > > > o If the 'alg' field is present, and it MUST be 'HSS-LMS'. > > > > nit: no "and". > > Fixed. > > > Section 5 > > > > To ensure that none of tree nodes are used to generate more than one > > signature, the signer maintains state across different invocations of > > the signing algorithm. Section 12.2 of [HASHSIG] offers some > > practical implementation approaches around this statefulness. In > > > > There is no Section 12.2 in RFC 8554; is perhaps Section 9.2 the > > intended one? > > Yes. Good Catch. Thanks for all the updates! -Ben
- [COSE] Benjamin Kaduk's Discuss on draft-ietf-cos… Benjamin Kaduk via Datatracker
- Re: [COSE] Benjamin Kaduk's Discuss on draft-ietf… Russ Housley
- Re: [COSE] Benjamin Kaduk's Discuss on draft-ietf… Russ Housley
- Re: [COSE] Benjamin Kaduk's Discuss on draft-ietf… Benjamin Kaduk
- Re: [COSE] Benjamin Kaduk's Discuss on draft-ietf… Benjamin Kaduk
- Re: [COSE] Benjamin Kaduk's Discuss on draft-ietf… Russ Housley
- Re: [COSE] Benjamin Kaduk's Discuss on draft-ietf… Benjamin Kaduk