Building a Transparent Keyserver

https://news.ycombinator.com/rss Hits: 6
Summary

Today, we are going to build a keyserver to lookup age public keys. That part is boring. What鈥檚 interesting is that we鈥檒l apply the same transparency log technology as the Go Checksum Database to keep the keyserver operator honest and unable to surreptitiously inject malicious keys, while still protecting user privacy and delivering a smooth UX. You can see the final result at keyserver.geomys.org. We鈥檒l build it step-by-step, using modern tooling from the tlog ecosystem, integrating transparency in less than 500 lines. I am extremely excited to write this post: it demonstrates how to use a technology that I strongly believe is key in protecting users and holding centralized services accountable, and it鈥檚 the result of years of effort by me, the TrustFabric team at Google, the Sigsum team at Glasklar, and many others. This article is being cross-posted on the Transparency.dev Community Blog. Let鈥檚 start by defining the goal: we want a secure and convenient way to fetch age public keys for other people and services. The easiest and most usable way to achieve that is to build a centralized keyserver: a web service where you log in with your email address to set your public key, and other people can look up public keys by email address. Trusting the third party that operates the keyserver lets you solve identity, authentication, and spam by just delegating the responsibilities of checking email ownership and implementing rate limiting. The keyserver can send a link to the email address, and whoever receives it is authorized to manage the public key(s) bound to that address. I had Claude Code build the base service, because it鈥檚 simple and not the interesting part of what we are doing today. There鈥檚 nothing special in the implementation: just a Go server, an SQLite database, a lookup API, a set API protected by a CAPTCHA that sends an email authentication link, and a Go CLI that calls the lookup API. Transparency logs and accountability for centralized services A lot of...

First seen: 2025-12-19 16:17

Last seen: 2025-12-19 21:18