<?xml version="1.0" encoding="utf-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>The How&#39;s My SSL? Blog</title>
 <link href="https://blog.howsmyssl.com/feed" rel="self"/>
 <link href="https://blog.howsmyssl.com/"/>
 <updated>2026-05-18T21:51:26-07:00</updated>
 <id>https://blog.howsmyssl.com/</id>
 <author>
   <name>Jeff Hodges</name>
   <email>jeff@somethingsimilar.com</email>
 </author>

 
 
 <entry>
   <title>TLS 1.3, 1.2, and post-quantum ranking changes</title>
   <link href="https://blog.howsmyssl.com/2026/05/18/tls-1.3-1.2-and-post-quantum-ranking-changes/"/>
   <updated>2026-05-18T21:51:26-07:00</updated>
   <id>https://blog.howsmyssl.com/2026/05/18/tls-1.3-1.2-and-post-quantum-ranking-changes/</id>
   
   <content type="html">&lt;p&gt;tl;dr: How&amp;rsquo;s My SSL?&amp;rsquo;s ranking of clients using TLS 1.2 and of clients using TLS 1.3 without post-quantum key agreement will be changing. A small change a month from now, and a bigger one in 6 months.&lt;/p&gt;
&lt;p&gt;On 2026-06-14 (a month from now), How&amp;rsquo;s My SSL?&amp;rsquo;s API will begin marking TLS 1.2 connections as &amp;ldquo;Improvable&amp;rdquo;. Also on that date, How&amp;rsquo;s My SSL?&amp;rsquo;s API will begin marking TLS 1.3 connections that do not support post-quantum key agreement as &amp;ldquo;Improvable&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;On 2026-12-14 (6 months from then), How&amp;rsquo;s My SSL?&amp;rsquo;s API will begin marking TLS 1.2 connections as &amp;ldquo;Bad&amp;rdquo;. Also on that date, How&amp;rsquo;s My SSL?&amp;rsquo;s API will begin marking TLS 1.3 connections that do not support post-quantum key agreement as &amp;ldquo;Bad&amp;rdquo;. (Note: only TLS 1.3 has named groups that provide post-quantum key agreement).&lt;/p&gt;
&lt;h3 id=&#34;so-why-is-this-happening&#34;&gt;So, why is this happening?&lt;/h3&gt;
&lt;p&gt;TLS 1.3 is the new minimum for secure web clients. One reason we can give is an appeal to authority: TLS 1.3 has been the &lt;a href=&#34;https://caniuse.com/tls1-3&#34;&gt;default in browsers for 8 years&lt;/a&gt; and modern web clients have supported it for a while. TLS 1.3 is even required in HTTP/3 as QUIC builds it in.&lt;/p&gt;
&lt;p&gt;But there are real rationales.&lt;/p&gt;
&lt;p&gt;TLS 1.3 has advanced the security of its users significantly over TLS 1.2 while also being faster than TLS 1.2.&lt;/p&gt;
&lt;p&gt;TLS 1.3 has forward secrecy by default. This prevents passive attacks where a bad guy scoops up traffic now and decrypts it later using newer algorithmic attacks or by just gaining access to a previously private key from a service provider.&lt;/p&gt;
&lt;p&gt;TLS 1.3 also improves the security of session resumption. It does so by unifying the different resumption mechanisms into one, removing overcomplications in the resumption state machine, and improving the design of session tickets.&lt;/p&gt;
&lt;p&gt;In TLS 1.2, adding forward secrecy meant implementing truly gnarly session resumption architectures to keep user requests fast and prevent some subtle security problems that resumption could introduce. Read &lt;a href=&#34;https://words.filippo.io/we-need-to-talk-about-session-tickets/&#34;&gt;We Need To Talk About Session Tickets&lt;/a&gt; for some details on the specifics of session tickets.&lt;/p&gt;
&lt;p&gt;(Howsmyssl.com was built, in fact, because of these passive &amp;ldquo;harvest now, decrypt later&amp;rdquo; attacks and the paucity of information about how clients supported forward secrecy and session resumption. A colleague and I were working at Twitter during the Snowden revelations in 2013. Those described how the NSA was scooping up as much web traffic as possible to decrypt later. And if the NSA was doing that, others were or also would soon. We wanted to know more about what our web clients could do and getting that data from our existing stacks was non-trivial. So, I built this small tool to tell us what the clients could do, pointed our clients at it, and we made decisions from there.)&lt;/p&gt;
&lt;p&gt;TLS 1.3 also has post-quantum key agreement and will soon have pure post-quantum key agreement encryption. The former is deployed in modern web browsers and the latter will be Real Soon Now. Unfortunately, not all web clients are as on-it as the browsers. But those clients should be. Recent developments in quantum computation research have accelerated the timeline for migrating to post-quantum encryption. The sooner we migrate to it, the less data a quantum &amp;ldquo;harvest now, decrypt later&amp;rdquo; event can affect. Those developments have caused both Google and Cloudflare to set a date of 2029 to complete their migration to post-quantum cryptography across not just TLS, but their entire suite of encryption mechanisms (see &lt;a href=&#34;https://blog.google/innovation-and-ai/technology/safety-security/cryptography-migration-timeline/&#34;&gt;Quantum frontiers may be closer than they appear&lt;/a&gt;, and &lt;a href=&#34;https://blog.cloudflare.com/post-quantum-roadmap/&#34;&gt;Cloudflare targets 2029 for full post-quantum security&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;TLS 1.3 includes some version and cipher-suite downgrade preventions from on-path attacks. TLS_FALLBACK_SCSV and similar techniques had previously addressed those issues somewhat, but not all systems implemented them well or at all. Having those tools baked into the protocol itself means we don&amp;rsquo;t have to worry for our users.&lt;/p&gt;
&lt;p&gt;And all of that happens while TLS 1.3 is still faster than previous protocols, in part, because it implements 0-RTT for session resumption. Prior versions of TLS had lots of chatter back and forth between the client and server that got removed in TLS 1.3. No more round trips between the machines means better experiences for everyone.&lt;/p&gt;
&lt;h3 id=&#34;outro&#34;&gt;Outro&lt;/h3&gt;
&lt;p&gt;TLS 1.3 is the new best choice for secure web traffic and has been for some time. And the time to start the post-quantum mitigations are now. How&amp;rsquo;s My SSL? is going to reflect that.&lt;/p&gt;
&lt;p&gt;This was also announced on &lt;a href=&#34;https://groups.google.com/g/howsmyssl-upkeep/c/8oz30a0JwYY&#34;&gt;the howsmyssl-upkeep mailing list&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 
 <entry>
   <title>Post-quantum detection added</title>
   <link href="https://blog.howsmyssl.com/2026/05/18/post-quantum-detection-added/"/>
   <updated>2026-05-18T19:58:47-07:00</updated>
   <id>https://blog.howsmyssl.com/2026/05/18/post-quantum-detection-added/</id>
   
   <content type="html">&lt;p&gt;&lt;a href=&#34;https://www.howsmyssl.com&#34;&gt;How&amp;rsquo;s My SSL?&lt;/a&gt; can now detect if an HTTPS client
supports post-quantum key agreement.  You can find a description of post-quantum
key agreement and its purpose on the &lt;a href=&#34;https://www.howsmyssl.com/s/about.html#post-quantum-key-agreement&#34;&gt;Post-Quantum Key Agreement
section&lt;/a&gt; on
the about page.&lt;/p&gt;
&lt;p&gt;While the top-level client ranking is currently unchanged, the Post-Quantum Key
Agreement section on the main page of
&lt;a href=&#34;https://www.howsmyssl.com/&#34;&gt;https://www.howsmyssl.com&lt;/a&gt; will show a small
&lt;span class=&#34;label improvable&#34;&gt;Improvable&lt;/span&gt; button to clients lacking support for post-quantum key agreement.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://www.howsmyssl.com/s/api.html&#34;&gt;/a/check API&lt;/a&gt; now has two new fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;post_quantum_key_agreement - a boolean reporting whether the TLS client supports one of the named groups that provide post-quantum key agreement&lt;/li&gt;
&lt;li&gt;given_named_groups - a list of strings describing which named group IDs (formerly called curve IDs in TLS 1.2) were included in the client hello&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We plan to change the ranking of clients that don&amp;rsquo;t support cipher suites with post-quantum key agreement, but that&amp;rsquo;ll be discussed in a follow-up.&lt;/p&gt;
&lt;p&gt;This has also been posted on the &lt;a href=&#34;https://groups.google.com/g/howsmyssl-upkeep/c/lM-Xjo5TteE&#34;&gt;howsmyssl-upkeep mailing list&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 

</feed>
