M. Doyle

Vol. V · No. 2

Verify

Every page on this site is signed. When I publish, a script hashes every file the site serves (pages, stylesheets, and fonts) into a manifest, and I sign that manifest with an SSH key that never leaves my laptop. The footer of every page shows the commit it was built from and the key that signed it.

The steps below let you check this yourself: download the manifest and its signature, verify the signature against my public key, then compare a page’s hash with its line in the manifest. A page at /writing/ is listed as /writing/index.html. If the hashes match, the bytes you received are the ones I approved.

Don’t take this page’s word for the key. The same fingerprint is on my GitHub profile, so check that the two agree before trusting either.

What this doesn’t prove: that the site was built from its public source code, or that my laptop wasn’t compromised. It proves that nothing changed between my machine and your browser.

Attestation is my central research focus, so why not apply its core idea, proving rather than asserting, at a micro level on my own site?

Signing key

Signing key · ED25519
Fingerprint
SHA256:SIrKxFe96nzghLrALjXmB/3/GKZknXeDV48jwZQXsrE
Also on
GitHub →

1. Download the manifest and its signature

curl -O https://mdoyle.dev/manifest.txt
curl -O https://mdoyle.dev/manifest.txt.sig

2. Save the public key

echo 'michael namespaces="mdoyle-site" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHStX1TdJwXWb/Biz1/Tk2CsBPOnx3En6RKrXEa6DPZt mdoyle-site signing' > allowed_signers

3. Check the signature

ssh-keygen -Y verify -f allowed_signers -I michael -n mdoyle-site \
  -s manifest.txt.sig < manifest.txt

4. Check a page against the manifest

curl -s https://mdoyle.dev/ | shasum -a 256
grep ' /index.html$' manifest.txt