Tbh, with the current implementation, ECH setup seems rather complicated to me. It benefits CDNs like CloudFlare since they control both DNS and the handshake process, but those who would like to setup ECH on their own are in trouble.
Tbh, with the current implementation, ECH setup seems rather complicated to me. It benefits CDNs like CloudFlare since they control both DNS and the handshake process, but those who would like to setup ECH on their own are in trouble.
So you need another channel to pull a public key (or something comparable), and they picked DNS for that
Meanwhile, DNS records already need to be updated if your IP changes anyway, so it is a logical place to put the authenticity information
If you do the key exchange on the connection, you have two choices:
a) anonymous key exchange, which could be MITM, because it's unauthenticated. This would be more secure than just sending the hostname in plain text, because it would require active interception rather than passive surveillance, but active interception is not that much harder than passive surveillance.
b) signed key exchange, which is tricky, because the server may have certificates for many hostnames, and it doesn't know which one you used
In order to have another option, you need to get a key through some other method. DNS is the more or less the most viable out of band method to get that information; after all, it's what you used to turn a hostname into an IP address to contact the server in the first place.