3 ms·
If you trust blindly on first use, you're wide open to an impersonation attack. That isn't a solution, it's giving up. That was my point. This is why browsers
by MaxBarraclough 7y ago
If you trust blindly on first use, you're wide open to an impersonation attack. That isn't a solution, it's giving up. That was my point.
This is why browsers are increasingly hostile to self-signed certs, which users should never see.
It's the same reason SSH clients prompt you to manually confirm the expected fingerprint when connecting to a new server, rather than accepting it on faith, which is what you're suggesting.
- zozbot234 7y agoNo one's saying that you should trust "blindly". The whole point of having a "hostile" warning when encountering a self-signed cert is protecting the user from impersonation attacks. But if you've established trust in other ways (such as by verifying the cert via an out-of-band channel, or because you set it up yourself) TOFU should be available.
- MaxBarraclough 7y ago> No one's saying that you should trust "blindly". Gotcha. Quick digression: I'm not a fan of the term 'trust on first use', as it can very reasonably be interpreted to mean exactly that. I mean, that's what is says... Wikipedia even gives it as one of its two almost antonymous definitions of the term, i.e. it can mean on first use, manually confirm whether to trust, or it can mean on first use, blindly trust. > The whole point of having a "hostile" warning when encountering a self-signed cert is protecting the user from impersonation attacks. There's a strong argument to be made that if you really want to protect the end-user from impersonation attacks, you shouldn't even give them the option of proceeding. Unfortunately, users are conditioned to click through warnings uncritically. > if you've established trust in other ways (such as by verifying the cert via an out-of-band channel, or because you set it up yourself) TOFU should be available In principle, sure, but what's the use-case here? We already have a secure, scalable, fool-proof solution to the problem: CAs. We insist upon CAs, because there's no good reason not to use them for all public-facing websites. What's the use-case here? If you want to run your own personal network, and your own personal alternative DNS scheme, you're free to set up your own personal CA for the purpose. Corporate networks do this. I see no reason to chuck out the whole concept of CAs. SSH is a different beast, as it's not intended for use by non-technical users. It's reasonable to insist on your sysadmin manually checking SSH fingerprints. Not so for non-technical users and HTTPS certs. Even in the case of SSH, CAs are a good solution if you're working at scale. To my knowledge, the only thing approaching a serious alternative to CAs, is web-of-trust, but it's not really a practical alternative.