Trust paths for you to validate 0x4D1E900E14C1CC04
Trust paths for 0x4D1E900E14C1CC04 to validate you
Statistics of a key

Obtaining my public key

I take the security of verifying my OpenPGP key seriously. I have signed code releases for software which runs on many millions of machines around the world, so there is some value to an attacker in being able to get others to trust a different key as mine. I am careful to not use keys which can't reasonably be verified by others.

My key can be obtained from a number of places, with varying degrees of completeness and trustworthiness. This key is in the Strong Set; it was in the Strong Set before I started using it to sign objects other than keys, and I hope that when this key is retired I'll be able to do the same for the key which replaces it. I use certificate signing policy URLs in signatures upon keys, and when signing other keys of mine, the policy is https://www.security.spodhuis.org/PGP/policy/self.

Ideally, you'd meet me in person and get my key fingerprint from me (it's on my business cards), or use the Web of Trust and transitively decide to accept the key is mine. Failing that, we can do better than blind trust. We're here explicitly moving away from an object-based security model (the key carries with it the proof you need) to a location-based security model, which also requires a link security model for how you communicate with that location.

Factors to consider, in deciding whether to trust a particular place you get a key from, include: who can tamper with the key in storage there; who can add replacements; how do you know the identifier used for retrieving the key really does identify my key and not an attacker's; could the key be modified between the server and your system; do you trust this webpage to be legitimate, to be mine, to not have been tampered with?

  1. The domain spodhuis.org is DNSSEC-signed.
  2. I use DANE (TLSA) trust-anchors in DNS for HTTPS and some other protocols.
  3. For HTTPS, I use Public-Key-Pins: for TOFU ("Trust On First Use")
  4. For any web-page expected accessed from outside my household, I use certificates from a public authority. At present, that's usually Let's Encrypt.
  5. Any servers which you can reach publicly, from which to retrieve my key, are not under my direct physical control.

That last point is a bit of a problem. It doesn't much matter whether it's a virtual server, or physical hardware which I personally own, if I can't prove that nobody else is tampering with it. However, that's a far cry from being in a repository designed to allow anyone to upload keys of their choosing.