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

crypto/ecdsa: Adjust entropy bounds #48653

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

soatok
Copy link

@soatok soatok commented Sep 27, 2021

Matching the entropy for an ECDSA signature to the ECDLP attack cost of the curve might make intuitive sense, but the birthday bound for a random function is Q(sqrt(N)), so we're matching a square root of a square root. For P-224 (ECDLP security of 112 bits), this doesn't yield a birthday bound of 112 bits, it yields a birthday bound of 56 bits.

This patch changes the formula to produce roughly double the expected entropy (by changing the divisor from 16 to 8), while requiring at least 256 bits. In case of weird cure support, this patch also caps the entropy at 512 bits. The variability between the two will mostly be observed with curves in between the two bounds (i.e. NIST P-384, which many users expect to offer a 192-bit security level anyway).

This PR will be imported into Gerrit with the title and first
comment (this text) used to generate the subject and body of
the Gerrit change.

Please ensure you adhere to every item in this list.

More info can be found at https://github.com/golang/go/wiki/CommitMessage

  • The PR title is formatted as follows: net/http: frob the quux before blarfing
    • The package name goes before the colon
    • The part after the colon uses the verb tense + phrase that completes the blank in,
      "This change modifies Go to ___________"
    • Lowercase verb after the colon
    • No trailing period
    • Keep the title as short as possible. ideally under 76 characters or shorter
  • No Markdown
  • The first PR comment (this one) is wrapped at 76 characters, unless it's
    really needed (ASCII art, table, or long link)
  • If there is a corresponding issue, add either Fixes #1234 or Updates #1234
    (the latter if this is not a complete fix) to this comment
  • If referring to a repo other than golang/go you can use the
    owner/repo#issue_number syntax: Fixes golang/tools#1234
  • We do not use Signed-off-by lines in Go. Please don't add them.
    Our Gerrit server & GitHub bots enforce CLA compliance instead.
  • Delete these instructions once you have read and applied them

Matching the entropy for an ECDSA signature to the ECDLP attack cost of the curve might make intuitive sense, but the birthday bound for a random function is Q(sqrt(N)), so we're matching a square root of a square root. For P-224 (ECDLP security of 112 bits), this doesn't yield a birthday bound of 112 bits, it yields a birthday bound of **56 bits**.

This patch changes the formula to produce roughly double the expected entropy (by changing the divisor from `16` to `8`), while requiring at least 256 bits. In case of weird cure support, this patch also caps the entropy at 512 bits. The variability between the two will mostly be observed with curves in between the two bounds (i.e. NIST P-384, which many users expect to offer a 192-bit security level anyway).
@google-cla
Copy link

google-cla bot commented Sep 27, 2021

Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

📝 Please visit https://cla.developers.google.com/ to sign.

Once you've signed (or fixed any issues), please reply here with @googlebot I signed it! and we'll verify it.


What to do if you already signed the CLA

Individual signers
Corporate signers

ℹ️ Googlers: Go here for more info.

@google-cla google-cla bot added the cla: no Used by googlebot to label PRs as having an invalid CLA. The text of this label should not change. label Sep 27, 2021
@soatok
Copy link
Author

soatok commented Sep 27, 2021

@googlebot I signed it!

@google-cla google-cla bot added cla: yes Used by googlebot to label PRs as having a valid CLA. The text of this label should not change. and removed cla: no Used by googlebot to label PRs as having an invalid CLA. The text of this label should not change. labels Sep 27, 2021
@gopherbot
Copy link
Contributor

This PR (HEAD: 7d0d336) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/352471 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

Message from Go Bot:

Patch Set 1:

Congratulations on opening your first change. Thank you for your contribution!

Next steps:
A maintainer will review your change and provide feedback. See
https://golang.org/doc/contribute.html#review for more info and tips to get your
patch through code review.

Most changes in the Go project go through a few rounds of revision. This can be
surprising to people new to the project. The careful, iterative review process
is our way of helping mentor contributors and ensuring that their contributions
have a lasting impact.

During May-July and Nov-Jan the Go project is in a code freeze, during which
little code gets reviewed or merged. If a reviewer responds with a comment like
R=go1.11 or adds a tag like "wait-release", it means that this CL will be
reviewed as part of the next development cycle. See https://golang.org/s/release
for more details.


Please don’t reply on this GitHub thread. Visit golang.org/cl/352471.
After addressing review feedback, remember to publish your drafts!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla: yes Used by googlebot to label PRs as having a valid CLA. The text of this label should not change.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants