0) Servers
MUST implement tls-server-end-point and enable/advertise it.
Clients SHOULD implement tls-server-end-point and use it if no other
(stronger) channel-binding method is supported by both sides.
I think that would be horrible advice these days -- the
tls-server-end-point gives a false sense of security and is known
sub-optimal for years. It would be similar to urge people to MUST
implement 3DES or RC4 for TLS. There is no fatal attack for those
either, but the collective wisdom is "don't use them".
I suggest to mandate tls-exporter from RFC 9266. I believe any
deployment not being able to support this is better off not supporting
channel bindings at all, because doing so just adds complexity and
attack surface and end-user confusion ("oh nice I have a channel
binding!") for little gain.
I really object! tls-server-end-point is vastly better than no channel-binding
at all! If you need a real world example: It would have prevented the
jabber.ru attack.
I get that its not the best channel-binding we have at hand here, but that
MUST in rule 0 isn't a "please don't do better", but rather a
"please don't do
worse". Its a *minimal* requirement.
And like others already said, there are deployments that can't do exporter.
Preventing them from being able to do channel-binding at all would be very
bad.
And yes, using tls-exporter as "minimal" requirement instead would do exactly
that: prevent channel-binding at all. See, you need a channel-binding that can
be implemented and deployed in *absolutely* all scenarios, for my list of
rules to work and block the attack in rule 5. Tls-exporter just doesn't meet
that requirement.
Even worse: just doing an s/tls-server-endpoint/tls-exporter in these rules
will not only render rule 5 completely useless, but make it harmful: it would
block all deployments only being able to do tls-server-end-point. Those
deployments would need to turn off channel-binding completely to allow clients
following those rules to authenticate at all.
So I ask you: do you want to block all deployments using tls-server-end-point
from using channel-binding at all, substantially lowering their security, just
because having tls-exporter named in a XEP feels better than tls-server-end-
point?
We can always name tls-exporter explicitly in the XEP, though.
Maybe something like: Servers and clients SHOULD implement a stronger channel-
binding like tls-exporter, if at all possible.
-tmolitor