Pat Gunn wrote:
OpenSSL is an important and security-critical piece of software; it's important that it be maintainable, analysable for security properties, and that at runtime people don't have to worry about weird old code paths leading to breaches or instability.
By all means minimize the impact and refactor to reduce cruft, but do not simply drop the old protocol support entirely. Doing so opens cans of worms for some applications, while giving little actual benefit to OpenSSL itself.
Further, OpenSSL is more than just a TLS library, it's actually a cryptographic toolkit, so dropping TLS1.0/1.1 does not mean that any ciphers can be removed, since the symmetric ciphers are also available to applications directly. Presumably, they are used, albeit less commonly.
Keeping these old code paths around (and particularly enabled) in "relative perpetuity" is bad for OpenSSL and bad for its users because it prioritises the long tail (that presumably see very little legitimate use nowadays) over the main use; there needs to be some kind of cut-off and acceptance that even if a few historical relics are cut off, it's better for the mainstream. There are other things that will make those legacies harder to use anyhow - cert chains, IPv6, potentially physical connectivity. Given the weights of the interests involved, it's not that hard to peel the relic cases from the it-works-automatically status into the you-may-need-to-take-extra-steps status.
There is a difference between "you may need to change configurations and/or build these optional modules into your library" and "you'll simply need an old version of the library for that". The other issues you mention are either irrelevant for a LAN or easily worked around. There are bizarre legacy systems out there. I have personally seen a Token Ring hub with exactly one port active: its uplink to the router that was bridging it to the Ethernet LAN.
The Linux kernel removes support for old architectures for similar reasons. If someone were to argue a metric apart from relative perpituity, that'd be different, but I think any reasonable metrics of that flavour would have lines that have already been crossed in terms of usage numbers or any other measurable.
We did not have the same problem with SSLv3 because it was never as widespread. TLS was far more successful and turned up in embedded devices. The most serious problems with completely removing TLS1.0/1.1 come from general-reach applications that *do* need to be able to reach those "last odd one out" devices, such as asset enumeration. Forcing those applications to bundle an older (unmaintained) OpenSSL creates risks that they will end up exposed to vulnerabilities in that old OpenSSL version, which is bad because those applications are themselves likely to be security-critical.
One way or another, we are likely stuck with a need for /some/ kind of support for TLS1.0/1.1 for the foreseeable future. It need not be enabled (or even compiled) by default, but it *does* need to be maintained, on the mainline, not on some "premium support" side branch. Vendors, even security vendors, will do stupid things to cut costs.
-- Jacob