Proof over promise
Prove it for yourself
Don't take our word for any of it. Verify the release signatures, reproduce the builds from source, and confirm the authentic releases onion before you trust a single byte.
Why this page exists
Verification is part of the product.
A closed black box asks you to trust it. GuardTalk asks you to check it. Everything we ship is open source, signed, and reproducible — so the work below is the difference between trusting a vendor and confirming a fact. If a step here ever fails, treat the artefact as untrusted and reach us over Tor.
Tor-only distribution
The OS images and the Messenger APK live behind a releases onion, labelled and never auto-redirected. This page, on the clearnet, shows you how to verify them — the artefacts themselves are fetched over Tor. The full releases onion address is published at launch.
Step one
How to verify signatures.
Every release is signed with the GuardTalk signing key. Import the key once, confirm its fingerprint against the one published here and on the onion, then verify each artefact against its detached signature.
Import the public signing key and check its fingerprint:
gpg --import guardtalk-release.asc
gpg --fingerprint releases@guardtalk.io
# the expected signing-key fingerprint is
# published at launch — compare it character for character.
Verify a downloaded image against its detached signature:
gpg --verify guardtalkos-0.1.0.img.sig guardtalkos-0.1.0.img
# a correct result reports a Good signature from the
# GuardTalk release key with the fingerprint above.
Confirm the published hash matches the file you hold:
sha256sum guardtalkos-0.1.0.img
# compare the output against the SHA-256SUMS file,
# which is itself signed by the key above.
A signature only proves the file came from the holder of that key, unchanged. It does not prove the source is benign — for that, reproduce the build below and read the code. The exact commands and key material are bounded by the threat model.
Step two
Reproducible builds.
A signature tells you who built an artefact. A reproducible build lets you confirm what they built — that the binary you downloaded was produced from the public source and nothing else.
Clone the source at the release tag.
Check out the exact tagged commit for the release you are verifying. The tag is signed by the same key as the artefacts.
Build in the pinned environment.
Run the documented build with pinned toolchain versions, so your output is byte-deterministic rather than dependent on your machine.
Compare the hashes.
Your locally built artefact should hash to the same SHA-256 as the published, signed release. If it matches, you have proven the binary corresponds to the source.
Reproducibility is bounded: it proves binary-to-source correspondence, not that the source is free of every flaw. Read the code, and read the limits.
Step three
Confirm the authentic onion.
An onion address is its own public key — a fake address cannot impersonate the real one, but you can still be pointed at a different address entirely. Confirm the releases onion against more than one source before you trust it.
Releases onion
published at launch
Once published, cross-check the address against the value printed in this page's signed source, the footer of every page on this site, and the signed release notes. The full address character-for-character also lives in the signing key's notes, published at launch. If two trusted sources disagree, stop.
What success looks like
A correct verification, in plain terms.
- The signing key imports and shows the fingerprint published here and on the onion — identical, character for character.
- gpg --verify reports a Good signature from that key for every artefact you downloaded.
- The SHA-256 of each file matches the signed SHA-256SUMS.
- Your own reproducible build produces a binary with the same hash as the signed release.
- The releases onion you used matches the address in at least two independent trusted sources.
If any one of these fails, do not flash, install, or run the artefact. Verification that almost passes has not passed.