<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Just another WordPress site</title>
	<atom:link href="http://www.indolering.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.indolering.com</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Thu, 28 Sep 2017 22:39:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.2</generator>
<site xmlns="com-wordpress:feed-additions:1">24070217</site>	<item>
		<title>ICE Stonewalling Domain Seizure FOIA</title>
		<link>https://www.indolering.com/ice-stonewalling-foia/</link>
		<comments>https://www.indolering.com/ice-stonewalling-foia/#respond</comments>
		<pubDate>Sun, 16 Aug 2015 00:11:59 +0000</pubDate>
		<dc:creator><![CDATA[Zachary Lym]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://www.indolering.com/?p=728</guid>
		<description><![CDATA[Nine months ago, I wrote a blogpost outlining the exponential increase of domain name seizures by the US government and calling for a site to track these abuses. One disturbing element of this was that there is no list of domain name seizures, so I put in a FOIA request to ICE. Nine months later, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Nine months ago, I wrote a blogpost <a href="https://www.indolering.com/chilling-effects-domain-names">outlining the exponential increase of domain name seizures</a> by the US government and calling for a site to track these abuses. One disturbing element of this was that there is no list of domain name seizures, so I put in a FOIA request to ICE. Nine months later, I&#8217;m still waiting.</p>
<p><span id="more-728"></span></p>
<p>The bulk of my original request:</p>
<p style="padding-left: 30px;">This acknowledges receipt of your November 23, 2014, Freedom of Information Act (<span class="il">FOIA</span>) request to U.S. Immigration and Customs Enforcement (ICE), for a list of ALL internet domain names that ICE has participated in seizing up to the present day. While there are few documents with dozens domains, ICE press releases indicate that the number is well over a thousand. To be clear: also interested in domains that were part of join operations, such as that of Europol (<a href="http://www.infosecurity-magazine.com/news/700-domains-seized-by-ice-europol-and-hong-kong/" target="_blank" rel="noopener">http://www.infosecurity-<wbr />magazine.com/news/700-domains-<wbr />seized-by-ice-europol-and-<wbr />hong-kong/</a>). Your request was received in this office on November 25, 2014.</p>
<p style="padding-left: 30px;">Due to the increasing number of <span class="il">FOIA</span> requests received by this office, we may encounter some delay in processing your request. Per Section 5.5(a) of the DHS<span class="il">FOIA</span> regulations, 6 C.F.R. Part 5, ICE processes <span class="il">FOIA</span> requests according to their order of receipt. Although ICE&#8217;s goal is to respond within 20 business days of receipt of your request, the <span class="il">FOIA</span> does permit a 10- day extension of this time period. As your request seeks numerous documents that will necessitate a thorough and wide-ranging search, ICE will invoke a 10-day extension for your request, as allowed by Title 5 U.S.C. § 552(a)(6)(B). If you care to narrow the scope of your request, please contact our office. We will make every effort to comply with your request in a timely manner.</p>
<p>The 30 day deadline passed, but between work and my volunteer work, it fell off my radar. Six months later, I sent an email asking for an update and got the following:</p>
<p style="padding-left: 30px;">The program office is still conducting its search for your request. Thank you for your patience.</p>
<p>Three months later, I still haven&#8217;t gotten my fucking list. Like everything else in life, climbing to the top of someone else&#8217;s TODO list requires proving to them that you will be a PITA. So I paid $20 and <a href="https://www.muckrock.com/foi/united-states-of-america-10/list-of-domain-name-seizures-16507/">filed a &#8220;new&#8221; request</a> through <a href="https://www.muckrock.com/">MuckRock.com</a>. That money buys me an email address used by professional muckraker and free advice if I run into more stonewalling.</p>
<p>Here&#8217;s hoping I don&#8217;t need to hold a fundraiser to pay a lawyer to send ICE nasty letters.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.indolering.com/ice-stonewalling-foia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">728</post-id>	</item>
		<item>
		<title>Zombie Tokens and the Usability of 2-Factor Authentication</title>
		<link>https://www.indolering.com/zombie-tokens/</link>
		<comments>https://www.indolering.com/zombie-tokens/#respond</comments>
		<pubDate>Thu, 25 Jun 2015 19:43:53 +0000</pubDate>
		<dc:creator><![CDATA[Zachary Lym]]></dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">https://www.indolering.com/?p=712</guid>
		<description><![CDATA[It turns out that ~20% of the time users spend on traditional 2-factor authentication apps is wasted on dead tokens. I call these tokens &#8220;Zombie Tokens&#8221; and I have a clever solution for them. Two-factor authentication (2FA) has become very popular because stolen tokens cannot be used to authenticate the user at a later date. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>It turns out that ~20% of the time users spend on traditional 2-factor authentication apps is wasted on dead tokens. I call these tokens &#8220;Zombie Tokens&#8221; and I have a clever solution for them.</p>
<p><span id="more-712"></span></p>
<p>Two-factor authentication (2FA) has become very popular because stolen tokens cannot be used to authenticate the user at a later date. So if the password is leaked or easily guessed, the user is still safe.</p>
<p>However, I&#8217;ve noticed a serious UX deficiency common to time-based (TOTP) 2FA client applications such as <a href="https://en.wikipedia.org/wiki/Google_Authenticator">Google Authenticator</a> and <a href="https://www.authy.com/">Authy</a>: they force users to spend a lot of time on useless tokens.  This has gone unnoticed by implementers because they do not experience the interaction in the way a typical user would.</p>
<p>Authentication servers actually accept late tokens, <a href="https://tools.ietf.org/html/rfc6238#section-5.2">typically within one &#8220;time-step&#8221;</a> ”“ which is about 30 seconds.  So the server won&#8217;t reject a token even if the user submits the token at the moment that it &#8220;expires&#8221; locally.  However, users are ignorant of the backend and the vast majority of them will assume that the token expires shortly after it disappears from their screen.</p>
<p>Users also have to type the token in before it disappears from the screen.  People of average intelligence can simply read the 6 or 7 digit code and reproduce it from memory.  However, <a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2978794/#S21title">roughly 50%</a> of the population would be unable to store the token in short-term memory, so they would have to refer back to the application to re-read the token.</p>
<p>Crafting an interface for a 2FA application should thus take into account that users will not submit a token unless there is enough time for them to type it in and submit it before the token expires locally.  Some modeling and time trials (see <em><a href="#timing">Appendix A: Timing</a></em>) suggest that it takes about 5 seconds to <em>reliably</em> type in a security token and about 10 seconds to <em>comfortably</em> type one in.</p>
<p>Since tokens are time-based, a user may get a token that has 30 seconds or 5 seconds remaining before it expires<sup id="rf1-712"><a href="https://www.indolering.com/zombie-tokens/#fn1-712" title="For some configurations, the&nbsp;Authy app displays a&nbsp;fresh token when the app opens but reduces the valid time to 20 seconds. &nbsp;This is an improvement, but the user may not be ready to type in the token when they open the app." rel="footnote">1</a></sup>.  Since it takes ~5 seconds to type in the token it would appear that users are (on average) waiting for the next token to appear ~20% of the time.</p>
<p>A few seconds might not sound like much, but <em>waiting is irritating</em>.  Think about it: ~20% of time people spend using a 2-factor authentication app is time spent being irritated.  So what can we do? Show the upcoming token! You don&#8217;t even need to label it, just use an animation to replace the expired token with the upcoming token:</p>
<div class="twocol-one">
<div id="attachment_713" style="max-width: 298px" class="wp-caption aligncenter"><img class="wp-image-713 size-full" src="https://www.indolering.com/wp-content/uploads/2015/06/authy-before.png" alt="Screenshot of Authy 2-factor" width="288" height="491" /><p class="wp-caption-text">Screenshot of <a href="https://www.authy.com/">Authy</a>, a popular 2-factor app with the standard 2-factor UI.</p></div>
</div>
<div class="twocol-one last">
<div id="attachment_714" style="max-width: 298px" class="wp-caption aligncenter"><img class="wp-image-714 size-full" src="https://www.indolering.com/wp-content/uploads/2015/06/authy-after.png" alt="Mockup of a 2-factor client with the next token being displayed before the current token." width="288" height="491" /><p class="wp-caption-text">Mockup of change with upcoming token displayed below the current token.</p></div>
</div><div class="clear"></div>
<p>I suggested this to the Authy team and I got a response that is sadly familiar to anyone doing security focused usability research:</p>
<blockquote><p>May I ask why you would need to enter in the code so quickly and frequently? We don&#8217;t share the next security code until the prior has expired for security reasons. Having both up at the same time would take away from the security that is provided by the codes.</p></blockquote>
<p>Translation: <em>you are lazy and I&#8217;m going to point to a minor security issue to justify not making this change.</em></p>
<p>Well, it&#8217;s not quite <em>that</em> ignorant, I received a similar response other programmers and security researchers.  The problem is that these are smart people who can take in token in a single glance and know that the backend servers will accept it even if the client application has &#8220;expired&#8221;.  Expert users understand that a Zombie Token will still work while regular users will assume that such tokens are simply dead.</p>
<p>I say that the security issue is minor because taking advantage of the additional token being displayed on a phone&#8217;s screen would require an attacker that can view the phone&#8217;s screen and enter in the token in real time.  An adversary with the resources to carry out a dedicated attack and view the user can typically gain physical access to the computing device.  The only scenario in which showing the additional token would matter is if the attacker can see the user through a window or was able to plant a camera in the workplace but unable to access the computer directly.</p>
<p>However, it&#8217;s fairly trivial to accommodate this threat model while still eliminating Zombie Tokens.  The fix is pretty simple: five seconds before the current token expires, display an <em>obfuscated</em> preview of the upcoming token that the user can manually swipe in:</p>
<div id="attachment_716" style="max-width: 298px" class="wp-caption aligncenter"><img class="size-full wp-image-716" src="https://www.indolering.com/wp-content/uploads/2015/06/authy-swipe.png" alt="Upcoming token peaks in on the side when 5 seconds remain." width="288" height="491" /><p class="wp-caption-text">The upcoming token peaks in on the side 5 seconds before the current token expires.  Users can manually swipe it in and replace the current token.</p></div>
<p>If the user finishes typing in the current token and closes the app before it expires, the upcoming token won&#8217;t be displayed in its entirety and the attacker won&#8217;t gain access to an unused token.  If the user would have waited for a new token <em>anyway,</em> they can skip ahead and start typing immediately.  This additional interaction ensures that the two interfaces are equivalent in terms of security (see <em><a href="#threat">Appendix B: Threat Modeling</a></em> for an in-depth explanation).</p>
<p>This fix isn&#8217;t <em>quite</em> as usable as simply displaying the next token as users have to figure out that they can swipe the new token into place.  If you are willing to relax the security requirements a bit, you could show the full upcoming token but limit its display to ten seconds before the current token expires.</p>
<p>Usability <strong>is</strong> security: the more usable a security measure is the more likely people are to use it.  Two factor authentication is a great way to beef up the security of traditional login systems.  Sadly, Zombie Tokens make the user experience irritating 20% of the time.  But we can eliminate Zombie Tokens <em>without</em> sacrificing security.  Authy may or may not take my advice, but I&#8217;ve done my part in trying to wipe out Zombie horde.</p>
<hr />
<h1 id="timing">Appendix A: Timing</h1>
<p>I arrived at the 5-10 second time through a combination of timing trials in which I entered in a 6 digit token and modeling user input using <a href="https://en.wikipedia.org/wiki/GOMS">GOMS</a>.</p>
<p>GOMS is a framework for calculating the efficiency of user interfaces: you build a model by inputting each task and the framework calculates the total time required to complete the task based on <a href="https://en.wikipedia.org/wiki/Time_and_motion_study">time and motion studies</a> of actual users.  It quite literally calculates the time required type in text, move a hand to the mouse, click a button on a screen, etc, etc.  The model I used to calculate the 5 second lower bound looks like this:</p>
<p><strong>Look</strong> <em>at phone</em><br />
<strong>Store</strong> 544438<br />
<strong>Look</strong> <em>at computer</em><br />
<strong>Hands</strong> <em>to keyboard</em><br />
<strong>Type</strong> 544438<br />
<strong>Hands</strong> <em>to mouse</em><br />
<strong>Point</strong> <em>to submit button</em><br />
<strong>Click</strong> <em>submit button</em></p>
<p>The above task is estimated to take 5.0 seconds to complete.  It is consistent with a few time trials in which I entered in a 6 digit token. However, the 5 second time felt very rushed and both the above GOMS model and the time trials made a few assumptions:</p>
<ul>
<li>The token is 6 digits long.</li>
<li>The text field for entering the token has the keyboard focus.</li>
<li>The user can store the entire token in short term memory.</li>
<li>The user does not attempt to verify the token&#8217;s correctness.</li>
</ul>
<p>Lengthening the token to seven digits and adding additional mousing and verification tasks to the GOMS model boosts the estimated completion time to 9.4 seconds.  Correcting a typo within the GOMS model resulted in a estimated time of 11.1 seconds.  When balanced with the subjective observation that typing in a 6 digit token in under 5 seconds feels rushed, the average time to <em>comfortably</em> complete the task probably lies somewhere between 5-10 seconds.</p>
<hr />
<h1 id="threat">Appendix B: Threat Modeling</h1>
<p>Matching the security parameters of the existing system entails not leaking any tokens that wouldn&#8217;t be leaked by the existing UI under an equivalent attack scenario.  We&#8217;ll start by defining the threat model and examining what tokens the existing UI would leak.</p>
<p>To take advantage of the preview token, an attacker would need to be able to view a phone&#8217;s screen and submit the token in real time.  For the sake of argument, we will assume that the surveillance is limited to a camera that has been planted in the workplace or that the target user is visible through a window.</p>
<p>An attacker with this level of access could steal the <em>current</em> token and submit it before the legitimate user is able to. I simulated this attack by switching Firefox and Chrome into incognito mode, logging into web service and reaching the 2FA input screen in both browsers, and then submitting the same 2FA token in both browsers in rapid succession ((It would be fun to see what happens when the IP addresses differ but my SOCKS proxy failed me.  However, if an attacker can plant a camera in your workplace they can probably plant a WiFi AP.  The IP address checks are often based on geo-location anyway, so the attacker would probably be okay as long as they are using an IP within the same area.)).  I performed this test with GitHub, CloudFlare and Coinbase.  GitHub allowed the login whereas CloudFlare and Coinbase simply reloaded the page.  So for many of these systems, the attacker could enter in the current token and the user wouldn&#8217;t be alerted to the fact that their token was hijacked.</p>
<p>The traditional UI would also leak unused tokens.  The user wouldn&#8217;t necessarily lock their phone&#8217;s screen right after entering in a token on their computer.  Indeed, I would suspect that <strong>most</strong> users would get distracted with the task at hand and forget about the phone sitting on their desk, broadcasting fresh security tokens to any overhead camera or onlooker.</p>
<p>If a user is presented with a token that will only last for 5-10 seconds, <em>they will probably just wait for the next token</em>.  An attacker could submit the unexpired token while the user waits for a fresh one.  They would have to be quick, but the threat model assumes an attacker performing real-time surveillance.  I&#8217;m sure someone could whip up a login script to speed up the process while the target is on lunch break.</p>
<p>To review, the current UI would allow an attacker to steal:</p>
<ol>
<li>the current token, although <em>some</em> systems <em>might</em> display a security warning;</li>
<li>any tokens that are displayed <em>after</em> the user has entered in the current token <em>unless</em> the user turns off the screen immediately after entering in the token;</li>
<li>any token that the user allows to expire while waiting for a new token.</li>
</ol>
<p>Preventing a token from leaking under #3 requires preventing the upcoming token from being displayed <em>unless we are <strong>positive</strong> that the user won&#8217;t use the current token</em>.  So if the user is still typing in the current token &lt;10 seconds before it expires, we cannot display the upcoming token.  Instead of simply displaying the upcoming token, we obfuscate it and require user interaction to display it in its entirety.</p>
<hr class="footnotes"><ol class="footnotes"><li id="fn1-712"><p>For some configurations, the Authy app displays a fresh token when the app opens but reduces the valid time to 20 seconds.  This is an improvement, but the user may not be ready to type in the token when they open the app.&nbsp;<a href="#rf1-712" class="backlink" title="Jump back to footnote 1 in the text.">&#8617;</a></p></li></ol>]]></content:encoded>
			<wfw:commentRss>https://www.indolering.com/zombie-tokens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">712</post-id>	</item>
		<item>
		<title>End-To-End Web Crypto: A Broken Security Model</title>
		<link>https://www.indolering.com/e2e-web-crypto/</link>
		<comments>https://www.indolering.com/e2e-web-crypto/#comments</comments>
		<pubDate>Mon, 06 Apr 2015 06:59:32 +0000</pubDate>
		<dc:creator><![CDATA[Zachary Lym]]></dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.indolering.com/?p=692</guid>
		<description><![CDATA[End-to-end encryption of web services is increasingly popular: Mailvelope aims to bolt a PGP client onto webmail and both Yahoo and Google are working to add support directly. However, the fundamental nature of the web and the limits of human cognition make web-based E2E encryption susceptible to MITM attacks.  While still potentially useful, such systems should not [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>End-to-end encryption of web services is increasingly popular: <a href="https://www.mailvelope.com/">Mailvelope</a> aims to bolt a PGP client onto webmail and both <a href="http://arstechnica.com/security/2014/08/yahoo-to-begin-offering-pgp-encryption-support-in-yahoo-mail-service/">Yahoo</a> and <a href="http://googleonlinesecurity.blogspot.com/2014/06/making-end-to-end-encryption-easier-to.html">Google</a> are working to add support directly. However, the fundamental nature of the web and the limits of human cognition make web-based E2E encryption susceptible to MITM attacks.  While still potentially useful, <strong>such systems should not be used by high-risk populations</strong> such as journalists and human rights workers.</p>
<p><span id="more-692"></span></p>
<p>The dynamic nature of the web gives service providers the ability to target individual users with a backdoored version of their web client <em>every time the site is loaded</em>, an attack that <a href="http://www.wired.com/2007/11/hushmail-to-war/">Hushmail validated</a> back in 2007.  Mailvelope and similar browser addons can move message decryption to iFrames or new windows and rely on the <a href="http://en.wikipedia.org/wiki/Same-origin_policy">same-origin policy</a> to restrict the reading of content from the service provider.  Unfortunately, as long as a service provider can spoof the UI, they can copy the plain text version of new messages and send an encrypted version to the recipient.</p>
<p><img class="aligncenter wp-image-693 size-full" src="//www.indolering.com/wp-content/uploads/2015/03/Gmail-Screenshot.png" alt="Screenshot of Mailvelope UI overlay in Gmail." width="899" height="539" />Mailvelope attempts to mitigate spoofing attacks through the use of security iconography, or “watermarks” as Mailvelope calls them.  Mailvelope randomly generates a security icon during installation which is incorporated into Mailvelope UI elements.  If the icon is different, users are not supposed to proceed, akin to site-authentication images used in some bank logins.  However, security icons cannot effectively mitigate a UI spoofing attack because security icons <b><i>do not work</i></b>.</p>
<p><img class="aligncenter wp-image-694 size-full" src="//www.indolering.com/wp-content/uploads/2015/03/Watermark.png" alt="Image of Mailvelope Watermark" width="742" height="341" /></p>
<p><img class="aligncenter wp-image-695 size-full" src="//www.indolering.com/wp-content/uploads/2015/03/mailvelope-decrypted.png" alt="Mailvelope watermark overlay of decrypted message." width="887" height="645" /></p>
<p>Researchers have been testing the efficacy of security iconography for over a decade, and the results are dismal.  The most dramatic “experiment” was performed by <a href="https://vimeo.com/50018478">Moxie Marlinspike in 2009</a>.  Marlinspike removed encryption from connections using a malicious Tor exit node, which also removed the browser encryption icons.  Despite drawing his sample from a population with above average technical acumen and paranoia, he achieved a 100% “success” rate; meaning that every user who visited a login page logged into to their account. Marlinspike collected over 400 logins and 16 credit card numbers in 24 hours.</p>
<p>Of course, the encryption icons for browsers are smaller and somewhat different from what Mailvelope uses.  The closest thing to Mailvelope&#8217;s “watermark” are personalized site authentication images displayed by many banks during the login process.  In <a href="http://commerce.net/wp-content/uploads/2012/04/The%20Emperors_New_Security_Indicators.pdf">The Emperor&#8217;s New Security Indicators</a>, researchers asked users to login to their bank and surreptitiously removed site authentication images, 22/25 of the participants sent their login information, a 92% failure rate.  Some will question the validity of this statistic due to the small sample size, however, the results are in-line with a decade of research and the lab setting boosts user awareness.</p>
<p>Increasing the size and prominence of the security indicator will not decrease the failure rate to acceptable levels.  <a href="https://www.medien.ifi.lmu.de/pubdb/publications/pub/maurer2011interact/maurer2011interact.pdf">One study</a> devoted the entire browser skin to conveying encryption information and saw only modest improvements to user behavior.  It shows that most users don&#8217;t understand the purpose of the information and that the software must determine if something is safe.</p>
<div id="attachment_697" style="max-width: 647px" class="wp-caption aligncenter"><img class="wp-image-697 size-full" src="//www.indolering.com/wp-content/uploads/2015/03/Screen-Shot-2015-03-23-at-5.05.50-PM.png" alt="Screenshot of browser skins with SSL information." width="637" height="348" /><p class="wp-caption-text">Screenshots of the browser skins used in one research study. A was displayed for an EV SSL certificate, B for traditional SSL certificates, and C for unencrypted connections.</p></div>
<p>The fundamental issue is that human cognition has limits: we cannot process unlimited amounts of information.  The assumptions made by the security model underpinning security iconography ignores a decade of behavioral studies and runs counter to 50 years of cognitive psychological research.  Just try to <strong>accurately</strong> count the number of times a player passes a basketball in the following video:</p>
<p><iframe src="https://www.youtube.com/embed/Ng4heqMAbCA?rel=0" width="530" height="298" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>The 50% failure rate for the above video is artificially high, as the laboratory environment heightens user awareness.  The task is also very different from that of checking a security icon.  The tricks employed by pickpockets are a better real-world analogy for spoofing a security icon.  Watch as Apollo Robbins carefully manages the mark&#8217;s &#8220;cognitive spotlight&#8221; using misdirection to control the information that the mark is consciously aware of:</p>
<p><iframe src="https://www.youtube.com/embed/XUO7_NiHNVE?rel=0" width="530" height="298" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>At 3:10 you can see how Robin applies pressure to the wrist near the watch clasp and then draws the mark&#8217;s attention elsewhere.  The initial stimulus is registered, deemed non-relevant, and then Apollo uses misdirection to remove the stimulus from the cognitive spotlight.  The stimulus is still present, but the nervous system and the brain must filter the signal down to <em>relevant</em> stimulus.</p>
<p>A user composing messages is in an even more precarious situation, as habituation conditions us to <em>preemptively</em> ignore information.  Unless something is integral to the task itself, we will filter it from your cognition.  Even if the user is asked to confirm that the icon is valid, they will habituate the task and complete it automatically<sup id="rf1-692"><a href="https://www.indolering.com/e2e-web-crypto/#fn1-692" title="Browser add-ons cannot switch to blocking the user&rsquo;s task flow, as they are dependent upon the service provider delivering accurate hooks into their interface.&nbsp; For example, no one would notice a silent forward from mail.google.com to www.mail.google.com." rel="footnote">1</a></sup>.  While a pickpocket must create new stimulus to control the cognitive spotlight, habituation will suppress the stimulus from even reaching the cognitive spotlight.</p>
<p>I don&#8217;t want to get too deep into the neurological details, but the inevitability of filtering stimulus that is irrelevant to the task workflow is fairly obvious if you think about the amount of information your body processes: temperature and pressure from your skin, taste and smell from your nose and tongue, your complete field of vision, and all of the sounds present in your local environment. There are even filters for information that has been processed abstractly, which is why you can pick up on someone saying your name at a cocktail party but ignore ambient conversations after you start talking with your friend. Without these filters, we would be overwhelmed with irrelevant information.</p>
<p>The inability to effectively mitigate user interface spoofing attacks cripples the usability of these bolted-on E2E interfaces. They must lift the new message and reply UI elements out of the browser chrome. They must also create a distinct contact manager to handle public keys. The only thing left is detecting encrypted messages, which Mailvelope decrypts and displays in an iFrame. I&#8217;m not sure that even this is safe, since the service provider could display a &#8220;Reply Securely&#8221; button over the decrypted message.</p>
<p>A website is a very hostile environment to be operating in. The URL bar is a remote function call interface which retrieves a Turing complete programming environment in the form of a website.  The service provider can target individual users, deliver new exploits at any time, and has total control over the messaging system.  I&#8217;m just not sure that we should be relying on the same-origin security policy of browsers to protect our encrypted communications.</p>
<p>On the web, the best we can do is ensure a secure connection and valid DNS information; trust in the service provider should be assumed.  With traditional software systems, we can use reproducible build systems to distribute trust and security audits to increase the cost of backdooring software. But without a clear separation between the messaging system and the software used to retrieve messages, we cannot build <strong>usable</strong> messaging systems that deploy end-to-end encryption.  Any user interface that is secure against UI spoofing will only be a step above manually copying and pasting in the ciphertext.</p>
<p>Mailvelope and service provider based end-to-end encryption is still potentially useful. They raise the cost of an attack and force service providers to participate in serving backdoored versions of their sites and may add additional legal hurdles.  It *may* be possible to bolt a usable PGP client onto website in a that can defend against malicious service providers.</p>
<p>But one of the many lessons Snowden has taught us is that the only thing worse than bad security is the illusion of good security. Such solutions should not be used by high-risk groups until they can prove that they can reliably defend against malicious service providers.  Until then, vendors of such software have a moral duty to try and prevent users from high risk groups from using their software.</p>
<p>Update: Some comments on my blog assert that the security situation is very similar to what can be performed through basic software updates.  I&#8217;m aware of this, an I have a few thoughts.</p>
<p>First of all, journalists and human rights workers really should be using TAILS, which is at least publicly auditable and in a position to refuse to comply with US court orders.  Furthermore, I believe that we should treat development of software for these users <em>as if lives are on the line</em>.  In that regard, it is at least possible to make attacks against the operating system and applications more expensive, which isn&#8217;t true of the attacks against E2E web crypto.</p>
<p>For example, we can create an operating system that uses reproducible builds for everything.  We can also define a software subset that is required for journalists or human rights workers (an email client, a chat client, a basic document editor, and a web browser) and use security audits, sandboxing, and (eventually) formal verification to drastically increase the cost of an attack.</p>
<p>I&#8217;m also concerned about projects like <a href="http://www.indolering.com/okturtles-dnschain-unblock-us">okTurtles</a>, which want to make it easy to build a Mailvelope-like E2E client for any software platform, such Facebook and Twitter.  okTurtles claims to be &#8220;MITM-proof&#8221; and mentions journalists and human rights workers in its marketing.  I&#8217;m afraid that someone will take them at their word build an okTurtles front end for vKontakt or Weibo.  I hate the NSA and the US has a shitty human right record, but this would make it easy for Russia and China to precisely target users.</p>
<hr class="footnotes"><ol class="footnotes"><li id="fn1-692"><p>Browser add-ons cannot switch to blocking the user&#8217;s task flow, as they are dependent upon the service provider delivering accurate hooks into their interface.  For example, no one would notice a silent forward from mail.google.com to www.mail.google.com.&nbsp;<a href="#rf1-692" class="backlink" title="Jump back to footnote 1 in the text.">&#8617;</a></p></li></ol>]]></content:encoded>
			<wfw:commentRss>https://www.indolering.com/e2e-web-crypto/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">692</post-id>	</item>
		<item>
		<title>Debunking okTurtles, DNSChain, &#038; Unblock.us</title>
		<link>https://www.indolering.com/okturtles-dnschain-unblock-us/</link>
		<comments>https://www.indolering.com/okturtles-dnschain-unblock-us/#comments</comments>
		<pubDate>Mon, 06 Apr 2015 05:23:05 +0000</pubDate>
		<dc:creator><![CDATA[Zachary Lym]]></dc:creator>
				<category><![CDATA[Activism]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.indolering.com/?p=699</guid>
		<description><![CDATA[okTurtles, DNSChain, and Unblock.us.org form a software stack that is being sold as a panacea to online surveillance and DNS censorship.  This hyperbolic marketing is disingenuous if not dangerous.  I would like to outline exactly what each piece of software does and how the stack relates to the field as a whole. Introduction okTurtles and DNSChain [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>okTurtles, DNSChain, and Unblock.us.org form a software stack that is being sold as a panacea to online surveillance and DNS censorship.  This hyperbolic marketing is disingenuous if not dangerous.  I would like to outline exactly what each piece of software does and how the stack relates to the field as a whole.</p>
<p><span id="more-699"></span></p>
<h1>Introduction</h1>
<p>okTurtles and DNSChain make fantastic claims about some very vanilla software, such as being impervious to MITM attacks, fixing HTTPS, and that their third party trust system “is at least as good as lightweight [clients].”  They believe that a transparent HTTPS proxy, Unlock.us, is immune to DPI and thus “short of cutting entire countries off the internet, DNSChain/Unblock.us will be able to get through.”</p>
<p><img class="aligncenter size-full wp-image-700" src="https://www.indolering.com/wp-content/uploads/2015/04/Screen-Shot-2015-04-05-at-9.07.50-PM.png" alt="Screen Shot 2015-04-05 at 9.07.50 PM" width="923" height="259" /></p>
<p>Blockchain technology has the potential to make a significant impact on the usability of encryption and anonymity networks.  Unfortunately, okTurtles and DNSChain consistently misapplies this technology.  okTurtles is a end-to-end encryption client that is vulnerable to MITM attacks and advertises an impossibly good user experience.  DNSChain doesn&#8217;t fix HTTPS generally and they are pushing a 3rd party trust system that needlessly breaks the key MITM protection offered by blockchains.  Unblock.us isn&#8217;t immune to traffic analysis and isn&#8217;t safe for use in countries that block commercial VPNs and proxies.</p>
<p>I&#8217;m writing this because <strong>misleading users about security and anonymity software can have dangerous consequences.  </strong>Tor&#8217;s lead developer once <a href="https://youtu.be/GwMr8Xl7JMQ?t=33m8s">relayed an anecdote</a> about an Iranian Tor user who taught fellow political dissidents how to use censorship circumvention software.  At some point, the user realized that the people whom he had trained to use Tor were still around and everyone using something else was in prison.  This is the reality for security-related software projects and their marketing claims should be held to a very high standard.<strong><br />
</strong></p>
<h1>okTurtles</h1>
<h2>Marketing Hype</h2>
<ul>
<li>“MITM-proof communication through almost any website, with zero intervention needed from the site operators.”</li>
<li>“&#8230; it will stop all of the publicly known methods by which the NSA can read your messages on these sites via a MITM attack.<sup id="rf1-699"><a href="https://www.indolering.com/okturtles-dnschain-unblock-us/#fn1-699" title="The original version of this article outlined an attack in which the service provider performed a MITM attack against the initial identity handshake.&nbsp; This can be fixed with out-of-band communication, but they failed to mention this and their documentation contains an image of a Twitter profile with link to a blockchain identity.&nbsp; I removed this attack as the UI spoofing attack is more severe and easier to explain.&nbsp; However, they do not prevent against all known MITM attacks and their &ldquo;MITM-proof&rdquo; marketing could dupe a user into thinking they don&rsquo;t need to defend against this MITM attack." rel="footnote">1</a></sup>”</li>
<li>“&#8230; true end-to-end encryption and authentication between you and the person you&#8217;re communicating with that does not fall prey to … interception, redirection, and/or tampering-with of the communication in question.”</li>
<li>“… making this surveillance simply irrelevant.”</li>
</ul>
<h2>The Reality</h2>
<ul>
<li>okTurtles is an end-to-end (E2E) encryption client for online platforms, such as Facebook and Twitter.</li>
<li>It is inherently vulnerable to MITM attacks by service providers.</li>
<li>It cannot effectively mitigate UI spoofing attacks without crippling usability.</li>
</ul>
<p>okTurtles advertises an impossibly good user experience that is not &#8220;MITM-proof.&#8221;  Trying to bolt an E2E client onto a website opens okTurtles up to a range of attacks that are not true of other messaging systems: UI spoofing.  A service provider can spoof okTurtles interface, tricking the user to enter text into a text field they can read, save a copy of the plaintext, and forward an encrypted version to the recipient.  With closed loop systems like Facebook, they can detect if both sides use okTurtles and spoof message decryption and verification on both ends.</p>
<p>Websites are Turing complete programs and logging into a web platform allows the service provider to serve a <a href="https://www.wired.com/2007/11/hushmail-to-war/">malicous version of their web client</a>.  The service provider can spoof the okTurtles interface, the identity of the user, contextual menus, and even manipulate copy and paste commands.  <a href="https://www.indolering.com/e2e-web-crypto">The only way to mitigate these attacks</a> is to move the contact list, the text entry field, the new message button, and the reply button outside of the website.  This negates nearly <b>all</b> of the usability benefits promised by okTurtles.</p>
<div id="attachment_704" style="max-width: 1234px" class="wp-caption aligncenter"><img class="size-full wp-image-704" src="https://www.indolering.com/wp-content/uploads/2015/04/message-mockup.png" alt="Virtually every component could be spoofed by the service provider. This mockup makes it appear as if okTurtles is fetching cryptographic identities automatically based on what the service provider supplies.  They could show one thing to the user while exposing something else to the software." width="1224" height="432" /><p class="wp-caption-text">Every UI component could be spoofed by the service provider.  They can save a plaintext copy of the input and send an encrypted version to the intended recipient. This mockup also makes it appear as if okTurtles is fetching cryptographic identities automatically. A service provider could show one identity to the user while exposing an identity they control to okTurtles.</p></div>
<p>Messaging software itself can be backdoored, but we can at least turn to deterministic compilation and security audits to increase the cost of such an attack (and few claim to be &#8220;MITM-proof&#8221;). Not only is this not possible on web platforms, it&#8217;s trivial for service providers to precisely target victims, detect if the user has okTurtles installed, and deliver a new payload <em>every time a user logs in</em>.  Unlike email, Facebook and other service providers have <strong>total</strong> control of the messaging system.  I&#8217;m also wary of relying on the browser&#8217;s same-origin-security policy to protect our private communications and encryption keys.  The browser is a very hostile environment to try and build secure software in and trust in the service provider should be assumed.</p>
<p>Browser-based E2E encryption is still <em>potentially</em> useful.  It raises the cost of an attack, it forces service providers to actively participate in serving backdoored versions of their sites, and it may add additional legal hurdles.  Using blockchains to specify identities is more usable than selecting public keys and is resistant to a specific type of MITM attack.  If okTurtles only claimed to provide protection against dragnet surveillance or modest improvements to usability, I would have no issue with the software.   But okTurtles advertises it for use by human rights workers and journalists and claims that “&#8230; it will stop all of the publicly known methods by which the NSA can read your messages on these sites via a MITM attack.”</p>
<p>Furthermore, okTurtles wants to make it easy for others to write plugins to support other web platforms.  Journalists and human rights workers might be comfortable trusting TAILS and Thunderbird developers to resist governmental pressure to deliver an update with a backdoor.  You might even be willing to trust Google or Facebook not spoof the UI, but I fear that someone will take their &#8220;MITM-proof&#8221; claims seriously and port the software for use on Weibo or vKontakte.</p>
<p><b>If okTurtles sold itself as a more usable E2E client, as Mailvelope does, I would not have a problem with the software.</b>  But okTurtles is advertising an impossibly good user experience that is trivially vulnerable to UI spoofing.  A browser add-on <i>could</i> be built that is resistant to UI spoofing, but it cannot integrate with the web client&#8217;s interface directly.  The result will probably be a few notches above copying and pasting the ciphertext manually and it certainly won&#8217;t be as usable as dedicated messaging software.  okTurtles might be a step forward, but it will not &#8220;make surveillance simply irrelevant&#8221; and their UI mockups and security claims are dishonest.</p>
<h1>DNSChain</h1>
<h2>Marketing Hype</h2>
<ul>
<li>“HTTPS is broken. DNSChain fixes it.”</li>
<li>“MITM-proof&#8217;ed Internet connections.”</li>
<li>&#8220;DNSChain now has a 3-pronged security model that is at least as good as [lightweight clients]<sup id="rf2-699"><a href="https://www.indolering.com/okturtles-dnschain-unblock-us/#fn2-699" title="The exact quote used the phrase&nbsp;&ldquo;thin clients&rdquo; but it doesn&rsquo;t make sense in the context of the conversation and Selpak helpfully clarified in a followup conversation on IRC that &ldquo;thin clients is used as a synonym for light clients.&rdquo;" rel="footnote">2</a></sup>&#8221;</li>
</ul>
<h2>The Reality</h2>
<ul>
<li>DNSChain is middleware, primarily a DNS server and a REST API that retrieves information from a blockchain.</li>
<li>DNSChain does nothing to fix HTTPS for 99.99%+ of domains.</li>
<li>They are pushing 3rd party trust solution that breaks the MITM protections provided by blockchains.</li>
<li>Their security is inferior to lightweight clients.</li>
</ul>
<p>DNSChain&#8217;s derives its security benefits from Namecoin and similar cryptocurrencies.  Cryptocurrencies can prevent MITM attacks against faulty DNS and TLS information <i>for </i><b><i>specific</i></b><i> top-level domains</i>.  DNSChain does nothing to protect 99% of top level domains (such as .com or .net) and it does <b>not</b> fix HTTPS generally.</p>
<p>Indeed, DNSChain doesn&#8217;t have much to do with the protections it derives from using blockchains, such as Namecoin.  The following feature matrix is copied from DNSChain&#8217;s Github repo, but it specifies which component provides the claimed feature.</p>
<table>
<tbody>
<tr>
<td>Feature</td>
<td>Provided by Component</td>
</tr>
<tr>
<td>MITM-proof&#8217;ed Internet connections (for specific blockchain TLDs)</td>
<td>Blockchain</td>
</tr>
<tr>
<td>GPG key distribution</td>
<td>Blockchain</td>
</tr>
<tr>
<td>RESTful API to blockchain</td>
<td>DNSChain</td>
</tr>
<tr>
<td>Free and actually-secure SSL certificates</td>
<td>Blockchain</td>
</tr>
<tr>
<td>Stops many denial-of-service attacks</td>
<td>Not really/Blockchain<sup id="rf3-699"><a href="https://www.indolering.com/okturtles-dnschain-unblock-us/#fn3-699" title="Their claim is that since their distribution model (&ldquo;one DNSChain server per group of friends&rdquo;) is a &ldquo;flat&rdquo; topology, there is no DNS server to DDoS. This almost&nbsp;makes sense&nbsp;if you believe that every friend group has someone willing and qualified to run a DNSChain server securely, which is about as realistic as every friend group having a friend who runs an email server for them. However, the current ISP based DNS system is&nbsp;very similar and we don&rsquo;t&nbsp;see DDoS attacks against local DNS resolvers; root zone servers and nameservers are the only viable targets. &nbsp;Blockchains are the equivalent of the root zone server and can store DNS information within the blockchain, removing the need for a nameserver. &nbsp;However a DDoS attack against a cryptocurrency would also break DNSChain." rel="footnote">3</a></sup></td>
</tr>
<tr>
<td>Certificate revocation that actually works</td>
<td>Not really/Blockchain<sup id="rf4-699"><a href="https://www.indolering.com/okturtles-dnschain-unblock-us/#fn4-699" title="DNSChain claims that &ldquo;The wonderful thing about blockchains is that they have no conception of revocation because they do not need one. Instead, the most recent value for any particular key in a blockchain is the most accurate and up-to-date value.&rdquo; This is based on a misunderstanding of how revocation and blockchains work. While it is possible to revoke a TLS certificate with a blockchain key, it is not possible to revoke the blockchain key. This has been pointed out to us as a security drawback by two high-profile security experts. While we intend to improve in this area (and have plans for doing so), it is incorrect to imply that the revocation problem is solved." rel="footnote">4</a></sup></td>
</tr>
<tr>
<td>DNS-based censorship circumvention</td>
<td>Unblock.us</td>
</tr>
<tr>
<td>Prevents domain theft (&#8220;seizures&#8221;)</td>
<td>Blockchain</td>
</tr>
<tr>
<td>Access to Blockchain TLDs</td>
<td>Blockchain</td>
</tr>
</tbody>
</table>
<p>DNSChain was initially a pure client/server model which they advertised as “MITM-proof.”  After receiving pushback on this, they added two features: checking multiple DNSChain servers and public key pinning (&#8220;Proof-of-Transition&#8221;).  But this is nothing new: checking multiple peers and storing cryptographic information from the first connection are as old a cryptography itself.  Moxie Marlinspike was a pioneer in building systems similar to what DNSChain is proposing for HTTPS, such as<a href="https://convergence.io"> Convergence</a> and <a href="https://tack.io/index.html">Tack</a>.  However, neither of Marlinspike&#8217;s projects claim to be “MITM-proof” and DNSChain breaks MITM protections offered by blockchain technology.</p>
<p>Slepak (DNSchain&#8217;s lead developer) claims that DNSChain&#8217;s client/server model is “at least as good as” lightweight resolvers.  This is <a href="https://blog.namecoin.org/post/109811339625/lightweight-resolvers" target="_top">simply not true</a> and demonstrates a basic ignorance of lightweight technology, which can preserve the full MITM protections offered by the Nakamoto blockchain<sup id="rf5-699"><a href="https://www.indolering.com/okturtles-dnschain-unblock-us/#fn5-699" title="In a response to this post, Slepak rightfully pointed out that lightweight resolvers described in the linked article are not equivalent to the full node installations, which was an oversight.&nbsp; There are lightweight resolvers (FN-UTXO) that offer protection just shy of a full node installation and experimental implementations required around&nbsp;a couple hundred megabytes.&nbsp; Since we are only interested in current domains, the installation size of a FN-UTXO is fairly stable, it would grow in proportion the popularity of the TLD (which can scale to the size of .info or .biz relatively easily).&nbsp; But in the original version of this post I started talking about FN-UTXO&nbsp;resolver and then immediately switched to talking about a UNO lightweight resolver, which was confusing. But, as explained in the updated version, the UNO lightweight resolver is still more secure than DNSChain&rsquo;s security model.
Furthermore, Slepak&rsquo;s response proves that he doesn&rsquo;t understand Namecoin&rsquo;s lightweight resolvers. He quoted from an O&rsquo;Reilly book on Bitcoin SPV clients, stating that they had to query multiple servers, akin to DNSChain.&nbsp; As explained in the article I linked to originally, Namecoin&rsquo;s primary lightweight resolvers (UNO resolvers) do not need to contact multiple servers.&nbsp; Compared to Bitcoin SPV clients, UNO resolvers do not require as much storage and offer much better security." rel="footnote">5</a></sup>.</p>
<p><strong>Update</strong> DNSChain&#8217;s lead author followed up with a claim that, &#8220;If I run DNSChain at home or on my server, it&#8217;s equivalent to the security a full node would provide me with, and that&#8217;s superior to lightweight clients.&#8221;<sup id="rf6-699"><a href="https://www.indolering.com/okturtles-dnschain-unblock-us/#fn6-699" title="The security model he was referring to in the original &ldquo;at least as good as&rdquo; quote does not specify&nbsp;running your own server, it only suggested that one, &ldquo;Use a DNSChain server that you have reason to trust&hellip;&rdquo;." rel="footnote">6</a></sup></p>
<p><strong>This &#8220;user running a server&#8221; configuration is a fictitious use case. </strong> As I explained in my first <a href="https://indolering.com/dnschain-is-harmful">DNSChain blog post</a>, this is equivalent to claiming everyone will run their own email server. Thus, <strong>for 99% of users, DNSChain is a third party trust solution.</strong>  Slepak <a href="https://www.indolering.com/dnschain-is-harmful#comment-5574">basically agreed</a> with this analysis but claimed that everyone would buy a PlugPC that would function as their server.  <a href="https://www.indolering.com/dnschain-routers">In my second DNSChain blogpost</a> I explained why this would never scale and how it locks us into trusting the PlugPC manufacturer.</p>
<p><a href="https://blog.namecoin.org/post/109811339625/lightweight-resolvers">The primary Namecoin lightweight resolver</a> (which I will call a UNO resolver) has storage requirements that are less than that of a Bitcoin SPV client while offering security more akin to a Bitcoin UTXO client.  Name-only resolvers do not need to worry about double spends, so <strong>they only need to store a few dozen megabytes of block headers.</strong> Because name-only resolvers only need to store headers for current names, their storage requirements do not increase over time.  Furthermore, special data structures can be used to validate responses from full nodes, so <strong>there is no need to contact multiple servers</strong>.</p>
<p><strong>An attacker with 50% of the network hashing power</strong> could trick a UNO resolver into accepting an old (but still valid) DNS record <strong>for 2 hours</strong> every few weeks.  I don&#8217;t know how much it costs to attack a DNSChain server, but it is certainly less than a 51% attack.  And for the 1% of users that can administer their own Namecoin full node, their UNO resolver could be configured to connect to their full node client.  No matter how you slice it, <strong>DNSChain&#8217;s third party trust system isn&#8217;t as secure as a UNO resolver</strong>.</p>
<p>Slepak is pushing this system because he believes that is more practical alternative to lightweight resolvers.  If you are willing to accept third party trust, <a href="https://www.indolering.com/dnschain-vs-real-interop">threshold DNSSEC</a> makes a similar compromise for blockchain based TLDs but offers a sane path to backwards compatibility.  However, lightweight resolvers are more usable than a DNSChain client because they do not require any configuration.  In terms of storage requirements and network performance, the differences between the two solutions are negligible <em>even on mobile devices</em>.</p>
<p>Slepak asserts that lightweight resolvers won&#8217;t work on iOS devices because iOS devices cannot share data between apps.  Downloading headers only amounts to about <a href="https://forum.namecoin.info/viewtopic.php?f=5&amp;t=2239&amp;start=10">220 KiB per day</a> and they can be fetched preemptively or even pushed to the device.  Even if the lightweight resolver has to fetch some headers, it doesn&#8217;t have to query multiple servers, like a DNSChain client would.</p>
<p>When it comes to storage requirements, even the prospect of supporting multiple blockchains isn&#8217;t a big deal.  I can imagine a future where there are 5 relevant blockchain identity providers and <em>maybe</em> 3 blockchain based TLDs worth supporting.  Over the past 7 years, the minimum <a href="https://en.wikipedia.org/wiki/IPhone#Hardware">iOS  storage capacity</a> has quadrupled from 4GB to 16GB.  Assuming linear increases in storage capacity over another 7 years, an app supporting name resolution for 5 different blockchains will take up &lt;1% of an iOS device&#8217;s storage capacity.</p>
<p>Slepak also tries to make hay of the fact that lightweight resolvers are still a ways off from being complete, but so is DNSChain.  For Namecoin and Bitcoin, the necessary core changes are probably less than a year away.  Shoring up DNSChain&#8217;s third party trust system and building out all of the infrastructure needed to support it leeches funding and developers from solutions that offer something better than the status quo.  After all, if a blockchain identity solution cannot offer something better than third party trust, why would it succeed where Microsoft, Google, and other commercial entities have failed?</p>
<p><b>If DNSChain simply sold itself as middleware with a trusted server option that can support multiple blockchains, I wouldn&#8217;t have a problem with it.  </b>But DNSChain keeps <a href="https://blog.okturtles.com/2015/03/certificate-transparency-on-blockchains/">pushing a security model</a> that breaks the MITM protections offered by the Nakamoto blockchain and unnecessarily ties itself to third party trust. Lightweight resolvers are more secure and practical <em>even on mobile devices</em>.  Finally, the DNSChain team has a track record for making deceptive claims, such as &#8220;fixing HTTPS&#8221; when they impact less than 1% of domains or being &#8220;MITM-proof&#8221; despite being a third party trust solution for 99% of users.<strong><br />
</strong></p>
<h1>Unblock.us</h1>
<h2>Marketing Hype</h2>
<ul>
<li>“DNSChain&#8217;s censorship circumvention is in many ways superior to Tor&#8217;s!”</li>
<li>&#8220;&#8230;[Unblock.us is] indistinguishable from TLS and immune to DPI.&#8221;</li>
<li>“Short of cutting entire countries off the internet, DNSChain/Unblock.us will be able to get through.”</li>
</ul>
<h2>The Reality</h2>
<ul>
<li>Unblock.us is a HTTP proxy that is only used if a website is blocked.</li>
<li>A censor can detect and block Unblock.us proxies without shutting off the entire internet.</li>
<li>Circumventing censorship is trivial, scaling censorship circumvention is <i>really</i> hard.</li>
<li>Unblock.us does not materially advance circumvention technology.</li>
</ul>
<p>The official Unblock.us project is actually fairly responsible in the claims that they make; the above quotes are pulled from DNSChain&#8217;s Github repository and comments made by DNSChain&#8217;s lead developer.  However, statements about it being “superior to Tor” and being immune to DPI aren&#8217;t just misleading, they are dangerous.</p>
<p>It is trivial to detect and block Unblock.us. Their routing (unencrypted SNI headers) currently leaves the domain name visible, but they have proposed <a href="https://unblock.us.org/?p=61">a fix</a> which obfuscates the domain name.  The technical description of the fix makes it sounds as if the obfuscated domain could be detected using pattern matching. Even if we assume that they code specific unblocked domains to stand in for blocked domains (thus avoiding pattern matching) the unblocked domain name wouldn&#8217;t normally resolve to the proxy.  Even if they make a system in which the censor cannot be absolutely sure that it is a proxy, they can simply throttle the connection and make it unusable.  We could play a few more rounds of this cat-and-mouse game, but the point is that Unblock.us is not immune to traffic analysis.</p>
<p>Slepak claims that using HTTPS makes Unblock.us indistinguishable from other traffic.  However, Tor <em>also</em> tries to hide its traffic as vanilla HTTPS, but they do not claim that their protocol is indistinguishable from HTTPS traffic. This is what <a href="https://www.youtube.com/watch?v=GwMr8Xl7JMQ&amp;feature=youtu.be&amp;t=51m">Jacob Appelbaum</a> has to say about such claims,</p>
<p style="padding-left: 30px;">One really important point here is that we are <b>extremely</b> clear about the fact that Tor is not a stenographic transport&#8230;.  We don&#8217;t make that claim because people who make that claim are full of shit.</p>
<p>There are hundreds of researchers working on circumvention technologies.  Searching for “Tor” on Google scholar pulls up over 3,000 research papers. This is also a major industry: one major VPN service provider <a href="https://arstechnica.com/tech-policy/2013/10/how-one-small-american-vpn-company-is-trying-to-stand-up-for-privacy/">has 4 million in annual revenue</a> and the DoD would <b>love</b> to have a stenographic transport for their military and covert operations.  In the twelve months that the project has been around, they haven&#8217;t managed to even perform a literature review, let alone invent a revolutionary new technology.</p>
<p>One of their selling points is that unlike commercial solutions, Unblock.us is designed as a friend-to-friend system and censors cannot just built a list of IP addresses.  But blocking of commercial VPNs and proxies tends to occur during political turmoil or in countries where there are no commercial interests that require access to a VPN.  It probably isn&#8217;t safe to be using a proxy in such an environment anyway, but using <strong>Unblock.us is especially dangerous because (unlike Tor and commercial options) it doesn&#8217;t mix traffic from a large number of users and thus doesn&#8217;t provide <em>any</em> plausible deniability.</strong></p>
<p>Even where it is safe to use, Unblock.us won&#8217;t impact passive DNS censorship because it will not scale.  The deployment plan is identical to that of DNSChain; how many people do you know that are qualified to securely run a proxy server and willing to do it for free?  You can find an unmetered VPN for less than $5/month, which is cheaper than a VPS.  If someone can afford internet access, they can afford a VPN … which is easier and cheaper than paying someone to run a proxy server for you.</p>
<p><b>Unblock.us is an okay solution if you have the technical skills to operate such a proxy.</b>  However, they haven&#8217;t discovered anything revolutionary, Unblock.us&#8217;s <strong>only</strong> advantage is its relative obscurity.  <strong>Since Unblock.us doesn&#8217;t provide plausible deniability, it isn&#8217;t safe for use in countries that actively block commercial proxies and VPNs</strong>.  Their only realistic use case is restricted to users who have a friend <i>that is already paying for a VPS</i> and has the time to administer a server for free.</p>
<h1>Conclusion</h1>
<p>I didn&#8217;t want to write this blogpost, even thinking about it makes me queasy.  I was sincerely hoping that Slepak would read my analysis and back-off from his claims so that I could delete the post.  A few weeks ago, I even offered to write Slepak a letter of recommendation to the Shuttleworth Foundation if he would fix his marketing.  After all, they funded Moxie Marlinspike to develop third party trust systems and E2E libraries. <span class="st">WhatsApp</span> has adopted Marlinspike&#8217;s Signal library to provide E2E encryption for their users, but they could subvert it in a fashion similar to how websites can subvert okTurtles.</p>
<p>But from &#8220;MITM-proof&#8221; only applying to 1% of DNSChain users  to &#8220;fixing HTTPS&#8221; for 1% of domains to claiming that Unblock.us traffic is immune from DPI &#8230; they do not care that<strong> the </strong><b>plain reading of their marketing doesn&#8217;t reflect the reality of their</b> <strong>software</strong>.  As <a href="https://youtu.be/GwMr8Xl7JMQ?t=50m">Jacob Appelbaum said</a> of Ultrasurf&#8217;s claim that it was indistinguishable from normal web traffic,</p>
<p style="padding-left: 30px;">… <strong>it is super dangerous to make that claim</strong> and we would prefer to be very conservative so that when people use the system we know what they think they&#8217;re getting, honestly and truly.  That is absolutely the <b>only way</b> we think we will be able to ethically do this kind of thing. <strong>So it&#8217;s really important if you build or work on these systems to understand that it is way better to over deliver and under promise</strong>.  Because <strong>when you make a mistake or when something goes wrong, real people&#8217;s lives are really on on the line and we don&#8217;t want to mislead them</strong>.</p>
<p>There are other projects that are more responsible with their claims and also more advanced, such as Mailvelope, NMControl, and Tor.  Instead of engaging with these communities, DNSChain and company are busy reinventing the wheel, poorly.</p>
<p><b>The Namecoin team would welcome code contributions to NMControl for a more advanced third-party trust system.</b>  It just happens to be a lower priority for us, as lightweight resolvers are generally a better solution.  <b>We want to support multiple blockchains, NMControl&#8217;s backend is pluggable and we are planning on changing NMControl&#8217;s name to be more generic</b>.  We would also love to see a NMControl plugin for the OpenName standard.  As long as the security parameters are accurately conveyed, we would happily support these use cases.</p>
<p>Myself and others have spent a considerable amount of time trying to engage with Slepak. But I have a real job and we should be focusing on Namecoin core, NMControl, and related development efforts; as such, I do not intend to spend additional effort addressing the current marketing and technical issues surrounding okTurtles, DNSChain, or Unblock.us.</p>
<p>If you want to contribute to advanced censorship-resistant technology, check out Namecoin core, NMControl, and other projects listed on the <a href="https://github.com/namecoin/">Namecoin GitHub repo</a>.</p>
<hr class="footnotes"><ol class="footnotes"><li id="fn1-699"><p>The original version of this article outlined an attack in which the service provider performed a MITM attack against the initial identity handshake.  This can be fixed with out-of-band communication, but they failed to mention this and their documentation contains an <a href="https://www.indolering.com/wp-content/uploads/2015/04/twitter.jpeg">image of a Twitter profile</a> with link to a blockchain identity.  I removed this attack as the UI spoofing attack is more severe and easier to explain.  However, they do not prevent against all known MITM attacks and their &#8220;MITM-proof&#8221; marketing could dupe a user into thinking they don&#8217;t need to defend against this MITM attack.&nbsp;<a href="#rf1-699" class="backlink" title="Jump back to footnote 1 in the text.">&#8617;</a></p></li><li id="fn2-699"><p>The exact quote used the phrase &#8220;thin clients&#8221; but it doesn&#8217;t make sense <a href="https://www.indolering.com/dnschain-still-harmful#comment-7812">in the context of the conversation</a> and Selpak helpfully clarified in a followup conversation on IRC that &#8220;thin clients is used as a synonym for light clients.&#8221;&nbsp;<a href="#rf2-699" class="backlink" title="Jump back to footnote 2 in the text.">&#8617;</a></p></li><li id="fn3-699"><p>Their claim is that since their distribution model (“one DNSChain server per group of friends”) is a “flat” topology, there is no DNS server to DDoS. This almost makes sense if you believe that every friend group has someone willing and qualified to run a DNSChain server securely, which is about as realistic as every friend group having a friend who runs an email server for them. However, the current ISP based DNS system is very similar and we don&#8217;t see DDoS attacks against local DNS resolvers; root zone servers and nameservers are the only viable targets.  Blockchains are the equivalent of the root zone server and can store DNS information within the blockchain, removing the need for a nameserver.  However a DDoS attack against a cryptocurrency would also break DNSChain.&nbsp;<a href="#rf3-699" class="backlink" title="Jump back to footnote 3 in the text.">&#8617;</a></p></li><li id="fn4-699"><p>DNSChain claims that &#8220;The wonderful thing about blockchains is that they have no conception of revocation because they do not need one. Instead, the most recent value for any particular key in a blockchain is the most accurate and up-to-date value.&#8221; This is based on a misunderstanding of how revocation and blockchains work. While it is possible to revoke a TLS certificate with a blockchain key, it is not possible to revoke the blockchain key. This has been pointed out to us as a security drawback by two high-profile security experts. While we intend to improve in this area (and have plans for doing so), it is incorrect to imply that the revocation problem is solved.&nbsp;<a href="#rf4-699" class="backlink" title="Jump back to footnote 4 in the text.">&#8617;</a></p></li><li id="fn5-699"><p>In a response to this post, Slepak rightfully pointed out that lightweight resolvers described in the linked article are not equivalent to the full node installations, which was an oversight.  There <a href="https://github.com/hlandau/ncdocs/blob/7c745b5b667e6ed6d524b51cf97e9d67c5c69b3e/stateofnamecoin.md">are lightweight resolvers</a> (FN-UTXO) that offer protection <em>just</em> shy of a full node installation and experimental implementations required around a couple hundred megabytes.  Since we are only interested in current domains, the installation size of a FN-UTXO is fairly stable, it would grow in proportion the popularity of the TLD (which can scale to the size of .info or .biz relatively easily).  But in the original version of this post I started talking about FN-UTXO resolver and then immediately switched to talking about a UNO lightweight resolver, which was confusing. But, as explained in the updated version, <em>the UNO lightweight resolver is still more secure than DNSChain&#8217;s security model</em>.</p>
<p>Furthermore, <strong>Slepak&#8217;s response proves that he doesn&#8217;t understand Namecoin&#8217;s lightweight resolvers.</strong> He quoted from an O&#8217;Reilly book on Bitcoin SPV clients, stating that they had to query multiple servers, akin to DNSChain.  As explained <a href="https://blog.namecoin.org/post/109811339625/lightweight-resolvers">in the article I linked to originally</a>, Namecoin&#8217;s primary lightweight resolvers (UNO resolvers) do not need to contact multiple servers.  Compared to Bitcoin SPV clients, UNO resolvers do not require as much storage and offer much better security.&nbsp;<a href="#rf5-699" class="backlink" title="Jump back to footnote 5 in the text.">&#8617;</a></p></li><li id="fn6-699"><p>The <a href="https://blog.okturtles.com/2015/03/certificate-transparency-on-blockchains/">security model</a> he was referring to in the original “at least as good as” quote does not specify running your own server, it only suggested that one, &#8220;Use a DNSChain server that you have reason to trust&#8230;&#8221;.&nbsp;<a href="#rf6-699" class="backlink" title="Jump back to footnote 6 in the text.">&#8617;</a></p></li></ol>]]></content:encoded>
			<wfw:commentRss>https://www.indolering.com/okturtles-dnschain-unblock-us/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">699</post-id>	</item>
		<item>
		<title>DNSChain: Still Harmful</title>
		<link>https://www.indolering.com/dnschain-still-harmful/</link>
		<comments>https://www.indolering.com/dnschain-still-harmful/#comments</comments>
		<pubDate>Thu, 26 Mar 2015 01:11:54 +0000</pubDate>
		<dc:creator><![CDATA[Zachary Lym]]></dc:creator>
				<category><![CDATA[Cryptocurrencies]]></category>
		<category><![CDATA[dnschain]]></category>

		<guid isPermaLink="false">http://www.indolering.com/?p=688</guid>
		<description><![CDATA[DNSChain is still pushing third party trust as being equivalent to lightweight resolvers. Update This article was meant as an overview of DNSChain, but it had a lot of drama.  I&#8217;ve written a more-up-to-date technical overview of okTurtles, DNSChain, and Unblock.us. While the security model for DNSChain has improved, they are still misrepresenting the security parameters of [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>DNSChain is still pushing third party trust as being equivalent to lightweight resolvers.</p>
<p><span id="more-688"></span></p>
<h2>Update</h2>
<p>This article was meant as an overview of DNSChain, but it had a lot of drama.  I&#8217;ve written a more-up-to-date technical overview of <a href="http://www.indolering.com/okturtles-dnschain-unblock-us">okTurtles, DNSChain, and Unblock.us</a>. While the security model for DNSChain has improved, they are still misrepresenting the security parameters of their software.</p>
<p>&nbsp;</p>
<p><del><a href="http://www.indolering.com/dnschain-is-harmful">Originally</a>, DNSChain was a pure client/server solution, every client would connect to a server with a full node Namecoin install with DNSChain acting as the middleware and DNS server.  Slepak (DNSChain&#8217;s lead developer) claimed that DNSChain did not require third party trust because everyone would have &#8220;friends&#8221; who would run servers on behalf of the user (which he called &#8220;second party trust&#8221;).  Since 99% of the population would rely on someone else to run a server for them, this effectively broke the MITM protection offered by Namecoin, despite DNChain&#8217;s claim of being &#8220;MITM-proof.&#8221;</del></p>
<p><del>The Namecoin development team <a href="http://forum.namecoin.org/viewtopic.php?p=10138&amp;sid=571d2f7bfc20ff1f57ea244ad06cc303#p10138">pointed out</a> that this is unnecessary, as <a href="http://blog.namecoin.org/post/109811339625/lightweight-resolvers">lightweight resolvers</a> only require a few megabytes to operate locally.  Later <a href="http://www.indolering.com/dnschain-is-harmful">I debunked his claims</a> regarding 3rd party trust and knocked the original scheme down as insecure and infeasible.</del></p>
<p><del>Slepak then started pushing the notion that everyone would have home router as their trusted server.  I <a href="%20http://www.indolering.com/dnschain-routers">knocked this updated scheme down</a> as infeasible (<a href="http://arstechnica.com/business/2015/04/10-of-americans-have-a-smartphone-but-no-other-internet-at-home/">10% of American&#8217;s don&#8217;t even have a home internet connection</a>) and showed that it would loop router manufacturers into the trust base.  And, again, it is totally unnecessary given that <a href="http://blog.namecoin.org/post/109811339625/lightweight-resolvers">lightweight resolvers</a> require less than 100 megabytes of local storage.</del></p>
<p><del>DNSChain then added two features: checking multiple DNSChain servers and public key pinning<sup id="rf1-688"><a href="https://www.indolering.com/dnschain-still-harmful/#fn1-688" title="In that as long as the server doesn&rsquo;t lie the first time around,&nbsp;future&nbsp;lookups&nbsp;are safe." rel="footnote">1</a></sup> (Proof-of-Transition).  Slepak now claims that this is “at least as good as” lightweight resolvers.  This is <a href="http://blog.namecoin.org/post/109811339625/lightweight-resolvers">simply not true</a> and demonstrates a basic ignorance of lightweight technology.</del></p>
<p><del>Astute readers will have noticed that DNSChain has simply reinvented all of the hacks used to improve third party trust.  Marlin Moxiespike was a pioneer in building systems similar to what DNSChain is proposing, such as <a href="http://convergence.io">Convergence</a> and <a href="http://tack.io/index.html">Tack</a>.  However, neither of Moxiespike&#8217;s projects claim to be “MITM-proof” and it&#8217;s difficult to understand how DNSChain can claim security benefits beyond what is already offered by these projects.</del></p>
<p><del>I have every reason to try and suck up to Slepak, he might have funding some funding soon and he dangled the possibility of funding Namecoin projects directly. But honest and accurate marketing of the security parameters of their software is a prerequisite for any endorsement.  So I dug into okTurtles, Unblock.us.org (related projects) and checked out their website.</del></p>
<p><del>I pointed <a href="http://www.indolering.com/e2e-web-crypto">security flaws with okTurtles</a> and problems with their marketing over email, such as the claim that DNSChain &#8220;fixes&#8221; HTTPS.  Slepak deflected this latter criticism and said that the fully qualified claim was excessive.  Slepak regularly uses this &#8220;it&#8217;s just marketing&#8221; excuse and generally doesn&#8217;t care that the plain reading of their claims don&#8217;t match up to reality.  I agree with what Tor developer <a href="https://youtu.be/GwMr8Xl7JMQ?t=50m">Jacob Appelbaum said</a> of a similarly misleading claims made by Ultrasurf,</del></p>
<blockquote><p><del><span style="line-height: 1.5;">&#8230; but it is super dangerous to make that claim and we would prefer to be very conservative so that when people use the system we know what they think they&#8217;re getting, honestly and truly.  That is absolutely the <em>only way</em> we think we will be able to ethically do this kind of thing and so it&#8217;s really important if you build or work on these systems to understand it is way better to over deliver and under promise.  Because when you make a mistake or when something goes wrong, real people&#8217;s lives are really on on the line and we don&#8217;t want to mislead them.</span></del></p></blockquote>
<p><del>Even if we ignore <em>all</em> of the security problems and their problematic behavior, DNSChain is a waste of developer time and funding.  DNSChain itself is entirely duplicative of NMControl and should have just been written as a plugin for NMControl.  We also need funding for lightweight clients and Namecoin core, which is the software from which DNSChain derives all of its security claims from.</del></p>
<p><del>Namecoin core needs at least one full-time engineer to make the fundamental changes needed for it to go mainstream, such as increasing domain pricing and setting renewal periods to fixed time intervals.  We also need developers for the lightweight client and revamping the build system, this amounts to at least $150,000 in funding.  Our estimated need for NMControl (which DNSChain essentially duplicates) is 1/10 of what we need for core engineering.</del></p>
<p><del>DNSChain has a track record for poor security engineering, misleading marketing, it duplicates NMControl&#8217;s functionality.</del></p>
<hr class="footnotes"><ol class="footnotes"><li id="fn1-688"><p>In that as long as the server doesn&#8217;t lie the first time around, future lookups are safe.&nbsp;<a href="#rf1-688" class="backlink" title="Jump back to footnote 1 in the text.">&#8617;</a></p></li></ol>]]></content:encoded>
			<wfw:commentRss>https://www.indolering.com/dnschain-still-harmful/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">688</post-id>	</item>
		<item>
		<title>Namecoin: A Decentralized Trusted Base</title>
		<link>https://www.indolering.com/trusted-base/</link>
		<comments>https://www.indolering.com/trusted-base/#comments</comments>
		<pubDate>Sun, 01 Feb 2015 22:54:04 +0000</pubDate>
		<dc:creator><![CDATA[Zachary Lym]]></dc:creator>
				<category><![CDATA[BitShares]]></category>
		<category><![CDATA[Namecoin]]></category>

		<guid isPermaLink="false">http://www.indolering.com/?p=679</guid>
		<description><![CDATA[Introduction I&#8217;ve been thinking a lot about transport-dependent DNS settings (BIND, http, tor, and i2p) and the architecture the original Domain Name System and applied encryption. After long talks with Ryan-C and Mark of EasyDNS, I believe we need to recast Namecoin&#8217;s purpose as a decentralized trusted base which offers secure delegation, not as a [&#8230;]]]></description>
				<content:encoded><![CDATA[<h1>Introduction</h1>
<p>I&#8217;ve been thinking a lot about transport-dependent DNS settings (BIND, http, tor, and i2p) and the architecture the original Domain Name System and applied encryption. After long talks with Ryan-C and Mark of EasyDNS, I believe we need to recast Namecoin&#8217;s purpose as a <em>decentralized </em><i>trusted base</i> which offers secure delegation, <b>not</b> as a generic key-&gt;value datastore.</p>
<h1>A Trusted Base</h1>
<p>The real innovation offered by the blockchain is the ability to have trusted transactions between untrusted parties. Public-key cryptography offered a similar breakthrough 40 years ago: trusted communication across untrusted channels. However, public-key cryptography comes with a severe amount of overhead and it is NOT used to encrypt the bulk of the communications but only the initial symmetric key exchange.</p>
<h2>A Terrible Datastore</h2>
<p>By extension, the additional overhead required to store data on the blockchain makes them slow and costly generic key-&gt;value data stores. They also do not offer any protections for their users, whether it is Tahoe LAFS over I2P, Freenet, or a PHP upload script on a Tor hidden service, Namecoin is simply a <i>lousy</i> choice for publishing material that runs afoul of the powers that be.</p>
<h3>Domain Name System</h3>
<p>Even ignoring the generic data storage use case, Namecoin isn&#8217;t very good at storing DNS entries either. As antiquated as the domain name system is, John Postel put together an architecture that has scaled from a few dozen machines to a few billion over the past 30 years. The key to this scaling is delegation, Verisign and other organizations that manage root zone files for TLDs do not store full blown DNS entries, they store <i>links</i>. The root zone files for .com is 9.5 gigs of the following:</p>
<pre>NS2.EXERTIVE AAAA 2001:db8:85a3:8d3:1319:8a2e:370:7348
NS3.EXERTIVE A 68.180.194.243
NS3.EXERTIVE AAAA 2001:db8:85a3:8d3:1319:8a2e:370:7348
NS4.EXERTIVE A 68.180.194.243
NS4.EXERTIVE AAAA 2001:db8:85a3:8d3:1319:8a2e:370:7348
NS1.CYBERTX A 98.136.63.35
NS2.CYBERTX A 178.65.210.178</pre>
<h3>Public Key Infrastructure</h3>
<p>However, what of the case of id/? Again, storing the actual public keys in the blockchain turns out to be a terrible idea. A proper keyserver must be able to store an arbitrary amount of material. Each id/ would come with a signing key and an encryption key, both of which can be an arbitrary length. But we must also store child keys, email addresses, endorsements from key holders, an image of the owner, etc, etc.</p>
<h2>Great for Secure Delegation</h2>
<p>In every cryptographic trust system we find the use of a master signing key (a key signing key, a root certificate, etc, etc) which is used to sign child keys. The best practices for one of the oldest public key systems, PGP, is identical to that of all the others: create a master key which is stored on an air-gapped machine that then signs one&#8217;s everyday keys. Others only need to trust the master key to validate which child keys are still valid.</p>
<p>This is known a well-known design pattern called <i>secure delegation</i> and it fits perfectly with the capabilities of Namecoin. Every single proposal for Namecoin comes down to three elements: a human meaningful name (URN), a link to an authorized server (URL), and a public-key hash.</p>
<p>Other than convenience items for short DNS entries, such lists for translate/DNAME, alias/CNAME, and import statements, d/ records should be restricted to an ns and tls arrays. The same goes for id/: public key hashes, website and email links, and (for convenience) short ECC public keys.</p>
<h1>Why Does This Matter?</h1>
<p>While Namecoin is a key -&gt; value datastore, this ignores the reality that blockchains are databases that accommodate small pieces of information that change on the order of minutes to hours. The strengths Namecoin and our datastore is most efficiently communicated as a <i>decentralized trusted base</i>. This mental model better reflects Namecoin&#8217;s strengths and weaknesses, leading to better architectural choices both internally and externally.</p>
<h2>Architectural Choices</h2>
<p>I came to this conclusion while trying to work out additions to the current d/ record specification for HTTP transport (aka frame resolution, jsDNS, Speech.is, etc). I won&#8217;t get lost in the details of that process here but it was clear that the right solution was to use a nameserver.</p>
<p>But this became a recurring theme:</p>
<ol>
<li>How should we handle a server that supports transport over DNS, HTTP, Tor, and I2P? A <a href="https://wiki.namecoin.info/index.php?title=Generify_Transport_Data_Structures">transport neutral specification</a> would help but there would always be transport specific options that would not only complicate matters but also bloat the record.  It&#8217;s better to just point to a transport specific nameserver.</li>
<li>How should a registrar handle their customers DNS entries? Nameservers!</li>
<li>How should /id handle large keys? Keyservers!</li>
<li>&#8230;</li>
</ol>
<h2>Brain Dead Ideas</h2>
<p>Some crank came onto the forum recently to announce a new service: NamecoinFiles.org. This idiot thinks that the world needs a service which specializes in uploading files the Namecoin blockchain. We&#8217;ve also had an idiot come onto IRC who wanted to upload an archive of The Pirate Bay to the Namecoin blockchain.</p>
<p>Now, there is no way the blockchain would ever become a real platform for distributing such materials. We&#8217;ve checked with lawyers, and as long as the price is high enough we won&#8217;t get into any trouble either. Lightweight resolvers can also shed such material, so their impact is limited to being one-off pranks.</p>
<p>However, we don&#8217;t need these headaches. I think that as long as we brand Namecoin as a generic, censorship resistant key-&gt;value datastore, these sorts of idiots will keep popping up.</p>
<h1>Ramifications</h1>
<h2>Branding</h2>
<p>We should rebrand the website and altering our internal and external communications to emphasize the trusted base model is a fairly logical next step.</p>
<h2>Simplification of Specifications</h2>
<p>As noted above, I believe that records stored on the block chain should be trimmed to a URN, URL, and public-key hashes and a minimum number of convenience fields. Each transport is free to have arbitrarily complex records which are retrieved each namespaces equivalent of a nameserver.</p>
<h2>Changes to Record Size</h2>
<p>Trimming records to a URN, URL, and hash drastically reduces the size required for each record. There was already an accidental 512 byte limit on record sizes, but we&#8217;ve nixed plans to increase the size and keep it at 512 bytes.</p>
<p>Take a hypothetical domain name record consisting of an array of nameservers accessible over plain-old-DNS (PODS), Tor, and I2P plus two hashes of the public keys:</p>
<pre>"ns": [
  "ns1.example.com",
  "ns2.example.com",
  "suw74isz7wqzpmgu.onion",
  "7e3e1add61049555.onion",
  "ukeu3k5oycgaauneqgtnvselmt4yemvoilkln7jpvamvfx7dnkdq.b32.i2p",
  "udhdrtrcetjm5sxzskjyr5ztpeszydbh4dpl3pl4utgqqw2v4jna.b32.i2p"
],

"tls": {
  "sha2": "a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447",
  "sha3": "9103cd7811eb11c25788b5ce87b55ec10ee87e86d0bf4d383da139015d39a924"
}
</pre>
<p>The above clocks in at &lt;400 bytes. Domains that need more can use an import statement.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.indolering.com/trusted-base/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">679</post-id>	</item>
		<item>
		<title>DNSChain vs Real Interop</title>
		<link>https://www.indolering.com/dnschain-vs-real-interop/</link>
		<comments>https://www.indolering.com/dnschain-vs-real-interop/#comments</comments>
		<pubDate>Sun, 01 Feb 2015 20:09:30 +0000</pubDate>
		<dc:creator><![CDATA[Zachary Lym]]></dc:creator>
				<category><![CDATA[BitShares]]></category>
		<category><![CDATA[Cryptocurrencies]]></category>
		<category><![CDATA[Namecoin]]></category>

		<guid isPermaLink="false">http://www.indolering.com/?p=674</guid>
		<description><![CDATA[In the dustup generated in my article on DNSChain&#8217;s broken security model, some argued that there is a need for a trusted solution. I agree with this, my criticisms of DNSChain are that it misrepresents its security model and introduces the worst kind of third party trust without any gains in usability or interoperability. I&#8217;m [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>In the dustup generated in my article on <a href="http://www.indolering.com/dnschain-is-harmful">DNSChain&#8217;s broken security model</a>, some argued that there is a need for a trusted solution. I agree with this, my criticisms of DNSChain are that it misrepresents its security model and introduces the worst kind of third party trust <strong>without any gains in usability or interoperability</strong>. I&#8217;m working on a more secure trusted server solution that provides backward compatibility with the existing domain name system.</p>
<p><span id="more-674"></span></p>
<h2>Update</h2>
<p>After I posted this, DNSChain adopted distributed trust as well, in that it will contact multiple DNSChain servers.  If you reject DNSChain&#8217;s claim that users will run their own trusted server, the security of a DNSSEC validating local resolver <em>approaches</em> DNSChain while maintaining backwards compatibility with existing infrastructure. Remember: lightweight resolvers have equivalent usability and better security than DNSChain.  The DNSSEC compromise gives up some security in exchange for a realistic path to universal resolution.  When it comes to domain name resolution, DNSChain compromises the blockchain security model without gains in usability<sup id="rf1-674"><a href="https://www.indolering.com/dnschain-vs-real-interop/#fn1-674" title="DNSChain will say that their model is (now) more secure since a user can change which servers they trust.
This is similar (but not as absurd) to their claim that users will run their own servers.&nbsp; How many people change the default directory authority servers on their Tor client?&nbsp; I&rsquo;ve talked to Tor developers, they are shooting from the hip when it comes to choosing routers.&nbsp; Unlike Tor, DNSSEC signers aren&rsquo;t making qualitative decisions on which routers to trust, it&rsquo;s trivial for anyone to validate the resulting DNSSEC zone file.
DPoS blockchains (like BitShares) control who produces the DNSSEC zone records and (unlike DNSChain) has a mechanism to pay them to perform this public service.&nbsp; While only ~7 servers would be signing off on the DNSSEC records, the rest of the BitShares network can verify evidence of fraud and remove untrustworthy servers.
DNSChain supports a version of public key pinning for all domains. However, security conscious websites should presumably be performing public key pinning on the server side.&nbsp; But, again, if you are willing to install software to improve your security, setting up DNSChain requires at least as much work as installing a lightweight resolver and is also less secure." rel="footnote">1</a></sup>.</p>
<h2>Crank Like Behavior</h2>
<p>Despite Greg&#8217;s claims, DNSChain is a trusted server solution: the general populace will either trust “friends” or their router manufacturer. We will get to a better trusted model in a moment, but it&#8217;s important to note that DNSChain is sold as a solution which eliminates MITM attacks and does not rely on third party trust, both of these assertions are clearly false.</p>
<p>Their falsehoods are compounded by the fact that DNSChain&#8217;s authors go out of their way to avoid admitting that they rely third party trust, using euphemisms like “friends” or “second party trust”. I spent <a href="http://forum.namecoin.org/viewtopic.php?p=10138&amp;sid=571d2f7bfc20ff1f57ea244ad06cc303#p10138">a lot of time</a><span class="gmw_"> trying to explain this to Greg, DNSChain&#8217;s lead developer. Eventually, he switched from claiming “friends” would run servers to everyone relying on remotely connecting to a home server (maybe a router or a plug-pc). After I </span><a href="http://www.indolering.com/dnschain-is-harmful">knocked that down</a> as infeasible, DNSChain&#8217;s author didn&#8217;t address those weak points but changed the conversation, stating that it&#8217;s still “early days” and then making <a href="http://www.reddit.com/r/Namecoin/comments/2ruthd/dnschain_considered_harmful/">additional outlandish claims</a> such as, “DNSChain&#8217;s censorship circumvention is in many ways superior to Tor&#8217;s!”</p>
<p>As far as I can tell, DNSChain is planning on selectively performing DNS hijacking; forwarding blocked sites to a transparent proxy. Of course, the user has to have a proxy that hasn&#8217;t been blocked and we are back to trusting “friends” to run this for you. As for comparing the project to Tor in terms of detection and the security model … I&#8217;ve learned that cranks don&#8217;t need to be correct, they just have to outrun the fact checkers. DNSChain isn&#8217;t doing anything special here, just making grandiose claims about some very vanilla technology.</p>
<h2>No Usability Gains</h2>
<p>Using DNSChain requires either installing software locally or altering your operating system&#8217;s DNS settings. The problem is that <b>DNSChain&#8217;s client/server model will always be more complex than the equivalent scenario for a lightweight resolver</b>:</p>
<ul>
<li>Effort required to manually install a lightweight resolver &lt; effort required to maintain a DNSChain server + install and configure client software.</li>
<li><span class="gmw_">Effort required to use a lightweight resolver bundled with browser/operating system &lt; effort required to configure a DNSChain client software to use router that bundles DNSChain.</span></li>
</ul>
<p>DNSChain throws away all of the security benefits of a lightclient without ANY gains in usability. However, I&#8217;m working on full an <a href="http://www.indolering.com/universal-p2p-resolution">interoperability solution for .p2p</a> (and hopefully .bit) that does not require altering any system settings or installing software. It&#8217;s not as secure a lightweight resolver (the preferred method) but the compromise is for major gains in terms of usability: anyone can link to and visit these sites!</p>
<h2>Ideal Third Party Trust</h2>
<p>By moving the trust mechanism outside of the local environment, you <i>must</i> introduce some form of third party trust. The essence of arguments against third party trust can be found in Ken Thompson&#8217;s classic <a href="http://cm.bell-labs.com/who/ken/trust.html">Reflections on Trusting Trust</a>, in which Thompson showed that an attacker can modify a compiler to produce malicious programs, including a rigged compiler that perpetrated the attack,</p>
<blockquote><p>The moral is obvious. You can&#8217;t trust code that you did not totally create yourself. (Especially code from companies that employ people like me.) No amount of source-level verification or scrutiny will protect you from using untrusted code. In demonstrating the possibility of this kind of attack, I picked on the C compiler. I could have picked on any program-handling program such as an assembler, a loader, or even hardware microcode. As the level of program gets lower, these bugs will be harder and harder to detect. A well installed microcode bug will be almost impossible to detect.</p></blockquote>
<p>The counter to this argument came decades later in the form of<a href="http://www.dwheeler.com/trusting-trust/"> deterministic build</a> environments. Deterministic binaries enable us to compare the output of multiple compilers, increasing the attack cost. The exact security offered is a bit more robust than my summary, but the lesson forms the basis of modern information security: we cannot prevent all attacks, but we can make them <i>very</i> expensive.</p>
<p>I call this type of trust <i>distributed</i> trust, as the trust is distributed across independent entities. This is distinct from the type of trust offered by the CA system, unsigned DNS, or DNSChain, which I call <i>siloed</i> trust. Siloed trust <strong>accumulates vulnerabilities</strong> as more organizations are added, whereas distributed trust becomes <strong>more secure</strong> as more organizations are added. By distributing the trust across independent organizations, we increase the cost of an attack.</p>
<p>We are planning on setting up multiple publishers and using threshold signatures to produce DNSSEC secured zone exports. We will initially use a DNS suffix, for political reasons I can&#8217;t elaborate I can&#8217;t elaborate beyond the DNS suffix but anyone can use our signed zone exports<sup id="rf2-674"><a href="https://www.indolering.com/dnschain-vs-real-interop/#fn2-674" title="Including DNS service providers, ISPs, and router manufacturers.&nbsp; Of course, if you are going to install something locally, you should just use a lightweight resolver." rel="footnote">2</a></sup>.  Interoperability with existing DNS infrastructure and the limitations of DNSSEC forces some compromises. However, we can revoke trust in any of the publishers at any time and custom client side software can even add additional publishers.</p>
<p>This solution is more censorship resistant and at least <i>as secure</i> as what is offered by other TLDs. While we will have to rely on the certificate authorities until we can <a href="https://www.youtube.com/watch?v=7IHnFrS6LbA">convince browser vendors to embrace DANE</a>, we&#8217;ve architected the encryption component so that we can seamlessly transition to DANE<sup id="rf3-674"><a href="https://www.indolering.com/dnschain-vs-real-interop/#fn3-674" title="Again, politics is locking up the details for now." rel="footnote">3</a></sup>. Eventually, I believe that we can offer something that is <i>more</i> secure than what the other TLDs provide. Site operators who decide that they need greater levels of security can opt out of the system and rely on lightweight clients that are more secure and robust against censorship.</p>
<h2>Collaboration</h2>
<p>DNSChain has responded to my critiques by advertising multi-chain compatibility and paying lip service to collaboration. This is frustrating because DNSChain is diverting resources from Namecoin&#8217;s lightweight resolvers, NMControl, and my own interoperability work.</p>
<p><span class="gmw_">Both NMControl and the backwards compatibility solution are “multi-chain” efforts: I&#8217;ve been hired by BitShares, the only other major blockchain committing serious resources to a decentralized TLD. I know because I talked to Vitalik Buterin about potential collaborations and Ethereum isn&#8217;t interested in working on a decentralized TLD. In addition to the zone exports, we are working on harmonizing standards and porting NMControl to work with BitShares.</span></p>
<p>If DNSChain&#8217;s author wants to collaborate, he could lend a hand with NMControl or help build the trusted server solution I&#8217;m working on with Ryan. Greg is obviously great at marketing and has a lot of energy. Even if he doesn&#8217;t like programming in Python, there are plenty of other areas he could work <i>with</i> us on. At the very least, they should switch from trusting routers to the zone exports we will be publishing.</p>
<h2>Bonus: REST API</h2>
<p>DNSChain makes a lot of hay about having a REST API. This is pretty silly: REST is a great RPC <i>for the web</i> <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm">because of how it scales</a>, but local clients are better off using a more powerful RPC library, like the one packaged with NMControl. If you <i>must</i> have a REST API for local software, NMControl is adding one<sup id="rf4-674"><a href="https://www.indolering.com/dnschain-vs-real-interop/#fn4-674" title="We actually already have one but the current implementation is insecure. That being said, we&rsquo;ve peaked at DNSChain&rsquo;s code and &hellip;." rel="footnote">4</a></sup>. We are working on with TLS encryption too, if you <i>really</i> want to run your own client/server setup, consider hacking on NMControl.</p>
<p>However, it&#8217;s fairly trivial for the publishers to export signed JSON records in addition to the DNS zone exports. I&#8217;m planning on importing the JSON records into a public CouchDB database. CouchDB&#8217;s REST based protocol enables it to scale like crazy and gives us a free REST API. CouchDB has client libraries in every major language, giving us free client libraries for the web service. There is even a browser-based, JavaScript implementation that does P2P using WebRTC! It&#8217;s also easy to setup a document schema that forces the client to check every record for the threshold signature.</p>
<p><span class="gmw_">My point is this: choose the right tool for the job. DNSChain is poorly architected because it&#8217;s trying to do everything at once. Our middleware, NMControl has the backing of the Namecoin team and we are working on making it compatible with BitShares and CouchDB has a large team of paid developers behind it. Why build a server <em>and</em> the middleware from scratch?</span></p>
<h2>Conclusion</h2>
<p>I agree that there should be a trusted server solution and I&#8217;m emulating a solution that has been deployed on a large scale and it offers backwards compatibility with the existing domain name system.  The core architecture uses a distributed trust model and is forward compatible with security improvements to internet infrastructure.</p>
<p><span class="gmw_">The problem with DNSChain is that they persist in making false, grandiose claims about a solution that involves <strong>everyone</strong> buying a plug-computer or a new router.  With DNSChain, we will get a large number of people locked into trusting their home router manufacturer, </span><i>forever</i>.</p>
<hr class="footnotes"><ol class="footnotes"><li id="fn1-674"><p>DNSChain will say that their model is (now) more secure since a user can change which servers they trust.</p>
<p>This is <em>similar</em> (but not as absurd) to their claim that users will run their own servers.  How many people change the default directory authority servers on their Tor client?  I&#8217;ve talked to Tor developers, they are shooting from the hip when it comes to choosing routers.  Unlike Tor, DNSSEC signers aren&#8217;t making qualitative decisions on which routers to trust, it&#8217;s trivial for anyone to validate the resulting DNSSEC zone file.</p>
<p>DPoS blockchains (like BitShares) control who produces the DNSSEC zone records and (unlike DNSChain) has a mechanism to pay them to perform this public service.  While only ~7 servers would be signing off on the DNSSEC records, the rest of the BitShares network can verify evidence of fraud and remove untrustworthy servers.</p>
<p>DNSChain supports a version of public key pinning for all domains. However, security conscious websites should presumably be performing public key pinning on the server side.  But, again, if you are willing to install software to improve your security, setting up DNSChain requires at least as much work as installing a lightweight resolver and is also less secure.&nbsp;<a href="#rf1-674" class="backlink" title="Jump back to footnote 1 in the text.">&#8617;</a></p></li><li id="fn2-674"><p>Including DNS service providers, ISPs, and router manufacturers.  Of course, if you are going to install something locally, you should just use a lightweight resolver.&nbsp;<a href="#rf2-674" class="backlink" title="Jump back to footnote 2 in the text.">&#8617;</a></p></li><li id="fn3-674"><p>Again, politics is locking up the details for now.&nbsp;<a href="#rf3-674" class="backlink" title="Jump back to footnote 3 in the text.">&#8617;</a></p></li><li id="fn4-674"><p>We actually already have one but the current implementation is insecure. That being said, we&#8217;ve peaked at DNSChain&#8217;s code and &#8230;.&nbsp;<a href="#rf4-674" class="backlink" title="Jump back to footnote 4 in the text.">&#8617;</a></p></li></ol>]]></content:encoded>
			<wfw:commentRss>https://www.indolering.com/dnschain-vs-real-interop/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">674</post-id>	</item>
		<item>
		<title>Protected: Interop for Decentralized TLDs</title>
		<link>https://www.indolering.com/interop/</link>
		<comments>https://www.indolering.com/interop/#respond</comments>
		<pubDate>Sat, 24 Jan 2015 23:44:01 +0000</pubDate>
		<dc:creator><![CDATA[Zachary Lym]]></dc:creator>
				<category><![CDATA[BitShares]]></category>
		<category><![CDATA[Cryptocurrencies]]></category>
		<category><![CDATA[Namecoin]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.indolering.com/?p=665</guid>
		<description><![CDATA[There is no excerpt because this is a protected post.]]></description>
				<content:encoded><![CDATA[<form action="https://www.indolering.com/wp-login.php?action=postpass" class="post-password-form" method="post">
<p>This content is password protected. To view it please enter your password below:</p>
<p><label for="pwbox-665">Password: <input name="post_password" id="pwbox-665" type="password" size="20" /></label> <input type="submit" name="Submit" value="Enter" /></p>
</form>
]]></content:encoded>
			<wfw:commentRss>https://www.indolering.com/interop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">665</post-id>	</item>
		<item>
		<title>The Road to Universal .p2p Resolution</title>
		<link>https://www.indolering.com/universal-p2p-resolution/</link>
		<comments>https://www.indolering.com/universal-p2p-resolution/#comments</comments>
		<pubDate>Sun, 18 Jan 2015 17:41:59 +0000</pubDate>
		<dc:creator><![CDATA[Zachary Lym]]></dc:creator>
				<category><![CDATA[BitShares]]></category>
		<category><![CDATA[Cryptocurrencies]]></category>

		<guid isPermaLink="false">http://www.indolering.com/?p=668</guid>
		<description><![CDATA[I came to BitShares with the express purpose of convincing them to reinvigorate their .p2p efforts.  Thankfully, I was pleasantly surprised to find that the .p2p initiative had fizzled not due to lack of interest but of bandwidth.  The core development team liked my overall plan and I would like to present my roadmap for [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I came to BitShares with the <a href="https://bitsharestalk.org/index.php?topic=11597.msg159093#msg159093">express purpose</a> of convincing them to reinvigorate their .p2p efforts.  Thankfully, I was pleasantly surprised to find that the .p2p initiative had fizzled not due to lack of interest but of bandwidth.  The core development team liked my overall plan and I would like to present my roadmap for making .p2p a reality for the BitShares community.</p>
<p><span id="more-668"></span></p>
<div class="woo-sc-box  note large rounded ">
<p>Note: this is primarily intended for the BitShares community and their investors.  The plan itself is very preliminary, please do not read too deeply into any one aspect, it will evolve.  </div>
<h1>Introduction</h1>
<p>I started contributing to Namecoin because I wanted to build an interoperability solution for .bit so that everyone could visit .bit sites without installing software or altering system settings.  I&#8217;ve spent the past couple of years working with my colleagues to systematically break down each one.  From legacy interop to inclusion with the major browsers to domain pricing to interoperating with registrars, I think we&#8217;ve architected a solution that will work.</p>
<p>My week at BitShares HQ was to give me time to grok BitShares&#8217;s security model, your team, and your community.  BitShares has solved some problems that Namecoin hasn&#8217;t, such as pegging assets to USD.  The BitShares&#8217; community is also more open to my proposal for legacy interoperability.  Furthermore, I&#8217;m a convert to DPoS:, you can fuel a higher rate of innovation and the security model can accommodate my proposal for legacy interoperability.</p>
<p>However, I want to be upfront in my continued association with Namecoin.  I am a Namecoin contributor who also wants to become a BitShares contributor, but I am in no way being “poached” by BitShares.  Even if delegate pay <i>could</i> sustain me at a market competitive rate, I honestly wouldn&#8217;t be of much use without my continued collaboration with my colleagues in the Namecoin community.</p>
<p>Namecoin developers are all volunteers and <a href="http://blog.namecoin.org/post/104506865810/cakes-for-competitors">we are eager to have others tackle this problem</a>. Posts to our internal board regarding potential collaborations and my trip to BitShares HQ have been met with nothing but positive feedback.  The difference between Namecoin and BitShares is similar to that of Debian and RedHat or Firefox and Chrome.</p>
<p>My goal in collaborating with BitShares is to pool our resources and reduce duplication of effort.  Both projects need to work with the IETF, ICANN, certificate authorities DNS providers, and anonymity networks.  Having two parallel efforts tackling the same problem will increase our chances of success.  It&#8217;s time we start working together to end online censorship and make the internet safe from corrupt governments.</p>
<h1>The Long Term Plan</h1>
<h2>Legacy Interoperability</h2>
<p><a href="http://en.wikipedia.org/wiki/Metcalfe%27s_law">Metcalf&#8217;s law</a> ensures that .p2p sites must interoperate with the existing web, no website will link to a .p2p site unless all of their visitors can visit the site.  Asking users to install software or changing DNS settings is asking too much!</p>
<p>Initially, we will have to rely on a DNS suffix (i.e. p2p.tld) also known as a pseudo SLD.  However, we must make this solution as secure as traditional TLDs, which requires setting up threshold signing for DNSSEC and electing delegates to sign the zone file.  This task is non-trivial and there are several problems with BitShares original plans for the DNS suffix that I will cover later on.</p>
<p>This solution is not ideal in the long term, if a government shuts down our suffix it shuts down the entire TLD.  However, owning multiple backup .p2p TLDs will turn any attempt at shutting down the TLD into free marketing, the kind that pushes browser and operating system vendors to adopt lightclient resolution directly.</p>
<p>We will also publish signed zone files to Archive.org, so DNS providers can enable .p2p resolution and DNSSEC validating clients won&#8217;t have to <a href="http://www.indolering.com/dnschain-is-harmful">rely on their DNS providers operational security</a>.  In the medium term, I anticipate pushing .p2p resolution at third party DNS providers (like OpenDNS, Google&#8217;s DNS, etc.) as well as universities, major ISPs, and on corporate campuses.</p>
<p>There are several mechanisms (server side, client side, and on the browser level) for detecting support for direct .p2p resolution and forwarding clients from the suffix to the native .p2p domain. Thus, when clients support local resolution, existing DNS suffix links will resolve to the .p2p domain directly.</p>
<h2>Local Lightclient Resolution</h2>
<p>I interned at Mozilla and it is a <b>crazy</b> place to work.  The majority of the committers are unpaid and the majority of paid developers are remote, meaning that nearly every developer meeting is broadcast on the internet and that anyone can just drop in on the chat channel.  As a result, the noise floor is VERY high: there a lot of people demanding that Mozilla support various protocols and initiatives.</p>
<p>Take the Metalink project, a standard for listing multiple URLs and transports for a single download.  It has had patch sets for Firefox for years, pending RFCs at the IETF, it is used internally by YUM, supported by cURL, and offered as a distribution method for pretty much every major Linux distro.  It makes downloads faster and more resilient to failure … but Mozilla hasn&#8217;t adopted it.</p>
<p>That&#8217;s a very long-winded way of saying that we need an <i>overwhelmingly</i> strong case if we ever want adoption by the major browsers and operating systems.  Snowden and the <a href="http://www.indolering.com/chilling-effects-domain-names">US government&#8217;s domain name seizures</a> have made our case much more compelling, but we need still need a few more tricks.</p>
<p><a href="http://en.wikipedia.org/wiki/Zooko%27s_triangle">Zooko&#8217;s triangle</a> is why I&#8217;m here: to make anonymous, censorship-resistant networks usable. Fulfilling this use case is what will enable us, in the long term, to be included in operating systems, browsers, and other network software directly.</p>
<p>Furthermore, China has essentially locked Google and every other Western company out of the world&#8217;s largest market.  Indeed, 55% of the worlds population lives in countries that engage in moderate to severe levels of censorship.  It is in these markets that users will be willing to install software add-ons to circumvent censorship and the profit motive to crack these walled gardens will be our vehicle to mass adoption.</p>
<h1>The Plan for 2015</h1>
<p>There are a number of problems with .p2p&#8217;s existing plans, mostly stemming from a lack of expertise in the relevant areas.  Collectively, it has taken the current Namecoin development team years to develop this expertise.  We also have connections to various communities  (DNS, certificate authorities, the security industry, and standards bodies) that the .p2p team lacks.  Hiring me as a delegate will give BitShares someone to head up this effort that has spent a lot of time reviewing the legal, technical, and usability issues at play.</p>
<p>With your official support, I will include explicit support for BitShares in all of my work and create parallel infrastructure for .p2p.  Let&#8217;s get down to what, exactly, that means.</p>
<h2>Funding</h2>
<p>I am requesting 2.5 delegates, one for myself, another for a security engineer and a third for operational expenses.  The operational expenses delegate will cover the cost of hiring a system admin to manage the delegates and additional expenses such as dedicated servers for the zone signers, .p2p domains, travel costs, and some code bounties for work I do not have time for myself.  I will regularly (probably annually) burn any additional funds that the operational expense delegate does not use.   All three delegates will be converted into zone signing delegates.</p>
<p>The proposal for 2015 is somewhat optimistic: delegate pay only covers me at ¼ of my industry pay rate (after self-employment taxes).  I am assuming that I will receive grant money to work on Namecoin ¾ time with delegate pay making up the other ¼ time and that the BitShares&#8217; price will not fall dramatically.  If I do not receive grant funding or BitShares&#8217; price falls dramatically, we will need to reevaluate my obligations and pay.</p>
<h2>IETF, ICANN, &amp; Domain Politics</h2>
<p>I made a very stupid mistake in the first draft of this document: promising <em>anything</em> in regards to standards bodies.  I&#8217;m very new to both ICANN and the IETF but I do have contacts there and I am excited to start advocating on the behalf of .p2p.  However, if my time in politics taught me anything, it&#8217;s to be very humble in what you plan to accomplish.  I think I can provide value here, but <em>do not hire me</em> based on my expertise in this domain.</p>
<p>The operational expenses delegate will be used for any travel expenses to attend IETF and ICANN meetings ($3,000-$5,000).</p>
<h2>Legacy Interop</h2>
<h3><b>DNS Suffix</b></h3>
<p>We need several domains to try and prevent attackers from seizing our primary domain. Even with multiple fallbacks, we should try to use the domains most resistant to domain seizures.  I have a list of TLD&#8217;s that are cross referenced with the OpenNet Initiative as well as a FOIA request pending with ICE to help determine the safest alternative domains.  I will use this list to generate a list of potential TLDs and then negotiate the purchase of the domains.</p>
<p>Delegate pay will <b>only</b> cover my labor costs; the cost for the additional domains will need to come out from the operational expenses delegate ($1,000 per domain).</p>
<h3><b>DNSSEC</b></h3>
<p>We need to not only sign the DNS suffix but also publish signed zone files so that DNS providers (OpenDNS, Google&#8217;s DNS, universities, ISPs, corporate campuses, etc.) can enable .p2p resolution securely.  This is a very complex task.  The first engineering difficulty is that interoperability with DNSSEC means that we must implement a threshold signature scheme that can produce standard RSA public keys with signatures that can be verified by the standard verification routines.  The second is that since we are talking to standard DNSSEC equipment we can&#8217;t rely on the normal delegate consensus system.</p>
<p>Thankfully, an academic <a href="https://mega.co.nz/#!t4hFkQSZ!d91RU3yInxfPNx9E9ryi_ad7X6HFH_RKPsostZ9Vu-o">has published a paper</a> outlining a scheme that produces standard RSA signatures.  There was apparently a Java implementation, but we have been unable to contact the author.  If we cannot get a hold of an existing implementation, we may need to hire a mathematician to help with the reimplementation.</p>
<p>Finally, we must create a system that parallels the traditional TLD zone signing scheme.  The proposed threshold signature scheme&#8217;s complexity scales linearly with the number of parties, so it is not feasible to use to scale to a full 101 delegates.  Furthermore, since we cannot easily replace delegates (revoking one delegate requires generating a new ZSK and signing it with the KSK) we need to select a smaller number of very reliable delegates.</p>
<p>The system will require the generation of a Key-Signing-Key (KSK) with 7 trusted parties that store their keys offline.  The KSK will sign a Zone-Signing-Key (ZSK) that is used by delegates to sign the zone files.  We can use a 2Kb ZSK, so there is no need to create and sign a new ZSK every 3 months (.com, .net, etc. use a 1Kb ZSK).  However, to protect against governmental adversaries, the zone signers will need to use dedicated servers and store their keys in hardware security modules.</p>
<p>Delegate pay cover the initial threshold implementation, creating a hardened Linux system, and setting up demonstration zone-signing delegates.  The threshold signature implementation and creating demonstration delegates (including a locked down image and sysop automation) will be covered by the security engineer&#8217;s 100% delegate for one year.  The operational delegate will increase its pay rate as needed to cover the demonstrations servers hardware costs (~$2,500).  Sometime in 2016, we will choose the final trusted KSK holders and the additional zone-signing delegates before officially launching .p2p.</p>
<h2>Development</h2>
<p>There is a lot of development work unrelated to the backwards interoperability proposal.  This includes work on domain record specification, middleware, and clients to manage domains.</p>
<p>Name records must be converted to a destination format.  For example, a domain might need to be converted for use by Plain-Old-DNS (PODNS), Tor, I2P, etc.  The names and their records must go through validation checks.  Finally, operating systems, browsers, and other applications also need the records served up via DNS; necessitating a standards compliant DNS server.  These tasks fall to a middleware layer that lives outside of the blockchain software.</p>
<p>Delegate pay will primarily fund making Namecoin&#8217;s middleware (NMControl) compatible with BitShares.  However, I would also like to convert NMControl to Python 3, replace the RPC library, add record validation, build client libraries in 5+ languages, and add full test coverage.  The resulting product will work with Namecoin&#8217;s browser and system level proxy solution and serve for other applications that wish to communicate directly.</p>
<p>I will also be working on important usability issues regarding domain name ownership.  For example, we need to refactor how TLS signing works.  Right now, sites can generate multiple TLS certificates and have them signed by a certificate authority.  We need to transition to a system in which site owners sign their site certificates with an master key pair that is stored offline.  Setting up a domain management client to handle these items automatically is going to take a significant amount of work.</p>
<p>I have little experience with Python, I am unfamiliar with the codebase, and I will work on this in parallel to my other responsibilities.  Given the level of unknowns, I am going to give myself a wide margin of error and estimate the time for completion of this task to be 6-12 months.</p>
<p>Given that delegate pay is only covering me at ¼ time, this estimate dependent on Namecoin providing additional funding for me through grants or from the community contributing to code bounties.  Delegate pay will enable me to survive until such funding comes through.</p>
<h2>Internet Freedom Alliance Working Group</h2>
<p>There is a need to harmonize standards between BitShares and Namecoin namespace specifications.  There is also potential for collaboration between other groups, such as Tor, I2P, and Freenet.  To facilitate these goals I will create and administer the Internet Freedom Alliance: a working group dedicated to harmonizing standards and increasing collaboration.</p>
<p>The group will largely consist of a mailing list and a Github organization with repositories for formal specifications, unit tests, and reference implementations.  A RFC process for proposing revisions and new standards will be created based on Bitcoin&#8217;s BIP workflow and existing standards will receive a formal write up.  The IFA-WG will register as a non-profit legal entity to receive funding from member projects as well as donations.</p>
<h2>.p2p Prelaunch</h2>
<p>I&#8217;ve worked out a general plan for name reservations, pricing, and other details during my week at BitShares HQ.  However, as the BitShares team can attest, the reasoning for each decision is complex and the full plan will be outlined at a later date.  However, we will create an experimental second-level-domain, x.p2p and progressively enhance it&#8217;s capabilities.  This will allow us to test software, such as the middleware and browser add-ons.</p>
<p>I will also work with DNS service providers to build an abstraction layer that will allow registrars to purchase domains using their existing infrastructure.</p>
<h2>Beyond 2015</h2>
<p>The majority of the work outlined above should be finished by the end of 2015.  I suspect that over the year, the core development team will be able to switch their focus to features like transaction anonymity, advanced light clients, and setting up the launch of .p2p in early or mid 2016.</p>
<p>It may, at some point, make sense to create a new DAC optimized as a trusted base. There is concern that BTS might not be perceived as “neutral” enough to be a trusted base for core internet infrastructure. It would also make sense to increase the time interval between blocks.  Finally, it may be easier to adopt ZeroCash and other future proposals using a different codebase.  However, in the near term, setting up 101 new delegates, getting adoption in the exchanges, and setting up a competing BitUSD market is just not feasible.</p>
<p>Should it end up being the case that we cannot use the BitShares blockchain, we can always share drop onto BTS for both the share allocation and the initial name ownership. As long as BTS holders benefit from selling the namespace in what eventually becomes a secure decentralized DNS solution, everyone should be satisfied.</p>
<p>It&#8217;s impossible to predict the future, and we should evaluate my contributions and potential future as a delegate when 2016 rolls around.  The entire crypto market could tank, or someone could exploit a design flaw so severe that we the couldn&#8217;t recover.  Hopefully, I will find external funding, I could be accepted into a Ph.D. program and comfortably work part time for BitShares, or BitShares could explode and I could support myself on delegate pay entirely.</p>
<h1>Conclusion</h1>
<p>I&#8217;ve laid out a comprehensive plan for both near-term and long-term adoption of .p2p.  I outlined cost estimates for the near-term future and options should the funding situation change.  In the future, it may make more sense to design a currency tailored specifically as a trusted base and share drop on BitShares.  With your support, I believe we can enable universal .p2p resolution thus ending the threat of domain name seizures and making anonymous networks usable.</p>
<hr />
<h1>Donation Addresses</h1>
<ul>
<li>BitShares ID: indolering</li>
<li>Bitcoin Donation: 1DKG4wMB4fQfgB5W5qFjrtMXHkZJKL37ua</li>
<li>Namecoin Donation: N3ramRzMjm791aGUyg5DQFSupFijVwCCEf</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://www.indolering.com/universal-p2p-resolution/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">668</post-id>	</item>
		<item>
		<title>DNSChain Routers: Still Broken</title>
		<link>https://www.indolering.com/dnschain-routers/</link>
		<comments>https://www.indolering.com/dnschain-routers/#respond</comments>
		<pubDate>Wed, 14 Jan 2015 01:02:43 +0000</pubDate>
		<dc:creator><![CDATA[Zachary Lym]]></dc:creator>
				<category><![CDATA[Cryptocurrencies]]></category>

		<guid isPermaLink="false">http://www.indolering.com/?p=686</guid>
		<description><![CDATA[Since my original critique, DNSChain has moved to claiming that their client/server model does not rely on third party trust because they think that they can get Namecoin installed into home routers and personal PlugPCs which &#8220;everyone&#8221; will configure their clients to connect back to.  This is infeasible and unnecessarily ties their security model to a regressive form of third [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="www.indolering.com/dnschain-is-harmful">Since my original critique</a>, DNSChain has moved to claiming that their client/server model does not rely on third party trust because they think that they can get Namecoin installed into home routers and personal <a href="http://en.wikipedia.org/wiki/Plug_computer">PlugPCs</a> which &#8220;everyone&#8221; will configure their clients to connect back to.  This is infeasible and unnecessarily ties their security model to a regressive form of third party trust.</p>
<p><span id="more-686"></span></p>
<h2>Update</h2>
<p>I&#8217;ve written a more-up-to-date technical overview of <a href="http://www.indolering.com/okturtles-dnschain-unblock-us">okTurtles, DNSChain, and Unblock.us</a>. While the security model for DNSChain has improved, they are still misrepresenting the security parameters of their software.</p>
<p>I&#8217;m leaving this here because they are still selling PlugPCs as a valid solution to eliminating third party trust from their security model.</p>
<h1>Background</h1>
<p>DNSChain is essentially a DNS server which reads data from the Namecoin blockchain.  It is highly duplicative of NMControl (Namecoin&#8217;s chosen middleware) with the exception that it initially focused on a pure client/server model.  Any client/server model introduces third party trust, seriously degrading the trustless nature of the Nakamoto blockchain and introducing MITM attacks.</p>
<p>We actually don&#8217;t have a problem adding this functionality to NMControl. The problem is that DNSChain&#8217;s lead developer is claiming that DNSChain doesn&#8217;t introduce third-party trust and is &#8220;MITM Proof.&#8221;  Their rationale is that if someone isn&#8217;t capable of running their own server, a friend would run one for them.  This is impossible to scale and is akin to claiming that everyone would run their own email server.  They tried to dodge the fact that they effectively introduced third party trust by using the term &#8220;second-party trust.&#8221;</p>
<p>I <a href="www.indolering.com/dnschain-is-harmful">wrote a blog piece</a> and pushed DNSChain to use lightweight clients instead.  The author came back with a new security model which is similarly difficult to scale and effectively introduces third party trust.  This post analyzes their new security model.</p>
<h2>Home Based Servers: Unnecessary and Infeasible</h2>
<p>DNSChain&#8217;s lead author responded with <a href="http://www.indolering.com/dnschain-is-harmful#comment-5574">a comment</a> giving an update to their security model, excerpted below.</p>
<blockquote><p>The vast majority (“99%” :-P) of families in Internet-connected countries own and run their own servers (which run DNS software like BIND, etc.), and they do so without realizing they are doing it.</p>
<p>This is nothing out of the ordinary, and it is the model we see working for DNSChain as well. This is what we mean by trusting themselves or a “first party”. The use of the word “friend” refers to an _interim period_ before DNSChain appears on home routers.</p></blockquote>
<p><em>This &#8220;friends&#8221; terminology is weasel wording and it misrepresents their security model. That&#8217;s not okay, even if it&#8217;s not a permanent part of their plan.</em></p>
<p>This modified plan involves an infeasible and insecure scheme that turns every home router into a server and the anchor of our security systems.  Everyone will have to buy a PlugPC or a router with Namecoin installed which their clients can connect back to.  <a href="http://arstechnica.com/business/2015/04/10-of-americans-have-a-smartphone-but-no-other-internet-at-home/">10% of American&#8217;s don&#8217;t have a home internet connection</a> and the third world will <a href="http://singularityhub.com/2014/03/07/cheap-devices-like-mozillas-25-smartphone-to-bring-more-of-developing-world-online/">likely skip out on wired internet</a> entirely.  Even if we ignore the feasibility of this plan, DNSChain still offers no improvements to usability, inter-operability, or security over lightweight resolvers.</p>
<p>The Namecoin development team also has aspirations for lightweight resolvers to be bundled with browsers and operating systems.  The difference is that users <strong>never</strong> have to configure a client to talk to a trusted server or any kind of maintenance, it will <em>just work.</em>  <strong>DNSChain&#8217;s client/server model will always be more complex than the equivalent scenario for a lightweight resolver</strong>:</p>
<ul>
<li>Effort required to manually install a lightweight resolver &lt; effort required to maintain a DNSChain server + install and setup client software.</li>
<li>Effort required to use lightweight resolver bundled with browser/operating system &lt; effort required to configure DNSChain client software to use router that bundles DNSChain.</li>
</ul>
<p>Even if we ignore the fact that lightweight resolvers will always be easier to use than DNSChain&#8217;s client/server model, this modified plan would never scale outside of a single percentage point of the population.  Turning routers into trusted servers sounds like something cooked up by a sys-admin who thinks s/he can make server maintenance &#8220;usable&#8221;, which won&#8217;t happen.</p>
<p>Practically speaking, routers are <strong>not</strong> like normal servers and they certainly cannot handle a full Namecoin node.  Normal routers aren&#8217;t going to accommodate a full Namecoin node, so every existing router would need to be replaced.  By asserting that routers will adopt DNSChain and run a full-node Namecoin install, Greg is not just asserting that router vendors will adopt their software but also add the processing and storage capacities of a small server.  Even then, home users would have to<strong> regularly increase disk capacity since the Namecoin blockchain increases in size over time</strong>,<strong> thus DNSChain&#8217;s revised plan requires lightweight resolvers <em>anyway</em></strong>.</p>
<p>The fact of the matter is that no one is going to operate a server from their home. Residential internet connections are flaky, I have to reset my modem and router several times a year.  What happens when their connections fails while the user is not at home or when a roommate bogs down the connection with a torrent?  Nor does everyone have a home with a stable internet connection: rural users rely on long-haul wifi or satellite links.  Furthermore, the third-world is coming online using their mobile devices, and they often lack a home router.  Setting up wifi passwords is a major challenge for many users, there is no way users are going to manage the complexities of maintaining this client/server model.</p>
<p>Furthermore, home routers are <strong>not</strong> the bedrock we should be anchoring our security too.  The market ensures that consumer routers are produced as cheaply as possible and they are rarely ever updated.  Even commercial grade routers are prime targets for the NSA&#8217;s efforts to recover VPN keys.  DNSChain is assuming that router manufacturers are going to start producing rock-solid routers that requires zero maintenance.</p>
<p>Finally, <strong>anyone without a home internet connection will need to trust someone else</strong>.  The problem with DNSChain&#8217;s modified plan is that it operates under the assumption that the next generation netizens will look like the last generation.  But that&#8217;s not the case, time spent on mobile internet devices has already eclipsed that of desktops.  The third world is leapfrogging traditional land-line phones and going straight to cell phones, and they will likely leapfrog the first world by <a href="http://singularityhub.com/2014/03/07/cheap-devices-like-mozillas-25-smartphone-to-bring-more-of-developing-world-online/">coming online through smartphones</a>.  Finally, <a href="http://en.wikipedia.org/wiki/PCell_%28telecommunications%29">some really people</a> figured out how to take the noise out of <a href="http://en.wikipedia.org/wiki/Noisy-channel_coding_theorem">Shannon&#8217;s information channel theorem</a>, which means that wireless internet is about to get reall, <em>really</em> fast. So, even with magical routers and and 100% uptake amongst those with residential internet connections, <strong>the majority of the worlds population will need to trust someone else</strong>.</p>
<p><strong>Lightweight resolvers <em>always</em> beat out DNSChain&#8217;s client/server model</strong>, even if the server part is magically taken care of by bundling DNSChain with home routers.  That magic also requires making <strong>residential internet connections and routers rock solid, which won&#8217;t happen in a market dictated by prices.</strong> Lightweight clients are part of the magic requires to load Namecoin on routers would require, so<strong> DNSChain requires lightweight resolvers anyway</strong>.   And, finally, even with all that magic, <strong>DNSChain would still render vast swaths of the population dependent upon the worst kind of third party trust</strong>.</p>
<p>FWIW, in a follow-up discussion on IRC, Greg was open to lightweight resolvers but skeptical of their feasibility.   The problem is that building a bullet proof router and getting everyone to buy one or convincing router manufacturers to increase their build cost are two scenarios that are a few orders-of-magnitude more difficult than building advanced lightweight resolvers.  I&#8217;d be happy to welcome Greg in if he wants to join us, but <strong>DNSChain is just diverting resources from projects and people who are proposing real solutions to these problems.</strong>  Even then, he&#8217;s got to prove himself capable of building something that can actually work.</p>
<p>It&#8217;s tough to knife one&#8217;s own baby, I&#8217;m having to do that to some extent with Speech.is: the legal assumptions under which I created it two years ago just doesn&#8217;t hold up anymore and the additional effort isn&#8217;t worth it.  Creating a DNS suffix with threshold DNSSEC is <a href="www.indolering.com/dnschain-vs-real-interop">a better zero-install/zero-config alternative</a>.  Namecoin devs are still skeptical but that&#8217;s what BitShares wants me to help them accomplish with .p2p.  But it&#8217;s just a pivot, our early plans are rarely wholly correct.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.indolering.com/dnschain-routers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">686</post-id>	</item>
	</channel>
</rss>
