On Fri, May 28, 2021 at 01:44:54PM -0400, Wietse Venema wrote: > > The barrier to progress is deciding whether a point solution such as > > a new level like "dane-or-encrypt" is good enough, or whether the right > > way forward is a more general syntax for specifying what happends when > > a dynamic level like dane finds its preconditions missing. > > > > [...] > > > > which requires some design. > > Victor and I started a discussion on multiple acceptable security > settings six years ago (I recall that I was looking for a way to > discover sites that supported stronger-than-opportunisic TLS, but > it could equally well be used to allow different forms of mandatory > TLS). Unfortunately any notes that I kept on paper or whiteboard > were lost in the shuffle as I changed jobs.
You probably still have what we happened to share in email, the thread subject is "TLS user interface" from 2014-10-19 through 2014-10-24. > Postfix's opportunistic TLS is like an alias for {none, encrypt}, > dane is like {none, encrypt, dane-only} while what you asked for > corresponds to something like {encrypt, dane-only} or maybe {verify, > dane-only}. Yes, something like that, but with care about downgrades. So it is really: dane = if | MX host zone unsigned -> may | TLSA lookup fails -> next MX or defer | signed usable TLSA records -> dane-only | signed all unusable TLSA records -> encrypt | no signed TLSA records -> may dane-only = if | STARTTLS not offered -> next MX or defer | handshake fails -> next MX or defer | TLSA records don't match -> next MX or defer encrypt = if | STARTTLS not offered -> next MX or defer | STARTTLS offered -> mustTLS mustTLS = if | handshake succeeds -> send with unauthenticated TLS | otherwise -> next MX or defer may = if | STARTTLS not offered -> none | STARTTLS offered -> tryTLS tryTLS = if | handshake succeeds -> unauthenticated TLS | if message is fresh -> next MX or defer | if message age > backoff time -> reconnect + none none = try sending in the clear ... verify, fingerprint ... Adding more conditional branches without introducing inadvertent downgrades, and possibly allowing explicit downgrades, ... is a bit of a challenge. -- Viktor.