{"id":11756,"date":"2019-11-11T10:20:37","date_gmt":"2019-11-11T15:20:37","guid":{"rendered":"https:\/\/www.thesslstore.com\/blog\/?p=11756"},"modified":"2019-12-02T09:56:27","modified_gmt":"2019-12-02T14:56:27","slug":"delegated-credentials-facebook-mozilla-cloudflares-new-tls-protocol-explained","status":"publish","type":"post","link":"https:\/\/www.thesslstore.com\/blog\/delegated-credentials-facebook-mozilla-cloudflares-new-tls-protocol-explained\/","title":{"rendered":"Delegated Credentials: Facebook, Mozilla &#038; Cloudflare\u2019s New TLS Protocol Explained"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Here\u2019s what you need to know about delegated credentials\nand how they\u2019ll affect your certificate management<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Facebook, Mozilla, and Cloudflare just\nannounced the development of delegated credentials, a new cryptographic protocol\nthat\u2019s expected to bolster the TLS security of multi-server websites and\nwebsites operating through Content Delivery Networks (CDN). <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After three years of combined efforts by\nthese tech giants, this new protocol is on the path to becoming an internet\nstandard. Currently, it&#8217;s undergoing standardization at the Internet\nEngineering Task Force (IETF), the international body responsible for defining\ninternet standards. And soon, it could become an internet standard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Delegated credentials is an extension to <a href=\"https:\/\/www.thesslstore.com\/new-to-ssl\/what-is-ssl-tls.aspx\">SSL\/TLS certificates<\/a>, which are installed on web servers and are responsible for encrypted connections between web browsers and web servers. Before we get to the ins and outs of delegated credentials, let\u2019s first understand why it\u2019s been created in the first place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s hash it out.<span id=\"newline\"><\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Security Problem Facebook &amp; Cloudflare Are Facing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The reason why Facebook &amp; Cloudflare\nteamed up on this is because they\u2019re facing a common problem: SSL\/TLS security\non multiple web servers. Platforms such as Facebook and Cloudflare are used by\nhundreds of millions of people around the world. And therefore, they need to\nset up hundreds of servers across the globe to serve their customers. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because Facebook or Cloudflare need to\nimplement HTTPS connections on their platform, there&#8217;s no good option but to\ninstall a copy of their SSL\/TLS certificate on each server. That also means\nthat each of their servers will have the private key of their certificate. Now\nthat&#8217;s quite a danger as hacking one web server and stealing the private key\nfrom it could allow a hacker to: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>run a man-in-the-middle (MitM)\nattack, <\/li><li>imitate their web servers, and <\/li><li>intercept all of their traffic.\n<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, it&#8217;s not as simple as it sounds,\nbut it\u2019s a possibility, and that&#8217;s why innovative solutions such as delegated credentials\nare valuable. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Happens When a Certificate\/Private Key is\nCompromised?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If an SSL\/TLS certificate is compromised,\nthe only option server operators have is to revoke the SSL\/TLS certificate via\nthe certificate authority (CA) that issued the certificate. To do so, they must\ncontact the CA and ask them to revoke the certificate. In the process, they\nmust prove their ownership. Once that is determined, the CA revokes the\ncertificate. So far, it&#8217;s all good \u2013 your certificate was compromised and you\ngot it revoked. But, there&#8217;s one major challenge remaining: How would your\nclients (web browsers) know about this revocation? What&#8217;s the point if the\nbrowsers don&#8217;t know about it, right? <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, there&#8217;s a solution \u2014 two, in fact. To communicate the revocation information to the browsers, two mechanisms are used: 1) Certificate Revocation List (CRL) and 2) Online Certificate Status Protocol (OCSP). We won&#8217;t go into the details, but they both come with significant pitfalls, and that&#8217;s why <a href=\"https:\/\/www.thesslstore.com\/blog\/firefox-disable-ocsp-checking\/\">they&#8217;re hard to rely upon<\/a> \u2013 especially when the data of millions of people is at stake. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the worst case, there&#8217;s also a\npossibility of the CA having a lousy day and facing downtime. You know what\nthis means, don&#8217;t you?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another solution that some organizations\npromote is to shorten the validity period of SSL\/TLS certificates. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">It May Sound Good, But Shortening Certificate Lifespan Isn&#8217;t\nPractical<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s quite evident that the time between\nthe compromise and certificate revocation is the only time that a hacker has to\nexecute a man-in-the-middle attack and intercept traffic (although a hacker\ncould kind of bypass certificate revocation, but that&#8217;s a topic for another\nday). So, it makes sense to have certificates issued with a shorter lifespan of\njust hours or days. This way, because the certificate is renewed frequently, a\nhacker will have a very narrow window to execute the attack.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This might sound good on the surface, but\nit isn&#8217;t a practical solution \u2014 and here\u2019s why.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SSL\/TLS certificates are issued centrally\nby certificate authorities (CAs). This means that if you\u2019ve got short duration\ncertificates, you must issue certificates time and time again. This, of course,\nincreases the possibility of failures. And you could be in a real jam if the\ncertificate authority issuance process is offline for whatever reason. So, it&#8217;s\nclear that reducing the certificate lifespan isn&#8217;t a solution that we can\nimplement in the real world.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How the TLS Delegated Credentials Extension Solves the\nProblem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The TLS delegated credentials extension solves\nthis problem by using private keys with a shorter lifespan than your actual (leaf)\ncertificate. These private keys are called delegated credentials and are\ngenerated by the web server, not the certificate authority (CA). This delegated\ncredential structure consists of: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>the public key,<\/li><li>the expiration date of\ndelegated credentials (the new private key), and<\/li><li>the signature of delegated\ncredentials signed by the server&#8217;s leaf certificate. <\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Because the delegated credential has its\nown public key, it can be used to establish secure connections with web\nbrowsers. And the leaf certificate (a separate certificate issued by the publicly\ntrusted certificate authority) signs the credentials so that they are trusted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This way, by delegating the issuing\nprocess, we can achieve what we want \u2014 shorter private key expiration time. In\nother words, site owners don\u2019t need to contact their certificate authority (CA)\nto issue certificates time and again. However, the leaf certificate \u2014 issued by\na certificate authority \u2014 must sign the delegated credentials for browsers to\nconsider it legitimate.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2019\/11\/delegated-credentials-1024x576.jpg\" alt=\"Graphic: delegated credentials\" class=\"wp-image-11757\" srcset=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2019\/11\/delegated-credentials-1024x576.jpg 1024w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2019\/11\/delegated-credentials-300x169.jpg 300w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2019\/11\/delegated-credentials-768x432.jpg 768w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2019\/11\/delegated-credentials.jpg 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption> Image source: <a href=\"https:\/\/engineering.fb.com\/wp-content\/uploads\/2019\/10\/DelegatedC.jpg\">https:\/\/engineering.fb.com\/wp-content\/uploads\/2019\/10\/DelegatedC.jpg<\/a> <\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">This also means that site owners don&#8217;t need\nto put their real private key on each of their servers. They can issue a distinct\nprivate key (with a much shorter lifespan) to each of their servers. So, even\nif the private key (delegated credentials) of one web server gets compromised,\nit won&#8217;t affect others, and a hacker will have a much shorter (and smaller) window\nof opportunity.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Greater Flexibility to Experiment with More Advanced\nEncryption Algorithms<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Right now, the public key infrastructure\n(PKI) that we all use supports a limited set of algorithms to encrypt the\ninformation as it is limited by the algorithms that certificate authorities\n(CAs) support. However, with delegated credentials in place, the server operators\nhave the flexibility to experiment with newer and more advanced algorithms\nsince the server also computes and signs the keys. For example, delegated\ncredentials could work as a bridge for the public key infrastructure to\ntransition into post-quantum cryptography.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">You Can Try Delegated Credentials Yourself<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Facebook has already implemented delegated\ncredentials in Fizz, its open-source implementation of TLS 1.3. You can try it\nby implementing the following steps:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Download the latest version of Mozilla Firefox.<\/li><li>Type <strong>about:config<\/strong> in the address bar and go to <strong>security.tls.enable_delegated_credentials. <\/strong><\/li><li>Now change its default value to true (you need to double-click on <strong>false<\/strong>).<\/li><li>Go to <a href=\"https:\/\/www.fbdelegatedcredentials.com\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">this website<\/a>.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Once you complete all the steps, you should\nsee this in your browser window:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"642\" height=\"176\" src=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2019\/11\/fb-delegated-credentials-success2.png\" alt=\"\" class=\"wp-image-11759\" srcset=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2019\/11\/fb-delegated-credentials-success2.png 642w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2019\/11\/fb-delegated-credentials-success2-300x82.png 300w\" sizes=\"auto, (max-width: 642px) 100vw, 642px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">A Final Word<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Even though the delegated credentials\nprotocol is about to be adopted by the IETF, its full implementation will take\ntime as it must be supported by all browsers, and users must be using updated\nbrowsers. Since a good percentage of users browse through older browsers, it\nwill take time for the web to fully benefit from this innovation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Having said that, the introduction of delegated credentials is undoubtedly a step forward as far as security and privacy are concerned. It reduces the possibility of issues such as <a href=\"https:\/\/www.thesslstore.com\/support\/openssl-heartbleed.aspx\">Heartbleed<\/a>. Although it\u2019s mainly for the likes of multi-server websites and CDNs, it&#8217;s going to add an additional safeguard to privacy for millions of end users. (If you have a website that runs on a single server, it&#8217;s not going to have many benefits since implementing it could be a hassle and your certificate private key would still be stored on the same server as the delegated credential anyhow.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em> As always, leave any comments or questions below\u2026<\/em><\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s what you need to know about delegated credentials and how they\u2019ll affect your certificate management Facebook, Mozilla, and Cloudflare just announced the development of delegated credentials, a new cryptographic&#8230;<\/p>\n","protected":false},"author":10,"featured_media":11760,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":"","tve_updated_post":"","tve_custom_css":"","tve_user_custom_css":"","tve_globals":{},"tcb2_ready":0,"tcb_editor_enabled":0,"tve_landing_page":"","_tve_header":"","_tve_footer":""},"categories":[130,10200],"tags":[11439],"class_list":["post-11756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-everything-encryption","category-monthly-digest","tag-delegated-credentials","post-with-tags"],"views":9021,"jetpack_featured_media_url":"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2019\/11\/delegated-credentials-protocol.png","_links":{"self":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/posts\/11756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/comments?post=11756"}],"version-history":[{"count":0,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/posts\/11756\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/media\/11760"}],"wp:attachment":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/media?parent=11756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/categories?post=11756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/tags?post=11756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}