Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
.github, README: sign release archives with minisign (#557)
Since commit f7c1225 ("build: upload checksums file", 2022-04-13), each configlet release has a checksums file. The assets for the most recent release were: configlet_4.0.0-beta.12_checksums_sha256.txt configlet_4.0.0-beta.12_linux_x86-64.tar.gz configlet_4.0.0-beta.12_macos_x86-64.tar.gz configlet_4.0.0-beta.12_windows_x86-64.zip But confirming a checksum match only checks for accidental corruption. Add signing with minisign [1] to the release process, such that the next release will have a .minisig file for each archive: configlet_4.0.0-beta.13_checksums_sha256.txt configlet_4.0.0-beta.13_linux_x86-64.tar.gz configlet_4.0.0-beta.13_linux_x86-64.tar.gz.minisig configlet_4.0.0-beta.13_macos_x86-64.tar.gz configlet_4.0.0-beta.13_macos_x86-64.tar.gz.minisig configlet_4.0.0-beta.13_windows_x86-64.zip configlet_4.0.0-beta.13_windows_x86-64.zip.minisig From the minisign docs [2]: Minisign is a dead simple tool to sign files and verify signatures. It is portable, lightweight, and uses the highly secure Ed25519 public-key signature system. For example, to verify the above Linux x86-64 release archive, run: minisign -Vm configlet_4.0.0-beta.13_linux_x86-64.tar.gz -P RWQGj6DTXgYLhKvWJMGtbDUrZerawUcyWnti9MGuWMx7VDW9DqZn2tMZ where the argument to -P is the configlet minisign public key. Alternatively, you can download the configlet-minisign.pub file and run: minisign -Vm configlet_4.0.0-beta.13_linux_x86-64.tar.gz -p configlet-minisign.pub Minisign is an implementation of OpenBSD's signify protocol. For more background, see posts on signify [3] and problems with PGP [4]. An alternative would be to sign releases with an SSH key [5], but minisign is more focused, always uses Ed25519, and is simpler. Especially for verification. Some other projects that sign releases with minisign or signify: - libsodium [6] - OpenBSD [7] - Void Linux [8] - Zig [9] - LibreSSL [10] For now, the fetch-configlet scripts don't support verifying signatures. They may be able to do so eventually, but it won't be required: we don't want to require the user to have minisign installed. Don't upload a signature for the checksum file, because: - We want to optimize for the simplicity of verifying a single configlet release archive, so it's best to have only one way to do it: verify the signature for that archive. - It's harder to explain the alternative: verify the signature for the checksum file AND check that the sha256 of the release archive matches that in the checksum file. - It doesn't matter that verifying `n` configlet release archives requires running `n` minisign commands, rather than exactly 1 minisign command plus 1 `sha256sum --check` (or `sha256 -c` on some platforms) command. [1] https://github.com/jedisct1/minisign [2] https://jedisct1.github.io/minisign/ [3] https://www.openbsd.org/papers/bsdcan-signify.html [4] https://latacora.micro.blog/2019/07/16/the-pgp-problem.html [5] https://www.agwa.name/blog/post/ssh_signatures [6] https://github.com/jedisct1/libsodium/releases/tag/1.0.18-RELEASE [7] https://www.openbsd.org/faq/faq4.html#Download [8] https://docs.voidlinux.org/installation/index.html#verifying-digital-signature [9] https://github.com/ziglang/zig/releases/tag/0.11.0 [10] https://www.libressl.org/releases.html Closes: #548
- Loading branch information
009dc9d
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.
To clarify this part of the commit message:
You need to have the corresponding
.minisig
file in the same directory when you run one of the commands. The README instructions are clearer.