-
Notifications
You must be signed in to change notification settings - Fork 181
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 file - Update file verification section (to use keybase.io), clarify the download section, and other minor edits #285
Merged
Merged
Changes from 19 commits
Commits
Show all changes
30 commits
Select commit
Hold shift + click to select a range
fa64a98
Update ReadmeFile - with initial small changes
Marc-Gee 86a5d1f
A Heading change
Marc-Gee 5a1bb41
minor spelling fixes
Marc-Gee 4f910cf
Rewrite the software Download, & Verify sections
Marc-Gee 69dc06c
Minor edits to download and veryify sections.
Marc-Gee 1175ec4
Various Minor Language edits
Marc-Gee d57ea8c
Add sample images to PubKey verification section
Marc-Gee 85fae7b
Formatting changes and updated verify Screenshots
Marc-Gee 47fb9fe
Edits to the shasum command description
Marc-Gee b9649cb
Minor Edits
Marc-Gee 76875f6
Minor edits and clarifications.
Marc-Gee d2a657f
Various edits B4 upstream submission
Marc-Gee 923ce08
Various edits B4 Upstream commit
Marc-Gee fa8573c
Merge pull request #6 from Marc-Gee/dev
mauriciozuardi 2318372
Update README.md
Marc-Gee 3c43ea3
Updates to shorten the verification instructions
Marc-Gee 7216a8d
Insert smaller (80pct sized) screenshots
Marc-Gee 6154607
Improved Screenshots
Marc-Gee b04383d
Verification: Shortening, reordering & clarify
Marc-Gee a136a86
Fix Spelling, grammar and shasum command
Marc-Gee e1090ba
Fix SHASUM option flag typo --check
Marc-Gee d8de405
Inserted instructions on MicroSD writing.
Marc-Gee 8575e4d
Micro SD Instructions
Marc-Gee 50cf8dd
Inserted a table format for the different binaries
Marc-Gee 081d24f
updated download table layout to 2 columns
Marc-Gee 594751b
changes to file names in scripts/commands
Marc-Gee e225e05
Fixed TitleCase issues throughout document
Marc-Gee ac8ba47
Instructions added if: wifi component was physically removed
Marc-Gee 6d535e9
Titlecase corrections to prior commit
Marc-Gee 4fae69e
reorder download table and add tooltips
Marc-Gee File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -46,7 +46,7 @@ If you have specific questions about the project, our [Telegram Group](https://t | |
### Considerations: | ||
* Built for compatibility with Specter Desktop, Sparrow, and BlueWallet Vaults | ||
* Device takes up to 60 seconds to boot before menu appears (be patient!) | ||
* Always test your setup before transfering larger amounts of bitcoin (try testnet first!) | ||
* Always test your setup before transferring larger amounts of bitcoin (try Testnet first!) | ||
* Taproot not quite yet supported | ||
* Slightly rotating the screen clockwise or counter-clockwise should resolve lighting/glare issues | ||
* If you think SeedSigner adds value to the Bitcoin ecosystem, please help us spread the word! (tweets, pics, videos, etc.) | ||
|
@@ -77,60 +77,144 @@ Notes: | |
|
||
# Software Installation | ||
|
||
## Special Note on Minimizing Trust | ||
## A Special Note On Minimizing Trust | ||
As is the nature of pre-packaged software downloads, downloading and using the prepared SeedSigner release images means implicitly placing trust in the individual preparing those images; in our project the release images are prepared and signed by the eponymous creator of the project, SeedSigner "the person". That individual is additionally the only person in possession of the PGP keys that are used to sign the release images. | ||
|
||
However, one of the many advantages of the open source software model is that the need for this kind of trust can be negated by our users' ability to (1) review the project's source code and (2) assemble the operating image necessary to use the software themselves. From our project's inception, instructions to build a SeedSigner operating image (using precisely the same process that is used to create the prepared release images) have been made availabile. We have put a lot of thought and work into making these instructions easy to understand and follow, even for less technical users. These instructions can be found [here](docs/manual_installation.md). | ||
|
||
## Downloading the Software | ||
|
||
The quickest and easiest way to install the software is to download the most recent "seedsigner_X_X_X.zip" file in the [software releases](https://github.com/SeedSigner/seedsigner/releases) section of this repository. | ||
To download the most recent software version, click [here](https://github.com/SeedSigner/seedsigner/releases), and then expand the *Assets* sub-heading. | ||
Download these files to your computer: | ||
1. seedsigner_0_5_x.img.zip | ||
2. seedsigner_0_5_x.img.zip.sha256 | ||
3. seedsigner_0_5_x.img.zip.sha256.sig | ||
|
||
After downloading the .zip file, extract the seedsigner .img file, and write it to a MicroSD card (at least 4GB in size or larger). Then install the MicroSD in the assembled hardware and off you go. | ||
**Note:** The version numbers of the latest files will be higher than this example, but the naming format will be the same. | ||
Once the files have all finished downloading, follow the steps below to verify them, and then to write the software onto a MicroSD card. Insert the MicroSD into your assembled hardware and turn on the USB power. Allow about 45 seconds for our logo to appear, and then you can begin using your Seedsigner! | ||
|
||
## Verifying the Software | ||
You can verify the data integrity and authenticity of the latest release with as little as three commands. This process assumes that you know [how to navigate on a terminal](https://terminalcheatsheet.com/guides/navigate-terminal) and have navigated to the folder where you have these four relevant files present: (This will most likely be your Downloads folder.) | ||
|
||
* seedsigner_pubkey.gpg (from the main folder of this repo) | ||
* seedsigner_0_4_6.img.zip (from the software release) | ||
* seedsigner_0_4_6.img.zip.sha256 (from the software release) | ||
* seedsigner_0_4_6.img.zip.sha256.sig (from the software release) | ||
|
||
**Note:** The specific version number of the files in your folder might not match the above exactly, but their overall format and amount should be the same. | ||
|
||
This process also assumes you are running the commands from a system where both [GPG](https://gnupg.org/download/index.html) and [shasum](https://command-not-found.com/shasum) are installed and working. | ||
## Verifying that the downloaded files are authentic (optional but highly recommended!) | ||
|
||
You can quickly verify that the software you just downloaded is both authentic and unaltered, by following these instructions. | ||
We assume you are running the commands from a computer where both [GPG](https://gnupg.org/download/index.html) and [shasum](https://command-not-found.com/shasum) are already installed, and that you also know [how to navigate on a terminal](https://terminalcheatsheet.com/guides/navigate-terminal). | ||
|
||
|
||
### Step 1. Verify that the signature (.sig) file is genuine: | ||
|
||
Run GPG's *fetch-keys* command to import the SeedSigner projects public key from the popular online keyserver called *Keybase.io*, into your computers *keychain*. | ||
|
||
|
||
First make sure that the public key is present in your keychain: | ||
``` | ||
gpg --import seedsigner_pubkey.gpg | ||
``` | ||
This command will import the public key, or return: | ||
``` | ||
key <...> not changed | ||
gpg --fetch-keys https://keybase.io/SeedSigner/pgp_keys.asc | ||
``` | ||
The result should confirm that 1 key was *either* imported or updated. *Ignore* any key ID's or email addresses shown. | ||
|
||
Now you can verify the authenticity of the small text file containing the release's SHA256 hash with the command: | ||
![SS - Keybase PubKey import with Fingerprint shown (New import or update of the key)](https://user-images.githubusercontent.com/91296549/174248861-7961c038-1fbf-47a1-a110-146cb218b1c8.jpg) | ||
|
||
Next, you will run the *verify* command on the signature (.sig) file. (*Verify* must be run from inside the same folder that you downloaded the files into earlier. The `*`'s in this command will auto-fill the version from your current folder, so it should be copied and pasted as-is.) | ||
``` | ||
gpg --verify seedsigner_0_*_*.img.zip.sha256.sig | ||
``` | ||
**Note:** The `*`s in the command above allow the terminal to auto-populate the command with the version number you have in the folder you are in. It should be copied and pasted as is. | ||
|
||
The reponse to this command should include the text: | ||
``` | ||
Good signature from "seedsigner <btc.hardware.solutions@gmail.com>" [unknown] | ||
When the verify command completes successfully, it should display output like this: | ||
<BR> | ||
![SS - Verify Command - GPG on Linux - Masked_v3-80pct](https://user-images.githubusercontent.com/91296549/215339119-5326e814-1d60-47bb-980c-1498a2f30baf.jpg) | ||
The result must display "**Good signature**". Ignore any email addresses - *only* matching Key fingerprints count here. Stop immediately if it displays "*Bad signature*"! | ||
<BR> | ||
|
||
On the *last* output line, look at your *rightmost* 16 characters (the 4 blocks of 4). | ||
**Crucially, we must now check WHO that Primary key fingerprint /ID belongs to.** We will start by looking at Keybase.io to see if it is the *Seedsigner project* 's public key or not. | ||
|
||
<details><summary> About the warning message:</summary> | ||
<p> Since you are about to match the outputted fingerprint/ID against the proofs at Keybase.io/seedsigner, and thereby confirm who the pubkey really belongs to-, you can safely ignore this warning message: | ||
|
||
``` | ||
The previous command validates that aforementioned small text file was signed using the private key that matches the published public key associated with the project (an early timestamped record of this public/private key's creation can be found in this [tweet](https://twitter.com/SeedSigner/status/1389617642286329856?s=20)). | ||
> WARNING: This key is not certified with a trusted signature! | ||
> There is no indication that the signature belongs to the owner. | ||
``` | ||
</p> | ||
</details> | ||
<br> | ||
|
||
<details><summary> More about how the verify command works:</summary> | ||
<p> | ||
The verify command will attempt to decrypt the signature file (sha256.sig) by trying each public key already imported into your computer. If the public key we just imported (via fetch-keys), manages to: (a) successfully decrypt the .sig file , and (b), that result matches exactly to the clear-text equivalent (.sha256) of the .sig file, then its "a good signature"! | ||
|
||
Crucially, we must still manually check who *exactly* owns the Key ID which gave us that "Good signature". Thats what the warning message means- Who does the matching key really belong to? We will start by looking at keybase.io to see if it is "The Seedsigner project"'s public Key or not. | ||
Note that it is the file hashes of .sig and .sha256 that *verify* compares, not their raw contents. | ||
|
||
</p> | ||
</details> | ||
<br> | ||
|
||
Now to determine ***who*** the Public key ID belongs to: Goto [Keybase.io/seedsigner](www.keybase.io/seedsigner) | ||
<BR> | ||
![SS - Keybase Website PubKey visual matching1_Cropped-80pct](https://user-images.githubusercontent.com/91296549/215326193-97c84e35-5570-4e52-bf3f-e86d367c8908.jpg) | ||
|
||
|
||
The last step is to make sure the .zip file that you've downloaded, and that contains the released software, is a perfect match to the software that was published by the holder of the private key in the last step. The command for this step is: | ||
|
||
**You must now *manually* compare: The 16 character fingerprint ID (as circled in red above) to, those *rightmost* 16 characters from your *verify* command.** | ||
|
||
**If they match exactly, then you have successfully confirmed that your .sig file is authentically from the Seedsigner Project!** | ||
<BR> | ||
|
||
<details><summary>Learn more about how keybase.io helps you check that someone (online) is who they say they are:</summary> | ||
<p> | ||
Keybase.io allows you to independently verify that the public key saved on Keybase.io, is both authentic and that it belongs to the organization it claims to represent. | ||
Keybase has already checked the three pubkey file locations cryptographically when they were saved there. You can further verify the key publications if you would like: | ||
|
||
- *via Keybase*: By clicking on any of the three blue badges to see that the "proof" was published at that location. (The blue badge marked as tweet, is in the most human-readable form and it is also a bi-directional link on Twitter) | ||
or, | ||
- *without keybase (out-of-band)*: By using these 3 links directly: [Twitter](https://twitter.com/seedsigner/status/1530555252373704707), [Github](https://gist.github.com/SeedSigner/5936fa1219b07e28a3672385b605b5d2) and [Seedsigner.com](https://seedsigner.com/keybase.txt). This method can be used if you would like to make an even deeper, independent inspection without relying on Keybase at all, or if the Keybase.io site is no longer valid or it is removed entirely. | ||
|
||
Once you have used one of these methods, you will know if the Public Key stored on Keybase, is genuinely from the SeedSinger Project or not. | ||
</p> | ||
</details> | ||
<br> | ||
|
||
If the two ID's do *not* match, then you must stop here immediately. Do not continue. Contact us for assistance in the Telegram group address above. | ||
|
||
<br> | ||
|
||
### 2. Verifying that the *software images/binaries* are genuine | ||
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. The last level3 header was "Step 1.", so here maybe "Step 2." instead of "2." 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. Fixed in [a136a86] |
||
|
||
Now that you have confirmed that you do have the real Seedsigner Project's Public Key (ie the 16 characters match) - you can return to your terminal window. Running the the *shasum* command, is the final verification step and will confirm (via file hashing) that the software code/image files (ie the binary files inside the zip file), were also not altered since publication, or even during your download process. | ||
|
||
**On Linux or OSX:** Run this command | ||
``` | ||
shasum -a 256 -c seedsigner_0_*_*.img.zip.sha256 | ||
``` | ||
The reponse to this command should include the text: | ||
|
||
**On Windows (inside Powershell):** Run this command | ||
``` | ||
CertUtil -hashfile seedsigner_0_*_*.img.zip SHA256 | findstr /v "hash" | ||
``` | ||
<BR> | ||
|
||
Wait about 30 seconds for the command to complete, and it should display: | ||
``` | ||
seedsigner_0_4_6.img.zip: OK | ||
seedsigner_0_5_x.img.zip: OK | ||
shasum: WARNING: 4 Lines are improperly formatted | ||
``` | ||
**If you receive the "OK" message** for your **seedsigner_[x.x.x.VersionNumber].img.zip file**, as shown above, then your verification is fully complete! | ||
**All of your downloaded files have now been confirmed as both authentic and unaltered!** You can proceed to create/write your MicroSD card😄😄 !! | ||
|
||
The warning message describing '4 lines being improperly formatted' can be safely ignored. | ||
If your file result shows "FAILED", then you must stop here immediately. Do not continue. Contact us for assistance at the Telegram group address above. | ||
|
||
<BR> | ||
|
||
Please recognize that this process can only validate the software to the extent that the entity that first published the key is an honest actor, and their private key is not compromised or somehow being used by a malicious actor. | ||
<BR> | ||
<BR> | ||
|
||
|
||
There are other steps you can take to verify the software, including examining the hash value in the .sha256 text file, but this one has been documented here because it seems the simplest for most people to follow. Please recognize that this process can only validate the software to the extent that the entity that first published the key is an honest actor, and assumes the private key has remained uncompromised and is not being used by a malicious actor. | ||
## Writing the software to your MicroSD card | ||
Insert more instructions here. | ||
(to be done by MarcG) | ||
|
||
--------------- | ||
|
||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
"eponymous" becomes "anonymous"" That individual is additionally" becomes " That individual is also" or " Additionally, that individual is"
Is it 'SeedSigner "the person"', or is it 'SeedSigner "the man"' ???