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

Further hardened delta #796

Merged
merged 1 commit into from
Aug 8, 2024
Merged

Further hardened delta #796

merged 1 commit into from
Aug 8, 2024

Conversation

DavidM-D
Copy link
Contributor

@DavidM-D DavidM-D commented Aug 2, 2024

We use re-randomization to mitigate the issues described in Groth,Shoup 22 (even though our model deviates substantially from theirs).

The properties of a good delta is it has to be unpredictable before the signature request is created and it can only be used once for a signing protocol.

Since we current use H ( VRF, H(signature_request, ...) ) we guarantee the first point, but there are situations where we may try to sign again using the same delta. e.g. if our protocol crashes or someone manages to get us to ingress a duplicate message. By including the public R paramater of the presignature and since we guarantee that we don't reuse presignatures, this PR guarantees the second property required.

To read more we have a deeper dive into the subject here https://docs.google.com/document/d/1-Ibv5R5mokSlcV1FhKSGmAK6jHqyRwmffe2moTzR_k4/edit.

We use re-randomization to mitigate the issues described in
Groth,Shoup 22 (even though our model deviates substantially from
theirs).

The properties of a good delta is it has to be unpredictable before the
signature request is created and it has to only be used once per signing
request.

Since we current use H ( VRF, H(signature_request, ...) ) we guarantee
the first point, but there are situations where we may try to sign again
using the same delta. e.g. if our protocol crashes or someone manages to
get us to ingress a duplicate message. By including the public R paramater of
the presignature and since we guarantee that we don't reuse
presignatures, this PR guarantees the second property required.

To read more we have a deeper dive into the subject here https://docs.google.com/document/d/1-Ibv5R5mokSlcV1FhKSGmAK6jHqyRwmffe2moTzR_k4/edit.
@DavidM-D DavidM-D requested a review from ChaoticTempest August 2, 2024 15:30
@DavidM-D
Copy link
Contributor Author

DavidM-D commented Aug 2, 2024

We'll wait for Alessandra to come back before we merge this.

Copy link
Member

@ChaoticTempest ChaoticTempest left a comment

Choose a reason for hiding this comment

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

This is good to me because even if we retry signature generation on a failed one, a new presignature will always get used so we are able to guarantee second property.

But does changing this change any of the derived keys? Or only epsilon is the value that changes the keys?

@DavidM-D
Copy link
Contributor Author

DavidM-D commented Aug 3, 2024

Nope derived keys are only dependent on epsilon, and the hard coded signature derivation tests check that this is true.

@DavidM-D DavidM-D merged commit 665e235 into develop Aug 8, 2024
3 checks passed
@DavidM-D DavidM-D deleted the dmd/hardened-delta branch August 8, 2024 10:44
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