Following a which was initiated by , asking about experiences with disabling TLS1.0 and 1.1, I committed to writing an update on my late 2018 blog post, This is that update.
I’ll keep this post brief and aim to keep the comparisons pretty direct. If you haven’t already, I’d recommend reading for context and methodology. Let’s dive in…
Global view
First of all, I looked at our “global view” of TLS usage. This covers TLS usage on www.bbc.co.uk and from every country we served:
November 2018 (original) data
TLS Version |
Number of requests |
Percentage |
TLSv1.2 |
2,002,516,373 |
97.96% |
TLSv1.1 |
4,529,764 |
0.22% |
TLSv1.0 |
37,160,210 |
1.82% |
February 2020 data
Context: We have two traffic edges currently (one of which replaced the traffic edge in the 2018 data), one for UK and mainland Europe (which supports TLS1.3), another for “rest of world” (which does not yet support TLS1.3)
UK, mainland Europe & “rest of world”:
TLS Version |
Number of requests |
Percentage |
TLSv1.3 |
1,163,496,361 |
48.45% |
TLSv1.2 |
1,218,683,970 |
50.75% |
TLSv1.1 |
901,942 |
0.04% |
TLSv1.0 |
18,164,567 |
0.76% |
This shows a ~68% reduction in TLS1.0 usage globally over the 15 months or so between the two datasets. That’s pretty significant and is more than I had expected.
Incidentally, if we look exclusively at our UK/mainland Europe traffic edge (where TLS1.3 is enabled) we see ~69% TLS1.3 — so the adoption rate is strong:
TLS Version |
Number of requests |
Percentage |
TLSv1.3 |
1,163,496,361 |
69.07% |
TLSv1.2 |
506,655,701 |
30.08% |
TLSv1.1 |
500,971 |
0.03% |
TLSv1.0 |
13,879,940 |
0.82% |
Per-Country view
Let’s examine how TLS1.0 usage has changed on a country-by-country basis. Again, we’ll find the percentage of HTTPS requests which used TLS1.0 for countries which made ≥ 10,000 HTTPS requests over 3 days. I’ll represent this as a comparison view for simplicity:
Country |
Num requests (Nov. 2018) |
% TLS 1.0 (Nov. 2018) |
Num requests (Feb 2020) |
% TLS 1.0 (Feb 2020) |
% reduction |
Bosnia and Herzegovina |
35,031 |
100.00% |
418,582 |
0.90% |
99.10% |
China |
2,261,506 |
86.93% |
2,549,943 |
19.79% |
77.24% |
Montenegro |
28,712 |
48.74% |
193,059 |
0.61% |
98.76% |
Croatia |
113,948 |
43.75% |
1,210,262 |
7.79% |
82.19% |
Uganda |
150,225 |
34.48% |
1,619,262 |
6.22% |
81.95% |
Honduras |
97,644 |
29.55% |
916,586 |
6.77% |
77.10% |
Ethiopia |
180,473 |
26.04% |
2,186,672 |
6.67% |
74.38% |
Democratic Republic of the Congo |
12,775 |
25.67% |
138,347 |
3.80% |
85.20% |
Nigeria |
1,224,923 |
25.13% |
9,621,049 |
8.08% |
67.84% |
Cote d'Ivoire |
14,717 |
23.68% |
170,716 |
8.11% |
65.74% |
Myanmar |
164,751 |
21.25% |
2,333,043 |
1.53% |
92.80% |
Hungary |
175,327 |
20.20% |
4,042,959 |
0.15% |
99.24% |
Cameroon |
11,618 |
15.02% |
217,951 |
6.87% |
54.29% |
Tanzania |
76,469 |
14.93% |
4,874,370 |
7.17% |
51.95% |
Somalia |
189,509 |
12.98% |
1,236,812 |
2.58% |
80.12% |
Sudan |
16,273 |
12.93% |
517,011 |
6.73% |
47.92% |
Mozambique |
10,348 |
12.39% |
228,480 |
3.31% |
73.28% |
Taiwan |
195,132 |
11.01% |
5,991,350 |
3.68% |
66.55% |
Zambia |
29,070 |
10.41% |
902,829 |
2.36% |
77.31% |
Morocco |
32,932 |
10.04% |
1,998,655 |
2.81% |
72.03% |
Uzbekistan |
17,135 |
9.38% |
1,270,560 |
2.46% |
73.74% |
Japan |
489,215 |
9.15% |
14,841,878 |
1.33% |
85.44% |
Hong Kong |
426,542 |
8.97% |
368,286 |
2.43% |
72.91% |
Algeria |
24,760 |
8.97% |
78,643 |
5.59% |
37.65% |
Romania |
62,019 |
8.79% |
52,821 |
1.78% |
79.75% |
Zimbabwe |
19,253 |
8.15% |
12,272 |
1.90% |
76.69% |
Egypt |
52,061 |
7.60% |
189,551 |
2.72% |
64.21% |
Turkey |
234,372 |
7.32% |
185,453 |
1.56% |
78.69% |
Philippines |
94,536 |
6.95% |
81,734 |
2.09% |
69.93% |
Ghana |
44,913 |
6.71% |
24,535 |
1.09% |
83.76% |
Belarus |
28,211 |
6.68% |
9,250 |
0.73% |
89.07% |
Kenya |
73,939 |
6.39% |
48,674 |
1.31% |
79.50% |
Nepal |
38,569 |
6.00% |
9,477 |
0.36% |
94.00% |
Bulgaria |
27,659 |
5.96% |
5,952 |
0.36% |
93.96% |
Malawi |
15,501 |
5.85% |
8,170 |
2.03% |
65.30% |
Jordan |
13,419 |
5.73% |
9,279 |
0.74% |
87.09% |
Indonesia |
119,720 |
5.40% |
63,831 |
0.98% |
81.85% |
Ukraine |
86,505 |
5.35% |
66,016 |
0.62% |
88.41% |
Republic of Korea |
83,370 |
5.33% |
42,123 |
0.98% |
81.61% |
Saudi Arabia |
79,834 |
5.21% |
108,438 |
1.54% |
70.44% |
Mean reduction |
76.97% |
This shows some even more significant reductions in TLS1.0 usage for some countries, the mean reduction being ~77%.
Some interesting observations from these data:
- Hungary has both the largest reduction (99.24%) and the lowest percentage (0.15%) usage of TLS1.0
- Algeria saw the smallest reduction in TLS1.0 usage, at 37.65%
- China has the highest percentage usage of TLS1.0 at 19.79%
Let’s update our view for the UK and USA against the 2018 data:
Country |
Num requests (Nov. 2018) |
% TLS 1.0 (Nov. 2018) |
Num requests (Feb. 2020) |
% TLS 1.0 (Feb. 2020) |
% reduction |
Great Britain |
23,778,043 |
1.43% |
9,288,530 |
0.71% |
51% |
USA |
2,373,620 |
1.47% |
1,557,219 |
0.40% |
72% |
This is interesting in its own right, both the UK and USA have smaller (albeit it only a little smaller for the USA) reductions than the mean from the “2018 worst offenders” list, above. This is perhaps because the UK and USA have a smaller base of real users on TLS1.0, with more usage being “is the internet working” checks running on old platforms, corporate proxies etc. (we seem to be used for lots of these sorts of tests, which is hopefully a compliment!).
It’s worth updating the countries which have the largest percentage usage of TLS1.0 — the list above was the “worst of” 2018. Here’s the top 10 countries with the highest percentage of TLS1.0 usage in Feb. 2020:
Country |
Number of requests |
Percentage of TLS 1.0 usage |
United States Minor Outlying Islands |
389,725,509. |
100.00% |
Antarctica |
4,979,351 |
100.00% |
Kosovo |
276,524 |
100.00% |
Niue |
12,758,637 |
100.00% |
American Samoa |
5,063,507 |
100.00% |
Christmas Island |
1,633,591 |
100.00% |
Mayotte |
8,590,803 |
100.00% |
Svalbard and Jan Mayen |
998,549 |
99.99% |
Pitcairn Islands |
425,550 |
99.98% |
Tuvalu |
5,770,681 |
99.98% |
Yikes, lots of countries with 100% (rounded to 2 DP) TLS1.0 usage. It seems that most of these countries are relatively small (in comparison to the “worst offenders” in 2018) so maybe the above is the result of one or a few legacy systems in each country/territory.
Clients
As in 2018, it’s useful to know what is making all these TLS1.0 requests. The table below is slightly improved over the 2018 data (please see the original post for info). These data are global and show the top 10 by “Operating system” and “User Agent” fields which are parsed from the User Agent request header as a normalisation stage:
Operating system |
User Agent |
Percentage of TLS 1.0 usage |
Unknown |
Unknown |
38.02% |
Android 4.2.2 |
Android Browser 4 |
2.54% |
Windows 7 |
IE 7 |
2.30% |
Android 4.4.4 |
Unknown |
2.03% |
Windows 7 |
IE 9 |
2.02% |
Android 4.4.2 |
Android Browser 4 |
1.97% |
Android 2.3.6 |
Android Browser 4 |
1.93% |
Mac OS 10.11.6 |
Chrome 53 |
1.85% |
Windows 8 |
Firefox 16 |
1.80% |
Unknown |
WebKit 533 |
1.77% |
“Unknown” means that the parser library doesn’t know what the Operating System / User Agent is — either because it’s uncommon or ancient! What we see here are very outdated Operating Systems and User Agents — essentially these seem to be combinations of:
- Old Operating Systems with old TLS stacks and User Agents which use the Operating System TLS stack
- Old User Agents with old TLS stacks which don’t use the (sometimes more modern) Operating System TLS stack
The top 10 User Agents whose Operating system and User Agent are both unknown are:
- Nokia6280/2.0 (03.60) Profile/MIDP-2.0 Configuration/CLDC-1.1
- CITRIXRECEIVER
- <empty>
- Mozilla/5.0 (compatible; Genieo/1.0 http://www.genieo.com/webfilter.html)
- SGOS/6.7.3.9 (S400–30; Proxy Edition)
- Mozilla/5.0 (compatible; PRTG Network Monitor (www.paessler.com); Windows)
- Dorado WAP-Browser/1.0.0
- Mozilla/4.0 (ISA Server Connectivity Check)
- ProxySG Appliance
- WinampMPEG/2.00
So yep, as expected, generally ancient User Agents and the usual suspects. Most notably, it appears we have essentially fewer “real” (as in “used by people”) User Agents which negotiate TLS1.0, leaving a higher proportion of TLS1.0 usage from what appear to be automated systems. This makes sense if you consider the changes in Operating systems over the 15 month span between my two datasets — Windows 10, for instance, has gone from around 38% to 57% (desktop) market share (largely replacing Windows 7) and brings with it a much more modern TLS stack. Similarly, many users will have upgraded mobile phones, tablets and other devices.
Conclusion
TLS1.0 has seen a significant reduction in usage of around 77% for our audiences over the 15 months since I wrote the original blog post but usage of TLS1.0 in some geographies remains stubbornly high. The trend is clear though, TLS1.0 usage is absolutely on the wane and whilst the long tail of this usage will undoubtedly drag last for years, usage patterns are moving in the right direction (at least in our audience).
We operate with a single edge configuration (in terms of TLS) around the world so we need to take a decision on when the right time to remove TLS1.0 (and 1.1) support is — balancing the security risks against the hard cut-off for users. Something we have put some thought into is a mechanism for warning our audience of such breaking changes — we’re not there yet with it but it’s definitely something I’d like to have as a deprecation process which aims to inform the end user and ideally, show them a workable upgrade path so they can continue to use our services, if they so choose.
Let me know if you have questions or would like more detail on an element shown here and I’ll do my best to get you the information. Please either leave a comment below or .