<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
  <title>Blog: Ivan Ristić / SSL</title>
  <link type="application/atom+xml" rel="self" href="http://blog.ivanristic.com//atom.xml" />
  <link type="text/html" rel="alternate" href="http://blog.ivanristic.com//" />
  <updated>2025-07-05T14:03:16+01:00</updated>
  <id>http://blog.ivanristic.com//</id>
  <author>
    <name>Ivan Ristić</name>
  </author>

  
  <entry>
    <id>http://blog.ivanristic.com/2022/02/bulletproof-tls-and-pki-is-out</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2022/02/bulletproof-tls-and-pki-is-out.html"/>
    <title>Bulletproof TLS and PKI, Second Edition is out</title>
    <published>2022-02-16T00:00:00+00:00</published>
    <updated>2022-02-16T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-tls-and-pki/&quot;&gt;&lt;img
	src=&quot;/images/bulletproof2-cover-w1125.jpg&quot; width=&quot;300&quot; align=&quot;right&quot;
	style=&quot;border: 1px solid grey; margin-left: 20px&quot;&gt;&lt;/a&gt;
	
&lt;p&gt;It took a couple of years, but I am happy to report that my book &lt;a
href=&quot;https://www.feistyduck.com/books/bulletproof-tls-and-pki/&quot;&gt;Bulletproof TLS and PKI is now out&lt;/a&gt; and available in both digital and print. Although the title is slightly different this time, the new release is the second edition of my earlier work—Bulletproof SSL and TLS—which came out in 2014. The second edition has less SSL and more TLS, as it should be.&lt;/p&gt;

&lt;p&gt;When I started writing this book in 2010, I not only wanted to produce a comprehensive and practical resource for anyone looking to successfully use TLS and PKI in production, but also aimed to keep the material up to date over the years. I’ve now spent more than a decade either writing or updating my book, and I am happy that I’ve achieved my dream of continuous writing and publishing.&lt;/p&gt;

&lt;p&gt;It took a lot of work. First, there’s the writing. Updating the manuscript continuously takes more time, because you have to constantly write and then rewrite and rewrite again. This is especially challenging in the security space, where things change fairly quickly. Then, there’s the publishing. With no publishers out there interested in pursuing continuous publishing, we also had to take book production onto ourselves. That consisted of doing the traditional parts of the process, but also the continuous automated workflow, which was necessary to support frequent updates.&lt;/p&gt;

&lt;p&gt;Although I am very happy with the result, some parts of the journey were quite challenging. Once we had the automation in place, making changes became easy. To release a new version all I needed to do was make the changes to the manuscript. With printing on demand, we didn’t have to worry about inventory, which enabled us to update the book “in place” (updated the print PDFs without making a new edition) several times, including one comprehensive revision in 2017.&lt;/p&gt;

&lt;p&gt;The release of TLS 1.3 in 2018 made it impossible to continue to update the book incrementally. First, there was a new standard to cover. Then, we had to wait for the ecosystem to catch up and new versions of libraries and software to be released. Then they needed to mature. A completely new edition was needed. That edition should have come out in 2020, but my commitments at Hardenize slowed things down and added about a year to the schedule.&lt;/p&gt;

&lt;p&gt;My favourite part of writing a release blog post is showing exactly what changed since the previous version. We can do this because our manuscript is based on DocBook XML. That enables us to compare one XML version from the past with the most recent XML document and highlight the differences. For this we use a tool called &lt;a href=&quot;https://www.deltaxml.com/products/compare/docbook-compare/&quot;&gt;DocBook Compare&lt;/a&gt;,  from a company called &lt;a href=&quot;https://www.deltaxml.com&quot;&gt;DeltaXML&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The end result is an HTML version of the book, which we actually make available to all our readers. The table of contents shows the book chapters, with a special diff bar under each name. We use grey to indicate no changes, green for new content, and red for deleted content. Inside each chapter we show the exact changes. For our readers, this is not only interesting, but useful. If you’re coming from the first edition, you can now see exactly what changed in the second release.&lt;/p&gt;

&lt;image src=&quot;/images/20220216-b2ed-diff-chapters.png&quot; style=&quot;border: 1px solid grey&quot; width=&quot;600px&quot;&gt;

&lt;p&gt;I wrote about our tooling when the 2017 revision came out and it’s perhaps interesting to compare that diff to the current one. The first obvious difference is that there are two new chapters, represented with an all-green diff bar. There are also three largely stable changes, whose diff bar is mostly grey. The remaining seven chapters are mostly a combination of green and red, which indicates heavy rewriting.&lt;/p&gt;

&lt;image src=&quot;/images/20220216-b2ed-diff-content.png&quot; style=&quot;border: 1px solid grey&quot; width=&quot;600px&quot;&gt;
	
&lt;p&gt;I hope you&apos;ve found this story about what happens behind the scenes interesting. Until next time.&lt;/p&gt;




	

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2021/02/openssl-cookbook-3ed-now-available</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2021/02/openssl-cookbook-3ed-now-available.html"/>
    <title>OpenSSL Cookbook 3rd Edition now available</title>
    <published>2021-02-01T00:00:00+00:00</published>
    <updated>2021-02-01T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;a href=&quot;https://www.feistyduck.com/books/openssl-cookbook/&quot;&gt;&lt;img
	src=&quot;https://www.feistyduck.com/library/openssl-cookbook/assets/image-main-view.png&quot; width=&quot;250&quot; xheight=&quot;250&quot; align=&quot;right&quot;
	style=&quot;border: 1px solid grey; margin-left: 20px&quot;&gt;&lt;/a&gt;

&lt;p&gt;Another year, another book to update. The third edition of &lt;a href=&quot;https://www.feistyduck.com/books/openssl-cookbook/&quot;&gt;OpenSSL Cookbook&lt;/a&gt;, my free book that covers command-line usage of OpenSSL, is now available for your pleasure. Although the structure of the book remains the same, it’s been significantly updated with the help of Matt Caswell, a member of the OpenSSL development team. The largest change, of course, is that the material is now fully up to date with TLS 1.3.&lt;/p&gt;

&lt;p&gt;There are two chapters in the book. The first chapter covers installation and configuration, key and certificate management. It also provides instructions and templates for how to build your own private CA. The second chapter, on the other hand, focuses on testing configuration of TLS servers.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;
	

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2020/11/bulletproof-ssl-and-tls-second-edition-preview</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2020/11/bulletproof-ssl-and-tls-second-edition-preview.html"/>
    <title>Second edition of Bulletproof SSL and TLS now in preview</title>
    <published>2020-11-01T00:00:00+00:00</published>
    <updated>2020-11-01T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;img
	src=&quot;/images/bulletproof2-cover-w1125.jpg&quot; width=&quot;300&quot; xheight=&quot;250&quot; align=&quot;right&quot;
	style=&quot;border: 1px solid grey; margin-left: 20px&quot;&gt;&lt;/a&gt;

&lt;p&gt;I am happy to announce that &lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;the second edition of Bulletproof SSL and TLS is now available in preview&lt;/a&gt;. As I write this, it’s November 2020 and roughly six years since we released the first edition. I am happy to say that things have worked out approximately how I thought they would. The first edition came out in 2014, but immediately in 2015 we released another version to keep up with the developments, and then a full revision followed in 2017. In 2018, the long-awaited TLS 1.3 protocol came out, making a big impact on the ecosystem. As a result, I started to plan the second edition, which needed to be a major rewrite. The trick was to begin writing when the support for this new protocol is stable across a range of technologies, so that the book is not obsolete the moment it comes out. And here we are.&lt;/p&gt;

&lt;p&gt;At this point, the key parts of the book have been written or rewritten. There is obviously one entirely new chapter to cover TLS 1.3. The two OpenSSL chapters have seen so many changes that little text remains unchanged. (This is largely because Matt Caswell, a member of the core OpenSSL team, joined me as technical reviewer. His insights have
spurred me to write more than planned.) I have also replaced the deployment chapter from the first edition with a brand new configuration chapter that is better structured and touches on everything you need to know to setup everything just right.&lt;/p&gt;

&lt;p&gt;Some things have been removed. The chapters dealing with the Apache web server, Java, Microsoft technologies, and Nginx are now gone. When I originally started to write this book, I thought I would write about 250 pages, but the end result was closer to 600. On the one hand, there are so many details to convey, but, on the other, no one wants to read a big book. The new edition had to increase the amount of pages further, but I took a decision to remove some parts that I felt were not fully connected to the main body of content.&lt;/p&gt;

&lt;p&gt;Although there still remain several chapters to go through, I feel that the remaining changes will fall in the supporting category. The bulk of the material is already here and ready for you to enjoy. I continue with the remaining work and will publish the second edition when it’s ready.&lt;/p&gt;

	

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2017/07/announcing-bulletproof-ssl-and-tls-2017-revision</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2017/07/announcing-bulletproof-ssl-and-tls-2017-revision.html"/>
    <title>Announcing Bulletproof SSL and TLS, the 2017 revision</title>
    <published>2017-07-11T00:00:00+01:00</published>
    <updated>2017-07-11T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I am very happy to announce &lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;Bulletproof SSL and TLS, the 2017 revision&lt;/a&gt;. The manuscript is complete and it’s now undergoing copyediting. We expect that the revision will be fully done by the end of July. Get your updates now if you can’t wait, or in August if you can.&lt;/p&gt;

&lt;p&gt;As with all full revisions, this means that we went through the entire book and updated everything that needed updating. My ongoing maintenance is usually focused on specific changes and how they impact the book. For example, when a new research is published I make note of it in the manuscript. Full revisions are different; I reread the entire book to ensure that it still makes sense, as if I were writing the book today.&lt;/p&gt;

&lt;p&gt;The bottom line is that, three years on, we again have a fully up-to-date book. Our digital readers have had continuous access to the updates. (As an aside, we have a generous upgrade policy and will give a free digital copy of the book to anyone who purchased a paperback elsewhere; just &lt;a href=&quot;https://feistyduck.myshopify.com/products/bulletproof-ssl-and-tls-digital-upgrade&quot;&gt;send us your receipt&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;If you’re interested in my personal perspective on continuous writing and publishing, I published &lt;a href=&quot;/2017/07/bulletproof-ssl-and-tls-three-years-later.html&quot;&gt;a blog post about it just the other day&lt;/a&gt;; go ahead and read it.&lt;/p&gt;

&lt;p&gt;With the 2017 revision we’re introducing a new and unique feature, a special online book format that shows all book changes from the first edition until now. We can do this because our manuscript is machine readable (DocBook/XML). As a result, we can compare two manuscript versions to determine the exact differences. We hope that this feature will help you see exactly what changed so that you don’t have to reread the book again.&lt;/p&gt;

&lt;p&gt;When you access this output format you&apos;ll see the table of contents modified to indicate the extent of changes on per chapter basis. The colours under the chapter names indicate the amounts and you can hover over them to see the backing numbers. What I found surprising was that there are many deletions, in some cases as many as the additions! Perhaps more interestingly, several key chapters have seen a turnover between 20% and 33%.&lt;/p&gt;

&lt;image src=&quot;/bulletproof-diff-homepage.png&quot; style=&quot;border: 1px solid grey&quot; width=&quot;600px&quot;&gt;

&lt;p&gt;It gets more interesting inside the book. For example, this what the beginning of Chapter 10 looks like:&lt;/p&gt;

&lt;image src=&quot;/bulletproof_diff_sample_ch10.png&quot; style=&quot;border: 1px solid grey&quot; width=&quot;600px&quot;&gt;
 
&lt;p&gt;We hope that you&apos;ll be enjoying the updates! From here on we don&apos;t expect that we&apos;ll be updating the first edition any more. With TLS 1.3 around the corner, the next version of Bulletproof SSL and TLS will include more new content and as deeper changes throughout. So this is a good time to take a break, regroup, and start afresh.&lt;/p&gt;

&lt;p&gt;In truth, Bulletproof SSL and TLS would have probably had its second edition already had it not been for TLS 1.3. But, even though we felt that there was enough improvement to warrant a new edition, we didn’t feel that we could release one now when TLS 1.3 is so close to completion. Of course, it&apos;s another problem that TLS 1.3 has been &quot;almost done&quot; for a long time now!&lt;/p&gt;

	

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2017/07/bulletproof-ssl-and-tls-three-years-later</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2017/07/bulletproof-ssl-and-tls-three-years-later.html"/>
    <title>Bulletproof SSL and TLS, three years later</title>
    <published>2017-07-04T00:00:00+01:00</published>
    <updated>2017-07-04T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;The &lt;a href=&quot;/2015/08/bulletproof-maintenance.html&quot;&gt;last time I wrote about my book&lt;/a&gt; &lt;i&gt;Bulleproof SSL and TLS&lt;/i&gt; was two years ago, just after publishing the first full revision. Although two years is a long time to go without a blog post, throughout this period I continued to work on the book, keeping it nearly-always up to date. Today, three years after the first edition had been published, the second formal full revision is complete. At the same time, I am announcing that the first edition won&apos;t see any further updates—all future work will go toward the second edition. I will talk more about that in a future blog post.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Please note that updating the printed book without a new edition potentially takes a long time. Online stores have their own inventories and multiple fulfillment centres, all of which may take a long time to clear. Thus, please don&apos;t expect that you&apos;ll get a printed 2017 revision when you buy the printed book now.&lt;/i&gt; In the worst case, you can read the 2015 revision and get the digital 2017 revision (we&apos;ll give it to you for free if you send us a receipt)!&lt;p&gt;

&lt;p&gt;Now, I could talk about the changes I made since the last revision, like SLOTH, DROWN, and Sweet32, but you can read about all those things in the book itself. What I want to celebrate is the fact that, three years on, my book is still up to date. This is something I originally set out to do, something I couldn&apos;t achieve with traditional publishing, and I am very happy that it&apos;s worked. But it hasn&apos;t been exactly easy.&lt;/p&gt;

&lt;p&gt;When I first start working on a book, I allocate time for it and focus on it completely. Six months is a good amount of time, assuming enough research had been done previously. But not all books are equal. Working on the first edition of Bulletproof, I spent roughly five years on research and two years writing. After the first edition is released, you naturally go on to do other things. So a big challenge for me was to slow down with my other projects and find enough time to properly maintain the book. (&lt;i&gt;In fact, as I write this, I am in the middle of launching my startup, &lt;a href=&quot;https://www.hardenize.com&quot;&gt;Hardenize&lt;/a&gt;.&lt;/i&gt;) Although I managed, it was a constant struggle.&lt;/p&gt;

&lt;p&gt;Another problem is that, when you&apos;re making many small changes over long periods of time, it&apos;s difficult to update
every single place that needs it. You have to read and reread entire chapters to find all the missed places and fix them. That not only takes time, it&apos;s also quite boring.&lt;/p&gt;

&lt;p&gt;There are other problems, too, for example the fact that you don&apos;t feel as enthusiastic about your work several years later, combined with the fact that the sales are not what they were during the first year.&lt;/p&gt;

&lt;p&gt;As an aside, we didn&apos;t have any problems with the actual process. Since the beginning we had a fully automated workflow that continuously publishes the manuscript into all necessary formats. Thus, there was nothing to do to put the updates out there. We even have a solution for the proofreading and copyediting parts; our copyeditor, Melinda Ranking, was able to work on the changed parts only.&lt;/p&gt;

&lt;p&gt;Back to the challenges, I think that they can all be solved by finding a sustainable business model for producing high-quality technical material. With Bulletproof SSL and TLS we had some good runs that lasted for a while, but they&apos;re slowing down. We have some ideas how we can improve the business side of our small publishing company and, generally, the hope is to align our interests with that of our readers. Now that the first edition is at the end of its life, we&apos;ll start work on the second edition.&lt;/p&gt;
	

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2017/06/ssl-labs-grading-redesign-preview-1</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2017/06/ssl-labs-grading-redesign-preview-1.html"/>
    <title>SSL Labs Grading Redesign (Preview 1)</title>
    <published>2017-06-30T00:00:00+01:00</published>
    <updated>2017-06-30T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;We’re excited to share with you the first preview of our next-generation grading. This is something that’s long overdue but, due to lack of available time, we managed to keep up patching the first-generation grading to keep up with the times. Now, finally, we’re taking the next necessary steps to modernise how we grade servers based on our assessments.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-23939&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Grading Redesign Goals&lt;/h3&gt;
&lt;p&gt;Before I show you the new version of the grading, I’d like to explain what we’re set out to achieve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Cleanup.&lt;/b&gt; SSL Labs grading was initially designed around numerical scores in various categories. That approached worked for a period of time, back in the day when most cryptographic elements appeared to be relatively secure. This system is still employed at the core, but it’s now largely obsolete and complicates the work.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Simplification and assessment decoupling.&lt;/b&gt; Our new goal is make it easier to understand how grading is done and, perhaps more importantly, enable others to replicate our results. In other words, we wish to decouple the grading logic from our assessment implementation.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Meaningful grades.&lt;/b&gt; Although the A-F grading we have in place works great, we’re not making full use of the entire grade range. Additionally, the grades don’t have defined meanings, making it more difficult to keep the grading approach consistent over a period of time.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Even better security.&lt;/b&gt; Finally, we wish the next major update to further push security forward by requiring better security. This is something we’ve been doing regularly over the years, and this time is not going to be an exception.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Preview 1 Reveal&lt;/h3&gt;
&lt;p&gt;Without further ado, we’re releasing Preview 1 as a public Google Document with commenting enabled:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.google.com/document/d/13o_iRZ5-Lv8VTDULUmpUu0XgHWCXDUbYia1vPagMBKE/edit?usp=sharing&quot;&gt;SSL Labs Grading: Version Two Preview 1&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The focus on this release is on the grading algorithm concept (i.e., the way how rules are defined, specified, and processed). Although the rules themselves resemble what will actually be the next-generation criteria, they haven’t been fully tuned. In fact, our next step will be to specify the grading storage formats and build a proof-of-concept tool to compare the current grades and the future version. We intend to use this tool to refine the grades over the following months.&lt;/p&gt;
&lt;p&gt;If it&amp;#8217;s the criteria only that you&amp;#8217;re interested in, please refer to my &lt;a href=&quot;https://blog.qualys.com/ssllabs/2016/11/16/announcing-ssl-labs-grading-changes-for-2017&quot;&gt;earlier blog post on this topic&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2017/04/ssl-labs-distrusts-wosign-and-startcom-certificates</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2017/04/ssl-labs-distrusts-wosign-and-startcom-certificates.html"/>
    <title>SSL Labs Distrusts WoSign and StartCom certificates</title>
    <published>2017-04-05T00:00:00+01:00</published>
    <updated>2017-04-05T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;In the second half of 2016, a series of events unfolded that culminated with something many didn’t think was possible (or at least thought very unlikely): a public CA was distrusted. The CA in question was WoSign, a Chinese CA who made some waves by offering free certificates back in the day, before Let’s Encrypt came onto the scene. To make the case even more remarkable, another CA—StartCom—was distrusted at the same time. These were CAs with substantial installed user bases, largely because both had offered free certificates.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-23722&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;To fully understand what happened requires a lot of digging for background information. Luckily, the &lt;a href=&quot;https://blog.mozilla.org/security/2016/10/24/distrusting-new-wosign-and-startcom-certificates&quot;&gt;blog posts from Mozilla&lt;/a&gt; and &lt;a href=&quot;https://security.googleblog.com/2016/10/distrusting-wosign-and-startcom.html&quot;&gt;Google&lt;/a&gt; not only give their reasons, but provide helpful links where you can obtain further information if you desire. Apple also joined in the ban; Microsoft did not yet make any announcements.&lt;/p&gt;
&lt;p&gt;In short, the root cause for the bans was the fact that the browser vendors have lost trust in WoSign’s “technical and management capabilities”. In addition, WoSign has been accused of dishonesty and continued and persistent deception. To a large extent, StartCom didn’t feature in the story as a significant role, but their fate was sealed because they had been acquired by WoSign and later became part of the same management and technical hierarchy. They now seem to effectively be two brands within the same organisation.&lt;/p&gt;
&lt;p&gt;The decisions to ban WoSign and StartCom were made largely in October 2016, but the actual trust changes started to take place in January 2017. Browser vendors generally attempted to keep all existing certificates alive, which is potentially challenges given that one of the accusations leveled at WoSign was certificate backdating. (In absence of a widespread deployment of a public log mechanism for certificates, for example Certificate Transparency, there is no way to verify a certificates’ not-before and not-after dates.) However, this is not something that can be done reliably, which is why many web sites with WoSign’s and StartCom’s certificates started to experience disruption. Furthermore, all vendors are committed to taking whatever actions in the future they feel necessary, including completely revoking trust in the doomed CAs. Mozilla said that they could do that as early as April 2017.&lt;/p&gt;
&lt;p&gt;In the nutshell, if you have a WoSign and StartCom certificate in production today, there is no guarantee that it will work for your users. In the future, it will get only worse, and it will not get better until you replace your certificate and use another CA. To that end, SSL Labs will actively distrust WoSign and StartCom certificates in the near future. Within the next couple of days our development and production systems will start showing a warning when WoSign or StartCom certificates are encountered. &lt;strong&gt;From 8 May 2017 such certificates will be graded with a T (no trust).&lt;/strong&gt; Web sites that continue to use them will receive a T grade. We hope that we can raise further awareness with this action and help site operations transition as smoothly as possible.&lt;/p&gt;


</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2017/03/caa-mandated-by-cab-forum</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2017/03/caa-mandated-by-cab-forum.html"/>
    <title>CAA Mandated by CA/Browser Forum</title>
    <published>2017-03-13T00:00:00+00:00</published>
    <updated>2017-03-13T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Certification Authority Authorization (CAA), specified in &lt;a href=&quot;https://tools.ietf.org/html/rfc6844&quot;&gt;RFC 6844&lt;/a&gt; in 2013, is a proposal to improve the strength of the PKI ecosystem with a new control to restrict which CAs can issue certificates for a particular domain name. Although CAA had been in the proposed-standard state for more than 4 years, there was little obvious happening until very recently, with only a hundred or two hundred sites adopting it. But that’s going to change, because the CA/Browser Forum recently &lt;a href=&quot;https://cabforum.org/pipermail/public/2017-March/009988.html&quot;&gt;voted to mandate CAA support&lt;/a&gt; as part of its certificate issuance standard &lt;a href=&quot;https://cabforum.org/baseline-requirements-documents/&quot;&gt;Baseline Requirements&lt;/a&gt;. The &lt;a href=&quot;https://cabforum.org/pipermail/public/2017-March/009917.html&quot;&gt;changes will become effective in September 2017&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-23648&quot;&gt;&lt;/span&gt;&lt;br /&gt;
The fact that any CA can issue a certificate for any domain name is commonly cited as the weakest aspect of the PKI ecosystem. Although CAs want to do the right thing, there are no technical controls that prevent them from doing whatever they chose to do. That’s why we say that the PKI ecosystem is a weak as the weakest link. With hundreds of CAs, there are potentially many weak links.&lt;/p&gt;
&lt;p&gt;CAA creates a DNS mechanism that enables domain name owners to whitelist CAs that are allowed to issue certificates for their hostnames. It operates via a new DNS resource record (RR) called CAA (type 257). Owners can restrict certificate issuance by specifying zero or more CAs; if a CA is allowed to issue a certificate, their own hostname will be in the DNS record. For example, this is what someone’s CAA configuration could be (in the zone file):&lt;/p&gt;
&lt;pre&gt;example.org. CAA 128 issue &quot;letsencrypt.org&quot;&lt;/pre&gt;
&lt;p&gt;And that’s all there is to it. Before issuing a certificate, CAs are expected to check the DNS record and refuse issuance unless they find themselves on the whitelist. In addition to the “issue” directive from the example, two other directives are supported: “issuewild” that restricts issuance of wildcard certificates, and “iodef”, which provides support for notification in the cases something goes wrong. (In case you’re wondering, the number “128” is a flags byte with its highest bit set, meaning the directive use is considered critical and must be followed.)&lt;/p&gt;
&lt;p&gt;At a high level, CAA has similar purpose to public key pinning (HPKP), but the implementation is entirely different. First, CAA prevents certificate issuance whereas HPKP is a run-time client-side control that prevents already-issued certificates from being seen as valid. In other words, CAA is for CAs, HPKP is for browsers. HPKP, which works by whitelisting public keys, is a strong technical control; in contrast CAA is largely an administrative control. While it’s expected that CAs will automatically check CAA before issuing certificates, what happens next is somewhat vague—they switch to manual processing and may end up issuing the certificate if they believe that the request is genuine. The main weakness of CAA compared to HPKP is that there are many CAs and that they all need to implement the checks correctly, as well as resist social engineering attacks when CAA is violated.&lt;/p&gt;
&lt;p&gt;But this is not to say that CAA is useless, or inferior to HPKP. That’s because of the advantages, the main being that, unlike HPKP, which is potentially very dangerous, it’s not possible to abuse CAA and bring down a web property. Whereas HPKP can kill your business if you mess up, CAA will merely annoy you. In the end, one way to look at CAA is “public key pinning for normal web properties”, who would find HPKP to complicated and scary to use.&lt;/p&gt;
&lt;p&gt;In case you&amp;#8217;re wondering, SSL Labs already supports checking for CAA. You can see it in the &lt;a href=&quot;https://www.ssllabs.com/ssltest/analyze.html?d=google.com&quot;&gt;report for google.com&lt;/a&gt;, for example. (It&amp;#8217;s in the top section, along with the information on the key and first certificate.)&lt;/p&gt;



</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2017/02/ticketbleed-detection-added-to-ssl-labs</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2017/02/ticketbleed-detection-added-to-ssl-labs.html"/>
    <title>Ticketbleed detection added to SSL Labs</title>
    <published>2017-02-23T00:00:00+00:00</published>
    <updated>2017-02-23T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Ticketbleed is a recently disclosed vulnerability in some F5 load balancers. This problems allows attackers to retrieve up to 31 bytes of process memory, which could potentially include sensitive data (for example private keys). It is similar in nature to Heartbleed (a vulnerability in OpenSSL from 2014), but less severe because much less data can be extracted.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-23593&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update (7 April 2017):&lt;/b&gt; Ticketbleed detection is now available on &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs production servers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At the core, the vulnerability is simple. When session tickets are used, clients are expected to submit a session ID to the server when they present their ticket. In this particular use cases, clients decide on the session ID and are allowed to submit an arbitrary string containing from one to 32 bytes. At the same time, F5 devices had a software bug that always responded with 32 bytes of data, even if fewer bytes were submitted by the client. Thus, if a client submits only one byte as the session ticket ID, it will get back 31 bytes of uninitialised memory from the server.&lt;/p&gt;
&lt;p&gt;More technical information about Ticketbleed is available from the &lt;a href=&quot;https://blog.filippo.io/finding-ticketbleed/&quot;&gt;web&lt;/a&gt; &lt;a href=&quot;https://filippo.io/Ticketbleed/&quot;&gt;pages&lt;/a&gt; published Filippo Valsorda, who discovered the problem, reported it to F5, and coordinated the disclosure.&lt;/p&gt;
&lt;p&gt;SSL Labs will add Ticketbleed detection in the next release, scheduled to be deployed &lt;s&gt;tomorrow&lt;/s&gt; soon. We will update this blog post afterwards. Because this is a vulnerability, we will fail servers that are discovered with the problem.&lt;/p&gt;



</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2017/01/new-in-ssl-labs-1.26.5</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2017/01/new-in-ssl-labs-1.26.5.html"/>
    <title>What’s new in SSL Labs 1.26.5</title>
    <published>2017-01-13T00:00:00+00:00</published>
    <updated>2017-01-13T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Today saw another SSL Labs release, which brings several new features and includes one fix. In this blog post I will discuss what the new features are and why they’re interesting. As always, you’ll find the (recent) history of SSL Labs releases in the &lt;a href=&quot;https://community.qualys.com/docs/DOC-5737&quot;&gt;change log&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-23483&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Improved cipher suite testing: faster and better!&lt;/h3&gt;
&lt;p&gt;The cipher suite testing has been optimised to produce better results faster—the best of both world. We’ve written about this before so you can find the details in &lt;a href=&quot;https://blog.qualys.com/ssllabs/2016/08/31/improved-suite-detection-in-the-next-ssl-labs-update&quot;&gt;this blog post&lt;/a&gt;. In a nutshell, cipher suites are now reported on per-protocol basis, and even with SNI disabled. This thorough approach gives a complete view of server’s configuration.&lt;/p&gt;
&lt;h3&gt;Detection of CAA policies&lt;/h3&gt;
&lt;p&gt;Certification Authority Authorization (CAA), defined in &lt;a href=&quot;https://tools.ietf.org/html/rfc6844&quot;&gt;RFC 6844&lt;/a&gt;, is a new standard that allows domain name owners to control which CAs are allowed to issue certificates for their properties. SSL Labs now detects when CAA is defined on a hostname.&lt;/p&gt;
&lt;h3&gt;Detection of ECDHE server parameter reuse&lt;/h3&gt;
&lt;p&gt;During the ephemeral Diffie-Hellman key exchange—both the standard (DHE) and elliptic curve (ECDHE) variants— client and server are expected to both generate one-time (hence the word ephemeral) secrets that are used in the process. Because secret generation takes some time, some servers reuse secrets. In the worst case, the reuse is indefinite (in practice until process restart); in some cases, there’s a time limit.&lt;/p&gt;
&lt;p&gt;This type of flaw first came into the spotlight with Logjam because it made attacks much easier (and, in fact, possible). Further, a recent paper titled &lt;em&gt;&lt;a href=&quot;http://dl.acm.org/citation.cfm?id=2987480&quot;&gt;Measuring the Security Harm of TLS Crypto Shortcuts&lt;/a&gt;&lt;/em&gt; indicates a widespread reuse of DHE and ECDHE parameters. Reuse of ECDHE server parameters is not as dangerous (or immediately exploitable), but it’s still a problem. SSL Labs has long had detection for reused DHE server parameters; this version adds the same test for ECDHE.&lt;/p&gt;
&lt;h3&gt;Detection of supported named curves and preferences&lt;/h3&gt;
&lt;p&gt;Until recently, most servers supported a limited set of named curves for the ECDHE key exchange, because only secp256r1 and secp384r1 were useful in practice; browsers didn’t support much else. Since &lt;a href=&quot;https://tools.ietf.org/html/rfc7748&quot;&gt;RFC 7748&lt;/a&gt; added support for two new modern curves, x25519 and x448, we are seeing more and more servers adding support for them. Thus, it makes sense to have a separate test that inspects all supported named curves and the order in which they are negotiated.&lt;/p&gt;
&lt;h3&gt;Continued improvements to the next-gen API (v3)&lt;/h3&gt;
&lt;p&gt;As SSL Labs continues to evolve, we continue to extend the API. The approach we’re taking is to keep version 2 of the API stable, but to improve (wit breaking changes) version 3. In this SSL Labs release, API v3 simulation fields have been extended to carry additional information about the negotiated key exchange and the server’s certificate. (Earlier changes were adding support for multiple certificates as well as a full dump of all observed HTTP transactions.) You can find the &lt;a href=&quot;https://github.com/ssllabs/ssllabs-scan/blob/master/ssllabs-api-docs-v3.md&quot;&gt;complete API v3 documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Client Test added support for GREASE suites&lt;/h3&gt;
&lt;p&gt;TLS, one of the most widely encryption protocols and certainly the most diverse one, has had a long-standing problem with intolerance problems of one sort or another. The basic issue is that servers are written to expect a certain type of traffic and panic if they see anything they consider to be unusual.&lt;/p&gt;
&lt;p&gt;In the end, the community decided that intolerance problems can’t be prevented, but they need to be dealt with early on. The key to doing that is detection. To that end, David Benjamin proposed &lt;a href=&quot;https://blog.qualys.com/ssllabs/2016/08/02/tls-version-intolerance-in-ssl-pulse&quot;&gt;GREASE&lt;/a&gt;, that a standard way for TLS clients to continuously offer unusual protocol elements, effectively forcing the broken serves to be fixed. The SSL Labs Client Test now detects GREASE elements for what they are.&lt;/p&gt;
&lt;h3&gt;Client Test added support for TLS 1.3 suites&lt;/h3&gt;
&lt;p&gt;TLS 1.3, which is almost around the corner, introduces new cipher suites. Don’t worry, the number of suites is not going to continue to increase. TLS 1.3 deprecated all earlier cipher suites, and introduces only 5 new ones. The SSL Labs Client Test now detects the TLS 1.3 suites correctly.&lt;/p&gt;



</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/11/per-protocol-cipher-suite-detection</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/11/per-protocol-cipher-suite-detection.html"/>
    <title>Per-protocol cipher suite detection in SSL Labs</title>
    <published>2016-11-29T00:00:00+00:00</published>
    <updated>2016-11-29T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Just a couple of days ago &lt;a href=&quot;https://blog.qualys.com/ssllabs/2016/11/22/ssl-labs-now-showing-multiple-certificate-chains&quot;&gt;SSL Labs started showing multiple certificates&lt;/a&gt; when they are configured for the same host, and we now have another useful feature lined up—per protocol cipher suite testing. When I started working on &lt;a href=&quot;https://www.ssllabs.com/&quot;&gt;SSL Labs&lt;/a&gt; in 2009, everyone had the same cipher suite configuration, no matter what protocol version was used. In the years that followed we had various security issues in earlier protocol versions, and the ability to configure per-protocol cipher suites slowly started to find its way into libraries. Today, different suites for different protocols is still not very common, but not rare any more.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-23390&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Now, it seems like a small thing to test supported cipher suites for each protocol separately, but it actually required a lot of work. The first problem was that cipher suite testing was the slowest part of the assessment. That&amp;#8217;s because SSL Labs used to use one connection to test support for one suite. If you suddenly multiply that by two or three, the assessment time explodes. There&amp;#8217;s a good historical method why this approach was used, by the way. Back in the day, there were lots of F5 devices that wouldn&amp;#8217;t tolerate TLS handshakes with a large number of suites. So, to avoid interoperability problems, the easiest solution was to check one suite at the time.&lt;/p&gt;
&lt;p&gt;When the time came to switch to per-protocol suite testing, we decided to completely overhaul cipher suite detection to speed it up. Luckily, in the meantime one of the F5 engineers provided a workaround for their interoperability problem; we even have &lt;a href=&quot;https://tools.ietf.org/html/rfc7685&quot;&gt;RFC 7685&lt;/a&gt; for it. To cut the long story short, the new testing method in SSL Labs is both faster and provides better suite detection. Refactoring at its best.&lt;/p&gt;
&lt;p&gt;Our work is not yet done, however. There is another aspect of cipher suite testing, and that&amp;#8217;s support for Server Name Indication (SNI). SNI is a special feature of TLS that allows multiple secure sites to exist on the same IP address. Another thing that has become common is that sites configure cipher suite support on per-site (not server) basis. In this case, clients that don&amp;#8217;t support SNI and thus can&amp;#8217;t specify the desired site name (e.g., Windows XP and some very old Android devices), get server suites not site suites.&lt;/p&gt;
&lt;p&gt;The new cipher suite detection implementation is now running on the &lt;a href=&quot;https://dev.ssllabs.com/&quot;&gt;SSL Labs staging server&lt;/a&gt;. Once ready, we&amp;#8217;ll migrate it to production.&lt;/p&gt;


</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/11/ssl-labs-now-showing-multiple-certificate-chains</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/11/ssl-labs-now-showing-multiple-certificate-chains.html"/>
    <title>SSL Labs now showing multiple certificate chains</title>
    <published>2016-11-22T00:00:00+00:00</published>
    <updated>2016-11-22T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;When we designed the &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; report originally, we allowed room for only one certificate per server. Even though it was technically possible to support multiple certificates for a single host, only a small number of web servers supported it and nobody was actually doing it. Why would they&amp;#8230; RSA worked well and cryptography wasn&amp;#8217;t as important as it is today.&lt;/p&gt;
&lt;p&gt;But, over the years, people started deploying RSA and ECDSA certificates in parallel. These days, many web servers support this option and it&amp;#8217;s not at all uncommon to find such web sites. Now, SSL Labs has always been collecting all observed certificates, but they were not shown in the report. When we started to work on the v3 API, we made changes to expose all the certificates. Now, finally (as of &lt;a href=&quot;https://community.qualys.com/docs/DOC-5737&quot;&gt;1.25.2&lt;/a&gt;), they appear in the main report as well.&lt;/p&gt;
&lt;p&gt;To accommodate the additional certificates we made to make some changes to the page design. SSL Labs report was very long even before this change and adding more certificates would mean much more data. So, in an attempt to show less, we&amp;#8217;ve taken a decision to hide certificate trust paths by default. We think this is information that most people won&amp;#8217;t look for anyway, and those who do can still find it.&lt;/p&gt;
&lt;p&gt;This change marks another milestone; for the first time, SSL Labs requires JavaScript for its full functionality. I know, it&amp;#8217;s not really relevant, but still. For a really long time I liked the idea of providing a useful service without having to use any &amp;#8220;bells and whistles&amp;#8221;. But we move on!&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/11/announcing-ss-labs-grading-changes-for-2017</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/11/announcing-ss-labs-grading-changes-for-2017.html"/>
    <title>Announcing SSL Labs grading changes for 2017</title>
    <published>2016-11-16T00:00:00+00:00</published>
    <updated>2016-11-16T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;At &lt;a href=&quot;https://www.ssllabs.com/&quot;&gt;SSL Labs&lt;/a&gt;, we have a major review of our grading criteria about once a year. As the security of the ecosystem matures, our goal is to push forward and make the requirements [for a good grade] stricter. In many ways, this process of continuous improvement is what really matters to us.&lt;/p&gt;
&lt;p&gt;According to our measurement in SSL Pulse, over 40% of the monitored sites have configuration that can be considered good. However, only about 3% of those get an A+, which is what everyone should be aiming for. So our goal with the design of the grading criteria is to push the number of A+ sites up.&lt;/p&gt;
&lt;p&gt;In this blog post we will announce our short-term changes as well as outline some further changes that we will be making in 2017 and beyond. From the list below, the 3DES grading change will happen first. Other changes will follow. The main purpose of this blog post is to outline our grading directions so that organisations can start to plan their improvements.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-23365&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update (28 March 2017):&lt;/b&gt; The first batch of changes has been further documented in this &lt;a href=&quot;https://blog.qualys.com/ssllabs/2017/01/18/ssl-labs-grading-changes-january-2017&quot;&gt;follow-up blog post&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Penalty for using 3DES with modern protocols (C)&lt;/h3&gt;
&lt;p&gt;In late August, security researchers demonstrated an attack against ciphers that use 64-bit encryption blocks. The attack is not practical because it requires a very large amount of traffic, but it’s a good reminder that older and weaker ciphers need be retired as a matter of routine. In TLS, that means avoiding 3DES. Now, for sites that need to support an old user base completely retiring 3DES might not be possible (hint: Windows XP), but there’s no reason to use this cipher with modern browsers. To that end, we’ll be modifying our grading criteria to penalise sites that negotiate 3DES with TLS 1.1 and newer protocols. Such sites will have their scores capped at C. Sites that continue to support 3DES and keep it at the end of their ordered list of suites will not be affected.&lt;/p&gt;
&lt;h3&gt;Penalty for not using forward secrecy (B)&lt;/h3&gt;
&lt;p&gt;Forward security is a property of secure communication in which a compromise of a long term private key doesn’t affect any past encrypted conversations. In TLS, each deployment has to decide whether to provide forward secrecy. The very popular RSA key exchange, for example, doesn’t provide it. Because forward secrecy is one of the more important things to get right and we want to more emphasis on it; for that reason we will soon be requiring forward secrecy for the A grade.&lt;/p&gt;
&lt;p&gt;We expect this to affect roughly 7% of the sites currently getting an A (currently at about 43%). If possible, we will not penalise sites that use suites without forward secrecy provided they are never negotiated with clients that can do better.&lt;/p&gt;
&lt;h3&gt;AEAD suites required for A+&lt;/h3&gt;
&lt;p&gt;Ever since the Lucky 13 attacks, the consensus in the security community has been that authenticated encryption is superior to CBC suites (as implemented in TLS). TLS 1.3 supports only AEAD suites. SSL Labs doesn’t currently reward the use of AEAD suites and we wish to correct this. In the next grading criteria update we will start requiring AEAD suites for A+. At some point in the future, AEAD suites will be required for A.&lt;/p&gt;
&lt;p&gt;As with forward secrecy, we will not penalise sites if they continue to use non-AEAD suites provided AEAD suites are negotiated with clients that support them.&lt;/p&gt;
&lt;h3&gt;Protocol downgrade defenses&lt;/h3&gt;
&lt;p&gt;In April 2015, RFC 7507 introduced a new defense against voluntary protocol downgrade attacks; the full name of the standard is “TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks”. Because this defense closes a serious security loophole, SSL Labs requires that servers support the signalling value (TLS_FALLBACK_SCSV) to get an A+. The uptake was pretty good; according to the SSL Pulse results in August, 66% of all servers support this feature.&lt;/p&gt;
&lt;p&gt;When we introduced this grading change, our intention was to eventually make SCSV support a requirement for A. In the meantime, POODLE came out, eventually leading to modern browsers generally removing voluntary protocol downgrade behaviour. At the moment, TLS_FALLBACK_SCSV doesn’t have a strong security value because the clients who support it won’t downgrade anyway. At the same time, the IIS doesn’t support RFC 7507, which means that anyone running their site on it can’t get an A+.&lt;/p&gt;
&lt;p&gt;Given that the recent change to TLS 1.3 means that future protocol downgrades will be avoided, we will consider removing the requirement for TLS_FALLBACK_SCSV for A+.&lt;/p&gt;
&lt;h3&gt;Penalty for version intolerant servers&lt;/h3&gt;
&lt;p&gt;Initially, our intention was to introduce a penalty for servers intolerant to future TLS protocol versions. However, a change to the TLS 1.3 in the area of protocol version negotiation means that intolerant servers will no longer impede deployment of this protocol version. In that light, we are currently not planning to introduce a penalty for this problem.&lt;/p&gt;
&lt;h3&gt;Cipher grading adjustments&lt;/h3&gt;
&lt;p&gt;Our current algorithm for grading ciphers is not producing desired results, so we intend to introduce one or two explicit rules. First, all ciphers weaker than 128 (excluding 3DES) bits will result in an F grade. Additionally, servers that continue to support RC4—even if it’s not used with modern browsers—will be capped at C.&lt;/p&gt;
&lt;h3&gt;SHA1 deprecation&lt;/h3&gt;
&lt;p&gt;As you&amp;#8217;re probably already aware, SHA1 has been deprecated for certificate signatures. In 2017, browsers will stop trusting web sites that continue to use this weak hash function for signatures. In line with the industry, we too will distrust such sites.&lt;/p&gt;
&lt;h3&gt;Further afield&lt;/h3&gt;
&lt;p&gt;The changes listed in the previous section will take place in the first half of 2017. We would like to take this opportunity to provide a rough outline of the future changes to SSL Labs grading criteria. The changes listed in this section will happen at some point in the future, when the time is right, but very likely not before Q3 2017. We will assess each change individually. We hope that this early notification will give organisations more time to plan ahead.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HSTS preloading required for A+&lt;/li&gt;
&lt;li&gt;AEAD suites required for A&lt;/li&gt;
&lt;li&gt;HSTS required for A&lt;/li&gt;
&lt;li&gt;Sites with 3DES capped at B or C&lt;/li&gt;
&lt;li&gt;Harsher penalty for sites that continue to support RC4&lt;/li&gt;
&lt;li&gt;TLS 1.3 required for A+ (and for A, later, when the time is right)&lt;/li&gt;
&lt;li&gt;OCSP stapling (and, possibly, must-staple at some point) required for A+&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/09/is-http-public-key-pinning-dead</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/09/is-http-public-key-pinning-dead.html"/>
    <title>Is HTTP Public Key Pinning dead?</title>
    <published>2016-09-06T00:00:00+01:00</published>
    <updated>2016-09-06T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I have a confession to make: I fear that &lt;a href=&quot;https://tools.ietf.org/html/rfc7469&quot;&gt;HTTP Public Key Pinning&lt;/a&gt; (HPKP, &lt;a href=&quot;https://tools.ietf.org/html/rfc7469&quot;&gt;RFC 7469&lt;/a&gt;)—a standard that was intended to bring public key pinning to the masses—might be dead. As a proponent of a fully encrypted and secure Internet I have every desire for HPKP to succeed, but I worry that it’s too difficult and too dangerous to use, and that it won’t go anywhere unless we fix it.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-23191&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;What is public key pinning?&lt;/h3&gt;
&lt;p&gt;Before I go on, let’s briefly discuss why we need public key pinning in the first place. The problem is with the way we manage trust: we have hundreds of CAs and each of them is able to issue a certificate for any web site in the world. Technically, owner permission is not necessary. Now, I think this system actually works rather well, which is evident from the fact that the rate of incidents is very low. But fraudulent certificates can be created in one way or another, and that’s not good enough for high-profile web sites. Further, technical people have trouble relying on a system that’s not foolproof.&lt;/p&gt;
&lt;p&gt;Enter &lt;em&gt;public key pinning&lt;/em&gt;, which is a technique that enables site owners to have a say in which certificates are valid for their sites. For example, in one of the possible deployment options, you choose two or more CAs to trust; after that, any certificate issued by anyone else is ignored. What’s not to like?&lt;/p&gt;
&lt;p&gt;Public key pinning started at Google, and they first implemented in Chrome, pinning their own web sites. Their approach is an example of &lt;em&gt;static pinning&lt;/em&gt;; the pins are not easy to change because they’re embedded in the browser. Chrome’s pinning has served us well over the years, uncovering many cases of fraudulent certificates that would otherwise perhaps fly under the radar. Google also allowed (and still does) that other organisations embed their pins in Chrome. These days, Firefox also supports static pinning, drawing from the same pins maintained by Google.&lt;/p&gt;
&lt;p&gt;Whereas static pinning works well, it has a problem because maintaining pins is a slow manual process that doesn’t scale. For that reason Google also &lt;a href=&quot;https://www.ietf.org/mail-archive/web/websec/current/msg00505.html&quot;&gt;sparked the IETF work that lead to RFC 7469&lt;/a&gt;, officially known as “Public Key Pinning Extension for HTTP”, but which everybody calls just HPKP. HPKP is an example of &lt;em&gt;dynamic pinning&lt;/em&gt;; web site owners can set the pins at will.&lt;/p&gt;
&lt;h3&gt;What is the problem with HPKP then?&lt;/h3&gt;
&lt;p&gt;The main problem with HPKP, and with pinning in general, is that it can brick web sites. The culprit is the memory effect: pins, once set, remain valid for a period of time. Each pin is associated with a unique cryptographic identity that the web site must possess to continue operation. If you lose control of these identities, you effectively also lose your web site.&lt;/p&gt;
&lt;p&gt;Clearly, pinning introduces a paradigm shift. Without it, TLS is quite forgiving—if you lose your keys you can always create a new set and get a fresh certificate for them. With pinning, your keys become precious.&lt;/p&gt;
&lt;p&gt;There is some relief in the fact that a valid HPKP configuration must include at least one backup key. The idea is that, if you something goes seriously wrong, you fetch your securely-stored backup key and resume normal operation.&lt;/p&gt;
&lt;p&gt;Even if you don’t lose your pinning keys, you have to be careful how and when you’re changing them. Your configuration must, at any time, be offering at least one pin that matches the configuration you offered to all your previous users. If you rotate the keys too quickly you risk not having a pin for some of your older visitors.&lt;/p&gt;
&lt;p&gt;To sum up, HPKP is not for the faint of heart; you essentially need to know what you’re doing and be careful about it.&lt;/p&gt;
&lt;p&gt;Talking about knowing what you’re doing, HPKP is also too flexible about what you can do with it. With it you can pin any public key in the certificate chain, choosing from your own keys (the leaf certificate), the intermediate certificates, or the root. Each decision comes with its advantages and disadvantages, but you need to understand PKI very well to appreciate them. This flexibility is a point of great confusion that in practice often leads to paralysis (“What to do?”). Some sites will inevitably make the wrong choice and suffer for it.&lt;/p&gt;
&lt;p&gt;Thus, a successful pinning strategy requires that you:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Build a threat model to determine if there is a real threat out there that pinning can address at an acceptable cost&lt;/li&gt;
&lt;li&gt;Understand PKI and HPKP and choose the right place to pin&lt;/li&gt;
&lt;li&gt;Avoid losing your pinning keys&lt;/li&gt;
&lt;li&gt;Keep backup keys in a separate location in case of server compromise&lt;/li&gt;
&lt;li&gt;Have a robust plan for the key rotation and execute it smoothly&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The above steps aren’t terribly difficult to carry out, but the stakes are pretty high. A serious mistake with pinning can lead to the business shutting down. The deployment numbers reflect this; &lt;a href=&quot;https://scotthelme.co.uk/alexa-top-1-million-crawl-aug-2016/&quot;&gt;in August 2016 Scott Helme found only 375 sites with HPKP deployed&lt;/a&gt;, along with 76 sites with HPKP running in report-only mode. Contrast these numbers with about 30,000 instances of HSTS in the same data set.&lt;/p&gt;
&lt;h3&gt;Abusing HPKP&lt;/h3&gt;
&lt;p&gt;A potentially bigger problem with HPKP is that it can be abused by malicious actors. Let’s say, for example, that someone breaks into your server (a very common occurrence) and thus gains control of your web site. They can then silently activate HPKP and serve pinning instructions to a large chunk of your user base. It’s very unlikely that you will detect this. After a long-enough period, they remove the pinning keys from the server and brick your web site just for the fun of it. Or, if you’re lucky, they seek ransom, giving you a chance to get the backup pinning key from them and keep your business.&lt;/p&gt;
&lt;p&gt;The HPKP working group had been aware of this problem (one early example &lt;a href=&quot;https://www.ietf.org/mail-archive/web/websec/current/msg00527.html&quot;&gt;here&lt;/a&gt;), but didn’t include a mitigation mechanism in the standard. Early HPKP drafts had specified a ramp-up period; pinning had to be observed over a period of time to become fully operational. That feature eventually got removed, &lt;a href=&quot;https://www.ietf.org/mail-archive/web/websec/current/msg01588.html&quot;&gt;probably because it wasn’t quite clear how to effectively assess continuity&lt;/a&gt;. In the end, the RFC specified that one active pin and one inactive (backup) pin are sufficient to activate pinning for essentially any duration. The “Hostile Pinning” section of the RFC mentions this problem almost in passing, noting that sites should be able to recover after the maximum policy duration expires. The RFC leaves to browsers to decide on their maximum max-age and has a very soft recommendation to cap it at 60 days.&lt;/p&gt;
&lt;p&gt;We are not yet seeing attacks just yet because HPKP is relatively new, but the word is starting to get out. Just this month there was a talk at DEFCON about what they called RansomPKP. If you’re interested in this topic, you should also &lt;a href=&quot;https://scotthelme.co.uk/using-security-features-to-do-bad-things/&quot;&gt;read this follow-up from Scott Helme&lt;/a&gt;, who provided more details.&lt;/p&gt;
&lt;h3&gt;So why do I say that HPKP is dead?&lt;/h3&gt;
&lt;p&gt;I think that, ultimately, HPKP requires too much effort and that only a small number of sites will ever deploy it. At the same time, it can be—in the current form—used as a powerful weapon against everybody.&lt;/p&gt;
&lt;p&gt;The irony of HPKP is that it’s not going to be used by many sites (because it’s too taxing), but that it can be used against the long tail of millions of small sites who are not even aware that HPKP exists. For the small number of sites who are using pinning, it’s just as likely that static pinning would work well, with less fuss and no danger for the rest of the Web.&lt;/p&gt;
&lt;h3&gt;Can HPKP be fixed?&lt;/h3&gt;
&lt;p&gt;To fix HPKP we need to 1) make it easier and less dangerous to deploy and 2) have a way to deal with potential malicious use.&lt;/p&gt;
&lt;p&gt;For the latter, one possibility is to “dull” HPKP so that it remains useful but that the really dangerous aspects of it are addressed. There’s a variety of ways in which this could be done. For example, we could reintroduce the ramp-up mechanism. Another solution might be to restrict pinning to those who can demonstrate a level of security knowledge and operational proficiency, for example those who are already preloading HSTS. And perhaps browsers can build an undo mechanism that could be used to override broken pins.&lt;/p&gt;
&lt;p&gt;Making HPKP easier to use probably means allowing sites to deploy safer pinning, for example pinning to CAs, not their roots. In fact, that’s largely how static pinning is done right now. It goes like this: you choose 2-3 CAs and require that only they can issue valid certificates for your site. This approach is not as secure as pinning to the leafs (your own keys), but it vastly reduces the attack surface and with much less effort. (This idea had also been &lt;a href=&quot;https://www.ietf.org/mail-archive/web/websec/current/msg01745.html&quot;&gt;discussed during the development of HPKP&lt;/a&gt;, but it was rejected because it wasn&amp;#8217;t a pure-technical solution and required collaboration of many organisations.)&lt;/p&gt;
&lt;p&gt;Technically, pinning to CAs is possible today provided you have a very good understanding of PKI. The key issue is understanding how different root stores include different root keys, how root keys change, and so on. I have some hope that with more public information about these topics and with help with interested CAs we can make this safer style of pinning possible, even without any changes to HPKP.&lt;/p&gt;
&lt;h3&gt;What can you do today?&lt;/h3&gt;
&lt;p&gt;Leaving all the possibilities of the future aside, let’s try to figure out what we can do today. Here are some ideas you can consider to make yourself safer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, you could have a monitoring system in place to audit your configuration and detect unwanted pinning. For large enterprises this could be a good idea anyway, because pinning (and other security technologies) could be deployed by an eager developer, without organisation-wide coordination. (As an example, both HPKP and HSTS have a memory effect and also support the includeSubDomains directive, that could make a configuration spread to an entire domain name, even to servers controlled by other teams.)&lt;/li&gt;
&lt;li&gt;You could front your sites with a reverse proxy and make sure that the HPKP response header is never sent to your users. This defence measure won’t address all the possible attack vectors (e.g., if someone redirects the web site to other servers and abuses a misissued certificate), but it would prevent escalation from server take-over.&lt;/li&gt;
&lt;li&gt;If you don’t mind your hand being forced, the pinning itself can be an effective defence against malicious pinning. All the attack vectors that include DNS hijacking and fraudulent certificates can be detected if you’re already using pinning. Sadly, an attacker who takes control over your pins (by compromising your servers) can rotate the pins to those they control. (But the previous control, the reverse proxy, helps in that case.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Thanks to Ryan Sleevi and Scott Helme for reading early drafts of this post.&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/08/ssl-labs-improved-suite-detection</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/08/ssl-labs-improved-suite-detection.html"/>
    <title>SSL Labs: Improved suite detection</title>
    <published>2016-08-31T00:00:00+01:00</published>
    <updated>2016-08-31T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;In one of the future SSL Labs releases we will change how we detect supported protocol suites. Even though there will be no change to the grading algorithm because of this, our detection of obsolete and insecure suites will improve slightly, and that will worsen the grade of a small number of sites. We will publish this new version on October 1st or later.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-23198&quot;&gt;&lt;/span&gt;&lt;br /&gt;
When it comes to cipher suite detection, SSL Labs does something unusual: it tests for one cipher suite at a time. This is unusual because the obvious thing to do is to submit all suites you support, then see what comes back. The latter approach is faster, but the problem is that it doesn’t always work in practice; many servers break if you submit too many suites or if the ClientHello message is too long. (In one extreme case, &lt;a href=&quot;https://tools.ietf.org/html/rfc7685&quot;&gt;a special TLS extension&lt;/a&gt; was designed to make sure the record sizes are just right.) In that light, the one-suite-at-a-time approach was the simplest way to get the job done. Sure, this approach is also slow, but SSL Labs does a lot anyway, so our tests are never going to be super-quick.&lt;/p&gt;
&lt;p&gt;Slow testing we could live with, but we also noticed that many servers started to take protocol version into account when deciding which cipher suites to support. This change was in response to many issues discovered in the SSL and TLS protocols, contrasted against the need to support older clients. Because SSL Labs tests cipher suites only with the highest-supported protocol version, we started to miss some suites. We added some workarounds for the common cases, but this issue has not been resolved properly.&lt;/p&gt;
&lt;p&gt;When you combine our slow cipher suite testing with testing separately for each supported protocol, the testing time rises significantly and we had no choice but to optimise. The good news is that this change improves the cipher suite detection and also works about 30% faster on average (than now).&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/08/tls-version-intolerance-in-ssl-pulse</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/08/tls-version-intolerance-in-ssl-pulse.html"/>
    <title>TLS version intolerance in SSL Pulse</title>
    <published>2016-08-02T00:00:00+01:00</published>
    <updated>2016-08-02T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;You often hear that TLS is the most important security protocol. Usually, the reasoning is that it’s very widely deployed and also that it works for many higher-level protocols. That’s certainly true, but for those who work more closely with these protocols there is another important aspect: we can learn so much about protocol design by carefully examining the evolution of TLS.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-23108&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;strong&gt;Update (13 January 2017):&lt;/strong&gt; Since this post was originally published, the TLS 1.3 specification was amended to change how future protocol versions are negotiated. The new approach bypasses the intolerance problem described below. Thus deployment of TLS 1.3 will proceed largely without fear of breaking compatibility.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;Protocol Version Intolerance&lt;/h3&gt;
&lt;p&gt;One important lesson we learned is never to use explicit protocol version numbers. In TLS, they have been a continuous source of trouble, leading to waste of time and security issues. The root cause is the fact that there are many servers that freak out when a client offers to negotiate a TLS version number they don’t understand. According to the protocol specification, they’re supposed to respectfully decline to use an unknown version and fall back to the best protocol they can offer.&lt;/p&gt;
&lt;p&gt;Despite this being a server-side problem (and, at a deeper level, a library problem), in practice browsers get all the blame if they can’t communicate with a particular web site. This leads to a behaviour sometimes called &lt;i&gt;voluntary protocol downgrade&lt;/i&gt;: after trying their best protocol version and failing, browsers try their second best, then third best, and so on, until hopefully they manage to establish an encrypted channel with the server.&lt;/p&gt;
&lt;p&gt;Although this browser behaviour helps with interoperability, it slows down communication and also enables active network attackers to downgrade secure communication to the worst protocol version supported by both the client and server.&lt;/p&gt;
&lt;p&gt;After many years of struggle, major browsers vendors eventually managed to disable the fallbacks. The fallback to SSL v3 was the first to go, prompted by the discovery of the POODLE attack. Other fallbacks were removed later, as you can see on &lt;a href=&quot;https://www.feistyduck.com/ssl-tls-and-pki-history/&quot;&gt;this timeline of events in the SSL/TLS ecosystem&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;TLS 1.3&lt;/h3&gt;
&lt;p&gt;The version intolerance problems will persist for as long as we continue to publish new protocol versions. Protocol fallbacks are relevant again because TLS 1.3 is close to being finished and we now have to face the harsh reality of many intolerant servers out there.&lt;/p&gt;
&lt;h3&gt;Testing for version intolerance in SSL Labs&lt;/h3&gt;
&lt;p&gt;Protocol version intolerance testing has been implemented in SSL Labs for a very long time. If you’re unfortunate to run into a server that’s intolerant to some of TLS 1.0, 1.1, or 1.2, you get a big warning. But such servers are getting increasingly rare; after all, most browsers implemented TLS 1.2 by the end of 2013, which means that system owners have had a few years to resolve the intolerance problems.&lt;/p&gt;
&lt;p&gt;We also test for intolerance of TLS 1.3 and some other absurdly large version numbers. The TLS 1.3 results are now of immediate interest; the other tests possibly more of interest to protocol developers.&lt;/p&gt;
&lt;p&gt;Given that the release of TLS 1.3 is imminent, we’re planning to make the intolerance warnings more prominent, as well as take it into account when grading servers. There will soon be a separate post about that.&lt;/p&gt;
&lt;h3&gt;Version intolerance tracking in SSL Pulse&lt;/h3&gt;
&lt;p&gt;Our &lt;a href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot;&gt;SSL Pulse&lt;/a&gt; project, which monitors SSL/TLS configuration on about 150,000 most popular web sites, provides version intolerance information from the first ever scan we did in April 2012. You can see what that looks like in the following chart.&lt;br /&gt;
&lt;a href=&quot;https://blog.qualys.com/wp-content/uploads/2016/07/ssl-pulse-protocol-intolerance.png&quot;&gt;&lt;img data-attachment-id=&quot;23109&quot; data-permalink=&quot;https://blog.qualys.com/ssllabs/2016/08/02/tls-version-intolerance-in-ssl-pulse/attachment/ssl-pulse-protocol-intolerance&quot; data-orig-file=&quot;https://blog.qualys.com/wp-content/uploads/2016/07/ssl-pulse-protocol-intolerance.png&quot; data-orig-size=&quot;1918,976&quot; data-comments-opened=&quot;1&quot; data-image-meta=&quot;{&amp;quot;aperture&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;0&amp;quot;}&quot; data-image-title=&quot;ssl-pulse-protocol-intolerance&quot; data-image-description=&quot;&quot; data-medium-file=&quot;https://blog.qualys.com/wp-content/uploads/2016/07/ssl-pulse-protocol-intolerance-300x153.png&quot; data-large-file=&quot;https://blog.qualys.com/wp-content/uploads/2016/07/ssl-pulse-protocol-intolerance-660x336.png&quot; class=&quot;alignnone wp-image-23109 size-large&quot; style=&quot;border: 1px solid grey;margin: 1.5em 0&quot; src=&quot;https://blog.qualys.com/wp-content/uploads/2016/07/ssl-pulse-protocol-intolerance-660x336.png&quot; alt=&quot;ssl-pulse-protocol-intolerance&quot; width=&quot;660&quot; height=&quot;336&quot; srcset=&quot;https://blog.qualys.com/wp-content/uploads/2016/07/ssl-pulse-protocol-intolerance-660x336.png 660w, https://blog.qualys.com/wp-content/uploads/2016/07/ssl-pulse-protocol-intolerance-300x153.png 300w, https://blog.qualys.com/wp-content/uploads/2016/07/ssl-pulse-protocol-intolerance-768x391.png 768w&quot; sizes=&quot;(max-width: 660px) 100vw, 660px&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
You can see that, in our most recent scan (July 2016), 3.2% servers from our data set don’t like TLS 1.3. A further 3.6% servers don’t like TLS 2.152. This doesn’t sound like much, but it’s a huge problem for browsers because it translates to thousands of sites, some very popular.&lt;/p&gt;
&lt;p&gt;You will also notice a huge drop in the number of intolerant servers in May 2015, which warrants an explanation. When we first started measuring version intolerance, the problem was genuinely much bigger; at peak, with about 12% servers intolerant to TLS 1.3 and over 60% servers intolerant to TLS 2. With such numbers, there was little chance of introducing a new protocol version smoothly. But then someone realised that the problem could be reduced with only a slight tweak to the TLS 1.3 protocol.&lt;/p&gt;
&lt;p&gt;If you look under the hood of any SSL or TLS protocol version, you will see that they all use two different version numbers. There’s one version used for the main protocol (TLS 1.0, 1.1, and so on), but there is also the record layer version. You can think about the record layer as a subprotocol. With two version numbers, there’s always been a confusion about what exactly to send in each field. Some clients would only use the main protocol version (e.g., TLS 1.2), but keep the record layer version at SSL 3 or TLS 1.0, to indicate that, at that layer, nothing changed. However, some clients would use the bigger protocol versions for both fields. Naturally, in our tests we simulated the worst case.&lt;/p&gt;
&lt;p&gt;Anyway, it transpired that most problems arise from record layer intolerance. Given that no one actually needs two version numbers, the TLS 1.3 specification was subsequently changed to deprecate the record layer version number and fix it at TLS 1.0 (0x0301). Then, some time later, in May 2015, we started testing for version number intolerance under the new rules, which caused the big drop.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/06/new-release-of-ssl-tls-best-practices</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/06/new-release-of-ssl-tls-best-practices.html"/>
    <title>New release of SSL/TLS Deployment Best Practices</title>
    <published>2016-06-27T00:00:00+01:00</published>
    <updated>2016-06-27T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;This month I released an &lt;a href=&quot;https://www.ssllabs.com/projects/best-practices/&quot;&gt;updated version of SSL/TLS Deployment Best practices&lt;/a&gt;—my favourite SSL Labs publication—bringing the document up to date again. Given that the previous release was a long time ago (December 2014!), this version has quite a few changes and improvements.&lt;/p&gt;
&lt;p&gt;Now, despite the numerous changes, the advice didn’t change that much. The updated version puts &lt;b&gt;more emphasis on using authenticated cipher suites&lt;/b&gt;. In practice, we’re not seeing attacks against CBC, but it’s prudent to improve the margin of safety.&lt;/p&gt;
&lt;p&gt;There’s been several interesting attacks since the previous version, for example FREAK, Logjam, and DROWN. However, &lt;strong&gt;those who followed the earlier versions of the guide wouldn’t have been vulnerable to any of these problems&lt;/strong&gt;. Still, these attacks are now mentioned in the document. I am also spending more time discussing why it&amp;#8217;s important to deploy with strong key exchange.&lt;/p&gt;
&lt;p&gt;I’ve also made the guide more practical by giving a &lt;strong&gt;recommended list of cipher suites&lt;/strong&gt;, something I didn’t do before. That one paragraph alone should save the readers a lot of time trying to figure that out on their own. In addition, I added &lt;strong&gt;HSTS and CSP examples&lt;/strong&gt; to help improve site security and get rid of mixed content. &lt;strong&gt;Subresource integrity&lt;/strong&gt; is also mentioned as a way to deal with third-party trust.&lt;/p&gt;
&lt;p&gt;There’s also a large number of smaller updates, as well as tips and tricks. The best thing is that the document is now &lt;strong&gt;hosted in the SSL Labs’ wiki on GitHub&lt;/strong&gt;; decoupled from the software development cycle of the main web site, it can now be updated whenever it’s necessary.&lt;/p&gt;
&lt;p&gt;I am very happy to continue to maintain SSL/TLS Deployment Best Practices; given the amount of stale documentation that’s out there, having a concise and comprehensive guide to secure server configuration is very important.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/06/the-best-tls-training-in-the-world</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/06/the-best-tls-training-in-the-world.html"/>
    <title>Available now: The Best TLS Training in the World</title>
    <published>2016-06-15T00:00:00+01:00</published>
    <updated>2016-06-15T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
I am pleased to reveal the next step in my quest to help the world make better use of encryption; starting with this September, I will teach a practical one-day practical SSL/TLS and PKI training course in London. The idea is to cover everything developers and system administrators need to know in their daily work. You&apos;ll find the &lt;a href=&quot;https://www.feistyduck.com/training/tls&quot;&gt;complete course outline and other details on the course homepage&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
I named the course “The Best TLS Training in the World”, in part because I wanted to show that it’s not going to be boring, but mostly because the training will be everything I know about the topic, distilled into a practical hands-on experience. (And, after years spent researching and writing, I know a lot.) There’s a lot of fluff around TLS, but things can be quite straightforward if you know where not to look.
&lt;p&gt;

&lt;p&gt;
I am not new to training; I used to teach Apache Security a lot back some 10 years ago, and I started teaching TLS occasionally after Bulletproof SSL and TLS came out; it was just one client, with the idea to experiment and refine the approach until it’s  just right. That training turned out to be a huge success, so I eventually decided to make it available to a wider audience.
The first training is at &lt;a href=&quot;https://skillsmatter.com/event-space&quot;&gt;CodeNode&lt;/a&gt; on September 15th. The price is currently £595 (it includes a £100 early-bird discount available until July 15th), but—to celebrate—I am giving away 5 seats at a special price of £445. Use the coupon &lt;b&gt;TLSJUNE&lt;/b&gt; at the checkout. The offer is available on first-come, first-served basis, so hurry up!
&lt;p&gt;
	
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.feistyduck.com/training/the-best-ssl-and-tls-training-in-the-world&quot;&gt;The Best TLS Training in the World&lt;/a&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/05/ssl-labs-in-2016-and-beyond</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/05/ssl-labs-in-2016-and-beyond.html"/>
    <title>SSL Labs in 2016 and beyond</title>
    <published>2016-05-16T00:00:00+01:00</published>
    <updated>2016-05-16T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
In early 2009, &lt;a href=&quot;https://www.ssllabs.com/&quot;&gt;SSL Labs&lt;/a&gt; was just this idea I had, born out of frustration with having to deal with a very complex subject without good documentation and tools. I wanted something that worked for me, and didn’t really anticipate that it could become as popular as it is today. The first version launched in the summer of that same year.
&lt;/p&gt;
&lt;p&gt;
I joined &lt;a href=&quot;https://www.qualys.com/&quot;&gt;Qualys&lt;/a&gt; in 2010, not knowing that I’d stay for 6 happy and productive years. In that time, SSL Labs went from a lovely but little known site, to the popular SSL/TLS destination it is today. It’s now a de-facto standard for secure server assessment. More important, it became a place that helps you deploy your systems securely. Over the years I watched with quiet joy tens of thousands of sites improve their configuration, a process that accelerated with the rise of popularity of SSL Labs. The last time I looked at the statistics, hundreds of thousands of people were on the site monthly, usually several times.
&lt;/p&gt;
&lt;p&gt;
Qualys have been fantastically supportive of my work. Even though I didn’t originally join to work on SSL Labs, the site became my primary job at the point when that was most needed. To their credit, the web site remained free and there was never any attempt or even idea to compromise on the service in any way. In fact, almost the only mention of Qualys is the logo at the top of the web site. It’s so rare to give unreservedly, without asking for anything in return.
&lt;/p&gt;
&lt;p&gt;
My journey was long, but exciting. Over the years, in a quest to understand it all, I immersed myself in the ecosystem. Somewhere along the line I couldn’t resist the temptation to write another book, and &lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;Bulletproof SSL and TLS&lt;/a&gt; was born.
&lt;/p&gt;
&lt;p&gt;
After 7 years with SSL Labs, it’s time for me to move on and pursue other projects, but my journey doesn’t end here. In fact, even though I left Qualys as an employee, I am staying on as an advisor to help SSL Labs continue to improve. After all, SSL Labs is a big part of me and I can’t leave it behind just like that.
&lt;/p&gt;
&lt;p&gt;
Looking from outside, there probably won’t be many changes. I will be less active on the forums and mailing lists, but I’ll still be there. Qualys are committed as ever to continue making SSL Labs better. In fact, over the last two months I’ve been helping my colleagues Yash and Bhushan take over the development; we’re now planning the next steps together.
&lt;/p&gt;
&lt;p&gt;
Qualys, thank you for a wonderful opportunity to work on what I love. It was a pleasure working with you all. Also thanks to everyone who used SSL Labs over the years and especially those who wrote in, reported problems, and asked for improvements. You helped shape SSL Labs into what it is today.
&lt;/p&gt;
&lt;p&gt;
Now onto the new adventures that await in the future! I’ll see you on the net.
&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/03/ssl-labs-drown-test-implementation-details</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/03/ssl-labs-drown-test-implementation-details.html"/>
    <title>SSL Labs DROWN test implementation details</title>
    <published>2016-03-04T00:00:00+00:00</published>
    <updated>2016-03-04T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
Two days ago the &lt;a href=&quot;/2016/03/drown-abuses-ssl-v2-to-attack-tls.html&quot;&gt;DROWN vulnerability came to light&lt;/a&gt;, showing new ways to attack TLS. SSL Labs deployed tests for DROWN in the &lt;a href=&quot;https://dev.ssllabs.com/&quot;&gt;staging environment&lt;/a&gt; yesterday, and we’ll be pushing it to production shortly. Because DROWN is a tricky problem, the aim of this blog post is to provide an explanation of what we test for and how exactly.
&lt;/p&gt;

&lt;p&gt;
First of all, we have known SSL v2 to be insecure for a very long time—over 20 years. As a result, even before DROWN SSL Labs used to give Fs to servers that supported this ancient version of the SSL protocol. DROWN actually makes things worse, because it abuses SSL v2 to attack all other protocols, but we don’t have a worse grade, so F will have to do.
&lt;/p&gt;

&lt;p&gt;
Further, DROWN introduces two additional attack vectors:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A server that has SSL v2 enabled can be used to attack any other servers that reuse the same RSA key; even those servers that don’t themselves support SSL v2. This attack is generic  (CVE-2016-0800)  and affects any protocol implementation.
&lt;li&gt;A server that has SSL v2 enabled and is also running a special vulnerable version of OpenSSL (&lt;a href=&quot;https://www.openssl.org/news/secadv/20160301.txt&quot;&gt;CVE-2016-0703&lt;/a&gt;) can be used to attack all other hostnames appear in its certificate.
&lt;/ul&gt;

&lt;p&gt;
For the above reasons, the security of a server can’t be determined only by looking at its configuration. For DROWN, we have to look for the presence of the server’s RSA keys and/or certificate hostnames elsewhere. As you can imagine, this can be tricky. However, this is where the DROWN authors and &lt;a href=&quot;https://censys.io/&quot;&gt;Censys&lt;/a&gt; come in: they have exposed an API that SSL Labs now uses to find vulnerable servers in their data set.
&lt;/p&gt;

&lt;p&gt;
Because the data we’re getting from Censys can be potentially stale, in SSL Labs we perform real-time checks for any of the above conditions. If we can find one matching server elsewhere, we consider the server being tested to be vulnerable and give it an F. Please note that the first 4 columns of the results (IP Address, Port, Export and Special) come from the search engine and could be outdated. The last column (Status) comes from SSL Labs; it reflects the current situation.
&lt;/p&gt;

&lt;p&gt;
One final thing: if you’re manually checking the SSL Labs results, please don’t get confused if you’re unable to connect to a host using SSL v2. If SSL Labs is still showing the host as vulnerable, chances are it’s using a version of OpenSSL that can complete a handshake even when no cipher suites are configured (CVE-2015-3197). SSL Labs checks for this variant as part of its testing.
&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/03/drown-grading-update</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/03/drown-grading-update.html"/>
    <title>DROWN grading update</title>
    <published>2016-03-04T00:00:00+00:00</published>
    <updated>2016-03-04T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
We are releasing an update to the grading criteria, version 2009l, to respond to the discovery of the DROWN attack. If a server is found to be vulnerable to DROWN it will be given an F, even though it might not support SSL v2 itself. (The nature of the DROWN vulnerability is such that servers that support SSL v2 can affect other servers, irrespective of supported protocol versions). You’ll find more information about our DROWN test &lt;a href=&quot;/2016/03/ssl-labs-drown-test-implementation-details.html&quot;&gt;here&lt;/a&gt;. Additionally, servers that support SSL v2 but don’t have any cipher suites configured are treated as if they had SSL v2 fully enabled.
&lt;/p&gt;

&lt;p&gt;
This update also contains two fixes to our grading code, which we don’t consider to be changes to our grading criteria:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Servers that have invalid HPKP information are not awarded A+.
&lt;li&gt;Servers that have an RSA key with exponent 1 are given an F.
&lt;/ul&gt;


</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2016/03/drown-abuses-ssl-v2-to-attack-tls</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2016/03/drown-abuses-ssl-v2-to-attack-tls.html"/>
    <title>DROWN abuses SSL v2 to attack TLS</title>
    <published>2016-03-01T00:00:00+00:00</published>
    <updated>2016-03-01T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
A fascinating new research called &lt;a href=&quot;https://drownattack.com/&quot;&gt;DROWN&lt;/a&gt; has uncovered a previously-unknown vulnerability in SSL v2, the first ever version of SSL that was released in 1995 and declared dead less than a year later. Even though this old version of SSL is not used much these days, it continues to be supported by many servers. The especially bad aspect of this attack is that it can be used to exploit TLS, even in cases when client devices don’t support SSL v2, and sometimes even in cases when the servers don’t support SSL v2 (but use the same RSA key as some other server that does). The researchers estimate that up to 22% of servers could be impacted by this problem.
&lt;/p&gt;

&lt;h2&gt;Disable SSL v2 everywhere now&lt;/h2&gt;

&lt;p&gt;
The attack is not trivial, but can be done cheaply against high-value targets. Before you go on to learn more about it, I recommend that you first ensure your systems are not vulnerable. Fortunately, remediation is straightforward: disable SSL v2 on all servers you have. It’s as simple as that…. but I really do mean all servers. If you’ve been reusing private RSA keys (even with different certificates), disabling SSL v2 on one server is not going to help if there’s some other server (possibly using a different hostname, port, or even a protocol) that continues to support this old and crazy-vulnerable protocol version.
&lt;/p&gt;

&lt;h2&gt;Impact of the generic attack&lt;/h2&gt;

&lt;p&gt;
The attack is an extension of the 1998 Bleichenbacher attack that can be used to decrypt a ciphertext when a padding oracle exists. For more information, I suggest that you read the &lt;a href=&quot;https://drownattack.com/&quot;&gt;original DROWN research&lt;/a&gt;, which is very interesting indeed. However, the bottom line is that one out of every 1,000 full TLS handshakes can be decrypted, leading to the compromise of the entire TLS session (potentially many connections of data). The cost is modest—only $440 and 8 hours. (The attack can be sped up if you want to spend more money on it. There is also a much better attack against some OpenSSL versions; I describe it later in this text.) The generic attack is entirely passive, but requires that 1) RSA key exchange is used and 2) that there is an SSL v2 server configured with the same private RSA key.
&lt;/p&gt;

&lt;p&gt;
The worst case is when an automated service is attacked, anything that might be carrying connection credentials. Even though you need 1,000 full TLS handshakes, you’ll get those in a matter of hours, and the credentials will be yours to do as you’re pleased.
&lt;/p&gt;

&lt;p&gt;
Attacking browser sessions is going to be more difficult, because HTTPS servers typically rely on TLS session caching as a way of improving handshake performance. A bigger problem is that user sessions rarely carry credentials; in most cases you can compromise session cookies and perform account hijacking. But that’s not bad at all!&lt;/p&gt;

&lt;h2&gt;Speeding-up the generic attack&lt;/h2&gt;

&lt;p&gt;
I developed a slight improvement to the attack, for the cases when you don’t want to wait a lot of time to collect those 1,000 handshakes and don’t mind carrying out an active attack. It’s possible to speed things up by injecting some JavaScript into the victim’s browser (a-la-BEAST). You’re still up against TLS session caching, though. But TLS has an interesting property, in that it requires TLS sessions to be invalidated whenever an error occurs (e.g., client receives an invalid TLS record). Thus, as a MITM, all you need to do is force an error on established TLS sessions, causing a new full handshake on the subsequent connection. This way you can obtain the required 1,000 TLS handshakes very quickly.
&lt;/p&gt;

&lt;h2&gt;Best attack variant is against vulnerable OpenSSL servers&lt;/h2&gt;

&lt;p&gt;
The best attack variant is against servers that use a vulnerable version of OpenSSL. The recent versions of OpenSSL are not vulnerable because the exploited flaw had been patched (without knowing) in March 2015. But, if the conditions are right, the same SSL v2 flaw can be used for real-time MITM attacks and even against servers that don’t support the RSA key exchange at all.
&lt;/p&gt;

&lt;h2&gt;Obsolete crypto is dangerous&lt;/h2&gt;

&lt;p&gt;
Once again, we realise that obsolete crypto is dangerous. For many years the argument for not disabling SSL v2 was that there was no harm because no browsers used it anyway. We heard the same thing before learning about Logjam, and also before FREAK. This approach is obviously not working. Instead, in the future we must ensure that all obsolete crypto is aggressively removed from all systems. If it’s not, it’s going to come back to bite us, sooner or later.
&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2015/08/bulletproof-maintenance</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2015/08/bulletproof-maintenance.html"/>
    <title>How Bulletproof SSL and TLS is a living book</title>
    <published>2015-08-31T00:00:00+01:00</published>
    <updated>2015-08-31T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;img src=&quot;/images/bulletproof-on-my-desk.jpg&quot;
width=&quot;331&quot; height=&quot;479&quot; align=&quot;right&quot; style=&quot;margin-left: 15px;
margin-down: 10px; border:
1px solid grey&quot;&gt;
I often say that &lt;a
href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;Bulletproof SSL and
TLS&lt;/a&gt; is a living book, but what does
that mean exactly? It&apos;s now been one full year since the initial release, so
what better time to look back to understand the process. It turns out there
is a lot of work producing a living book that covers a turbulent field such
as SSL/TLS and PKI. I&apos;ve broken down the
process into five steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Ongoing maintenance;&lt;/b&gt; I make small updates all the time as I learn new facts
that are of potential interest to my readers. For example: new RFCs being
released or updated, new software releases that other features or change
behaviour. As an illustration, a recent JDK update disabled RC4 by default;
when it came out, I updated my Java chapter to add a reference to the
update.
&lt;/p&gt;
&lt;p&gt;There are other small changes that fall into this category, for example
fixing typos and errors, and rewriting small parts of the text in response
to reader questions. The book should be clear enough so that questions are
not necessary.
&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;b&gt;New content;&lt;/b&gt; I add larger chunks of text as necessary. This usually happens
when there is a significant new discovery, for example a new protocol
vulnerability. For example, POODLE and POODLE TLS, FREAK and Logjam all
happened in the year after the first edition, and they’re now all covered in
the book.
&lt;/p&gt;

&lt;p&gt;
I don’t write about events immediately after they happen, for two reasons.
First, because discoveries usually lead to other discoveries. That’s how
collaborative security research works; an army of researchers starts to look
at a problem and contributes to the body of knowledge. The second reason is
that I prefer to analyse a situation with a clear head and after the dust
settles. Immediately after a discovery, things sometimes seem more exciting
than they really are.
&lt;p&gt;

&lt;p&gt;
My process usually begins with a blog post. To write about something clearly
requires that you understand it very well; writing a blog post therefore
forces me to research the problem in depth. I will then mention the news in
the Bulletproof TLS newsletter, my periodic notification service. For urgent
matters, an email goes out straight away. Finally, within a month or two, I
will have added complete coverage of the discovery to the book.
&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;
&lt;b&gt;Quarterly updates;&lt;/b&gt; My quarterly updates add structure to the maintenance
process. This is where I review the events of the last quarter to make sure
that everything that should be covered is covered. Sometimes, new
discoveries require not only new content, but book-wide changes. The
quarterly update is an opportunity to make the advice in the book
consistent.
&lt;/p&gt;

&lt;p&gt;
At the end of each quarter, my copyeditor, Melinda Rankin, goes through the
new content and improves the language. Because all changes are made with
change-tracking enabled, she knows exactly where the changes are, making it
possible to do copyediting incrementally.
&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;b&gt;Revisions;&lt;/b&gt; After a certain time, I will revise the entire book. What this
means is that I read every single page and ensure that the text is fresh
enough for a fresh printing. This process catches a lot of small things that
slipped through, and generally rejuvenates the book. Then we follow with
another copyediting phase, and then an additional proofreading cycle.
&lt;/p&gt;

&lt;p&gt;
At the end of a revision, the book is brand new. Because we use print on
demand, we release new files to our printer, after which they start to print
what is essentially a new edition. We don’t make much noise about this
because, even with print on demand, book sellers have a stock that they need
to go through. In other words, we don’t know when exactly they will start
selling the new version of the book.
&lt;/p&gt;

&lt;p&gt;
We released our first full revision of Bulletproof SSL and TLS this month,
which is exactly one year after the first edition came out in August 2014.
The updated version has about 30 more pages, and countless small
improvements
throughout.
&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;
&lt;b&gt;Editions;&lt;/b&gt; Depending on the amount of new content, at some point we will
publish a formal new edition, with a new cover, ISBN number and everything
else. With a living book, determining when a proper new edition should be
made is tricky. You’re adding content all the time, at what point do you
call it a new edition? Having a fresh release date would surely help with
sales. On the other hand, we don’t want those who already have the book to
buy the new edition if there isn’t enough new content in it.
&lt;/p&gt;

&lt;p&gt;
Given that TLS 1.3 is currently being worked on, the likely outcome for
Bulletproof SSL and TLS is that we will publish the second edition after TLS
1.3 is ready and can be used in practice. In the meantime, we’ll just keep
updating the first edition.
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2015/06/introducing-tls-maturity-model</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2015/06/introducing-tls-maturity-model.html"/>
    <title>Introducing TLS Maturity Model</title>
    <published>2015-06-08T00:00:00+01:00</published>
    <updated>2015-06-08T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;As part of my job working on SSL Labs, I spend a lot of time helping others
improve their TLS security, both directly and indirectly–by developing tools
and writing documentation. Over time, I started to notice that deploying TLS
securely is getting more complicated, rather than less. One possibility is
that, with so much attention on TLS and many potential issues to consider,
we&apos;re losing sight of what&apos;s really important.&lt;/p&gt;

&lt;p&gt;That&apos;s why I would like to introduce a TLS Maturity Model, a conceptual
deployment model that describes a journey toward robust TLS security. The
model has five maturity levels.&lt;/p&gt;

&lt;p&gt;At level 1, there is &lt;i&gt;chaos&lt;/i&gt;. Because you don&apos;t have any policies or rules
related to TLS, you&apos;re leaving your security to chance (e.g., vendor
defaults), individuals, and ad-hoc efforts generally. As a result, you don&apos;t
know what you have or what your security will be. Even if your existing
sites have good security, you can&apos;t guarantee that your new projects will do
equally well. Everyone starts at this level.&lt;/p&gt;

&lt;p&gt;Level 2, &lt;i&gt;configuration&lt;/i&gt;, concerns itself only with the security of the TLS
protocol, ignoring higher protocols. This is the level that we spend most
time talking about, but it&apos;s usually the easiest one to achieve. With modern
systems, it&apos;s largely a matter of server reconfiguration. Older systems
might require an upgrade, or, as a last resort, a more secure proxy
installed in front of them.&lt;/p&gt;

&lt;p&gt;Level 3, &lt;i&gt;application security&lt;/i&gt;, is about securing those higher application
protocols, avoiding issues that might otherwise compromise the encryption.
If we&apos;re talking about web sites, this level requires avoiding mixing
plaintext and encrypted areas in the same application, or within the same
page. In other words, the entire application surface must be encrypted.
Also, all application cookies must be secure and checked for integrity as
they arrive in order to defend against cookie injection attacks.&lt;/p&gt;

&lt;p&gt;Level 4, &lt;i&gt;commitment&lt;/i&gt;, is about long-term commitment to encryption. For web
sites, you achieve this level by activating HTTP Strict Transport Security
(HSTS), which is a relatively new standard supported by modern browsers (IE
support coming in Windows 10). HSTS enforces a stricter TLS security model
and, as a result, defeats SSL stripping attacks and attacks that rely on
users clicking-through certificate warnings.&lt;/p&gt;

&lt;p&gt;Finally, at level 5, &lt;i&gt;robust security&lt;/i&gt;, you&apos;re carving out your own private
sliver of the PKI cloud to insulate yourself from the PKI&apos;s biggest
weakness, which is the fact that any CA can issue a certificate for any web
site without the owner&apos;s permission. You do this by deploying public key
pinning. In one approach, you restrict which CAs can issue certificates for
your web sites. Or, in a more secure case, you effectively approve each
certificate individually.&lt;/p&gt;

&lt;p&gt;The conceptual simplicity of the TLS Maturity Model enables us to easily
understand where we are and what we need to do to improve. As a result, we
can focus our attention on what really matters. Although level 5 provides
best security, it involves most work and addresses risks that don&apos;t exist
for most sites. Level 4 is arguably the minimum level that can be called
secure, and the level that most organisations should be aiming for.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2015/05/ssl-labs-increased-penalty-no-tls12</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2015/05/ssl-labs-increased-penalty-no-tls12.html"/>
    <title>SSL Labs: Increased penalty when TLS 1.2 is not supported</title>
    <published>2015-05-22T00:00:00+01:00</published>
    <updated>2015-05-22T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Earlier this week we released SSL Labs 1.17.10, whose main purpose
was to increase the penalty when RC4 is used with modern protocols (i.e.,
TLS 1.1 and TLS 1.2). We had &lt;a
href=&quot;/2015/04/ssl-labs-rc4-deprecaton-plan.html&quot;
_jive_internal=&quot;true&quot;&gt;announced this change some time ago&lt;/a&gt;, and then put
in place on &lt;a
href=&quot;/2015/05/ssl-labs-1-17-rc4-obsolete-crypto-logjam.html&quot;
_jive_internal=&quot;true&quot;&gt;May 20&lt;/a&gt;. The same release introduced another
change, which was to increase the penalty for servers that don&apos;t support TLS
1.2 from B to C. And it seems that this second change is being somewhat
controversial, with many asking us to better explain why we did that.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Although what initially prompted us to think about changing the grading
for not supporting TLS 1.2 was grade harmonisation (ensuring that a wide
range of servers all get grades that make sense -- in other words, to have
better-configured servers have better grades), that doesn&apos;t change the fact
that the reality is that TLS 1.0 is an obsolete security protocol. TLS 1.0
came out in 1999, followed by TLS 1.1 in 2003 and TLS 1.2 in 2008. These new
protocol versions were released for a reason -- to address security issues
with earlier protocol versions. But, despite being obsolete, TLS 1.0
continues to be the best supported protocol version on many servers. It&apos;s
not very bad, mind you -- we know from &lt;a
href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot;&gt;SSL Pulse that about
60% of servers already support TLS 1.2&lt;/a&gt;. Client-side, the situation is
probably better, because modern browsers have supported TLS 1.2 since 2013.
You could say that, overall server configuration is the weaker link.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;In that light, we feel that the increase of the penalty for the lack of
TLS 1.2 is the natural next step in the deprecation of TLS 1.0. In fact, SSL
Labs is probably late in doing that. Just last month, the PCI Security
Council deprecated SSL v3 and TLS 1.0 for commercial transactions. No new
systems are allowed to use TLS 1.0 for credit card processing and existing
systems must immediately begin to transition to better protocols. In
comparison, the SSL Labs change of grading is only a mild nudge in the right
direction. And, while some people are not happy that we&apos;re pushing for TLS
1.2, &lt;a href=&quot;https://news.ycombinator.com/item?id=9544728&quot;&gt;others are
complaining that we&apos;re not doing enough&lt;/a&gt;. For example, the Chrome browser
has been warning about lack of TLS 1.2 and authenticated (GCM) suites for
some time now. Clearly, it&apos;s difficult to make everyone happy.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The bottom line is that TLS 1.0 is insecure and we must migrate away from
it. In 2011, there came the BEAST attack, and, in 2013, the &lt;a
href=&quot;http://www.isg.rhul.ac.uk/tls/Lucky13.html&quot;&gt;Lucky 13 attack&lt;/a&gt;. TLS
1.0 remains vulnerable to this problems, but TLS 1.2 (with authenticated
suites) isn&apos;t. These attacks are serious and some organisations continue to
use RC4 in combination with TLS 1.0 just to be sure that they are mitigated.
We understand that many organisations face significant challenges adding
support TLS 1.2, but that is unavoidable. In computer technology, and in
security in particular, it is often necessary to keep running just to stay
in place.&lt;/p&gt;
&lt;p&gt;We did get one thing wrong, however -- we didn&apos;t communicate our grading
changes in advance. It was not our intention to surprise anyone. In fact,
we&apos;d prefer much more if changes were smoother. To that end, in the future
we&apos;ll be announcing all grading changes with at least one month notice, and
hopefully more for some more significant changes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update (3 June 2015)&lt;/strong&gt;: Notification of SSL Labs grading
changes (including signups to get notifications by email) is now available
at &lt;a href=&quot;https://community.qualys.com/community/ssllabs/notifications&quot;&gt;SSL
Labs Notifications&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2015/05/ssl-labs-1-17-rc4-obsolete-crypto-logjam</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2015/05/ssl-labs-1-17-rc4-obsolete-crypto-logjam.html"/>
    <title>SSL Labs 1.17: RC4, Obsolete Crypto, and Logjam</title>
    <published>2015-05-21T00:00:00+01:00</published>
    <updated>2015-05-21T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Yesterday we released SSL Labs
1.17.10, whose main goal was to introduce grading adjustments we &lt;a
href=&quot;/2015/04/ssl-labs-rc4-deprecaton-plan.html&quot;&gt;had
talked about a month ago&lt;/a&gt;. We delivered the
planned changes as well as a few additional tweaks. Our release coincided
with an announcement of a new attack against TLS, called Logjam, and we had
some time to work on that, too.&lt;/p&gt;

&lt;h2&gt;RC4&lt;/h2&gt;

&lt;p&gt;As discussed last month, starting with
this version &lt;strong&gt;we are increasing our penalty for using RC4 with modern
TLS versions&lt;/strong&gt;, namely TLS 1.1 and better. Sites that do that are now
capped at C. Sites that use RC4 only with older clients will be capped at B.
Sites that do not use RC4 will get an A, assuming absence of other
problems.&lt;/p&gt;

&lt;h2&gt;No TLS 1.2 Support&lt;/h2&gt;

&lt;p&gt;It is important for servers to support
modern protocols in order to take advantage of the best security features
present in modern clients. To emphasise this, &lt;strong&gt;sites that don&apos;t
support TLS 1.2 are now capped at C&lt;/strong&gt; (was B previously).&lt;/p&gt;

&lt;h2&gt;Logjam&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://weakdh.org/&quot;&gt;Logjam&lt;/a&gt;,
the new attack on weak Diffie-Hellman (DH) parameters is yet another
reminder that supporting obsolete cryptography is never a good idea. Even
though TLS provides a negotiation mechanism that should in theory enable
modern clients to communicate using only strong security, in practice there
are ways to abuse either the clients or the protocol and perform downgrade
attacks.&lt;/p&gt;

&lt;p&gt;Diffie-Hellman key exchange strength is a
relatively obscure aspect of TLS protocol configuration. Until recently,
most web servers didn&apos;t even have an ability to tune this setting, and some
servers don&apos;t even today. That wouldn&apos;t be a problem, except that most
servers default to insecure values. SSL Labs started highlighting servers
with weak DH parameters some years ago in an effort to raise awareness of
this issue.&lt;/p&gt;

&lt;p&gt;Logjam affects only incorrectly configured SSL/TLS servers. Those who have followed best
practices (e.g., &lt;a href=&quot;https://www.ssllabs.com/projects/best-practices/&quot;&gt;SSL/TLS Deployment
Best Practices&lt;/a&gt; from SSL Labs) aren&apos;t using any of the vulnerable
cryptography and need not make any changes to mitigate LogJam. In addition, for performance reasons, well-tuned
sites prefer key exchanges based on Elliptic Curve cryptography, avoiding
problems with DH altogether. In SSL Labs, servers vulnerable to the LogJam
 attacks are graded as F; no changes were made
specifically for this attack.&lt;/p&gt;

&lt;p&gt;That said, we did extend our &lt;a
href=&quot;https://www.ssllabs.com/ssltest/viewMyClient.html&quot;&gt;&lt;strong&gt;SSL/TLS
Client Test&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; to detect when user agents accept
Diffie-Hellman key exchange that has only 512 bits of security.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;Weak DH Parameters&lt;/h2&gt;

&lt;p&gt;Even though for most sites there isn&apos;t an
immediate vulnerability if they&apos;re using 1024-bit DH parameters (state
attacks are not part of most sites&apos; threat model), such parameters are weak
and should be discouraged. We have been warning about weak DH parameters for
a long time; now, with the announcement of Logjam, we feel that it&apos;s a good
time to move one step further. As of yesterday, &lt;strong&gt;sites that continue
to use weak DH parameters are capped at B.&lt;/strong&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2015/04/what-is-new-in-ssl-labs-1-16-x</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2015/04/what-is-new-in-ssl-labs-1-16-x.html"/>
    <title>What's new in SSL Labs 1.16</title>
    <published>2015-04-28T00:00:00+01:00</published>
    <updated>2015-04-28T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Yesterday, we released a new version of SSL Labs. In
this blog post I&apos;d like to quickly go over what was changed: there were a
healthy number of improvements, a few fixes, and a large number of additions
to the API.&lt;/p&gt;

&lt;p&gt;New features and assessment improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added checks for Certificate Transparency in certificate, stapled OCSP
response and TLS extensions&lt;/li&gt;
&lt;li&gt;Stapled OCSP responses are now always checked, with any errors shown in
the UI&lt;/li&gt;
&lt;li&gt;Java 8 simulation takes into account the 2048-bit DH parameter
limit&lt;/li&gt;
&lt;li&gt;Java simulations take into account that Java aborts TLS handshakes if it
sees unrecognized_name TLS warning&lt;/li&gt;
&lt;li&gt;When a strong suite is used with weak or insecure DH parameters, only
the parameters are highlighted (using orange or red, as appropriate). This
should make it easier to understand exactly what is problematic.&lt;/li&gt;
&lt;li&gt;Tests for TLS version intolerance to TLS 1.3+ now use 0x0301 version at
the record layer. This change aligns our testing with the recent similar
change in the TLS 1.3 specification, which aims to minimise intolerance
issues.&lt;/li&gt;
&lt;li&gt;Enabled throttling for assessments submitted via the web site.
Previously, throttling was enabled only for the API, but, unfortunately,
we&apos;re seeing out-of-control scrapers that push our load for no good reason
and use an unfair share of resources. Throttling is now uniformly
implemented, with limits on per IP address-basis. Only new assessment
requests are checked; if your IP address already has too many concurrent
requests, you will be asked to come later. &lt;strong&gt;However, you&apos;re not
actually supposed to see this message unless you&apos;re submitting automated
assessments.&lt;/strong&gt; If you do, please get in touch with us and tell us
your IP address. Perhaps our throttling configuration needs to be
tuned.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other smaller changes and fixes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updated root store to the latest from Mozilla (only one weak 1024-bit
root left!)&lt;/li&gt;
&lt;li&gt;Updated browser simulations: Chrome 42, Firefox 37, IE11, and IEMobile
11&lt;/li&gt;
&lt;li&gt;The terms and conditions now cover the case when our APIs are used by
infrastructure providers (no need to contact us any more!)&lt;/li&gt;
&lt;li&gt;All times are now shown in UTC&lt;/li&gt;
&lt;li&gt;Fixed A+ awarded with 1024-bit DH parameters&lt;/li&gt;
&lt;li&gt;Lots of other smaller changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;API improvements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added EndpointDetails.freak&lt;/li&gt;
&lt;li&gt;New ChainCert fields: notBefore, notAfter, sigAlg,
keyAlg, keySize, keyStrength&lt;/li&gt;
&lt;li&gt;Added Cert.sct&lt;/li&gt;
&lt;li&gt;Added EndpointDetails.hasSct&lt;/li&gt;
&lt;li&gt;Added EndpointDetails.poodle&lt;/li&gt;
&lt;li&gt;New EndpointDetails fields: staplingRevocationStatus and
staplingRevocationErrorMessage&lt;/li&gt;
&lt;li&gt;New Cert fields: crlRevocationStatus and ocspRevocationStatus&lt;/li&gt;
&lt;li&gt;New ChainCert fields: revocationStatus, crlRevocationStatus and ocspRevocationStatus&lt;/li&gt;
&lt;li&gt;Added Endpoint.gradeTrustIgnored&lt;/li&gt;
&lt;li&gt;Field ChainCert.issues is now set to zero if there are no issues.
Previously this field wouldn&apos;t exist in the JSON structure.&lt;/li&gt;
&lt;li&gt;Fixed ChainCert.issues didn&apos;t flag weak (e.g., SHA1) certificates&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2015/04/ssl-labs-rc4-deprecaton-plan</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2015/04/ssl-labs-rc4-deprecaton-plan.html"/>
    <title>SSL Labs RC4 deprecation plan</title>
    <published>2015-04-23T00:00:00+01:00</published>
    <updated>2015-04-23T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
Nobody wants to use RC4. This well known stream cipher would have been
retired long time ago if it weren&apos;t for several critical problems in SSL and
TLS, problems that affect block ciphers only–for example, BEAST, Lucky 13,
and POODLE. So RC4 ended up being the lesser evil.
&lt;/p&gt; 
&lt;p&gt;
 Take BEAST, for example. There are mitigations for it (the so-called 1/n-1
 split) in all major browsers, but there&apos;s also potentially a large number
 of users who are not updating their browsers (or operating systems). For
 POODLE, on the other hand, we don&apos;t have a workaround. Those who can
 disable SSLv3 are lucky, because they don&apos;t have to worry about this
 problem. Anecdotally, there are still many companies that can&apos;t do that.
 Small sites usually don&apos;t have to worry about these problems, but, for
 large companies, the worry is about the long tail of vulnerable clients.
&lt;/p&gt;
&lt;p&gt;  
  So it seems that we have two large groups: in one corner are users with
  modern software. They support TLS 1.2 and modern cipher suites. They are
  safe. In the other corner we have those with old SSL/TLS stacks, who
  support TLS 1.0 at best; some of them might be vulnerable to the BEAST
  attack, and most of them to POODLE as well. At SSL Labs, we want to fully
  deprecate RC4, but we don&apos;t want to penalise those who continue to need
  this cipher to support old clients. After all, there are no publicly-known
  feasible attacks against RC4, but there are such attacks for BEAST and
  POODLE.
&lt;/p&gt;
&lt;p&gt;   
   At the moment, when a server offers RC4, we cap the grade at B, because
   we deem that the server supports an undesirable encryption algorithm.
   Although it might be all right to continue to use RC4 in some cases, it&apos;s
   only fair to give a better grade to those servers that do not use it.
&lt;/p&gt;
&lt;p&gt;    
    In the future, we&apos;re going to start differentiating between servers that
    use RC4 with everyone and those that use it only with older clients. If
    you&apos;re using RC4 only with SSL 3 and TLS 1.0, your grade will continue
    to be capped at B. However, if you&apos;re using RC4 with TLS 1.1 or a better
    protocol, the penalty will be harsher.
&lt;/p&gt;
&lt;p&gt;     
     In order to give time to server operators to act, we will increase the
     penalty in two steps. The first change will be in May, about one month
     from now, when we will start penalising servers that use RC4 with
     modern clients. They will be capped at C (now B). Several months after
     that (tentatively September), we will increase the penalty to F.
&lt;/p&gt;
&lt;p&gt;      
      To sum up:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
      &lt;b&gt;If you want the best grade, don&apos;t use RC4. This is the only
      recommended option.&lt;/b&gt;
&lt;li&gt;      If you feel that you need to continue to use RC4 for older clients,
      you&apos;ll get a B if you properly configure your systems.
&lt;li&gt;      Otherwise, the penalty for using RC4 with modern clients (TLS 1.1+)
      will increase to a C in about one month, and then an F in a couple of
      months after that.
&lt;/ol&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2015/03/openssl-cookbook-second-edition-released</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2015/03/openssl-cookbook-second-edition-released.html"/>
    <title>OpenSSL Cookbook 2nd Edition released</title>
    <published>2015-03-03T00:00:00+00:00</published>
    <updated>2015-03-03T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;img src=&quot;https://www.feistyduck.com/images/openssl-cookbook-cover.png&quot; align=&quot;right&quot;
hspace=&quot;15&quot; vspace=&quot;10&quot; width=&quot;200&quot; height=&quot;246&quot; style=&quot;border: 1px solid grey&quot;&gt;

&lt;p&gt;
Today we’re releasing the second edition of &lt;a
href=&quot;https://www.feistyduck.com/books/openssl-cookbook/&quot;&gt;&lt;i&gt;OpenSSL
Cookbook&lt;/i&gt;&lt;/a&gt;, Feisty Duck&apos;s free OpenSSL book. This edition is a major update, with some improvements to the
existing text and new content added. The new edition has about 95 pages, an
increase of about 35 pages.
&lt;p&gt;

&lt;p&gt;
Here’s a brief overview of what’s new:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New chapter &lt;i&gt;Testing with OpenSSL&lt;/i&gt;, which focuses on secure server
assessment.
&lt;li&gt;New section &lt;i&gt;Recommended Configuration&lt;/i&gt;, which contains a list of
recommended cipher suites. I now prefer to configure OpenSSL by explicitly
listing all the suites I wish to enable.
&lt;li&gt;New section &lt;i&gt;Creating a Private Certification Authority&lt;/i&gt;, which contains a
step-by-step guide to creating and deploying a private CA.
&lt;li&gt;Updated &lt;i&gt;SSL/TLS Deployment Best Practices&lt;/i&gt; to v1.4. Important changes in this
version include SHA1 deprecation and SSL 3 weaknesses (POODLE).
&lt;/ul&gt;

&lt;p&gt;
Another important improvement is that I am switching from updating &lt;i&gt;OpenSSL
Cookbook&lt;/i&gt; once in a while (the previous edition was released in October 2013)
to making small changes as the need arises. There still might be further
editions, but only when and if new content is added.
&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;OpenSSL Cookbook&lt;/i&gt; draws from the content written for my bigger work,
&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;i&gt;Bulletproof SSL and
TLS&lt;/i&gt;&lt;/a&gt;. If you’re looking for a complete guide to the world
of SSL/TLS and Internet PKI, give the bigger book a try.
&lt;/p&gt;

&lt;p&gt;
That said, the main goals of &lt;i&gt;OpenSSL Cookbook&lt;/i&gt; are to be useful, short, and
contain documentation for everything you might want to do with it as a user
(i.e., no programming). If you’re looking for something and you can’t find
it in this book, please get in touch to propose improvements.
&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2015/01/ssl-labs-apis-now-available-beta</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2015/01/ssl-labs-apis-now-available-beta.html"/>
    <title>SSL Labs APIs now available in Beta</title>
    <published>2015-01-22T00:00:00+00:00</published>
    <updated>2015-01-22T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;In the end-of-year post last month, I mentioned that SSL Labs APIs had been
made available for early access. What that meant was that we wanted some
people to have a look at our APIs and play with the open source reference
client, but otherwise didn&apos;t want everyone to come at once. After a period
of testing, we&apos;re ready to move to the next phase. The APIs (as in the
specification, not the implementation) are now considered stable and we&apos;re
committed to supporting them for a long period of time. We&apos;re also happy
with more people looking at the APIs and using them. The APIs are still
running on our development servers and may lack the power of our production
cluster, but are otherwise stable and fully production ready. In the
following weeks we&apos;ll do some more testing, with the goal of moving the APIs
into production by the end of February.
&lt;/p&gt;

&lt;p&gt; 
We see three important use cases for our APIs:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing of your own infrastructure
&lt;li&gt;Integration with CAs and large infrastructure providers (e.g., hosting providers, CDNs, etc).
&lt;li&gt;Integration with non-commercial open source tools
&lt;/ul&gt;

&lt;p&gt;  
We will formulate formal terms and conditions soon. We regret to say, but
  at this time we are not interested in integration of SSL Labs with
  commercial products, or the use of the APIs to build web sites (e.g.,
  report aggregators) or online testing tools.
&lt;/p&gt;

&lt;p&gt;   
All you need to use the APIs is available from our GitHub repository: &lt;a
href=&quot;https://github.com/ssllabs/ssllabs-scan&quot;&gt;https://github.com/ssllabs/ssllabs-scan&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;    
    I hope you&apos;ll find the APIs useful. If you&apos;d like to give us your
    feedback and/or participate in the further development of the APIs and
    the reference client, please join us on the ssllabs-devel mailing list:
    &lt;a href=&quot;https://sourceforge.net/p/ssllabs/mailman/ssllabs-devel/&quot;&gt;https://sourceforge.net/p/ssllabs/mailman/ssllabs-devel/&lt;/a&gt;.
&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/12/ssl-labs-end-of-year-updates</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/12/ssl-labs-end-of-year-updates.html"/>
    <title>SSL Labs end of year 2014 updates</title>
    <published>2014-12-08T00:00:00+00:00</published>
    <updated>2014-12-08T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;From the SSL/TLS perspective, 2014 was quite an eventful year. The best way to describe what we at SSL Labs did is &lt;i&gt;we kept running to stay in the same place&lt;/i&gt;. What I mean by this is that we spent a lot of time reacting to high profile vulnerabilities: &lt;a href=&quot;/2014/04/ssl-labs-test-for-the-heartbleed-attack.html&quot;&gt;Hearbleed&lt;/a&gt;, the &lt;a href=&quot;/2014/06/ssl-pulse-49-percent-vulnerable-to-cve-2014-0224-in-june-2014.html&quot;&gt;ChangeCipherSpec protocol issue in OpenSSL&lt;/a&gt;, POODLE (against &lt;a href=&quot;/2014/10/ssl3-is-dead-killed-by-poodle.html&quot;&gt;SSL 3 in October&lt;/a&gt; and against &lt;a href=&quot;/2014/12/poodle-bites-tls.html&quot;&gt;TLS in December&lt;/a&gt;), and others. Ultimately, this has been a very successful year for us, with millions of assessments carried out.&lt;/p&gt;

&lt;p&gt;We have just deployed what is principally our last update for 2014, bringing several improvements and refinements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We made a series of &lt;b&gt;improvements to our grading criteria&lt;/b&gt;, to keep up with recent discoveries and continue to nudge site operators to improve their configurations:
	&lt;ul&gt;
&lt;li&gt;Servers that support SSL 3 are now capped at B (C if vulnerable to POODLE).
&lt;li&gt;Grade F given to servers that support only SSL 3.
&lt;li&gt;Servers that support RC4 are capped at B.
&lt;li&gt;Incomplete certificate chains capped at B.
&lt;li&gt;A+ servers are now expected to support TLS_FALLBACK_SCSV and have a SHA2 certificate chain.
&lt;/ul&gt;
&lt;li&gt;The &lt;a href=&quot;https://www.ssllabs.com/ssltest/viewMyClient.html&quot;&gt;&lt;b&gt;Client Capabilities test&lt;/b&gt;&lt;/a&gt; has been extended to test client support for all protocol versions, from the first SSL 2 until the most recent TLS 1.2. There have been many improvements to handle various edge cases.
&lt;li&gt;Our &lt;a href=&quot;https://www.ssllabs.com/projects/best-practices/&quot;&gt;&lt;b&gt;SSL/TLS Deployment Best Practices&lt;/b&gt;&lt;/a&gt; guide has been fully updated.
&lt;li&gt;&lt;b&gt;SSL Labs APIs&lt;/b&gt; and our open source client tool for automated bulk testing have become available for &lt;a href=&quot;https://sourceforge.net/p/ssllabs/mailman/message/32987128/&quot;&gt;early access&lt;/a&gt;. We are very excited about our making our APIs publicly available and hope that this will make it easier for system administrators to keep an eye on their systems.
&lt;li&gt;There have been &lt;b&gt;many small improvements throughout&lt;/b&gt;, thanks for the attention to detail of the members of our growing &lt;a href=&quot;https://community.qualys.com/community/ssllabs&quot;&gt;SSL Labs community&lt;/a&gt;.
&lt;/ul&gt;

&lt;p&gt;According to &lt;a href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot;&gt;SSL Pulse&lt;/a&gt;, before these changes we had about 24% secure servers. Now, the latest results (not yet released, but will be soon) show that number drop down to 11%. This shows that others, too, have to “run” in the same way that we do.&lt;/p&gt;

&lt;p&gt;Naturally, we have many plans for 2015, but we’ll talk about them in a couple of weeks. In the meantime, I hope that you will enjoy the SSL Labs updates.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/12/poodle-bites-tls</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/12/poodle-bites-tls.html"/>
    <title>POODLE bites TLS</title>
    <published>2014-12-08T00:00:00+00:00</published>
    <updated>2014-12-08T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;There’s a new SSL/TLS problem being announced today and it’s likely to affect some of the most popular web sites in the world, owing largely to the popularity of F5 load balancers and the fact that these devices are impacted. There are other devices known to be affected, and it’s possible that the same flaw is present in some SSL/TLS stacks. We will learn more in the following days.&lt;/p&gt;

&lt;p&gt;If you want to stop reading here, take these steps: 1) check your web site using the &lt;a href=&quot;https://www.ssllabs.com/ssltest/&quot;&gt;SSL Labs test&lt;/a&gt;; 2) if vulnerable, apply the patch provided by your vendor. As problems go, this one should be easy to fix.&lt;/p&gt;

&lt;p&gt;Today’s announcement is actually about the POODLE attack (&lt;a href=&quot;/2014/10/ssl3-is-dead-killed-by-poodle.html&quot;&gt;disclosed two months ago&lt;/a&gt;, in October) repurposed to attack TLS. If you recall, SSL 3 doesn’t require its padding to be in any particular format (except for the last byte, the length), opening itself to attacks by active network attackers. However, even though TLS is very strict about how its padding is formatted, it turns out that some TLS implementations omit to check the padding structure after decryption. Such implementations are vulnerable to the POODLE attack even with TLS.&lt;/p&gt;

&lt;p&gt;The impact of this problem is similar to that of POODLE, with the attack being slightly easier to execute–no need to downgrade modern clients down to SSL 3 first, TLS 1.2 will do just fine. The main target are browsers, because the attacker must inject malicious JavaScript to initiate the attack. A successful attack will use about 256 requests to uncover one cookie character, or only 4096 requests for a 16-character cookie. This makes the attack quite practical.&lt;/p&gt;

&lt;p&gt;According to our most recent SSL Pulse scan (which hasn’t been published yet), about 10% of the servers are vulnerable to the POODLE attack against TLS.&lt;/p&gt;

&lt;p&gt;For more information, head to some of these web sites:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Adam Langley - &lt;a href=&quot;https://www.imperialviolet.org/2014/12/08/poodleagain.html&quot;&gt;The POODLE Bites Again&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;F5 - &lt;a href=&quot;https://support.f5.com/kb/en-us/solutions/public/15000/800/sol15882.html&quot;&gt;SOL15882: TLS1.x padding vulnerability CVE-2014-8730&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll keep this post up-to-date as new information becomes available.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/10/ssl3-is-dead-killed-by-poodle</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/10/ssl3-is-dead-killed-by-poodle.html"/>
    <title>SSL 3 is dead, killed by the POODLE attack</title>
    <published>2014-10-15T00:00:00+01:00</published>
    <updated>2014-10-15T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;b&gt;Update (8 Dec 2012):&lt;/b&gt; Some TLS implementations are also vulnerable to the POODLE attack. More information in this &lt;a href=&quot;/2014/12/poodle-bites-tls.html&quot;&gt;follow-up blog post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After more than a week of persistent rumours, yesterday (Oct 14) we finally learned about the new SSL 3 vulnerability everyone was afraid of. The so-called &lt;a href=&quot;http://googleonlinesecurity.blogspot.com.au/2014/10/this-poodle-bites-exploiting-ssl-30.html&quot;&gt;POODLE attack&lt;/a&gt; (CVE-2014-3566) is a problem in the CBC encryption scheme as implemented in the SSL 3 protocol. (Other protocols are not vulnerable because this area had been strengthened in TLS 1.0.) Conceptually, the vulnerability is very similar to the 2011 BEAST exploit. In order to successfully exploit POODLE the attacker must be able to inject malicious JavaScript into the victim&apos;s browser and also be able to observe and manipulate encrypted network traffic on the wire. As far as MITM attacks go, this one is complicated, but easier to execute than BEAST because it doesn&apos;t require any special browser plugins. If you care to learn the details, you can find them in the &lt;a href=&quot;https://www.openssl.org/~bodo/ssl-poodle.pdf&quot;&gt;short paper&lt;/a&gt; or in &lt;a href=&quot;https://www.imperialviolet.org/2014/10/14/poodle.html&quot;&gt;Adam Langley&apos;s blog post&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;SSL Labs Changes&lt;/h2&gt;

&lt;p&gt;We made three improvements to the SSL Labs web site to properly test and warn about the POODLE attack: 1) warnings about SSL 3 support and vulnerability to POODLE, 2) test for TLS_FALLBACK_SCSV and 3) new client test that detects support for SSL 3. At this time, a server vulnerable to the POODLE attack will be given a C grade, but we&apos;re likely to change this grading in the near future, after we carefully consider all our options.&lt;/p&gt;

&lt;h2&gt;What Now?&lt;/h2&gt;

&lt;p&gt;POODLE is a protocol-level vulnerability that can&apos;t be easily fixed. Although it might be possible to attempt a BEAST-style mitigation, it seems that browser vendors are not interested in that approach. Adam said Chrome won&apos;t pursue that direction. Firefox said they would &lt;a href=&quot;https://blog.mozilla.org/security/2014/10/14/the-poodle-attack-and-the-end-of-ssl-3-0/&quot;&gt;disable SSL 3 in Firefox 34&lt;/a&gt;. And that&apos;s great news. Traditionally we struggle with letting go of old protocols. Because SSL 3 is not very widely used and POODLE is serious enough, it seems that we&apos;ll be able to retire this old protocol version soon. In fact, some CDNs have &lt;a href=&quot;https://blog.cloudflare.com/sslv3-support-disabled-by-default-due-to-vulnerability/&quot;&gt;already disabled it&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;What You Should do&lt;/h2&gt;

&lt;p&gt;You can look at this problem from two perspectives. As a user, you want to protect yourself from attacks, and the best way to do that is to &lt;strong&gt;disable SSL 3 in your browser&lt;/strong&gt;. (Instructions are easy to find online.) The &lt;a href=&quot;https://dev.ssllabs.com/ssltest/viewMyClient.html&quot;&gt;updated SSL Labs Client Test&lt;/a&gt; will tell you if your change was successful.&lt;/p&gt;

&lt;p&gt;As a web site operator, you should &lt;strong&gt;disable SSL 3 on your servers&lt;/strong&gt; as soon as possible. You need to do this even if you support the most recent TLS version because an active MITM attacker can force browsers to downgrade their connections all the way down to SSL 3, which can then be exploited. In normal operation, SSL 3 shouldn&apos;t needed by the vast majority of sites. Although it&apos;s likely that there&apos;s a long tail of clients that don&apos;t support anything better, Internet Explorer 6 on Windows XP is potentially the biggest user segment that still relies on SSL 3. Options are to guide users to manually enable TLS 1.0 (IE6 supports it, but not by default) or upgrade to other browsers. In the short term, it&apos;s possible to mitigate POODLE by avoiding using CBC suites with SSL 3, but that involves relying on a certain insecure stream cipher whose name no one wants to mention. I don&apos;t recommend this approach.&lt;/p&gt;

&lt;p&gt;POODLE wouldn&apos;t be as serious without the ability of the active network attacker to downgrade modern browsers down to SSL 3. There&apos;s a solution to this problem, via the &lt;a href=&quot;https://datatracker.ietf.org/doc/draft-ietf-tls-downgrade-scsv/&quot;&gt;TLS_FALLBACK_SCSV indicator&lt;/a&gt; that must be supported by clients and servers in order to be effective. Google implemented this feature in February (in Chrome and in their web sites) and has been successfully using since. Mozilla says &lt;a href=&quot;https://blog.mozilla.org/security/2014/10/14/the-poodle-attack-and-the-end-of-ssl-3-0/&quot;&gt;Firefox will support the indicator in early 2015&lt;/a&gt;. A new version of OpenSSL has &lt;a href=&quot;https://www.openssl.org/news/secadv_20141015.txt&quot;&gt;just been released&lt;/a&gt;, which includes support for the SCSV. The support might be backported to various Linux distributions. For best results, support also needs to be added to other major browsers. Once that happens, the POODLE attack surface will be much smaller; it will affect only the users with older browsers.&lt;/p&gt;

&lt;p&gt;For detailed guidance on how to disable SSL 3 in various servers and browsers, head to &lt;a href=&quot;https://scotthelme.co.uk/sslv3-goes-to-the-dogs-poodle-kills-off-protocol/&quot;&gt;Scott Helme&apos;s blog post&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/09/sha1-deprecation-what-you-need-to-know</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/09/sha1-deprecation-what-you-need-to-know.html"/>
    <title>SHA1 deprecation: what you need to know</title>
    <published>2014-09-09T00:00:00+01:00</published>
    <updated>2014-09-09T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;The news is that SHA1, a very popular hashing function, is on the way out. Strictly speaking, this development is not new. The first signs of weaknesses in SHA1 appeared &lt;a href=&quot;https://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html&quot;&gt;(almost) ten years ago&lt;/a&gt;. In 2012, some calculations showed how &lt;a href=&quot;https://www.schneier.com/blog/archives/2012/10/when_will_we_se.html&quot;&gt;breaking SHA1 is becoming feasible&lt;/a&gt; for those who can afford it. In November 2013, Microsoft announced that they wouldn&apos;t be accepting SHA1 certificates &lt;i&gt;after&lt;/i&gt;
2016.&lt;/p&gt;

&lt;p&gt;However, we&apos;re in a bit of a panic now because &lt;a href=&quot;http://googleonlinesecurity.blogspot.co.uk/2014/09/gradually-sunsetting-sha-1.html&quot;&gt;Google followed
up to say&lt;/a&gt; that they will soon start penalising sites that use SHA1 certificates that expire &lt;i&gt;during&lt;/i&gt; 2016 and after. This is a major policy change that requires immediate action&amp;#x2014;according to SSL Pulse, only &lt;a href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot;&gt;15% sites use SHA256 certificates in September 2014&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;What you should do&lt;/h2&gt;

&lt;p&gt;Before this most recent development, the advice was very simple: don&apos;t use SHA1 certificates past 2016. Google&apos;s decision complicates things: now it&apos;s no longer safe to use SHA1 (with Google Chrome) even during 2016. For some sites there won&apos;t be a satisfactory outcome no matter what they do: if they want to maintain an error-free presence with Chrome they might need to cut off some older clients. I&apos;ll detail these problems later in this post.&lt;/p&gt;

&lt;p&gt;Here&apos;s what I recommend:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;&lt;p&gt;&lt;b&gt;Read the recent &lt;a
	href=&quot;http://googleonlinesecurity.blogspot.co.uk/2014/09/gradually-sunsetting-sha-1.html&quot;&gt;announcement from
	Google&lt;/a&gt;&lt;/b&gt; to understand how the changes will be introduced. Within months, certificates that expire after 2016 will be affected. Relatively soon thereafter, further changes will be introduced that will impact the certificates that expire during 2016.&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;&lt;p&gt;&lt;b&gt;Ensure new certificate and their chains use SHA256&lt;/b&gt;; this is critical&amp;#x2014;if your new certificates are not guaranteed to be SHA256 then all your other efforts will be pointless. If you get this right, all SHA1 certificates that expire by the end of 2015 will be guaranteed to be ready for 2016 without further effort.&lt;/p&gt;
	
	&lt;/p&gt;It&apos;s also necessary to check that the entire certificate chain is free of SHA1. It&apos;s not common, but there are cases where the leaf uses SHA256 but one of the intermediates uses SHA1. Don&apos;t worry if the root certificate uses SHA1; signatures on roots are not used (and Chrome won&apos;t warn about them).&lt;/p&gt;
	
	&lt;p&gt;Companies that use centralized certificate procurement should find this step straightforward. For others, well, perhaps this is a good opportunity to centralise further certificate issuance.&lt;/li&gt;
	&lt;li&gt;&lt;p&gt;&lt;b&gt;Inventory your existing certificates&lt;/b&gt;; this might be tricky, depending on your environment. Automated scanning is not only easy to do once, but can also be repeated regularly to ensure new SHA1 certificates are not introduced. There are companies that offer products for this; for example one of the &lt;a href=&quot;https://www.qualys.com/enterprises/qualysguard/continuous-monitoring/&quot;&gt;QualysGuard&lt;/a&gt; modules does this automatically after scanning the entire company network.&lt;/p&gt;&lt;/li&gt;
	&lt;li&gt;&lt;p&gt;&lt;b&gt;Replace SHA1 certificates that expire after 2015&lt;/b&gt;; start with those used on your most important sites and those that expire after 2016. Those will be the worst affected by the proposed changes and might stop working in 2017. Then work your way back to replace the remaining certificates. This step is time consuming but shouldn&apos;t involve further direct costs because most CAs will reissue certificates for free. However, there are some special cases you might wish to consider:
		&lt;ul&gt;
			&lt;li&gt;&lt;p&gt;&lt;b&gt;Older server platforms might not be able to support SHA256 certificates.&lt;/b&gt; For example, that&apos;s the case with Windows Server 2003. Thus, upgrading to a SHA256 certificate might require an upgrade or patching of the underlying platform.&lt;/p&gt;&lt;/li&gt;
			&lt;li&gt;&lt;p&gt;&lt;b&gt;Some older clients don&apos;t support SHA256.&lt;/b&gt; Most general-purpose sites can upgrade to SHA256 and expect the users to upgrade, too, but large sites with diverse user bases might want to preserve SHA1 compatibility for as long as possible. In some cases that will be possible with dual-certificate deployment, described below.&lt;/p&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;What older clients don&apos;t support SHA256&lt;/h2&gt;

&lt;p&gt;Many older clients don&apos;t support SHA256, but the real question is which of those are relevant? The answer will vary depending on the site. For detailed information on client capabilities, head to GlobalSign, which maintains a &lt;a href=&quot;https://support.globalsign.com/customer/portal/articles/1499561-sha-256-compatibility&quot;&gt;detailed summary of SHA256 support&lt;/a&gt; for a large number of platforms.
&lt;/p&gt;

&lt;p&gt;On the desktop, Windows XP introduced SHA256 in Service Pack 3. Users running SP2 should be able to &lt;a href=&quot;http://support.microsoft.com/kb/936929&quot;&gt;upgrade to SP3&lt;/a&gt;. Depending on a site&apos;s profile, a significant chunk of the user base might be running XP. This operating system is still very popular in China and there is also strong anecdotal evidence that it remains widely used in some large organizations.&lt;/p&gt;

&lt;p&gt;Among the mobile platforms, Android added SHA256 support in version 2.3. Earlier versions&amp;#x2014;still used in large numbers&amp;#x2014;support only SHA1.&lt;/p&gt;
	
&lt;h2&gt;What if you need to support older clients?&lt;/h2&gt;

&lt;p&gt;Technically, it&apos;s possible to have the best of both worlds by providing SHA256 certificates to modern clients and serve SHA1 to those that can&apos;t do better. Indeed, there&apos;s nothing to say that a site can&apos;t use more than one certificate at the same time. This approach is ideal for transitions such as this one. At this time, a site could use two certificates: ECDSA+SHA256 for modern clients and RSA+SHA1 for older clients.&lt;/p&gt;

&lt;p&gt;Unfortunately, this feature might not be available for your favourite platform. As far as I am aware, Apache is the only major server to support multiple certificates. If you&apos;re running Apache and are willing to play with dual certificate deployment, you&apos;re in luck. As for other platforms, CloudFlare and Yahoo have stated that they will &lt;a href=&quot;https://news.ycombinator.com/item?id=8276801&quot;&gt;add support to Nginx and Apache Traffic server&lt;/a&gt;, respectively.&lt;/p&gt;

&lt;h2&gt;What will SSL Labs do?&lt;/h2&gt;

&lt;p&gt;We are making some changes to our SHA1 reporting, split into two phases. In the short term, we will:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Treat SHA1 signatures as weak and warn about them.&lt;/li&gt;
	&lt;li&gt;Introduce three new warnings:
		&lt;ol&gt;
			&lt;li&gt;To ensure renewal with SHA256 when the current certificate expires, if the server is using SHA1 now and the expiration date is before the end of 2016.&lt;/li&gt;
			&lt;li&gt;To renew with SHA256 as soon as possible, if the server is using SHA1 now and the certificate expires after 2016.&lt;/li&gt;
			&lt;li&gt;To renew certificate or fix the chain if the leaf is SHA256 but one of the intermediates is SHA1.&lt;/li&gt;
		&lt;/ol&gt;
	&lt;/li&gt;
	&lt;li&gt;Stop awarding A+ to sites that use SHA1 certificates.&lt;/li&gt;
	&lt;li&gt;Link to this advice for more information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strike&gt;These changes have already been implemented and deployed on our &lt;a href=&quot;https://dev.ssllabs.com&quot;&gt;staging
server&lt;/a&gt;. They will be migrated to production in the following
days.&lt;/strike&gt; These changes were deployed to production on 16 September. Our second step,
which will come some time later, will involve a change to our rating criteria to penalize
sites that continue to use SHA1.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/08/bulletproof-ssl-and-tls-on-my-desk</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/08/bulletproof-ssl-and-tls-on-my-desk.html"/>
    <title>Bulletproof SSL and TLS proofs on my desk</title>
    <published>2014-08-12T00:00:00+01:00</published>
    <updated>2014-08-12T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Since the official release of &lt;a
href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;i&gt;Bulletproof SSL and
TLS&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;/2014/08/bulletproof-ssl-and-tls-final-released.html&quot;&gt;last
Tuesday&lt;/a&gt;, we&apos;ve
been busy submitting the book to print and ensuring it comes out just right. As a
result, I now have three proofs sitting on my desk in all their glory! All
the other copies are now on their way to our warehouse, from where they will be
shipped to you.&lt;/p&gt;

&lt;img src=&quot;/images/bulletproof-on-my-desk.jpg&quot; width=&quot;662&quot; heigth=&quot;958&quot;&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/08/bulletproof-ssl-and-tls-final-released</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/08/bulletproof-ssl-and-tls-final-released.html"/>
    <title>Bulletproof SSL and TLS has been released!</title>
    <published>2014-08-05T00:00:00+01:00</published>
    <updated>2014-08-05T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;img src=&quot;/images/bulletproof-cover.png&quot; width=&quot;200&quot; height=&quot;250&quot; align=&quot;right&quot; style=&quot;border: 1px solid grey; margin-left: 20px&quot;&gt;&lt;/a&gt;

&lt;p&gt;It gives me great pleasure to announce that my book, &lt;i&gt;Bulletproof SSL and
TLS&lt;/i&gt;, has now been officially released. Writing it took me more than two years
(I started in May 2012, believe it or not), during which I spent the
equivalent of about 7 months of full time work.&lt;/p&gt;

&lt;p&gt;The end result is about 528 pages of text (in print; 513 in the version
optimised for screen reading) spread across 16 chapters. The book is a
complete package with an introduction to cryptography, SSL, TLS, and PKI,
followed by a complete coverage of the current problems with the
protocols as well as the  entire ecosystem, and a ton of practical advice for
configuration and performance tuning. OpenSSL is well covered with two
chapters, and there&apos;s a chapter for each of Apache, Java and Tomcat, Microsoft
and IIS, and Nginx.&lt;/p&gt;

&lt;p&gt;During July I went through the entire book to update and refresh the
earlier chapters. I extended the OpenSSL chapter with a
section on running private certification authorities. The Apache and Nginx
chapters were extended to include client certificate authentication. Apache
2.4.10 introduced some changes to how it handles SNI and, naturally, I
needed to include that in the book, too. I added Preface to the
beginning and Summary to the end. Finally, I added the index, without which
the print edition wouldn&apos;t be complete.&lt;/p&gt;

&lt;p&gt;If you purchased the early access edition since we had announced it in
February, now is a good time to go back to the &lt;a
href=&quot;https://www.feistyduck.com/library/bulletproof/&quot;&gt;Feisty Duck web
site&lt;/a&gt; and download the final files. (Final for now, that is.) If you purchased the
paper version, your book is currently being printed and will be shipped to
you soon.&lt;/p&gt;

&lt;p&gt;For more information about &lt;i&gt;Bulletproof SSL and TLS&lt;/i&gt;, please visit the Feisty Duck web
site:&lt;/p&gt;

&lt;blockquote&gt;
&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&lt;/a&gt;
&lt;/blockquote&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/06/bulletproof-update-june-crypto-protocol-pki</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/06/bulletproof-update-june-crypto-protocol-pki.html"/>
    <title>Bulletproof SSL and TLS June Update: Cryptography, Protocol, and PKI</title>
    <published>2014-06-24T00:00:00+01:00</published>
    <updated>2014-06-24T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;img src=&quot;/images/bulletproof-cover.png&quot; width=&quot;200&quot; height=&quot;250&quot; align=&quot;right&quot; style=&quot;border: 1px solid grey; margin-left: 20px&quot;&gt;&lt;/a&gt;

&lt;p&gt;I&apos;ve just released the June update of Bulletproof SSL and TLS. This
batch &lt;b&gt;completes the manuscript and brings about 80 new pages across
three chapters&lt;/b&gt;:&lt;/p&gt;

&lt;ul style=&quot;text-align: left&quot;&gt;

&lt;li&gt;&lt;b&gt;Chapter 1, &lt;i&gt;SSL, TLS, and Cryptography&lt;/i&gt;&lt;/b&gt;, begins with a brief
introduction to SSL and TLS and discusses where these secure protocols
fit in the Internet infrastructure. The remainder of this chapter provides
a basic introduction to cryptography and discusses the classic cryptography
threat model.
&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 2, &lt;i&gt;Protocol&lt;/i&gt;&lt;/b&gt;, discusses the TLS protocol in
detail. I cover TLS 1.2, with mentions of differences in earlier
versions where appropriate. An overview of the protocol evolution over the
years is included at the end for your reference.
&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 3, &lt;i&gt;Public-Key Cryptography&lt;/i&gt;&lt;/b&gt;, is an introduction to
Internet PKI, which is the predominant trust model on the
Internet today. The focus is on the standards and organizations, as well as
governance, weaknesses, and possible future improvements.
&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;The manuscript is now complete and has slightly over 500 pages. Previous chapters include:&lt;/p&gt;

&lt;ul style=&quot;text-align: left&quot;&gt;

&lt;li&gt;&lt;b&gt;Chapter 4, &lt;i&gt;Attacks against PKI&lt;/i&gt;&lt;/b&gt;, deals with attacks on
trust. It covers all the major CA compromises as well as some other ways to
subvert TLS authentication on the Internet.

&lt;li&gt;&lt;b&gt;Chapter 5, &lt;i&gt;HTTP and Browser Issues&lt;/i&gt;&lt;/b&gt;, is all about the
relationship between HTTP and SSL, the problems arising from the organic
growth of the Web, and the messy interactions between different pieces of
the web ecosystem.

&lt;li&gt;&lt;b&gt;Chapter 6, &lt;i&gt;Implementation Flaws&lt;/i&gt;&lt;/b&gt;, deals with issues arising
from design and programming mistakes related to random number generation,
certificate validation, and other key TLS and PKI functionality.
Additionally, it discusses voluntary protocol downgrade and truncation
attacks.

&lt;li&gt;&lt;b&gt;Chapter 7, &lt;i&gt;Protocol Attacks&lt;/i&gt;&lt;/b&gt;, is the longest chapter in the
book at 60 pages. It covers all major protocol flaws discovered in recent years: Insecure Renegotiation,
BEAST, CRIME, Lucky 13, RC4, TIME and BREACH, Triple Handshake, and the Bullrun program.

&lt;li&gt;&lt;b&gt;Chapter 8, &lt;i&gt;Deployment&lt;/i&gt;&lt;/b&gt;, is the map for the entire book and
    provides step by step instructions on how to deploy secure and
    well-performing TLS servers and web applications.

&lt;li&gt;&lt;b&gt;Chapter 9, &lt;i&gt;Performance&lt;/i&gt;&lt;/b&gt;, focuses on the speed of TLS, providing more
    detail as well as additional performance improvement techniques for
    those who want to squeeze every bit of speed out of their servers.

&lt;li&gt;&lt;b&gt;Chapter 10, &lt;i&gt;HSTS, CSP, and Pinning&lt;/i&gt;&lt;/b&gt;, covers some advanced topics
    that strengthen web applications, as well as pinning, which is a
    way of reducing the large attack surface imposed by our current PKI
    model.

&lt;li&gt;&lt;b&gt;Chapter 10, &lt;i&gt;OpenSSL Cookbook&lt;/i&gt;&lt;/b&gt;, describes the most frequently used OpenSSL functionality, largely
focusing on installation, configuration, and key and certificate management. This is the most polished chapter,
given that it had been &lt;a
href=&quot;/2013/05/announcing-bulletproof-ssl-tls-and-pki.html&quot;&gt;released as a standalone short book in May
2013&lt;/a&gt;, and then &lt;a href=&quot;/2013/10/openssl-cookbook-v1.1-released.html&quot;&gt;updated in
October&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 11, &lt;i&gt;Testing with OpenSSL&lt;/i&gt;&lt;/b&gt;, continues with OpenSSL and explains how to use its
command-line tools to test server configuration. Even though it is often much easier to use an automated
tool for testing (e.g., the SSL Labs Server Test), OpenSSL remains the de facto standard for troubleshooting.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 12, &lt;i&gt;Configuring Apache&lt;/i&gt;&lt;/b&gt;, discusses the SSL configuration of Apache httpd.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 13, &lt;i&gt;Configuring Java and Tomcat&lt;/i&gt;&lt;/b&gt;, covers the current versions of Java and Tomcat,
and provides full coverage of the SSL/TLS capabilities of Java 7 and 8.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 14, &lt;i&gt;Configuring Microsoft Windows and IIS&lt;/i&gt;&lt;/b&gt;, discusses the Microsoft Windows
platform and the Internet Information Server.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 15, &lt;i&gt;Configuring Nginx&lt;/i&gt;&lt;/b&gt;, discusses the Nginx web server, covering the
features in the stable and development version equally.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;In the next couple of weeks we&apos;ll be working the finishing touches and preparing the book for
printing. After two years of writing, it&apos;s very exciting to be this close to the finish.&lt;/p&gt;

&lt;p&gt;If you already have access to the book, here&apos;s the direct link to access
the new content:&lt;/p&gt;

&lt;blockquote&gt;
&lt;a href=&quot;https://www.feistyduck.com/library/bulletproof/&quot;&gt;https://www.feistyduck.com/library/bulletproof/&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you don&apos;t have the access yet, &lt;b&gt;&lt;i&gt;Bulletproof SSL and TLS&lt;/i&gt; is available now
for early access and preorder, at a 10% discount&lt;/b&gt;:&lt;/p&gt;
     
&lt;blockquote&gt;
&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&lt;/a&gt;
&lt;/blockquote&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/06/ssl-labs-new-grades-for-trust-and-name-mismatch-issues</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/06/ssl-labs-new-grades-for-trust-and-name-mismatch-issues.html"/>
    <title>SSL Labs: New grades for trust (T) and mismatch (M) issues</title>
    <published>2014-06-17T00:00:00+01:00</published>
    <updated>2014-06-17T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;In the 1.10.x code branch of &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL
Labs&lt;/a&gt;, which was deployed to production last week, we
made a change in how we handle assessments with trust issues. Previously,
all certificates that we couldn&apos;t validate (largely because they were
self-signed or issued from a private CA root) were given an F grade. In this
latest version, we introduced two new grades:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Trust issues (T);&lt;/b&gt; If we don&apos;t trust a certificate (and there
aren&apos;t any other security issues), we assign it a T grade (for &quot;trust)&quot;.
This grade is thus used when the server is otherwise well-configured. Just
below the T grade, we note the grade the server would get if the trust
issues were resolved.

&lt;li&gt;&lt;b&gt;Name mismatch issues (M);&lt;/b&gt; In some cases, trust issues come from
name mismatches and usually when a server doesn&apos;t actually use encryption.
Such sites now get an M grade (for &quot;mismatch&quot;).
&lt;/ul&gt;

&lt;p&gt;I expect the introduction of these new grades is going to help our users
better understand what&apos;s really going on.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/06/ssl-pulse-49-percent-vulnerable-to-cve-2014-0224-in-june-2014</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/06/ssl-pulse-49-percent-vulnerable-to-cve-2014-0224-in-june-2014.html"/>
    <title>SSL Pulse: 49% vulnerable to CVE-2014-0224, 14% exploitable</title>
    <published>2014-06-13T00:00:00+01:00</published>
    <updated>2014-06-13T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Last week (on June 5th), OpenSSL published &lt;a
href=&quot;http://www.openssl.org/news/secadv_20140605.txt&quot;&gt;an
advisory&lt;/a&gt; detailing a number of serious problems. The
CVE-2014-0224 vulnerability will be the most problematic for most
deployments because it
can be exploited via an active network (man in the middle) attack.
&lt;/p&gt;

&lt;p&gt;This vulnerability allows an active network attacker to inject
ChangeCipherSpec (CCS) messages to both sides of a connection and force them
to fix their keys before all key material is available. Weak keys are
negotiated as a result. If you&apos;re interested in the details, Adam Langley
published a &lt;a
href=&quot;https://www.imperialviolet.org/2014/06/05/earlyccs.html&quot;&gt;good technical
analysis&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Although virtually all versions of OpenSSL are vulnerable, this problem
is exploitable only if (1) both sides use OpenSSL and (2) the server uses
a vulnerable version of OpenSSL from the 1.0.1 branch.&lt;/p&gt;

&lt;p&gt;The good news is that most browsers don&apos;t rely on OpenSSL, which means
that most browser users won&apos;t be affected. However, Android browsers do use
OpenSSL and are vulnerable to this attack. Additionally, many command-line
and similar programmatic tools use OpenSSL. A particularly interesting
target will be various VPN products, provided they are based on OpenSSL
(like, for example, OpenVPN).&lt;/p&gt;

&lt;p&gt;Over at SSL Labs, we&apos;ve been testing a remote check for CVE-2014-0224
since Friday. Satisfied that the test is identifying vulnerable hosts
correctly, yesterday we ran a scan against the SSL Pulse dataset. The
results are that &lt;b&gt;about 49% servers are vulnerable&lt;/b&gt;. &lt;b&gt;About 14% (of
the total number) are exploitable&lt;/b&gt; because they&apos;re running a newer version of OpenSSL. The rest are
&lt;i&gt;probably&lt;/i&gt; not exploitable, but should be upgraded because it&apos;s
possible that there are other ways to exploit this problem.&lt;/p&gt;

&lt;p align=center&gt;&lt;img width=&quot;542&quot; height=&quot;336&quot; src=/images/ssl-pulse_cve-2014-0224_2014-06.png style=&quot;border: 1px
solid grey&quot;&gt;&lt;/p&gt;

&lt;p&gt;If you&apos;d like to test your servers, the latest version of &lt;a
href=&quot;https://www.ssllabs.com/ssltest/&quot;&gt;SSL
Labs&lt;/a&gt; incorporates a check for CVE-2014-0224.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/05/bulletproof-update-may-deployment-and-performance</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/05/bulletproof-update-may-deployment-and-performance.html"/>
    <title>Bulletproof SSL and TLS May Update: Deployment and Performance</title>
    <published>2014-05-20T00:00:00+01:00</published>
    <updated>2014-05-20T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;img src=&quot;/images/bulletproof-cover.png&quot; width=&quot;200&quot; height=&quot;250&quot; align=&quot;right&quot; style=&quot;border: 1px solid grey; margin-left: 20px&quot;&gt;&lt;/a&gt;

&lt;p&gt;I&apos;ve just released the May update of Bulletproof SSL and TLS. This
batch brings 78 pages and three chapters to the book:&lt;/p&gt;

&lt;ul style=&quot;text-align: left&quot;&gt;
&lt;li&gt;&lt;b&gt;Chapter 8, &lt;i&gt;Deployment&lt;/i&gt;&lt;/b&gt;, is the map for the entire book and
    provides step by step instructions on how to deploy secure and
    well-performing TLS servers and web applications.

&lt;li&gt;&lt;b&gt;Chapter 9, &lt;i&gt;Performance&lt;/i&gt;&lt;/b&gt;, focuses on the speed of TLS, providing more
    detail as well as additional performance improvement techniques for
    those who want to squeeze every bit of speed out of their servers.

&lt;li&gt;&lt;b&gt;Chapter 10, &lt;i&gt;HSTS, CSP, and Pinning&lt;/i&gt;&lt;/b&gt;, covers some advanced topics
    that strengthen web applications, as well as pinning, which is a
    way of reducing the large attack surface imposed by our current PKI
    model.
&lt;/ul&gt;

&lt;p&gt;
In addition, improvements were made to existing chapters:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Chapter 7, &lt;i&gt;Protocol Attacks&lt;/i&gt;,&lt;/b&gt; has been completely revised in
    response to the excellent technical reviews I received.

&lt;li&gt;&lt;b&gt;Heartbleed&lt;/b&gt; is now fully documented, with the main coverage in
    Chapter 6 and detailed testing instructions in Chapter 11.
&lt;/ul&gt;

&lt;p&gt;Overall, book is currently at 420 pages. Previous chapters include:&lt;/p&gt;

&lt;ul style=&quot;text-align: left&quot;&gt;

&lt;li&gt;&lt;b&gt;Chapter 4, &lt;i&gt;Attacks against PKI&lt;/i&gt;,&lt;/b&gt; deals with attacks on
trust. It covers all the major CA compromises as well as some other ways to
subvert TLS authentication on the Internet.

&lt;li&gt;&lt;b&gt;Chapter 5, &lt;i&gt;HTTP and Browser Issues&lt;/i&gt;,&lt;/b&gt; is all about the
relationship between HTTP and SSL, the problems arising from the organic
growth of the Web, and the messy interactions between different pieces of
the web ecosystem.

&lt;li&gt;&lt;b&gt;Chapter 6, &lt;i&gt;Implementation Flaws&lt;/i&gt;,&lt;/b&gt; deals with issues arising
from design and programming mistakes related to random number generation,
certificate validation, and other key TLS and PKI functionality.
Additionally, it discusses voluntary protocol downgrade and truncation
attacks.

&lt;li&gt;&lt;b&gt;Chapter 7, &lt;i&gt;Protocol Attacks&lt;/i&gt;&lt;/b&gt;, is the longest chapter in the
book at 60 pages. It covers all major protocol flaws discovered in recent years: Insecure Renegotiation,
BEAST, CRIME, Lucky 13, RC4, TIME and BREACH, Triple Handshake, and the Bullrun program.

&lt;li&gt;&lt;b&gt;Chapter 10, &lt;i&gt;OpenSSL Cookbook&lt;/i&gt;&lt;/b&gt;, describes the most frequently used OpenSSL functionality, largely
focusing on installation, configuration, and key and certificate management. This is the most polished chapter,
given that it had been &lt;a
href=&quot;/2013/05/announcing-bulletproof-ssl-tls-and-pki.html&quot;&gt;released as a standalone short book in May
2013&lt;/a&gt;, and then &lt;a href=&quot;/2013/10/openssl-cookbook-v1.1-released.html&quot;&gt;updated in
October&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 11, &lt;i&gt;Testing with OpenSSL&lt;/i&gt;&lt;/b&gt;, continues with OpenSSL and explains how to use its command-line tools to test server configuration. Even though it is often much easier to use an automated tool for testing (e.g., the SSL Labs Server Test), OpenSSL remains the de facto standard for troubleshooting.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 12, &lt;i&gt;Configuring Apache&lt;/i&gt;&lt;/b&gt;, discusses the SSL configuration of Apache httpd.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 13, &lt;i&gt;Configuring Java and Tomcat&lt;/i&gt;&lt;/b&gt;, covers the current versions of Java and Tomcat, and gives a glimpse of what&apos;s coming in Java 8. (Java 8 coverage will improve soon after Oracle makes the final release candidate available.)&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 14, &lt;i&gt;Configuring Microsoft Windows and IIS&lt;/i&gt;&lt;/b&gt;, discusses the Microsoft Windows platform and the Internet Information Server.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 15, &lt;i&gt;Configuring Nginx&lt;/i&gt;&lt;/b&gt;, discusses the Nginx web server, covering the features in the stable and development version equally.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;The book is now almost complete. The remaining chapters, which will be
released in the next batch in June, will provide the necessary
background in cryptography, SSL and TLS protocols, and PKI.&lt;/p&gt;

&lt;p&gt;If you already have access to the book, here&apos;s the direct link to access
the new content:&lt;/p&gt;

&lt;blockquote&gt;
&lt;a href=&quot;https://www.feistyduck.com/library/bulletproof/&quot;&gt;https://www.feistyduck.com/library/bulletproof/&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you don&apos;t have access yet, &lt;b&gt;&lt;i&gt;Bulletproof SSL and TLS&lt;/i&gt; is available now
for early access and preorder, at a 20% discount&lt;/b&gt;:&lt;/p&gt;
     
&lt;blockquote&gt;
&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&lt;/a&gt;
&lt;/blockquote&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/04/ssl-labs-test-for-the-heartbleed-attack</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/04/ssl-labs-test-for-the-heartbleed-attack.html"/>
    <title>SSL Labs test for the Heartbleed attack</title>
    <published>2014-04-08T00:00:00+01:00</published>
    <updated>2014-04-08T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;a href=&quot;http://heartbleed.com/&quot;&gt;Heartbleed&lt;/a&gt; is a name for a critical
vulnerability in OpenSSL, a very widely deployed SSL/TLS stack. A coding
error had been made in the OpenSSL 1.0.1 code, which was subsequently
released in March 2012. The vulnerability is in the rarely used heartbeat
mechanism, specified in &lt;a href=&quot;https://tools.ietf.org/html/rfc6520&quot;&gt;RFC
6520&lt;/a&gt;. The error allows an attacker to trick the server into disclosing a
substantial chunk of memory, repeatedly. As you can imagine, process memory
is likely to contain sensitive information, for example server private keys
for encryption. If those are compromised, the security of the server goes
down the drain, too.&lt;/p&gt;
&lt;p&gt;

&lt;p&gt;Your server is probably vulnerable if it&apos;s running any version in the
OpenSSL 1.0.1 branch. If you&apos;d like to verify if you&apos;re vulnerable, today I
released a new version of the &lt;a href=&quot;https://www.ssllabs.com/ssltest/&quot;&gt;SSL
Labs Server Test&lt;/a&gt;. &lt;b&gt;I went through a lot of effort to implement a test
that doesn&apos;t attempt exploitation (no server data is retrieved).&lt;/b&gt;
So it should be safe
to use. Despite the availability of the test, if you can identify the
library version number, I would urge to assume that you are vulnerable, even
if the test is not showing a problem.&lt;/p&gt;

&lt;p&gt;It&apos;s difficult to underestimate the impact of this problem. Although we
can&apos;t conclusively say what exactly can leak in an attack, it&apos;s reasonable
to assume that your private keys have been compromised. Addressing this
issue requires at least three steps: 1) patch, 2) replace the key and
certificate, and 3) revoke the old certificate. After that you will need to
consider if any additional data might have been leaked too, and take steps
to mitigate the leak.&lt;/p&gt;

&lt;p&gt;Unless your server used Forward Secrecy (&lt;a
href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot;&gt;only about 7% do&lt;/a&gt;),
it is also possible that any past traffic could be compromised, but only if
you are faced with a powerful adversary who has means to record and store
encrypted traffic. If you did not before Forward Secrecy before, now is a
great time to ensure you do support it from now on. If this topic is new for
you, you can follow my advice &lt;a
href=&quot;/2013/06/ssl-labs-deploying-forward-secrecy.html&quot;&gt;here&lt;/a&gt; and &lt;a
href=&quot;/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For more details on the nature of this OpenSSL blog, have a look at &lt;a
href=&quot;http://blog.cryptographyengineering.com/2014/04/attack-of-week-openssl-heartbleed.html&quot;&gt;this
post&lt;/a&gt; from Matthew Green.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/04/bulletproof-update-april-attacks</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/04/bulletproof-update-april-attacks.html"/>
    <title>Bulletproof SSL and TLS April Update: Attacks and Weaknesses</title>
    <published>2014-04-08T00:00:00+01:00</published>
    <updated>2014-04-08T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;img src=&quot;/images/bulletproof-cover.png&quot; width=&quot;200&quot; height=&quot;250&quot; align=&quot;right&quot; style=&quot;border: 1px solid grey; margin-left: 20px&quot;&gt;&lt;/a&gt;

&lt;p&gt;
I&apos;ve just released the April update of &lt;a
href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;i&gt;Bulletproof SSL and
TLS&lt;/i&gt;&lt;/a&gt;.
This batch concludes the part of the book that deals with attacks,
vulnerabilities and weaknesses, both in the protocols and the PKI
infrastructure. There&apos;s about 90 new pages, in three chapters:
&lt;/p&gt;

&lt;ul  style=&quot;text-align: left&quot;&gt;

&lt;li&gt;&lt;b&gt;Chapter 4, &lt;i&gt;Attacks against PKI&lt;/i&gt;,&lt;/b&gt; deals with attacks on
trust. It covers all the major CA compromises as well as some other ways to
subvert TLS authentication on the Internet.

&lt;li&gt;&lt;b&gt;Chapter 5, &lt;i&gt;HTTP and Browser Issues&lt;/i&gt;,&lt;/b&gt; is all about the
relationship between HTTP and SSL, the problems arising from the organic
growth of the Web, and the messy interactions between different pieces of
the web ecosystem.

&lt;li&gt;&lt;b&gt;Chapter 6, &lt;i&gt;Implementation Flaws&lt;/i&gt;,&lt;/b&gt; deals with issues arising
from design and programming mistakes related to random number generation,
certificate validation, and other key TLS and PKI functionality.
Additionally, it discusses voluntary protocol downgrade and truncation
attacks.
&lt;/ul&gt;

&lt;p&gt;
In addition, I updated the &lt;i&gt;Protocol Attacks&lt;/i&gt; chapter released last month to
include coverage of the &lt;a href=&quot;https://secure-resumption.com/&quot;&gt;Triple Handshake attack&lt;/a&gt;.
In total, the &lt;b&gt;book is currently at 350 pages&lt;/b&gt;. Previous chapters include:
&lt;/p&gt;

&lt;ul style=&quot;text-align: left&quot;&gt;

&lt;li&gt;&lt;b&gt;Chapter 7, &lt;i&gt;Protocol Attacks&lt;/i&gt;&lt;/b&gt;, is the longest chapter in the
book at 60 pages. It covers all major protocol flaws discovered in recent years: Insecure Renegotiation,
BEAST, CRIME, Lucky 13, RC4, TIME and BREACH, Triple Handshake, and the Bullrun program.

&lt;li&gt;&lt;b&gt;Chapter 10, &lt;i&gt;OpenSSL Cookbook&lt;/i&gt;&lt;/b&gt;, describes the most frequently used OpenSSL functionality, largely
focusing on installation, configuration, and key and certificate management. This is the most polished chapter,
given that it had been &lt;a
href=&quot;/2013/05/announcing-bulletproof-ssl-tls-and-pki.html&quot;&gt;released as a standalone short book in May
2013&lt;/a&gt;, and then &lt;a href=&quot;/2013/10/openssl-cookbook-v1.1-released.html&quot;&gt;updated in
October&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 11, &lt;i&gt;Testing with OpenSSL&lt;/i&gt;&lt;/b&gt;, continues with OpenSSL and explains how to use its command-line tools to test server configuration. Even though it is often much easier to use an automated tool for testing (e.g., the SSL Labs Server Test), OpenSSL remains the de facto standard for troubleshooting.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 12, &lt;i&gt;Configuring Apache&lt;/i&gt;&lt;/b&gt;, discusses the SSL configuration of Apache httpd.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 13, &lt;i&gt;Configuring Java and Tomcat&lt;/i&gt;&lt;/b&gt;, covers the current versions of Java and Tomcat, and gives a glimpse of what&apos;s coming in Java 8. (Java 8 coverage will improve soon after Oracle makes the final release candidate available.)&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 14, &lt;i&gt;Configuring Microsoft Windows and IIS&lt;/i&gt;&lt;/b&gt;, discusses the Microsoft Windows platform and the Internet Information Server.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 15, &lt;i&gt;Configuring Nginx&lt;/i&gt;&lt;/b&gt;, discusses the Nginx web server, covering the features in the stable and development version equally.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Appendix, &lt;i&gt;SSL/TLS Deployment Best Practices&lt;/i&gt;&lt;/b&gt;, serves as a temporary replacement for the yet-to-be-written Chapter
8, &lt;i&gt;Deployment&lt;/i&gt;. It covers the same material and gives the same advice, only in fewer words.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;If you already have access to the book, here&apos;s the direct link to access
the new content:&lt;/p&gt;

&lt;blockquote&gt;
&lt;a href=&quot;https://www.feistyduck.com/library/bulletproof/&quot;&gt;https://www.feistyduck.com/library/bulletproof/&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you don&apos;t have access yet, &lt;b&gt;&lt;i&gt;Bulletproof SSL and TLS&lt;/i&gt; is available now
for early access and preorder, at a 20% discount&lt;/b&gt; (down from 25% last
month):&lt;/p&gt;
     
&lt;blockquote&gt;
&lt;a
href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;I hope you&apos;ll enjoy the new content!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/03/https-mixed-content-still-the-easiest-way-to-break-ssl</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/03/https-mixed-content-still-the-easiest-way-to-break-ssl.html"/>
    <title>HTTPS mixed content: still the easiest way to break SSL</title>
    <published>2014-03-19T00:00:00+00:00</published>
    <updated>2014-03-19T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Mixed content issues arise when web sites deliver their pages over HTTPS, but
allow some of the resources to be delivered in plaintext. The active
network attacker can&apos;t do anything about the encrypted traffic, but messing
with the plaintext can result with attacks ranging from phishing in
the best case to full browser compromise in the worst. A single exposed
script is sufficient: the attacker can hijack the connection
and inject arbitrary attack payloads into it.&lt;/p&gt;

&lt;p&gt;We tend to talk a lot about other aspects of SSL/TLS, but &lt;b&gt;mixed content
is arguably the easiest way to completely mess up your web site
encryption&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;In the very early days of the Web, all mixed content was allowed; web
browsers expected site
operators to think through the consequences of mixing content. That, of course, did not result with great
security. Site
operators did whatever they needed to get their work done and decrease
costs. Only in recent years did browser vendors start to pay attention and
start to restrict mixed content.&lt;/p&gt;

&lt;h2&gt;Mixed content in modern browsers&lt;/h2&gt;

&lt;p&gt;Today, almost all major browsers tend to break mixed content into two categories:
&lt;em&gt;passive&lt;/em&gt; for images, videos, and sound; and &lt;em&gt;active&lt;/em&gt;
for more dangerous resources, such as scripts. They tend to allow passive
mixed content by default, but reject active content. This is clearly a
compromise between breaking the Web and reasonable security.&lt;/p&gt;

&lt;p&gt;Internet Explorer has been the leader in secure mixed content handling. As early
as Internet Explorer 5 (according to &lt;a
href=&quot;http://blogs.msdn.com/b/ie/archive/2011/06/23/internet-explorer-9-security-part-4-protecting-consumers-from-malicious-mixed-content.aspx&quot;&gt;this
post&lt;/a&gt;), they had detection and prevention of insecure
content by default. Chrome &lt;a
href=&quot;http://googleonlinesecurity.blogspot.co.uk/2011/06/trying-to-end-mixed-scripting.html&quot;&gt;started
blocking&lt;/a&gt; by default in 2011, and
&lt;a
href=&quot;https://blog.mozilla.org/tanvi/2013/04/10/mixed-content-blocking-enabled-in-firefox-23/&quot;&gt;Firefox in 2013&lt;/a&gt;.
The default &lt;b&gt;Android browser and Safari, however, still allow all mixed content
without any restrictions&lt;/b&gt; (and with almost non-existent warnings).&lt;/p&gt;

&lt;p&gt;Here are the results of my recent testing of what insecure content is
allowed by default:&lt;/p&gt;

&lt;table width=&quot;725&quot; style=&quot;border: 1px solid grey&quot;&gt;
&lt;tr&gt;
&lt;th&gt;Browser&lt;/th&gt;
&lt;th&gt;Images&lt;/th&gt;
&lt;th&gt;CSS&lt;/th&gt;
&lt;th&gt;Scripts&lt;/th&gt;
&lt;th&gt;XHR&lt;/th&gt;
&lt;th&gt;WebSockets&lt;/th&gt;
&lt;th&gt;Frames&lt;/th&gt;
&lt;tr&gt;
&lt;td&gt;Android browser 4.4.x&lt;/td&gt;
&lt;td&gt;&lt;font color=#F88017&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chrome 33&lt;/td&gt;
&lt;td&gt;&lt;font color=#F88017&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firefox 28&lt;/td&gt;
&lt;td&gt;&lt;font color=#F88017&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internet Explorer 11&lt;/td&gt;
&lt;td&gt;&lt;font color=#F88017&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Safari 7&lt;/td&gt;
&lt;td&gt;&lt;font color=#F88017&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font color=red&gt;Yes&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;They are mostly as expecting, but there&apos;s a surprise with &lt;b&gt;Chrome, which
blocks active page content, but still allows plaintext XMLHttpRequest and
WebSocket connections&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;It&apos;s worth mentioning that the table does not tell us everything. For
example, browsers tend not to control what their plugins do. Further,
certain components (e.g., Flash or Java) are full environments in their
own right, and there&apos;s little browsers can do to enforce security.&lt;/p&gt;

&lt;h2&gt;Testing for mixed content handling in SSL Labs&lt;/h2&gt;

&lt;p&gt;To make it easier to evaluate browser handling of this problem, I recently
extended the &lt;a href=&quot;https://www.ssllabs.com/ssltest/viewMyClient.html&quot;&gt;SSL Labs Client Test&lt;/a&gt;
to probe mixed content handling. When you visit the page, your user browser
is tested, and you will get results similar to these:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.ssllabs.com/ssltest/viewMyClient.html&quot;&gt;&lt;img
src=&quot;/images/ssl-labs-client-test-mixed-content.png&quot; style=&quot;border: 1px solid grey&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Mixed content prevalence&lt;/h2&gt;

&lt;p&gt;Anecdotally, mixed content is very common. At Qualys, we &lt;a
href=&quot;/2011/05/a-study-of-what-really-breaks-ssl.html&quot;&gt;investigated
this problem in 2011&lt;/a&gt;, along with several other application-level issues that
result with full breakage of encryption in web applications. We analysed the
homepages of about 250,000 secure web sites from the Alexa
 top 1 million list, and determined that 22.41% of them used insecure
 content. If images are excluded, the number falls to 18.71%.&lt;/p&gt;
 
&lt;p&gt;A more detailed study of 18,526 sites extracted from Alexa top 100,000 took place in
2013: &lt;em&gt;&lt;a href=&quot;http://www.securitee.org/files/mixedinc_isc2013.pdf&quot;&gt;A Dangerous Mix:
Large-scale analysis of mixed-content websites&lt;/a&gt; (Chen et al.)&lt;/em&gt;. For each site, up to 200
secure pages were analysed, arriving at a total
of 481,656 pages. Their results indicate that up to 43% of web sites have
 mixed content issues.&lt;/p&gt;

&lt;h2&gt;Mitigation&lt;/h2&gt;

&lt;p&gt;The best defence against mixed content issues is simply not having this
type of problem in your code. But that&apos;s easily said than done; there are
many ways in which mixed content can creep up. When that fails, there are
two technologies that can come useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc6797&quot;&gt;HTTP Strict Transport
Security&lt;/a&gt; (HSTS)&lt;/b&gt; is a mechanism that enforces
secure resource retrieval, even in the
face of user mistakes (attempting to access your web site on port 80) and
implementation errors (your developers place an insecure link into a secure
page). HSTS is one of the best thing that happened to TLS recently, but it
works only on the hostnames you control.

&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://www.w3.org/TR/CSP/&quot;&gt;Content Security Policy&lt;/a&gt; (CSP)&lt;/b&gt; can be used to block insecure resource retrieval from
third-party web sites. It also has many other useful features for to address
other application security issues, for example XSS.
&lt;/ul&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/03/ssl-tls-improvements-in-java-8</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/03/ssl-tls-improvements-in-java-8.html"/>
    <title>Significant SSL/TLS improvements in Java 8</title>
    <published>2014-03-11T00:00:00+00:00</published>
    <updated>2014-03-11T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
The next generation of the Java runtime, version 8, is around the corner,
with the first production release planned for this month (March 2014). The
new runtime brings a slew of language improvements and it’s actually proving
to be quite an exciting release.
&lt;/p&gt;

&lt;p&gt;
If you ask me, Java 8 also brings many security improvements that are as important as
the new language features. Of particular interest are the improvements to the
TLS stack, implemented in the Java Secure Socket Extension (JSSE) component.
Why? Because Java 7 and earlier do not
give you enough control over TLS termination (details below). As a result,
it was simply not possible to terminate TLS at the Java level and achieve
sufficient security.
&lt;/p&gt;

&lt;p&gt;
The deficiencies have been addressed in Java 8. Several other key
improvements ensure that Java now provides a very good TLS stack. Many of
the changes will take effect as you change the JRE, even with older
applications. However, for some, we will have to wait (hopefully a short
time) until programs take advantage of the new APIs.
&lt;/p&gt;

&lt;h2&gt;Server Cipher Suite Preference&lt;/h2&gt;

&lt;p&gt;
Java 8 allows TLS servers to decide which is the best suite to use from those
supported by user agents. In earlier versions, the first supported suite is
selected. The old behaviour is a serious problem because you can’t rely on
user agents to do the right thing. For example, without server-side control,
it’s not possible to deploy Forward Secrecy consistently, nor use some old
suites (e.g., RC4 and 3DES) for backup purposes only. For me, the inability to
control cipher suite order was always a showstopper, forcing me to terminate
TLS elsewhere, for example at the Apache level.
&lt;/p&gt;

&lt;p&gt;
To enable server cipher suite preference, use the
&lt;a
href=&quot;http://download.java.net/jdk8/docs/api/javax/net/ssl/SSLParameters.html#setUseCipherSuitesOrder-boolean-&quot;
&gt;SSLParameters.setUseCipherSuiteorder() method&lt;/a&gt;. Because of the API
change, this feature will require application-level
 support. For Tomcat, you can track the progress
&lt;a href=&quot;https://issues.apache.org/bugzilla/show_bug.cgi?id=55988&quot;&gt;here&lt;/a&gt;.

&lt;h2&gt;Strong Server Ephemeral Diffie-Hellman Parameters&lt;/h2&gt;

&lt;p&gt;Java 8 makes it possible to deploy TLS servers with strong ephemeral
Diffie-Hellman parameters. In Java 7, DH parameters are hard-coded to 768
bits (excluding export suites, which use 512 bits, but such suites should
not be used anyhow), and that&apos;s just plain insecure. To preserve security, when
using TLS on Java 7 you must disable all DHE suites. As a result, you lose Forward
Secrecy with some user agents that do not support ECDHE.&lt;/p&gt;

&lt;p&gt;
In Java 8, DHE parameters are set at 1024 bits by default, which is passable
(considering each connection is independently protected), but not great.
However, it’s possible to increase the strength to 2048 bits in
configuration, by using the &lt;code&gt;jdk.tls.ephemeralDHKeySize&lt;/code&gt; system property.&lt;/p&gt;

&lt;h2&gt;Authenticated (GCM) Suites&lt;/h2&gt;

&lt;p&gt;
In the new version, JSSE supports authenticated (AEAD) GCM cipher suites,
which is the best TLS can currently offer. This improvement is not as
significant as the previous two, but ensures you can have best security in
Java’s TLS stack. [&lt;a href=&quot;http://openjdk.java.net/jeps/115&quot;&gt;JEP 115&lt;/a&gt;]
&lt;p&gt;

&lt;h2&gt;Hardware Acceleration on Intel and AMD processors&lt;/h2&gt;

&lt;p&gt;
Starting with Java 8, the Java Runtime Environment (JRE) supports hardware
acceleration of cryptographic operations when running on capable Intel and
AMD processors. [&lt;a href=&quot;http://openjdk.java.net/jeps/164&quot;&gt;JEP 164&lt;/a&gt;]
&lt;/p&gt;

&lt;h2&gt;Server-Side SNI Support&lt;/h2&gt;

&lt;p&gt;Server support for the &lt;em&gt;Server Name Extension&lt;/em&gt; (SNI), which allows for virtual
SSL hosting, is finally available in Java 8. This feature allows hosting of
multiple SSL sites on the same IP address (without having to share
certificates). Virtual SSL hosting should become feasible soon, which means
that this improvement comes at a very good time. (SNI support on the client
side had been introduced in Java 7.) [&lt;a
href=&quot;http://openjdk.java.net/projehttp://openjdk.java.net/jeps/114&quot;&gt;JEP
114&lt;/a&gt;]
&lt;/p&gt;

&lt;h2&gt;Ability to disable client-initiated renegotiation&lt;/h2&gt;

&lt;p&gt;
Client-initiated renegotiation is a TLS protocol feature no one needs, yet
it can sometimes be abused to make &lt;em&gt;Denial of Service&lt;/em&gt; (DoS) easier. I prefer
to disable this feature in order to reduce the attack surface. In Java 8,
there is an undocumented system property
&lt;code&gt;jdk.tls.rejectClientInitiatedRenegotiation&lt;/code&gt; that controls
client-initiated renegotiation.

&lt;h2&gt;TLS 1.2 enabled by default in client mode&lt;/h2&gt;

&lt;p&gt;Java added support for TLS 1.2 in version 7, but had it enabled by default
only when in server mode; clients use TLS 1.0 as their best protocol by
default. This is changing in Java 8, with TLS 1.2 now available without
having to explicitly enable it.&lt;/p&gt;

&lt;h2&gt;Clients support Ephemeral DH over 1024 bits.&lt;/h2&gt;

&lt;p&gt;In Java 8, ephemeral DH parameters are no longer limited to 1024 bits when
in client mode, as is the case in Java 7 and earlier versions.
These days, 1024-bit DH parameters are considered weak and some operators
prefer to increase DH strength to 2048 bits. The limit means that some Java
clients are not able to negotiate any DHE suites with servers that use
stronger parameters. (TLS has a design flaw in that it does not have a way
for clients to advertise their DH capabilities.) This is not a big problem,
given that you can use server-side preference to negotiate (the faster)
ECDHE with Java clients, but it’s still nice to see the limit removed.
Somewhat less positively, the new limit is 2048 bits.
&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;With these changes, Java is again a viable platform for TLS termination. Not
all necessary features are there, however. Notably absent is support for
OCSP stapling, which can be used to give a performance boost to your TLS
sites.&lt;/p&gt;

&lt;p&gt;The other thing to be aware of is that the Java ecosystem has been slow to
support SPDY, possibly because this protocol relies on TLS for bootstrapping
and JSSE des not provide support for the &lt;em&gt;Next Protocol Negotiation&lt;/em&gt; (NPN)
extension. Two significant new protocols are currently being developed
(HTTP/2.0 and TLS 1.3), and it will be interesting to see how quickly Java will
adopt them.
&lt;/p&gt;

&lt;p&gt;
For more information, visit the following links:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a
href=&quot;http://download.java.net/jdk8/docs/technotes/guides/security/jsse/JSSERefGuide.html&quot;&gt;Java
Secure Socket Extension (JSSE) 8 Reference Guide&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://openjdk.java.net/projects/jdk8/features#core/sec&quot;&gt;JDK 8
Security Improvements&lt;/a&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/03/building-your-test-for-apple-tls-auth-bug</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/03/building-your-test-for-apple-tls-auth-bug.html"/>
    <title>How to build your own test for Apple's TLS authentication bug</title>
    <published>2014-03-10T00:00:00+00:00</published>
    <updated>2014-03-10T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;A couple of weeks ago, I added a &lt;a
href=&quot;/2014/02/ssl-labs-test-for-apple-tls-auth-bug.html&quot;&gt;test for Apple&apos;s TLS authentication bug
to SSL Labs&lt;/a&gt;. Some people have asked me how they can do that themselves,
so that they can test for this problem in a private setting (e.g., their
intranet).&lt;/p&gt;

&lt;p&gt;
First, you need to prepare a special version of OpenSSL. I had to
understand the source code a bit to find the exact place, but you can just
apply this &lt;a href=&quot;/downloads/openssl-1.0.1f-apple-auth-bug.patch&quot;&gt;2-line patch&lt;/a&gt;
to OpenSSL 1.0.1f.
&lt;/p&gt;

&lt;p&gt;Any program that relies on this broken OpenSSL version will work only on
the Apple system that suffer from the TLS authentication vulnerability. I
used the latest version of the Apache web server. To do the same, follow my
instructions how to &lt;a
href=&quot;/2013/08/compiling-apache-with-static-openssl.html&quot;&gt;compile Apache with static OpenSSL libraries&lt;/a&gt;.

&lt;p&gt;Finally, the Apache configuration should disable TLS 1.2 as well as all
RSA suites, because they are not affected by this bug:&lt;/p&gt;

&lt;pre&gt;
# Apple&apos;s TLS authentication bug affects only ECDHE
# and DHE suites, and protocols before TLS 1.2.
SSLProtocol -all SSLv3 TLSv1 TLSv1.1
SSLCipherSuite &quot;EECDH EDH !aNULL !eNULL !EXP !MD5&quot;
&lt;/pre&gt;

&lt;p&gt;You should also configure a certificate the client will trust. Only
broken clients will succeed with establishing connections to this web
server. Thus, to complete the installation, you need a web page that
explains the problem and how it can be addressed.&lt;/p&gt;

&lt;p&gt;To make the testing user-friendly, you can place the test on some other
web server, then test using JavaScript. All you need to do is attempt to
retrieve a page from the broken web server: if that works, you know that the
client is vulnerable. I used jQuery for this. Feel free to copy the code
from the &lt;a href=&quot;https://www.ssllabs.com/ssltest/viewMyClient.html&quot;&gt;SSL Labs test&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;
For the cross-site requests to work, you&apos;ll need to further configure the
broken web site to allow access from your test site:
&lt;/p&gt;

&lt;pre&gt;Header set Access-Control-Allow-Origin https://www.ssllabs.com&lt;/pre&gt;

&lt;p&gt;
And it&apos;s best to disable caching, so that the browser has to attempt to
retrieve the file on every test:
&lt;/p&gt;

&lt;pre&gt;
Header set Cache-Control &quot;no-cache, no-store, must-revalidate&quot;
Header set Pragma no-cache
Header set Expires 0&lt;/pre&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/03/bulletproof-update-protocol-attacks</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/03/bulletproof-update-protocol-attacks.html"/>
    <title>Bulletproof SSL and TLS March Update: Protocol Attacks</title>
    <published>2014-03-04T00:00:00+00:00</published>
    <updated>2014-03-04T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;img src=&quot;/images/bulletproof-cover.png&quot; width=&quot;200&quot; height=&quot;250&quot; align=&quot;right&quot; style=&quot;border: 1px solid grey; margin-left: 20px&quot;&gt;&lt;/a&gt;

&lt;p&gt;
I&apos;ve just released the March update of &lt;i&gt;Bulletproof SSL and TLS&lt;/i&gt;.
This batch is focused on protocol attacks. In about 50 pages, I cover
the major problems discovered in recent years. In chronological order,
they are:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Insecure renegotiation (2009)
    &lt;li&gt;BEAST (2011)
    &lt;li&gt;CRIME (2012)
    &lt;li&gt;Lucky 13 (2013)
    &lt;li&gt;RC4 Weaknesses (2013)
    &lt;li&gt;TIME (2013)
    &lt;li&gt;BREACH (2013)
&lt;/ul&gt;

&lt;p&gt;
This has been a fantastically interesting section to write because,
as you&apos;re learning about the attacks, you are also learning about some
finer details of the TLS protocol, and cryptographic engineering in
general. To help with that, I included historical references to the
relevant research papers, so you can track the problems from when they
were first discovered.
&lt;/p&gt;

&lt;p&gt;
At this point, the book is at about 250 pages. The next update will
conclude the &quot;problems&quot; section, covering PKI attacks, implementation
issues in libraries and operating systems, HTTP and browser issues. In
addition, now that the Java 8 final release candidate is available, I
will go through the (existing) Java chapter to document the confirmed
new TLS features.
&lt;/p&gt;

&lt;p&gt;
If you already have access to the book, here&apos;s the direct link to
access the new content:
&lt;/p&gt;

&lt;blockquote&gt;
    &lt;a href=&quot;https://www.feistyduck.com/library/bulletproof/&quot;&gt;https://www.feistyduck.com/library/bulletproof/&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;
If you don&apos;t have access yet, &lt;i&gt;Bulletproof SSL and TLS&lt;/i&gt; is available
now for early access and preorder, at a 25% discount:
&lt;/p&gt;

&lt;blockquote&gt;
    &lt;a
    href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&lt;/a&gt;
&lt;/blockquote&gt;

&lt;hr&gt;

&lt;p&gt;
Yesterday, as I was putting the finishing touches on the today&apos;s
release, a new TLS protocol attack was published:
&lt;/p&gt;

&lt;blockquote&gt;
    &lt;b&gt;Triple Handshakes Considered Harmful:&lt;br&gt;
    Breaking and Fixing Authentication over TLS&lt;/b&gt;&lt;br&gt;
    &lt;a href=&quot;https://secure-resumption.com&quot;&gt;https://secure-resumption.com&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;
This is quite an interesting discovery if you&apos;re care about secure
protocol design, but it&apos;s unlikely that you would be affected by the
flaw. It might be an issue if you&apos;re using client certificates and
support renegotiation. I will provide more information in subsequent
updates.
&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;
Today, GnuTLS is in the news because they announced a serious
vulnerability in the certificate validation code (CVE-2014-0092):
&lt;/p&gt;

&lt;blockquote&gt;
    &lt;a href=&quot;http://www.gnutls.org/security.html#GNUTLS-SA-2014-2&quot;&gt;http://www.gnutls.org/security.html#GNUTLS-SA-2014-2&lt;/a&gt;
&lt;/blockquote&gt;    

&lt;p&gt;
An attacker could use this flaw to impersonate any web site in a man in
the middle attack. Further details are available in this Hacker News
thread:
&lt;/p&gt;

&lt;blockquote&gt;
    &lt;a href=&quot;https://news.ycombinator.com/item?id=7338389&quot;&gt;https://news.ycombinator.com/item?id=7338389&lt;/a&gt;
&lt;/blockquote&gt;

&lt;hr&gt;

&lt;p&gt;
Two weeks ago (on 21 February), we learned that Apple had fixed a
serious TLS connection authentication issue in iOS 6.x and 7.x, but
left OS X users vulnerable. After a lot of pressure from unhappy users,
Apple released 10.9.2 to deal with the vulnerability.
&lt;/p&gt;

&lt;p&gt;
If you using any of the Apple operating systems, I advise that you
upgrade as soon as possible. This problem is very easy to exploit and
leaves no trace. I extended the SSL Labs Client Test to detect the
vulnerability:
&lt;/p&gt;

&lt;blockquote&gt;
    &lt;a
    href=&quot;http://blog.ivanristic.com/2014/02/ssl-labs-test-for-apple-tls-auth-bug.html&quot;&gt;http://blog.ivanristic.com/2014/02/ssl-labs-test-for-apple-tls-auth-bug.html&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;
Interestingly, the same OS X security update enabled the BEAST attack
counter-measures by default in Mountain Lion (OS X 10.8.5).
&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/02/ssl-labs-test-for-apple-tls-auth-bug</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/02/ssl-labs-test-for-apple-tls-auth-bug.html"/>
    <title>SSL Labs: Testing for Apple's TLS authentication bug</title>
    <published>2014-02-24T00:00:00+00:00</published>
    <updated>2014-02-24T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
On Friday, Apple released patches for iOS 6.x and 7.x, addressing a
mysterious bug that affected TLS authentication. Although no further details
were made available, a large-scale bug hunt ensued. &lt;a
href=&quot;https://news.ycombinator.com/item?id=7281378&quot;&gt;This post&lt;/a&gt; on Hacker News
pointed to the problem, and Adam Langley followed up with &lt;a
href=&quot;https://www.imperialviolet.org/2014/02/22/applebug.html&quot;&gt;a complete
analysis&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
I&apos;ve just released an update for the &lt;a
href=&quot;https://www.ssllabs.com/ssltest/viewMyClient.html&quot;&gt;SSL Labs Client Test&lt;/a&gt;, which enables
you to test your user agents for this vulnerability.
&lt;/p&gt;

&lt;p&gt;This bug affects all applications that rely on Apple&apos;s SSL/TLS stack,
which probably means most of them. Applications that carry with them their
own TLS implementations (for example, Chrome and Firefox) are not
vulnerable. For iOS, it&apos;s not clear when the bug had been introduced exactly. For OS X,
it appears that only OS X 10.9 Mavericks is vulnerable.
&lt;/p&gt;

&lt;p&gt;
What you should do:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;iOS 6.x and 7.x:&lt;/b&gt; Patches are available, so you should update your devices immediately.
&lt;li&gt;&lt;b&gt;OS X 10.9.x:&lt;/b&gt; &lt;strike&gt;Apple promised a fix would be available soon. Update as
soon as it is released.&lt;/strike&gt; The vulnerability has been fixed in 10.9.2. Update
immediately.
&lt;/ul&gt;

&lt;p&gt;
&lt;b&gt;Update (10 March 2014):&lt;/b&gt; If you want to build your own test (e.g., to
deploy on your intranet), I have &lt;a
href=&quot;/2014/03/building-your-test-for-apple-tls-auth-bug.html&quot;&gt;published the instructions
here&lt;/a&gt;.
&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/02/checking-ocsp-revocation-using-openssl</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/02/checking-ocsp-revocation-using-openssl.html"/>
    <title>Checking OCSP revocation using OpenSSL</title>
    <published>2014-02-24T00:00:00+00:00</published>
    <updated>2014-02-24T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
If an OCSP responder is malfunctioning, it is often difficult to understand
why exactly. As is usually the case with SSL, the best approach is to use
OpenSSL for troubleshooting. Checking certificate revocation status from the
command line is possible, but not quite straightforward. You need to perform the following
steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Obtain the certificate that you wish to check for revocation.
&lt;li&gt;Obtain the issuing certificate.
&lt;li&gt;Determine the URL of the OCSP responder.
&lt;li&gt;Submit an OCSP request and observe the response.
&lt;/ol&gt;

&lt;p&gt;
For the first two steps, connect to the server with the
&lt;code&gt;-showcerts&lt;/code&gt; switch specified:
&lt;/p&gt;

&lt;pre&gt;$ openssl s_client -connect www.feistyduck.com:443 -showcerts&lt;/pre&gt;

&lt;p&gt;
The first certificate in the output will be the one belonging to the server. If the
certificate chain is properly configured, the second certificate will be that of the issuer.
To confirm, check that the issuer of the first certificate and the subject of the second match.
&lt;/p&gt;

&lt;pre&gt;---
Certificate chain
 0 s:/1.3.6.1.4.1.311.60.2.1.3=GB/businessCategory=Private Organization/serialNumber=06694169/C=GB/ST=London/L=London/O=Feisty Duck Ltd/CN=www.feistyduck.com
   i:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435
-----BEGIN CERTIFICATE-----
MIIF5zCCBM+gAwIBAgIHBG9JXlv9vTANBgkqhkiG9w0BAQUFADCB3DELMAkGA1UE
[30 lines of text removed]
os5LW3PhHz8y9YFep2SV4c7+NrlZISHOZVzN
-----END CERTIFICATE-----
 1 s:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435
   i:/C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority
-----BEGIN CERTIFICATE-----
MIIFBzCCA++gAwIBAgICAgEwDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCVVMx
[...]&lt;/pre&gt;

&lt;p&gt;
If the second certificate isn&apos;t the one, check the rest of the chain; some servers don&apos;t serve
the chain in the correct order. If you can&apos;t find the issuer certificate in the chain, you will
have to find it somewhere else. One way to do that is to look for the &lt;code&gt;Authority Information
Access&lt;/code&gt; extension in the leaf certificate:
&lt;/p&gt;

&lt;pre&gt;$ openssl x509 -in fd.crt -noout -text
[...]
    Authority Information Access:
        OCSP - URI:http://ocsp.starfieldtech.com/
        CA Issuers - URI:http://certificates.starfieldtech.com/repository/sf_intermediate.crt
[...]&lt;/pre&gt;

&lt;p&gt;
If the CA Issuers field is present, it should contain the URL of the issuer certificate. If the issuer
certificate information isn&apos;t available, you can try to open the site in a browser, let it reconstruct
the chain, and download the issuing certificate from its certificate viewer. If all that fails, you can
look for the certificate in your trust store, or visit the CA&apos;s web site.
&lt;/p&gt;
&lt;p&gt;
If you already have the certificates and just need to know the address of the OCSP responder, use the
&lt;code&gt;-ocsp_uri&lt;/code&gt; switch to the &lt;code&gt;x509&lt;/code&gt; command as a shortcut:
&lt;/p&gt;

&lt;pre&gt;$ openssl x509 -in fd.crt -noout -ocsp_uri
http://ocsp.starfieldtech.com/&lt;/pre&gt;

&lt;p&gt;
Now you can submit the OCSP request:
&lt;/p&gt;

&lt;pre&gt;$ openssl ocsp -issuer issuer.crt -cert fd.crt -url http://ocsp.starfieldtech.com/ -CAfile
issuer.crt
WARNING: no nonce in response
Response verify OK
fd.crt: good
        This Update: Feb 18 17:59:10 2013 GMT
        Next Update: Feb 18 23:59:10 2013 GMT
&lt;/pre&gt;
&lt;p&gt;
You want to look for two things in the response. First, that the response itself is valid (&quot;Response verify OK&quot;
in the previous example), and second, what the response said. When you see &quot;good&quot; as status, that means
that the certificate has not been revoked. The status will be &quot;revoked&quot; for revoked certificates.
&lt;/p&gt;
&lt;p&gt;
The warning message complaining about the missing nonce is telling you that OpenSSL
wanted to use a nonce as a protection against replay attacks, but that the server
in question did not reply with one. This generally happens because CAs want to
improve the performance of their OCSP responders. When they disable the nonce
protection (the standard allows it), OCSP responses can be produced once
(usually in batch), then cached and reused for a period of time.
&lt;/p&gt;
&lt;p&gt;
You may encounter OCSP responders that do not respond successfully to the previous
command line. The following may help in such situations:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Do not request a nonce;&lt;/b&gt;
Some servers cannot handle nonce requests, and respond with errors. OpenSSL will
request a nonce by default. To disable nonces, use the
&lt;code&gt;-no_nonce&lt;/code&gt; command line switch.
&lt;li&gt;&lt;b&gt;Supply a Host request header;&lt;/b&gt;
Although most OCSP servers occupy an entire IP address and respond to HTTP requests
no matter the hostname, some don&apos;t. If you encounter an error message that includes
a HTTP error code (e.g., 404), you should try supplying the correct hostname in your
OCSP request. You can do this if you are using OpenSSL 1.0 and better, using the
undocumented &lt;code&gt;-header&lt;/code&gt; switch. 
&lt;/ul&gt;
&lt;p&gt;
With the previous two points in mind, the final command to use is the
following:
&lt;/p&gt;
&lt;pre&gt;
$ openssl ocsp -no_nonce -header Host ocsp.starfieldtech.com -issuer issuer.crt -cert fd.crt -url http://ocsp.starfieldtech.com/ -CAfile issuer.crt
&lt;/pre&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/02/bulletproof-early-access-now-available</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/02/bulletproof-early-access-now-available.html"/>
    <title>Bulletproof SSL and TLS available for early access and preorder</title>
    <published>2014-02-04T00:00:00+00:00</published>
    <updated>2014-02-04T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;img src=&quot;/images/bulletproof-cover.png&quot; width=&quot;200&quot; height=&quot;250&quot; align=&quot;right&quot; style=&quot;border: 1px solid grey; margin-left: 20px&quot;&gt;&lt;/a&gt;
&lt;p&gt;My next book, &lt;i&gt;&lt;a
href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;Bulletproof SSL
and TLS&lt;/a&gt;&lt;/i&gt;, is now available for early access and preorder. I am thrilled to publish my latest work, even if it is not yet finished. Actually, &lt;i&gt;because&lt;/i&gt; it is not yet finished. With early access to the manuscript, you get a chance to read the book straight away, and, perhaps more interestingly, you get to tell me what you&apos;d like to see improved before the book is officially published. I, on the other hand, no longer have to write in isolation. So bring it on!&lt;/p&gt;

&lt;p&gt;
This book is taking me an awfully long time to write. Not only is the topic very complex, but it keeps changing. What was true last month is not necessarily true today. I lost count of how many times I had to go back and update a &quot;finished&quot; section in one chapter or another.&lt;/p&gt;

&lt;p&gt;
By now I&apos;ve completed the largest of 3 book parts—&lt;i&gt;Practical Configuration&lt;/i&gt;. The 6 large chapters in this part, together with the appendix, have &lt;b&gt;about 200 pages&lt;/b&gt;, or (estimated) about &lt;b&gt;60% of the final book&lt;/b&gt;. More importantly, this part is largely self-sufficient: if you have to do any SSL configuration work today, this early release has all you need and covers all the major web platforms.
&lt;/p&gt;
&lt;p&gt;
Here&apos;s what I have so far:
&lt;/p&gt;

&lt;ul style=&quot;text-align: left&quot;&gt;

&lt;li&gt;&lt;b&gt;Chapter 10, &lt;i&gt;OpenSSL Cookbook&lt;/i&gt;&lt;/b&gt;, describes the most frequently used OpenSSL functionality, largely
focusing on installation, configuration, and key and certificate management. This is the most polished chapter,
given that it had been &lt;a
href=&quot;/2013/05/announcing-bulletproof-ssl-tls-and-pki.html&quot;&gt;released as a standalone short book in May
2013&lt;/a&gt;, and then &lt;a href=&quot;/2013/10/openssl-cookbook-v1.1-released.html&quot;&gt;updated in
October&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 11, &lt;i&gt;Testing with OpenSSL&lt;/i&gt;&lt;/b&gt;, continues with OpenSSL and explains how to use its command-line tools to test server configuration. Even though it is often much easier to use an automated tool for testing (e.g., the SSL Labs Server Test), OpenSSL remains the de facto standard for troubleshooting.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 12, &lt;i&gt;Configuring Apache&lt;/i&gt;&lt;/b&gt;, discusses the SSL configuration of Apache httpd.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 13, &lt;i&gt;Configuring Java and Tomcat&lt;/i&gt;&lt;/b&gt;, covers the current versions of Java and Tomcat, and gives a glimpse of what&apos;s coming in Java 8. (Java 8 coverage will improve soon after Oracle makes the final release candidate available.)&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 14, &lt;i&gt;Configuring Microsoft Windows and IIS&lt;/i&gt;&lt;/b&gt;, discusses the Microsoft Windows platform and the Internet Information Server.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Chapter 15, &lt;i&gt;Configuring Nginx&lt;/i&gt;&lt;/b&gt;, discusses the Nginx web server, covering the features in the stable and development version equally.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Appendix, &lt;i&gt;SSL/TLS Deployment Best Practices&lt;/i&gt;&lt;/b&gt;, serves as a temporary replacement for the yet-to-be-written Chapter 6, &lt;i&gt;Deployment&lt;/i&gt;. It covers the same material and gives the same advice, only in fewer words.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;
The remaining chapters will be released as they are ready, at one- or two-week intervals, depending on the chapter. The plan is to complete the manuscript by mid-April, at which point the book will go to copyediting and then production. We are aiming to publish the first edition in June.&lt;/p&gt;

&lt;p&gt;
In terms of quality, the chapters have been through several revisions already. I usually write and then rewrite at least once, often twice. Further, most chapters have been through a technical review, which adds a revision or two. There hasn&apos;t been any copyediting yet. That will come at the end, after the entire manuscript is complete, but before the final production stages begin.
&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2014/01/ssl-labs-stricter-security-requirements-for-2014</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2014/01/ssl-labs-stricter-security-requirements-for-2014.html"/>
    <title>SSL Labs: Stricter security requirements for 2014</title>
    <published>2014-01-21T00:00:00+00:00</published>
    <updated>2014-01-21T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Today, we&apos;re releasing a new version of &lt;a href=&quot;https://www.ssllabs.com/projects/rating-guide/&quot;&gt;SSL Rating Guide&lt;/a&gt; as well as a new version of &lt;a href=&quot;https://www.ssllabs.com/ssltest/&quot;&gt;SSL Test&lt;/a&gt; to go with it. Because the SSL/TLS and PKI ecosystem continues to move at a fast pace, we have to periodically evaluate our rating criteria to keep up.&lt;/p&gt;

&lt;p&gt;We have made the following changes:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;b&gt;Support for TLS 1.2 is now required to get an A.&lt;/b&gt; If this protocol version is not supported, the grade is capped at B. Given that, according to &lt;a href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot;&gt;SSL Pulse&lt;/a&gt;, TLS 1.2 is supported by only about 20% servers, we expect this change to affect a large
	number of assessments.&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;Keys below 2048 bits are now considered weak&lt;/b&gt;, with the grade capped at B.&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;Keys below 1024 bits are now considered insecure&lt;/b&gt;, and given an F.&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;MD5 certificate signatures are now considered insecure&lt;/b&gt;, and given an F.&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;We introduce two new grades, A+ and A-, to allow for finer grading.&lt;/b&gt; This change allows us to reduce the grade slightly, when we don&apos;t want to reduce it to a B, but we still want to show a difference. More interestingly, we can now reward exceptional configurations.&lt;/li&gt;
	&lt;li&gt;We also introduce a concept of warnings; a server with good configuration, but with one ore more warnings, is given a reduced grade A-.&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;Servers that do not support Forward Secrecy with our reference browsers are given a warning.&lt;/b&gt;&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;Servers that do not support secure renegotiation are given a warning.&lt;/b&gt;
	&lt;li&gt;&lt;b&gt;Servers that use RC4 with TLS 1.1 or TLS 1.2 protocols are given a warning.&lt;/b&gt; This approach allows those who are
	still concerned about BEAST to use RC4 with TLS 1.0 and earlier protocols (supported by older clients), but we want them to
	use better ciphers with protocols that are not vulnerable to BEAST. Almost all modern clients now support TLS 1.2.&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;Servers with good configuration, no warnings, and good support for HTTP Strict Transport Security (long &lt;code&gt;max-age&lt;/code&gt; is required), are given an A+.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am very happy that our rating approach now takes into account some very important features, such as TLS 1.2, Forward Secrecy, and HSTS. Frankly, these changes have been overdue. We originally meant to have all of the above in a major update to the rating guide, but we ran out of time, and decided to implement many of the ideas in a patch release.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/10/apple-enabled-beast-mitigations-in-mavericks</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/10/apple-enabled-beast-mitigations-in-mavericks.html"/>
    <title>Apple enabled BEAST mitigations in OS X 10.9 Mavericks</title>
    <published>2013-10-31T00:00:00+00:00</published>
    <updated>2013-10-31T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Last week, on October 22, Apple released OS X 10.9 Mavericks, the latest version of their desktop operating system. This was a very important update, given that Safari now, in version 7, supports TLS 1.2. We are slowly moving toward a world in which TLS 1.2 is widely supported. Still, I wanted more. I was hoping that this OS X release was also going to have &lt;a href=&quot;/2013/09/is-beast-still-a-threat.html&quot;&gt;BEAST mitigations&lt;/a&gt; enabled by default. After all, the code was already a part of the previous OS X release (Mountain Lion) and the compatibility risks are minimal given that all other major browser vendors enabled the 1/n-1 split in early 2012.&lt;/p&gt;

&lt;p&gt;Going through the &lt;a href=&quot;http://support.apple.com/kb/HT6011&quot;&gt;security release notes&lt;/a&gt;, I was excited to see the BEAST attack (CVE-2011-3389) mentioned, but the explanation of the fix was disappointing. It said:&lt;/p&gt;

&lt;blockquote&gt;&lt;i&gt;This issue was addressed by enabling TLS 1.2.&lt;/i&gt;&lt;/blockquote&gt;

&lt;p&gt;The BEAST attack affects only TLS 1.0 and earlier protocols, but client-side support for TLS 1.2 is currently not sufficient as defence because (1) only &lt;a href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot;&gt;about 20% of servers support this protocol version&lt;/a&gt; and (2) all major browsers are susceptible to protocol downgrade attacks, which can be carried out by active MITM attackers.&lt;/p&gt;

&lt;p&gt;There was still hope that the release notes were incomplete and I didn&apos;t want to give up just yet. Given that Apple releases parts of their operating system as open source and that the &lt;a href=&quot;http://www.publicsource.apple.com/release/os-x-109/&quot;&gt;code for 10.9 was already available&lt;/a&gt;, I thought that reading the source code would be a good starting point. And I knew where I should look, because I had previously examined the SSL stack of Mountain Lion.&lt;/p&gt;

&lt;p&gt;Today, I was delighted to see that the code had been changed, and that the default setting had been changed from &lt;i&gt;disabled&lt;/i&gt; to &lt;i&gt;enabled&lt;/i&gt;, meaning that the &lt;b&gt;SSL stack that ships with OS X 10.9 uses BEAST mitigations by default&lt;/b&gt;. To see for yourself, look for the first mention of &lt;code&gt;defaultSplitDefaultValue&lt;/code&gt; in the &lt;a href=&quot;http://opensource.apple.com/source/Security/Security-55471/libsecurity_ssl/lib/sslContext.c&quot;&gt;source code&lt;/a&gt;. It&apos;s near the top of the file.&lt;/p&gt;

&lt;p&gt;Just to be completely sure, I subsequently observed the 1/n-1 split in action using Safari 7 and Wireshark, against a server running TLS 1.0 with only a single CBC suite configured.&lt;/p&gt;

&lt;h2&gt;Enabling mitigations on Mountain Lion&lt;/h2&gt;

&lt;p&gt;If you&apos;re still running the previous OS X version and do not wish to upgrade at this time, you can manually enable the BEAST mitigations by executing the following command:&lt;/p&gt;

&lt;pre style=&quot;font-size: 0.9em&quot;&gt;$ sudo defaults write /Library/Preferences/com.apple.security SSLWriteSplit -integer 2&lt;/pre&gt;

&lt;p&gt;At the very least, you will need to restart Safari; it&apos;s probably best to restart the computer. (Disclaimer: I don&apos;t have a Mountain Lion installation and have not tried this procedure for myself. &lt;b&gt;I did try to disable the mitigation on Mavericks, but without success.&lt;/b&gt;)&lt;/p&gt;

&lt;h2&gt;BEAST has finally been mitigated client-side&lt;/h2&gt;

&lt;p&gt;With this, we can finally conclude that BEAST has been sufficiently mitigated client-side, and move on.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;b&gt;Update (11 Nov 2013):&lt;/b&gt; Even though the source code indicates that the migitation can be controlled, in practice that does not seem to be the case. It is possible that there is a bug in the CoreFoundation framework that prevents the code from reading the settings correctly. Replacing &lt;code&gt;kCFPreferencesAnyHost&lt;/code&gt; with &lt;code&gt;kCFPreferencesCurrentHost&lt;/code&gt; in the &lt;code&gt;CFPreferencesCopyValue()&lt;/code&gt; invocation makes it work, but requires a one-byte patch to the relevant system library. This investigation is the work of Stefan Becker, who also reported the problem to Apple.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/10/ssl-pulse-now-tracking-forward-secrecy-and-rc4</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/10/ssl-pulse-now-tracking-forward-secrecy-and-rc4.html"/>
    <title>SSL Pulse now tracking Forward Secrecy and RC4</title>
    <published>2013-10-09T00:00:00+01:00</published>
    <updated>2013-10-09T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;In October we made several changes to how we produce our monthly &lt;a href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot;&gt;SSL Pulse&lt;/a&gt; reports. They include starting tracking Forward Secrecy and RC4, and &lt;a href=&quot;/2013/09/updated-best-practices-deprecate-rc4.html&quot;&gt;removing the requirement to mitigate BEAST server side&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Forward Secrecy&lt;/h2&gt;

&lt;p&gt;Given the increased importance of &lt;a href=&quot;/2013/06/ssl-labs-deploying-forward-secrecy.html&quot;&gt;Forward Secrecy&lt;/a&gt; (FS) in SSL/TLS server configuration, SSL Pulse now tracks support for it among the servers in our data sample.&lt;/p&gt;

&lt;p&gt;Just before the October SSL Pulse scan began, we made some tweaks to the way we test, moving away from a simple binary test (Yes or No for Forward Secrecy support) to something more granular and more useful. Now, there are several possible outcomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Not supported&lt;/b&gt; - there are no FS suites in the server configuration.
&lt;li&gt;&lt;b&gt;Some FS Suites enabled&lt;/b&gt; - the server negotiates FS with some browsers.
&lt;li&gt;&lt;b&gt;Used with modern browsers&lt;/b&gt; - all modern browsers negotiate a FS suite. This will typically happen with a server that has support for ECDHE suites.
&lt;li&gt;&lt;b&gt;Used with most browsers&lt;/b&gt; - most browsers negotiate a FS suite. This will typically happen with a server that supports ECDHE suites, but falls back to DHE for clients that do not support Elliptic Curve cryptography.
&lt;/ul&gt;

&lt;p&gt;You can see the October results in the following screen capture:&lt;/p&gt;

&lt;center&gt;
&lt;img src=&quot;/images/ssl-pulse-fs-oct2013.png&quot; style=&quot;border: 1px solid #cccccc&quot; width=&quot;314&quot; height=&quot;305&quot;&gt;
&lt;/center&gt;

&lt;p&gt;The results show that a large chunk of the servers (54%) does not use Forward Secrecy with any of the desktop browsers. However, a pretty large chunk (41.8%) does use it with some of the browsers. Only a small number support Forward Secrecy with modern browsers (3.6%), and an even smaller number (0.6%) support robust Forward Secrecy across most browsers.&lt;/p&gt;

&lt;h2&gt;RC4&lt;/h2&gt;

&lt;p&gt;We took this opportunity to also start tracking support for RC4 suites. As you may remember, earlier this year we learned that &lt;a href=&quot;/2013/03/rc4-in-tls-is-broken-now-what.html&quot;&gt;RC4 is much weaker than previously thought&lt;/a&gt;. In SSL Labs we now categorise RC4 support as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Not supported&lt;/b&gt; - no RC4 suites supported.
&lt;li&gt;&lt;b&gt;Some RC4 suites enabled&lt;/b&gt; - server configuration contains RC4 suites, but they might not be actually used. For example, some servers will keep them around to use as a last resort.
&lt;li&gt;&lt;b&gt;Used with modern browsers&lt;/b&gt; - RC4 is used with at least one modern browser. This shows the servers where RC4 is not used as backup.
&lt;/ul&gt;

&lt;p&gt;And the results are as follows:&lt;/p&gt;

&lt;center&gt;
&lt;img src=&quot;/images/ssl-pulse-rc4-oct2013.png&quot; style=&quot;border: 1px solid #cccccc&quot; width=&quot;316&quot; height=&quot;243&quot;&gt;
&lt;/center&gt;

&lt;p&gt;As you can see, the green area is very small; only 7.2% servers do not support RC4. This is not very surprising, as RC4 is one of the most popular ciphers in SSL. Most servers (56.3%) have at least one RC4 suite enabled, but they are not always used. But more than a third of servers (36.5%) actually use RC4 with at least one modern browser. This is the number we need to bring down.&lt;/p&gt;

&lt;h2&gt;BEAST&lt;/h2&gt;

&lt;p&gt;This month we stopped requiring server-side mitigation for the BEAST vulnerability. Even though &lt;a href=&quot;/2013/09/is-beast-still-a-threat.html&quot;&gt;BEAST can still be a problem for some&lt;/a&gt; (see this longer explanation in my earlier blog post), the impending threat of RC4 means that we must give up on BEAST so that we can start phasing RC4 out.&lt;/p&gt;

&lt;p&gt;Given that we are not yet penalizing servers that support RC4, the change in our rating means that there is a much higher number of servers that we consider secure:&lt;/p&gt;

&lt;center&gt;
&lt;img src=&quot;/images/ssl-pulse-secure-oct2013.png&quot; style=&quot;border: 1px solid #cccccc&quot; width=&quot;315&quot; height=&quot;288&quot;&gt;
&lt;/center&gt;

&lt;p&gt;But, with more than 50% of the servers supporting RC4, the number of secure sites will most definitely fall again in the following months.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/10/openssl-cookbook-v1.1-released</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/10/openssl-cookbook-v1.1-released.html"/>
    <title>OpenSSL Cookbook v1.1 released</title>
    <published>2013-10-08T00:00:00+01:00</published>
    <updated>2013-10-08T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://www.feistyduck.com/books/openssl-cookbook/&quot;&gt;&lt;img align=&quot;right&quot; style=&quot;padding-left: 10px&quot; src=&quot;/images/openssl-cookbook-cover-200.png&quot; width=&quot;200&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;i&gt;&lt;a href=&quot;https://www.feistyduck.com/books/openssl-cookbook/&quot;&gt;OpenSSL Cookbook&lt;/a&gt;&lt;/i&gt; is a free ebook based around one chapter of my in-progress book &lt;i&gt;&lt;a
href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;Bulletproof SSL
and TLS&lt;/a&gt;&lt;/i&gt;. The appendix contains the &lt;a href=&quot;https://www.ssllabs.com/projects/best-practices/&quot;&gt;SSL/TLS Deployment Best Practices&lt;/a&gt; document (re-published with permission from &lt;a href=&quot;https://www.qualys.com&quot;&gt;Qualys&lt;/a&gt;). In total, there&apos;s about 50 pages of text that covers the OpenSSL essentials, starting with installation, then key and certificate management, and finally cipher suite configuration.&lt;/p&gt;

&lt;p&gt;The first version of OpenSSL Cookbook was &lt;a href=&quot;/2013/05/announcing-bulletproof-ssl-tls-and-pki.html&quot;&gt;published in May&lt;/a&gt;, but now, five months after that release, I&apos;ve released version 1.1. The changes in this version are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updated &lt;i&gt;SSL/TLS Deployment Best Practices&lt;/i&gt; to v1.3. This version brings several significant changes: 1) RC4 is deprecated, 2) the BEAST attack is considered mitigated server-side, 3) Forward Secrecy has been promoted to its own category. There are many other smaller improvements throughout.
&lt;li&gt;Reworked the cipher suite configuration example to add &lt;a href=&quot;/2013/06/ssl-labs-deploying-forward-secrecy.html&quot;&gt;Forward Security&lt;/a&gt; as a requirement, making the example more useful in practice.
&lt;li&gt;Increased coverage of different key types with a discussion of ECDSA keys. Explained when each type is appropriate.
&lt;li&gt;Added new text to explain how to generate DSA and ECDSA keys.
&lt;li&gt;Explained the challenge password, when generating Certificate Signing Requests.
&lt;li&gt;Marked cipher suite configuration keywords that were introduced only in the OpenSSL 1.x branch. This makes it easier to use the text for reference purposes, if you&apos;re still running the older, OpenSSL 0.9.x, version.
&lt;/ul&gt;

&lt;p&gt;You can get your copy from &lt;a href=&quot;https://www.feistyduck.com/books/openssl-cookbook/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/10/introducing-ssl-client-test</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/10/introducing-ssl-client-test.html"/>
    <title>Introducing the SSL Client Test</title>
    <published>2013-10-02T00:00:00+01:00</published>
    <updated>2013-10-02T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I am delighted to introduce the most recent addition to the SSL Labs web site, the &lt;a href=&quot;https://www.ssllabs.com/ssltest/viewMyClient.html&quot;&gt;SSL Client Test&lt;/a&gt;. For some reason, even though we released &lt;a href=&quot;https://www.ssllabs.com/projects/client-fingerprinting/&quot;&gt;&lt;i&gt;sslhaf&lt;/i&gt;&lt;/a&gt;, our passive client fingerprinting tool, back in 2009, our attention until now remained on server testing only.&lt;/p&gt;

&lt;p&gt;Then, this year, there was a noticeable increase in the interest in computer security and browser capabilities specifically, which led many of our users to ask us to implemented a client test. We already had a page that displayed the capabilities of well known browsers (linked from the &lt;a href=&quot;https://www.ssllabs.com/ssltest/analyze.html?d=www.ssllabs.com&quot;&gt;Handshake Simulator section&lt;/a&gt;); from there, it was really easy to show what your browser can do.&lt;/p&gt;

&lt;p&gt;Behind the scenes we rely on sslhaf to extract the entire raw client handshake request and make it available to our application (implemented in Java). From there, we simply disassemble the available information and present it to the user.&lt;/p&gt;

&lt;p&gt;With the client test, you are now able to see the SSL/TLS capabilities of your preferred browser simply by visiting the test page. And, because the SSL protocol is designed in such a way that clients always tell servers about their capabilities, the best part is that testing does not take much time. In fact, it&apos;s pretty much instantaneous.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/09/updated-best-practices-deprecate-rc4</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/09/updated-best-practices-deprecate-rc4.html"/>
    <title>Updated SSL/TLS Deployment Best Practices deprecates RC4</title>
    <published>2013-09-17T00:00:00+01:00</published>
    <updated>2013-09-17T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;We are releasing an update to our SSL/TLS Deployment Best Practices document, which is our comprehensive guide to running secure servers. This is our third update since the first release in February 2012; our main goal is to keep the document up to date with the threats as they&apos;re evolving.&lt;/p&gt;

&lt;p&gt;Since the beginning of the year we saw three major developments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In March, &lt;a href=&quot;/2013/03/rc4-in-tls-is-broken-now-what.html&quot;&gt;a group of security researchers demonstrated that RC4 is seriously broken&lt;/a&gt;. Although the attack is not yet very practical, we are now recommending that this cipher is phased out. In the previous versions of the guide we had recommended using RC4 to mitigate the BEAST attack server-side. Clearly, this is no longer possible. Although we think that the BEAST attack can still be a threat in some environments, disabling RC4 globally will take a long time and we believe that we need to start that process straight away.&lt;/li&gt;

&lt;li&gt;Last year, we learned about the &lt;a href=&quot;/2012/09/crime-information-leakage-attack-against-ssl-tls.html&quot;&gt;CRIME attack&lt;/a&gt;, which uses information leakage stemming from compression before encryption. This year, CRIME evolved into &lt;a href=&quot;/2013/08/defending-against-the-breach-attack.html&quot;&gt;TIME and BREACH&lt;/a&gt;, two attacks that go beyond attacking TLS compression (which is easy to disable without consequences) to attack the ubiquitous HTTP compression. Because they fall outside SSL/TLS, TIME and BREACH can only be addressed by making changes to application source code. For most, this approach will require a lot of work.&lt;/li&gt;

&lt;li&gt;Finally, this year we also learned some details about widespread surveillance programs worldwide. In particular, it came to light that server &lt;a href=&quot;http://arstechnica.com/security/2013/09/spooks-break-most-internet-crypto-but-how/&quot;&gt;private key compromise&lt;/a&gt; is a commonly used approach to breaking secure communication. For this reason, we now recommend that all secure servers support Forward Secrecy. With this feature enabled, each connection uses separate encryption keys, which means that the encrypted data remains safe if the server private key is compromised.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition to addressing these major threat changes, we took the opportunity to include several incremental updates, for example to recommend that you retire 1024-bit keys, SSL 3, and 3DES. We also included a discussion about new technologies, such as ECDSA keys.&lt;/p&gt;

&lt;p&gt;Download &lt;a href=&quot;https://www.ssllabs.com/projects/best-practices/&quot;&gt;SSL/TLS Deployment Best Practices v1.3&lt;/a&gt; from the SSL Labs web site.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/09/is-beast-still-a-threat</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/09/is-beast-still-a-threat.html"/>
    <title>Is BEAST still a threat?</title>
    <published>2013-09-10T00:00:00+01:00</published>
    <updated>2013-09-10T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Yesterday I changed the &lt;a href=&quot;https://www.ssllabs.com/ssltest/&quot;&gt;SSL Labs&lt;/a&gt; rating criteria to stop penalizing sites that do not implement server-side mitigations for the BEAST attack. That means that we now consider this attack sufficiently mitigated client-side, but, there are still some things you should now.&lt;/p&gt;

&lt;h2&gt;What is BEAST?&lt;/h2&gt;

&lt;p&gt;TLS 1.0 and earlier protocols suffer from a serious flaw: the Initialization Vector (IV) blocks that are used to mask data (plaintext) prior to encryption with a block cipher can be predicted by an active man-in-the-middle (MITM) attacker. IVs are used to prevent encryption from being deterministic; without them, every time you encrypt the same block of data with the same key, you get the same (encrypted) output. This is highly undesirable. A clever attacker who can 1) predict IVs, 2) see what encrypted data looks like, and 3) influence what is encrypted, is then able to make guesses about what plaintext looks like. Technically, he cannot decrypt any data, but he can find out if his guesses are right or wrong. With enough guesses, any amount of data can be uncovered.&lt;/p&gt;

&lt;p&gt;This is a highly condensed explanation of the problem. If you care about the details, I suggest that you start with &lt;a href=&quot;/2011/10/mitigating-the-beast-attack-on-tls.html&quot;&gt;my previous post on this topic&lt;/a&gt;, and follow the links provided there.&lt;/p&gt;

&lt;p&gt;Because guessing is not very efficient, the BEAST attack can in practice used to retrieve only small data fragments. That might not sound very useful, but we do have many highly valuable fragments all over: HTTP session cookies, authentication credentials (many protocols, not just HTTP), URL-based session tokens, and so on. Therefore, BEAST is a serious problem.&lt;/p&gt;

&lt;h2&gt;Mitigation status&lt;/h2&gt;

&lt;p&gt;BEAST is purely a client-side vulnerability. Since it had been released to the public, most major browsers addressed it using a technique called &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=665814#c59&quot;&gt;1/n-1 split&lt;/a&gt;. This technique stops the attacker from predicting IVs and effectively addresses the underlying problem.&lt;/p&gt;

&lt;p&gt;But one platform held back&amp;#8212;Apple&apos;s. We know little about their intentions, because there hasn&apos;t been any official communication on this topic. My understanding is that the 1/n-1 split was incorporated in the Mountain Lion release, but that it is disabled by default. Also, as far as I am aware, the split is not in use on iOS either.&lt;/p&gt;

&lt;p&gt;Without Apple addressing the BEAST attack, there&apos;s a substantial chunk of users that are still potentially vulnerable. For this reason, &lt;a href=&quot;/2013/02/ssl-labs-update-increases-security-requirements.html&quot;&gt;at the beginning of this year&lt;/a&gt;, SSL Labs started penalizing all sites that do not incorporate server-side mitigations against the attack.&lt;/p&gt;

&lt;p&gt;Unfortunately, the only way to mitigate the BEAST attack is to enforce the use of RC4 suites whenever TLS 1.0 and earlier protocols are used (which is most of the time at this point). I say &quot;unfortunately&quot;, because very shortly after we had started requiring server-side mitigations, &lt;a href=&quot;/2013/03/rc4-in-tls-is-broken-now-what.html&quot;&gt;new research about RC4 came out&lt;/a&gt; and we found out that this cipher was &lt;a href=&quot;/2009/08/is-rc4-safe-for-use-in-ssl.html&quot;&gt;much weaker than previously thought&lt;/a&gt;. The weaknesses were not of immediate concern, but it was clear that RC4 was on the way out.&lt;/p&gt;

&lt;p&gt;The situation became uncomfortable because we couldn&apos;t solve both problems, but also because both issues were of roughly the same risk. (Low.) Still, the end result was clear: RC4 affects everyone and cannot be mitigated; BEAST affects only a part of the user base and there isn&apos;t a workable exploitation path for it any more (we hoped). In addition, we knew that attacks against RC4 were going to get better; and that the attack surface vulnerable to BEAST likely to get smaller.&lt;/p&gt;

&lt;h2&gt;Is BEAST still a threat?&lt;/h2&gt;

&lt;p&gt;From this conclusion, the work that remained was to prove that the exploitation path used by BEAST was genuinely closed. We had no reliable information about that, and so I set out to test a bunch of browsers running on various platforms, read source code where available, and attempt to exploit BEAST myself.&lt;/p&gt;

&lt;p&gt;The research required a lot of effort and time, mostly because I did not want just to run the existing exploit; I wanted to fully understand the attack as well as explore other potential attack vectors. Juliano and Thai (BEAST authors) have been very helpful answering my questions about their choices. I had detours, some because of real problems, some because of my mistakes. For a long time I thought BEAST was still exploitable because, to my great surprise, I discovered that the Same-Origin Policy (SOP) bypass that was used for BEAST still existed. Apparently, the fix for that problem was botched. Using this bypass, a MITM can still use a Java applet to instrument a victim&apos;s browser to encrypt arbitrary plaintext and send it to arbitrary hosts.&lt;/p&gt;

&lt;p&gt;Fortunately, there have been many changes to how applets work since BEAST was originally discovered. For example, there are now always warnings before an applet is started. In my testing, the Java plug-in had no ability to access HttpOnly cookies; it couldn&apos;t even send them in a request, or receive any of them back. Most importantly, HTTPS request made by applets are encrypted using Java&apos;s TLS stack, not that of the host browser. Because Java does implement the 1/n-1 split, BEAST cannot be exploited.&lt;/p&gt;

&lt;h2&gt;Epilogue&lt;/h2&gt;

&lt;p&gt;Even though SSL Labs no longer penalizes sites that do not implement server-side BEAST mitigation, the problem remains for as long as we have a major browser without the fix. Although I don&apos;t believe that the problem is exploitable today, there might be other attack vectors we are not aware of. A new feature added to Safari could make it exploitable again tomorrow. Or, someone with more time on their hands could prove me wrong. For this reason, we need a healthy security margin, and we need Safari to implement the 1/n-1 split by default.&lt;/p&gt;

&lt;p&gt;By the way, supporting TLS 1.1 and 1.2 does not actually address BEAST now or in the near future, even though these protocols do not have the predictable IV weakness that&apos;s exploited by the attack. The first problem is that most of the Internet still relies on TLS 1.0. Only about 18% of the servers tracked in &lt;a href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot;&gt;SSL Pulse&lt;/a&gt; support TLS 1.2 today. Thus, even though the next generation of web browsers will all support TLS 1.2, it&apos;s going to take a while until the servers are upgraded.
&lt;/p&gt;

&lt;p&gt;But there is also the second issue, which is that all major browsers are susceptible to protocol downgrade attacks; an active MITM can simulate failure conditions and force all browsers to back off from attempting to negotiate TLS 1.2, making them fall back all the way down to SSL 3. At that point, the predictable IV design is again a problem. Until the protocol downgrade weakness is fixed, newer protocols are going to be useful only against passive attackers, but not against the active ones.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update (31 Oct):&lt;/b&gt; Apple finally enabled BEAST mitigations by default in OS X 10.9 Mavericks. Read more about it in my &lt;a
href=&quot;/2013/10/apple-enabled-beast-mitigations-in-mavericks.html&quot;&gt;follow-up blog post&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/08/increasing-dhe-strength-on-apache</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/08/increasing-dhe-strength-on-apache.html"/>
    <title>Increasing DHE strength on Apache 2.4.x</title>
    <published>2013-08-15T00:00:00+01:00</published>
    <updated>2013-08-15T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;span style=&quot;background-color: #ffffbf&quot;&gt;&lt;b&gt;Update (13 May 2015):&lt;/b&gt; Apache
2.2.30 (not yet released at the time of writing) will also support
configurable DH parameter strength, in the same way Apache 2.4.x does.
&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;background-color: #ffffbf&quot;&gt;&lt;b&gt;Update (26 Nov 2013):&lt;/b&gt; Apache 2.4.7, released today, has been improved
	to automatically select appropriate DH parameters, using the strength of the server key as guidance. Thus, there
is no need to modify the source code any more. The improvements are explained in the &lt;a href=&quot;http://www.apache.org/dist/httpd/CHANGES_2.4.7&quot;&gt;CHANGES&lt;/a&gt; file, and in the
&lt;a href=&quot;http://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatefile&quot;&gt;SSLCertificateFile&lt;/a&gt; documentation.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;background-color: #ffffbf&quot;&gt;&lt;b&gt;Update (18 Oct 2013):&lt;/b&gt; Since I wrote this post, Apache improved
DH parameter handling. The trunk version now automatically selects appropriate DH parameter strength based on the
strength of the private key. The bug report now includes a &lt;a href=&quot;https://issues.apache.org/bugzilla/show_bug.cgi?id=49559#c13&quot;&gt;backport to 2.4.x&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Some users of older versions of the Apache web server, who are trying to
&lt;a href=&quot;/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy.html&quot;&gt;get their Forward Secrecy
configuration just right&lt;/a&gt; usually run into a brick wall when they determine that Apache won&apos;t use
Diffie-Hellman parameters stronger than 1024 bits.

&lt;span style=&quot;color: #aaaaaa&quot;&gt;&lt;strike&gt;This is because Apache leaves the business of DH configuration to OpenSSL, and 1024 bits is just
what you get by default (for the stronger suites; the weaker ones use 512
bits).&lt;/strike&gt;&lt;/span&gt;

&lt;/p&gt;

&lt;p&gt;Other web servers expose configuration options that allow you to increase the DH strength, but Apache does not. But, if you went through the hassle of installing Apache from source code (as I described in &lt;a href=&quot;/2013/08/compiling-apache-with-static-openssl.html&quot;&gt;my previous blog post&lt;/a&gt;), there&apos;s an easy fix for this problem. Apache Software Foundation&apos;s &lt;a href=&quot;https://issues.apache.org/bugzilla/show_bug.cgi?id=49559&quot;&gt;bug #49559&lt;/a&gt; (&quot;Patch to add user-specified Diffie-Hellman parameters&quot;) contains a patch that introduces a new configuration directive,
called &lt;code&gt;SSLDHParametersFile&lt;/code&gt;, that adds the missing functionality to Apache httpd 2.4.x.&lt;/p&gt;

&lt;p&gt;The bug is more than 3 years old, even though the code seems straightforward. The latest version of the patch was made against httpd 2.4.2, just over a year ago. I&apos;ve tested it against httpd 2.4.6, and, with a hiccup, it &lt;a href=&quot;https://www.ssllabs.com/ssltest/analyze.html?d=feistyduck.com&quot;&gt;appears to work as advertised&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The hiccup is that the patch won&apos;t compile as-is; a trivial change is required. If you&apos;re a programmer, you&apos;ll have no problem understanding the error and finding the fix from looking at the rest of the &lt;code&gt;mod_ssl&lt;/code&gt; code. And if you don&apos;t want to do even that, you can &lt;a href=&quot;/downloads/patch-49559-for-2.4.6.diff&quot;&gt;download my version&lt;/a&gt;. (Disclaimer: I just made it compile, but didn&apos;t otherwise read or review the code. Use at your own risk.)&lt;/p&gt;

&lt;p&gt;Assuming the starting point is the pristine source code tree of httpd 2.4.6, apply the patch like this:&lt;/p&gt;

&lt;pre&gt;$ cd httpd-2.4.6
$ patch -p1 &amp;lt; /path/to/patch-49559-for-2.4.6.diff
patching file modules/ssl/mod_ssl.c
patching file modules/ssl/ssl_engine_config.c
Hunk #2 succeeded at 189 (offset 6 lines).
Hunk #3 succeeded at 318 (offset 15 lines).
Hunk #4 succeeded at 801 (offset 36 lines).
patching file modules/ssl/ssl_engine_init.c
Hunk #1 succeeded at 994 (offset 44 lines).
Hunk #2 succeeded at 1192 (offset -1 lines).
Hunk #3 succeeded at 1205 (offset -1 lines).
Hunk #4 succeeded at 1769 (offset 20 lines).
patching file modules/ssl/ssl_engine_pphrase.c
patching file modules/ssl/ssl_private.h
Hunk #2 succeeded at 546 (offset 18 lines).
Hunk #3 succeeded at 573 (offset 18 lines).
Hunk #4 succeeded at 744 (offset 28 lines).
patching file modules/ssl/ssl_util_ssl.c
patching file modules/ssl/ssl_util_ssl.h
&lt;/pre&gt;

&lt;p&gt;From here, compile and install &lt;a href=&quot;/2013/08/compiling-apache-with-static-openssl.html&quot;&gt;as usually&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To use stronger DH parameters, you first need to create a special parameter file with the desired strength:&lt;/p&gt;

&lt;pre&gt;$ openssl dhparam -out dh2048.pem 2048&lt;/pre&gt;

&lt;p&gt;The process will take some time and you&apos;ll see lots of output on your screen. (If you&apos;re curious what the various characters mean, &lt;a href=&quot;http://ix-notes.blogspot.co.uk/2009/04/legend-for-openssls-dhparam-output.html&quot;&gt;have a look here&lt;/a&gt;.)
Then you need to add this directive to your Apache configuration:&lt;/p&gt;

&lt;pre&gt;SSLDHParametersFile /path/to/dh2048.pem&lt;/pre&gt;

&lt;p&gt;That&apos;s all. Now you only need to restart the web server and test it using the &lt;a href=&quot;https://www.ssllabs.com/ssltest/&quot;&gt;SSL Labs test&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update (15 Aug 2013):&lt;/b&gt; As &lt;a href=&quot;https://twitter.com/reschly&quot;&gt;Michael Reschly&lt;/a&gt; reminded me, increasing DH strength can cause interoperability issues. In particular, Java is known not to support DH parameters above 1024 bits. Here&apos;s a &lt;a href=&quot;http://stackoverflow.com/questions/6851461/java-why-does-ssl-handshake-give-could-not-generate-dh-keypair-exception&quot;&gt;Stack Overflow thread&lt;/a&gt; that contains more information.
The issue has been resolved in the (not yet released) Java 8.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update (19 Aug 2013):&lt;/b&gt; &lt;a href=&quot;https://twitter.com/rmhrisk&quot;&gt;Ryan Hurst&lt;/a&gt; also wanted me to tell you that Windows crypto libraries don&apos;t support DH parameters stronger than 1024 bits. (Windows 8.1 might appears to actually support stronger DHE keys.) The only browser that could be affected by this is Internet Explorer. Other browsers running on Windows use their own crypto, and do not have this limitation. But even with IE users&amp;#8212;as Reschly pointed out via Twitter&amp;#8212;the DH limitation should not be a problem, for two reasons. First, if you configure Forward Secrecy correctly using ECDHE suites (as &lt;a href=&quot;/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy.html&quot;&gt;I discussed in my previous post&lt;/a&gt;), IE will always use ECDHE. Second, IE does not support DHE in combination with RSA, and will never negotiate a DHE suite, anyway.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update (13 May 2015):&lt;/b&gt; The original post incorrectly stated that
Apache supported only 1024-bit DH parameters because it delegated DH
parameter handling to OpenSSL. That is incorrect. The limit was in the &lt;a
href=&quot;https://github.com/apache/httpd/blob/APACHE_2_0_BRANCH/modules/ssl/ssl_engine_dh.c#L56&quot;&gt;Apache
code&lt;/a&gt;. Thanks to Richard Moore for pointing this out.
&lt;/p&gt;

&lt;p&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/08/defending-against-the-breach-attack</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/08/defending-against-the-breach-attack.html"/>
    <title>Defending against the BREACH attack</title>
    <published>2013-08-07T00:00:00+01:00</published>
    <updated>2013-08-07T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;When &lt;a href=&quot;/2012/09/crime-information-leakage-attack-against-ssl-tls.html&quot;&gt;Juliano and Thai disclosed the CRIME attack last year&lt;/a&gt;, it was clear that the same attack technique could be applied to any other compressed data, and compressed response bodies (via HTTP compression) in particular. But it was also clear that&amp;mdash;with our exploit-driven culture&amp;mdash;browser vendors were not going to do anything about.&lt;/p&gt;

&lt;p&gt;Progress will be made now that there is an exploit to worry about because, this year at Black Hat, a group of researched presented BREACH, a variant of CRIME that works exactly where it hurts the most, on HTTP response bodies. If you&apos;re not already familiar with the attack I suggest that you go to the &lt;a href=&quot;http://www.breachattack.com/&quot;&gt;researchers&apos; web site&lt;/a&gt;, where they have a very nice paper and a set of slides.&lt;/p&gt;

&lt;p&gt;If you don&apos;t want to read the paper right this moment, I will remind you that the CRIME attack works by having the attacker guess some secret text. The trick is to include the guess in the same context as the actual secret (for example, the same response body). When his guess is 100% wrong, the size of the response increases for the size of the guess. But, when the guess is correct (fully, or partially, meaning there is some overlap between the guess and the secret), compression kicks in, and the response body shrinks slightly. With enough guesses and enough time, you can guess anything on the page.&lt;/p&gt;

&lt;p&gt;TLS does not defend against this attack because, when the protocol was originally designed, it was impossible for MITM attackers to submit arbitrary plaintext via victims&apos; browsers. Since then, the threat model evolved, but the protocols remained the same. (Interestingly, there is a draft proposal to deal with this sort of thing at the TLS level: &lt;a href=&quot;http://tools.ietf.org/html/draft-pironti-tls-length-hiding-01&quot;&gt;Length Hiding Padding for the Transport Layer Security Protocol&lt;/a&gt;.)&lt;/p&gt;

&lt;h2&gt;Mitigation&lt;/h2&gt;

&lt;p&gt;Clearly, one option is to address the problem at the TLS level; but that will take some time.&lt;/p&gt;

&lt;p&gt;Outside TLS, the paper itself includes a nice list of mitigation options, and, with exceptions, I am not going to repeat them here. In general, it&apos;s not going to be easy. When dealing with CRIME, we were fortunate because few people knew TLS compression existed, and only a small number of browsers/users actually supported it. This time, the flaw is exploited in a feature that&apos;s not only very widely used, but one which many sites cannot exist without. Just try convincing a large site to turn off compression, at a large financial and performance cost.&lt;/p&gt;

&lt;p&gt;Although most discussions about BREACH will no doubt focus on its threat against CSRF tokens, we should understand that the impact is potentially wider. Any sensitive data contained in responses is under threat. The good news is that session tokens don&apos;t appear to be exposed. However, a well-placed forged CSRF request can do a lot of damage.&lt;/p&gt;

&lt;h3&gt;CSRF token defence&lt;/h3&gt;

&lt;p&gt;For CSRF tokens there is a simple and effective defence, which is to randomize the token by masking it with a different (random) value on every response. The masking does not hide the token (whoever has the token can easily reverse the masking), but it does defeat the attack technique. Guessing is impossible when the secret is changing all the time. Thus, we can expect that most frameworks will adopt this technique. Those who rely on frameworks will only need to upgrade to take advantage of the defence. Those who don&apos;t will have to fix their code.&lt;/p&gt;

&lt;h3&gt;HTTP chunked encoding mitigation&lt;/h3&gt;

&lt;p&gt;The award for least-intrusive and entirely painless mitigation proposal goes to Paul Querna who, on the httpd-dev mailing list, &lt;a href=&quot;http://mail-archives.apache.org/mod_mbox/httpd-dev/201308.mbox/%3CCAMDeyhwCYYQMK+WTfvge7y20AqEB1=kqMHgqKYhr3kBWkZyYzA@mail.gmail.com%3E&quot;&gt;proposed to use the HTTP chunked encoding to randomize response length&lt;/a&gt;. Chunked encoding is a HTTP feature that is typically used when the size of the response body is not known in advance; only the size of the next chunk is known. Because chunks carry some additional information, they affect the size of the response, but not the content. By forcing more chunks than necessary, for example, you can increase the length of the response. To the attacker, who can see only the size of the response body, but not anything else, the chunks are invisible. (Assuming they&apos;re not sent in individual TCP packets or TLS records, of course.)&lt;/p&gt;

&lt;p&gt;This mitigation technique is very easy to implement at the web server level, which makes it the least expensive option. There is only a question about its effectiveness. No one has done the maths yet, but most seem to agree that response length randomization slows down the attacker, but does not prevent the attack entirely. But, if the attack can be slowed down significantly, perhaps it will be as good as prevented. &lt;/p&gt;

&lt;h3&gt;Referer check mitigation&lt;/h3&gt;

&lt;p&gt;A quick, dirty, tricky, and a potentially unreliable mitigation approach you can apply today, is to perform Referer header checks on all incoming requests. Because the attacker cannot inject requests from the web site itself (unless he gains access via XSS, in which case he owns the browser and has no need for further attacks), he must do so from some other web site (a malicious web site, or an innocent site hijacked from a MITM location). In that case, the referrer information will show the request originating from that other web site, and we can easily detect that.&lt;/p&gt;

&lt;p&gt;Now, you can&apos;t just drop such requests (because then no links to your web site would work any more), but you can drop all the cookies before they reach the application. Without the cookies, your application will not resume the victim&apos;s session, and won&apos;t place anything secret in the response. Attack mitigated.&lt;/p&gt;

&lt;p&gt;There is a catch, however (as &lt;a href=&quot;https://twitter.com/hubert3&quot;&gt;Hubert&lt;/a&gt; pointed out to me this morning): if your web site relies on being framed by arbitrary 3rd party web sites, or if it exposes public services to others (for browser consumption), then you can&apos;t use this defence. I am assuming your services need the cookies. If they do not, you&apos;re back in the game. If you do decide to try it, please test your major use cases in a staging environment first.&lt;/p&gt;

&lt;p&gt;You can implement this defence with only two Apache directives (replace &lt;code&gt;www.example.com&lt;/code&gt; with your own domain name):&lt;/p&gt;

&lt;pre&gt;SetEnvIfNoCase Referer ^https://www\.example\.com keep_cookies
RequestHeader unset Cookie env=!keep_cookies&lt;/pre&gt;

&lt;p&gt;The cookies are kept only for requests arriving from the same site. There&apos;s a potential problem with users that follow links from other sites and bookmarks and expect to be logged in straight away (either because they are already logged in, or because your site supports auto-log in). For such users you might need to have a welcome page, where you will ask them to click on a link to enter the web site. The cookies will be sent again on the next request.&lt;/p&gt;

&lt;p&gt;Just to be clear, there is a long history of attacks focusing on spoofing the &lt;code&gt;Referer&lt;/code&gt; header. For example, there was &lt;a href=&quot;http://seclists.org/fulldisclosure/2013/Jul/60&quot;&gt;one such problem in Chrome just recently&lt;/a&gt;. However, such attacks are addressed quickly after discovery. Further, as &lt;a href=&quot;https://twitter.com/kkotowicz&quot;&gt;Krzysztof Kotowicz&lt;/a&gt; pointed out, it is trivial to submit requests that do not contain the &lt;code&gt;Referer&lt;/code&gt; header (read about it &lt;a href=&quot;http://blog.kotowicz.net/2011/10/stripping-referrer-for-fun-and-profit.html&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://webstersprodigy.net/2013/02/01/stripping-the-referer-in-a-cross-domain-post-request/&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;To conclude, I can&apos;t really say that I like this approach, but its huge advantage is that you can deploy it very quickly at the web server or reverse proxy level, without having to make any changes to the application code. Even with all the constraints, I imagine there will be a large number of applications for which the trade-offs will be acceptable. &lt;/p&gt;

&lt;h2&gt;We should really fix browsers&lt;/h2&gt;

&lt;p&gt;I would really like to see this problem addressed where it should be addressed&amp;mdash;at the browser level. At the moment, a MITM attacker can intercept your non-encrypted requests, mess with them, and trick your browser into sending requests with arbitrary content to the sites that you care about. It&apos;s this interaction that&apos;s making several very interesting attacks possible: BEAST, CRIME, RC4, and now BREACH.&lt;/p&gt;

&lt;p&gt;A carefully designed opt-in security measure could do the trick, but I suppose it would take a lot of talking and politics to get it implemented. The idea is that a web site can control which other web sites (cross-origins) can initiate requests to it, even if it is via &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;

&lt;p&gt;Incidentally, just a couple of days ago, Mike Shema and Vaagn Toukharian (fellow Qualys employees), &lt;a href=&quot;http://deadliestwebattacks.com/2013/08/05/blackhat-us-2013-dissecting-csrf/&quot;&gt;proposed a new cookie control&lt;/a&gt; (&lt;em&gt;update: and there is now &lt;a href=&quot;http://deadliestwebattacks.com/2013/08/08/and-they-have-a-plan/&quot;&gt;a follow-up post from Mike&lt;/a&gt;&lt;/em&gt;) that would restrict when cookies are sent. Their intention was to deal with CSRF, but the measure would work against BREACH, too. If a 3rd party web site initiates a request to your web site, against your wishes, being able to tell the browser to drop the cookies would mitigate the potential attacks.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update (8 August 2013): &lt;/strong&gt;The first version of this blog post included a referrer check defence that allowed empty referrers, with the idea to support auto-log in for the users following bookmarks. But then Krzysztof Kotowicz pointed out that the &lt;code&gt;Referer&lt;/code&gt; header can be removed by the attackers. I have now modified the example to drop cookies on all requests not originating from the web site.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update (14 October 2013):&lt;/strong&gt; A better idea for mitigation based on referrer
checking is to selectively disable compression, rather than drop cookies.
This approach comes with a slight performance penalty, but no loss of
functionality. Read the &lt;a
href=&quot;https://community.qualys.com/message/20404#20404&quot;&gt;original discussion thread&lt;/a&gt; for more information how
to achieve this with Apache.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy.html"/>
    <title>Configuring Apache, Nginx, and OpenSSL for Forward Secrecy</title>
    <published>2013-08-05T00:00:00+01:00</published>
    <updated>2013-08-05T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;In my &lt;a href=&quot;/2013/06/ssl-labs-deploying-forward-secrecy.html&quot;&gt;earlier blog post&lt;/a&gt;, I gave an overview of Forward Secrecy, as well as some configuration tips. If you&apos;re new to the concept, I suggest that you go and read that post first. This time, I am following up with detailed configuration examples for Apache, Nginx, and OpenSSL.&lt;/p&gt;

&lt;h2&gt;Software Requirements&lt;/h2&gt;

&lt;p&gt;
To deploy Forward Secrecy, you need to have both your web server and the underlying SSL/TLS library support Elliptic Curve (EC) cryptography. For Apache, Nginx, and OpenSSL, the following minimum versions will suffice:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenSSL 1.0.1c+
&lt;li&gt;Apache 2.4.x+
&lt;li&gt;nginx 1.0.6+ and 1.1.0+
&lt;/ul&gt;

&lt;p&gt;You will probably want to upgrade to the most recent versions wherever possible, because you don&apos;t want to be running old and obsolete and potentially vulnerable software. If your distribution does not support an acceptable version of one of the components, consider installing everything from scratch, as &lt;a href=&quot;/2013/08/compiling-apache-with-static-openssl.html&quot;&gt;I described in a recent blog post&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;You are probably aware that Linux distributions often ship modified packages. The modifications are usually improvements, but could mean feature removal in some cases. For example, Red Hat appears to have no support for Elliptic Curve crypto on their operating systems, because of &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=319901&quot;&gt;patent issues&lt;/a&gt;. If you&apos;re running CentOS, for example, and wish to support Forward Secrecy, you will need to recompile the key packages to put EC support back in. (There appear to be plenty tutorials on the Web for this.)&lt;/p&gt;

&lt;p&gt;
Once the correct packages are in place, enabling Forward Secrecy requires two steps:
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configure the web server to actively select suites
&lt;li&gt;Activate the correct OpenSSL suite configuration string
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;The following configuration advice applies only if you are using compatible software components, as described in the previous section. It is not possible to support Forward Secrecy otherwise.&lt;/b&gt;&lt;/p&gt;

&lt;h2&gt;Apache&lt;/h2&gt;

&lt;p&gt;To configure Apache, you need to have the following lines in your configuration:&lt;/p&gt;

&lt;style&gt;
/* Advice from: http://css-tricks.com/snippets/css/make-pre-text-wrap/ */
pre {
 white-space: pre-wrap;       /* css-3 */
 white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 white-space: -pre-wrap;      /* Opera 4-6 */
 white-space: -o-pre-wrap;    /* Opera 7 */
 word-wrap: break-word;       /* Internet Explorer 5.5+ */
}
&lt;/style&gt;

&lt;pre&gt;
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite &quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&quot;
&lt;/pre&gt;

&lt;h2&gt;Nginx&lt;/h2&gt;

&lt;p&gt;To configure Nginx, you need to have the following lines in your configuration:&lt;/p&gt;

&lt;pre&gt;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers &quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&quot;;
&lt;/pre&gt;

&lt;h2&gt;RC4 versus BEAST&lt;/h2&gt;

&lt;p&gt;
Today, only TLS 1.2 with GCM suites offer fully robust security. All other suites suffer from one problem or another (e.g, &lt;a href=&quot;http://www.isg.rhul.ac.uk/tls/&quot;&gt;RC4&lt;/a&gt;, &lt;a href=&quot;http://www.isg.rhul.ac.uk/tls/Lucky13.html&quot;&gt;Lucky 13&lt;/a&gt;, &lt;a href=&quot;http://www.educatedguesswork.org/2011/09/security_impact_of_the_rizzodu.html&quot;&gt;BEAST&lt;/a&gt;), but most are difficult to exploit in practice. Because GCM suites are not yet widely supported, most communication today is carried out using one of the slightly flawed cipher suites. It is not possible to do better if you&apos;re running a public web site.
&lt;/p&gt;

&lt;p&gt;
The one choice you can make today is whether to prioritize RC4 in most cases. If you do, you will be safe against the BEAST attack, but vulnerable to the RC4 attacks. On the other hand, if you remove RC4, you will be vulnerable against BEAST, but the risk is quite small. Given that &lt;i&gt;both&lt;/i&gt; issues are relatively small, the choice isn&apos;t clear.
&lt;/p&gt;

&lt;p&gt;
However, the trend is clear. Over time, RC4 attacks are going to get better, and the number of users vulnerable to the BEAST attack is going to get smaller.
&lt;/p&gt;

&lt;h2&gt;Configuring OpenSSL (with RC4)&lt;/h2&gt;

&lt;p&gt;
This configuration assumes you wish to deploy best-possible configuration supporting Forward Secrecy, and that you have a preference for GCM suites (resistant to timing attacks) and RC4 (resistant to BEAST). To achieve best performance, the faster ECDHE suites are used whenever possible.
&lt;/p&gt;

&lt;pre&gt;
EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS
&lt;/pre&gt;

&lt;p&gt;
To see what suites the above configuration string uses, invoke the following command (all one line):
&lt;/p&gt;

&lt;pre&gt;
$ openssl ciphers -V &apos;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA256 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EDH+aRSA EECDH RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&apos;
&lt;/pre&gt;

&lt;p&gt;
The output will be similar to this:
&lt;/p&gt;

&lt;pre style=&quot;font-size: 14px&quot;&gt;
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA384
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA256
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA256
ECDHE-RSA-RC4-SHA       SSLv3 Kx=ECDH     Au=RSA  Enc=RC4(128)  Mac=SHA1
ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
ECDHE-ECDSA-AES256-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA1
ECDHE-RSA-AES128-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
ECDHE-ECDSA-AES128-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA1
ECDHE-ECDSA-RC4-SHA     SSLv3 Kx=ECDH     Au=ECDSA Enc=RC4(128)  Mac=SHA1
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA256
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(256) Mac=SHA1
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA256
DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
DHE-RSA-SEED-SHA        SSLv3 Kx=DH       Au=RSA  Enc=SEED(128) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(128) Mac=SHA1
ECDH-RSA-RC4-SHA        SSLv3 Kx=ECDH/RSA Au=ECDH Enc=RC4(128)  Mac=SHA1
ECDH-ECDSA-RC4-SHA      SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=RC4(128)  Mac=SHA1
RC4-SHA                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=SHA1
&lt;/pre&gt;

&lt;p&gt;If you deploy your configuration, your SSL Labs test results might look like &lt;a href=&quot;https://www.ssllabs.com/ssltest/analyze.html?d=feistyduck.com&quot;&gt;this&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Notes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The list begins with a number of strong TLS 1.2 suites (GCM, SHA256, and SHA384); this helps avoid RC4 whenever possible.
&lt;li&gt;ECDSA suites are preferred to the RSA ones, giving you a performance edge in a dual-certificate deployment scenario.
&lt;li&gt;The main 2 suites (for the current browsers, most of which do not support TLS 1.2) are &lt;code&gt;ECDHE-RSA-RC4-SHA&lt;/code&gt; and &lt;code&gt;ECDHE-ECDSA-RC4-SHA&lt;/code&gt;, used for RSA and ECDSA certificates, respectively.
&lt;li&gt;The DHE suites are there to support those rare browsers that do not support ECDHE. (Opera before version 15 is one such browser. Firefox as shipped on Red Hat systems another.) These suites are slower, but the majority of browsers will offer the faster ECDHE.
&lt;li&gt;The &lt;code&gt;RC4-SHA&lt;/code&gt; suite at the end is there to support IE8 running on Windows XP. (And possibly IE6, but I have not tested for it.)
&lt;/ul&gt;

Issues:
&lt;ul&gt;
&lt;li&gt;Internet Explorer, in all versions, does not support the ECDHE and RC4 combination (which has the benefit of supporting Forward Secrecy and being resistant to BEAST). But IE has long patched the BEAST vulnerability and so we shouldn&apos;t worry about it.
&lt;li&gt;Same comment as above for Firefox on Red Hat systems.
&lt;li&gt;It is impossible to support Forward Secrecy for IE8 running on Windows XP, because this browser does not support the necessary suites. The same is probably true for any IE version running on Windows XP. If you&apos;d rather not handshake with such browsers, add &lt;code&gt;!RC4-SHA&lt;/code&gt; to the configuration.
&lt;/ul&gt;

&lt;h2&gt;Configuring OpenSSL (without RC4)&lt;/h2&gt;

&lt;p&gt;
If you prefer not to use RC4, use the same configuration string (for simplicity), but add &lt;code&gt;!RC4&lt;/code&gt; to the end:
&lt;/p&gt;

&lt;pre&gt;
EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS &lt;b&gt;!RC4&lt;/b&gt;
&lt;/pre&gt;

&lt;p&gt;
Alternatively (in order to support a very wide range of browsers, including the IE versions running on Windows XP), you could deploy with RC4 enabled, but used only as a last resort:

&lt;pre&gt;
EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS &lt;b&gt;+RC4 RC4&lt;/b&gt;
&lt;/pre&gt;

&lt;h2&gt;Final Remarks&lt;/h2&gt;

&lt;p&gt;Finally, consider the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There&apos;s a vast number of SSL/TLS clients in deployment, each potentially supporting a unique list of cipher suites. It is impossible to guarantee consistent results across such a large user base.
&lt;li&gt;The Handshake Simulation feature of the &lt;a href=&quot;https://www.ssllabs.com/ssltest/&quot;&gt;SSL Labs test&lt;/a&gt; is of great help when choosing cipher suite configuration. It supports a wide range of desktop browsers (including older versions). However, do note that the support for mobile devices is not very good at the moment.
&lt;li&gt;Configuring OpenSSL can be tricky. I recommend reading the (free) &lt;a
href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;OpenSSL Cookbook&lt;/a&gt;, which describes the configuration in detail.
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Update (21 August):&lt;/b&gt; I have tweaked the suite configuration string to position SHA256 and SHA384 suites (which are TLS 1.2-only) after GCM suites and before RC4 suites. This helps avoid RC4 whenever possible. (This matters now because Google Chrome 29 has just been released, and, for the first time, we have a desktop browser that supports TLS 1.2 by default). Of course, I assume that you have upgraded your OpenSSL to 1.0.1d or better in order to fix the timing issues with CBC suites (the so-called &lt;a href=&quot;http://www.isg.rhul.ac.uk/tls/Lucky13.html&quot;&gt;Lucky 13 attack&lt;/a&gt;).&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/08/compiling-apache-with-static-openssl</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/08/compiling-apache-with-static-openssl.html"/>
    <title>Compiling Apache with static OpenSSL libraries</title>
    <published>2013-08-03T00:00:00+01:00</published>
    <updated>2013-08-03T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
Back in 2004, when I was writing &lt;a
href=&quot;https://www.feistyduck.com/books/apache-security/&quot;&gt;Apache Security&lt;/a&gt;,
it was quite common to
install Apache from source code, and I spent a lot of time documenting the
process. When the stabilized most people stopped bothering with the source
code and relied on the binaries provided by the operating system.
&lt;/p&gt;

&lt;p&gt;
We&apos;re back into unstable territories. Today, to get the best SSL/TLS
configuration you have to roll your sleeves and do everything the old way. For
example, I have a couple of servers running Ubuntu 10.04 LTS; the OpenSSL
version installed does not support TLS 1.2, and its Apache 2.2.x does not
support the ECDHE suites (which are necessary for Forward Secrecy). If
you&apos;re running an operating that originated at Red Hat, I hear that you &lt;a
href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=319901&quot;&gt;don&apos;t get any
Elliptic Curve crypto from the default binaries&lt;/a&gt;. 
&lt;/p&gt; 

&lt;p&gt;The easiest way to run Apache with a recent version of OpenSSL is to
compile the crypto code statically, and install everything into a separate
location. That way you achieve the goal, but you don&apos;t mess with the rest of
the operating system.
&lt;/p&gt;

&lt;p&gt;First, you should &lt;a href=&quot;http://www.openssl.org/source/&quot;&gt;get the desired version of
OpenSSL&lt;/a&gt; and install it at a
location where it will not interfere with your system version. I usually
choose &lt;code&gt;/opt&lt;/code&gt; for this purpose.&lt;/p&gt;

&lt;pre&gt;
$ ./config \
    --prefix=/opt/openssl-1.0.1e \
    --openssldir=/opt/openssl-1.0.1e
$ make
$ sudo make install
&lt;/pre&gt;

&lt;p&gt;Now, get the latest &lt;a href=&quot;http://httpd.apache.org/download.cgi&quot;&gt;Apache
2.4.x&lt;/a&gt;, &lt;a href=&quot;https://apr.apache.org/download.cgi&quot;&gt;APR and APR-Util&lt;/a&gt; libraries.
You will need to unpack all three packages into the same source tree, with the
latter two in the location where Apache expects them. For example:&lt;/p&gt;

&lt;pre&gt;
$ tar zxvf httpd-2.4.6.tar.gz
$ cd httpd-2.4.6/srclib/
$ tar zxvf ../../apr-1.4.8.tar.gz
$ ln -s apr-1.4.8/ apr
$ tar zxvf ../../apr-util-1.5.2.tar.gz
$ ln -s apr-util-1.5.2/ apr-util
&lt;/pre&gt;

&lt;p&gt;You are now ready to configure and install Apache. The mod_ssl module
will be compiled statically, with all other modules dynamically.&lt;/p&gt;

&lt;pre&gt;
$ ./configure \
    --prefix=/opt/httpd \
    --with-included-apr \
    --enable-ssl \
    --with-ssl=/opt/openssl-1.0.1e \
    --enable-ssl-staticlib-deps \
    --enable-mods-static=ssl
$ make
$ sudo make install
&lt;/pre&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/06/ssl-labs-deploying-forward-secrecy</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/06/ssl-labs-deploying-forward-secrecy.html"/>
    <title>Deploying Forward Secrecy</title>
    <published>2013-06-25T00:00:00+01:00</published>
    <updated>2013-06-25T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;span style=&quot;background-color: #ffffbf&quot;&gt;&lt;b&gt;Update (5 August 2013):&lt;/b&gt; In my follow-up post, I discuss how to &lt;a href=&quot;/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy.html&quot;&gt;configure Apache, Nginx, and OpenSSL to support Forward Secrecy&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;hr&gt;

&lt;p&gt;
With revelations about mass surveillance in the news everywhere, an
obscure feature of SSL/TLS called &lt;i&gt;Forward Secrecy&lt;/i&gt; has suddenly become
very interesting. So what is it, and why is it so interesting now?
&lt;/p&gt;

&lt;h2&gt;Session keys generation and exchange&lt;/h2&gt;

&lt;p&gt;
Every SSL connection begins with a handshake, during which the parties
communicate their capabilities to the other side, perform authentication,
and agree on their &lt;i&gt;session keys&lt;/i&gt;, in the process called &lt;i&gt;key
exchange&lt;/i&gt;. The session keys are used for a limited time and deleted
afterwards. The goal of the key exchange phase is to enable the two
parties to negotiate the keys securely, in other words, to prevent anyone
else from learning these keys.
&lt;/p&gt;

&lt;p&gt;
Several key exchange mechanisms exist, but, at the moment, by far the most
commonly used one is based on RSA, where the server&apos;s private key is used to
protect the session keys. This is an efficient key exchange approach, but
it has an important side-effect: anyone with access to a copy of the server&apos;s
private key can also uncover the session keys and thus decrypt everything.
&lt;/p&gt;

&lt;p&gt;
For some, the side-effects are desirable. Many network security devices,
for example, can be configured to decrypt communication (and inspect
traffic) when given servers&apos; private keys. Without this capability, passive
IDS/IPS and WAF devices have no visibility into the traffic and thus provide
no protection.
&lt;/p&gt;

&lt;p&gt;
In the context of mass surveillance, however, the RSA key exchange is a serious
liability. Your adversaries might not have your private key today, but what
they &lt;i&gt;can&lt;/i&gt; do now is record all your encrypted traffic. Eventually, they
might obtain the key in one way or another (e.g., by bribing someone,
obtaining a warrant, or by breaking the key after sufficient technology advances)
and, at that time, they will be able to go back in time to decrypt everything.
&lt;/p&gt;

&lt;h2&gt;Diffie–Hellman key exchange&lt;/h2&gt;

&lt;p&gt;
An alternative to RSA-based key exchange is to use the ephemeral Diffie-Hellman
algorithm, which is slower, but generates session keys in such a way that
only the two parties involved in the communication can obtain them. No one
else can, even if they have access to the server&apos;s private key.&lt;sup&gt;1&lt;/sup&gt;
&lt;/p&gt;

&lt;p&gt;
After the session is complete, and both parties destroy the session keys,
the only way to decrypt the communication is to break the session keys
themselves. This protocol feature is known as &lt;i&gt;Forward
Secrecy&lt;/i&gt;.&lt;sup&gt;2&lt;/sup&gt;
&lt;/p&gt;

&lt;p&gt;
Now, breaking strong session keys is clearly much more difficult than
obtaining servers&apos; private keys (especially if you can get them via a
warrant). Furthermore, in order to decrypt all
communication, now you can no longer compromise just one key (the server&apos;s),
but you have to compromise the session keys belonging to every individual
communication session.
&lt;/p&gt;

&lt;h2&gt;SSL and Forward Secrecy&lt;/h2&gt;

&lt;p&gt;SSL supports Forward Secrecy using two algorithms, the standard
Diffie-Hellman (DHE) and the adapted version for use with Elliptic Curve
cryptography (ECDHE). Why isn&apos;t everyone using them, then?
&lt;/p&gt;

&lt;p&gt;Assuming the interest and knowledge to deploy Forward Secrecy is there, two obstacles
remain:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DHE is significantly slower. For this reason, web site operators tend to disable
all DHE suites in order to achieve better performance. In recent years,
we&apos;ve seen DHE fall out of fashion. Internet Explorer 9 and 10, for example,
support DHE only in combination with obsolete DSA keys. 
&lt;li&gt;ECDHE too is slower, but not as much as DHE. (Vincent Bernat published a
&lt;a
href=&quot;http://vincent.bernat.im/en/blog/2011-ssl-perfect-forward-secrecy.html&quot;&gt;blog
post about the impact of ECDHE on performance&lt;/a&gt;, but be warned that the
situation might have changed since 2011. I am planning to do my own tests
soon.) However, ECDHE algorithms are relatively
new and not as widely supported. For example, they were added to OpenSSL only fairly
recently, in the 1.x releases.
&lt;/ul&gt;

&lt;p&gt;
If you&apos;re willing to support both ECDHE and DHE, then you will probably be
able to support Forward Secrecy with virtually all clients. But ECDHE alone is
supported by all major modern browsers, which means that even with only ECDHE
you might be able to cover a very large chunk of your user base. The
decision what to do is entirely up to you. Google, for example, do not
support any DHE suites on their main web sites.
&lt;/p&gt;

&lt;h2&gt;Configuring Forward Secrecy&lt;/h2&gt;

&lt;p&gt;
Enabling Forward Secrecy can be done in two steps:
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configure your server to actively select the most desirable suite from
the list offered by SSL clients.
&lt;li&gt;Place ECDHE and DHE suites at the top of your list. (The order is
important; because ECDHE suites are faster, you want to use them whenever
clients supports them.)
&lt;/ol&gt;

&lt;p&gt;
Knowing which suites to enable and move to the top can be tricky, because
not all browsers (devices) support all Forward Secrecy suites. At this point
you may want to look for inspiration from those who are already supporting
Forward Secrecy, for example &lt;a
href=&quot;https://www.ssllabs.com/ssltest/analyze.html?d=www.google.com&quot;&gt;Google&lt;/a&gt;.

&lt;p&gt;
In the nutshell, these are some of the suites you might want to
enable&lt;sup&gt;3&lt;/sup&gt; and push (close) to the top:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TLS_ECDHE_RSA_WITH_RC4_128_SHA
&lt;li&gt;TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
&lt;li&gt;TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
&lt;li&gt;TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
&lt;/ul&gt;


&lt;p&gt;To make this process easier,
I&apos;ve added a new feature to the &lt;a href=&quot;https://www.ssllabs.com/ssltest/&quot;&gt;SSL Labs
test&lt;/a&gt;; this feature, tentatively
called &lt;i&gt;handshake simulation&lt;/i&gt;, understands the capabilities of major
browsers and determines which suite would be negotiated with each. As a result, it
also tells you if the negotiated suite supports Forward Secrecy.
&lt;/p&gt;

&lt;p&gt;
Here&apos;s what it looks like in action:
&lt;/p&gt;

&lt;p style=&quot;border: 1px solid #666666; text-align: center; padding-top: 10px&quot;&gt;&lt;img
src=&quot;/images/ssl-labs-handshake-simulation.png&quot;&gt;&lt;/p&gt;

&lt;p&gt;When you get it right, you will be rewarded with a strong forward
secrecy indicator in the summary section at the top:
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;&lt;img width=&quot;720&quot; height=&quot;31&quot;
style=&quot;border: 1px solid #666666&quot; src=&quot;/images/ssl-labs-forward-secrecy-enabled.png&quot;&gt;&lt;/p&gt;

&lt;h2&gt;Alternative attack vectors&lt;/h2&gt;

&lt;p&gt;
Although the use of Diffie-Hellman key exchange eliminates the main attack
vector, there are other actions powerful adversaries could take. For
example, they could convince the server operator to simply record all
session keys.
&lt;/p&gt;

&lt;p&gt;
Server-side session management mechanisms could also impact Forward Secrecy.
For performance reasons, session keys might be kept for many hours after the
conversation had been terminated.
&lt;/p&gt;

&lt;p&gt;
In addition, there is an alternative session management mechanism called &lt;i&gt;session
tickets&lt;/i&gt;, which uses separate encryption keys that are rarely rotated
(possibly never in extreme cases). Unless you understand your session tickets
implementation very well, this feature is best disabled to ensure it does
not compromise Forward Secrecy.
&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;(1) Someone with access to the server&apos;s private key can, of course,
perform an active man in the middle attack and impersonate the server.
However, they can do that only at the time the communication is taking
place. It is not possible to pile up mountains of encrypted traffic to
decrypt later.
&lt;/p&gt;

&lt;p&gt;(2) It&apos;s also sometimes called &lt;i&gt;Perfect Forward Secrecy&lt;/i&gt; (PFS), but,
because it is possible to uncover the communication by breaking the session
keys, it&apos;s clearly not perfect.
&lt;/p&gt;

&lt;p&gt;(3) I am assuming the most common case, that you have an RSA key
(virtually everyone does). There&apos;s a number of ECDHE suites that need to
enabled if you&apos;re using an ECDSA key. I am also ignoring GCM suites for the time being,
because they are not very widely supported. I am also ignoring any potential
desire to mitigate BEAST by favouring RC4, which might be impossible to do
across all client devices.
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/05/announcing-bulletproof-ssl-tls-and-pki</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/05/announcing-bulletproof-ssl-tls-and-pki.html"/>
    <title>Announcing Bulletproof SSL and TLS</title>
    <published>2013-05-22T00:00:00+01:00</published>
    <updated>2013-05-22T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;img src=&quot;/images/bulletproof-cover.png&quot; width=&quot;200&quot; height=&quot;250&quot; align=&quot;right&quot; style=&quot;border: 1px solid grey; margin-left: 20px&quot;&gt;&lt;/a&gt;
&lt;p&gt; 
For those of you who have been following
my blog, or my work on the &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; web site, it won&apos;t come as a surprise that my next book is about SSL/TLS and PKI, and all the
related things you need to know if you want to use these technologies.
&lt;/p&gt; 

&lt;p&gt;
    &lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;i&gt;Bulletproof SSL
    and TLS&lt;/i&gt;&lt;/a&gt; is the book I wish I had back when I was starting to get involved with
                SSL. I don&apos;t remember when exactly that was, but I do remember how, when
                I was writing my first book, &lt;a href=&quot;https://www.feistyduck.com/books/apache-security/&quot;&gt;&lt;i&gt;Apache Security&lt;/i&gt;&lt;/a&gt;, I began to
                appreciate cryptography. I began to like it, even. Before, SSL seemed simple to me; but then I realised how vast the world of cryptography actually is.&lt;/p&gt;

            &lt;p&gt;In 2009 I began to work on SSL Labs, and, for me, that world began
                to unravel. Fast-forward a couple of years, and in 2013 I still feel like I am
                only starting. Cryptography is a unique field where the more you learn the less you
                know.&lt;/p&gt;
            &lt;p&gt;In supporting the SSL Labs users over the years, I&apos;ve realised that there is a lot of
                documentation on SSL/TLS and PKI, but that it suffers from two problems: (1) it&apos;s
                not documented in one place, and so the little bits and pieces (e.g., RFCs) are
                difficult to find and (2) it tends to be very detailed and low-level. I needed
                years of effort to begin to understand the everything fits together.&lt;/p&gt;
            &lt;p&gt;&lt;i&gt;Bulletproof SSL and TLS&lt;/i&gt; aims to address the documentation gap, offering a very
                practical book that paints the whole picture and then proceeds to
                discuss the bits and pieces that you need in daily work, going as deep as needed to
                explain what you need to know.&lt;/p&gt;

&lt;a href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;img src=&quot;/images/openssl-cookbook-cover-100.png&quot; width=&quot;100&quot; height=&quot;124&quot; align=&quot;left&quot; style=&quot;border: 0px solid grey; margin-right: 20px&quot;&gt;&lt;/a&gt;

&lt;p&gt;At this point, the manuscript is about 120 pages long, which I estimate to be between 30% and 50% of the finished book. I expect the book will be available in Autumn. Until then, &lt;b&gt;I have a little treat for you; if you head over to the Feisty Duck web site, I am realeasing the main OpenSSL chapter as a standalone free ebook called &lt;a
href=&quot;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&quot;&gt;&lt;i&gt;OpenSSL Cookbook&lt;/i&gt;&lt;/a&gt;.&lt;/b&gt; It&apos;s about 50 pages at the moment, but I hope that grows longer over time. &lt;a href=&quot;http://www.qualys.com&quot;&gt;Qualys&lt;/a&gt; has graciously allowed me to include the &lt;a href=&quot;https://www.ssllabs.com/projects/best-practices/&quot;&gt;SSL/TLS Deployment Best Practices&lt;/a&gt; document in the appendix.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/03/rc4-in-tls-is-broken-now-what</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/03/rc4-in-tls-is-broken-now-what.html"/>
    <title>RC4 in TLS is broken: Now what?</title>
    <published>2013-03-19T00:00:00+00:00</published>
    <updated>2013-03-19T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;RC4 has long been considered problematic, but until very recently
there was no known way to exploit the weaknesses. After the BEAST attack was
disclosed in 2011, we&amp;mdash;grudgingly&amp;mdash;started using RC4 in order to
avoid the vulnerable CBC suites in TLS 1.0 and earlier. This caused the
usage of RC4 to increase, and some say that it now accounts for about 50% of
all TLS traffic.&lt;/p&gt;

&lt;p&gt;Last week, a group of
researchers (Nadhem AlFardan, Dan Bernstein, Kenny Paterson, Bertram
Poettering and Jacob Schuldt) &lt;a href=&quot;http://www.isg.rhul.ac.uk/tls/&quot;&gt;announced
significant advancements in the attacks against
RC4&lt;/a&gt;, unveiling new weaknesses as well as new methods to exploit them.
Matthew Green has a &lt;a
href=&quot;http://blog.cryptographyengineering.com/2013/03/attack-of-week-rc4-is-kind-of-broken-in.html&quot;&gt;great overview&lt;/a&gt;
on his blog, and here are the &lt;a
href=&quot;http://cr.yp.to/talks/2013.03.12/slides.pdf&quot;&gt;slides&lt;/a&gt; from the talk where the new issues were
announced.
&lt;/p&gt;

&lt;p&gt;At the
moment, the attack is not yet practical because it requires access to
millions and possibly billions of copies of the same data encrypted using
different keys. A browser would have to make that many connections to a
server to give the attacker enough data. A possible exploitation path is to
somehow instrument the browser to make a large number of connections, while
a man in the middle is observing and recording the traffic.&lt;/p&gt;

&lt;p&gt;We are still safe at the moment, but there is a tremendous incentive for
researchers to improve the attacks on RC4, which means that we need to act
swiftly.&lt;/p&gt;

&lt;h2&gt;What We (SSL Labs) Will Do&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Start warning our users about RC4
weaknesses.&lt;/strong&gt; RC4 is demonstrably broken and unsafe to use in TLS as
currently implemented. The difficulty is that, for public web sites that
need to support a wide user base, there is practically nothing 100% secure
they can use to replace RC4. We now have no choice but to accept that, no
matter what settings we use, some segment of the user base will be at
risk.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If Apple were to implement 1/n-1
record splitting&lt;/strong&gt; in their stacks (the only major browser vendor
that hasn&amp;rsquo;t done that yet*), we&amp;rsquo;d likely consider BEAST
sufficiently mitigated client-side, and that would allow us to start
recommending CBC suites over RC4.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start recommending the use of GCM
suites.&lt;/strong&gt; Browsers will no doubt provide better support for TLS 1.2
and GCM suites at an accelerated schedule, and site operators should be
ready to take advantage of that.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Update SSL/TLS Deployment Best
Practices&lt;/strong&gt; with new information.&lt;/li&gt;
&lt;li&gt;At some point in the near future,
&lt;strong&gt;update the rating algorithm to take the RC4 weaknesses into
account&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Recommendations&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SSL/TLS library developers&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Harden the stack against the Lucky 13
attack.&lt;/li&gt;
&lt;li&gt;Support TLS 1.2 and GCM suites as soon as
possible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Browser vendors&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Support TLS 1.2 and GCM suites as soon as possible.&lt;/li&gt;
&lt;li&gt;Implement 1/n-1 record splitting to make
CBC suites safe in TLS 1.0 and earlier. As far as we are aware, Apple is the
only remaining vendor that has not patched their browsers, either on OSX or
iOS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;System administrators&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;	
&lt;li&gt;Disable TLS compression. This attack is
similar in nature to the recent RC4 attacks, but practical.&lt;/li&gt;
&lt;li&gt;Support TLS 1.2 and GCM as soon as
possible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;TLS Working Group&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restore algorithm agility and diversity
in TLS. AES GCM suites are now the only truly secure option in TLS, but we
shouldn&amp;rsquo;t count on them to stay like that forever.&lt;/li&gt;
&lt;li&gt;Consider introducing other stream ciphers
to the standard. Algorithm agility, which TLS already provides, is not
sufficient if there is only one choice for a component.&lt;/li&gt;
&lt;li&gt;Consider changing how CBC is implemented
in order to address the timing issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Application developers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Harden session management to support
reliable and frequent rotation of session cookies, triggered by elapsed time
or the number of requests observed. Recent years have seen a rise in attacks
that require attackers to control the client end of a TLS connection in some
fashion. Most such attacks focus on extracting small bits of information,
typically credentials. Session cookies are now the most popular target.
Given how many requests are needed for the best attacks to succeed, rotating
session cookies frequently is a good defense in depth measure.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;(*) Apple appears to have shipped the
1/n-1 split in Mountain Lion, but it is disabled by default. I was also
unable to observe any splitting after the functionality had been manually
enabled. iOS devices should support TLS 1.2, which means that they might be
secure provided TLS 1.2 is available server-side.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2013/02/ssl-labs-update-increases-security-requirements</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2013/02/ssl-labs-update-increases-security-requirements.html"/>
    <title>SSL Labs update increases security requirements</title>
    <published>2013-02-07T00:00:00+00:00</published>
    <updated>2013-02-07T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;The SSL threat landscape has changed significantly since the rating guide was first published, back in 2009. The original text is thus no longer entirely adequate to deal with the threats of today. In addition, we now have several years of experience using the criteria in real life, and we know what works well and what not so much.&lt;/p&gt;
&lt;p&gt;Our plan is to update the rating criteria to take all this new knowledge into account. However, because that process will take several months to complete and because an update to the guide is long overdue, we have decided to release a &lt;a href=&quot;https://www.ssllabs.com/projects/rating-guide/&quot; target=&quot;_self&quot;&gt;small patch release, labelling it 2009c&lt;/a&gt;. The year in the version number indicates that this is conceptually the same guide as previously published, with improvements.&lt;/p&gt;
&lt;p&gt;Essentially, the purpose of this release is to keep the rating criteria relevant for a little while longer, until the next major version is ready. The text of the original document remains as is, but the following changes apply:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSL 2.0 is not allowed (F).&lt;/li&gt;
&lt;li&gt;Insecure renegotiation is not allowed (F).&lt;/li&gt;
&lt;li&gt;Vulnerability to the BEAST attack caps the grade to B.&lt;/li&gt;
&lt;li&gt;Vulnerability to the CRIME attack caps the grade to B.&lt;/li&gt;
&lt;li&gt;The score (0-100) is not shown any more, in order to focus on the grade, which is more useful. Future versions of the guide will probably remove the score altogether.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition, we&amp;#39;ve taken the opportunity to remove the old configuration advice, directing the readers to our &lt;a href=&quot;https://www.ssllabs.com/projects/best-practices/&quot; target=&quot;_self&quot;&gt;SSL/TLS Deployment Best Practices&lt;/a&gt; document instead.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2012/11/large-scale-passive-ssl-monitoring-at-icsi</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2012/11/large-scale-passive-ssl-monitoring-at-icsi.html"/>
    <title>Large-scale passive SSL monitoring at ICSI</title>
    <published>2012-11-12T00:00:00+00:00</published>
    <updated>2012-11-12T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;The &lt;a href=&quot;http://www.icsi.berkeley.edu/&quot; target=&quot;_self&quot;&gt;International Computer Science Institute&lt;/a&gt; (ICSI) recently announced a &lt;a href=&quot;http://notary.icsi.berkeley.edu/&quot; target=&quot;_self&quot;&gt;new certificate notary project&lt;/a&gt;. Although I find the notary aspect of the project interesting, I think that their work is much more important because of the potential of their approach, which is based on large-scale passive monitoring of SSL connections. In the last couple of years I spent a lot of time looking at the server-side aspect of SSL (most recently, in the &lt;a href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot; target=&quot;_self&quot;&gt;SSL Pulse&lt;/a&gt; project), but there&amp;#39;s a large gap in our understanding when it comes to client-side capabilities, and actual real-life usage. The gap can be explained by ICSI&amp;#39;s data.&lt;/p&gt;
&lt;p&gt;Sadly, ICSI is unable to share their data because of various privacy concerns. However, they can still mine the data themselves. I decided to put together a list of unanswered SSL usage questions, as a way of contributing to the effort.&lt;/p&gt;
&lt;p&gt;Focusing on client capabilities is a good way to start. Some of the most interesting attributes to track might be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Highest TLS version&lt;/li&gt;
&lt;li&gt;Cipher suites (and their order)&lt;/li&gt;
&lt;li&gt;TLS extensions&lt;/li&gt;
&lt;li&gt;Compression methods&lt;/li&gt;
&lt;li&gt;BEAST mitigation&lt;/li&gt;
&lt;li&gt;SNI (virtual SSL hosting)&lt;/li&gt;
&lt;li&gt;Secure renegotiation (via extension or SCSV)&lt;/li&gt;
&lt;li&gt;Session ticket support&lt;/li&gt;
&lt;li&gt;Request for OCSP stapling&lt;/li&gt;
&lt;li&gt;SPDY support (via the NPN extension)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The most exciting aspect of the project is that it might be able to finally give us the answer to the effective security of SSL. Some key data points include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Negotiated protocol version&lt;/li&gt;
&lt;li&gt;Negotiated cipher suite/strength&lt;/li&gt;
&lt;li&gt;Was the suite actively selected by the server&lt;/li&gt;
&lt;li&gt;Authentication strength (certificate key size)&lt;/li&gt;
&lt;li&gt;DH params/strength (for applicable cipher suites)&lt;/li&gt;
&lt;li&gt;Compression usage&lt;/li&gt;
&lt;li&gt;Session resumption status (tracked via either mechanism)&lt;/li&gt;
&lt;li&gt;Seen stapled OCSP response&lt;/li&gt;
&lt;li&gt;Server certificate information
&lt;ul&gt;
&lt;li&gt;Key size&lt;/li&gt;
&lt;li&gt;Signature algorithm&lt;/li&gt;
&lt;li&gt;Is it expired?&lt;/li&gt;
&lt;li&gt;Is it self-signed?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Certificate chain correctness&lt;/li&gt;
&lt;li&gt;Is the trust root a well-known CA?&lt;/li&gt;
&lt;li&gt;Vulnerabilities:
&lt;ul&gt;
&lt;li&gt;Renegotiation (do both sides support secure renegotiation)&lt;/li&gt;
&lt;li&gt;BEAST (no browser mitigation and a CBC suite using TLS 1.0 or earlier)&lt;/li&gt;
&lt;li&gt;CRIME (use of TLS compression for the connection)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2012/10/improved-passive-ssl-fingerprinting-in-sslhaf</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2012/10/improved-passive-ssl-fingerprinting-in-sslhaf.html"/>
    <title>Improved passive SSL fingerprinting in sslhaf</title>
    <published>2012-10-18T00:00:00+01:00</published>
    <updated>2012-10-18T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I&apos;ve had some available time recently to work on &lt;a href=&quot;https://www.ssllabs.com/projects/client-fingerprinting/&quot; target=&quot;_self&quot;&gt;sslhaf&lt;/a&gt;, my passive SSL fingerprinting tool. I made the following improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Detect browser BEAST mitigation (1/n-1 splitting)&lt;/li&gt;
&lt;li&gt;Extract compression support&lt;/li&gt;
&lt;li&gt;Extract TLS extensions&lt;/li&gt;
&lt;li&gt;Change licence from GPLv2 to BSD&lt;/li&gt;
&lt;li&gt;Bug fixes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think that the detection of BEAST mitigation measures is particularly useful, because it will help understand the risk coming from this attack. Most, but not all, major browsers have mitigations in place. In addition, we don&apos;t know how many vulnerable older clients there are. I hope to publish some measurements soon.&lt;/p&gt;
&lt;p&gt;The tool is stable but technically still experimental, so use at your own risk. I&apos;d be willing to make it production ready if there&apos;s anyone interested in deploying it in a large web site.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2012/09/crime-information-leakage-attack-against-ssl-tls</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2012/09/crime-information-leakage-attack-against-ssl-tls.html"/>
    <title>CRIME: Information leakage attack against SSL/TLS</title>
    <published>2012-09-14T00:00:00+01:00</published>
    <updated>2012-09-14T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;It seems that it is that time of year again, when Juliano and Thai present their most recent attack against crypto system. Last year, it was &lt;a
href=&quot;/2011/10/mitigating-the-beast-attack-on-tls.html&quot;&gt;BEAST&lt;/a&gt;. This year, it&apos;s CRIME, a practical attack against how TLS is used in browsers. In a wider sense, the same attack conceptually applies to any encrypted protocol where the attacker controls what is being communicated.&lt;/p&gt;

&lt;p&gt;Initially, it was only known that the attack builds on top of an information leakage weakness, and the full results were going to be revealed at the talk at &lt;a href=&quot;http://www.ekoparty.org/eng/2012/thai-duong.php&quot;&gt;Ekoparty on September 21&lt;/a&gt;. Funnily enough, the details that were revealed themselves &quot;leaked&quot; and were sufficient for the experts to understand what is going on: On StackExchange, &lt;a href=&quot;http://security.stackexchange.com/questions/19911/crime-how-to-beat-the-beast-successor&quot;&gt;Thomas Pornin speculated that it was about compression&lt;/a&gt;. An &lt;a href=&quot;http://www.iacr.org/cryptodb/archive/2002/FSE/3091/3091.pdf&quot; target=&quot;_self&quot;&gt;academic paper from 2002&lt;/a&gt; (PDF) was revealed. A &lt;a href=&quot;http://pastebin.com/qZdNYgfr&quot; target=&quot;_self&quot;&gt;proof of concept was submitted by xorninja&lt;/a&gt;, and &lt;a href=&quot;https://gist.github.com/3696912&quot; target=&quot;_self&quot;&gt;improved by Krzysztof Kotowicz&lt;/a&gt;. &lt;a href=&quot;http://arstechnica.com/security/2012/09/crime-hijacks-https-sessions/&quot; target=&quot;_self&quot;&gt;Dan Goodin wrote a great summary&lt;/a&gt; of what was known at the time, and included a video of the demonstration. Finally, &lt;a href=&quot;http://threatpost.com/en_us/blogs/crime-attack-uses-compression-ratio-tls-requests-side-channel-hijack-secure-sessions-091312&quot; target=&quot;_self&quot;&gt;Threat Post published a confirmation&lt;/a&gt; from Juliano and Thai that was indeed compression.&lt;/p&gt;

&lt;h3&gt;What is the problem?&lt;/h3&gt;
&lt;p&gt;
The root cause of the problem is information leakage that occurs when data is compressed prior to encryption. If someone can repeatedly inject and mix arbitrary content with some sensitive and relatively predictable data, and observe the resulting encrypted stream, then she will be able to extract the unknown data from it.
&lt;/p&gt;
&lt;p&gt;
In practice, the attack works best against session cookies. If a man-in-the-middle (MITM) attacker 1) can observe network traffic, and 2) manipulate the victim&apos;s browser to submit requests to the target site, she can, as a result, steal the site&apos;s cookies, and thus hijack the victim&apos;s session. In the current form, the exploit uses JavaScript and needs 6 requests to extract one byte of data. The use of JavaScript is desired, but not required: simple &amp;lt;img&amp;gt; tags can do the job just as well, although with a performance penalty.&lt;/p&gt;
&lt;h3&gt;How bad is it?&lt;/h3&gt;
&lt;p&gt;
Several aspects need to come together for CRIME to be widely exploited.
First of all, there has to be server-side support for compression of request data before encryption. TLS supports DEFLATE compression (not to be confused with HTTP response compression, which is very popular, but not vulnerable to CRIME), but not all servers implement it. SSL Labs tests across the &lt;a href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot; target=&quot;_self&quot;&gt;SSL Pulse data set &lt;/a&gt;indicate that about &lt;strong&gt;42% of the servers support TLS compression&lt;/strong&gt;. The servers include some of the most popular sites in the world.
&lt;/p&gt;
&lt;p&gt;
Another possibility is that the newer protocol, SPDY, is also vulnerable, because it has a separate mechanism for request header compression. In that case, all servers that support SPDY would be potentially vulnerable. SPDY is a young protocol and not very widely supported, but the sites that do support it are typically larger properties. SSL Labs is currently half way in measuring the support for SPDY across the SSL Pulse data set, but we&apos;re currently seeing &lt;strong&gt;SPDY support at &lt;strike&gt;0.8&lt;/strike&gt;2%&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
The second requirement is that client-side also supports compression, and here we will find that the situation is much better. The only browser to properly support TLS compression is Chrome. As for SPDY, both Chrome and Firefox support it. However, it is understood that both Chrome and Firefox have removed support for TLS compression in their most recent updates. (For Firefox, it&apos;s even not clear if it was ever enabled.) SSL Labs runs a passive SSL fingerprinting tool called sslhaf. Using it we were able to estimate that &lt;strong&gt;only about 7% of browsers support compression at this point&lt;/strong&gt;. This is on our site, which gets a higher portion of the traffic from Chrome and Firefox users. Analysing the logs, we could see traces of Chrome, and, it seems, some mobile browsers. It is not clear if there were any changes to the SPDY implementation in Chrome and Firefox, but it is reasonable to expect that there will be.
&lt;/p&gt;
&lt;p&gt;
The third requirement for wide exploitation is an easy to use exploitation tool. Unlike BEAST, CRIME seems much easier to exploit; we&apos;ve already seen a simple proof of concept, and so it&apos;s likely that we will see a complete tool soon, maybe as a fork of &lt;a href=&quot;http://www.thoughtcrime.org/software/sslstrip/&quot; target=&quot;_self&quot;&gt;sslstrip&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Taking all of the above in the account, CRIME will be easy to exploit, but it will be harder to find vulnerable clients. Internet Explorer, Safari, and Opera do not seem to be affected. Chrome and Firefox seem to be, but they use automatic updates, so I expect that the majority of the user base will upgrade to the patched versions. The vulnerable clients will thus be restricted to those using older clients.
&lt;/p&gt;
&lt;p&gt;
Further, unlike BEAST, which requires a manual intervention to mitigate, CRIME will be easier to patch. I expect most vendors will simply disable TLS compression.
&lt;/p&gt;
&lt;h3&gt;What to do?&lt;/h3&gt;
&lt;p&gt;
First of all, if you&apos;re using an older Chrome or Firefox, upgrade to the most recent version. If you&apos;re operating a web site, use the &lt;a href=&quot;https://www.ssllabs.com/ssltest/&quot; target=&quot;_self&quot;&gt;SSL Labs assessment tool&lt;/a&gt; to determine if your site supports TLS compression and SPDY (look for &lt;strong&gt;Compression&lt;/strong&gt; and &lt;strong&gt;Next Protocol Support&lt;/strong&gt; on the results page, towards the bottom). If you think the risk is too high, disable compression if your web software allows you to do it. (If they don&apos;t today, they will soon.)
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update (15 Sep 2012)&lt;/strong&gt; In &lt;a href=&quot;http://isecpartners.com/blog/2012/9/14/details-on-the-crime-attack.html&quot; target=&quot;_self&quot;&gt;Details on the &quot;CRIME&quot; attack&lt;/a&gt;, iSec Partners give a very good overview of which browsers are vulnerable, and how to disable compression server side. &lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2012/07/how-good-is-client-side-support-for-rc4</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2012/07/how-good-is-client-side-support-for-rc4.html"/>
    <title>How good is client-side support for RC4?</title>
    <published>2012-07-17T00:00:00+01:00</published>
    <updated>2012-07-17T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;When it comes to the mitigation of the BEAST attack against SSL/TLS, the usual advice is to &lt;a href=&quot;https://community.qualys.com/blogs/securitylabs/2011/10/17/mitigating-the-beast-attack-on-tls&quot;&gt;prioritize RC4 cipher suites&lt;/a&gt; in order to avoid CBC suites, which are vulnerable. In some cases, companies may even have to use RC4 suites exclusively. For example, I&apos;ve recently heard of a case where a company was failed on its PCI compliance test because they had non-RC4 cipher suites enabled in their configuration.&lt;/p&gt;

&lt;p&gt;When RC4 prioritization is discussed, people often seek assurance that RC4 is widely supported. Obviously, if you are going to disable a large number of cipher suites, you start to worry if the remaining suites are going to be sufficient for your user base. Until recently, I had no answer to those questions. Even though all major browsers support RC4 by default, there was no way to quantify the support. Further, some browsers allow users to turn off certain cipher suites, and we just didn&apos;t know what the situation on the ground was.&lt;/p&gt;

&lt;p&gt;About two months ago I re-enabled &lt;a href=&quot;https://www.ssllabs.com/projects/client-fingerprinting/index.html&quot;&gt;mod_sslhaf &lt;/a&gt;on the SSL Labs web server. This Apache module, a project of &lt;a href=&quot;https://www.ssllabs.com/&quot;&gt;SSL Labs&lt;/a&gt;, records all cipher suites offered by clients. Today I looked at the results, curious to find out exactly how many of the SSL Labs clients supported RC4. I choose to compare the total number of unique IP addresses against the number of IP addresses that did not support TLS_RSA_WITH_RC4_128_MD5 (0x04) or TLS_RSA_WITH_RC4_128_SHA (0x05).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In about two months, SSL Labs saw 48,481 unique IP addresses. Only 45 of those -- or 0.09% -- did not support RC4.&lt;/strong&gt; Looking at the user agent information, the clients not supporting RC4 seem to be largely those whose users decided to explicitly disable RC4 for one reason or another.&lt;/p&gt;

&lt;p&gt;The usual disclaimer applies here: the sample is taken from the SSL Labs web site and may not apply to other sites. However, if the assumption that the only non RC4 clients are those where this cipher suite was disabled by their owners, you could argue that an average site will see an even smaller number of non-compatible clients.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2012/05/my-infosecurity-london-2012-ssl-panel-notes</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2012/05/my-infosecurity-london-2012-ssl-panel-notes.html"/>
    <title>My Infosecurity London 2012 SSL Panel Notes</title>
    <published>2012-05-23T00:00:00+01:00</published>
    <updated>2012-05-23T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;em&gt;Last month, &lt;a href=&quot;https://www.globalsign.com&quot;&gt;GlobalSign&lt;/a&gt; invited me to participate on an SSL Panel at Infosecurity London. Other participants were David Holmes (F5), Ryan Hurst (GlobalSign), and Steve Roylance (GlobalSign, moderator). These are my rough notes. I hope you will find them interesting.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Can you tell us about yourself and why you’re here?&lt;/h3&gt;
&lt;p&gt;In 2009 I quit my job (because I had become bored), and I decided to work on something I can be passionate about. As it happens, that something was SSL. I had discovered SSL a few years before, while working on my book Apache Security, and always wanted to go back to it, to research it in more detail. To my dismay, I discovered that SSL, arguably the most important security protocol on the planet, is poorly documented, difficult to configure correctly, and that there are no tools to test SSL configurations. That&amp;#39;s when SSL Labs was born. Today, SSL Labs offers the best assessment platform and for free. In the past 2 years we&amp;#39;ve conducted several large-scale surveys of public SSL implementation in an effort to understand exactly where we are, when it comes to the security of the Web.&lt;/p&gt;
&lt;h3&gt;Talk to us about your perspective on the last two years and the breaches at third-party trust providers?&lt;/h3&gt;
&lt;p&gt;I think that, in the last 2 years we learned that security is not static. It&amp;#39;s not something you work on, and then leave it behind. You know, SSL was designed in 1994, and, today, in 2012, remains essentially the same, conceptually. In the meantime, we saw the Web evolve, and evolve around SSL. The threat model of today is vastly different to the threat model of 1994. Eighteen years! So we dropped the ball. But I think that&amp;#39;s actually how things work, for us humans. We don&amp;#39;t think about security while it&amp;#39;s not a problem. As a result of that, security it becomes a real problem eventually, and &lt;em&gt;then&lt;/em&gt; we start to think about it. It&amp;#39;s a cycle; a never-ending cycle.&lt;/p&gt;
&lt;h3&gt;How would you describe the current situation of Public Trust on the Internet?&lt;/h3&gt;
&lt;p&gt;It&amp;#39;s not as bad as it seems. I think that, practically speaking, our biggest problem is not that we have too many CAs, but that we cannot yet build secure systems. The events from the last two years made us realise that any system can be broken into, and -- surprise, surprise -- even the CAs. Once you accept that, the obvious problem with Public Trust is that any one CA can create a certificate for any web site. Site owner&amp;#39;s permission is not even required. I am hopeful that that will be fixed with a new standard&amp;#0160; supporting public key pinning. Then, site owners will be able to say which CAs can issue certificates for their web sites.&lt;/p&gt;
&lt;h3&gt;Why aren’t Extended Validation certificates saving us now?&lt;/h3&gt;
&lt;p&gt;You know, back in the day, all certificates used to be &amp;quot;EV&amp;quot;. I remember very well jumping through many hoops to get a certificate -- so long ago I don&amp;#39;t even remember what year it was. I don&amp;#39;t think that many people realise that, prior to EV certs, there wasn&amp;#39;t a standard for certificate issuance. Today, there isn&amp;#39;t a standard for non-EV certificae issuance [we may get one officially any time now]. So I welcome EV certificates, because they connect your online presence to your off-line identity. That&amp;#39;s great, if you need it or if you want it. At the same time, DV certificates are getting cheaper, which is how it should be. The basic security of the communication channel should be available to everyone.&lt;/p&gt;
&lt;h3&gt;What is your take on the recent advances in cryptographic and protocol focused attacks?&lt;/h3&gt;
&lt;p&gt;The recent attacks against SSL are a sign of protocol maturity. The reality is that we are not smart enough to foresee all problems when we&amp;#39;re designing protocols. So the only way to arrive at something that is secure, is to give it our best shot, start to use it, and fix it as problems are discovered. The recent attacks against SSL demonstrate that people are looking at SSL, and that&amp;#39;s a great thing. That means that we&amp;#39;re improving. The sky is not falling; but please don&amp;#39;t tell everyone. I don&amp;#39;t mind the sensational headlines, because they get people&amp;#39;s attention. Without the headlines -- without fear -- we wouldn&amp;#39;t be able to improve security in the same way. For example, about 75% of all SSL sites are vulnerable to the BEAST attack. I wouldn&amp;#39;t mind seeing a sensationalist headline scaring everyone to improve their configuration. The reality is that we need more headlines and more working exploits. How CISO’s should approach trust providers and risk?  Choose a CA that you can trust, and a company for which certificate issuance is a significant business (revenue stream). Most of the risk is in-house, in which how you manage your certificates, configure your SSL servers, and implement your applications.&lt;/p&gt;
&lt;h3&gt;If you were to sit down with an IT manager today and talk to them about his biggest risks relating to SSL what would you tell them?&lt;/h3&gt;
&lt;p&gt;The biggest SSL-related risk is at the application layer. Your SSL server may be misconfigured today, but you can fix that very quickly. We have people testing themselves using our online assessment tool, getting a bad grade, improving their configuration and even getting a new certificate, just an hour later. And, to be honest, no one is attacking SSL directly. The real risk lies in the application layer, when applications use features that completely subvert SSL. It&amp;#39;s like SSL isn&amp;#39;t there. We conducted a deep survey of these issues last yar (in the most popular web sites), and the conclusion was that most sites are vulnerable, and SSL effectively useless. I have a lot of hope for declarative security measures. For example, HTTP Strict Transport Security is an emerging standard where you can declare that your application/site uses only SSL (never plain-text HTTP). That means that, even if your application contains implementation errors, you remain secure. I also have a lot of hope for new protocols, which will include SSL as a mandatory component. Eventually, we will migrate to an Internet that is 100% encrypted. I hope.&lt;/p&gt;
&lt;h3&gt;What do you think is the future of Public Trust?&lt;/h3&gt;
&lt;p&gt;Realistically speaking, I think we will stay pretty much where we are. Public Key Pinning will remove the most obvious problem. To change anything else -- that&amp;#39;s too much work for anyone&amp;#39;s taste. I would very much like to see browsers incorporate some elements of crowd-source (Covergence-style) trust for those who understand it. Password-based SSL authentication could be interesting.&lt;/p&gt;
&lt;h3&gt;What changes are being proposed to augment existing security technologies and how these changes may affect the industry?&lt;/h3&gt;
&lt;p&gt;We&amp;#39;ve seen many proposals, but not all of them are equally easy to implement. For example, there&amp;#39;s DNSSEC that implements a secure DNS, and DANE, which is a bridge between secure DNS and PKI. Because there is no doubt that we need a secure DNS, I have no doubt that DNSSEC will be widely deployed, eventually (it will take a few years). In the meantime, low-effort proposals, such as HSTS and Public Key Pinning, are likely to become practical. Technically speaking, other proposals can become reality, too, but they require a lot of lobbying and involve a lot of politics.&lt;/p&gt;
&lt;h3&gt;What do you think about DNSSEC and DANE?&lt;/h3&gt;
&lt;p&gt;There&amp;#39;s one aspect of DANE that I am not sure about, and that&amp;#39;s the ability to have valid certificates without CAs. It&amp;#39;s not that I like CAs very much, but we forget that the PKI infrastructure was designed to be independent of DNS. And, with DNSSEC, we will revert to only one trust root -- that in the DNS. On the other hand, everyone deserves basic security, and that&amp;#39;s something DNSSEC will most certainly achieve. The biggest problem is that with current CA-based ecosystem or with DNSSEC, site owners have no say.&lt;/p&gt;
&lt;h3&gt;What are the biggest problems of the security industry?&lt;/h3&gt;
&lt;p&gt;Our biggest problem is in having the security industry in the first place. Security is the business of the developers (used here in a wider sense, to mean those who implement things.) We have the security industry today only because those who are implementing our systems are not building security in. And that&amp;#39;s our biggest problem. It&amp;#39;s only when the economics of secure development improve that we are going to see substantial improvement in security. Apart from that, our biggest problem is complacency. For example, the CAs, who were (and are) getting serious money from issuing certificates, could have stayed on top of things. The could have tracked the threat model and reacted to new threats. (I don&amp;#39;t actually blame CAs for that. I mean, I do, but, ultimately, a wider community should take the responsibility.) Browser vendors could have fixed usability issues (rather than putting the burden of security on the shoulders of end users). And so on... We need our incentives aligned, so that it is in everyone&amp;#39;s interest to have better security.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2012/04/announcing-ssl-pulse</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2012/04/announcing-ssl-pulse.html"/>
    <title>Announcing SSL Pulse</title>
    <published>2012-04-30T00:00:00+01:00</published>
    <updated>2012-04-30T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;img align=&quot;right&quot; alt=&quot;&quot; border=&quot;0&quot; hspace=&quot;20&quot;
src=&quot;/images/pulse-announcement-screenshot-fragment.png&quot; /&gt;Last week we announced &lt;a href=&quot;https://www.trustworthyinternet.org/ssl-pulse/&quot; target=&quot;_self&quot;&gt;SSL Pulse&lt;/a&gt;, a continuously updated dashboard that is designed to show the state of the SSL ecosystem at a glance. While it is possible today to deploy SSL and to deploy it well, the process is difficult: the default settings are wrong, the documentation is lacking, and the diagnostic tools are inadequate. For these reasons, we cannot say that the Web is yet secure, but we hope that someday it will be. The purpose of SSL Pulse is to bring visibility to SSL implementation issues on the Web, and while businesses are starting to fix these issues we can keep track of progress made towards making SSL more robust and widely adopted on the Internet.&lt;/p&gt;
&lt;p&gt;SSL Pulse is based on the assessment technology and testing conducted by &lt;a href=&quot;https://www.ssllabs.com/&quot; target=&quot;_self&quot;&gt;SSL Labs&lt;/a&gt;. The underlying data set draws from the information on about 200,000 SSL web sites that represent the most popular web sites in the world. We cherry-picked only the most important data points, focusing especially on those aspects where improvements are needed. We have so far conducted only one round of testing, but, when the next month’s results become available, we will start to show historic values and hopefully see improvements for each data point.&lt;/p&gt;
&lt;p&gt;So what do the results tell us? Looking at the SSL Labs grades, which are designed to sum up the quality of SSL configuration, we can see that about 50% (99,903 sites) got an A, which is a good result. Previous global SSL Labs surveys reported about 33% well-configured sites, which means that more popular sites are better configured. Unfortunately, many of these A-grade sites (still) support insecure renegotiation (8,522 sites, or 8.5% of the well-configured ones) or are vulnerable to the BEAST attack (72,357 sites, or 72.4% of the well-configured ones). This leaves us with only 19,024 sites (or 9.59% of all sites) that are genuinely secure at this level of analysis.&lt;/p&gt;
&lt;p&gt;The number of sites vulnerable to insecure renegotiation is decreasing at a steady pace, as patches are applied or servers get replaced. The very high number of sites vulnerable to the BEAST attack is worrying, because this problem needs to be addressed in configuration, and that requires awareness, time, and knowledge. Plus, freshly installed systems are equally likely to be vulnerable because of the insecure defaults.&lt;/p&gt;
&lt;p&gt;Among other interesting data points, we found only 19 weak private keys in our data. There are also 9 keys that trigger our black list of weak Debian keys. The support for HTTP Strict Transport Security, which is the state of the art configuration for SSL, is at 0.85% (1,697 sites).&lt;/p&gt;
&lt;p&gt;As part of this effort, we also published an &lt;a href=&quot;https://www.ssllabs.com/projects/best-practices/index.html&quot; target=&quot;_self&quot;&gt;SSL/TLS Deployment Best Practices&lt;/a&gt; guide with clear and concise instructions to help overworked administrators and programmers spend the minimum time possible to deploy a secure site or web application.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2012/03/qualys-supports-reform-at-ca-browser-forum</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2012/03/qualys-supports-reform-at-ca-browser-forum.html"/>
    <title>Qualys supports reform at CA/Browser Forum</title>
    <published>2012-03-30T00:00:00+01:00</published>
    <updated>2012-03-30T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Last month, the &lt;a href=&quot;http://www.cabforum.org/&quot;&gt;CA/Browser Forum&lt;/a&gt; announced the creation of a working group that will focus on organizational reform. We welcome the announcement with open arms; the public PKI infrastructure needs more structure, collaboration, and visibility, and the CA/Browser Forum is in the best position to advance the robustness of the infrastructure in the short term.&lt;/p&gt;
&lt;p&gt;The PKI infrastructure has been evolving organically for too long, and, because of that, we are today faced with many of its structural cracks. The challenge now for the security community (not just the CA/Browser Forum) is to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;understand the complexities of the public PKI infrastructure, &lt;/li&gt;
&lt;li&gt;bring all the key stakeholders together, &lt;/li&gt;
&lt;li&gt;establish a system of governance that serves the collective interests, &lt;/li&gt;
&lt;li&gt;realign stakeholders&amp;#39; incentives to make the ecosystem stronger, &lt;/li&gt;
&lt;li&gt;in the short-term, resolve key structural and technical issues, &lt;/li&gt;
&lt;li&gt;maintain an up-to-date threat model and address weaknesses proactively, and, &lt;/li&gt;
&lt;li&gt;in the long-term, evolve the ecosystem to adequately address the real threats. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is no doubt that a reform is needed; what is not clear is how it will take place. To facilitate the change, the CA/Browser Forum will need to transform substantially, inviting a wide participation as well as embracing openness and transparency. There is already a large number of organizations and individuals working on improving the security of the PKI infrastructure; those efforts need to be streamlined, and the changes orchestrated.&lt;/p&gt;
&lt;p&gt;Some of the pressing issues that need to be addressed include the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The large attack surface stemming from a compromise of any one Certificate Authority &lt;/li&gt;
&lt;li&gt;Not enough visibility into the operation of Certificate Authorities &lt;/li&gt;
&lt;li&gt;Insufficiently defined operational requirements and auditing standards &lt;/li&gt;
&lt;li&gt;Lack of reliable control mechanisms and ability to deal with failures &lt;/li&gt;
&lt;li&gt;Low adoption rate of SSL/TLS across all web sites &lt;/li&gt;
&lt;li&gt;Numerous configuration and implementation issues that subvert security in those sites that did adopt SSL/TLS &lt;/li&gt;
&lt;li&gt;Inadequate browser SSL/TLS implementations that do not make security seamless and easy (instead pushing the burden of security onto the shoulders of the end users, who are not in the position to make informed decisions), but still make it difficult for advanced users (who are in the position to make informed decisions) to pursue alternative approaches &lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2012/03/ssl-and-browsers-the-pillars-of-broken-security</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2012/03/ssl-and-browsers-the-pillars-of-broken-security.html"/>
    <title>SSL and Browsers: The Pillars of Broken Security</title>
    <published>2012-03-07T00:00:00+00:00</published>
    <updated>2012-03-07T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Last week at the RSA Conference, Wolfgang and I gave a talk called &lt;em&gt;SSL and Browsers: The Pillars of Broken Security&lt;/em&gt;. We could have easily called it a &lt;em&gt;State of SSL&lt;/em&gt;, because we went through the most relevant SSL issues today, demonstrated the problems using the data from SSL Labs surveys, and discuss how the issues can be overcome. Here&amp;#39;s the talk summary:&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;em&gt;Recent attacks on browsers and certificate authorities for SSL have shown how fragile these systems are, yet we all depend on them while using the Internet on daily basis. This talk will explore the implementation flaws in the SSL protocol and the browsers that support it. The speakers will showcase extensive research collected from millions of websites that reveal the state of SSL and Browse Security on the Internet. The session will then explore the mitigation options for the problems we are experiencing today, and provide a framework in which we can solve future SSL security issues.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Get this slides here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://community.qualys.com/servlet/JiveServlet/download/38-9096/SSL_and_Browsers-The_Pillars_of_Broken_Security.pdf&quot; target=&quot;_self&quot;&gt;SSL and Browsers: The Pillars of Broken Security&lt;/a&gt; (PDF, 4 MB)&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2012/02/announcing-the-ssl-tls-deployment-best-practices-guide</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2012/02/announcing-the-ssl-tls-deployment-best-practices-guide.html"/>
    <title>Announcing the SSL/TLS Deployment Best Practices guide</title>
    <published>2012-02-23T00:00:00+00:00</published>
    <updated>2012-02-23T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;SSL/TLS is a deceptively simple technology. It is easy to deploy, and it just works . . . except that it does not, really. The first part is true—SSL is easy to deploy—but it turns out that it is not easy to deploy correctly. To ensure that SSL provides the necessary security, users must put more effort into properly configuring their servers.&lt;/p&gt;
&lt;p&gt;In 2009, we began our work on SSL Labs because we wanted to understand how SSL was used and to remedy the lack of easy-to-use SSL tools and documentation. We have achieved some of our goals through our global surveys of SSL usage, as well as the online assessment tool, but the lack of documentation is still evident. This document is a first step toward addressing that problem.&lt;/p&gt;
&lt;p&gt;Our aim here is to provide clear and concise instructions to help overworked administrators and programmers spend the minimum time possible to obtain a secure site or web application. In pursue of clarity, we sacrifice completeness, foregoing certain advanced topics. The focus is on advice that is practical and easy to understand. For those interested in advanced topics, we provide references at the end of the guide.&lt;/p&gt;
&lt;p&gt;Download the guide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices_1.0.pdf&quot;&gt;SSL/TLS Deployment Best Practices&lt;/a&gt; (PDF, 500 KB) &lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2011/10/tls-renegotiation-and-denial-of-service-attacks</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2011/10/tls-renegotiation-and-denial-of-service-attacks.html"/>
    <title>TLS Renegotiation and Denial of Service Attacks</title>
    <published>2011-10-31T00:00:00+00:00</published>
    <updated>2011-10-31T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;A group of hackers known as THC (The Hacker&amp;#39;s Choice) last week &lt;a href=&quot;http://www.thc.org/thc-ssl-dos/&quot;&gt;released an interesting DoS tool&lt;/a&gt; that works at the SSL/TLS layer. The tool is exploiting the fact that, when a new SSL connection is being negotiated, the server will typically spend significantly more CPU resources than the client. Thus, if you are requesting many new SSL connections per second, you may end up using all of the server&amp;#39;s CPU.&lt;/p&gt;
&lt;p&gt;The issue abused by the tool is not new, but what is new is that we now have a well publicised working exploit, and that always makes you pay attention. In addition, the tool uses the renegotiation feature, which means that it can force a server to perform many expensive cryptographic operations over a single TCP connection. It&amp;#39;s not clear if the relying on renegotiation helps with the DoS attack (there&amp;#39;s a &lt;a href=&quot;http://www.educatedguesswork.org/2011/10/ssltls_and_computational_dos.html&quot;&gt;very good analysis of the trade-offs on Eric Rescorla&amp;#39;s blog&lt;/a&gt;), however the fact that external DoS mitigation tools (e.g., rate limiting setups) are only seeing one TCP connection certainly helps with avoiding detection.&lt;/p&gt;
&lt;p&gt;But that&amp;#39;s only if your server supports client-initiated renegotiation. If it does not, anyone wishing to perform a DoS attack against the SSL layer will have to fall back to using one TCP connection for one SSL connection. IIS, for example, does not support client-initiated renegotiation. Apache used to, but changed its behaviour when implementing RFC 5746 (which fixed the &lt;a href=&quot;http://blog.ivanristic.com/2009/11/ssl-and-tls-authentication-gap-vulnerability-discovered.html&quot;&gt;TLS Authentication Gap problem&lt;/a&gt;). Even if you depend on a product that does support client-initiated renegotiation, chances are you can easily disable that feature. And, when you do, you are not going to miss it (unlike server-initiated renegotiation, which some sites that require client certificates might need).&lt;/p&gt;
&lt;p&gt;&lt;span&gt;To help you with assessing your systems for this weakness, we have updated the &lt;/span&gt;&lt;span&gt;&lt;a href=&quot;https://www.ssllabs.com/ssldb/&quot;&gt;SSL Labs assessment tool&lt;/a&gt; to test not only if secure renegotiation is supported (which we&amp;#39;ve been testing for some time now), but also to check if secure client-initiated renegotiation is &lt;em&gt;enabled&lt;/em&gt;. Previously we only tested for insecure client-initiated renegotiation.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The sensible thing to do is to check for client-initiated renegotiation support in your servers, and disable it where possible. Although that won&amp;#39;t substantially help you overall (defending against DoS attacks is notoriously difficult and expensive), it will harden your defences against this particular technique. &lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2011/10/mitigating-the-beast-attack-on-tls</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2011/10/mitigating-the-beast-attack-on-tls.html"/>
    <title>Mitigating the BEAST attack on TLS</title>
    <published>2011-10-17T00:00:00+01:00</published>
    <updated>2011-10-17T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
&lt;span style=&quot;background-color: #ffffbf&quot;&gt;&lt;b&gt;Update (19 March 2013):&lt;/b&gt; This blog post advises to use RC4 to migitate the
BEAST attack, but RC4 has recently been discovered to be weaker than
previously known. At this point the attacks against RC4 are still not
practical. The only fully safe choice at the moment is the AES-GCM suites
supported only in TLS 1.2. You can &lt;a
href=&quot;http://blog.ivanristic.com/2013/03/rc4-in-tls-is-broken-now-what.html&quot;&gt;find out more in this new blog
post&lt;/a&gt;&lt;/span&gt;.
&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;During the summer rumours about a new attack against SSL started circulating. Then Opera released a patch, but made no comment about what it was patching. Eventually enough information leaked out that some &lt;a href=&quot;http://www.ietf.org/mail-archive/web/tls/current/msg08032.html&quot; target=&quot;_self&quot;&gt;smart people figured what the attack was about&lt;/a&gt;. What remained unknown was the exact technique used in the proof of concept, and that was eventually explained in &lt;a href=&quot;http://vnhacker.blogspot.com/2011/09/beast.html&quot; target=&quot;_self&quot;&gt;Thai&amp;#39;s blog post&lt;/a&gt;. For a comprehensive overview of related links, go to &lt;a href=&quot;http://blog.zoller.lu/2011/09/beast-summary-tls-cbc-countermeasures.html&quot; target=&quot;_self&quot;&gt;Thierry Zoller&amp;#39;s blog post on BEAST&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As it turns out, the attack itself was conceived years ago, deemed impractical, but it was nevertheless fixed in TLS 1.1. The new attack technique introduced a few optimizations to make it practical.&lt;/p&gt;
&lt;p&gt;In terms of mitigation, I expect this problem will be largely addressed on the client side, despite a potential compatibility problem that may cause some TLS sites to stop working. The only reliable way to defend against BEAST is to prioritise RC4 cipher suites, as &lt;a href=&quot;http://www.phonefactor.com/blog/slaying-beast-mitigating-the-latest-ssltls-vulnerability.php&quot; target=&quot;_self&quot;&gt;proposed by PhoneFactor&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Just as an example, here&amp;#39;s one way to do the above in Apache:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SSLHonorCipherOrder On&lt;br /&gt;SSLCipherSuite RC4-SHA:HIGH:!ADH&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Not everyone likes RC4, even though there is &lt;a href=&quot;http://blog.ivanristic.com/2009/08/is-rc4-safe-for-use-in-ssl.html&quot; target=&quot;_self&quot;&gt;little to no evidence&lt;/a&gt; that it is insecure in the context of SSL/TLS. If your server supports TLS 1.2+ you can try the approach recommended by Steve Caligo:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SSLHonorCipherOrder On&lt;br /&gt;SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The idea is that you put a few TLS 1.2 cipher suites first so that they can be picked up by TLS 1.2 clients, which are not vulnerable, followed by RC4 for TLS 1.0 clients.&lt;/p&gt;
&lt;p&gt;Now that I&amp;#39;ve discussed what works as mitigation, let&amp;#39;s look at a few approaches that do not work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supporting TLS 1.1+ server-side is a good start, but does not amount to much because very few clients support newer versions of the protocol at this time. And even with TLS 1.1+ support client-side, there&amp;#39;s nothing preventing the MITM to force a protocol downgrade back to TLS 1.0. (For a discussion on defense techniques against downgrade attacks, see &lt;a href=&quot;http://www.ietf.org/mail-archive/web/tls/current/msg08099.html&quot; target=&quot;_self&quot;&gt;this thread on the TLS WG mailing list&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Enabling the empty fragment technique server-side (&lt;a href=&quot;http://www.openssl.org/~bodo/tls-cbc.txt&quot; target=&quot;_self&quot;&gt;details for OpenSSL here&lt;/a&gt;) does not work either. TLS 1.0 uses two initialisation vectors (IVs), one each for client- and server-side of the communication channel. The vulnerability exploited by BEAST is on the client-side and cannot be addressed by making server-side changes to how data is sent.&lt;/li&gt;
&lt;li&gt;Compression is said to make the attack impossible, but, as with TLS 1.1+, the support for it client-side is inconsistent.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Update (20 Jan 2012)&lt;/strong&gt;: In testing OpenSSL 1.0.1-beta2, which came out yesterday, I realised that it will happily negotiate &lt;code&gt;AES-CBC-SHA256&lt;/code&gt; even on a TLSv1.0 connection. So I removed it from the recommendation, replacing it with two other TLSv1.2 cipher suites.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2011/09/ssl-labs-announcing-launch-of-two-convergence-notaries</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2011/09/ssl-labs-announcing-launch-of-two-convergence-notaries.html"/>
    <title>SSL Labs: Announcing launch of two Convergence notaries</title>
    <published>2011-09-29T00:00:00+01:00</published>
    <updated>2011-09-29T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;img src=&quot;/images/convergence-site-corner.png&quot; border=&quot;1&quot; hspace=&quot;20&quot; align=&quot;right&quot; /&gt;&lt;a href=&quot;http://convergence.io&quot; target=&quot;_self&quot;&gt;Convergence&lt;/a&gt; is &lt;a href=&quot;http://www.thoughtcrime.org&quot; target=&quot;_self&quot;&gt;Moxie Marlinspike&lt;/a&gt;&apos;s attempt to introduce fresh thinking into the debate about PKI, certificate authorities, and trust. A hint of what was in the works was in a blog post published in April (&lt;a href=&quot;http://blog.thoughtcrime.org/ssl-and-the-future-of-authenticity&quot; target=&quot;_self&quot;&gt;SSL And The Future Of Authenticity&lt;/a&gt;); the project was launched at Black Hat US in August. Moxie&apos;s talk (here&apos;s the &lt;a href=&quot;http://www.youtube.com/watch?v=Z7Wl2FW2TcA&quot; target=&quot;_self&quot;&gt;video on YouTube&lt;/a&gt;) was entertaining and insightful.&lt;/p&gt;
&lt;p&gt;Moxie advertises the project as a way of dispensing with certificate authorities (&quot;An agile, distributed, and secure strategy for replacing Certificate Authorities&quot;). At the first glance that&apos;s true. You get a browser add-on (only Firefox for the time being) that, once activated, completely replaces the existing CA infrastructure. Whenever you visit an SSL site your browser will talk to two or more remote parties (notaries) and ask them to check the site&apos;s certificate for you. If they both see the same certificate you decide to trust the site.&lt;/p&gt;
&lt;p&gt;But when you dig deeper into the project, you realise that it consists of two parts. The first, and more important, part is the ability to delegate trust decisions from your browser to another party that&apos;s remote to you. That means that you are no longer forced to accept the decisions of the browser vendors, but you can make your own. That ability is, for me, the most thrilling aspect of the project.&lt;/p&gt;
&lt;p&gt;The second part of the project is the current backend implementation that makes trust decisions. The approach is great in its simplicity: if you can see the same certificate from several different locations you conclude that it must be the correct certificate. We mustn&apos;t rush, however. We&apos;ve just been given the ability to choose whom to trust, and it&apos;s too soon to settle on any one implementation. I am far more interested in experimenting with different approaches, to see what works and what does not.&lt;/p&gt;
&lt;p&gt;To that end, it makes me very happy to announce that we (Qualys) have decided to support Convergence by financing and running two notary servers. While it&apos;s not yet clear if Convergence can succeed (there are many technological and adoption challenges to conquer), we want to play a part in it and help it succeed.&lt;/p&gt;
&lt;p&gt;Finally, here are the links to the notary servers (one of which is in the US and the other in Europe):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.ssllabs.com/convergence/notary-eu.convergence.qualys.com.notary&quot; target=&quot;_self&quot;&gt;https://www.ssllabs.com/convergence/notary-eu.convergence.qualys.com.notary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.ssllabs.com/convergence/notary-us.convergence.qualys.com.notary&quot; target=&quot;_self&quot;&gt;https://www.ssllabs.com/convergence/notary-us.convergence.qualys.com.notary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; To use the above links, you have to have the Convergence plugin installed. After that, all you need to do is click on the links and the notaries will become part of your configuration. Please report any problems to convergence-notary@qualys domain name.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2011/09/key-ssl-tls-mailing-lists-to-follow</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2011/09/key-ssl-tls-mailing-lists-to-follow.html"/>
    <title>Key SSL/TLS mailing lists to follow</title>
    <published>2011-09-26T00:00:00+01:00</published>
    <updated>2011-09-26T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;The best way to really learn about SSL/TLS and related topics is to follow the discussions on the key technology mailing lists. These lists are always interesting, but especially so in turbulent times, when the value of participation simply goes through the roof.&lt;/p&gt;
&lt;p&gt;The key mailing lists are the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://datatracker.ietf.org/wg/tls/charter/&quot; target=&quot;_self&quot;&gt;Transport Layer Security Working Group&lt;/a&gt; (core protocols); &lt;a href=&quot;http://www.ietf.org/mail-archive/web/tls/current/maillist.html&quot; target=&quot;_self&quot;&gt;list archive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tools.ietf.org/wg/websec/&quot; target=&quot;_self&quot;&gt;Web Security Working Group&lt;/a&gt; (HSTS); &lt;a href=&quot;http://www.ietf.org/mail-archive/web/websec/current/maillist.html&quot; target=&quot;_self&quot;&gt;list archive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.eff.org/observatory&quot; target=&quot;_self&quot;&gt;SSL Observatory&lt;/a&gt; (trust ecosystem); &lt;a href=&quot;https://mail1.eff.org/pipermail/observatory/&quot; target=&quot;_self&quot;&gt;list archive&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The list archives are publicly available, so there&amp;#39;s not even a need to subscribe.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2011/09/ssl-survey-protocol-support</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2011/09/ssl-survey-protocol-support.html"/>
    <title>SSL Survey: How many sites support TLS 1.1 and better?</title>
    <published>2011-09-23T00:00:00+01:00</published>
    <updated>2011-09-23T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;In the last two weeks there&apos;s been a lot of chatter about a new attack against SSL and a tool called BEAST. You can find some coverage &lt;a href=&quot;http://www.h-online.com/security/news/item/Tool-cracks-SSL-cookies-in-just-ten-minutes-1346387.html&quot; target=&quot;_self&quot;&gt;here&lt;/a&gt;, &lt;a href=&quot;http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl/&quot; target=&quot;_self&quot;&gt;here&lt;/a&gt;, and &lt;a href=&quot;http://threatpost.com/en_us/blogs/new-attack-breaks-confidentiality-model-ssl-allows-theft-encrypted-cookies-091911&quot; target=&quot;_self&quot;&gt;here&lt;/a&gt;. The public has not seen any details of the attack yet (they are expected to be released at the &lt;a href=&quot;http://www.ekoparty.org/2011/juliano-rizzo.php&quot; target=&quot;_self&quot;&gt;ekoparty security conference&lt;/a&gt;), but crypto experts have &lt;a href=&quot;http://www.ietf.org/mail-archive/web/tls/current/msg08032.html&quot; target=&quot;_self&quot;&gt;a good idea what it is&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As it appears that the attack wouldn&apos;t work against TLS 1.1 and better, suddenly everyone is interested in how many web sites support the newer protocol versions. &lt;em&gt;Virtually none&lt;/em&gt;. To illustrate, I am including a slide from my recent Black Hat presentation, where you will see that, even though TLS 1.1 is a 5-year old protocol, there is virtually no support for it.&lt;/p&gt;
&lt;p&gt;If you&apos;re interested in what exactly is supported in various products, Thierry Zoller has &lt;a href=&quot;http://blog.zoller.lu/2011/09/tlsssl-hardening-and-compatibility.html&quot; target=&quot;_self&quot;&gt;a very good overview&lt;/a&gt;. If you want to know more about how SSL is deployed in practice, read our &lt;a href=&quot;http://blog.ivanristic.com/2011/05/a-study-of-what-really-breaks-ssl.html&quot; target=&quot;_self&quot;&gt;full survey results&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/SSL-Survey-April-2011_Protocol-Support.png&quot; border=&quot;1&quot; alt=&quot;&quot; width=&quot;707&quot; height=&quot;527&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: The above slides shows results from an analysis of about 300,000 SSL sites from Alexa&apos;s top 1m most popular list. In a separate analysis we also looked at all SSL sites (1.2 million of them), and the numbers are practically identical.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2011/08/so-what-really-breaks-ssl</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2011/08/so-what-really-breaks-ssl.html"/>
    <title>So, what really breaks SSL?</title>
    <published>2011-08-09T00:00:00+01:00</published>
    <updated>2011-08-09T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;After years of being ignored -- which is an unusual situation for the protocol that secures the Web -- SSL became the focus of the interests of the security community at some point in 2008 or thereabout. From then on, a couple of months wouldn&amp;#39;t pass between discoveries of one flaw or another. Most problems were with the way SSL is implemented, with one notable exception (the SSL/TLS renegotiation gap) in the protocol itself. As a result of this attention, the effective security of SSL has been continuously improving.&lt;/p&gt;
&lt;p&gt;However, for an average web site, the security of the communication channel is rarely compromised by attackers using advanced exploitation techniques. On the contrary, the compromises virtually always come from the flaws in the way SSL is deployed. These problems are created by those implementing and maintaining web sites. And, in most cases, they can relatively easily be fixed.&lt;/p&gt;
&lt;p&gt;In the most recent round of our SSL research, &lt;a href=&quot;https://www.ssllabs.com&quot; target=&quot;_self&quot;&gt;SSL Labs&lt;/a&gt; focused on programming and deployment errors that compromise SSL security even when SSL is properly configured, with strong cryptographic primitives and up-to-date libraries. None of these issues are new: &lt;strong&gt;failure to use SSL&lt;/strong&gt; (when there is something worth protecting), &lt;strong&gt;mixing of encrypted and non-encrypted areas&lt;/strong&gt; in the same site, &lt;strong&gt;mixed page content&lt;/strong&gt;, &lt;strong&gt;insecure session cookies&lt;/strong&gt;, &lt;strong&gt;login forms delivered or submitted over HTTP&lt;/strong&gt;, and so on.&lt;/p&gt;
&lt;p&gt;Although we initially started with the idea to discover how many sites have weaknesses, we discovered that the situation is so bad that we ended up looking for sites that do not have weaknesses. And the number of such sites is very, very small. (You can find the details if you download our &lt;a href=&quot;http://blog.ivanristic.com/2011/05/a-study-of-what-really-breaks-ssl.html&quot; target=&quot;_self&quot;&gt;presentation slides&lt;/a&gt;.) Sites with support for &lt;a href=&quot;http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security&quot; target=&quot;_self&quot;&gt;Strict Transport Security&lt;/a&gt; are preciously rare.&lt;/p&gt;
&lt;p&gt;Why are the weaknesses so prevalent?&lt;/p&gt;
&lt;p&gt;On one level, problems come from the way web &amp;quot;standards&amp;quot; have evolved. Slowly, over many years, and without a coherent security strategy. The truth is, it is very easy to break SSL with mistakes that occur on the HTTP level. Thus, our challenge here, short term, is that of education -- making developers aware of these issues.&lt;/p&gt;
&lt;p&gt;Businesses are not exactly rushing to secure their sites, either, because there is often little incentive for them to do that. Their money (of which there is never enough), is almost always &amp;quot;better&amp;quot; spent doing other things. As a result, companies today spend on security only when they can&amp;#39;t avoid it.&lt;/p&gt;
&lt;p&gt;Long term, our only option is to incrementally improve our technology stack to build communication channel security in. Once the option to communicate via plain-text is taken away, there will be no way to subvert SSL. This is a tough goal to achieve, but the journey has already started. A security conscientious site operator can today deploy state of the art SSL configuration (which isn&amp;#39;t that difficult, by the way), and achieve pretty good SSL security. Over time, the hope is that we will migrate to better communication protocol that embed SSL in, and that, once communication security becomes invisible, we won&amp;#39;t have to worry about it any more.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2011/05/a-study-of-what-really-breaks-ssl</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2011/05/a-study-of-what-really-breaks-ssl.html"/>
    <title>A study of what really breaks SSL</title>
    <published>2011-05-25T00:00:00+01:00</published>
    <updated>2011-05-25T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Earlier this year, we at SSL Labs conducted a second, much deeper survey of SSL usage. (I can now say &quot;we&quot; and really mean it, because most of the work on the survey was done by my Qualys coleague, Michael Small.) I presented the results last week at &lt;a href=&quot;http://conference.hackinthebox.org/hitbsecconf2011ams/&quot; target=&quot;_self&quot;&gt;Hack In the Box Amsterdam&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;em&gt;
&lt;p&gt;We love security metrics because they tell us what really goes on out there. Last year we conducted an analysis of millions of SSL servers, showing, for the first time, how SSL is really used. This year we are pushing our study further by deepening and expending our efforts in several key areas. We will be looking at the problems that really break SSL — insecure session cookies, mixed content, incorrect site configuration, and distribution of trust to third-party sites. The best crypto in the world is not going to help a site that has flaws in these critical areas.&lt;/p&gt;
&lt;p&gt;To discover these flaws we are building a custom site crawler, which we are then going to run against the world’s 1 million most used web sites. In addition to all that, we are expanding the scope of the study to include protocols other than HTTP, as well as basing our assessment on an updated version of the rating guide. The end result? We are finally going to find out how useful SSL really is.&lt;/p&gt;
&lt;/em&gt;&lt;/blockquote&gt;
&lt;p&gt;Get the slides here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.ivanristic.com/Qualys_SSL_Labs-A_Study_of_Really_Breaks_SSL-HITB_Amsterdam_2011.pdf&quot; target=&quot;_self&quot;&gt;A study of what really breaks SSL&lt;/a&gt; (PDF)&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2011/04/fresh-internet-ssl-survey-results-april-2011-available</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2011/04/fresh-internet-ssl-survey-results-april-2011-available.html"/>
    <title>Fresh Internet SSL Survey results (April 2011) available</title>
    <published>2011-04-27T00:00:00+01:00</published>
    <updated>2011-04-27T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Last week I attended InfoSec World and presented an update to our global survey of SSL configuration. I present the slides for your enjoyment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/downloads/Qualys_SSL_Labs-State_of_SSL_InfoSec_World_April_2011.pdf&quot; target=&quot;_self&quot;&gt;Qualys SSL Labs State of SSL InfoSec World April 2011&lt;/a&gt; (PDF)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An analysis will follow shortly.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2011/01/unfortunate-current-practices-for-http-over-tls</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2011/01/unfortunate-current-practices-for-http-over-tls.html"/>
    <title>Unfortunate current practices for HTTP over TLS</title>
    <published>2011-01-19T00:00:00+00:00</published>
    <updated>2011-01-19T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;This is such a good summary of the current state of SSL in web servers from Adam Langley, that I couldn&amp;#39;t resist preserving it here in full. Enjoy.&lt;/p&gt;
&lt;p&gt;&amp;#0160;&lt;/p&gt;
&lt;pre&gt;Network Working Group                                         A. Langley&lt;br /&gt;Internet-Draft                                                Google Inc&lt;br /&gt;Expires: July 5, 2011                                           Jan 2011&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            Unfortunate current practices for HTTP over TLS&lt;br /&gt;                      draft-agl-tls-oppractices-00&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;&lt;br /&gt;   This document describes some of the unfortunate current practices&lt;br /&gt;   which are needed in order to transport HTTP over TLS on the public&lt;br /&gt;   Internet.&lt;br /&gt;&lt;br /&gt;Status of this Memo&lt;br /&gt;&lt;br /&gt;   This Internet-Draft is submitted to IETF in full conformance with the&lt;br /&gt;   provisions of BCP 78 and BCP 79.&lt;br /&gt;&lt;br /&gt;   Internet-Drafts are working documents of the Internet Engineering&lt;br /&gt;   Task Force (IETF), its areas, and its working groups.  Note that&lt;br /&gt;   other groups may also distribute working documents as Internet-&lt;br /&gt;   Drafts.&lt;br /&gt;&lt;br /&gt;   Internet-Drafts are draft documents valid for a maximum of six months&lt;br /&gt;   and may be updated, replaced, or obsoleted by other documents at any&lt;br /&gt;   time.  It is inappropriate to use Internet-Drafts as reference&lt;br /&gt;   material or to cite them other than as &amp;quot;work in progress.&amp;quot;&lt;br /&gt;&lt;br /&gt;   The list of current Internet-Drafts can be accessed at&lt;br /&gt;   http://www.ietf.org/ietf/1id-abstracts.txt.&lt;br /&gt;&lt;br /&gt;   The list of Internet-Draft Shadow Directories can be accessed at&lt;br /&gt;   http://www.ietf.org/shadow.html.&lt;br /&gt;&lt;br /&gt;   This Internet-Draft will expire on July 5, 2011.&lt;br /&gt;&lt;br /&gt;Copyright Notice&lt;br /&gt;&lt;br /&gt;   Copyright (c) 2011 IETF Trust and the persons identified as the&lt;br /&gt;   document authors.  All rights reserved.&lt;br /&gt;&lt;br /&gt;   This document is subject to BCP 78 and the IETF Trust&amp;#39;s Legal&lt;br /&gt;   Provisions Relating to IETF Documents&lt;br /&gt;   (http://trustee.ietf.org/license-info) in effect on the date of&lt;br /&gt;   publication of this document.  Please review these documents&lt;br /&gt;   carefully, as they describe your rights and restrictions with respect&lt;br /&gt;   to this document.  Code Components extracted from this document must&lt;br /&gt;   include Simplified BSD License text as described in Section 4.e of&lt;br /&gt;   the Trust Legal Provisions and are provided without warranty as&lt;br /&gt;   described in the BSD License.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Table of Contents&lt;br /&gt;&lt;br /&gt;   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3&lt;br /&gt;   2.  Handshake message fragmentation  . . . . . . . . . . . . . . .  4&lt;br /&gt;   3.  Protocol Fallback  . . . . . . . . . . . . . . . . . . . . . .  5&lt;br /&gt;   4.  More implementation mistakes . . . . . . . . . . . . . . . . .  6&lt;br /&gt;   5.  Certificate Chains . . . . . . . . . . . . . . . . . . . . . .  7&lt;br /&gt;   6.  Insufficient Security  . . . . . . . . . . . . . . . . . . . .  8&lt;br /&gt;   7.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  9&lt;br /&gt;   8.  Normative References . . . . . . . . . . . . . . . . . . . . . 10&lt;br /&gt;   Appendix A.  Changes . . . . . . . . . . . . . . . . . . . . . . . 11&lt;br /&gt;   Author&amp;#39;s Address . . . . . . . . . . . . . . . . . . . . . . . . . 12&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.  Introduction&lt;br /&gt;&lt;br /&gt;   HTTP [RFC2616] is one of the most common application level protocols&lt;br /&gt;   transported over TLS [RFC5246].  (This combination is commonly known&lt;br /&gt;   as HTTPS based on the URL scheme used to indicate it.)  HTTPS clients&lt;br /&gt;   have to function with a huge range of TLS implementations, some of&lt;br /&gt;   higher quality than others.  This text aims to document some of the&lt;br /&gt;   behaviours of existing HTTPS clients that are designed to ensure&lt;br /&gt;   maximum interoperability.&lt;br /&gt;&lt;br /&gt;   This text should not be taken as a recommendation that future HTTPS&lt;br /&gt;   clients adopt these behaviours.  The security implications of each&lt;br /&gt;   need to be carefully considered by each implementation.  However,&lt;br /&gt;   these behaviours are common and the authors consider it better to&lt;br /&gt;   document the state of practice than to simply wish it were otherwise.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.  Handshake message fragmentation&lt;br /&gt;&lt;br /&gt;   Many servers will fail to process a handshake message that spans more&lt;br /&gt;   than one record.  These servers will close the connection when they&lt;br /&gt;   encounter such a handshake message.  HTTPS clients will commonly&lt;br /&gt;   ensure against that by either packing all handshake messages in a&lt;br /&gt;   flow into a single record, or by creating a single record for each&lt;br /&gt;   handshake message.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.  Protocol Fallback&lt;br /&gt;&lt;br /&gt;   Despite it being nearly twelve years since the publication of TLS 1.0&lt;br /&gt;   [RFC2246], around 3% of HTTPS servers will reject a valid TLS&lt;br /&gt;   &amp;quot;ClientHello&amp;quot;.  These rejections can take the form of immediately&lt;br /&gt;   closing the connection or a fatal alert.  Intolerance to the&lt;br /&gt;   following has been observed:&lt;br /&gt;&lt;br /&gt;      Advertising version TLS 1.0.&lt;br /&gt;&lt;br /&gt;      Advertising a TLS version greater than TLS 1.0 (around 2% for 1.1&lt;br /&gt;      or 1.2, around 3% for greater than 1.2).&lt;br /&gt;&lt;br /&gt;      Advertising a version greater than 0x03ff (around 65% of servers)&lt;br /&gt;&lt;br /&gt;      The presence of any extensions (around 7% of servers)&lt;br /&gt;&lt;br /&gt;      The presence of specific extensions (&amp;quot;server_name&amp;quot; and&lt;br /&gt;      &amp;quot;status_request&amp;quot; intolerance has been observed, although in very&lt;br /&gt;      low numbers).&lt;br /&gt;&lt;br /&gt;      The presence of any advertised compression algorithms&lt;br /&gt;&lt;br /&gt;   Next, some servers will misbehave after processing the &amp;quot;ClientHello&amp;quot;&lt;br /&gt;   message.  Negotiating the use of &amp;quot;DEFLATE&amp;quot; compression can result in&lt;br /&gt;   fatal &amp;quot;bad_record_mac&amp;quot;, &amp;quot;decompression_failure&amp;quot; or&lt;br /&gt;   &amp;quot;decryption_failed&amp;quot; alerts.  Notably, OpenSSL prior to version 0.9.8c&lt;br /&gt;   will intermittently fail to process compressed finished messages due&lt;br /&gt;   to a work around of a previous padding bug.&lt;br /&gt;&lt;br /&gt;   Lastly, some servers will negotiate the use of SSLv3 but select a&lt;br /&gt;   TLS-only cipher suite.&lt;br /&gt;&lt;br /&gt;   In all these cases, HTTPS clients will often enter a fallback mode.&lt;br /&gt;   The connection is retried using only SSLv3 and without advertising&lt;br /&gt;   any compression algorithms.  (This is obviously an easy downgrade&lt;br /&gt;   attack.)  Also, the fallback can be triggered by transient network&lt;br /&gt;   problems, which often manifest as an abruptly closed connection.&lt;br /&gt;   Since SSLv3 does not provide any means of Server Name Indication&lt;br /&gt;   [RFC3546], the fallback connection can use the wrong certificate&lt;br /&gt;   chain, resulting in a very surprising certificate error.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.  More implementation mistakes&lt;br /&gt;&lt;br /&gt;   Non-fatal errors in version negotiation also occur.  Some 0.2% of&lt;br /&gt;   servers use the version from the record header.  Around 0.6% of&lt;br /&gt;   servers require that the version in the &amp;quot;ClientHello&amp;quot; and record&lt;br /&gt;   header match in order to respect the version in the &amp;quot;ClientHello&amp;quot;.  A&lt;br /&gt;   very low number of servers echo whatever version the client&lt;br /&gt;   advertises.&lt;br /&gt;&lt;br /&gt;   In the event that the client supports a higher protocol version than&lt;br /&gt;   the server, about 0.4% of servers require that the RSA&lt;br /&gt;   &amp;quot;ClientKeyExchange&amp;quot; message include the server&amp;#39;s protocol version.&lt;br /&gt;&lt;br /&gt;   Some 30% of servers don&amp;#39;t check the version in an RSA&lt;br /&gt;   &amp;quot;ClientKeyExchange&amp;quot; at all.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5.  Certificate Chains&lt;br /&gt;&lt;br /&gt;   Certificate chains presented by servers will commonly be missing&lt;br /&gt;   intermediate certificates, have certificates in the wrong order and&lt;br /&gt;   will include unrelated, superfluous certificates.  Servers have been&lt;br /&gt;   observed presenting more than ten certificates in what we assume is a&lt;br /&gt;   drive-by shooting approach to including the correct intermediate&lt;br /&gt;   certificate.&lt;br /&gt;&lt;br /&gt;   In order to validate chains which are missing certificates, some&lt;br /&gt;   HTTPS clients will collect intermediate certificates from other&lt;br /&gt;   servers.  Clients will commonly put all the presented certificates&lt;br /&gt;   into a set and try to validate a chain assuming only that the first&lt;br /&gt;   certificate is the leaf.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.  Insufficient Security&lt;br /&gt;&lt;br /&gt;   Some 65% of servers support SSLv2 (beyond just supporting the&lt;br /&gt;   handshake in order to upgrade to SSLv3 or TLS).  HTTPS clients will&lt;br /&gt;   typically not support SSLv2, nor send SSLv2 handshakes by default.&lt;br /&gt;   Of those servers, 80% support the export ciphersuites.  (Although&lt;br /&gt;   about 3% of those servers negotiate weak ciphersuites only to show a&lt;br /&gt;   warning.)&lt;br /&gt;&lt;br /&gt;   Some servers will choose very small multiplicative group sizes for&lt;br /&gt;   their ephemeral Diffie-Hellman exchange (for example, 256-bits).&lt;br /&gt;   Some HTTPS clients will reject all multiplicative group sizes smaller&lt;br /&gt;   than 512-bits while others will retry after demoting DHE ciphersuites&lt;br /&gt;   in their &amp;quot;ClientHello&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7.  Acknowledgements&lt;br /&gt;&lt;br /&gt;   Yngve Pettersen made significant contributions and many of the&lt;br /&gt;   numbers in this document come from his scanning work.  Other numbers&lt;br /&gt;   were taken from Ivan Ristic&amp;#39;s SSL Survey.&lt;br /&gt;&lt;br /&gt;   Thanks to Wan Teh Chang for reviewing early drafts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8.  Normative References&lt;br /&gt;&lt;br /&gt;   [RFC2246]  Dierks, T. and C. Allen, &amp;quot;The TLS Protocol Version 1.0&amp;quot;,&lt;br /&gt;              RFC 2246, January 1999.&lt;br /&gt;&lt;br /&gt;   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,&lt;br /&gt;              Masinter, L., Leach, P., and T. Berners-Lee, &amp;quot;Hypertext&lt;br /&gt;              Transfer Protocol -- HTTP/1.1&amp;quot;, RFC 2616, June 1999.&lt;br /&gt;&lt;br /&gt;   [RFC3546]  Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,&lt;br /&gt;              and T. Wright, &amp;quot;Transport Layer Security (TLS)&lt;br /&gt;              Extensions&amp;quot;, RFC 3546, June 2003.&lt;br /&gt;&lt;br /&gt;   [RFC5246]  Dierks, T. and E. Rescorla, &amp;quot;The Transport Layer Security&lt;br /&gt;              (TLS) Protocol Version 1.2&amp;quot;, RFC 5246, August 2008.&lt;br /&gt;&lt;/pre&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/12/ssl-labs-added-test-for-ephemeral-dh-parameters</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/12/ssl-labs-added-test-for-ephemeral-dh-parameters.html"/>
    <title>SSL Labs: Added test for ephemeral DH parameters</title>
    <published>2010-12-23T00:00:00+00:00</published>
    <updated>2010-12-23T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Ephemeral Diffie-Hellman key exchange (EDH or DHE, depending on where you look) allows two parties with no prior knowledge of each other to establish a shared secret. In SSL, DHE is used together with some method of authentication (most commonly RSA) in the handshake phase. Ephemeral DH is valued because it provides &lt;em&gt;perfect forward secrecy&lt;/em&gt; -- the session keys cannot be recovered if the authentication method is broken (e.g., someone retrieves the server&amp;#39;s private key).&lt;/p&gt;
&lt;p&gt;DH parameters are typically generated at runtime. Because of that they are not very visible and are often forgotten during the testing. As of 1.0.69, the &lt;a href=&quot;https://www.ssllabs.com/ssldb/&quot; target=&quot;_self&quot;&gt;SSL Labs online test&lt;/a&gt; will examine the DH parameters and warn if they are too weak. The scoring system has been modified to take into account the strength of the DH parameters when they are used for key exchange.&lt;/p&gt;
&lt;p&gt;Thanks to Adrian Dimcev and Brian Smith for their help with the research of DH parameter evaluation.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/11/detection-of-certificate-chain-issues-in-ssl-labs</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/11/detection-of-certificate-chain-issues-in-ssl-labs.html"/>
    <title>Detection of certificate chain issues in SSL Labs</title>
    <published>2010-11-30T00:00:00+00:00</published>
    <updated>2010-11-30T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;div&gt;
&lt;p&gt;One of the recent additions to the  SSL Labs test was the detection of various chain issues. The feature is  still marked as experimental, and it will remain so until we conclude  that the advice we give there is safe.&lt;/p&gt;
&lt;p&gt;Certificate  chains are a PKI feature that allows root certificate authorities to  delegate the work of certificate signing. Roughly one half of all sites  have certificates that are signed by a trusted CA. Such sites need only  provide the server&amp;#39;s certificate in the handshake. The remaining half  (of the sites) uses intermediate certificates (usually only one; it is  rare to see a site with more than one such certificate). Such sites need  to provide all the intermediate certificates in addition to the  server&amp;#39;s certificate.&lt;/p&gt;
&lt;p&gt;In our tests, we detect the following chain issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Missing intermediate certificates;&lt;/strong&gt; When a site does not provide the necessary intermediate certificates, a  trust path cannot be established. Generally speaking, we cannot  distinguish that case from a certificate signed by a custom CA. However,  some server certificates include the information on which intermediate  certificates are required, and also where to obtain them. SSL Labs will  attempt to fetch missing certificates. If the intermediate certificates  are found, then it&amp;#39;s very likely that a trust path will be established.  In such cases, the test will issue a warning. If you site receives the  warning you should reconfigure the server to add the missing  certificates. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificate chains that are too long;&lt;/strong&gt; Sites often include more certificates in the handshake than necessary.  Of those, most include one extra certificate, and that is the actual  trusted root certificate (which browsers already have in their storage).  This last certificate is not needed for the validation process. Having  an additional certificate in the chain wastes bandwidth and decreases  overal performance slightly. A small number of sites will include a very  large number of certificates as a result of misconfiguration. Such  sites will typically suffer significant performance issues and need to  be reconfigured.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificates given in incorrect order&lt;/strong&gt;;  According to the standard, certificates must be presented in the order  in which they are needed. The main, server, certificate must come first,  followed by the certificate that signed it, followed by the next  certificate in the chain, and so on. A small number of sites does not  get this order right. Most SSL clients will deal with this problem  silently, but there is a small number of platforms that will give up. &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/11/debian-stable-lenny-will-support-secure-renegotiation</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/11/debian-stable-lenny-will-support-secure-renegotiation.html"/>
    <title>Debian stable (Lenny) will support secure renegotiation</title>
    <published>2010-11-17T00:00:00+00:00</published>
    <updated>2010-11-17T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Thijs Kinkhorst from the Debian Security Team wrote to me in response to my recent blog post &lt;a href=&quot;http://blog.ivanristic.com/2010/10/disabling-ssl-renegotiation-is-a-crutch-not-a-fix.html&quot; target=&quot;_self&quot;&gt;Disabling SSL renegotiation is a crutch, not a fix&lt;/a&gt;. I am publishing his entire comment (with permission):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;It&amp;#39;s true that Debian stable still doesn&amp;#39;t have an openssl which supports the&lt;/em&gt;&lt;br /&gt;&lt;em&gt; new protocol enhancement, but it&amp;#39;s definately not a refusal to fix it. First&lt;/em&gt;&lt;br /&gt;&lt;em&gt; let me note that the fix is already in the upcoming release of Debian,&lt;/em&gt;&lt;br /&gt;&lt;em&gt; codename Squeeze. The current stable release, Lenny, does not have the fix&lt;/em&gt;&lt;br /&gt;&lt;em&gt; yet, but it is being worked on; an updated openssl is ready but the blocker&lt;/em&gt;&lt;br /&gt;&lt;em&gt; currently is that we may need to implement changes in some of the packages&lt;/em&gt;&lt;br /&gt;&lt;em&gt; using it. As usual Debian is very cautious with respect to updating its stable&lt;/em&gt;&lt;br /&gt;&lt;em&gt; release. It takes a while, and it would have been nice if the fix was out&lt;/em&gt;&lt;br /&gt;&lt;em&gt; sooner, but the combination of impacted software takes quite some time and&lt;/em&gt;&lt;br /&gt;&lt;em&gt; time is one of the most sought after resources in a volunteer project.&lt;/em&gt;&lt;br /&gt; &lt;br /&gt;&lt;em&gt; So just so you know that the issue has not been forgotten or ignored; it only&lt;/em&gt;&lt;br /&gt;&lt;em&gt; takes &amp;quot;a while&amp;quot; to get everything in order.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The fix was &lt;a href=&quot;http://www.debian.org/security/2011/dsa-2141&quot; target=&quot;_self&quot;&gt;released&lt;/a&gt; on January 6, 2011.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/10/private-assessment-option-added-to-the-ssl-server-test</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/10/private-assessment-option-added-to-the-ssl-server-test.html"/>
    <title>Private assessment option added to the SSL server test</title>
    <published>2010-10-07T00:00:00+01:00</published>
    <updated>2010-10-07T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Everyone I know likes the &lt;a href=&quot;https://www.ssllabs.com/ssldb/&quot;&gt;SSL assessment tool&lt;/a&gt; on the &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs web site&lt;/a&gt;, but many dislike the fact that their domain name may end up on one of the boards that display recent test history. I am assuming most wouldn&amp;#39;t mind being on the &amp;quot;Recent Best-Rated&amp;quot; one, but you never know before the test how it&amp;#39;s going to turn out.&lt;/p&gt;&lt;p&gt;That&amp;#39;s why we now support the private assessment option. If you tick the checkbox underneath the domain name field, the test results will not be publicly revealed. Not only that, but the results will remain hidden for as long as the results remain cached.&lt;/p&gt;&lt;p&gt;If you intend to send links to hidden assessment results, make sure the URL contains the &amp;quot;hiddenResults=on&amp;quot; bit, which is needed to ensure that a new public test is run after the earlier results expire from the cache.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/10/disabling-ssl-renegotiation-is-a-crutch-not-a-fix</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/10/disabling-ssl-renegotiation-is-a-crutch-not-a-fix.html"/>
    <title>Disabling SSL renegotiation is a crutch, not a fix</title>
    <published>2010-10-06T00:00:00+01:00</published>
    <updated>2010-10-06T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;In the days that followed the discovery of &lt;a href=&quot;http://blog.ivanristic.com/2009/11/ssl-and-tls-authentication-gap-vulnerability-discovered.html&quot;&gt;SSL/TLS Authentication Gap&lt;/a&gt;, some sites (those that did not need renegotiation) were able to deal with the problem by disabling renegotiation in server code. With no support for renegotiation, gone was the danger of exploitation. Good for them.&lt;/p&gt;

&lt;p&gt;The sites that did need renegotiation had to wait, first for the TLS working group &lt;a href=&quot;http://blog.ivanristic.com/2010/05/secure-renegotiation-test-added-to-ssl-labs.html&quot;&gt;to solve the issue&lt;/a&gt; on the protocol level, and then for their SSL library (or web server) vendors to support the enhancement. The TLS working group did a great job negotiating the fix. As for the vendors, some implemented the new feature quickly, some dragged their feet a little, and some (Debian) seem to refuse to fix the problem, leaving their users vulnerable.&lt;/p&gt;

&lt;p&gt;To sum it up, today, almost a year after the initial public discovery, we have some servers that are still vulnerable, some that refuse to support renegotiation, and some that support the new standard for secure renegotiation.&lt;/p&gt;

&lt;p&gt;So where is the problem, you might ask? If disabling renegotiation prevents exploitation, that&amp;#39;s surely a good thing? Well, it depends on how you look at things. Try to look at the problem through the eyes of a browser developer. I was actually prompted to write about this problem by &lt;span class=&quot;poster&quot;&gt;Yngve Nysæter Pettersen, who&amp;#39;s part of &lt;a href=&quot;http://my.opera.com/securitygroup/blog/&quot;&gt;Opera&amp;#39;s security group&lt;/a&gt;. Opera wants to protect its users, and for that to be possible they need to know if a particular server supports secure renegotiation. If a server does, Opera can happily renegotiate whenever necessary. But if a server does not support secure renegotiation, you can make an argument that Opera should refuse any renegotiation attempts.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;poster&quot;&gt;The servers that support secure renegotiation indicate so during the SSL handshake phase, and everyone&amp;#39;s happy and secure. The issue is with the servers that disable renegotiation, because they provide no indication of their security status. Some are insecure, while some aren&amp;#39;t. Without knowing, browsers can&amp;#39;t do anything. They can perhaps only inconvenience users and force them to manually configure protection levels.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;poster&quot;&gt;While it is possible to test for insecure renegotiation (&lt;a href=&quot;https://www.ssllabs.com/&quot;&gt;SSL Labs does it&lt;/a&gt;), the test is indicative but not conclusive -- there is no way to test for server-initiated renegotiation. Besides, it&amp;#39;s not reasonable to expect browsers to test every SSL site they encounter.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;poster&quot;&gt;My point is those that disabled SSL renegotiation must nevertheless implement the proper fix as soon as it becomes available for their platform. Patching is slow enough as it is, and we don&amp;#39;t need any further distractions to slow us down.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/10/ssl-labs-releases-raw-data-from-the-internet-ssl-survey</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/10/ssl-labs-releases-raw-data-from-the-internet-ssl-survey.html"/>
    <title>Qualys SSL Labs releases raw data from the Internet SSL survey</title>
    <published>2010-10-05T00:00:00+01:00</published>
    <updated>2010-10-05T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;About two months ago, Qualys SSL Labs published the &lt;a href=&quot;http://blog.ivanristic.com/2010/07/internet-ssl-survey-2010-is-here.html&quot;&gt;results of an Internet-wide SSL survey&lt;/a&gt;. We said that we would make the raw data available, and today we are following up on that promise. (By the way, we realize that two months is a long time, but we couldn&amp;#39;t complete the process faster on this occasion. We hope to make future releases pretty much as soon as we obtain the data. As you may remember, our plan it to make our survey a quarterly event from 2011.)&lt;/p&gt;&lt;p&gt;The raw data contains the SSL assessment results of about 850,000 domain names (out of about 120M we inspected). The main file (&lt;span style=&quot;text-decoration: line-through;&quot;&gt;1.2 GB&lt;/span&gt; 120 MB compressed, &lt;span style=&quot;text-decoration: line-through;&quot;&gt;3.5 GB&lt;/span&gt; 800 MB uncompressed) is a dump of our PostgreSQL database in CSV format. We include in the download a simple PHP script that iterates through all the rows, which means that you can consume the data directly. Alternatively, you can put the data back into the database and use SQL to run ad-hoc queries (we provide the schema along with the import instructions).&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;http://blog.ivanristic.com/survey-201007.sql.txt&quot;&gt;database schema&lt;/a&gt; contains 63 fields that generally parallel the information you would obtain from the &lt;a href=&quot;https://www.ssllabs.com/ssldb/&quot;&gt;SSL Labs online test&lt;/a&gt;. &lt;span style=&quot;text-decoration: line-through;&quot;&gt;The complete original certificate chain is included, which is handy if you want to look into the aspects we didn&amp;#39;t.&lt;/span&gt; We chose not to release certain sensitive data: the information on the low entropy private keys, renegotiation support, and HTTP server signatures was removed.&lt;/p&gt;&lt;p&gt;This is what you need to do to obtain the data:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;First, make sure that &lt;a href=&quot;http://blog.ivanristic.com/SURVEY_DATA-LICENSE.txt&quot;&gt;our terms and conditions&lt;/a&gt; are acceptable to you. At the core, we use the &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/3.0/&quot;&gt;Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported&lt;/a&gt; licence, but there are a few additional requirements. For example, we ask the obvious -- that you don&amp;#39;t use the data for illegal activities. The other requirements are just common sense. (Please do read the entire file, however.)&lt;/li&gt;
&lt;li&gt;Second, send us an email (username &amp;quot;ivanr&amp;quot;; domain name &amp;quot;webkreator.com&amp;quot;), introduce yourself,&amp;#0160; and tell us how you intend to use the data. We will then send you back the download instructions. We need this second step to give us an idea if the data is used, and how.&lt;/li&gt;
&lt;/ol&gt;
&lt;strong&gt;Update:&lt;/strong&gt; We are removing the certificate chain data from the database until we confirm that we are legally allowed to redistribute it. If you need such data in the meantime, retrieve it directly from the servers.&lt;br /&gt;
&lt;p&gt;&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/07/internet-ssl-survey-2010-is-here</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/07/internet-ssl-survey-2010-is-here.html"/>
    <title>Internet SSL Survey 2010 is here!</title>
    <published>2010-07-29T00:00:00+01:00</published>
    <updated>2010-07-29T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Since joining &lt;a href=&quot;http://www.qualys.com&quot;&gt;Qualys&lt;/a&gt; in May, I spent virtually all my time perfecting the &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; assessment engine and looking at how SSL is used on the Internet (HTTP servers only this time). I wrote about this work on a couple of occasions already:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.ivanristic.com/2010/07/internet-ssl-server-survey-at-black-hat-usa-2010.html&quot;&gt;Internet SSL Server Survey at Black Hat USA 2010&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.ivanristic.com/2010/07/ssl-server-survey-what-data-are-we-collecting.html&quot;&gt;SSL Server Survey: what data are we collecting?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, after a couple of months of hard work, the slides are finally ready. Here they are, without further ado:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/downloads/Qualys_SSL_Labs-State_of_SSL_2010-v1.6.pdf&quot;&gt;Qualys Internet SSL Survey 2010 v1.6&lt;/a&gt; (PDF, 3.2 MB)&lt;/li&gt;
&lt;/ul&gt;
I will present the results at Black Hat later today (10am PDT). Looking forward to seeing you there.

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/07/ssl-labs-1063-detection-and-reporting-of-certificate-chain-issues</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/07/ssl-labs-1063-detection-and-reporting-of-certificate-chain-issues.html"/>
    <title>SSL Labs 1.0.63: Detection and reporting of certificate chain issues</title>
    <published>2010-07-13T00:00:00+01:00</published>
    <updated>2010-07-13T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;The latest revision of the SSL Labs assessment engine (v1.0.63) adds several improvements in the area of certificate chains:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The engine will now try to download missing intermediate certificates.&lt;/strong&gt; Although sites are supposed to configure complete certificate chains, many forget to do that, and their sites fail to work properly as a result.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chain size and length&lt;/strong&gt; are reported in the user interface, which makes it easy to spot ridiculously long chains.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incomplete chain certificates are reported.&lt;/strong&gt; This is the case where the engine was able to locate missing intermediate certificates elsewhere and establish trust.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificate chains that are too long are reported.&lt;/strong&gt; It turns out that quite a few sites have chains that are longer than necessary. Such setups not only waste bandwidth, they make the overall site performance worse too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incorrectly ordered chains are reported too.&lt;/strong&gt; Although most browsers will deal with this problem, some SSL clients are sensitive to the issue.&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/07/ssl-server-survey-what-data-are-we-collecting</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/07/ssl-server-survey-what-data-are-we-collecting.html"/>
    <title>SSL Server Survey: what data are we collecting?</title>
    <published>2010-07-02T00:00:00+01:00</published>
    <updated>2010-07-02T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;As you may have heard by now, &lt;a href=&quot;http://www.qualys.com&quot;&gt;Qualys&lt;/a&gt; &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; is conducting a &lt;a href=&quot;http://blog.ivanristic.com/2010/07/internet-ssl-server-survey-at-black-hat-usa-2010.html&quot;&gt;large-scale survey of SSL servers&lt;/a&gt;. Naturally, the focus of such survey is to collect as much data as possible, then mine it to obtain useful information.&lt;/p&gt;&lt;p&gt;This is the data we are currently looking at collecting:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Certificate information&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Common name&lt;/li&gt;
&lt;li&gt;Is the common name a wildcard?&lt;/li&gt;
&lt;li&gt;Alternative names&lt;/li&gt;
&lt;li&gt;Validity period (not before and not after)&lt;/li&gt;
&lt;li&gt;Revocation information (CRL and OCSP)&lt;/li&gt;
&lt;li&gt;Public key algorithm and size&lt;/li&gt;
&lt;li&gt;Signature algorithm&lt;/li&gt;
&lt;li&gt;Certificate chain: how many certificates are there in the chain?&lt;/li&gt;
&lt;li&gt;Certificate chain: Are the chains complete and well formed?&lt;/li&gt;
&lt;li&gt;Certificate chain: How long is the certificate chain?&lt;/li&gt;
&lt;li&gt;Certificate chain: keep complete raw data for subsequent deeper analysis&lt;/li&gt;
&lt;li&gt;Is there support for Server Gated Cryptography (both Netscape and Microsoft flavours)?&lt;/li&gt;
&lt;li&gt;Validation type (DV, IV/OV, EV)&lt;/li&gt;
&lt;li&gt;Issuer information&lt;/li&gt;
&lt;li&gt;Is certificate trusted (and why not if it isn&amp;#39;t)?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Protocol support&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;SSL v2&lt;/li&gt;
&lt;li&gt;SSL v3&lt;/li&gt;
&lt;li&gt;TLS v1.0&lt;/li&gt;
&lt;li&gt;TLS v1.1&lt;/li&gt;
&lt;li&gt;TLS v1.2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cipher suite support&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Test for all known cipher suites (200+ of them)&lt;/li&gt;
&lt;li&gt;Cipher suite order preference test&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Other&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Test support for both Insecure and secure renegotiation&lt;/li&gt;
&lt;li&gt;SSL session resumption support&lt;/li&gt;
&lt;li&gt;Debian weak RNG weakness&lt;/li&gt;
&lt;li&gt;Retrieve HTTP server signature&lt;/li&gt;
&lt;li&gt;Presence of the Strict Transport Security response header&lt;/li&gt;
&lt;li&gt;TLS version intolerance tests&lt;/li&gt;
&lt;li&gt;Grade, according to the &lt;a href=&quot;https://www.ssllabs.com/projects/rating-guide/index.html&quot;&gt;SSL Rating Guide 2009&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/07/ssl-server-survey-so-whats-with-the-22m-invalid-certificates-claim</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/07/ssl-server-survey-so-whats-with-the-22m-invalid-certificates-claim.html"/>
    <title>SSL Server Survey: So what's with the 22M invalid certificates claim?</title>
    <published>2010-07-02T00:00:00+01:00</published>
    <updated>2010-07-02T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;After I talked about my research in a Black Hat Preview webcast last week, a number of people rushed to tell me that there can&amp;#39;t be 22M invalid certificates in the world. Some got in touch directly, some just talked about it, and, in one instance, a company managed to issue a press release (!) to urge me to clarify my statements. &lt;/p&gt;&lt;p&gt;&amp;quot;Surely I was mistaken&amp;quot;, they said, because &amp;quot;there&amp;#39;s only about 2M certificates sold by commercial certificate authorities? Something does not add up.&amp;quot; Of course it doesn&amp;#39;t.&lt;/p&gt;&lt;p&gt;The short answer is that they&amp;#39;ve generally focused on the wrong aspect of the study and that, in fact, I made no such sensational claims. So what is the real story?&lt;/p&gt;&lt;p&gt;The goal of the &lt;a href=&quot;http://blog.ivanristic.com/2010/07/internet-ssl-server-survey-at-black-hat-usa-2010.html&quot;&gt;SSL Survey&lt;/a&gt; is to understand how SSL is used in real life. We generally know what is the right way to configure and deploy SSL, but are the best practices followed, and by how many sites? This sort of analysis is difficult to pull off because you have to know what to test. (The testing itself is not so difficult for us, because we already have a &lt;a href=&quot;https://www.ssllabs.com/ssldb/&quot;&gt;robust assessment engine&lt;/a&gt; running on SSL Labs.)&lt;/p&gt;&lt;p&gt;Here are the possible approaches to discover publicly-available SSL servers:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scan all IPv4 address space.&lt;/strong&gt; This is only possible because of the still-prevalent deficiency of most SSL deployments that they require a dedicated IP address to operate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Crawl the Internet&lt;/strong&gt; to discover the SSL servers that appear in all the hyperlinks in the world. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analyse the domain name space.&lt;/strong&gt; One option is to obtain the lists of all domain names registered under a specific TLD, which is slow and cumbersome, but possible. Another option is to use a list such as &lt;a href=&quot;http://www.alexa.com/topsites&quot;&gt;Alexa&amp;#39;s top 1M most popular sites&lt;/a&gt;, which is a much more palatable approach.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use a browser toolbar&lt;/strong&gt; (or a similar service) to collect the hostnames the users are visiting. This is the only approach that will reveal internal SSL servers, although I doubt that would be very useful.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For my study I opted to analyse the domain name space. The other approaches were either not feasible, would take years, or simply cost too much. We&amp;#39;d love to collaborate with the organisations that have the data that we need, but that hasn&amp;#39;t happened yet.&lt;/p&gt;&lt;p&gt;From &lt;a href=&quot;http://www.verisign.com/domain-name-services/domain-information-center/industry-brief/&quot;&gt;VeriSign&amp;#39;s reports&lt;/a&gt; we know that there&amp;#39;s about 193M registered domain names in the world, and I managed to obtain a list of about 119M to start with (all .com, .org, .net, .biz, .us, and .info domain names). The idea was to first perform a series of lightweight tests (there are so many domain names!) to give us an idea which domain names are worth looking at in depth. Here are the results:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;92M domains are active on port 80 or port 443&lt;/li&gt;
&lt;li&gt;33M domains have port 443 open&lt;/li&gt;
&lt;li&gt;22.65M domain names run SSL on port 443&lt;/li&gt;
&lt;li&gt;On 0.72M domain names certificates match the domain name&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now it becomes clear where the 22M invalid certificates number comes from. If you take the number of domain names that responded on port 443 and subtract the number of certificates that matched the domain name on which they reside (0.72M), you get about 21.93M domain names that do not have valid certificates on port 443. This number is not very important and certainly not ground-breaking. It&amp;#39;s a by-product of the methodology whose end-goal is to find something else.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The important number is the 720,000 certificates whose names &lt;em&gt;do&lt;/em&gt; match the domain names on which they reside. For each of those, someone made an effort to match the names, and those are the servers that are worth investigating further.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Sadly, some people chose to focus on the numbers that help make an interesting headline, but which aren&amp;#39;t very interesting from the research point of view. The reason we have so many domain names that do not have proper SSL certificates installed is that most of them are not _intended_ to have them. &lt;strong&gt;Multiple domain names will point to the same IP address and, thus, to the same SSL server.&lt;/strong&gt; (Remember, virtual SSL hosting is not yet mainstream.) The difference in numbers is because of the widespread use of virtual web hosting, which is available for non-SSL sites, but not yet for SSL sites. You can host a million plain-text web sites on a single IP address, but if you want a million secure sites, you&amp;#39;d need a million IP addresses.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/07/internet-ssl-server-survey-at-black-hat-usa-2010</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/07/internet-ssl-server-survey-at-black-hat-usa-2010.html"/>
    <title>Internet SSL Server Survey at Black Hat USA 2010</title>
    <published>2010-07-02T00:00:00+01:00</published>
    <updated>2010-07-02T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Ever since starting &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; I wanted to know and understand how SSL was deployed in real life. The only way to find out is to perform an assessment of many (most?) public SSL servers. That&amp;#39;s a lot of work, but, as with everything else, if you persist and make continuous progress you eventually get there. This survey has been in the making for about a year and a half now.&lt;/p&gt;&lt;p&gt;The survey consists of three major pieces:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;The first piece is assessment methodology, which is covered by the &lt;a href=&quot;https://www.ssllabs.com/projects/rating-guide/&quot;&gt;SSL Rating Guide&lt;/a&gt;. My goals for the guide were two-fold: provide a comprehensive SSL server analysis, but also make the end result easy to understand. I didn&amp;#39;t want only SSL experts to find the guide useful.&lt;/li&gt;
&lt;li&gt;The second piece is the assessment tool, which implements the methodology. That&amp;#39;s the SSL Labs &lt;a href=&quot;https://www.ssllabs.com/ssldb/&quot;&gt;online assessment&lt;/a&gt; tool, which has been running for a year now. The good aspect of doing things slowly is that it makes the end result better. This is especially true in this case, because it&amp;#39;s one thing to read the RFCs -- making something work as expected in real life and interoperate with other implementations is much more difficult. &lt;/li&gt;
&lt;li&gt;The third and final piece is the scan of as many public SSL servers we can find, which is what we are focusing on right now.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first results of our study will be published at &lt;a href=&quot;http://www.blackhat.com/html/bh-us-10/bh-us-10-briefings.html#Ristic&quot;&gt;my talk
 at Black Hat USA 2010&lt;/a&gt; later this month. The good news is that all our work will be publicly available, and that we intend to continue to run the survey in regular intervals.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/06/ssl-labs-assessment-engine-v1059-improvements</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/06/ssl-labs-assessment-engine-v1059-improvements.html"/>
    <title>SSL Labs assessment engine v1.0.59 improvements</title>
    <published>2010-06-17T00:00:00+01:00</published>
    <updated>2010-06-17T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;The latest version of the &lt;a href=&quot;https://www.ssllabs.com/ssldb/&quot;&gt;SSL Labs assessment software&lt;/a&gt; (1.0.59) is now online, and it includes the following improvements:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cipher suite preference test&lt;/strong&gt;, which tells you if servers pay attention to which cipher suites they use (or merely use the first suite offered by a client)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear cache feature&lt;/strong&gt;, which clears cache and allows for a quick &lt;em&gt;check-fix-check&lt;/em&gt; cycle&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detect Strict-Transport-Security header&lt;/strong&gt; in response, which indicates &lt;a href=&quot;http://en.wikipedia.org/wiki/Strict_Transport_Security&quot;&gt;STS&lt;/a&gt; support&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Session resumption test&lt;/strong&gt;, which checks for the performance optimization after the initial full handshake&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TLS version intolerance test&lt;/strong&gt;, which tests how servers react to not-yet-released versions of TLS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prefix handling changes&lt;/strong&gt;; this test will now take into account if the tested domain name (with and without prefix) points to a particular server. It will also relax the check for 2nd-level domain names (e.g., secure.example.com)&lt;/li&gt;
&lt;/ul&gt;
Enjoy!

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/06/qualys-acquires-ssl-labs</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/06/qualys-acquires-ssl-labs.html"/>
    <title>Qualys acquires SSL Labs</title>
    <published>2010-06-15T00:00:00+01:00</published>
    <updated>2010-06-15T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I am late in writing about this, but &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; is now part of &lt;a href=&quot;http://www.qualys.com&quot;&gt;Qualys&lt;/a&gt;. If you came to this blog entry through the SSL Labs home page, then you already know the news -- it&amp;#39;s obvious from the change to the logo. If not, you can visit the site now to see the logo and the new colours.&lt;/p&gt;&lt;p&gt;Apart from the visual changes, there are no plans to change the concept of the site. The idea -- to research SSL -- remains. I do expect that I will have far more time to spend on my SSL-related research in the following months. In fact, I spent the best part of the last month and a half working on a big related project. It&amp;#39;s something I&amp;#39;ve wanted to do for a long time.&lt;/p&gt;&lt;p&gt;But now is not the time to talk about that. I will share my progress with you in the days that follow.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/05/secure-renegotiation-test-added-to-ssl-labs</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/05/secure-renegotiation-test-added-to-ssl-labs.html"/>
    <title>Secure renegotiation test added to SSL Labs</title>
    <published>2010-05-25T00:00:00+01:00</published>
    <updated>2010-05-25T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;When the &lt;a href=&quot;http://blog.ivanristic.com/2009/11/ssl-and-tls-authentication-gap-vulnerability-discovered.html&quot;&gt;SSL and TLS authentication gap&lt;/a&gt; problem was initially discovered (in November 2009), there wasn&apos;t much anyone could do about the vulnerability. You could disable renegotiation altogether, which only worked if your site did not depend on the feature. Thus my initial test focused on testing whether renegotiation was allowed.&lt;/p&gt;

&lt;p&gt;A couple of months ago, in February, the &lt;a href=&quot;http://datatracker.ietf.org/wg/tls/charter/&quot;&gt;TLS Working Group&lt;/a&gt; published RFC 5746, &lt;a href=&quot;http://tools.ietf.org/html/rfc5746&quot;&gt;Transport Layer Security (TLS) Renegotiation Indication Extension&lt;/a&gt;, to address the authentication gap. The RFC adds a secure renegotiation mechanism to both SSL and TLS. With a couple of parties supporting the RFC now (you can follow the status of the various patches and updates at &lt;a href=&quot;http://www.phonefactor.com/sslgap/ssl-tls-authentication-patches&quot;&gt;this page at PhoneFactor&lt;/a&gt;), I thought it would be a good time to update my SSL Labs code so that the tests accurately report server configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; will now not only correctly discover if secure renegotiation is supported, but it will give a nice green cheer every time it sees it on a site.&lt;/p&gt;

&lt;p&gt;
&lt;img  style=&quot;border: 1px solid #bbbbbb; padding: 10px;&quot; src=&quot;/images/google-secure-renegotiation-2.png&quot; border=&quot;0&quot; height=&quot;470&quot; width=&quot;634&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Special offer:&lt;/strong&gt; 25% off &lt;a href=&quot;https://www.feistyduck.com/books/modsecurity-handbook/&quot;&gt;ModSecurity Handbook&lt;/a&gt; until May 31st. Enter discount code &lt;code&gt;MSHBIRY671XHL1V&lt;/code&gt; at checkout.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/05/breaking-ssl-why-leave-to-others-what-you-can-do-yourself</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/05/breaking-ssl-why-leave-to-others-what-you-can-do-yourself.html"/>
    <title>Breaking SSL: Why leave to others what you can do yourself</title>
    <published>2010-05-21T00:00:00+01:00</published>
    <updated>2010-05-21T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I will be giving my SSL talk at the &lt;a href=&quot;http://www.issdconference.com/&quot;&gt;ISSD conference&lt;/a&gt;
later today (ISSD stands for &lt;em&gt;International Secure Systems Development&lt;/em&gt;). Here&amp;#39;s the
presentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/downloads/ivan_ristic-breaking_ssl-may_2010.pdf&quot;&gt;Breaking SSL: Why leave to others what you can do yourself&lt;/a&gt; (PDF, 400 KB)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
It&amp;#39;s virtually the same talk as my &lt;em&gt;Rendering SSL Useless&lt;/em&gt; one from a couple of months ago,
with slight reorganisation and some slides nicer.
&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/05/deep-protocol-and-cipher-suite-testing-in-ssl-labs</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/05/deep-protocol-and-cipher-suite-testing-in-ssl-labs.html"/>
    <title>Deep protocol and cipher suite testing in SSL Labs</title>
    <published>2010-05-14T00:00:00+01:00</published>
    <updated>2010-05-14T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;SSL has a usability problem when the negotiation of a secure communication channel fails: the user is left with a cryptic error message and his head to scratch. Let&amp;#39;s say that you are someone whose browser is not particularly equipped in the cryptography department and that you want to connect to a high-security site. Your browser fails to negotiate a SSL session and tells you that &amp;quot;SSL peer was unable to negotiate an acceptable set of security parameters&amp;quot; (Firefox). The problem is that there is no way for the site to communicate the problem to you and explain how you can fix it.&lt;/p&gt;

&lt;p&gt;It&amp;#39;s a hard problem to solve. SSL could be extended to allow a custom redirection URL to be dispatched to the user who is unable to negotiate good-quality encryption, leading him to a non-SSL page with more information. But such a page could be intercepted and modified (think MITM and &lt;a href=&quot;http://www.thoughtcrime.org/software/sslstrip/&quot;&gt;sslstrip&lt;/a&gt;), allowing an attacker to take control over the user&amp;#39;s session. Even the redirection URL itself might be intercepted and modified in transit. The same could happen with a custom text message.&lt;/p&gt;

&lt;p&gt;Although the failure to negotiate a secure connection is very rare, there are some sites that find it unacceptable. They will thus accept weak protocols and cipher suites on the SSL level, reporting the problem via HTTP. I think this approach is more secure because in many cases using a weaker protocol is better than no communication security at all.&lt;/p&gt;

&lt;p&gt;It is inconvenience for me, though, because there is no standard way in HTTP say that you are, in effect, politely refusing to talk to someone. To detect the situation, I have to look for clues in HTTP responses. Here&amp;#39;s what NetScaler responds with:&lt;/p&gt;

&lt;code&gt;HTTP/1.1 500 Internal Server Error&lt;br /&gt;Connection: close&lt;br /&gt;Content-Length: 510&lt;br /&gt;Content-Type: text/html&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;b&amp;gt;SSL Alert&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;The browser and the web-site cannot communicate securely because there are no common encryption algorithms.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Please try the following:&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;- Check the SSL protocol settings on the browser for SSLv3/TLSv1 protocol support.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;- The secure web-site may be using high-strength encryption algorithms(128 bit).&amp;lt;br&amp;gt;&amp;#0160; Check the SSL settings on your browser, if it supports high-strength encryption algorithms.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;- Upgrade your browser to latest version.&amp;lt;/p&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/code&gt;

&lt;p&gt;I already did that last year for &lt;a href=&quot;http://blog.ivanristic.com/2009/08/improved-sslv2-detection-in-ssl-labs.html&quot;&gt;SSLv2 protocol detection&lt;/a&gt;, but a couple of days ago I further improved the assessment engine adding support for deep cipher suite testing. SSL Labs now detects the default NetScaler error response delivered for both weak protocols and weak cipher suites. If you want to see an example, have a look at the &lt;a href=&quot;https://www.ssllabs.com/ssldb/analyze.html?d=amazon.com&quot;&gt;Amazon.com results&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/04/speaking-on-ssl-at-owasp-appsec-research-in-sweden</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/04/speaking-on-ssl-at-owasp-appsec-research-in-sweden.html"/>
    <title>Speaking on SSL at OWASP AppSec Research in Sweden</title>
    <published>2010-04-27T00:00:00+01:00</published>
    <updated>2010-04-27T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I will be speaking at the &lt;a href=&quot;http://www.owasp.org/index.php?title=OWASP_AppSec_Research_2010_-_Stockholm,_Sweden&quot;&gt;OWASP AppSec European conference in Stockholm, Sweden&lt;/a&gt;. I am really looking forward to attending, too. I had a self-imposed year-free-of-security, and I miss it. My talk will be about SSL -- an improved version of the &lt;a href=&quot;http://blog.ivanristic.com/2010/01/how-to-render-ssl-useless.html&quot;&gt;talk I gave to OWASP London earlier this year&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.owasp.org/index.php?title=OWASP_AppSec_Research_2010_-_Stockholm,_Sweden&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;60&quot; src=&quot;http://blog.ivanristic.com/appsec_eu_2010.gif&quot; width=&quot;468&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/02/firefox-extension-installation-process-vulnerable-to-mitm-attack</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/02/firefox-extension-installation-process-vulnerable-to-mitm-attack.html"/>
    <title>Firefox extension installation process vulnerable to MITM attack </title>
    <published>2010-02-09T00:00:00+00:00</published>
    <updated>2010-02-09T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Adrian Dimcev made an important discovery the other day: &lt;a href=&quot;http://www.carbonwind.net/blog/post/Firefox-Extension-download-process-and-the-mess-within.aspx&quot;&gt;the Firefox installation process is vulnerable to MITM attack&lt;/a&gt;. If a man in the middle is able to intercept the traffic of someone installing an extension, he will be able to get the user to install something else. Firefox is supposed to check the integrity of the extensions before it installs them, but it seems something somewhere broke, and the check is no longer in place.&lt;/p&gt;&lt;p&gt;This problem will be fixed in the next release (&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=544660&quot;&gt;it has been fixed in the repository&lt;/a&gt;, it seems), but the fact remains that the installation process is seriously misleading. Looking at the user interface alone, the impression is that the entire installation process is carried out ever SSL. Even worse, the main domain name where the extensions are &amp;quot;stored&amp;quot; uses an EV certificate, so you are made to feel super-safe. In truth, the extensions are downloaded over HTTP from who-knows-where.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/01/ssl-labs-using-firefox-36-ca-certs</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/01/ssl-labs-using-firefox-36-ca-certs.html"/>
    <title>SSL Labs using Firefox 3.6 CA certs</title>
    <published>2010-01-25T00:00:00+00:00</published>
    <updated>2010-01-25T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;With Firefox 3.6 out, I took the opportunity to upgrade the CA root database. Up until earlier today &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; used the Firefox 3.5.1 list, which has 142 certificate authorities on it. The new version of Firefox supports 155 certificate authorities and, now, SSL Labs does too.&lt;/p&gt;&lt;p&gt;After being prompted by &lt;a href=&quot;http://www.carbonwind.net/blog/&quot;&gt;Adrian Dimcev&lt;/a&gt;, I also added the support for a couple of obscure EXPORT 1024 cipher suites. Thanks Adrian!&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2010/01/how-to-render-ssl-useless</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2010/01/how-to-render-ssl-useless.html"/>
    <title>How to render SSL useless</title>
    <published>2010-01-14T00:00:00+00:00</published>
    <updated>2010-01-14T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Later today I will be presenting at the &lt;a href=&quot;http://www.owasp.org/index.php/London&quot;&gt;OWASP London&lt;/a&gt; meeting.
The title of my presentation is &lt;em&gt;How to Render SSL Useless&lt;/em&gt;, and I will be talking about the recent issues with SSL/TLS, my work at &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt;, as well as listing Top 11 SSL deployment mistakes that render SSL useless.&lt;/p&gt;&lt;p&gt;Here&amp;#39;s the presentation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/downloads/ivan_ristic-how_to_render_ssl_useless.pdf&quot;&gt;ivan_ristic-how_to_render_ssl_useless.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/12/testing-for-ssl-renegotiation</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/12/testing-for-ssl-renegotiation.html"/>
    <title>Testing for SSL renegotiation</title>
    <published>2009-12-15T00:00:00+00:00</published>
    <updated>2009-12-15T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;span style=&quot;background-color: #ffffbf;&quot;&gt;&lt;strong&gt;Edit:&lt;/strong&gt; Please note that the test described here works only with OpenSSL version that was not patched to deal with insecure renegotiation. I recommend that you download version 0.9.8k directly from the OpenSSL web site and compile a special binary to use for testing.&lt;/span&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Someone asked me how to test for SSL connection renegotiation, so I thought I would also write here for the benefit of everyone. Testing is easy provided you have access to an un-patched version of OpenSSL. To test, you will use the &lt;code&gt;s_client&lt;/code&gt; tool (you&amp;#39;ll type the bits in blue):&lt;/p&gt;
&lt;pre&gt;$ &lt;span style=&quot;color: blue;&quot;&gt;openssl s_client -connect www.ssllabs.com:443&lt;/span&gt;&lt;br /&gt;[snip... a lot of openssl output]&lt;br /&gt;---&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;HEAD / HTTP/1.0&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;R&lt;/span&gt;&lt;br /&gt;RENEGOTIATING&lt;br /&gt;28874:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:530:&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;The idea is that you connect to an SSL server and start by typing the first line of a request. You then type a single uppercase letter R on a single line, which tells OpenSSL to ask for renegotiation. I am aware of the following outcomes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your HTTP request completes, which means that renegotiation is enabled&lt;/li&gt;
&lt;li&gt;You get an error (one such possible error is shown in the example above), which means that renegotiation did not work&lt;/li&gt;
&lt;li&gt;The connection blocks and timeouts after a while, which is how OpenSSL 0.9.8l deals with renegotiation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Of course, a &lt;a href=&quot;https://www.ssllabs.com/ssldb/&quot;&gt;SSL Labs report&lt;/a&gt; will tell you whether a particular server supports renegotiation.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/11/clientless-ssl-vpn-products-break-the-web</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/11/clientless-ssl-vpn-products-break-the-web.html"/>
    <title>Clientless SSL VPN products break the Web</title>
    <published>2009-11-30T00:00:00+00:00</published>
    <updated>2009-11-30T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Dan Goodin, of The Register, pointed me to a very interesting advisory issued today that again confirms that convenience trumps security, every single time. This particular problem concerns the so-called clientless SSL VPN products, which basically work like a reverse proxies on steroids. When you&amp;#39;re on the road, you log into one of these devices and they provide you with a &amp;quot;window&amp;quot; through which you can access the sites you&amp;#39;d normally only see on your own network. Now, I&amp;#39;ve known about these products for a long time but, never having actually used one, I didn&amp;#39;t think much about how they work. Now that I know, I am terrified. They basically map all the sites you&amp;#39;re accessing into a single super-site, rewriting everything behind the scenes to maintain the illusion of a browser within a browser.&lt;/p&gt;&lt;p&gt;For example, if your internal&amp;#39;s site address is internal.example.com and your clientless SSL VPN&amp;#39;s address is vpn.example.com, while you&amp;#39;re on the road you access your internal site through https://vpn.example.com/internal.example.com/.&lt;/p&gt;&lt;p&gt;It&amp;#39;s pretty slick in how it&amp;#39;s very convenient and works with any browser, but it kills the same-origin policy. A single rogue web site that you access through this VPN window is able to take over all your sessions, interact with all your sites and monitor whatever is that you&amp;#39;re doing.&lt;/p&gt;&lt;p&gt;And the best part? The problem has been &lt;a href=&quot;http://seclists.org/fulldisclosure/2006/Jun/238&quot;&gt;known since at least 2006&lt;/a&gt;. You can get more information from &lt;a href=&quot;http://www.theregister.co.uk/2009/11/30/vpn_authentication_weakness/&quot;&gt;Dan&amp;#39;s article&lt;/a&gt; or from &lt;a href=&quot;http://www.kb.cert.org/vuls/id/261869&quot;&gt;the advisory&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Shameless self-promotion:&lt;/strong&gt; ModSecurity Handbook, the guide to the world&amp;#39;s most popular web application firewall, is &lt;a href=&quot;https://www.feistyduck.com&quot;&gt;now available for instant download&lt;/a&gt;.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/11/initial-test-for-ssl-renegotiation-added-to-ssl-labs</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/11/initial-test-for-ssl-renegotiation-added-to-ssl-labs.html"/>
    <title>Initial test for SSL renegotiation added to SSL Labs</title>
    <published>2009-11-17T00:00:00+00:00</published>
    <updated>2009-11-17T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I&amp;#39;ve added an initial implementation of the test that determines if an SSL server is vulnerable to the &lt;a href=&quot;http://blog.ivanristic.com/2009/11/not-just-csrf-ssl-authentication-gap-used-for-credentials-theft.html&quot;&gt;Authentication Gap MITM attack&lt;/a&gt;. At this point the assumption is that no server supports the safe renegotiation TLS extension, which means that a warning is displayed if renegotiation is found to be supported.&lt;/p&gt;&lt;p&gt;In the following days, as the implementations of the safe renegotiation TLS extension start to arrive, I will improve the test to take that into account.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/11/not-just-csrf-ssl-authentication-gap-used-for-credentials-theft</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/11/not-just-csrf-ssl-authentication-gap-used-for-credentials-theft.html"/>
    <title>Not just CSRF: SSL Authentication Gap used for credentials theft</title>
    <published>2009-11-14T00:00:00+00:00</published>
    <updated>2009-11-14T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Most people associate the &lt;a href=&quot;http://blog.ivanristic.com/2009/11/ssl-and-tls-authentication-gap-vulnerability-discovered.html&quot;&gt;recent SSL Authentication Gap vulnerability&lt;/a&gt; with mild CSRF, but a couple of days ago Anil Kurmus published an improved attack technique that enabled him to access victims&amp;#39; encrypted data streams. He wrote a &lt;a href=&quot;http://www.securegoose.org/2009/11/tls-renegotiation-vulnerability-cve.html&quot;&gt;proof of concept that could have been used to retrieve someone&amp;#39;s Twitter credentials&lt;/a&gt;. Twitter&amp;#39;s SSL servers no longer support renegotiation so the attack no longer works, but the same principle will still work with other sites. Anil&amp;#39;s attack technique was &lt;a href=&quot;http://seclists.org/fulldisclosure/2009/Nov/139&quot;&gt;posted to Full Disclosure&lt;/a&gt; last Wednesday, but it was ignored. It was subsequently picked up by &lt;a href=&quot;http://www.theregister.co.uk/2009/11/14/ssl_renegotiation_bug_exploited/&quot;&gt;Dan Goodin from The Register&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In researching the possible attack vectors made possible with the SSL authentication gap problem, most focused on trying to use the credentials included with hijacked requests (i.e., session cookies or Basic Authentication credentials). Anil realised that, although he was not able to decrypt the hijacked requests he was still able to include them as payload in arbitrary requests of his own. So all he needed was a site that has some sort of publishing functionality that can be used to reveal data. With the Twitter attack, he simply published the hijacked data as his Twitter status message.&lt;/p&gt;

&lt;p&gt;The attack works because the hijacked information is used in a parameter of the attacker&amp;#39;s request. Below is a partial attack example to describe the concept:&lt;/p&gt;

&lt;pre&gt;&lt;font color=&quot;red&quot;&gt;&lt;/font&gt;&lt;p&gt;&lt;font color=&quot;red&quot;&gt;POST /statuses/update.xml HTTP/1.0&lt;br /&gt;Authorization: Basic [attacker&amp;#39;s credentials]&lt;br /&gt;&lt;br /&gt;status=&lt;/font&gt;&lt;font color=&quot;blue&quot;&gt;POST /statuses/update.xml HTTP/1.1&lt;br /&gt;Authorization: Basic &lt;strong&gt;[victim&amp;#39;s credentials]&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;

&lt;p&gt;This attack technique is best suited to exploit APIs protected using Basic Authentication. It will work equally well for session hijacking, but hijacking the credentials in the case of sites that use form-based authentication may be more difficult due to the presence of the ampersand characters in victims&amp;#39; data streams.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://extendedsubset.com/&quot;&gt;Marsh Ray&lt;/a&gt; (who discovered the SSL authentication gap issue), hinted that information theft might be possible in a comment to &lt;a href=&quot;http://www.educatedguesswork.org/2009/11/understanding_the_tls_renegoti.html&quot;&gt;Eric Rescorla&amp;#39;s blog post&lt;/a&gt;, but he said he was more interested in fixing the problem rather than seeking interesting ways to abuse it.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/11/ssl-and-tls-authentication-gap-vulnerability-discovered</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/11/ssl-and-tls-authentication-gap-vulnerability-discovered.html"/>
    <title>SSL and TLS Authentication Gap vulnerability discovered</title>
    <published>2009-11-05T00:00:00+00:00</published>
    <updated>2009-11-05T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;A serious vulnerability has been discovered in the way web servers utilise SSL (and TLS, up to the most recent version, 1.2), &lt;strong&gt;effectively allowing an active man-in-the-middle attacker to inject arbitrary content into an encrypted data stream&lt;/strong&gt;. Both the Apache web server and the IIS have been found to be vulnerable.&lt;/p&gt;

&lt;p&gt;The problem is with the renegotiation feature, which allows one part of an encrypted connection (the one taking place before renegotiation) to be controlled by one party with the other part (the one taking place after renegotiation) to be controlled by another. A MITM attacker can open a connection to an SSL server, send some data, request renegotiation and, from that point on, continue to forward to the SSL server the data coming from a genuine user. One could argue that this is not a fault in the protocols, but it is certainly a severe usability issue. &lt;strong&gt;The protocols do not ensure continuity before and after negotiation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To make things worse, web servers will combine the data they receive prior to renegotiation (which is coming from an attacker) with the data they receive after renegotiation (which is coming from a victim). This issue is the one affecting the majority of SSL users.&lt;/p&gt;

&lt;p&gt;The following example demonstrates how the flaw can be exploited by an attacker to &lt;strong&gt;send an arbitrary request using the authentication credentials of a victim&lt;/strong&gt;. The red parts are sent by the attacker and the blue parts are sent by the victim.&lt;/p&gt;

&lt;pre&gt;&lt;font color=&quot;red&quot;&gt;GET /path/to/resource.jsp HTTP/1.0&lt;br /&gt;Dummy-Header:&lt;/font&gt;&lt;font color=&quot;blue&quot;&gt; GET /index.jsp HTTP/1.0&lt;br /&gt;Cookie: sessionCookie=Token&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;

&lt;p&gt;The good news is that, although the attacker can execute an arbitrary request, he will not be able to retrieve the corresponding response. On the negative side, the client will see something different from that what she requested.&lt;/p&gt;&lt;p&gt;You can see that GET attacks are essentially trivial to execute. To date, no one has claimed a successful execution of a POST request using this flaw. Until someone does, that means that an application that only makes changes in response to POST requests will probably not be vulnerable. Further, an application not vulnerable to CSRF attacks will probably be safe too, because the attacker won&amp;#39;t be able to generate or predict the token required for the request to go through.&lt;/p&gt;&lt;p&gt;Mitigation options:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;If you can, disable renegotiation. There isn&amp;#39;t normally a configuration option to do this, but &lt;a href=&quot;http://www.links.org/?p=780&quot;&gt;patches are being developed&lt;/a&gt; and will be available soon. The majority of web sites do not use renegotiation so disabling it won&amp;#39;t be a problem. Those that do will need to make changes to their sites to make them work without it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use a web application firewall to monitor the contents of all request headers to spot what seems like an embedded HTTP request line. &lt;/strong&gt;The good news is that the embedded request line will not be obfuscated, making it easier to detect. I do not believe that this advice can help the bypass of the client certificate authentication, though.&lt;/li&gt;
&lt;li&gt;If you can, monitor all connections that make use of the renegotiation feature. That won&amp;#39;t help you if renegotiation is an integral feature of your web site, but it may do if it is rarely used.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Further information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://extendedsubset.com/?p=8&quot;&gt;Marsh Ray&amp;#39;s blog post&lt;/a&gt; (Marsh discovered the problem a couple of months ago) contains a detailed description of the problems in the attachment.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ietf.org/mail-archive/web/tls/current/msg03928.html&quot;&gt;The post by Martin Rex to the TLS mailing list&lt;/a&gt; that prompted public disclosure.&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/10/entropy-on-a-usb-stick</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/10/entropy-on-a-usb-stick.html"/>
    <title>Entropy on a USB stick</title>
    <published>2009-10-01T00:00:00+01:00</published>
    <updated>2009-10-01T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
If you care about security then you care about encryption. If you care about encryption then you know how important it is to have access to a good entropy source. (Or you should know. Not many people talk about entropy. I guess that it&amp;#39;s something not very exciting to talk about.) Perhaps there are other similar devices and this is old news to some, but I was pleasantly surprised to learn that entropy is now available for little money, on a humble USB key:
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;The Entropy Key is a small, unobtrusive and easily installed
 USB stick that generates high-quality random numbers, or entropy, which
 can improve the performance, security and reliability of servers.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Get it from &lt;a href=&quot;http://www.entropykey.co.uk&quot;&gt;Simtec Electronics&lt;/a&gt;.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/09/analysis-of-elliptic-curve-support-in-current-browsers</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/09/analysis-of-elliptic-curve-support-in-current-browsers.html"/>
    <title>Analysis of Elliptic Curve support in current browsers</title>
    <published>2009-09-29T00:00:00+01:00</published>
    <updated>2009-09-29T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;In &lt;a href=&quot;http://blog.ivanristic.com/2009/09/ssl-labs-improved-ec-and-tls-12-detection.html&quot;&gt;my previous post&lt;/a&gt; I mentioned &lt;a href=&quot;http://www.carbonwind.net/blog/&quot;&gt;Adrian Dimcev&lt;/a&gt;, who helped me get Elliptic Curve detection right, in &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt;. He has now posted a detailed analysis of the current support of elliptic curve cryptography across browsers:&lt;/p&gt;&lt;ul style=&quot;font-family: inherit;&quot;&gt;
&lt;li style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;http://www.carbonwind.net/blog/post/2009/09/27/tlswoodgrovebankcom-meets-the-browsers.aspx&quot;&gt;tls.woodgrovebank.com meets the browsers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I recommend that you read this highly informational post if you have even a slight interest in TLS.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/09/ssl-labs-improved-ec-and-tls-12-detection</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/09/ssl-labs-improved-ec-and-tls-12-detection.html"/>
    <title>SSL Labs: Improved Elliptic Curve and TLS 1.2 detection</title>
    <published>2009-09-22T00:00:00+01:00</published>
    <updated>2009-09-22T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;img width=&quot;325&quot; height=&quot;213&quot; src=&quot;/images/ssl-labs-all-protocols-enabled.png&quot; style=&quot;border: 1px solid gray;&quot; align=&quot;right&quot; hspace=&quot;15&quot; vspace=&quot;10&quot;&gt;
The latest version of the SSL assessment software running on &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; features much better detection of the SSL servers that use Elliptic Curve cryptography, TLS 1.1 and TLS 1.2. Windows Server 2008 leads when it comes to these technologies and Microsoft&apos;s test server (&lt;a href=&quot;https://www.ssllabs.com/ssldb/analyze.html?d=tls.woodgrovebank.com&quot;&gt;tls.woodgrovebank.com&lt;/a&gt;) demonstrates that very well. Sadly, there&apos;s currently no browser that can talk to the Windows Server 2008 in a way that uses all the capabilities that are on offer. Even IE8 has some of the high-end features disabled and gets some others wrong.&lt;/p&gt;
&lt;p&gt;I must mention &lt;a href=&quot;http://www.carbonwind.net/blog&quot;&gt;Adrian Dimcev&lt;/a&gt;, who pushed me to get this work done. He worked relentlessly to figure out the exact combinations of handshake bits (literally) that produce desired results. I&apos;ve urged Adrian to describe his findings for everyone to read, and let&apos;s hope that he&apos;ll do that. In the meantime, his &lt;a href=&quot;http://www.carbonwind.net/blog/post/2009/09/18/Forefront-TMG-Beta-3-on-Windows-Server-2008-R2%28RC%29-TLS-11-and-TLS-12.aspx&quot;&gt;recent blog post&lt;/a&gt; provides a bunch of useful information on TLS 1.2.
&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/09/ssl-threat-model</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/09/ssl-threat-model.html"/>
    <title>SSL Threat Model</title>
    <published>2009-09-09T00:00:00+01:00</published>
    <updated>2009-09-09T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
SSL is easy to use but also very easy to use incorrectly. The ecosystem, which is built of the specifications, the implementations, the CAs and the PKI, is full of traps, each of which is very easy to fall into. Once I started to spend significant time thinking about SSL I set out to build a model of the ecosystem, for my own education and to ensure that I understand it all. That&amp;#39;s how I arrived to the SSL Threat Model. The image is too big to include here, but just click on the link below to get it:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/downloads/SSL_Threat_Model.png&quot;&gt;SSL Threat Model&lt;/a&gt; (PNG, 65 KB)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I do understand that many of the elements in the model need explanations, but the diagram is all I have at the moment. As a matter of fact, the diagram has been sitting in my virtual drawer for months in the hope that I would eventually accompany it with some documentation. But seeing that the documentation is not going to happen any time soon, I decided to go ahead and publish the diagram alone.&lt;/p&gt;&lt;p&gt;Feel free to post comments here, though!&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/09/two-bugs-in-mod_sslhaf-fixed</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/09/two-bugs-in-mod_sslhaf-fixed.html"/>
    <title>Two bugs in mod_sslhaf fixed</title>
    <published>2009-09-04T00:00:00+01:00</published>
    <updated>2009-09-04T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I fixed two bugs in &lt;a href=&quot;https://www.ssllabs.com/projects/client-fingerprinting/&quot;&gt;mod_sslhaf&lt;/a&gt; (my passive SSL fingerprinting module for Apache; see my &lt;a href=&quot;http://blog.ivanristic.com/2009/07/examples-of-the-information-collected-from-ssl-handshakes.html&quot;&gt;previous blog post&lt;/a&gt; for details), which means that you need to upgrade if you&amp;#39;re using it:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Pure SSLv2 access was ignored due to a badly interpreted version number (SSLv2 uses a different byte order).&lt;/li&gt;
&lt;li&gt;There was a problem with sites that do not use SSL, which would cause Apache to stall.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Everything seems to be in order now.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/09/ssl-labs-a-batch-of-small-improvements</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/09/ssl-labs-a-batch-of-small-improvements.html"/>
    <title>SSL Labs: a batch of small improvements</title>
    <published>2009-09-03T00:00:00+01:00</published>
    <updated>2009-09-03T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I love when a project enters the phase where you&amp;#39;re mainly concerned with improving upon what already works! I had some time yesterday and today to spend on &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; so I used the opportunity to tweak the software a bit. The changes are as follows:&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Successful assessments are now cached for 24 hours.&lt;/li&gt;
&lt;li&gt;Unsuccessful assessments are now cached for 15 minutes.&lt;/li&gt;
&lt;li&gt;Display complete certificate chains, and make clear which certificates are trusted.&lt;/li&gt;
&lt;li&gt;Do more to detect SSLv2 error responses (a polite way for a site to say that it does not support SSLv2).&lt;/li&gt;
&lt;li&gt;Use colours and tags (&amp;quot;weak&amp;quot;, &amp;quot;insecure&amp;quot;, &amp;quot;confusing&amp;quot;) to point to the bits in a configuration that are bad or can be improved.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also fixed a bug or two, but that&amp;#39;s not very important.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/08/is-rc4-safe-for-use-in-ssl</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/08/is-rc4-safe-for-use-in-ssl.html"/>
    <title>Is RC4 safe for use in SSL?</title>
    <published>2009-08-28T00:00:00+01:00</published>
    <updated>2009-08-28T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I received a rather interesting and informative couple of emails last week from &lt;a href=&quot;http://ipsec.pl&quot;&gt;Paweł Krawczyk&lt;/a&gt;, who wanted to make a point how RC4 is still safe to use in SSL. I thought that his comments would be of interest to a wider audience, so here they are (with permission):&lt;/p&gt;
&lt;blockquote&gt;&lt;em&gt;&lt;p&gt;[...] TLS_RSA_WITH_RC4_128_MD5 [...] is extremely
widespread among commercial servers. Main reasons are 1) it&apos;s default
preferred cipher in most versions of IIS, 2) these two algorithms are
absolutely fastest and least CPU-intensive.
&lt;/p&gt;&lt;p&gt;
However, because there are known cryptoanalytic attacks against both RC4
and MD5, this ciphersuite is notoriously reported as &quot;weak&quot; by some
pentesting tools and teams.
&lt;/p&gt;&lt;p&gt;
This is not true or at least not accurate, as the specific usage of RC4
and MD5 - in SSLv3 with 128 bit key - has no known and working attacks.
That&apos;s one reason why PCI-DSS v1.2 now doesn&apos;t list any specific
algorithms for SSL but instead just says you should use &quot;strong&quot; ones.
And widespread usage of TLS_RSA_WITH_RC4_128_MD5 among financial
organisations seems to confirm the interpretation that it&apos;s still
considered a strong ciphersuite.
&lt;/p&gt;&lt;p&gt;
On the other hand NIST SP 800-52 doesn&apos;t allow neither RC4 or MD5
because they&apos;re not FIPS-approved algorithms, with one exception -
connecting in client mode to external, commercial systems with this
specific ciphersuite enabled. Which seems to set the balance quite even,
because SP is only binding for US federal agencies.
&lt;/p&gt;&lt;/em&gt;&lt;/blockquote&gt;
&lt;p&gt;And...&lt;/p&gt;
&lt;blockquote&gt;&lt;em&gt;&lt;p&gt;
There are two reasons why the new attacks do not apply to RC4-based 
SSL. First, SSL generates the encryption keys it uses for RC4 by 
hashing (using both MD5 and SHA1), so that different sessions have 
unrelated keys. Second, SSL does not re-key RC4 for each packet, 
but uses the RC4 algorithm state from the end of one packet to 
begin encryption with the next packet. The recent techniques of 
Fluhrer, Mantis and Shamir thus do not apply to SSL.
&lt;/p&gt;&lt;/em&gt;&lt;/blockquote&gt;
&lt;p&gt;Further resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.rsa.com/rsalabs/node.asp?id=2009&quot;&gt;RSA Security Response to Weaknesses in Key Scheduling Algorithm of RC4&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://csrc.nist.gov/groups/ST/hash/documents/YIN_NIST2ndHashWorshop
-ContiniYin-Aug25-2006.pdf&quot;&gt;Forgery and Partial Key Recovery attacks on HMAC and NMAC using Hash Collisions&lt;/a&gt; (PDF; concludes &lt;em&gt;HMAC-MD5, HMAC-SHA1 - No immediate practical threats&lt;/em&gt;)
&lt;/ul&gt;



</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/08/black-hat-2009-ssl-review-breaking-the-myths-of-extended-validation-ssl-certificates-alexander-sotir</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/08/black-hat-2009-ssl-review-breaking-the-myths-of-extended-validation-ssl-certificates-alexander-sotir.html"/>
    <title>Black Hat 2009 SSL Review: Breaking the Myths of Extended Validation SSL Certificates (Alexander Sotirov and Mike Zusman)</title>
    <published>2009-08-07T00:00:00+01:00</published>
    <updated>2009-08-07T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Sotirov&apos;s and Zusman&apos;s talk (&lt;a href=&quot;http://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html#Sotirov&quot;&gt;the paper and the slides available for download&lt;/a&gt;) is a practical exercise in breaking the assurance provided by EV certificates, building on the discovery Collin Jackson and Adam Barth made in their paper &lt;a href=&quot;http://seclab.stanford.edu/websec/origins/&quot;&gt;&lt;i&gt;Beware of Finer-Grained Origins&lt;/i&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;
&lt;strong&gt;Extended Validation.&lt;/strong&gt; The browser’s scripting policy
does not distinguish between HTTPS connections
that use an Extended Validation (EV) certificates from
those that use non-EV certificates. For example, Pay-
Pal serves https://www.paypal.com/ using an
EV certificate, but a principal who has a non-EV certificate
for www.paypal.com can inject script into
the PayPal login page without disrupting the browser’s
Extended Validation security indicators...
&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The above has the following implications:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;EV sites generally use components that are delivered from other non-EV SSL places. Thus, if you have a valid non-EV certificate in the name of the server used for the component delivery, you can subvert the EV site.&lt;/li&gt;
&lt;li&gt;Sotirov and Zusman also point out that browsers don&apos;t perform SSL certificate pinning, happily accepting a request from a site with an EV certificate, followed by a request from the same site using another certificate. That allows for what they call SSL Rebinding. Through the same-origin policy, a subverted document delivered with a non-EV certificate can assume control of an EV site.&lt;/li&gt;
&lt;li&gt;They further point that it is possible to perform SSL cache poisoning, which is a side-effect of the caching subsystem in browsers being separate from the security system. For browsers, a file from a non-EV site is the same as a file from a EV site:
&lt;ol&gt;
&lt;li&gt;A user is somehow lead into requesting a file supposedly from an EV site (e.g., a script file), but the file is delivered by an attacker performing a MITM attack and using a valid non-EV certificate.&lt;/li&gt;
&lt;li&gt;The user goes to the real EV site, at which point his browser will attempt to refresh the previously cached script file.&lt;/li&gt;
&lt;li&gt;If the EV site responds with an 304 (Not Modified) response, the browser will continue to use the subverted version of the script.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sotirov and Zusman offer a number of suggestions to fix the above problems, but admit that most of them are not likely to happen. The problem here is that it is the browser vendors who should be pushing the security envelope (no one else is in a position to do it), but doing so would break sites and the vendors, who are primarily focused on winning market share, won&apos;t risk breakage. The only realistic solution seems to be to make it possible for sites to elect to be more secure so that, in time, we can upgrade to a more secure Internet.&lt;/p&gt;&lt;p&gt;I still maintain that a comprehensive solution (in a way similar to that I proposed in the &lt;a href=&quot;http://www.modsecurity.org/blog/archives/2006/06/secure_browsing.html&quot;&gt;Secure Browsing Mode document&lt;/a&gt;) is the best way forward. Band aids can only do so much and, for once, we need to do a job properly.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/08/black-hat-2009-ssl-review-more-tricks-for-defeating-ssl-in-practice-moxie-marlinspike</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/08/black-hat-2009-ssl-review-more-tricks-for-defeating-ssl-in-practice-moxie-marlinspike.html"/>
    <title>Black Hat 2009 SSL Review: More Tricks For Defeating SSL In Practice (Moxie Marlinspike)</title>
    <published>2009-08-05T00:00:00+01:00</published>
    <updated>2009-08-05T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.thoughtcrime.org&quot;&gt;Moxie Marlinspike&lt;/a&gt; has a story to tell, and it&amp;#39;s a story about SSL implementation flaws. His talk at Black Hat 2009 (get &lt;a href=&quot;http://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html#Marlinspike&quot;&gt;the slides and the movie from Black Hat Archives&lt;/a&gt;) is a continuation of his previous activities, which go way back, as early as 2002 (or something). I liked this talk, because it was delivered in a low key, here-is-what-I-discovered, way.&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;You first learn about the chained certificate validation flaws from the past, which were possible basically because X.509 is complex and programmers don&amp;#39;t understand it. It was possible to exploit such flaws with the use of any valid certificate.&lt;/li&gt;
&lt;li&gt;Moxie wrote and published his first SSL tool, &lt;code&gt;sslsniff&lt;/code&gt;, because Microsoft claimed the chained certificate validation flaws could not be exploited. This tool automates the exploitation and makes MITM attacks really simple (as most Moxie&amp;#39;s SSL tools do).&lt;/li&gt;
&lt;li&gt;Next comes &lt;code&gt;sslstrip&lt;/code&gt;, again a MITM tool, which relies on the fact that most people first browse using plain-text and let sites guide them to SSL. The tool strips away the links to SSL, leaving the user to communicate via plain-text.&lt;/li&gt;
&lt;li&gt;The new stuff is about the same problem Dan Kaminsky pointed out in his talk (but independently discovered), which is that most SSL implementations are vulnerable to NUL-byte attacks. As a result, it is possible to get a CA to sign a certificate that effectively allows you to impersonate a web site you do not own. Combining this attack with a wildcard certificate, you get a certificate that can be used to impersonate any web site.&lt;/li&gt;
&lt;li&gt;Moxie further discovered that it was possible to interfere (from a MITM position) with OCSP certificate validation to prolong a life of a revoked certificate.&amp;#0160;&lt;/li&gt;
&lt;li&gt;Even worse, he discovered that it was possible to use a NUL-enriched wildcard certificate to subvert the Firefox and Thunderbird update mechanism.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The good thing about implementation flaws is that they are reasonably quick and easy to fix. The first issue is old news, so it&amp;#39;s not a problem any more. The new flaws (#4, #5 and #6) are either fixed (I know they were fixed in Firefox) or will be fixed soon. You can make sure you&amp;#39;re using a version of the browser that is not vulnerable. There&amp;#39;s going to be a lot of people using older browsers, who are going to remain vulnerable. To help them, it is the CAs who are going to have to make sure they don&amp;#39;t issue any more rogue certificates.&lt;/p&gt;&lt;p&gt;Although &lt;code&gt;sslstrip&lt;/code&gt; is old news, I am worried about the fact that people can&amp;#39;t recognise when a connection (to a web site) is insecure. No, scratch that. Why should people need to recognise that? I know how to and I do, but that&amp;#39;s only out of necessity. I am really more worried about the fact that it&amp;#39;s necessary to think about such things at all. Web sites should just be secure, period.&lt;/p&gt;&lt;p&gt;Short term, EV certificates help. That really means that they help me and you, but I don&amp;#39;t believe they help normal (i.e., non-security) people. Can we do anything to help them? A solution comes to mind, and it consists from two parts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Use only SSL and make plain-text connections impossible.&lt;/li&gt;
&lt;li&gt;Refuse to connect to web sites that do not have valid certificates.&lt;/li&gt;
&lt;/ol&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/08/black-hat-2009-ssl-review-black-ops-of-pki-dan-kaminsky</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/08/black-hat-2009-ssl-review-black-ops-of-pki-dan-kaminsky.html"/>
    <title>Black Hat 2009 SSL Review: Black Ops of PKI (Dan Kaminsky)</title>
    <published>2009-08-04T00:00:00+01:00</published>
    <updated>2009-08-04T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;SSL was again in the centre of attention at Black Hat USA this year (2009). I say SSL, as do many others, but most of the discussion wasn&amp;#39;t about SSL but, rather, about the technologies on which it relies. I will cover the Black Hat SSL talks in a series of blog posts, the first of which I publish today.&lt;/p&gt;&lt;p&gt;Dan Kaminsky&amp;#39;s talk (get it &lt;a href=&quot;http://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html#Kaminsky&quot;&gt;here&lt;/a&gt; as a QuickTime movie) has several very interesting points, but it fails on delivery. When you take the interesting bits out, the rest is a strange mixture of ranting, sarcasm, irrelevant detours and unproductive technology bashing, which I didn&amp;#39;t enjoy. Here&amp;#39;s my summary of what Dan said:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Humans are imperfect.&lt;/li&gt;
&lt;li&gt;We generally care first about getting things done, with security always an afterthought (if we&amp;#39;re lucky).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you want to be more specific, that translates to:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;We don&amp;#39;t know how to write secure code.&lt;/li&gt;
&lt;li&gt;We are using tools and languages that are inherently insecure (e.g., the C programming language, with its buffer overflows and NUL-terminated strings).&lt;/li&gt;
&lt;li&gt;Specifications are often ambiguous.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It&amp;#39;s hardly news. My biggest complaint to Dan&amp;#39;s talk (his attitude aside) is that he doesn&amp;#39;t tell us how to improve things. He mentions DNSSEC as a possible improvement, but how do we guarantee that DNSSEC and its implementations do not suffer from the same problems that plague our software today?&lt;/p&gt;&lt;p&gt;The very interesting new points (what Dan really said), are as follows:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;MD2 is insecure, yet we are slow in retiring it. There&amp;#39;s even one commonly deployed root certificate signed with it. This one MD2 signature could be abused through an preimage attack. Such an attack is not practical today, but it may become practical soon enough for us to be worried. Dan apparently orchestrated a synchronised removal of MD2 from the popular programs and libraries, which is great.&lt;/li&gt;
&lt;li&gt;CAs, programs and libraries all have issues with input validation, the result of which is that it&amp;#39;s possible to get a certificate with a NUL byte in the common name. This is the issue that was independently discovered by Moxie Marlinspike, who &lt;a href=&quot;http://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html#Marlinspike&quot;&gt;also spoke at Black Hat&lt;/a&gt;. (I will discuss his talk in a subsequent post.) The differences in the interpretation of such common names allow such certificates to be abused so that you get a certificate that works for the domains you do not own. It&amp;#39;s even possible to get a wildcard certificate that works for all domain names (in some browsers). This problem is being fixed. (As an aside, Dan doesn&amp;#39;t mention the alternative names field, so we don&amp;#39;t know if it&amp;#39;s vulnerable too. It would be very ironic if everyone would fix the problems in the common name field, yet leave the alternative names vulnerable. Perhaps that&amp;#39;s an opportunity for a talk next year.)&lt;/li&gt;
&lt;li&gt;It is possible for certificates to have more than one common name (e.g., the domain name, in the context of SSL servers), but its implementation-specific which one will be used.&lt;/li&gt;
&lt;li&gt;Ambiguities in ASN.1 (which is used to encode certificates) and flaws in ASN.1 implementations can be used to insert OIDs that some consumers interpret as common names, but others don&amp;#39;t.&lt;/li&gt;
&lt;/ol&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/08/improved-sslv2-detection-in-ssl-labs</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/08/improved-sslv2-detection-in-ssl-labs.html"/>
    <title>Improved SSLv2 detection in SSL Labs</title>
    <published>2009-08-03T00:00:00+01:00</published>
    <updated>2009-08-03T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update (5 Sep 2012)&lt;/strong&gt; Someone wrote to me recently to point out that accepting SSL v2 connection requests is insecure, even if the intention is to only display an error message. This is, of course, correct. I come to the same conclusion long time ago, but I had forgotten that I had left behind a written trail in favour of this technique.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
One of the benefits of public testing is that you get exposed to, well, real life. I love that phase of development because you generally get to polish your code until it is perfect. Thus, after my &lt;a href=&quot;https://www.ssllabs.com/ssldb/&quot;&gt;SSL server assessment service&lt;/a&gt; went online, I monitored its performance closely, expecting to encounter a number of unforeseen cases, or cases that I didn&amp;#39;t handle well.&lt;/p&gt;
&lt;p&gt;One such area was SSLv2 detection. My first approach was to simply detect the cases where servers accept to negotiate a SSLv2 connection, but I soon discovered two edge cases:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
Some servers have SSLv2 enabled, but all of the SSLv2 cipher suites disabled. Technically, although they support SSLv2, it is impossible for the handshake to complete, which has the same end result as protocol disablement.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Some servers accept SSLv2, but they always respond with a special error message to all requests. This is actually a very good idea from the usability point of view. An SSLv2 user connecting to a server that does not support SSLv2 is only likely to get a cryptic error message from their browser, which may leave him wondering what to do. Accepting a connection, only to deliver a user-friendly error message is a very good idea.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, dealing with the first case is easy: you just keep a would-be SSLv2 connection open for a bit longer. A failure to negotiate a cipher suite means SSLv2 connections are effectively impossible.&lt;/p&gt;
&lt;p&gt;Handling the second case is difficult because there is no standard way to deliver user-friendly protocol errors. For example, this is what Amazon gives you (I suspect the error page is delivered by the load balancer, although it&amp;#39;s perfectly possible to implement it on the application level):&lt;/p&gt;
&lt;pre&gt;HTTP/1.1 500 Internal Server Error&lt;br /&gt;Connection: close&lt;br /&gt;Content-Length: 309&lt;br /&gt;Content-Type: text/html&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;b&amp;gt;SSL Protocol Alert&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;The SSL protocol version that your&lt;br /&gt;browser uses is SSLv2 and it is not compatible with the server settings.&lt;br /&gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Please try the following:&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;- Check the SSL protocol settings&lt;br /&gt;on your browser for SSLv3/TLSv1 protocol support and enable the same.&lt;br /&gt;&amp;lt;/p&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;p&gt;Amazon is kind enough to indicate that there is a problem by setting the response code to 500, which is easy to detect. Adding a check for this special case was easy. In a general case, however, I can&amp;#39;t just assume that everyone is going to do the right thing. I &lt;em&gt;know&lt;/em&gt; they won&amp;#39;t. So, for the time being, I am logging all unusual responses to requests over SSLv2 connections. In time I plan to automate the detection by observing if the tested site &amp;quot;looks&amp;quot; substantially different over SSLv2 (not sure what exactly that means, but I will figure it out).&lt;/p&gt;
&lt;p&gt;Thanks to Bo and Brandon, who emailed me to discuss the above two issues.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/07/tls-server-name-indication-now-in-apache</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/07/tls-server-name-indication-now-in-apache.html"/>
    <title>TLS Server Name Indication now in Apache</title>
    <published>2009-07-29T00:00:00+01:00</published>
    <updated>2009-07-29T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
&lt;a href=&quot;http://httpd.apache.org&quot;&gt;Apache 2.2.12&lt;/a&gt;, which was released yesterday
(see &lt;a href=&quot;http://archive.apache.org/dist/httpd/CHANGES_2.2.12&quot;&gt;the changes&lt;/a&gt;), now supports &lt;a href=&quot;http://en.wikipedia.org/wiki/Server_Name_Indication&quot;&gt;TLS Server Name Indication&lt;/a&gt; (SNI), which is an extension to TLS that makes virtual SSL hosting possible. At the moment, every SSL web site requires a separate IP address and that makes SSL deployment more difficult than it could and should be.&lt;/p&gt;&lt;p&gt;Don&apos;t get your hopes up, though. Although the extension was defined in 2003, the support for it is still very limited. For example, Apache&apos;s adoption means that, for the first time, SNI is supported in a major web server. (For the record, you could have used SNI previously with &lt;code&gt;mod_gnutls&lt;/code&gt;, but &lt;code&gt;mod_gnutls&lt;/code&gt; is not widely used yet.) It is only now that the extension &lt;em&gt;begins&lt;/em&gt; to have a fighting chance.&lt;/p&gt;&lt;p&gt;However, the server-side support is not the main problem, although we are yet going to see it IIS. The lack of client-side SNI support holds it back. Although Internet Explorer supports SNI since 7.0, the fact that it does so only on Vista and more recent versions, means that we will have to wait many years for SNI to become practical.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/07/can-you-have-too-much-ssl</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/07/can-you-have-too-much-ssl.html"/>
    <title>Can you have too much SSL?</title>
    <published>2009-07-24T00:00:00+01:00</published>
    <updated>2009-07-24T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;In response to my &lt;a href=&quot;http://blog.ivanristic.com/2009/07/announcing-the-ssl-server-rating-guide-and-the-public-ssl-server-database.html&quot;&gt;announcement&lt;/a&gt; of the &lt;a href=&quot;https://www.ssllabs.com/projects/rating-guide/index.html&quot;&gt;SSL Rating Guide&lt;/a&gt;, &lt;a href=&quot;http://www.clerkendweller.com/&quot;&gt;Colin Watson&lt;/a&gt; left an interesting comment, which I thought would be better answered here.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;&lt;p&gt;Perhaps getting away from the issue of SSL configuration, and more
onto application design, there&amp;#39;s a couple of areas where I feel
OVER-use of SSL might be a problem:&lt;/p&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Overuse of SSL? Having previously stated (in my &lt;a href=&quot;http://www.modsecurity.org/blog/archives/2006/06/secure_browsing.html&quot;&gt;Secure Browsing Mode proposal&lt;/a&gt;) that I&amp;#39;d like to see the Web become a SSL-only place, I don&amp;#39;t think overuse is likely. In fact, given my ongoing struggle to find a hosted blog or wiki service that uses SSL properly, I&amp;#39;d rather see overuse than what we have now — no security at all.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;&lt;p&gt;1. sites that ONLY operate under SSL, and are not available without
SSL, even though most of the content is public and not in any way
sensitive (does this over-use undermine confidence or increase distrust
is other non-SSL sites?)&lt;/p&gt;
&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Even with web sites that do not contain sensitive content (no need for confidentiality), you&amp;#39;d still want SSL to provide authentication (are you seeing the correct web site?) and integrity (has anyone modified content in transit?). &lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;&lt;p&gt;2. sites that are generally not SSL, but allow content to be
accessed using SSL by unauthenticated users (authenticated users always
being forced to use SSL)&lt;/p&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Actually, allowing non-SSL access anywhere on a site that requires authentication at some point is very dangerous. When you access a non-SSL site you have no way of telling if you are seeing the genuine site. A MITM attacker could have intercepted your DNS queries to redirect your HTTP requests elsewhere. He could have easily modified the site&amp;#39;s content in transit. Either way, he&amp;#39;s in charge of what you see. Links to an SSL-enabled portion of the web site could be rewritten to plain-text access. Similarly, such links could lead to an SSL-enabled site under the attacker&amp;#39;s control. Granted, some advanced users would detect such an attack, most most users wouldn&amp;#39;t.&lt;/p&gt;&lt;p&gt;Can you have too much SSL? I don&amp;#39;t think so.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/07/announcing-the-ssl-server-rating-guide-and-the-public-ssl-server-database</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/07/announcing-the-ssl-server-rating-guide-and-the-public-ssl-server-database.html"/>
    <title>Announcing the SSL Server Rating Guide and the Public SSL Server Database</title>
    <published>2009-07-22T00:00:00+01:00</published>
    <updated>2009-07-22T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;It is my great pleasure to announce two new &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; projects today. Although I launched SSL Labs a month ago using &lt;a href=&quot;https://www.ssllabs.com/projects/client-fingerprinting/index.html&quot;&gt;something else&lt;/a&gt; as an excuse, the two projects I am announcing today are the real reason SSL Labs exists. After several months of hard work, my two projects are finally ready for the public.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.ssllabs.com/projects/rating-guide/index.html&quot;&gt;SSL Server Rating Guide&lt;/a&gt; is a no-nonsense SSL server assessment guide. From the introduction:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;The Secure Sockets Layer (SSL) protocol is a standard for encrypted network communication. We feel that there is surprisingly little attention paid to how SSL is configured, given its widespread usage. SSL is relatively easy to use, but it does have its traps. This guide aims to establish a straightforward assessment methodology, allowing administrators to assess SSL server configuration confidently without the need to become SSL experts.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The general idea is to give people something concise to work with, something they can pick up and use in a very short period of time. The guide not only makes SSL server assessment very easy, it also gives clear guidelines on what good configuration looks like.&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;But what good is a rating guide if you don&amp;#39;t have tools that will do the hard work for you? Noticing a lack of good SSL assessment tools, I built one and made it into a free online service. The &lt;a href=&quot;https://www.ssllabs.com/ssldb/index.html&quot;&gt;Public SSL Server Database&lt;/a&gt; was born.&lt;/p&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I hope you will find the projects useful!&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/07/firefox-ssl-extensions</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/07/firefox-ssl-extensions.html"/>
    <title>Firefox SSL extensions</title>
    <published>2009-07-16T00:00:00+01:00</published>
    <updated>2009-07-16T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;When I saw the &lt;a href=&quot;http://www.webappsec.org/lists/websecurity/archive/2009-06/msg00022.html&quot;&gt;email Adam Muntner sent to the webappsec mailing list&lt;/a&gt;, in which he advertises his webappsec collection of Firefox extensions, I immediately realised I wanted to do something similar, but for SSL. There are a few interesting SSL extensions for Firefox, but people generally don&amp;#39;t know about them.&lt;/p&gt;
&lt;p&gt;I ended up creating two collections: one for the extensions that work with the most recent version of Firefox, and another for the older ones:&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;https://www.ssllabs.com/projects/firefox-addons/&quot;&gt;Firefox SSL Add-on Collections&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/07/examples-of-the-information-collected-from-ssl-handshakes</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/07/examples-of-the-information-collected-from-ssl-handshakes.html"/>
    <title>Examples of the information collected from SSL handshakes</title>
    <published>2009-07-09T00:00:00+01:00</published>
    <updated>2009-07-09T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;
I&amp;#39;ve received an email or two asking me about the information I collected using &lt;a href=&quot;https://www.ssllabs.com/projects/client-fingerprinting/&quot;&gt;mod_sslhaf&lt;/a&gt;, so I decided to make it available for everyone. Here it is:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/downloads/sslhaf-20090709-2.txt.gz&quot;&gt;sslhaf-20090709-2.txt.gz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The file contains a list of unique user agents seen on &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt;, each with information on the handshake they used and the protocols and cipher suites they offered to use. For example:&lt;/p&gt;
&lt;pre&gt;Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 \&lt;br /&gt;(KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20&lt;br /&gt; Handshake: h3&lt;br /&gt; Protocol: 03.01&lt;br /&gt;&lt;br /&gt; TLS_RSA_WITH_AES_128_CBC_SHA (0x2f)&lt;br /&gt; TLS_RSA_WITH_RC4_128_SHA (0x05)&lt;br /&gt; TLS_RSA_WITH_RC4_128_MD5 (0x04)&lt;br /&gt; TLS_RSA_WITH_AES_256_CBC_SHA (0x35)&lt;br /&gt; TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x0a)&lt;br /&gt; TLS_RSA_WITH_DES_CBC_SHA (0x09)&lt;br /&gt; TLS_RSA_EXPORT_WITH_RC4_40_MD5 (0x03)&lt;br /&gt; TLS_RSA_EXPORT_WITH_DES40_CBC_SHA (0x08)&lt;br /&gt; TLS_RSA_WITH_NULL_MD5 (0x01)&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;The information gives insight into how SSL is used in real-life, but it&amp;#39;s not reliable enough to support any conclusions about individual clients. There are several problems I need to solve:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Parse User-Agent fields to group related clients.&lt;/li&gt;
&lt;li&gt;Record request IP addresses in order to be able to verify the search engine clients are who they say they are.&lt;/li&gt;
&lt;li&gt;Record request IP addresses to use them as a mechanism to determine forged User-Agent fields.&lt;/li&gt;
&lt;li&gt;Deploy mod_sslhaf to multiple high-traffic sensors, in order to further minimise the possibility of using forged User-Agent fields.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Update (10 July):&lt;/strong&gt; Now with no unknown cipher suites in the output.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/07/analysis-of-googlebots-frugal-cipher-suite-list</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/07/analysis-of-googlebots-frugal-cipher-suite-list.html"/>
    <title>Analysis of Googlebot's frugal cipher suite list</title>
    <published>2009-07-02T00:00:00+01:00</published>
    <updated>2009-07-02T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Two weeks ago, I announced &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; and my technique
for &lt;a href=&quot;https://www.ssllabs.com/projects/client-fingerprinting/&quot;&gt;passive SSL cipher suite
analysis&lt;/a&gt;. It won&amp;#39;t surprise you to learn that I&amp;#39;ve been carefully observing the cipher
suites used in the requests that came to the web site since. (In fact, I announced the site
slightly earlier than I had planned because I wanted to get my hands on some real-life data.)
One client&amp;#39;s SSL fingerprint immediately caught my attention, because it supported only 4 cipher
suites. It was Googlebot.&lt;/p&gt;

&lt;p&gt;There were 115 visits from Googlebot in the two-week period, using 5 different
user agent strings (although Googlebot will sometimes send a request without User-Agent set):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Googlebot-Image/1.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; feed-id=9430846974815548184)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first one is by far the most common, although the other ones appear on regular basis.
I used reverse DNS to verify that the IP addresses belong to Google, with the exception of one Feedfetcher request, for which I had to use &lt;a href=&quot;https://ws.arin.net/whois/&quot;&gt;ARIN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As I’ve already mentioned, Googlebot&amp;#39;s SSL fingerprint is quite short:&lt;/p&gt;

&lt;p class=&quot;blockquote&quot; style=&quot;margin-left: 40px;&quot;&gt;&lt;code&gt;h2,03.01,010080,04,05,0a&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The first token indicates the version of the SSL handshake used. In this case it’s &lt;code&gt;h2&lt;/code&gt;,
which is a code for the SSL v2 handshake. The second token indicates the highest SSL version a client
is willing to support. Googlebot’s choice, &lt;code&gt;03.01&lt;/code&gt;, indicates that is willing to go as far
as TLS v1.0. Modern browsers do not support SSL v2.0 so it&amp;#39;s generally rare to see a browser use
a SSL v2 handshake. Search engines don’t care about security but they do care about accessing as many
servers as possible: they’ll compromise and support the weaker protocols.&lt;/p&gt;&lt;p&gt;What follows is the most interesting part: the codes for only 4 cipher suites. They are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SSL_CK_RC4_128_WITH_MD5 (0x010080)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SSL_RSA_WITH_RC4_128_MD5 (0x04)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SSL_RSA_WITH_RC4_128_SHA (0x05)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SSL_RSA_WITH_3DES_EDE_CBC_SHA (0x0a)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first suite is only valid with SSL v2.0, while the three remaining ones work in SSL v3.0 or TLS v1.0. It&amp;#39;s obvious that, unlike with most other SSL clients, the cipher suites on this list were hand-picked. If I would have to guess, I would say that the motivation was to save on bandwidth and increase performance. It’s likely that all SSL v2.0 servers support the one SSL v2.0 cipher suite, while 3 suites are needed to support the rest of the Internet.&lt;/p&gt;

&lt;p&gt;Assuming the reason for such a short list of cipher suites is frugality, I am surprised it doesn’t contain suites with weaker ciphers. A search bot doesn’t really care about security so it could afford to negotiate a weaker cipher and perhaps save some CPU cycles. Similarly, 3DES is significantly slower (than, for example, RC4) so it would be my first candidate for removal if I am concerned with performance. Thus, I am guessing 3DES is there for interoperability.&lt;/p&gt;

&lt;p&gt;It would be interesting to get someone from Google to comment.&lt;/p&gt;

&lt;p&gt;Interestingly, my net caught one search engine imposter, who claimed he was Googlebot, but wasn&amp;#39;t. While I could have also used a reverse DNS lookup to determine what the imposter wasn’t, in this case I was also able to identify what it was—someone browsing the Internet using a Firefox 2.x browser with and altered User-Agent field. Nice!&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/07/improved-handling-of-ssl-warnings-in-firefox-35</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/07/improved-handling-of-ssl-warnings-in-firefox-35.html"/>
    <title>Improved handling of SSL warnings in Firefox 3.5</title>
    <published>2009-07-01T00:00:00+01:00</published>
    <updated>2009-07-01T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Slightly over a year ago &lt;a href=&quot;http://blog.ivanristic.com/2008/04/firefox-3-ssl-i.html&quot;&gt;I discussed
the SSL certificate error handling in Firefox&lt;/a&gt;. Where Firefox 2.x allows users to simply click through a warning about an invalid SSL connection, Firefox 3.0.x improves the handling and makes it difficult to access the invalid web site.
&lt;/p&gt;
&lt;p&gt;My blog post turned out to be quite popular, sparking a lively discussion, which spilled onto the Mozilla&amp;#39;s Bugzilla when I filed two bug reports for Firefox:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=431827&quot;&gt;Exceptions for invalid SSL certificates are too easy to add&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=431826&quot;&gt;Handling of invalid SSL certificates lacks in usability&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first bug report was rejected after a short discussion (still, I was happy to have been heard), but the second lingered on and, one year later, resulted in the change in how Firefox handles invalid SSL certificates. In Firefox 3.5, when you encounter an invalid SSL web site, you get a screen similar to this one:

&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://blog.ivanristic.com/images/ff3.5-ssl-warning-1.png&quot;&gt;&lt;/p&gt;

&lt;p&gt;Notice the improved language. The message now ways &amp;quot;&lt;em&gt;[...] we can&amp;#39;t confirm that your connection is secure&lt;/em&gt;&amp;quot;, instead of &amp;quot;&lt;em&gt;[a site] uses an invalid security certificate&lt;/em&gt;&amp;quot; (followed by technical mumbo-jumbo). Clicking the two headings at the bottom uncovers the hidden areas, which contain more information and the button to create an exception:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://blog.ivanristic.com/images/ff3.5-ssl-warning-2.png&quot;&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/06/http-client-fingerprinting-using-ssl-handshake-analysis</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/06/http-client-fingerprinting-using-ssl-handshake-analysis.html"/>
    <title>HTTP client fingerprinting using SSL handshake analysis</title>
    <published>2009-06-17T00:00:00+01:00</published>
    <updated>2009-06-17T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;My first &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt; project is about &lt;a href=&quot;https://www.ssllabs.com/projects/client-fingerprinting/&quot;&gt;HTTP client fingerprinting when SSL is used&lt;/a&gt;. A cipher suite, in SSL, is a collection of cryptographic techniques
that defines a secure communication channel. There are hundreds of
cipher suites, and they are all built out of a dozen or so basic
building blocks: key exchange, encryption and integrity validation
algorithms. Different programs often use different cipher suites. By
observing the list of supported cipher suites one can determine the
maximal communication strength, and often even guess the make of the
SSL client on the other side. 
  
  &lt;/p&gt;&lt;p&gt;Possible uses:&lt;/p&gt;
  
  &lt;ul&gt;
&lt;li&gt;System
administrators can make informed decisions about which cipher suites to
enable in the SSL servers they maintain. The general goal is disable as
many of the weak(er) cipher suites, while leaving enough to still make
it possible for users to connect. &lt;/li&gt;
&lt;li&gt;Cross-checking the supported cipher suites with the
HTTP client identity offered in the User-Agent header may help uncover
some automated attack tools that masquarade themselves as browsers.
Although the cipher suites used by an SSL client is completely under
its control, such evasive actions require a new layer of SSL expertise.
(Whereas it is trivial to spoof the contents of the User-Agent header.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The proof of concept is an Apache module, which monitors SSL handshakes to extract the supported cipher suites. This approach is quite handy, because you can add the fingerprinting facility to your existing installation and suffer negligible overhead.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/06/security-researchers-ask-google-to-enable-ssl-encryption-by-default</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/06/security-researchers-ask-google-to-enable-ssl-encryption-by-default.html"/>
    <title>Security researchers ask Google to enable SSL encryption by default</title>
    <published>2009-06-16T00:00:00+01:00</published>
    <updated>2009-06-16T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;A group of 38 researchers and privacy advocates sent a &lt;a href=&quot;http://www.cloudprivacy.net/letter/&quot;&gt;letter&lt;/a&gt; to Google asking it to enable SSL encryption by default in all its applications. Google has had the always-use-SSL option for a while but, since the feature is disabled by default, only a small number of users is taking advantage of it. &lt;a href=&quot;http://googleonlinesecurity.blogspot.com/2009/06/https-security-for-web-applications.html&quot;&gt;Google&apos;s response&lt;/a&gt; was somewhere along the lines of &quot;we&apos;ll give the users security... eventually... if we must&quot;.&lt;/p&gt;&lt;p&gt;Although the performance overhead of SSL is negligible for most web sites, the price of security is likely to be significant in Google&apos;s case, considering the size of its user base.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/06/ssl-labs-launches</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/06/ssl-labs-launches.html"/>
    <title>SSL Labs launches</title>
    <published>2009-06-15T00:00:00+01:00</published>
    <updated>2009-06-15T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Recently I&apos;ve found myself spending more and more time not only thinking about SSL, but also working on several SSL-related projects. SSL is a remarkable technology that is not given nearly as much credit as it deserves. I think this is at least partially because SSL is so commonplace today that people take it for granted. Compared to other security technologies, it is also reasonably easy to configure. But therein lies the danger: SSL is so easy to use that most people have stopped thinking about SSL.&lt;/p&gt;

&lt;p&gt;I think there&apos;s a large gap between how SSL is used today and how it should be used. Actually, I think we first need to make an effort to understand how SSL is actually used today in order to build on that knowledge. With that, in mind, I decided to start a new web site and use it as a launching point for my SSL-related projects. Fast-forward several months; today, I am happy to announce &lt;a href=&quot;https://www.ssllabs.com&quot;&gt;SSL Labs&lt;/a&gt;, which has just launched.&lt;/p&gt;

&lt;p&gt;My initial work on &lt;a href=&quot;https://www.ssllabs.com/projects/client-fingerprinting/&quot;&gt;HTTP client fingerprinting using SSL handshake analysis&lt;/a&gt; is already there (I will write more about it in subsequent posts), but I have several other projects, which I will publish in the following weeks.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2009/01/the-worst-idea-ever-let-s-break-ssl-for-mobile-users</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2009/01/the-worst-idea-ever-let-s-break-ssl-for-mobile-users.html"/>
    <title>The worst idea ever: Let's break SSL for mobile users</title>
    <published>2009-01-31T00:00:00+00:00</published>
    <updated>2009-01-31T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;This is definitely the scariest and stupidest idea I have heard in a very long time: some people on the W3C &lt;a href=&quot;http://www.w3.org/2005/MWI/BPWG/&quot;&gt;Mobile Web Best Practices Working Group&lt;/a&gt; think that is acceptable to break SSL—the security backbone of the Internet—in order to help transcoding proxies reformat content for mobile users:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://weblog.cenriqueortiz.com/mobility/2009/01/29/the-wap-gap-all-over-again-w3c-https-and-transcoding/&quot;&gt;The “WAP Gap” All Over Again - W3C, HTTPS and Transcoding&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This just demonstrates one of the reasons we suck at security: small groups of people who do not really know what they are doing wield significant power and affect millions. It&amp;#39;s like year 2000 all over again. We are lucky when in some cases (such as in this one) there are informed people willing to stand for what&amp;#39;s right.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2008/12/will-the-real-john-viega-please-stand-up</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2008/12/will-the-real-john-viega-please-stand-up.html"/>
    <title>Will the real John Viega please stand up?</title>
    <published>2008-12-31T00:00:00+00:00</published>
    <updated>2008-12-31T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I thought this was very funny. Yesterday I came across &lt;a href=&quot;http://broadcast.oreilly.com/2008/12/an-attack-on-public-key-infras.html&quot;&gt;this post from John Viega&lt;/a&gt; where he discusses the certificate trust model, ending the post with:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;That leaves the Internet fundamentally broken.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Then, today, in a &lt;a href=&quot;http://blogs.zdnet.com/security/?p=2343&quot;&gt;guest post on the Zero Day blog&lt;/a&gt;, he states:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;People are declaring the entire Internet is broken, and that it will be hard to fix. This is simply not true.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2008/12/howto-create-a-rogue-ca-certificate-for-2000</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2008/12/howto-create-a-rogue-ca-certificate-for-2000.html"/>
    <title>HOWTO: Create a rogue CA certificate for $2000</title>
    <published>2008-12-30T00:00:00+00:00</published>
    <updated>2008-12-30T00:00:00+00:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;An international group of researchers—speaking at the &lt;a href=&quot;http://events.ccc.de/congress/2008/&quot;&gt;25th
Chaos Communication Club conference&lt;/a&gt;—published details on how they had managed to construct a rogue
Certificate Authority (CA) certificate (!) using a weakness in the MD5 hashing algorithm. They estimate
the attack costs $20,000 to execute today, but that the cost can be reduced to as little as $2000.
With a rogue CA certificate in hand they are able to impersonate any SSL-enabled web site and conduct
MITM attacks undetected (no browser warnings!).&lt;/p&gt;

&lt;p&gt;The presentation is now available for
&lt;a href=&quot;http://events.ccc.de/congress/2008/Fahrplan/attachments/1251_md5-collisions-1.0.pdf&quot;&gt;download&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update (30 Dec):&lt;/strong&gt; And so is the &lt;a href=&quot;http://www.win.tue.nl/hashclash/rogue-ca/&quot;&gt;paper&lt;/a&gt;,
along with &lt;a href=&quot;http://www.phreedom.org/research/rogue-ca/&quot;&gt;more information&lt;/a&gt; and a
&lt;a href=&quot;https://i.broke.the.internet.and.all.i.got.was.this.t-shirt.phreedom.org/&quot;&gt;demonstration site&lt;/a&gt;
(the CA&amp;#0160; certificate was purposefully constructed to expire in 2004, which essentially makes it
harmless).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update (31 Dec): &lt;/strong&gt;
&lt;a href=&quot;https://blogs.verisign.com/ssl-blog/2008/12/on_md5_vulnerabilities_and_mit.php&quot;&gt;Verisign fixes
the problem&lt;/a&gt;.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img border=&quot;0&quot;
src=&quot;/images/rogue-ca-cert.png&quot; style=&quot;width: 516px;&quot; title=&quot;Badca&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2008/07/self-signed-certificates-in-production-point-to-a-failure-of-ssl</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2008/07/self-signed-certificates-in-production-point-to-a-failure-of-ssl.html"/>
    <title>Self-signed certificates in production point to a failure of SSL</title>
    <published>2008-07-17T00:00:00+01:00</published>
    <updated>2008-07-17T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I am realising that, although the problem that many Firefox users have with self-signed certificates points to a failure in software design (this is not a stab at Firefox, rather a testament to how difficult it is to design software to suit a diverse user base), it really points to a failure of SSL. Why do we have such large numbers of self-signed certificates in the first place? Why isn&apos;t everyone using valid certificates?&lt;/p&gt;
&lt;p&gt;SSL is a great security protocol and a great success overall. Consider the following:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Hybrid protocol that, when properly implemented, offers security and performance at the same time.&lt;/li&gt;

&lt;li&gt;Future-friendly design that allows ciphers and hashing techniques to be replaced as they begin to age&lt;/li&gt;

&lt;li&gt;Can be applied to any communication protocol (well, &lt;a href=&quot;http://technology.newscientist.com/article/dn14124-compressed-web-phone-calls-are-easy-to-bug.html&quot;&gt;almost any&lt;/a&gt;; and the problem will eventually be fixed).&lt;/li&gt;

&lt;li&gt;Free.&lt;/li&gt;

&lt;li&gt;Rock solid, as the designs are in the public and they have been thoroughly reviewed.&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;The catch is in the &amp;quot;properly implemented&amp;quot; part. SSL can give you security but only if you can build on top of an existing trust relationship. Most people don&apos;t really think about the underlying trust foundation because this is something normally handled by browser vendors when they accept to trust the root certificates of the established certificate authorities. By the time you open a browser you already trust a few dozen entities. They, in turn, extend their trust to cover the web sites you are visiting and everything seems great. Except that there are a few rough edges:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Using valid certificates is an optional step in the configuration of any web server. It requires knowledge, time and effort, and many people can&apos;t be bothered. There&apos;s also the overhead of required regular maintenance.&lt;/li&gt;

&lt;li&gt;The cost model falls apart for very small entities, mostly because of the administrative overhead, but also also because of the additional cost of the certificate itself.&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;At first I thought the best thing to do would be to relax handling of invalid SSL certificates in browsers. After all—I thought—we don&apos;t really trust; most people don&apos;t check certificates anyway. We really care about transport security and not having our credit card details snapped while in transit. My idea was to simply ignore the fact that a certificate is self-signed. Perhaps use different colours to show the difference. I felt pretty good about that until I realised that would allow for unrestricted exploitation through man-in-the-middle (MITM) attacks. You see, the problem is that it is impossible to differentiate between a self-signed certificate and a MITM attack. It&apos;s not a problem of SSL or even the implementation. Oh, well, back to the drawing board. (Bruce Schneier recently wrote about MITM attacks: &lt;a href=&quot;http://www.schneier.com/blog/archives/2008/07/maninthemiddle_1.html&quot;&gt;his post&lt;/a&gt; has a couple of very interesting stories and workarounds.)&lt;/p&gt;

&lt;p&gt;The only thing I can think of that would help is raising awareness, and browser vendors seem to be doing that at the moment. Yes, there&apos;s a number of angry people, but I trust all the vendors will do the right thing—eventually. We should just be patient and wait for it to happen, while continuing to remind the vendors that security matters.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2008/07/firefox-versus-ssl-is-really-about-security-versus-usability</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2008/07/firefox-versus-ssl-is-really-about-security-versus-usability.html"/>
    <title>Firefox versus SSL is really about security versus usability</title>
    <published>2008-07-15T00:00:00+01:00</published>
    <updated>2008-07-15T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;My blog post &lt;a href=&quot;http://blog.ivanristic.com/2008/04/firefox-3-ssl-i.html&quot;&gt;Firefox 3 improves handling of invalid SSL certificates&lt;/a&gt; is proving to be very popular. It touched a nerve, and the comments of unhappy Firefox users keep piling on. Although I suspect a large part of the problem stems from bugs (if you read the comments you will find the reports of clearly unintended behaviour), there is a bigger problem between Firefox and its user base: it is one of security versus usability.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Who knows better: developers, or users?&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;It&apos;s not a problem specific to Firefox, nor a problem that only exists in the security sphere. In fact, once you become aware of the existence of the problem and start looking around, you will find it in virtually every aspect of technology. &lt;a href=&quot;http://www.gnome.org&quot;&gt;GNOME&lt;/a&gt;, for example, is famous for dumbing down the user interface and forcing its users to behave in a certain way.&lt;/p&gt;

&lt;p&gt;It&apos;s not surprising that, with two opposing sides, there are two schools of thought. Implementing either approach is easy&amp;#8212;and that&apos;s what many applications do&amp;#8212;but that only results in unhappy users. Finding a way to make products usable, yet secure (or feature-full, outside security) is the real challenge. How do we educate the innocent yet enable the proficient?&lt;/p&gt;

&lt;p&gt;Speaking of implementation, the answer may be in making applications capable of adapting to user needs. A system-wide setting could tell applications whether a user prefers to have decisions made for him. Alternatively, an application-specific flag could be set during installation. Having just two settings is probably not feasible, but there should be an easy way for advanced users to ask applications to show them everything.&lt;/p&gt;

&lt;p&gt;But it may be that, in order to really solve the problem, we need to make a further step back and examine the way we develop applications. I think the majority of applications are still built by technical people, pushed by business people with features (not security or usability) in mind. Happy users are productive users, but very few companies seem to recognise this fact.&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2008/06/eliminating-session-hijacking-forever</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2008/06/eliminating-session-hijacking-forever.html"/>
    <title>Eliminating session hijacking... forever</title>
    <published>2008-06-04T00:00:00+01:00</published>
    <updated>2008-06-04T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;Jim Manico, over at &lt;a href=&quot;http://manicode.blogspot.com&quot;&gt;Manicode&lt;/a&gt;, is doing an interesting thing: he is trying to convince the maintainers of every web application stack component everywhere (e.g. browsers, web servers, libraries) to implement the HttpOnly mechanism&amp;nbsp; (read more on HttpOnly in &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms533046.aspx&quot;&gt;Mitigating Cross-site Scripting With HTTP-only Cookies&lt;/a&gt;). Actually, he is doing more than that—in many cases he is fixing things himself and submitting the patches. It&apos;s his &lt;a href=&quot;http://manicode.blogspot.com/2008/05/httponly-crusade-update.html&quot;&gt;&lt;em&gt;HttpOnly Crusade&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The general idea behind HttpOnly is to prevent the disclosure of session tokens to JavaScript, which would, in turn, reduce the likelihood of session hijacking attacks. It&apos;s a noble idea, but one which is very difficult to succeed. The problem is that we are dealing with a leaky bucket. HttpOnly deals with one of the leaks, but it doesn&apos;t do anything about the others. And there are many leaks to take care of. If you go through Jim&apos;s blog posts, you will find that AJAX requests will also need tweaking (to hide the cookies marked with HttpOnly), and there is not even mention of session tokens embedded in request URIs, or embedded in request parameters. There is no doubt that an implementation of HttpOnly in all software components would raise the bar and make us more secure, but it won&apos;t solve the problem. In this particular case I would prefer to &lt;em&gt;replace the entire bucket&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Our real problem is that session management is not standardised, forcing every application platform (and many applications) to provide its own implementation. Why is this bad?&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Implementing session management correctly is not trivial. First versions of many implementations have been found to be incorrect and, thus, insecure.&lt;/li&gt;

&lt;li&gt;It&apos;s a waste of time. Session management is best abstracted and handled by the underlying platform or library.&lt;/li&gt;

&lt;li&gt;Application-level implementations of session management (all implementations today) are inherently vulnerable to session hijacking. We must move session management to a different layer in order to be able to implement it securely (see below).&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;Why is session hijacking possible in the first place? The HTTP authentication model, as originally envisioned, is not vulnerable to session hijacking because it requires authentication on every request. Session tokens are still needed to identify which requests are part of a session, but since authentication always take place there can be no hijacking. The HTTP authentication model was lacking in many other respects (e.g. there were no provisions to log people out, expire sessions, and so on), so most people simply decided not to use it. In the currently dominant session management model authentication is done only once per session, which turns session tokens into time-limited password surrogates, and thus valuable. Anyone who knows a session token can resume the session it refers to.&lt;/p&gt;

&lt;p&gt;There are two ways to solve the session hijacking problem cleanly:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Perform authentication on every request, thus making session tokens worthless (as far as hijacking is concerned). You can do this today in certain circumstances, for example if you are willing to use any of the HTTP authentication methods (Basic or Digest), or if your application uses client SSL certificates (in this case all you need to do is to attach the client&apos;s SSL certificate to the session, and check that it is the same on every subsequent request).&lt;/li&gt;

&lt;li&gt;Start a new RFC effort to define session management, and then implement it in a layer other than HTTP. We already have the ideal candidate for this function—SSL. SSL actually already understands sessions (they were added to version 3 to increase performance) so only a few tweaks would be needed to make the mechanism suitable for web applications.&lt;/li&gt;&lt;/ol&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2008/04/firefox-3-improves-handling-of-invalid-ssl-certificates</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2008/04/firefox-3-improves-handling-of-invalid-ssl-certificates.html"/>
    <title>Firefox 3 improves handling of invalid SSL certificates</title>
    <published>2008-04-29T00:00:00+01:00</published>
    <updated>2008-04-29T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;I have downloaded the beta of Firefox 3 to check out the improvements related to SSL. First, there&apos;s the added support for Extended Validation SSL certificates, but I am not very excited about that (I wrote about this previously in &lt;a href=&quot;http://blog.ivanristic.com/2008/02/extended-valida.html&quot;&gt;&lt;em&gt;Extended Validation SSL certificates not going anywhere, as predicted&lt;/em&gt;&lt;/a&gt;). It&apos;s a nice feature, but it&apos;s not going to bring much good overall. On the other hand, I am &lt;em&gt;very&lt;/em&gt; happy with the improvements to the handling of invalid SSL certificates.&lt;/p&gt;

&lt;p&gt;Firefox 2.x allows users to simply click-through their way to a site that uses an invalid certificate.&amp;nbsp; There is a warning of some sort, but who reads warnings anyway? (Internet Explorer is not much better in this respect, although at least its warning is very clear about not recommending the user to proceed.) &lt;/p&gt;

&lt;p&gt;With Firefox 3.x, the situation is much better. First you get the same style of error response as you would for any other network problem:&lt;/p&gt;

&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;/images/ff-invalid-certs-1.png&quot; title=&quot;Firefox_3_ssl_warning&quot; alt=&quot;Firefox_3_ssl_warning&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;The beauty of this page is that it does not allow you to proceed to the site. To go through you have to create an exception, which is a multi-step process that you can start by clicking on that link at the bottom. You then get the following:

&lt;/p&gt;

&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;/images/ff-invalid-certs-2.png&quot;&gt;&lt;/p&gt;

&lt;p&gt;Another warning; very good. Clicking the &lt;em&gt;Add Exception...&lt;/em&gt; button gives you the form that is used to actually create exceptions. There&apos;s a nice final warning on the top of the form, which will hopefully deter those who will be attempting to create an exception for the wrong reasons:&lt;/p&gt;

&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;/images/ff-invalid-certs-3.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The changes represent a great step forward, and significantly reduce the likelihood of successful man-in-the-middle attacks. Still, I wouldn&apos;t mention exceptions at all on the error page: advanced users will find a way to do what they must, but normal users are better-off not knowing anything about exceptions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update (7 May 2008):&lt;/strong&gt; My &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=431827&quot;&gt;request to make hide the functionality to create exceptions from the error page&lt;/a&gt; was rejected. It&apos;s good to know that the issue was considered, even if the decision is not the one I would have made. Daniel Veditz pointed me to Johnath&apos;s blog post, which &lt;a href=&quot;http://blog.johnath.com/index.php/2007/10/11/todo-break-internet/&quot;&gt;describes the history behind the new SSL error page&lt;/a&gt;. Very interesting.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

</content>
  </entry>
  
  <entry>
    <id>http://blog.ivanristic.com/2007/06/extended-validation-certificates-a-change-for-the-better-but-not-enough</id>
    <link type="text/html" rel="alternate" href="http://blog.ivanristic.com/2007/06/extended-validation-certificates-a-change-for-the-better-but-not-enough.html"/>
    <title>Extended Validation Certificates: A change for the better (but not enough)</title>
    <published>2007-06-15T00:00:00+01:00</published>
    <updated>2007-06-15T00:00:00+01:00</updated>
    <author>
      <name>Ivan Ristić</name>
    </author>
    <category term="SSL" />
    <content type="html">&lt;p&gt;On June 12th, 2007, the &lt;a href=&quot;http://www.cabforum.org&quot;&gt;CA/Browser Forum&lt;/a&gt; (a group that consists of leading certificate authorities and browser vendors) ratified the first version of the &lt;a href=&quot;http://www.cabforum.org/EV_Certificate_Guidelines.pdf&quot;&gt;Extended Validation (EV) SSL Guidelines&lt;/a&gt;. The goal of the guidelines is to introduce a new type of certificate, Extended Validation Certificate, with intent to standardise the certificate issuance process.&lt;/p&gt;

&lt;p&gt;Those of you that remember the early days of SSL certificates will find that the &quot;new&quot; process is pretty much identical to the one we had to undergo years ago. Things such as verifying legal existence, identity, registration number, right to use the domain name--are all there. There is one crucial difference, though. This time the process is mandatory whereas before, it turns out, it was merely a matter of choice. No wonder the quality of the vetting had deteriorated over the years as companies fought for the market by lowering prices.&lt;/p&gt;

&lt;p&gt;There are many who do not like the new Extended Validation Certificates. They usually say the new type of certificate will not solve our problems. And that they are merely a way for the certificate authorities to extract more money from their customer base. While I agree with the former, I do not necessarily agree with the latter (but this is not to say the CAs will not be happy to collect the extra funds). &lt;/p&gt;

&lt;p&gt;The point is that a solid vetting process should have been a mandatory requirement from the start. The fact that we missed the opportunity to do the right thing then does not mean we have to continue living with the mistake. It is true--the new certificate does fall short of solving our problems. But, guess what, that was never the intention. Citing from the EV Certificate Guidelines (page 13):&lt;/p&gt;

&lt;blockquote&gt;&lt;i&gt;
(c) &lt;b&gt;Excluded&lt;/b&gt; Purposes EV Certificates focus only on the identity of the Subject named in the Certificate, and not on the behavior of the Subject. As such, an EV Certificate is not intended to provide any assurances, or otherwise represent or warrant:
&lt;ol&gt;
&lt;li&gt;That the Subject named in the EV Certificate is actively engaged in doing business;
&lt;li&gt;That the Subject named in the EV Certificate complies with applicable laws;
&lt;li&gt;That the Subject named in the EV Certificate is trustworthy, honest, or reputable in its business dealings; or
&lt;li&gt;That it is &quot;safe&quot; to do business with the Subject named in the EV Certificate.
&lt;/i&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;b&gt;&lt;i&gt;SSL certificates have nothing to do with trust.&lt;/i&gt;&lt;/b&gt; (Admittedly, it&apos;s a fact we didn&apos;t fully appreciate when they were introduced.) Their purpose is simply to identify the party on the other side of the communication channel. For trust we need to turn to other methods. Actually, we developed perfectly good methods to do this in real life. For example, most people take into account the brand name of the store or that of the manufacturer. You are going to be very comfortable buying from Amazon because you &lt;i&gt;know&lt;/i&gt; the company. By the same token, you are probably going to think twice before buying from a badly-designed, badly-built web site you&apos;ve just run across.&lt;/p&gt;

&lt;p&gt;There is one aspect where Extended Validation Certificates fall short, and that&apos;s the implementation and the changes in the browser user interfaces. To accommodate the new type of certificate browsers have resorted to displaying the sites protected with such certificates in a slightly different way. There are two problems with this. One is that a normal user stands to gain very little from the change. The other is that, even for the small gain that can be achieved, a huge marketing effort is going to be required to explain the difference. This effort is not only going to be expensive but also take time--a lot of time. It something we can successfully do maybe once or twice in a decade. The EV Certificates are simply not worth it.&lt;/p&gt;

&lt;p&gt;A far better solution would have been to, slowly and quietly, reform the certificate issuance process. Let the old certificates expire and start issuing better ones &lt;i&gt;today&lt;/i&gt;. While that is happening figure out a way to deal with our real problems and inform the normal Internet users only once we are happy we&apos;ve done the right thing.&lt;/p&gt;
		
</content>
  </entry>
  
 
</feed>
