<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi Daniel,<div><br></div><div>The more things about a domain you can change, the greater proof it is that you can control over it.</div><div><br></div><div>The fewer requirements there are, the easier it is to attack.</div><div><br></div><div>The more requirements you add, the more you shrink the set of potential malicious actors who can forge ownership.</div><div><br></div><div>Cheers,</div><div>Greg Slepak</div><div><div>
<br class="Apple-interchange-newline"><span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">--</span><br style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">Please do not email me anything that you are not comfortable also sharing</span><span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;"> with the NSA.</span>
</div>
<br><div><div>On Jan 19, 2015, at 3:26 PM, Daniel Roesler <<a href="mailto:diafygi@gmail.com">diafygi@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Howdy all,<br><br>Over the weekend, I made a script that gets certificate signing<br>requests signed by the Let's Encrypt Demo CA[1]. You have to prove to<br>the CA that you own the domain you're requesting a signature for, so I<br>spent quite a bit of time digging into the ACME spec for automatically<br>determining ownership of a domain[2].<br><br>So it got me wondering what is considered best practice or ideal for<br>proving your ownership of a resource? What will create the widest<br>adoption? What will people trust?<br><br>For ACME, there are several challenges that can prove you have control<br>over the domain:<br><br>1. Simple HTTPS - Serve a specific file at a specific domain on port 443<br>2. DVSNI - Serve a TLS cert with a specific subjectAltName on port 443<br>3. DNS - Add a specific TXT record to your DNS<br>4. Email (undocumented, possibly in the future)<br>5. DNSSEC (undocumented, possibly in the future)<br>6. WHOIS (undocumented, possibly in the future)<br><br>For KeyBase, #1 or #3 is used[3]. For StartSSL, Comodo, and other SSL<br>cert retailers, #4 and #6 are used[4]. <a href="http://App.net">App.net</a> and Google use html<br>tags to verify ownership (which is not on the ACME list)[5][6]. EV<br>certificates require a legal entity to be verified[7].<br><br>What about other resources? Package managers use PGP keys to sign<br>packages (yet another method). As far as I know there's not a similar<br>way to sign javascript libraries that you might serve from a CDN, but<br>clients could use Subresource Integrity[8] to manually restrict file<br>hashes. another great use for signed code instead of TLS would be for<br>keyserver pools like SKS[9].<br><br>So what's best? We have a ton of methods for proving ownership of<br>domains and web content, which makes things very confusing.<br><br>-Daniel<br><br>[1]: <a href="https://github.com/diafygi/letsencrypt-nosudo">https://github.com/diafygi/letsencrypt-nosudo</a><br>[2]: <a href="https://letsencrypt.github.io/acme-spec/#rfc.section.6">https://letsencrypt.github.io/acme-spec/#rfc.section.6</a><br>[3]: <a href="https://github.com/keybase/keybase-issues/issues/261">https://github.com/keybase/keybase-issues/issues/261</a><br>[4]: <a href="https://konklone.com/post/switch-to-https-now-for-free">https://konklone.com/post/switch-to-https-now-for-free</a><br>[5]: <a href="http://blog.app.net/2013/04/29/announcing-domain-verification/">http://blog.app.net/2013/04/29/announcing-domain-verification/</a><br>[6]: <a href="https://support.google.com/webmasters/answer/35179?hl=en">https://support.google.com/webmasters/answer/35179?hl=en</a><br>[7]: <a href="https://cabforum.org/overview-of-the-extended-validation-ssl-vetting-process/">https://cabforum.org/overview-of-the-extended-validation-ssl-vetting-process/</a><br>[8]: <a href="http://www.w3.org/TR/SRI/">http://www.w3.org/TR/SRI/</a><br>[9]: <a href="https://sks-keyservers.net/overview-of-pools.php">https://sks-keyservers.net/overview-of-pools.php</a><br>_______________________________________________<br>Messaging mailing list<br><a href="mailto:Messaging@moderncrypto.org">Messaging@moderncrypto.org</a><br>https://moderncrypto.org/mailman/listinfo/messaging<br></blockquote></div><br></div></body></html>