Crate daphne

source ·
Expand description

This crate implements the core protocol logic for the Distributed Aggregation Protocol (DAP) standard under development in the PPM working group of the IETF. See VdafConfig for a listing of supported VDAFs.

Daphne implements draft-ietf-ppm-dap-02.

Daphne does not provide the complete, end-to-end functionality of any party in the protocol. Instead, it defines traits for the functionalities that a concrete instantiation of the protocol is required to implement. For example, the daphne_worker crate implements a backend for the DAP Leader and Helper. See the crate::roles module for details.

Daphne is not yet feature complete. Known issues include:

  • The collect sub-protocol has not yet been fully implemented. In particular, Daphne Aggreators do not check properly if batch intervals overlap across collect requests. Note that this feature is privacy-critical and implementation is planned. See https://github.com/cloudflare/daphne/issues/45 for details.

  • Daphne is not compatible with DAP tasks whose maximum batch lifetime is longer than one.

  • Aborts are not handled precisely as specified. In particular, some fields in the “Problem Details” document are omitted.

  • Daphne does not implement a complete DAP Client or Collector. However, methods are provided on VdafConfig for producing reports and consuming aggregate results.

Modules

DAP request authorization.
Constants used in the DAP protocol.
Hybrid Public-Key Encryption (HPKE).
Messages in the DAP protocol.
Trait definitions for Daphne backends.
Mock backend functionality to test DAP protocol.
Verifiable, Distributed Aggregation Functions (VDAFs).

Structs

An aggregate share computed by combining a set of output shares.
Global DAP parameters common across tasks.
The Helper’s state during the aggregation flow.
Telemetry information for the leader’s processing loop.
The Leader’s state after sending an AggregateInitReq.
The Leader’s state after sending an AggregateContReq.
An ouptut share produced by an Aggregator for a single report.
DAP request.
DAP response.
Per-task DAP parameters.
A problem details document compatible with RFC 7807.

Enums

DAP aborts.
The aggregate result computed by the Collector.
A batch bucket.
Status of a collect job.
DAP errors.
Helper state transition during the aggregation flow.
Leader state transition during the aggregation flow.
A measurement from which a Client generates a report.
DAP Query configuration.
DAP version used for a task.
Supported data types for prio3.
Specificaiton of a concrete VDAF.