Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support the next interop target #698

Open
cjpatton opened this issue Oct 15, 2024 · 2 comments
Open

Support the next interop target #698

cjpatton opened this issue Oct 15, 2024 · 2 comments
Assignees

Comments

@cjpatton
Copy link
Contributor

cjpatton commented Oct 15, 2024

As described here, the next set of drafts to implement are (DAP-12):

The draft set we currently support is (DAP-09):

  • draft-ietf-ppm-dap-09
  • draft-irtf-cfrg-vdaf-08 for Prio3
  • draft-wang-ppm-dap-taskprov-06
  • draft-dcook-ppm-dap-interop-test-design-07

We will need to add support for DAP-12 alongside DAP-09.

Requirements

  1. The version of a VDAF, of taskprov, or of the interop API that is used is determined by the version of DAP. In particular, we won't try to support multiple versions of a VDAF or of the taskprov extension with the same DAP version.
  2. Our implementations of Prio2 and Prio3 come from the prio crate. Version 0.16 is compatible with DAP-09; a future version of the crate, perhaps 0.17, will be compatible with DAP-12. We will need to import both versions of the crate at the same time.
  3. DAP-09 MUST support all VDAFs currently supported by the taskprov extension. This includes Prio2, PINE (see below), and some non-standard Prio3SumVec variants.
  4. DAP-12 MUST support all currently supported VDAFs, excluding PINE: draft-chen-cfrg-vdaf-pine-01 is not API compatible with DAP-12, so for now we'll only maintain support for DAP-09.

Notes

  1. DapVersion::Latest is currently set to DAP-10; this should be replaced with DAP-12.
  2. The most important changes since DAP-09 are summarized in the draft's change log. Most are relatively minor, but it will be necessary to plumb the DAP version down more code paths to, for example, account for changes in message formats.
  3. The most significant change since DAP-09 is asynchronous aggregation. This feature is optional, however, and we'll handle it in a separate issue. See Support for asynchronous aggregation #697.
  4. Note that there are some known discrepancies between our implementation and the spec: see Repeated requests PUT /tasks/{tasks}/aggregation_jobs/{aggregation-job-id} are handled as fresh aggregation jobs #522 and Repeated requests to POST {helper}/tasks/{task-id}/aggregate_shares are aborted #557.

Validation

  1. This repo has unit tests and end-to-end tests, but for the most part they don't enforce interop. We mainly rely on additional tests in the internal repo for the Helper deployment. These will be useful for making sure we don't regress DAP-09.
  2. Janus is currently working on DAP-12 support as well. The interop/ folder in this directory defines a docker image they can use to automatically run a bunch of interop tests with our Helper; we can use this to test interop with DAP-12.
@cjpatton
Copy link
Contributor Author

For the record, we're now targeting DAP-13.

@cjpatton
Copy link
Contributor Author

cjpatton commented Dec 19, 2024

Remaining TODOs as of 2024/12/19:

  • public extensions
  • improve extension points for batch modes
  • add start time to task parameters, replace end time with duration
  • taskprov: message formats
  • taskprov: derivation of the task ID and (maybe?) the verification key
  • allow the leader to indicate it doesn't support extensions

Here's the list of VDAFs we want to support for each version:

  • DAP-09
    • Prio2 (+taskprov)
    • Prio3 w/ XofHmacSha256Aes128 (+taskprov) (these are non-standard variants)
    • Pine (+taskprov)
  • DAP-13
    • Prio2 (+taskprov)
    • Standard Prio3 variants
    • Mastic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants