Re: [CFRG] I-D Action: draft-irtf-cfrg-rsa-blind-signatures-06.txt

Ian Goldberg <iang@uwaterloo.ca> Tue, 29 November 2022 22:59 UTC

Return-Path: <iang@uwaterloo.ca>
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 B6AE4C1526E9 for <cfrg@ietfa.amsl.com>; Tue, 29 Nov 2022 14:59:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.397
X-Spam-Level:
X-Spam-Status: No, score=-4.397 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=uwaterloo.ca
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JsmvxluM9kXF for <cfrg@ietfa.amsl.com>; Tue, 29 Nov 2022 14:59:28 -0800 (PST)
Received: from minos.uwaterloo.ca (minos.uwaterloo.ca [129.97.128.78]) (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 15F84C1526E6 for <cfrg@ietf.org>; Tue, 29 Nov 2022 14:59:27 -0800 (PST)
Received: from email.paip.net (thump.cs.uwaterloo.ca [198.96.155.10]) (authenticated bits=0) by minos.uwaterloo.ca (8.14.7/8.14.7) with ESMTP id 2ATMxMAo005033 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 29 Nov 2022 17:59:25 -0500
DKIM-Filter: OpenDKIM Filter v2.11.0 minos.uwaterloo.ca 2ATMxMAo005033
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uwaterloo.ca; s=default; t=1669762765; bh=MYH2di0XnuqIw6O27bMWekh/Fysfgv9fRjVpGZ4lGlw=; h=Date:From:To:Subject:References:In-Reply-To:From; b=MIyqjhpGEq3gJVHvuk1tT1jUxoWqTrmoDbVEDVFxWTZooOJBDLnubhFTTKC8M6Uwd avHLsZGUyk2O2vKXYE8BLzqutj8ubtjK9shv+JEZe0F92M6ncOl6LyHiwTJra3ILyb 0E6tbSF+ARY/LtcW5oNsiskfr98ZWzc1XJfAxZc8=
Received: from yoink (unknown [97.108.240.157]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.paip.net (Postfix) with ESMTPSA id 1E02E6DA12C9; Tue, 29 Nov 2022 17:59:22 -0500 (EST)
Received: from iang by yoink with local (Exim 4.90_1) (envelope-from <iang@uwaterloo.ca>) id 1p09ZR-0002r8-9R; Tue, 29 Nov 2022 17:59:21 -0500
Date: Tue, 29 Nov 2022 17:59:21 -0500
From: Ian Goldberg <iang@uwaterloo.ca>
To: cfrg@ietf.org
Message-ID: <20221129225921.GR7583@yoink.cs.uwaterloo.ca>
References: <166906886082.62494.8820552099363522855@ietfa.amsl.com> <6A1E08FD-09CF-4929-94DD-8B7A8E6CACBA@heapingbits.net> <CAMmp5CAt-A+qJTDbhwj14b24DUGD+xzxrbBpPGM2hCYfNVA4-w@mail.gmail.com> <CAJowLmN8CZRS9V0N5tW=XohC9QNYRE-FpMe=errGSETAq7WT1w@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CAJowLmN8CZRS9V0N5tW=XohC9QNYRE-FpMe=errGSETAq7WT1w@mail.gmail.com>
User-Agent: Mutt/1.9.4 (2018-02-28)
X-UUID: 63cc3be3-12ab-462c-b811-3bc890a6d4e2
Archived-At: <https://mailarchive.ietf.org/arch/msg/cfrg/RoHCCwj9dTt_Z7ZDQmBOnfyHrp4>
Subject: Re: [CFRG] I-D Action: draft-irtf-cfrg-rsa-blind-signatures-06.txt
X-BeenThere: cfrg@irtf.org
X-Mailman-Version: 2.1.39
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: Tue, 29 Nov 2022 22:59:32 -0000

On Tue, Nov 29, 2022 at 01:47:40PM +0000, Franziskus Kiefer wrote:
> Chris asked me to review the draft.

Me as well.  My notes are below.

In Section 1, [I-D.irtf-cfrg-voprfs] is a broken reference.
Interestingly, Section 1 motivates this document with, "Specifically,
VOPRFs are not necessarily publicly verifiable", but
draft-irtf-cfrg-voprf-16 (which is presumably what the dangling link is
supposed to point to) _is_ publicly verifiable
(https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-16#section-2.2.2)
Is there another motivation for using RSA instead of
draft-irtf-cfrg-voprf-16?  Is it just the "in such a way that the
resulting (unblinded) signature can be verified with a standard RSA-PSS
library"?  As you point out here, VOPRFs are strongly related to
deterministic blind signatures.  Should VOPRFs be discussed in Section
8.7?

Section 4: "In this protocol, the server learns nothing of msg, whereas
the client learns sig and nothing of skS.": this doesn't specify whether
the server learns sig.  (It does not.)  This paragraph should also say
that skS is input by the server and msg is input by the client.

In Section 4.1, step 1:
    encoded_msg = EMSA-PSS-ENCODE(msg, (kLen * 8) - 1)
doesn't look right to me.  kLen is the length of the modulus in bytes.
What if the modulus is 2049 bits, say?  Then klen=257, and (kLen*8)-1
is 2055, which is too large.

Does step 5 need to be done in constant time?  Does any of this
function (or the other ones)?  Section 8.1 talks a bit about this for
the Sign algorithm (which protects the secret key from timing attacks),
but the client's message (and blinding factor) also need to be protected
from the server, no?

In step 6, it's a little funny to raise the error "invalid blind" as
opposed to "Oh look we factored the server's public key!".  The text
above the algorithm says "The probability of multiple such errors in
sequence is negligible." but in fact the probability of even one such
error is negligible.

Section 5: "randommization" -> "randomization"

Section 8: the term "RSA-FDH" is used in the first sentence, but not
defined until Section 8.6.

Section 8.1 says that implementations SHOULD verify that the signature
is correct.  Finalize in Section 4.3 already does this explicitly.  Did
you mean that BlindSign should also do this before returning blind_sig?
Is there a reason not to explicitly write it in, as with Finalize?

Section 8.3: "to learn information about low-entropy with input
messages": should "with" be removed?

Section 8.4 is interesting; it says the implementation shouldn't let the
client pass the salt value because the client might embed some sensitive
data in it.  But the client could just as easily (in many cases) embed
that data in the message, no?  I'd be more worried about the other way
around: the implementation embedding secret data about the client
without the client's knowledge (algorithm substitution attacks,
kleptography, etc.).
-- 
Ian Goldberg
Canada Research Chair in Privacy Enhancing Technologies
Professor, Cheriton School of Computer Science
University of Waterloo