Re: [Cfrg] irsg review of draft-mcgrew-hash-sigs-12

Stephen Farrell <stephen.farrell@cs.tcd.ie> Wed, 05 September 2018 00:03 UTC

Return-Path: <stephen.farrell@cs.tcd.ie>
X-Original-To: cfrg@ietfa.amsl.com
Delivered-To: cfrg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 85B96126DBF; Tue, 4 Sep 2018 17:03:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.3
X-Spam-Level:
X-Spam-Status: No, score=-4.3 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cs.tcd.ie
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 80fl8bcsPhln; Tue, 4 Sep 2018 17:03:54 -0700 (PDT)
Received: from mercury.scss.tcd.ie (mercury.scss.tcd.ie [134.226.56.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 55F1B130FDB; Tue, 4 Sep 2018 17:03:53 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by mercury.scss.tcd.ie (Postfix) with ESMTP id D706CBE4D; Wed, 5 Sep 2018 01:03:50 +0100 (IST)
X-Virus-Scanned: Debian amavisd-new at scss.tcd.ie
Received: from mercury.scss.tcd.ie ([127.0.0.1]) by localhost (mercury.scss.tcd.ie [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id l1MVCGinH3Il; Wed, 5 Sep 2018 01:03:46 +0100 (IST)
Received: from [10.244.2.138] (unknown [95.45.153.252]) by mercury.scss.tcd.ie (Postfix) with ESMTPSA id 815CDBE3E; Wed, 5 Sep 2018 01:03:46 +0100 (IST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cs.tcd.ie; s=mail; t=1536105826; bh=BoHgLvTk6FRITrfQilJCgb+vpdwo9vBJGLeIVd/1frU=; h=To:Cc:References:From:Subject:Date:In-Reply-To:From; b=NuVHc2eE81/qKeLq+QMIWyuxubDf6HUHY+3Fw/ZlwviIvDZzN995ZLLL5g+hGhGk3 sRT+smWPe0BrYgLYdbskPjBQNJ9c57mxI0RfawTj/XOP0JAU+EZyrqinLmleRIZxQY C//m1KotXAuqDPVQ2ZA1i6Tu8eD5SA+9T08Iv6Nw=
To: "Scott Fluhrer (sfluhrer)" <sfluhrer@cisco.com>, "cfrg@irtf.org" <Cfrg@irtf.org>
Cc: "irsg@irtf.org" <irsg@irtf.org>
References: <be39f4e5-1cf7-9bf4-1bcb-6192e2168137@cs.tcd.ie> <b822dc1c93ae440291cabd642404d671@XCH-RTP-006.cisco.com>
From: Stephen Farrell <stephen.farrell@cs.tcd.ie>
Openpgp: id=5BB5A6EA5765D2C5863CAE275AB2FAF17B172BEA; url=
Autocrypt: addr=stephen.farrell@cs.tcd.ie; prefer-encrypt=mutual; keydata= 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 4MrnagFdcFnWYp1JPh96ZKjiqBwMv/H0kw==
Message-ID: <59d9a102-8ba8-3469-8277-3facb0dd6a11@cs.tcd.ie>
Date: Wed, 05 Sep 2018 01:03:45 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1
MIME-Version: 1.0
In-Reply-To: <b822dc1c93ae440291cabd642404d671@XCH-RTP-006.cisco.com>
Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="vZQ62sow04aGET4OmhsJ3JvRinqoBtZiZ"
Archived-At: <https://mailarchive.ietf.org/arch/msg/cfrg/vep6EZEcu5WN53yO4y3vw2Fir4k>
Subject: Re: [Cfrg] irsg review of draft-mcgrew-hash-sigs-12
X-BeenThere: cfrg@irtf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Crypto Forum Research Group <cfrg.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/cfrg>, <mailto:cfrg-request@irtf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cfrg/>
List-Post: <mailto:cfrg@irtf.org>
List-Help: <mailto:cfrg-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/cfrg>, <mailto:cfrg-request@irtf.org?subject=subscribe>
X-List-Received-Date: Wed, 05 Sep 2018 00:03:58 -0000

Hiya,

To be clear: the responses below are such that I'm happy
for my IRSG review to be ready-to-publish. (That said, I'm
even happier to chat more about points below.)

On 04/09/18 04:43, Scott Fluhrer (sfluhrer) wrote:
>> -----Original Message----- From: Cfrg <cfrg-bounces@irtf.org> On
>> Behalf Of Stephen Farrell Sent: Wednesday, August 29, 2018 9:20 AM 
>> To: cfrg@irtf.orgHiy Cc: irsg@irtf.org Subject: [Cfrg] irsg review
>> of draft-mcgrew-hash-sigs-12
>> 
>> 
>> Hiya,
>> 
>> This is a nice piece of work, thanks.
> Thank you.
> 
>> I've a few comments and a bunch of nitty things below. From the
>> comments, I'd say that only #1 and #5 really need to be resolved
>> before publication, the others (and the nits) aren't the kind of 
>> thing that ought block progress. (And it could well be that neither
>> #1 nor #5 really need changes too of course - I do often get things
>> wrong:-)
>> 
>> Cheers, S.
>> 
>> (1) Shouldn't there be a section like the one in XMSS? [1] If the
>> authors were ok with adding something like that, I think that'd be
>> good. Given the earlier discussion on the CFRG list that resulted
>> in [1], I'd say the RG ought be asked if they no longer think that
>> kind of thing is needed, if the draft is to be published as-is.
>> 
>> [1] https://tools.ietf.org/html/rfc8391#section-1.1
> 
> Ok, I put it in there.  As LMS shares the same strengths and
> weaknesses as XMSS, everything in the XMSS section is applicable to
> LMS; I just copied and pasted.

Cool.

> 
>> 
>> (2) Is defining a separate one-time LM-OTS mechainism, as if it
>> could be used in isolation, (in section 4) really worthwhile? I'm
>> not sure there are applications for that.  If we're really only
>> interested in signature schemes that can emit multiple signatures,
>> then I think not presenting this as if it could be used alone could
>> be a good idea. (Even if exactly the same thing is defined as an
>> internal mechanism.) That said, I do really like the presentation
>> in 4.1 so am not asking to change that much, just to say that it's
>> not independently useful.  I guess what I dislike is the 1st column
>> of table 1 that gives the impression these are usable signature
>> mechanisms, and the IANA registry for OTS signature schemes (table
>> 3). This needn't get in the way of publication though.
> 
> Whether LM-OTS is an independently usable mechanism is something that
> has changed over time; in the earlier versions of the drafts, it was.
> Currently, we don't specify that it is (largely because, just like
> you, we don't see that as a very useful primitive outside of LMS);
> the current text attempts to reflect that.
> 
> On the other hand, we do need the IANA registry for it, because it
> does occur within LMS, and it does have multiple possible settings.

Not sure I agree really but see #5 below.

> Now, we could have an integrated space that specified both the LM-OTS
> and LMS settings; however, that'd be an non-interoperable change, and
> as there are multiple implementations now, I would not like to do
> that.

Understood. OTOH, if we're dealing with a few implementations
and not much deployment, now is a fine time to fix things that
may cause bugs or confusion later.

> 
>> 
>> (3) As an editorial comment, section 6 isn't near as clear as
>> section 5 for this reader - 5 was really well described, but I
>> found 6 quite confusing. If it were possible to improve that,
>> that'd be great. I think describing HSS by saying that the private
>> keys from the leaves of the parent tree are used to sign the root 
>> of the child trees would have helped me a lot. (Assuming that the
>> picture on slide 19 of [2] illustrates what's going on with HSS,
>> but without introducing the reservation idea.) See also the
>> specific nitty comments on section 6 below. All that said, while it
>> took me a while to understand the text in section 6, I did
>> eventually, and I guess an implementer would also, so publication 
>> without changing this would be ok.
> 
> Ok, I tried adding this text near the top of section 6:
> 
> In HSS, we have a sequence of L LMS trees, where the public key for
> each LMS tree is signed by one of the leaves of the next LMS tree
> (and the public key of the last tree is effectively the public key
> for the entire HSS system).  For example, if we have a three level
> hierarchy (L=3), then we have:
> 
> One LMS tree (level 2 in the notation we'll use below) that signs the
> message
> 
> A second LMS tree (level 1) that signs the public key for the level 2
> LMS tree
> 
> A third LMS tree (level 0) that signs the publi key for the level 1
> LMS tree
> 
> The root of the level 0 LMS tree is contained in the HSS public key.
> 
> To verify the LMS signature, we would verify all the signatures:
> 
> We would verify that the level 1 LMS public key is correctly signed
> by the level 0 signature.
> 
> We would verify that the level 2 LMS public key is correctly signed
> by the level 1 signature.
> 
> We would verify that the message is correctly signed by the level 2
> signature.
> 
> We would accept the HSS signature only if all the signatures 
> validated.
> 
> During the signature generation process, we sign messages with the 
> lowest (level L-1) LMS tree.  Once we have used all the leafs in
> that tree, we would discard it, generate a fresh LMS tree, and sign
> it with the next (level L-2) LMS tree (and when that is used up, 
> recursively generate and sign a fresh level L-2 LMS tree.
> 
> Do you think that this overview (in addition to the more detailed
> description already in the draft) is a help?

That'd have helped me as a reader yes.

>> (4) There's a lack of guidance as to what is mandatory to
>> implement.  The only thing you really say along those lines is that
>> "implementations MUST support HSS" with L=1. I think it'd be better
>> if you picked (exactly!) one LMS option and said that that was MTI.
>> That's just my opinion and I guess the RG were ok with not being
>> that specific, so this oughtn't hold up publication if the RG are
>> still ok with that and/or the authors really don't wanna pick one. 
>> OTOH, pretty much every CFRG RFC that has more than one choice
>> causes debate in IETF WGs when it comes time to use those, so if
>> picking one was doable, that'd be a fine thing to do I reckon.
> 
> That has not been a topic that's come up, either between us, nor on
> the mailing list.
> 
> I don't personally feel comfortable in mandating something without
> discussing it first.  

Fair point. We should bear in mind though that discussing this
once in CFRG is maybe better than every IETF WG that wants to
use LMS re-doing the discussion but based on less understanding
of the scheme (if, that is, a CFRG discussion results in selecting
one option as MTI).

> Does anyone else what to chime in?  Should we
> mandate that a verifier be able to recognize anything in the draft
> (which isn't all that many options currently)?

I'd argue for a tighter spec than that myself. (Just as one
input.) My take would be to say that LMS_SHA256_M32_H20 with
LMOTS_SHA256_N32_W8 is the only MTI option for signers or
verifiers.

My argument for that is that I think there'll be applications
for which that could work, if one has a key roll-over scheme
(e.g. last N sigs need to sign a new tree root), and that such
roll-over will absolutely be needed by applications so we ought
not allow so many sigs that people decide to not implement any
key roll-over. h=15 might be too shallow but I'd be fine if
that was the one and only MTI; I'd argue against h=25 as the
only MTI as that may be too deep to force implementers to deal
with key roll-over. I picked LMOTS_SHA256_N32_W8 as that has
the shortest sig which I think will be important for getting
any traction but I wouldn't argue against the w=4 variant if
that had some benefits.

And to be clear: picking an MTI here just means that those who
want to use this won't have to, but can if they want, argue
about what's right for their particular situation.

> 
>> 
>> (5) The IANA registries seem a bit odd: why no HSS registry?
> 
> Because there are no HSS-specific opaque values.  The only
> HSS-specific field in the public key/signature is the L value, which
> is a small integer (which obviously needn't be registered with IANA)

Hmm. Not sure I agree there - would it be wise to accept
and try to verify an L=2^32 HSS signature? What about API
issues for a library that implements private key handling,
how would an application ask for a 20/15 private key? How
about if someone defines a SHA3 based LMS - do verifiers
have to decode into the signature to find that out?

All that said, I don't have the HSS signature format in
my head really, so the above may not really argue for having
HSS codepoints. (Or they may:-) Or maybe it's fine to not
expect the same level of interop for HSS as for LMS? (I'm
not clear if that's considered an important goal or not.)

> 
>> Why are the code points for the two registries contiguous?
> 
> Combination of coincidence and historic accident.

Sounds like a potential source of confusion to me.

> 
> Originally, we had both N=32 and N=16 parameter sets; for some
> reason, in the -04 version of the draft, the LM-OTS N=32 parameter
> sets came first (and were assigned values 1 through 4), and in LMS
> the N=16 parameter sets came first (being assigned values 1 through
> 4, with the N=32 parameter sets being assigned values 5 through 8).
> In the next version of the draft, we removed the N=16 parameter sets
> (as they weren't quantum-safe), but left the N=32 assigned values the
> same, giving the structure you see.

Ah, that history wasn't clear. I don't think it needs to be in the
RFC though. It does mean that my comment #5 oughtn't be blocking
though.

> 
>> What if IANA are asked to register a value of 0x00000005 for the
>> LM-OTS registry?
> 
> That would not be an issue at all.  The LMS and LM-OTS registries are
> separate name-spaces; when parsing a public key or signature, we
> always know which we are dealing with, and so there are no issue if
> the same value is given different meanings to the different
> registries.

So maybe make that point in section 8? If for no other reason, it'd
head off a crazy developer with code that branches on just the code
points and not the combo of alg and codepoint?

> 

>> nits

All your answers below seen entirely fine to me, thanks. I do have
an answer for the one where you ask a question.

>> 
>> 
>> - 3.3 - too many options, as always :-(
> 
> Sigh...  However, there is one saving grace that not many other
> cryptoalgorithms share; no matter which set of options the user
> chooses, the security remains the same.  This is not often true in
> crypto (e.g. a 1024 bit RSA key doesn't have the same security as a
> 2048 bit key), however it is true here.  Now, different options given
> different practical tradeoffs (in terms of performance, signature
> size, number of signatures per key), however I believe that
> developers can be trusted to accurately weigh those practical
> concerns.
> 
>> 
>> - Algorithm 4a: why call out the 4 byte min in step 1? I bet there 
>> are other encoding checks an implementer would need to do, and
>> just including this one might lead someone to not think about which
>> other checks are needed to be safe.  I have the same comment on the
>> length checks in other places. (Bear in mind that this is a nit
>> though!)
> 
> Actually, I believe that all necessary length checks are listed in
> the pseudocode.  If you spot a counterexample, please tell me.

Sorry, don't have one. I'd bet a beer though:-)

>> - 5.1: the SHOULD for the hash function being the same for LMS and 
>> LM-OTS is a bit odd. I can't think of a reason for using different
>> hashes - e.g. afaik there's no (and unlikely to be a) legacy LM-OTS
>> implementation that'd be used independently of LMS, so I don't see
>> the reason to not have a MUST here. (And MUSTs are easier:-)
> 
> You aren't the first one to ask.  To quote my answer to the previous
> person:
> 
> As for whether we should allow this [allowing different hash
> functions in LM-OTS and LMS] as an option, well, we've actually
> changed our minds about that (version -06 did not).  On the other
> hand, I do not see any specific reason to forbid it; doing so doesn't
> cause any unexpected cryptographical weaknesses (other than giving
> the attacker his choice of two different hash functions to attack).
> 
>> 
>> - section 5 generally - it'd have been nice to see an equivalent of
>> table 1 here.
> 
> Don't we have table 2 in section 5?  It doesn't give signature
> lengths, but the LMS signature length is a function of both the
> LM-OTS and the LMS parameter set.

Sure. But the sig len is what some readers will want to know.
If you did pick one MTI then you could report on the sig len
for it.

> 
>> 
>> - section 6: Can trees at different levels have different depths?
> 
> Yes, if you look at the parameter set recommendations, we include
> mismatched parameter sets, such as 15/10 (the top tree has h=15, the
> bottom tree has h=10).
> 
> And, yes, they would appear to be a good idea, at least in some
> settings; which the LMS trees are identical from a cryptographical
> standpoint, they aren't from a practical ones.  There are certainly
> valid reasons why someone might want to top-most tree to be larger.
> 
>> I guess so.  It'd be good to be explicit about that. Can trees at
>> the same level have different depths?
> 
> Hmmm, there's nothing that a verifier can do to make sure that a
> signer isn't doing it; would just a simple MUST NOT statement be good
> enough?

If that's even needed? The only bad outcomes I can think of are
1) if a verifier assumes uniformity, non-uniform level-i depths
might trigger some bugs and 2) I guess it'd be harder to get
portability (which is not claimed as a goal here).

>> 
>> - 6.4: be better if the table on p31 was an actual table, also be 
>> good to list the value of N for each.
> 
> I made it into a table; however all current parameter sets have
> N=32.
> 
>> 
>> - Appendix F: I'm lazy - I didn't check the test vectors:-)
> 
> Bad reviewer; no donut :-)

Ah, bummer:-)

Cheers,
S.

>