[CFRG] Review of draft-irtf-cfrg-vdaf-15
Julia Hesse <juliahesse2@gmail.com> Fri, 08 August 2025 11:29 UTC
Return-Path: <juliahesse2@gmail.com>
X-Original-To: cfrg@mail2.ietf.org
Delivered-To: cfrg@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 4B7B451A501E; Fri, 8 Aug 2025 04:29:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: 3.151
X-Spam-Level: ***
X-Spam-Status: No, score=3.151 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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, GB_SUMOF=5, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=no 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 GQ1c55fwg8Os; Fri, 8 Aug 2025 04:29:25 -0700 (PDT)
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [IPv6:2a00:1450:4864:20::62b]) (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 D911351A5018; Fri, 8 Aug 2025 04:29:25 -0700 (PDT)
Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-af96d097df5so382572766b.3; Fri, 08 Aug 2025 04:29:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754652565; x=1755257365; darn=irtf.org; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=zvKfiS8jFys8oXZC2M70oGcyuKY7p/vczINIm1nuWQ0=; b=iZ+Q0m8kMTwds6Xyk5rEwoCTIwMZuc6ca0h0iYxonKm9lth6siVx1ALvn3YeOfu9IH G4CrNqx5ii2SMzYI0h5I6u7IyEbM6oGwBt/5pusgyVlOb89PbU052vTgEwmV9SpA/dxs 1o2so1NikLFX83cFG7PxaYpOptSVGOq8oG2uXaSkdI8KKL38QAWMWw72aXkpu17DmwTi T9ITB64P69YWxPQVP3Q5D4eAjqR3e0EkpBTkKrM+x5HXlbDOj5vMNpS+hnAJDafgf5RK DfguvCCTPoedoKMZ6D7fieXyc88N+udZf9iDdDZbuLm3sYt66LcGm9heUtXfPxAburnu jxSA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754652565; x=1755257365; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=zvKfiS8jFys8oXZC2M70oGcyuKY7p/vczINIm1nuWQ0=; b=eRCPv5I88/4zxuMkFo9olDaS9++6xpiwkMAEcKNAmeqVEQH2J/mU8zoz2KyieO0/oV GnNBFgSA+GNdPKvIZ513nnDaNVh0Uu77HNwv+x6dvcwF9f1g9scVUp6+c9b8fafqKLsG 9iQlHekXzCluMsZAsmPpLMSJLW0JxMKZVFvamw9Qy0EUnWIH6VuYI/NiPDU+UeBpq1LR +im5byt09XJL3AvfC7TMgirqbC1zGB3fYAHkMT8B8wjqJar1td5ikgu2c02aQMboluCa xA3NYDqPTViWhVBCGWpega/+4JQ4DCsdGbpbjVvbHRST5MrG8M6RglI77ycVlwh/nR7o 6Mpw==
X-Forwarded-Encrypted: i=1; AJvYcCW7qDrU7gASL08vRZOeXBnN3gGFd7xRVS7IiqaUKzPtrYxJI5e10noqmDra82gej+FSS95vkAncfVRIydY=@irtf.org
X-Gm-Message-State: AOJu0YzWjF8YlUmuubjEdZ25YWeA2egmcr/GhPwnGDT2maBK640V2gjp E+qcPA2CTScdIbNTVAt6n6aw3WyNO+04KaMsjNXtxqSJUnlL6/KF0v/eJ2HHE/X8
X-Gm-Gg: ASbGncs4S9WXQelImJ8t9aA4PuSuw031yB4JzXjWoH31NoIRGQ21UqXcxEIT0j2R3hv 0T7IMUyPTKynWSshqPesur+jbWmorqFarNY69bxyVQ6fqSQtoEJOYqUEHwb02hWAWI/fkP/kf1b A1fEtAriKNKXmN/zwaX6C0tMy6Rol6j0iRSNVISVLOnVIjoZsS4JEEz8f46hKUTmYO32Onsf7nf kPVUrIBw6Y9KEnHrohCjK1/0EvMCa+o74qU9zeNFWTgiK4n+Vg2XktyzOwX7PRuYVJm/km091K5 oFHkqElcn+VWRH6/s/Mtt9GtkLhQYumXa+MUaAEsIu8NxT8r417WWp1P7sYLzr7vHMMebCI/SO6 f7QmlTZBGrbMDQ2ibd24gygbBDVfPSt584In8tE9+7xr0GYancjQz+EZEBXZJTHvtlPp2CRXpKQ ==
X-Google-Smtp-Source: AGHT+IFPn6SyyQP+pG/f8j6G8sIZNYXRUPCtmXomNlBTtIR0mnWOGLWou5uvQaoSM0lKrvVD+Xh3rQ==
X-Received: by 2002:a17:906:c113:b0:aeb:fc49:3f56 with SMTP id a640c23a62f3a-af9c645da46mr232012066b.15.1754652564484; Fri, 08 Aug 2025 04:29:24 -0700 (PDT)
Received: from [192.168.1.54] (adsl-89-217-44-191.adslplus.ch. [89.217.44.191]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-af91a0df10asm1477628166b.59.2025.08.08.04.29.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 08 Aug 2025 04:29:23 -0700 (PDT)
Message-ID: <366c632d-d8ba-442e-868c-90a2d12d10da@gmail.com>
Date: Fri, 08 Aug 2025 13:29:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: cfrg@irtf.org
From: Julia Hesse <juliahesse2@gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Message-ID-Hash: JVCCWSRYEB73UOULA4Q6UXLLW65JK7XH
X-Message-ID-Hash: JVCCWSRYEB73UOULA4Q6UXLLW65JK7XH
X-MailFrom: juliahesse2@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-cfrg.irtf.org-0; header-match-cfrg.irtf.org-1; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Christopher Patton <chrispatton@gmail.com>, crypto-panel@irtf.org, cfrg-chairs@ietf.org, draft-irtf-cfrg-vdaf@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [CFRG] Review of draft-irtf-cfrg-vdaf-15
List-Id: Crypto Forum Research Group <cfrg.irtf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/cfrg/Omdhr4rO1pla_nlju2l7OJEGWPM>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cfrg>
List-Help: <mailto:cfrg-request@irtf.org?subject=help>
List-Owner: <mailto:cfrg-owner@irtf.org>
List-Post: <mailto:cfrg@irtf.org>
List-Subscribe: <mailto:cfrg-join@irtf.org>
List-Unsubscribe: <mailto:cfrg-leave@irtf.org>
Dear all, this is a review of Verifiable Distributed Aggregation Functions draft-irtf-cfrg-vdaf-15. I did not implement the draft/check the test vectors. Overall, an impressive amount of work went into this draft and it appears to be in a pretty mature state. Thanks to the authors for putting such an effort into it. I sort my comments into three categories, namely terminology, presentation, and general comments. Terminology and typos --------------------- - DAF in Section 4 is only computing the sum of the inputs. Hence the name Function appears too general, as it is "just" distributed aggregated summing. Could the paragraph be phrased more general, for arbitrary functions, and then say that the draft only considers sums? - Section 1 explains the V=verifiability property of VDAFs and then says that it is referred to as "robustness". Why not call it verifiability, i.e., why having two different names for the same thing? - Section 3: Figure 1 shows only "aggregate shares" while the text also talks about "output shares". I find the terminology confusing because the "output shares" seem to be an intermediate computation step and are not an output of the aggregator. Also, Figure 1 could be augmented to show all the objects mentioned in the text, such as output shares and public shares. - I am not familiar with the terminology of "simulating a procedure over an insecure network", but if RFC readers usually are, this is fine. For me, it was confusing to read this instruction in Section 5.6 while also demanding the application to instantiate secure channels (end of 5.6). - A DAF computes a function over many client reports. Hence in Table 1 it should be "a report" or "each report", and not "the report" in the NONCE_SIZE row. - Replace all occurrences of "we" (e.g., we obtain, we compute, the inputs we used) by prover/verifier/client/aggregator/etc., except for the ones that actually refer to the authors of the draft ;) - Section 8: the Aggregators run VDAF - should be "run the Poplar1 VDAF" or just Poplar1 - Section 9: "a subset of Clients and Aggregators" should be "a subset of Clients and a subset of Aggregators", as otherwise, controlling e.g. all clients would be allowed. - Section 9.1: rewrite to potentially many aggregators, or restrict to the case of Poplar1 Presentation ------------ - Section 1: explain in 1-2 sentences how Poplar1 if different from Poplar. Additionally, it should be briefly discussed in Section 9 how the changes affect the security analysis that was conducted for Poplar. - Section 4, "For example, the aggregation parameter is used to represent the candidate prefixes in the Poplar1 VDAF" - at this point, where a reader might not be familiar with Poplar1 at all, so terms like candidate prefix are not known yet. Maybe replace by something more illustrative? General ------- - Section 4.1, daf.shard: this is an algorithm to be run locally by every user, and it requires a nonce as input which is then also sent to the aggregators. This nonce is a public nonce associated to a single report. The draft mandates generation through a CSPRNG, but a malicious client must not follow that instruction. What happens if two reports have the same nonce? In particular, this nonce seems to later also go into the computation of the joint randomness, so this is related also to the question of whether the randomness computation is robust against malicious clients who, e.g., replay nonces or choose them in another biased way. - Section 5.2: the preparation seems to be executed on a per-client basis, if I understand correctly. Opposed to DAFs, where preparation is local, it seems that VDAFs require the application protocol to coordinate the preparation step such that aggregators are guaranteed to run it on the same client's input. This additional complexity does not seem to be explained in Section 5.2. It might be implicit in asking for equality of all public_share values, but such a check is meaningless because malicious clients can replay honest parties' public shares. So a lot of coordination from the application is required here that I could not find any mention of. - "Achieving robustness without sacrificing privacy requires the servers to interact with one another over a number of rounds of communication" - is this obvious or backed up by a result from the literature? - Equality check of joint randomness: In Section 7.2.2, it says that aggregators must check if they all computed the same proof randomness, to prevent the client from biasing the randomness. I do not see how an equality check prevents a malicious client from biasing: a malicious client could make *all* aggregators compute the same bad randomness. It is really malicious client security of the randomness generation procedure that is needed here. It should be explained in the security considerations whether there is a security result from the literature that covers this case. - Robustness against dropped packages: It seems to me that a lost input share causes a failed validity check, so the schemes protect against that on the protocol level. An aggregator forgetting to include one of their input shares in the aggregate share causes the overall result to be wrong - this is essentially malicious aggregator behavior that both schemes do not protect against. A dropped aggregator share would also invalidate the overall result but can be protected against by the collector checking that they collected all shares, which is requested in the draft in terms of the collector ensuring that it has SHARES agg_shares going into unshard. Technically, it would be better to request that one agg_share received from each aggregator goes into unsharding (which then yields SHARES agg_shares in total). I was also unsure how to interpret the requirement of guaranteed delivery mandated in Section 9. Is that needed on top of, e.g., the checks for all shares to be there? - Prio3 is a VDAF that follows the design principle of the original VDAF protocol by Corrigan-Gibbs et al, but using a ZK proof system from a work by Boneh et al. The interesting question is how this replacement affects the security. I do not find a paper in the literature that argues formally what properties a proof system has to have in order to yield a robust and private VDAF in Corrigan-Gibbs et al.'s construction. Instead, [DPRS23] directly proofs the security of Prio3. I spent a considerable amount of time with that paper and the analysis appears sound to me, although I was not able to fully understand all the details. It needs to be kept in mind that Prio3 is a very complex protocol, both to write down/implement and verify the security, and it was published (in form of early versions of this draft) not long ago. It is not unlikely that all of us overlook subtleties. This is not to recommend to stop working on this effort, of course. It is just something that adopters need to be aware of. - Section 7.3.3 explains that the prove randomness is used to construct gadget polynomials, but that polynomial is also said to be the lowest degree polynomial that evaluates to a sequence of fixed points. That seems to be a unique polynomial, so where do we need randomness for this step? - Section 9: "Uniqueness of the nonce is not sufficient because the verification key is controlled by the attacker" - I could not make sense out of this sentence. First, the link between the report nonces and the verification key is unclear to me. Second, how can the verification key be controlled by the attacker if the aggregators generate and distribute it over their secure and authenticated channels - aggregators are honest. Best, Julia
- [CFRG] Review of draft-irtf-cfrg-vdaf-15 Julia Hesse
- [CFRG] Re: Review of draft-irtf-cfrg-vdaf-15 Christopher Patton
- [CFRG] Re: Review of draft-irtf-cfrg-vdaf-15 Christopher Patton
- [CFRG] Re: Review of draft-irtf-cfrg-vdaf-15 Julia Hesse
- [CFRG] Re: Review of draft-irtf-cfrg-vdaf-15 Christopher Patton