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

Implement draft-ietf-ppm-dap-taskprov-01. #3509

Merged
merged 2 commits into from
Nov 27, 2024
Merged

Implement draft-ietf-ppm-dap-taskprov-01. #3509

merged 2 commits into from
Nov 27, 2024

Conversation

branlwyd
Copy link
Contributor

No description provided.

@branlwyd
Copy link
Contributor Author

Part of #3436.

taskprov::VdafConfig::Prio3Sum {
max_measurement: _max_measurement,
} => Ok(Self::Prio3Sum {
bits: 32, // TODO(#3436): plumb through max_measurement once it's available
Copy link
Contributor Author

@branlwyd branlwyd Nov 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will certainly need to change, but at the time I'm writing this, the change to libprio-rs to specify max_measurement instead of bits for Prio3Sum is still pending. I'll update this once the libprio-rs change lands.

@branlwyd branlwyd marked this pull request as ready for review November 23, 2024 00:03
@branlwyd branlwyd requested a review from a team as a code owner November 23, 2024 00:03
@@ -795,7 +777,8 @@ impl<C: Clock> Aggregator<C> {
return Err(Error::UnauthorizedRequest(*task_id));
}

if self.clock.now() > *task_config.task_end() {
let task_end = task_config.task_start().add(task_config.task_duration())?;
if self.clock.now() > task_end {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should be checking report timestamps against task_start + task_duration. The spec requirement is "Aggregators MUST reject reports that have timestamps later than the end time, and MAY choose to opt out of the task if task_duration is too long." However, that means we can't take care of this check in this function, and instead would have to handle it separately in the aggregation endpoint and upload endpoint (if we ever implement it).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code is implementing the requirement that "A protocol participant MUST opt out if ... [t]he task has ended."[1] I think using the server's clock, rather than the timestamp from a given report, is appropriate for this specific check.

You're correct that we should also be checking each report's timestamp against the end (and start) of the task, and we MUST reject reports that don't fall into the acceptable time interval. Those checks are implemented in handle_upload_generic.

Interestingly, I don't think the equivalent Helper-side timestamp check has ever been implemented, though we do implement checking that the report isn't from too far in the future. I filed #3524 for this, arguing that it is not mandatory. Still, it's a small change, so I'll address it if I have time.

[1] https://www.ietf.org/archive/id/draft-ietf-ppm-dap-taskprov-01.html#name-opting-into-a-task

messages/src/taskprov.rs Outdated Show resolved Hide resolved
@branlwyd branlwyd enabled auto-merge (squash) November 27, 2024 19:02
@branlwyd branlwyd merged commit a2c0398 into main Nov 27, 2024
8 checks passed
@branlwyd branlwyd deleted the bran/taskprov branch November 27, 2024 19:26
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

Successfully merging this pull request may close these issues.

2 participants