[lamps] Re: AD comments on draft-ietf-lamps-dilithium-certificates

Deb Cooley <debcooley1@gmail.com> Sat, 03 May 2025 10:54 UTC

Return-Path: <debcooley1@gmail.com>
X-Original-To: spasm@mail2.ietf.org
Delivered-To: spasm@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id BE6CA246394C; Sat, 3 May 2025 03:54:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: 0.862
X-Spam-Level:
X-Spam-Status: No, score=0.862 tagged_above=-999 required=5 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9aAgziZ4Qpe0; Sat, 3 May 2025 03:54:23 -0700 (PDT)
Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id A18002463945; Sat, 3 May 2025 03:54:23 -0700 (PDT)
Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-22435603572so35961245ad.1; Sat, 03 May 2025 03:54:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746269663; x=1746874463; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=zkhJTR1bWFTSUTxX6FSLO+jv4gPjYsYUyTqnNtLDh0g=; b=ZYW+5dcVXnuPJam+hMkFwuIW3KKnq691AkKtIQOX/A03rGrW4v5d1YL3nY6shL5X0y 0/hhgH3EFSMnvBLwCgDmo8oEWjfMS/YKCzPs3j1AE5TQyZZxfiunMLf5Z3SGtVgAw3s9 1XL1lo8dBzC+39Z2LbJ4v6v6lfd6aQVobCJyiqkzL3aL64ptIgRtz+HiIy873TjeMUpX HD1V+9UXcGDFh3Irep9AFQn9IYdr+P5kjQOXuqfeLXAnQ2sTyZ10rbZxR4JYtBr5sPId HAYMJNYFo71dMogQMtYcKlKeevoZ5JoTrCwcfGHfbGZPRJhtmf/8imAhnPd2iUKGIfq1 wpoQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746269663; x=1746874463; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=zkhJTR1bWFTSUTxX6FSLO+jv4gPjYsYUyTqnNtLDh0g=; b=V3l55Harrad2y7BRGpywPLurImop9aFE8sjvvZb0OzkpHJvM4adXCEYhUQI0Six3vo xwcBCeQBQSHUpF6jYZC14k0V8rzuth/FTvfJhWxtY0tcDf8FpENXoi5ZBrOQpuzRLz3Y edCYJQUJdg+31TTe4+qk/gpcxNo6Yk+Symj96W8uAaAlv7MqMVcTlagPerOwl10zkaJZ d7C3joMw5T56ALIM6ANy3JqWgniLmHrwZQRqym5C34O3ltXKBS9a1eIFq3Ntmkmlnt1Z DH02ddTCLuQsFJ53ET3lY0XJ/B/E6iibyE7Tvr90C+eA/hp7p2tPniWEkNHUIsG6TDVk fftw==
X-Forwarded-Encrypted: i=1; AJvYcCW698AAcbLha0W0RO020EUmeELA0oewvu7l2WPFQDyX3vgvIYqGYAESCW7qeIDqcoYXLS/9+2JDHs77ggydg/g5YtUfyPh3xEfIgeLx5Fh0kJh47ZTK+mNB+9SxYnByZw==@ietf.org, AJvYcCXncWt5Tvp4MoJYrVDPhJahmDecqZZXL4pisEBDK7V9ave/+dg/8Xs6simQeyl+QHYSpyugsk9hWlHA0Iv6@ietf.org
X-Gm-Message-State: AOJu0YwIjmTE7BwOG6VMTKvnlZAkW/27IhhLysLPK4F2ZvBN6HTEEOB0 uCMkjtDQy8ADIerAIrk97yJwR9+JcoZEm1fhC7q/1H/1Al0ziGfvGsUc13qcWvQ2zaatxpwqCjh FtlOsWVPrRaUslltrdGyvZ7NAag==
X-Gm-Gg: ASbGncs4odsl/0fc50USeW7wpqGqIAGiKUHNMLRkERgZTH8S760FoclULVoe/2K+bnX F+gvj1SVyLKXo1JQvdIglbsZp/xuJoH9ho5ZdnZwOypIMmggJJm2X2m8gwo8sWm5/0/702osjUn RY0zYHlS8NAN1IE+HRluRiq9vrqJQRSBkkF9BEqYGTHDTqRNSK09/ch5A=
X-Google-Smtp-Source: AGHT+IG2irlMZaYF4mumBM3KQcb+MP+0jcx/1DnLUTv35hye+ikmiGR2v/UsErSbqFQKSDJ6ds57Hb+eTpJGlCaZpCo=
X-Received: by 2002:a17:90b:3d84:b0:2ee:ab29:1a63 with SMTP id 98e67ed59e1d1-30a61957f3dmr957699a91.3.1746269662328; Sat, 03 May 2025 03:54:22 -0700 (PDT)
MIME-Version: 1.0
References: <CAGgd1OdzrYgzPUm2SdyBFi9mw1X3rDraPjQF5XgNGObpWdb_gw@mail.gmail.com> <CAMjbhoWDBduBqOszOt696s98uYM0Yr8tJn==TjMvKr1dj97k2g@mail.gmail.com>
In-Reply-To: <CAMjbhoWDBduBqOszOt696s98uYM0Yr8tJn==TjMvKr1dj97k2g@mail.gmail.com>
From: Deb Cooley <debcooley1@gmail.com>
Date: Sat, 03 May 2025 06:54:10 -0400
X-Gm-Features: ATxdqUGP_2N9eyrqzSGOjTEU4NKsPVZTq4rylZExKVwk6fSO2XYRCA-kX-7zeCU
Message-ID: <CAGgd1OfLNksoZa4vNpQVFAyR-kHQVHMCxHmD+Yak1EqgmhviDg@mail.gmail.com>
To: Bas Westerbaan <bas@cloudflare.com>
Content-Type: multipart/alternative; boundary="000000000000e7bddd06343916a2"
Message-ID-Hash: HN25S2QUQQGL5FFUA3GMQVD5PB6QXX53
X-Message-ID-Hash: HN25S2QUQQGL5FFUA3GMQVD5PB6QXX53
X-MailFrom: debcooley1@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-spasm.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: LAMPS WG <spasm@ietf.org>, draft-ietf-lamps-dilithium-certificates.authors@ietf.org, LAMPS Chairs <lamps-chairs@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [lamps] Re: AD comments on draft-ietf-lamps-dilithium-certificates
List-Id: This is the mail list for the LAMPS Working Group <spasm.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/spasm/eyN55Ilb1P_POC6cvYBQuTTQp40>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spasm>
List-Help: <mailto:spasm-request@ietf.org?subject=help>
List-Owner: <mailto:spasm-owner@ietf.org>
List-Post: <mailto:spasm@ietf.org>
List-Subscribe: <mailto:spasm-join@ietf.org>
List-Unsubscribe: <mailto:spasm-leave@ietf.org>

Thanks for the quick work.  These all look good.

If you send me a full diff before you push a version update, I can do one
last check.  (watch the long lines, which apparently get truncated in the
html version)

Deb

On Sat, May 3, 2025 at 5:48 AM Bas Westerbaan <bas@cloudflare.com> wrote:

> Deb,
>
> Thank you for your comments.
>
> Section 1.1:  Is there a decent source for terminology?  If so, list
>
> it here.  If there isn't, that's fine too.
>
> Perhaps PQUIP’s pqc-engineers or hybrid-terminology comes closest, but it
> doesn’t seem to be an ideal reference. Any terminology in particular you’d
> like to see defined?
>
> Section 2, algorithm: Nit: add (OID) after 'an object identifier'.
>
> Addressed in [1].
>
> Section 2, last sentence:  ctx is not defined, nor used in the main
>
> part of the draft, only in Appendix D.  I would define it here.  If it
>
> only applies in the Appendix D situation, then I would move the
>
> statement (and definition) there.
>
> It applies to the main document. In [2] we make the reference more
> explicit.
>
> Section 4:  the ASN.1 is 'BIT STRING', the description is 'byte
>
> stream' or 'byte string'.  Is it worth making it clear that these are
>
> all the same thing? I realize that the ASN.1 tags are fixed, but the
>
> explanatory text is not.  ('OCTET STRING' is a whole other thing, so
>
> I'm leaving it out of this comment)  [I realize this is a ridiculously
>
> picky comment.]
>
> Does the change in [1] address this sufficiently?
>
> Section 8, last sentence: 'random seed xi' is called 'seed' or
>
> '32-byte seed (xi)' everywhere else in the draft.  Is it a loss of
>
> rigor to delete the word 'random'?  (also see my comment on Section
>
> 10)
>
> The “random” is meant to signal that we’re in the case that the seed is
> randomly generated within the function, instead of being provided
> externally. What about making it an adverb on “generated” as in [1]?
>
> Section 10, para 3:  I struggled with this paragraph. What's the
>
> point?  have you buried the lead?  If the point is 'poor entropy',
>
> then I think you lead with that.  If the point is side channel
>
> protection, move that to para 4? I think you can separate these two
>
> attack surfaces.  In addition:
>
> First two sentences:  There are two modes, deterministic and
>
> randomized.  Second sentence is 'non-deterministic', change that to
>
> 'randomized'?
>
> Sentence 3: there is a "private random seed (rho')" which I'm assuming
>
> is a different value.  Any chance we can reinforce that this is
>
> different from 'seed xi'?
>
> throughout para 3:  rnd, rng, spell them out.  Clarify that the
>
> 256-bit string is rnd.  random for the randomized version and a
>
> constant string for the deterministic version.  I couldn't quite tell
>
> if 'rng' was a typo.
>
> In https://github.com/lamps-wg/dilithium-certificates/pull/139 we moved
> and tightened up the section. Does this work for you?
>
> Section 10, para 5:  Meh.... the ability to export/lose control of a
>
> private key leaves an issue with non-repudiation, no?  I'm fine with
>
> the paragraph as it stands, but add something to convey the risk of
>
> private key exposure. [I will note that I might also disagree with
>
> non-repudiation as a 'fundamental security property', but that is a
>
> personal bias.]
>
> We tweaked the wording.
> https://github.com/lamps-wg/dilithium-certificates/pull/140
>
> Section 10, last sentence: 'These properties', which properties?  The
>
> properties in this section?  Is this a security consideration?  Or
>
> does it belong up in Section 4?
>
> It’s only a tangential remark. If it’s too much clutter, we can remove it.
> https://github.com/lamps-wg/dilithium-certificates/pull/141
>
> Section 10.2, para 2:  I'd make first sentence about interoperability.
>
> The rest can be about why these two methods don't interoperate.
>
> Section 10.1, para 3:  Let me summarize:  HashML-DSA loses some hash
>
> collision protection, but it doesn't matter because of these other
>
> things?  Did I understand that?  If that's true, I'd soften the first
>
> sentence a bit. There is a security reason, but it isn't a strong one.
>
> The for realsie issue is interoperability (para 2). [note:  IETF is
>
> all about interoperability, so making this the top reason is perfect.]
>
> We tweaked the text in
> https://github.com/lamps-wg/dilithium-certificates/pull/142
>
> Section 10.1, Para 3:  Is the hash of the public key referred to as
>
> 'tr'?  If so, then 'hash of the public key tr' could be 'hash of the
>
> public key (tr)'  [as is done with seed(xi)]
>
> Yes. Addressed in [1].
>
> Appendices A-C:  I did not review (other than noticing a typo).
>
> Appendix D, figure 2:  I may very well be wrong (my math chops are
>
> gone), but shouldn't the mu computation include M?  Assuming M is the
>
> message to be signed. (I see the hash of the pk, and ctx, but not M.
>
> I also see M' which I'm assuming is the hash of M in Figure 3).  Happy
>
> to have you tell me I'm an idiot, and that it is correct.  :)
>
> Viktor answered this already, and the correction of a different typo he
> spotted: https://github.com/lamps-wg/dilithium-certificates/pull/143
>
> Appendix D:  I would reiterate what ctx is suppose to be here.
>
> Addressed in [2]
>
> Nit:
>
> Section 10:  spell out RBG (it is literally the only time it is used).
>
> Section C.4, warning:  systmes/systems
>
> Addressed in [1].
>
>
> Best,
>
>
> Bas
>
> [1] https://github.com/lamps-wg/dilithium-certificates/pull/137
>
> [2] https://github.com/lamps-wg/dilithium-certificates/pull/138
>
>
>
> On Fri, May 2, 2025 at 3:47 PM Deb Cooley <debcooley1@gmail.com> wrote:
>
>> Authors,
>>
>> Thank you for this well written draft.  Below are my comments, some of
>> them are quite picky.  I'm happy to chat about them.
>>
>> Deb
>> Sec AD
>>
>> -------------------------------------------
>> Section 1.1:  Is there a decent source for terminology?  If so, list it
>> here.  If there isn't, that's fine too.
>>
>> Section 2, algorithm: Nit: add (OID) after 'an object identifier'.
>>
>> Section 2, last sentence:  ctx is not defined, nor used in the main part
>> of the draft, only in Appendix D.  I would define it here.  If it only
>> applies in the Appendix D situation, then I would move the statement (and
>> definition) there.
>>
>> Section 4:  the ASN.1 is 'BIT STRING', the description is 'byte stream'
>> or 'byte string'.  Is it worth making it clear that these are all the same
>> thing? I realize that the ASN.1 tags are fixed, but the explanatory text is
>> not.  ('OCTET STRING' is a whole other thing, so I'm leaving it out of this
>> comment)  [I realize this is a ridiculously picky comment.]
>>
>> Section 8, last sentence: 'random seed xi' is called 'seed' or '32-byte
>> seed (xi)' everywhere else in the draft.  Is it a loss of rigor to delete
>> the word 'random'?  (also see my comment on Section 10)
>>
>> Section 10, para 3:  I struggled with this paragraph. What's the point?
>>  have you buried the lead?  If the point is 'poor entropy', then I think
>> you lead with that.  If the point is side channel protection, move that to
>> para 4? I think you can separate these two attack surfaces.  In addition:
>> First two sentences:  There are two modes, deterministic and randomized.
>> Second sentence is 'non-deterministic', change that to 'randomized'?
>> Sentence 3: there is a "private random seed (rho')" which I'm assuming is
>> a different value.  Any chance we can reinforce that this is different from
>> 'seed xi'?
>> throughout para 3:  rnd, rng, spell them out.  Clarify that the 256-bit
>> string is rnd.  random for the randomized version and a constant string for
>> the deterministic version.  I couldn't quite tell if 'rng' was a typo.
>>
>> Section 10, para 5:  Meh.... the ability to export/lose control of a
>> private key leaves an issue with non-repudiation, no?  I'm fine with the
>> paragraph as it stands, but add something to convey the risk of private key
>> exposure. [I will note that I might also disagree with non-repudiation as a
>> 'fundamental security property', but that is a personal bias.]
>>
>> Section 10, last sentence: 'These properties', which properties?  The
>> properties in this section?  Is this a security consideration?  Or does it
>> belong up in Section 4?
>>
>> Section 10.2, para 2:  I'd make first sentence about interoperability.
>> The rest can be about why these two methods don't interoperate.
>>
>> Section 10.1, para 3:  Let me summarize:  HashML-DSA loses some hash
>> collision protection, but it doesn't matter because of these other things?
>> Did I understand that?  If that's true, I'd soften the first sentence a
>> bit. There is a security reason, but it isn't a strong one.  The for
>> realsie issue is interoperability (para 2). [note:  IETF is all about
>> interoperability, so making this the top reason is perfect.]
>>
>> Section 10.1, Para 3:  Is the hash of the public key referred to as
>> 'tr'?  If so, then 'hash of the public key tr' could be 'hash of the public
>> key (tr)'  [as is done with seed(xi)]
>>
>> Appendices A-C:  I did not review (other than noticing a typo).
>>
>> Appendix D, figure 2:  I may very well be wrong (my math chops are gone),
>> but shouldn't the mu computation include M?  Assuming M is the message to
>> be signed. (I see the hash of the pk, and ctx, but not M.  I also see M'
>> which I'm assuming is the hash of M in Figure 3).  Happy to have you tell
>> me I'm an idiot, and that it is correct.  :)
>>
>> Appendix D:  I would reiterate what ctx is suppose to be here.
>>
>> Nit:
>> Section 10:  spell out RBG (it is literally the only time it is used).
>> Section C.4, warning:  systmes/systems
>>
>