[openpgp] Fwd: draft-koch-openpgp-webkey-service-21 early Ht tpdir review

Mark Nottingham <[email protected]> Wed, 18 Feb 2026 12:58:50 +1100
Newsgroups gmane.ietf.openpgp
Message-ID <[email protected]>
Hello OpenPGP folks,

As HTTP Directorate chair, I asked for an early review of this document because I saw that this group was chartered to work on it, and because it seems to be getting deployment in the wild. Please see below.

Cheers,


> Begin forwarded message:
> 
> From: Martin Thomson via Datatracker <[email protected]>
> Subject: draft-koch-openpgp-webkey-service-21 early Httpdir review
> Date: 18 February 2026 at 12:48:35 pm AEDT
> To: <[email protected]>
> Cc: [email protected]
> Resent-From: [email protected]
> Reply-To: Martin Thomson <[email protected]>
> Archived-At: <https://www.w3.org/mid/177137931513.1151378.16577022032103443499@dt-datatracker-6ff7c68975-7k42g>
> List-Id: <ietf-http-wg.w3.org>
> 
> Document: draft-koch-openpgp-webkey-service
> Title: OpenPGP Web Key Directory
> Reviewer: Martin Thomson
> Review result: Not Ready
> 
> This is a preliminary review only.  I'm going to try to limit the feedback to
> HTTP matters, though I have not managed to do that.
> 
> This document is three things:
> 
> * A means of accessing a directory of public keys over HTTP
> * A predominantly SMTP-based protocol for populating those directories
> * Security-relevant, because getting the wrong key will allow the wrong person
> to read mail
> 
> This review is aimed at the first, though it covers the small role that HTTP
> plays in the second.  I have questions about the third, but that's not my focus
> here.
> 
> A lot of this review is a specialized repackaging of the content of RFC 9205. 
> I encourage the authors of this proposal to review that document.
> 
> # The domain label
> 
> The protocol defines a special domain name label. 
> https://datatracker.ietf.org/doc/html/rfc8820#name-uri-authorities explains why
> taking a name out of the namespace controlled by hundreds of millions of domain
> owners is unwise.  I strongly recommend against this practice.  This is more
> the case that the "direct" version seems to be a more practical path anyway. 
> The /.well-known prefix was reserved for exactly this sort of thing.
> 
> BTW, the fact that the domain is not part of the /.well-known path for the
> "direct" mode seems backwards to me.  A domain that is setup to handle this
> protocol exclusively is more likely to be hosting keys for multiple entities;
> the current design forces that service to always include "openpgpkey" in its
> name.  Overall, having the domain in the path always would be more robust.
> 
> # Redundant local part
> 
> It's not clear to me why the local part of the email address is included
> multiple times.  The role of SHA-1 here is also pretty questionable (more
> below).  This is something that percent encoding is pretty good at handling. 
> The half-hearted attempt at canonicalization used here is a constraint on mail
> operators (who might want t@ and T@ to go to different inboxes) and
> insufficient to capture the range of equivalence practices (like
> [email protected] == [email protected] or the common foo+bar@ == foo@).  Better to
> leave that to servers to manage.
> 
> # Case sensitivity
> 
> Domain name casing is weird.  Not in this specification, but more generally.  I
> suggest that you reconsider the way this works presently.  Rather than push the
> requirement to handle casing on clients, which makes it an interoperability
> hazard, you can have the server handle it. 
> /.well-known/openpgpkey/example.org/... and 
> /.well-known/openpgpkey/Example.org/... can map to the same resource on the
> server.  (Redirects and Content-Location exist to handle this sort of
> equivalence.)
> 
> If you really want to tangle with this particular problem, which includes
> internationalized domain names, the current design doesn't really hold up well.
> You can maybe mandate the use of A-labels, but you need to be careful about
> how use of those is specified.
> 
> # Redirects
> 
> This doesn't say anything about redirects.  As a practical matter, if you are
> using HTTP, you want to note that following redirects is expected.  This has
> many benefits:
> 
> * An operator can delegate responsibility for running the API to another entity.
> * A server can direct requests to equivalent URLs to a single canonical URL.
> * You get consistent implementation of this important feature.  Otherwise, if
> some clients will follow redirects and others don't, you can end up with no
> meaningful interoperability.
> 
> # Media types
> 
>> The HTTP GET method MUST return the binary representation of the OpenPGP key
> for the given mail address.
> 
> Where is this representation defined?
> 
> I see that the SMTP interactions are careful to define media types so that mail
> processing can confidently handle different content.  The same courtesy is not
> extended to HTTP resources.  The specification even recommends the use of
> "application/octet-stream" for this.  As a general rule, that media type is not
> a good idea when defining protocols, where having certainty about formats is
> useful for managing version migration.
> 
> This applies to the published keys and the resources at
> $WELLKNOWN/submission-address $WELLKNOWN/policy equally.
> 
> # Policy flags
> 
> This format seems under-specified.  Note that while I consider RFC 9309
> insufficiently specified, it is far better defined than this.
> 
> # Security
> 
> And because I can't help myself:
> 
> * This protocol does a proof of possession for the key.  It's not clear that
> this is a necessary function.  It also appears to do a routeability check for
> the address being claimed, which I believe is necessary.  Is there a security
> analysis, akin to those done for the ACME protocol, that confirms that this
> protocol is not vulnerable to the panoply of attacks that such protocols tend
> to be vulnerable to?  ACME had some serious problems with its design, which
> demonstrates the value of such analysis.
> 
> * I don't see any effort made to ensure that the operator of the HTTP server is
> authorized to operate as an authority for information about the mail
> infrastructure.  Other efforts in this domain use DNS records for this purpose.
> I realize that the problem statement said that this can be effectively "too
> hard", but I don't find that persuasive.
> 
> * SHA-1 appears to play a significant role here.  Given that it has been shown
> to have collision attacks and this protocol (as specified) would appear to
> depend on collision resistance, that seems like a genuine problem.  If I
> request keys for an address with a collision, how can I be sure that I'm
> getting the keys I intended?  (Above, I suggested that hashing might not even
> be needed; please consider that.)
> 
> * The other reason to use a hash function might be to discourage enumeration of
> addresses.  (To be clear, it's not a particularly /good/ protection given the
> low entropy of local parts.)  What measures, if any, can be put in place to
> protect the privacy of addresses from crawling and scraping?
> 
> * I'm not sure that you should talk about failures in previous versions of a
> document like this: "The use of DNS SRV records as specified in former
> revisions of this document reduces the certainty that a mail address belongs to
> a domain."  Besides, the opposite might be true, depending on the answer to the
> authority question I ask above.
> 
> # Nits
> 
> What is "hu"?
> 
> I see a few places where references are in the form "as specified below". 
> Please add section references instead.
> 
> 
> 

--
Mark Nottingham   https://www.mnot.net/

_______________________________________________
openpgp mailing list -- [email protected]
To unsubscribe send an email to [email protected]