On 6/25/26 01:11, Raymond Chang wrote:
> Dinesh,
>
> Glad it was useful. Quick takes on your two open questions, then I'll let
> you carry the diff back to the list.
>
> Fingerprint width. I'd go 160. And I'd treat the VP-attestation binding as
> defence-in-depth, not as a reason to keep the fingerprint short. The width
> only becomes the binding parameter where the fingerprint stands alone as
> the identifier: someone reading it off a screen, comparing two by eye,
> pasting it without the attestation in the loop. Human-displayable
> identifiers get used that way regardless of what the protocol intends,
> which is exactly the Evil32 lesson. So size it for the standalone case,
> because that's the case you can't enforce away.
>
> Two things push me past 128 specifically. First, this is a protocol built
> around multi-decade horizons, and a 2^64 collision floor only gets cheaper
> over the exact window you're designing for; grindable on a laptop cluster
> today is worse in twenty years. Second, fingerprint width is close to
> unchangeable once registries and displays are populated, so it's the wrong
> place to economise. 2^80 for one extra display line is cheap insurance on a
> parameter you're stuck with. If anything, your 128-default /
> 160-institutional split runs the wrong way: institutional registrants have
> the strongest VP binding, so they're the better-covered class, while the
> casual standalone uses are the exposed ones.
160 bits isn't enough to prevent collisions. 2^80 is a lot of work,
but the Bitcoin network's output is far higher. It's true that Bitcoin
ASICs can't be repurposed, but I think their output is enough to show
that 2^80 work is insufficient.
Furthermore, humans are inherently imprecise. A near-collision (where
all but a few bits of the output are the same) is likely enough to
fool many of them. Longer fingerprints make that much harder.
OpenPGP has switched to 256-bit fingerprints and I recommend doing
the same. 512-bit might be even better.
I also recommend having a mapping from fingerprints to both QR codes
and human-readable words. QR codes allow easy verification by a
device with a camera and QR reader software, and human-readable words
can be easily read and compared.
> Boundary. Go content-type, and make the dual-sign rule mandatory for the
> institutional / public-record corpus rather than optional. A declared
> horizon puts the security-critical choice at sign time, when the publisher
> knows least about the future and is most tempted to pick the smaller
> signature. A content-type or corpus tag is observable and auditable after
> the fact; a declared horizon is just an assertion.
>
> Your dual-sign instinct is right, and partly because it dissolves the
> boundary problem instead of solving it. Content that signs both ways never
> has to predict a horizon. Under sign-once / verify-many the cost lands
> where it's affordable: you pay the SLH-DSA-192s signing cost once at
> publication, carry one larger manifest signature, and everyday verification
> still runs on the cheap ML-DSA path, with the hash-based signature sitting
> there as the durable fallback. Keep a horizon field if you want one, but as
> advisory metadata, never as the switch that picks the primitive.
Why SLH-DSA-192s and not SLH-DSA-256s?
--
Sincerely,
Demi Marie Obenour (she/her/hers)