-
Notifications
You must be signed in to change notification settings - Fork 1k
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
README: add instructions for verifying GPG signatures #1646
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -61,6 +61,51 @@ Implementation details | |
* Optional runtime blinding which attempts to frustrate differential power analysis. | ||
* The precomputed tables add and eventually subtract points for which no known scalar (secret key) is known, preventing even an attacker with control over the secret key used to control the data internally. | ||
|
||
Obtaining and verifying | ||
----------------------- | ||
|
||
The git tag for each release (e.g. `v0.6.0`) is GPG-signed by one of the maintainers. | ||
For a fully verified build of this project, it is recommended to obtain this repository | ||
via git, obtain the GPG keys of the signing maintainer(s), and then verify the release | ||
tag's signature using git. | ||
|
||
This can be done with the following steps: | ||
|
||
1. Check the latest release on the [Releases | ||
page](https://github.com/bitcoin-core/secp256k1/releases). Determine the signing GPG ID | ||
by clicking the green icon next to the tag name. For example, in the case of v0.6.0, | ||
this would be `4861DBF262123605`. | ||
- Consult [SECURITY.md](./SECURITY.md) for a complete listing of maintainer keys, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "per Github" assumes that the user has obtained the git repo from GitHub, which is likely but not the only possibility. |
||
per Github. | ||
1. If possible, cross-reference this key ID with another source controlled by its owner (e.g. | ||
https://x.com/n1ckler). | ||
- This is to guard against the unlikely case that incorrect content is being presented by Github.com. | ||
Comment on lines
+80
to
+82
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's bad enough that we rely on GitHub, so I'd avoid links to other third-party sites. It's up to the user to decide which source they trust, and I don't think it's our job to offer suggestions here. That's bad, but it's a fundamental problem. We cannot do much about it. (For what it's worth, I don't trust x.com too much.) I expect people who obtain the source code of a C library to be able to do their research. |
||
1. Retrieve the GPG key from a keyserver, e.g. | ||
``` | ||
gpg --keyserver keyserver.ubuntu.com --recv-keys 4861DBF262123605 | ||
``` | ||
1. Clone the repository: | ||
``` | ||
git clone https://github.com/bitcoin-core/secp256k1 | ||
``` | ||
1. Check out the latest release tag, e.g. | ||
``` | ||
git checkout v0.6.0 | ||
``` | ||
1. Use git to verify the GPG signature: | ||
Comment on lines
+91
to
+95
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: I prefer "1. / 2. / 3." instead of "1. / 1. / 1.", i.e., I prefer readability of the plain text file over maintainability. |
||
``` | ||
% git tag -v v0.6.0 | grep -C 3 'Good signature' | ||
|
||
gpg: Signature made Mon 04 Nov 2024 12:14:44 PM EST | ||
gpg: using RSA key 4BBB845A6F5A65A69DFAEC234861DBF262123605 | ||
gpg: Good signature from "Jonas Nick <jonas@n-ck.net>" [unknown] | ||
gpg: aka "Jonas Nick <jonasd.nick@gmail.com>" [unknown] | ||
gpg: WARNING: This key is not certified with a trusted signature! | ||
gpg: There is no indication that the signature belongs to the owner. | ||
Primary key fingerprint: 36C7 1A37 C9D9 88BD E825 08D9 B1A7 0E4F 8DCD 0366 | ||
Subkey fingerprint: 4BBB 845A 6F5A 65A6 9DFA EC23 4861 DBF2 6212 3605 | ||
``` | ||
|
||
Building with Autotools | ||
----------------------- | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, okay I understand our discussion in #1644 better now. You're probably not aware that our GPG keys are in SECURITY.md? Yeah, that's not at all obvious. So I think the first step should be to obtain the GPG public keys of all maintainers as described in SECURITY.md.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah yeah I did miss that, thanks. I'll revise this change to point to that file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now that you've added the reference to the file, why not drop this step in the GitHub web interface entirely?
I think the steps should be:
None of these require the web (except maybe obtaining a trusted copy of the fingerprint).