[openpgp] Re: adding validate-userid to the sopv subset
Daniel Kahn Gillmor <dkg@fifthhorseman.net> Thu, 01 May 2025 22:16 UTC
Return-Path: <dkg@fifthhorseman.net>
X-Original-To: openpgp@mail2.ietf.org
Delivered-To: openpgp@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 5F10023D50A5 for <openpgp@mail2.ietf.org>; Thu, 1 May 2025 15:16:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.1
X-Spam-Level:
X-Spam-Status: No, score=-2.1 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=neutral reason="invalid (unsupported algorithm ed25519-sha256)" header.d=fifthhorseman.net header.b="so+N8qb2"; dkim=pass (2048-bit key) header.d=fifthhorseman.net header.b="LZxmcLBY"
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id a3kSrAQ4EJzG for <openpgp@mail2.ietf.org>; Thu, 1 May 2025 15:16:52 -0700 (PDT)
Received: from che.mayfirst.org (che.mayfirst.org [IPv6:2001:470:1:116::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id BCB9623D509A for <openpgp@ietf.org>; Thu, 1 May 2025 15:16:52 -0700 (PDT)
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/simple; d=fifthhorseman.net; i=@fifthhorseman.net; q=dns/txt; s=2019; t=1746137812; h=from : to : subject : in-reply-to : references : date : message-id : mime-version : content-type : from; bh=4DuHwuuVR8Z5hSGsCJ0pweLfxVLERsifc2q7xXNWFNY=; b=so+N8qb2VaumiXXJLkxb3+BlIOFAmR+tT6YWhVqlsbmLrJzvVEBM+c/C2ksrNUn+97hbB f9XukVn20JFqBtuDQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fifthhorseman.net; i=@fifthhorseman.net; q=dns/txt; s=2019rsa; t=1746137812; h=from : to : subject : in-reply-to : references : date : message-id : mime-version : content-type : from; bh=4DuHwuuVR8Z5hSGsCJ0pweLfxVLERsifc2q7xXNWFNY=; b=LZxmcLBYCV/gPJbzRoll7GjNWsbNrYvt6OxwAPCPgraPbvXq5DMERQ4wqaVWYYktriWeU Eq4FM00BrroZuA4dAD61NNsPYn0Jcxh9cX7e02hMYaeNKvF8TjsbyI3493Rmkrm5NiH+SSA vS0EcfZT7USSSmzELCk7UBNXIZGu4p1PulLTLEeqw8uiwz9iWoyQ99M43foFFa/0jIaPcpL e/1dzvJi/Gu+CxO14GTYKfe/siOnIMyROI6TMTLPWee7LAt5WX/r+0wcdQlqTrrj2e3+gcr /J7YbJn0NCjbReWIlOR+bCoLTIHtbAZAun+09kXmY5sc9qD750GtH9u0TKQg==
Received: from fifthhorseman.net (lair.fifthhorseman.net [108.58.6.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by che.mayfirst.org (Postfix) with ESMTPSA id 15F5CF9B1; Thu, 1 May 2025 18:16:46 -0400 (EDT)
Received: by fifthhorseman.net (Postfix, from userid 1000) id E406E13F6A6; Thu, 01 May 2025 18:16:42 -0400 (EDT)
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
To: Michael Richardson <mcr@sandelman.ca>, openpgp@ietf.org
In-Reply-To: <17693.1746111125@obiwan.sandelman.ca>
References: <87ldrhgqzw.fsf@fifthhorseman.net> <17693.1746111125@obiwan.sandelman.ca>
Autocrypt: addr=dkg@fifthhorseman.net; prefer-encrypt=mutual; keydata= xjMEZXEJyxYJKwYBBAHaRw8BAQdA5BpbW0bpl5qCng/RiqwhQINrplDMSS5JsO/YO+5Zi7HNFzxk a2dAZmlmdGhob3JzZW1hbi5uZXQ+wsARBBMWCgB5AwsJB0cUAAAAAAAeACBzYWx0QG5vdGF0aW9u cy5zZXF1b2lhLXBncC5vcmcS78JIJ7JbALqPiKEmva7/Pp16WwXWm9hbe5+B/UvnfwMVCggCmwEC HgEWIQTUdwQMcMIValwphUm7fpEBSV5r9wUCZadfkAUJBdnwRQAKCRC7fpEBSV5r9yNXAP442N0c zvisBroQSKKpo+OWm2JpnEJWoVheeJvoRtkBGQEA+edHylby8IGcNccq7rmM2rAXdofvrU1o6qow V+mmDwbOMwRnio4OFgkrBgEEAdpHDwEBB0Cw9HzJFl9lZn3UBaUqSMSgxjcdbd0MwNVcGZ8t8wdN EcLAvwQYFgoBMQWCZ4qODgkQu36RAUlea/dHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMuc2VxdW9p YS1wZ3Aub3JnhcN+tn41cAg01Kk56zcAfpdsh8j98PDe00mqKPfFvaYCmwK+oAQZFgoAbwWCZ4qO DgkQeAuFTtnCtJZHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMuc2VxdW9pYS1wZ3Aub3JnxsD8Sk5P Wgx8c/Zseo6OlCjyDC+Ogm17gTaUUIpxjWYWIQRjrBGOWy5dZsiKhad4C4VO2cK0lgAAdcQA/1RG dmrmvVxkBY2qNPjtERNwPga8Pf4IdlenrZ03NXM4AQC+TDHMpD7d5obEvUy8GYI3oThzYItPP8vv ChY+wbaIBRYhBNR3BAxwwhVqXCmFSbt+kQFJXmv3AAAKbgD+K1MZXnRKPdmA8DgNysyGRZY8cSVH HQcC7ZAAtV3i2+wA/0CyOYrbFYbyTRALgoERR07OHFoP+fJopQLMNQARVUELzjgEZ4qN+RIKKwYB BAGXVQEFAQEHQDTGlR+Qmn334e+bPqvojJVdFsiBf0leAAHP+ESqop8NAwEIB8LAAAQYFgoAcgWC Z4qN+QkQu36RAUlea/dHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMuc2VxdW9pYS1wZ3Aub3JnA5Lw b3wOOcoodImuVNw4PYq1U65FDC1Q2JMFIcJXqF0CmwwWIQTUdwQMcMIValwphUm7fpEBSV5r9wAA 6egA/j3QANSmogZ5VTF5KlI+BBye9ud/w9j7RLcCHU6u8AA1AQC3FGaNuv+uWOSa+eeEoI/aZrGd X5el8b/m6aXDDxDjDg==
Date: Thu, 01 May 2025 18:16:42 -0400
Message-ID: <87ikmkgenp.fsf@fifthhorseman.net>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-="; micalg="pgp-sha512"; protocol="application/pgp-signature"
Message-ID-Hash: WZECAFGM45VBKZHFZSAIS6LLOOXQ424X
X-Message-ID-Hash: WZECAFGM45VBKZHFZSAIS6LLOOXQ424X
X-MailFrom: dkg@fifthhorseman.net
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-openpgp.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [openpgp] Re: adding validate-userid to the sopv subset
List-Id: "Ongoing discussion of OpenPGP issues." <openpgp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/openpgp/ekszW-QTBy4hmzjW7-Vde0PrztM>
List-Archive: <https://mailarchive.ietf.org/arch/browse/openpgp>
List-Help: <mailto:openpgp-request@ietf.org?subject=help>
List-Owner: <mailto:openpgp-owner@ietf.org>
List-Post: <mailto:openpgp@ietf.org>
List-Subscribe: <mailto:openpgp-join@ietf.org>
List-Unsubscribe: <mailto:openpgp-leave@ietf.org>
On Thu 2025-05-01 10:52:05 -0400, Michael Richardson wrote:
> Daniel Kahn Gillmor <dkg@fifthhorseman.net> wrote:
> > I'm looking at adding sop's "validate-userid" subcommand (which does
> > simple one-hop User ID validation from a set of fully trusted
> > authorities) to the next revision of the sopv verification-only subset.
>
> So the answers the question: can I (given my current "trust anchors",
> e.g. "trust ultimate") validate userid XYZ?
yep, that's right.
> > My reasoning for this is that the functionality from an OpenPGP
> > perspective is very similar -- it's just a different type of OpenPGP
> > signature being checked. And, it would make it possible to use a sopv
> > implementation to implement identity-checked signature verification.
>
> Yes, it sounds reasonable, but it does stray into keyring management.
> I agree that it fits into stateless, no secret key, etc. though.
To be clear: The Stateless OpenPGP command line interface itself ("sop")
already has a "validate-userid" subcommand, which does what is described
above. My question here is whether it makes sense to add it to "sopv"
(the verification-only subset of sop)
> Who/when would use it?
> Would it be used in, for instance, SBOM verification?
I could imagine it being used, for example, in validating signatures in
a e-mail. For example, consider an automated system that accepts some
control messages over e-mail; it only accepts them from specific senders
and only when they're cryptographically signed.
The incoming e-mail has a "From" address, and the system has a set of
trust anchors, and it knows which OpenPGP certificate has correctly
signed the e-mail… what is it missing? Assuming we're working within
the model that cryptographic certificates are bound to e-mail addresses,
the thing missing is the connection between the "From" address and the
certificate that signed the message.
sopv validate-userid --addr-spec-only "$from_address" anchors.cert < signing.cert
ought to be able to make that work.
If folks have other scenarios, i'd certainly be interested -- not
entirely sure how it would work out for SBOM verification.
> > There is also a separate request to make "validate-userid" fancier than
> > a simple one-hop validator (See
> > https://gitlab.com/dkg/openpgp-stateless-cli/-/issues/121) but for sopv
> > 1.2 i'm inclined to just keep it at a one-hop mechanism for the moment.
>
> In the olden days, I would use one of the find a path from A->B web sites to
> do that... then discover which people I needed to bug to sign some key so
> that we'd have a trusted path.
Right, this kind of pathbuilding is a more complex process than what i'm
asking about for sopv right now. It's also substantially more dubious.
Just because i'm convinced that certificate A belongs to Alice doesn't
mean that i should be willing to rely on Alice's assertion that
certificate B belongs to Bob.
So the "trusted path" idea is actually a pretty strange one, and even if
we're talking about "trust signatures" (certifications with OpenPGP
"trust subpackets"), that approach has a lot of surprising twists to it
(e.g. see the recent discussion on https://dev.gnupg.org/T7611 )
So for the moment, sop (and sopv) is sticking with a one-hop model, but
i'd encourage anyone interested in the pathfinding approaches to weigh
in on #121, and maybe offer an MR that addresses the raised issues.
--dkg
- [openpgp] adding validate-userid to the sopv subs… Daniel Kahn Gillmor
- [openpgp] Re: adding validate-userid to the sopv … Michael Richardson
- [openpgp] Re: adding validate-userid to the sopv … Daniel Kahn Gillmor
- [openpgp] Re: adding validate-userid to the sopv … Daniel Kahn Gillmor