<?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>Owl’s Portfolio</title>
	<atom:link href="http://www.owlfolio.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.owlfolio.org</link>
	<description></description>
	<lastBuildDate>Mon, 12 Dec 2011 23:52:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>The ethics of preventing third-party net filtering</title>
		<link>http://www.owlfolio.org/research/ethics-filter-prevention/</link>
		<comments>http://www.owlfolio.org/research/ethics-filter-prevention/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 23:52:26 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1182</guid>
		<description><![CDATA[I haven&#8217;t posted anything research-related in a while because I&#8217;ve been on a project that I&#8217;m not supposed to talk about till it&#8217;s done, and it&#8217;s not done yet. I can say, though, that it&#8217;s about ways to get around &#8230; <a href="http://www.owlfolio.org/research/ethics-filter-prevention/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t posted anything research-related in a while because I&#8217;ve been on a project that I&#8217;m not supposed to talk about till it&#8217;s done, and it&#8217;s not done yet.  I can say, though, that it&#8217;s about ways to get around country-scale filtration of the Internet.  I&#8217;m writing it up now, starting with the threat model, as you do:</p>

<blockquote>
  <p><a style="text-decoration:line-through" href="http://downlode.org/Etext/alicebob.html">Alice</a> <a href="http://www.livius.org/cao-caz/carthage/carthage.html">Arishat</a> wishes to publish things for <a href="http://penelope.uchicago.edu/Thayer/E/Roman/Texts/Plutarch/Lives/Brutus*.html">Brutus</a> to read. <a href="http://www.roman-empire.net/republic/cato-e.html">Cato</a> does not approve of what Arishat has to say, and seeks to prevent her from publishing anything.</p>
</blockquote>

<p>Most online discussion of &#8220;censorship&#8221; starts from the premise that Cato is automatically in the wrong here.  That&#8217;s one of the <a href="http://www.cypherpunks.to/faq/cyphernomicron/chapter4.html#7">cypherpunk premises</a> that underpin most discussion of <em>theoretical</em> Internet security.  I want to play devil&#8217;s advocate today, though, and explore circumstances where we might choose to support Cato.  In the offline world, we trade off &#8220;free speech&#8221; against all sorts of other values every day:</p>

<p><span id="more-1182"></span></p>

<p><em>Cato is a government. Arishat is criticizing its policies.</em> &#8220;Core political speech&#8221; receives consistent, strong protection from US courts, even when large groups wish it didn&#8217;t (e.g. <a href="http://en.wikipedia.org/wiki/Flag_Desecration_Amendment">flag desecration</a>, <a href="http://skokielibrary.info/s_info/in_biography/attempted_march/index.asp">neofascist marches</a>).</p>

<p><em>Cato is a policeman on duty in a public place. Arishat is documenting his actions.</em> This is also <a href="http://arstechnica.com/tech-policy/news/2011/09/judge-worries-recording-police-will-lead-to-excessive-snooping-around.ars">mostly agreed</a> to be <a href="http://www.universalhub.com/2011/court-says-state-law-banning-recording-police-offi">protected by the First Amendment</a>, but the police don&#8217;t like it and they still <a href="http://www.aclu.org/blog/free-speech/it-legal-photograph-or-videotape-police">try to stop people</a>.</p>

<p><em>Cato holds the copyright on a Great Work of Literature. Arishat has written a parody, homage, fanfic, or critique with extensive quotations, without Cato&#8217;s approval.</em>  US law is broadly sympathetic to Cato; in particular, the <a href="http://brainz.org/dmca-takedown-101/">DMCA takedown mechanism</a> makes it very easy for him to get Arishat&#8217;s works pulled offline.  Arishat <em>may</em> be entitled to claim the <a href="http://fairuse.stanford.edu/Copyright_and_Fair_Use_Overview/chapter9/index.html">fair use</a> exception to copyright, and actual court cases in this area tend to be on the side of parodists.  However, copyright lawsuits are expensive, and Cato is likely to have a lot more money than Arishat does.</p>

<p><em>Arishat and Cato&#8217;s business partnership fell apart. Arishat is now trying to ruin Cato by publishing lies about him.</em> This is <a href="http://www.medialaw.org/Content/NavigationMenu/Public_Resources/Libel_FAQs/Libel_FAQs.htm">defamation</a>, a common-law tort; Cato can file a lawsuit and the courts will force Arishat to publish a retraction, take down the original lies, and/or pay damages.  But there are a lot of restrictions; most importantly, Cato has to prove that what Arishat said was <em>false</em> (the precise legal standard varies by jurisdiction and whether or not Cato is a &#8220;public figure&#8221;), and Arishat can argue that Cato is <a href="http://www.thefirstamendment.org/antislappresourcecenter.html">abusing the courts to suppress debate of an issue of public concern</a>.  This kind of lawsuit is not nearly as expensive as copyright lawsuits, and it&#8217;s more likely that Arishat and Cato have similar amounts of money.  Also, if Arishat posted the lies in a public online forum, Cato <a href="https://www.eff.org/issues/bloggers/legal/liability/230">can&#8217;t sue the <em>forum</em></a>.</p>

<p><em>Cato is a private citizen.  Arishat has posted embarrassing pictures of him online, and then offered to take them back down&#8212;for a fee.</em>  This is blackmail, which is a <em>crime</em> (not just a tort); if the police can be bothered to investigate, Arishat is going to jail.</p>

<p><em>Cato runs an internet forum devoted to gardening.  Arishat is trying to stir up some lulz by posting disturbing cartoon images, categorist &#8220;jokes,&#8221; and/or off-topic logorrhea on random threads.</em>  As long as Cato is a private citizen, it is perfectly <em>legal</em> for Cato to delete everything Arishat posts, on sight; this is considered the same as throwing a drunk asshole out of your house party before they ruin it for everyone else.  Further, all evidence from the last 20+ years of online fora is that if Cato doesn&#8217;t do <em>something</em> to get Arishat to stop, it will become impossible to talk about gardening on his forum.  However, in any case that is not perfectly clear-cut, and some that are, Cato is likely to be subject to <a href="http://www.reddit.com/r/SubredditDrama/comments/ms40t/apparently_moderators_enforcing_the_tos_in_a/">endless, vicious criticism</a> of his decisions.</p>

<p>When Cato is <em>not</em> a private citizen, <a href="http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1765346">his ability to keep the trolls out may be limited</a> lest he use that as an excuse to suppress legitimate arguments.  Similarly, US jurisdictions do not agree whether <a href="http://en.wikipedia.org/wiki/Pruneyard_Shopping_Center_v._Robins">shopping mall owners have to permit people to do anything but shop in their space</a>.</p>

<hr>

<p>We can also write the threat model from Brutus&#8217;s perspective:</p>

<blockquote>
  <p>Brutus wishes to read things Arishat has published.  Cato wishes to prevent Brutus from reading anything he considers inappropriate.</p>
</blockquote>

<p>and produce another list of difficult scenarios:</p>

<p><em>Brutus is a child, Cato is his father.</em> Most people will agree that most children are not ready to experience the full variety of material that adults are expected to handle.  Most people will also agree that no two children are the same and parents are in the best position to judge what their own children are ready for.  However, you can make a strong case that Brutus should be taught certain things whether or not Cato approves, such as reading, arithmetic, and the theory of evolution.</p>

<p><em>Brutus wishes to watch videos of people having sex.  Cato thinks that will turn Brutus into a sexual predator.</em> Cato is wrong; access to pornography <a href="http://mises.org/daily/3080">appears to reduce the incidence of rape</a>, contra an awful lot of fulmination on the subject.</p>

<p><em>Brutus wants to know whether Cato&#8217;s restaurant is any good. Cato would rather he not find any negative reviews.</em> We understand where Cato is coming from but we don&#8217;t see why we should help, unless the negative reviews are being posted by disgruntled ex-employee Arishat, which may be a case of defamation (see above).</p>

<p><em>Cato is the present government of a country that engaged in <a href="http://en.wikipedia.org/wiki/Crime_against_humanity">crimes against humanity</a> quite some time ago.  They are so ashamed of this that they wish to <a href="http://en.wikipedia.org/wiki/Damnatio_memoriae">erase all public legacy</a> of the ruling ideology of the time; therefore they criminalize the use of all its symbols and the sale of related memorabilia.</em> Again, we understand where Cato is coming from, but we suspect the tactic is counterproductive.  Actual instances of this particular Cato all have neo-ideological movements.  Note that in <a href="http://en.wikipedia.org/wiki/LICRA_vs._Yahoo">at least one case</a>, one such country has tried to make these laws extend to actions committed on foreign soil (but visible to its nationals).</p>

<p><em>Brutus wants to know whether or not he should vote for Cato in the next election.  Cato doesn&#8217;t want him to find any news articles about his alleged cocaine habit.</em> Now we&#8217;re back to core political speech.</p>

<hr>

<p>We have a whole bunch of difficult scenarios here, and <em>deciding which scenario we&#8217;re in</em> <a href="http://en.wikipedia.org/wiki/AI-complete">requires human judgement</a>.  A computer (short of a fully fledged human-equivalent AI) cannot, even in principle, tell whether or not the <a href="http://ansuz.sooke.bc.ca/entry/23">string of bits</a> that Arishat posted online is protected free speech.  This is part of why the cypherpunks take the position that Cato is always wrong: that&#8217;s a position you can enforce with code.  However, I would argue that this is too inflexible and leads to undesirable consequences.  Via entirely social means, it is already <a href="http://knowyourmeme.com/memes/streisand-effect">well-nigh impossible to make something completely disappear</a> once it has been put online, and we can easily find cases where that was a <a href="http://twitpic.com/5dabf7">bad thing</a>.</p>

<p>So here&#8217;s a proposal: I conjecture that the following statements of principle are an appropriate synthesis of Arishat, Brutus, and Cato&#8217;s legitimate interests:</p>

<ul>
<li>Arishat should be able to publish online while concealing her offline identity versus anything short of legal process.</li>
<li>Arishat should be able to publish whatever she likes <strong>in cyberspace she controls</strong> <a href="http://www.rcfp.org/handbook/?pg=5-1">without first getting Cato&#8217;s approval</a>.</li>
<li>Brutus should be able to access Arishat&#8217;s publication space, and Cato should be completely unable to tell whether or not he has done this.</li>
<li>Cato should be able to control what appears in <strong>his own</strong> space, however, if he permits <em>any</em> third-party material to appear, his editing or removal of that material should be subject to audit by the general public.</li>
<li>Cato should have some recourse after the fact if Arishat posts something in her own space that is genuinely harmful to his interests, but this should involve a heavyweight, public, transparent process with a disinterested arbiter, such as a lawsuit.</li>
</ul>

<p>Discuss.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/research/ethics-filter-prevention/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>unearthed arcana (music division)</title>
		<link>http://www.owlfolio.org/uncat/unearthed-arcana-music-division/</link>
		<comments>http://www.owlfolio.org/uncat/unearthed-arcana-music-division/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 05:20:43 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1174</guid>
		<description><![CDATA[Some time ago&#8212;I don&#8217;t remember how long precisely&#8212;I started working on a mixtape. I got as far as writing down a bunch of songs in categories, and then I lost interest, and the list has been cluttering up my desk &#8230; <a href="http://www.owlfolio.org/uncat/unearthed-arcana-music-division/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Some time ago&#8212;I don&#8217;t remember how long precisely&#8212;I started working on a mixtape.  I got as far as writing down a bunch of songs in categories, and then I lost interest, and the list has been cluttering up my desk ever since.  The category tags no longer make a great deal of sense and I&#8217;m not even sure who sings some of these songs anymore, but if I put it into the computer then I can get rid of the paper cluttering up my desk, and maybe the magic of the internets will do something with it.</p>

<p><span id="more-1174"></span></p>

<p>Song links go to Youtube.</p>

<h2>the man</h2>

<ul>
<li><em><a href="http://www.youtube.com/watch?v=qqPkRcRbLwg">Working Undercover for the Man</a></em> (They Might Be Giants)</li>
<li><em><a href="http://www.youtube.com/watch?v=psB0cidB5bg">Clampdown</a></em> (The Clash)</li>
<li><em><a href="http://www.youtube.com/watch?v=tIekamBDiAw">Born in the USA</a></em> (Bruce Springsteen)</li>
<li><em><a href="http://www.youtube.com/watch?v=f5M_Ttstbgs">For What It&#8217;s Worth</a></em> (Buffalo Springfield)</li>
<li><em><a href="http://www.youtube.com/watch?v=pPFJDVKpB7s">The Dogs of War</a></em> (Pink Floyd)</li>
<li><em><a href="http://www.youtube.com/watch?v=vAI2QOBMlTA">Operation: Mindcrime</a></em> (Queensrÿche) (the song, not the whole album)</li>
<li><em><a href="http://www.youtube.com/watch?v=mtPPHbWDtZ8">Republican Party Reptile</a></em> (Big Country)</li>
<li><em><a href="http://www.youtube.com/watch?v=11g5Y5YnDp0">I Should Be Allowed to Think</a></em> (TMBG)</li>
<li><em><a href="http://www.youtube.com/watch?v=4U-p4aN66qI">Mothers of the Disappeared</a></em> (U2)</li>
</ul>

<h2>stalker</h2>

<ul>
<li><em><a href="http://www.youtube.com/watch?v=SkYnFk1Gpl0">Where Your Eyes Don&#8217;t Go</a></em> (TMBG)</li>
<li><em>Debbie</em> (Throwing Toasters)</li>
<li><em><a href="http://www.youtube.com/watch?v=VTNqyJXTako">Deadline</a></em> (Blue Öyster Cult)</li>
<li><em><a href="http://www.youtube.com/watch?v=zz920WOZnSc">Too Young for the Blues</a></em> (Ella Fitzgerald)</li>
<li><em><a href="http://www.youtube.com/watch?v=u6bHXjWZjtY">Barrel Of A Gun</a></em> (Guster)</li>
<li><em>DWDTG</em> (?)</li>
<li><em><a href="http://www.youtube.com/watch?v=_bXKniVEPDY">Hall of Heads</a></em> (TMBG)
(best recording I could find, sorry)</li>
</ul>

<h2>solipsist</h2>

<ul>
<li><em><a href="http://www.youtube.com/watch?v=EHhNFiQqz0A">Center of Attention</a></em> (Guster)</li>
<li><em><a href="http://www.youtube.com/watch?v=9A1jLc71tlk">World Leader Pretend</a></em> (REM)</li>
<li><em><a href="http://www.youtube.com/watch?v=s9CjnDufqeQ">Don&#8217;t Worry About the Government</a></em> (Talking Heads)</li>
</ul>

<h2>game</h2>

<ul>
<li><em>Mistakes Were Made</em> (<a href="http://stefangagne.wordpress.com/">Stefan &#8220;Twoflower&#8221; Gagne</a>)</li>
<li><em>Wear My Face</em> (Cats Laughing)</li>
<li><em><a href="http://www.youtube.com/watch?v=M2VBmHOYpV8&#038;ob=av2e">Policy of Truth</a></em> (Depeche Mode)</li>
<li><em>Chains</em> (<a href="http://www.brothermusic.com/">Brother</a>)</li>
<li><em><a href="http://www.youtube.com/watch?v=ZB_2oIKUVks">Welcome to the Machine</a></em> (Pink Floyd)</li>
<li><em>Black Knight&#8217;s Work</em> (Cats Laughing)</li>
<li><em><a href="http://www.youtube.com/watch?v=zqIclJjrCgU">Knight Moves</a></em> (Suzanne Vega)</li>
</ul>

<h2>fight back</h2>

<ul>
<li><em>How the Mighty Fall</em> (The Alarm)</li>
<li><em><a href="http://www.youtube.com/watch?v=05nx5cjxfUg">Power Underneath Despair</a></em> (Blue Öyster Cult)</li>
<li><em><a href="http://www.youtube.com/watch?v=ERPgAQGs2I8">Gimme Some Truth</a></em> (Pearl Jam)</li>
<li><em><a href="http://www.youtube.com/watch?v=VMW7YjrJ-Ag">Land of Confusion</a></em> (Genesis)</li>
<li><em><a href="http://www.youtube.com/watch?v=onRobFQchS0">Masters of War</a></em> (Bob Dylan)</li>
<li><em><a href="http://www.youtube.com/watch?v=SHhrZgojY1Q">Won&#8217;t Get Fooled Again</a></em> (The Who)</li>
<li><em>Fly Away</em> (Brother)</li>
</ul>

<h2>misc</h2>

<ul>
<li><em><a href="http://www.youtube.com/watch?v=cN0mKD8wnvo">All That She Wants</a></em> (Ace of Base)</li>
<li><em><a href="http://www.youtube.com/watch?v=U24OvWVdVwA">Put Your Hand Inside the Puppet Head</a></em> (TMBG)</li>
<li><em>Debt Collector</em> (?)</li>
<li><em>Get Together (HST intro)</em> (?)</li>
<li><em>Master of Puppets (instrumental)</em> (probably Apocalyptica)</li>
<li><em><a href="http://www.youtube.com/watch?v=P0p5g0EfWCc">Little Too Clean</a></em> (Soul Asylum)</li>
</ul>

<p>My current tastes say there should be less pop and more goth. And some electronica. And probably also some Cake.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/uncat/unearthed-arcana-music-division/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>test your file locking</title>
		<link>http://www.owlfolio.org/possibly-useful/test-your-file-locking/</link>
		<comments>http://www.owlfolio.org/possibly-useful/test-your-file-locking/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 19:23:41 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Possibly Useful]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1160</guid>
		<description><![CDATA[This PUBLIC SERVICE ANNOUNCEMENT is brought to you by the I JUST WASTED AN HOUR ON THAT Foundation: Do you suffer from mysteriously hanging autotools processes? Or perhaps other mysteriously hanging processes? If so, you may have a problem with &#8230; <a href="http://www.owlfolio.org/possibly-useful/test-your-file-locking/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This PUBLIC SERVICE ANNOUNCEMENT is brought to you by the I JUST WASTED AN HOUR ON THAT Foundation:</p>

<p>Do you suffer from mysteriously hanging <a href="http://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html">autotools</a> processes? Or perhaps other mysteriously hanging processes? If so, you may have a problem with your file locking, and the IJWAHOT Foundation recommends you compile and run <a href="/scratchpad/test_locks.c">this program</a> on the computer with the problem, preferably under <a href="http://linux.die.net/man/1/strace">strace</a> or equivalent.  If it, too, hangs, then you do indeed have a problem with your file locking.  The Foundation does not presently know the <em>cause</em> of this problem, but we suspect that it is <a href="http://en.wikipedia.org/wiki/Network_File_System_%28protocol%29">NFS</a>&#8217;s fault somehow.  If you do know the cause of this problem, we would love to hear about it in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/possibly-useful/test-your-file-locking/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Breaking things every six weeks</title>
		<link>http://www.owlfolio.org/htmletc/breaking-things-every-six-weeks/</link>
		<comments>http://www.owlfolio.org/htmletc/breaking-things-every-six-weeks/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 20:54:42 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[HTML &c]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1124</guid>
		<description><![CDATA[Attention conservation notice: 900 words of inside baseball about Mozilla. No security content whatsoever. The Mozilla Project has been taking a whole lot of flak recently over its new &#8220;rapid release cycle&#8221;, in which there is a new major version &#8230; <a href="http://www.owlfolio.org/htmletc/breaking-things-every-six-weeks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote>
  <p>Attention conservation notice: 900 words of inside baseball about Mozilla.  No security content whatsoever.</p>
</blockquote>

<p>The <a href="http://www.mozilla.org/about/">Mozilla Project</a> has been taking a whole lot of flak recently over its new &#8220;<a href="http://blog.mozilla.com/futurereleases/2011/07/19/every-six-weeks/">rapid release cycle</a>&#8221;, in which there is a new <em>major</em> version of Firefox (and Thunderbird) every six weeks, and it potentially breaks all your extensions.  Especially the big complicated extensions like <a href="http://getfirebug.com/">Firebug</a> that people <em>cannot live without</em>.  One might reasonably ask, what the hell?  Why would any software development team in their right mind&#8212;especially a team developing a critical piece of system infrastructure, which is what Web browsers are these days, like it or not&#8212;inflict unpredictable breakage on all their users at six-week intervals?</p>

<p><span id="more-1124"></span></p>

<p>The first thing to know is that Firefox&#8217;s core developers are really focused on making the Web better.  If we weren&#8217;t, we would be hacking on something other than a Web browser.  The old release cycle was way too slow for us to do that effectively; as Jono Xia describes in his blog post &#8220;<a href="http://jonoscript.wordpress.com/2011/07/18/its-not-about-the-version-numbers-its-about-extension-compatibility-and-long-term-support/">It&#8217;s Not About the Version Numbers</a>,&#8221; anything we did might not get out to end users for <em>over a year</em>.  When David Baron fixed <a href="http://dbaron.org/mozilla/visited-privacy">visited-link history sniffing</a>, he patched Firefox first&#8212;but Chrome and Safari shipped the change before we did.  </p>

<blockquote>
  <p>You should read Jono&#8217;s post now.  I&#8217;ll be here when you get back.</p>
</blockquote>

<p>Shipping new versions of the browser every six weeks is clearly a better way to improve the Web rapidly, than shipping a new version only once a year or so.   But what&#8217;s stopping the Mozilla team from shipping a new batch of under-the-hood improvements to the Web every six weeks without breaking anything?  Why do we <em>need</em> to break things?</p>

<p>Well, we tried not breaking things for ten years, give or take, and it didn&#8217;t work. The second thing to know is that the core browser (&#8220;Gecko&#8221;) suffers from enormous technical debt.  Like any large, 15-year-old piece of software, we have code in abundance that was written under too much time pressure to get it right, was written so long ago that nobody remembers how it works, isn&#8217;t comprehensively tested, or any combination of the above.  We also have major components that reasonably seemed like good ideas at the time, but have since proven to be a hindrance (XUL, XBL, XPConnect, etc).  We have other major components that should have been recognized as bad ideas at the time, but weren&#8217;t (XPCOM, NSPR, etc).  And we have code for which there is no excuse at all (Firefox still had code using the infamous <a href="http://www.jwz.org/blog/2011/07/mork-keeps-on-giving-when-the-database-worms-eat-into-your-murder-trial/">&#8220;Mork&#8221; file format</a> until just this summer, and I understand it&#8217;s still live in Thunderbird).</p>

<p>It gets worse: many of the bugs <em>can&#8217;t</em> be fixed without breaking stuff.  For example, take <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=234856">bug 234856</a>.  That&#8217;s a seven-year-old <em>display glitch</em>.  What could possibly be an excuse for not fixing a simple display glitch for seven years?  Well, the root cause of that bug (described more clearly in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=643041">bug 643041</a>, where the actual fix is posted) is an error in an XPCOM interface that, until we decided we weren&#8217;t going to do this anymore (post-FF4), was &#8220;frozen&#8221;&#8212;it could not be changed <em>even though it was wrong</em>, precisely so that extensions could depend on it not changing.  There are <em>thousands</em> of XPCOM interfaces, and extensions can use <em>all</em> of them. That&#8217;s a great strength: it lets Firefox extensions do far more than, say, Chrome extensions can.  That&#8217;s also a huge problem for people trying to make the core better.  (Only about 200 of these interfaces were permanently frozen, but pre-FF4 we tried to avoid changing even the un-frozen ones as much as possible.)  You&#8217;ll notice that the change in bug 643041 makes it <em>easier</em> to write extensions that manipulate SSL certificates, because now there&#8217;s just <em>one</em> <code>nsIX509Cert</code> interface, not three.  But taking away <code>nsIX509Cert2</code> and <code>nsIX509Cert3</code> breaks code that was using them.</p>

<p>Some bugs can&#8217;t even be fixed without breaking Web sites.  Any time Gecko doesn&#8217;t do the same thing Webkit and/or IE do, we (and the Webkit and IE people) want to make that difference go away&#8212;but to do that, at least one of the three has to change, and there may be sites out there relying on the behavior that just got taken away.  In some cases, adding <em>features</em> breaks the web.  For instance, if you write &#8216;<code>&lt;element on<i>event</i>="do_something()"&gt;</code>&#8217; directly in your HTML, when the event fires, the JavaScript interpreter will try to call a <i>method of <code>element</code>&#8217;s DOM API</i> named <code>do_something</code> before it tries to call a global function with that name.  Which means that adding DOM methods to any HTML element potentially breaks websites.  (This is not a problem if you assign to <code>element.on<i>event</i></code> from a <code>&lt;script&gt;</code>.)</p>

<p>This is why Mozilla core developers can seem so callous to the needs of extension and website developers built on Gecko.  We know that we depend on both groups for our continued relevance&#8212;a browser is no use at all with no websites to browse, and without extensions there is not much reason to pick one browser over another.  But we feel that <em>right now</em> it is more important to fix the problems with our existing platform than to provide stability.  In the long run, we will have a better platform for both groups to work with.  And in the long run, stability will come back.  There are many bugs to fix first, but there are not infinitely many bugs, even if it seems like it sometimes. Having said that, there are some things we could be doing right now to make extension and website developers&#8217; lives better &#8230; but I&#8217;m going to save them for the next post.  900 words is enough.</p>

<blockquote>
  <p>Note to commenters: I know lots of people are unhappy with the UX changes post-FF3.6, but let&#8217;s keep this to discussion of API breakage, please.  </p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/htmletc/breaking-things-every-six-weeks/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Icons of the Future City</title>
		<link>http://www.owlfolio.org/fiction/icons-of-the-future-city/</link>
		<comments>http://www.owlfolio.org/fiction/icons-of-the-future-city/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 01:07:46 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Fiction]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=854</guid>
		<description><![CDATA[Way back at the 2010 Mozilla Summit, one of the keynote speakers showed us an amazing demo flythrough of a 3D-rendered futuristic city, with embedded video, tweets, and the like, all running live inside a Firefox 4 beta thanks to &#8230; <a href="http://www.owlfolio.org/fiction/icons-of-the-future-city/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Way back at the <a href="https://wiki.mozilla.org/Summit2010">2010 Mozilla Summit</a>, one of the keynote speakers showed us an amazing <a href="http://www.youtube.com/watch?v=VUOIS3jtD8Y">demo flythrough</a> of a 3D-rendered futuristic city, with embedded video, tweets, and the like, all running live inside a <a href="http://www.mozilla.com/firefox/beta/">Firefox 4</a> beta thanks to awesome new tech like <a href="http://learningwebgl.com/cookbook/index.php/WebGL:_Frequently_Asked_Questions">WebGL</a> and <a href="https://wiki.mozilla.org/JaegerMonkey">JägerMonkey</a>. (Note: in the linked video, the city only appears about a minute in.) That’s not what I want to talk about, though.</p>

<p>It occurred to me while I was watching, that there is a standard futuristic city used in demos like this one.  It’s night.  You can’t see the ground.  Skyscrapers stretch all the way to the horizon.  Said skyscrapers are glass oblongs, for the most part; this demo mixed it up quite a bit with interesting cross-sections, but still had hardly any ornamentation, terracing, or what-have-you.  All the skyscrapers’ windows are lit up.  There may be flying vehicles between or around the towers, but there is no sign of any other type of transportation.  It is, in short, the future of the <a href="http://www.unknown.nu/futurism/">Futurists</a> of the nineteen-teens, the city of <a href="http://en.wikipedia.org/wiki/Metropolis_%28film%29">Metropolis</a>, <a href="http://www.imdb.com/title/tt0083658/">Blade Runner</a>, and <a href="http://www.williamgibsonbooks.com/books/neuromancer.asp">Neuromancer</a>.</p>

<p>Now the thing is, no city in the real world has ever looked like that.  Even in the densest and most skyscraper-ful urban areas—have a look at these aerial videos of <a href="http://www.youtube.com/watch?v=9_MqERF6tIY">Manhattan</a> and <a href="http://www.youtube.com/watch?v=kwiEuK_4xNE">Hong Kong</a>, for instance—there are buildings that are less than ten stories tall (these are in fact the majority in Manhattan, although possibly not in Hong Kong); there are parks and other open spaces; and by no means are all of the buildings boring oblongs.  Furthermore, people doing actual urban design argue, vehemently, over whether or not dense skyscraper-ful cities are best (e.g.: <a href="http://www.futureagenda.org/?p=1001">pro</a>, <a href="http://www.newgeography.com/content/001722-urban-legends-why-suburbs-not-dense-cities-are-future">con</a>) and I think nobody would argue, anymore, that open space is unnecessary. </p>

<p>And yet, when we want an icon of the city of the Future, the Futurists’ vision is what we turn to.  Why?  Perhaps because it’s instantly recognizable, or because it’s easy to build 3D models for.  But I claim this is causing this discredited vision to occupy a share of the casual imagination that it does not deserve anymore.  It crowds out other visions with its readiness to hand.  Let’s invent some new icons for the future city.  Let’s make the <em>next</em> demo flythrough be of something like <a href="http://visions2200.com/Images/JeanPattou1984.jpg">this</a> or <a href="http://www.acceleratingfuture.com/michael/blog/images/port%20city.jpg">this</a> or <a href="http://www.milkytea.com/blog/wp-content/uploads/2009/03/future-city3.jpg">this</a>.  (But watch out for the just-as-discredited “<a href="http://bookofjabe.blogspot.com/2008/06/03-title-world-inside-author-robert.html">Radiant City</a>” vision, please.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/fiction/icons-of-the-future-city/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Zany Scheme for Compact Secure Hashes</title>
		<link>http://www.owlfolio.org/htmletc/zany-scheme-compact-hashes/</link>
		<comments>http://www.owlfolio.org/htmletc/zany-scheme-compact-hashes/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 19:29:03 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[HTML &c]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1097</guid>
		<description><![CDATA[Lots of current and near-future tech relies heavily on secure hashes as identifiers; these are usually represented as hexadecimal strings. For instance, in a previous post I threw out the strawman h: URN scheme that looks like this: &#60;!-- jQuery &#8230; <a href="http://www.owlfolio.org/htmletc/zany-scheme-compact-hashes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Lots of current and near-future tech relies heavily on <a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function">secure hashes</a> as identifiers; these are usually represented as hexadecimal strings.  For instance, in a <a href="http://www.owlfolio.org/research/securing-the-future-net/">previous post</a> I threw out the strawman <code>h:</code> URN scheme that looks like this:</p>

<pre><code> &lt;!-- jQuery 1.5.2 --&gt;
 &lt;script src="h:sha1,b8dcaa1c866905c0bdb0b70c8e564ff1c3fe27ad"&gt;&lt;/script&gt;
</code></pre>

<p>Now the problem with this is, these hexadecimal strings are inconveniently long and are only going to get longer.  <a href="http://en.wikipedia.org/wiki/SHA-1">SHA-1</a> (as shown above) produces 160-bit hashes, which take 40 characters to represent in hex.  That algorithm is looking kinda creaky these days; the most convenient replacement is <a href="http://en.wikipedia.org/wiki/SHA-2">SHA-256</a>.  As the name implies, it produces 256-bit hashes, which take 64 characters to write out in hex.  The next generation of secure hash algorithms, currently <a href="http://en.wikipedia.org/wiki/NIST_hash_function_competition">under development at NIST</a>, are also going to produce 256-bit (and up) hashes.  The inconvenience of these lengthy hashes becomes even worse if we want to use them as <em>components</em> of a URI with structure to it (as opposed to being the entirety of a URN, as above).  Clearly some encoding other than hex, with its 2x expansion, is desirable.</p>

<p>Hashes are incompressible, so we can&#8217;t hope to pack a 256-bit hash into fewer than 32 characters, or a 160-bit hash into fewer than 20 characters.  And we can&#8217;t just dump the raw binary string into our HTML, because HTML is not designed for that&#8212;there is no way to tell the HTML parser &#8220;the next 20 characters are a binary literal&#8221;.  However, what we <em>can</em> do is find 256 printable, letter-like characters within the first few hundred Unicode code points and use them as an encoding of the 256 possible bytes.  Continuing with the jQuery example, that might look something like this:</p>

<pre><code>&lt;script src="h:sha1,пՎЦbηúFԱщблMπĒÇճԴցmЩ"&gt;&lt;/script&gt;&lt;!-- jQuery 1.5.2 --&gt;
</code></pre>

<p>See how we can fit the annotation on the same line now?  Even with sha256, it&#8217;s still a little shorter than the original in hex:</p>

<pre><code>&lt;!-- jQuery 1.5.2 --&gt;
&lt;script src="h:sha256,ρKZհνàêþГJEχdKmՌYψիցyԷթνлшъÁÐFДÂ"&gt;&lt;/script&gt;
</code></pre>

<p>Here&#8217;s my proposed encoding table:</p>

<pre><code>    0              0 1              1
    0123456789ABCDEF 0123456789ABCDEF
 00 ABCDEFGHIJKLMNOP QRSTUVWXYZÞabcde
 20 fghijklmnopqrstu vwxyzþ0123456789
 40 ÀÈÌÒÙÁÉÍÓÚÂÊÎÔÛÇ ÄËÏÖÜĀĒĪŌŪĂĔĬŎŬÐ
 60 àèìòùáéíóúâêîôûç äëïöüāēīōūăĕĭŏŭð
 80 αβγδεζηθικλμνξπρ ςστυφχψωϐϑϒϕϖϞϰϱ
 A0 БГДЖЗИЙЛПФЦЧШЩЪЬ бгджзийлпфцчшщъь
 C0 ԱԲԳԴԵԶԷԸԹԺԻԽԾԿՀՁ ՂՃՄՅՆՇՈՉՊՋՌՍՎՐՑՒ
 E0 աբգդեզէըթժիխծկհձ ղճմյնշոչպջռսվրցւ
</code></pre>

<p>All of the characters in this table have one- or two-byte encodings in UTF-8.  Every punctuation character below U+007F is given special meaning in some context or other, so I didn&#8217;t use any of them.  This unfortunately does mean that only 62 of the 256 bytes get one-byte encodings, but <em>storage</em> compactness is not the point here, and it&#8217;s no worse than hex, anyway.  What this gets us is <em>display</em> compactness: a 256-bit hash will occupy exactly 32 columns in your text editor, leaving room for at least a few other things on the same line.</p>

<p>Choosing the characters is a little tricky.  A whole lot of the code space below U+07FF is taken up by characters we can&#8217;t use for this purpose&#8212;composing diacritics, control characters, punctuation, and right-to-left scripts.  I didn&#8217;t want to use diacritics (even in precomposed form) or pairs of characters that might be visually identical to each other in some (combination of) fonts.  Unfortunately, even with the rich well of Cyrillic and Armenian to work with, I wasn&#8217;t able to avoid using a bunch of Latin-alphabet diacritics. Someone a little more familiar with the repertoire might be able to do better.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/htmletc/zany-scheme-compact-hashes/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>How To Choose Passwords</title>
		<link>http://www.owlfolio.org/research/how-to-choose-passwords/</link>
		<comments>http://www.owlfolio.org/research/how-to-choose-passwords/#comments</comments>
		<pubDate>Wed, 25 May 2011 22:03:57 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1074</guid>
		<description><![CDATA[When I talk to people who aren&#8217;t security researchers about history sniffing, they want to know whether they should worry about it, and I say no: the only thing you can do to protect yourself is use the latest version &#8230; <a href="http://www.owlfolio.org/research/how-to-choose-passwords/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When I talk to people who aren&#8217;t security researchers about <a href="http://www.owlfolio.org/research/interactive-sniffing/">history sniffing</a>, they want to know whether they should worry about it, and I say no: the only thing you can do to protect yourself is use the latest version of your favorite browser, which you should do anyway; besides, the interactive attacks will probably never appear in the wild.  But if I only ever talk about computer security topics that are only relevant to researchers, I&#8217;m not helping people as much as I could, and I&#8217;m scaring them about things they can&#8217;t control. So <em>this</em> post is about something you <em>should</em> worry about, because it&#8217;s under your direct control; lots of people do it poorly and that does make them less safe online; and it&#8217;s easy to do well.  That thing is choosing passwords.</p>

<p>You have probably heard that you shouldn&#8217;t reuse the same password on many different websites, and that your passwords should be long, contain numbers and punctuation, and avoid dictionary words.  But you probably haven&#8217;t heard anyone explain why, and you probably <em>have</em> noticed that these two pieces of advice are hard to follow at the same time, because long gibberish passwords are hard to remember even if you only have one of them.  I&#8217;m going to tell you why you should do these things, and how to do them without too much grief.</p>

<h2>Don&#8217;t use the same password on many different websites</h2>

<p>No matter how good your password is, the bad guys might discover what it is.  For instance, if you log into an unencrypted website over an unencrypted wireless network, anyone else on the same wireless network can listen in on the radio traffic and discover your password.  (It&#8217;s just like eavesdropping on a private conversation.)  Or you might accidentally type your password into a website that <em>looks</em> like the real thing but is actually a <a href="http://en.wikipedia.org/wiki/Phishing">fake created to trick you</a>.</p>

<p>Suppose the bad guys have discovered your password for a Web forum.  That&#8217;s not a big deal, because someone impersonating you <em>on one forum</em> probably isn&#8217;t a big deal.  You might have to apologize to some people for letting some schmuck insult them while pretending to be you.  But the bad guys know that people often use the same password on many different websites, so they&#8217;re going to try to log into your email with that password, and your bank, and so on.  If they succeed&#8212;if you <em>did</em> use the same password&#8212;they might be able to ruin your life, or at least steal some of  your money. But if you always use different passwords on different websites, the bad guys have to discover the password you use for your bank (and nothing else) in order to steal your money.</p>

<p>How do you manage to remember lots of different passwords, especially when (as I&#8217;m about to explain) they all need to be long and complicated? The best way is to let the computer&#8212;specifically, your browser&#8217;s <a href="http://support.mozilla.com/en-US/kb/Remembering%20passwords">password manager</a>&#8212;do it for you. This may seem unsafe, but it&#8217;s actually much safer than using the same password for everything.  The password manager cannot be fooled by phishing sites, and it has no trouble remembering lots of long complicated passwords.  Yes, all the passwords are in a file on your computer.  But the only way the bad guys can get at that is by physically stealing your computer, or installing <a href="http://en.wikipedia.org/wiki/Spyware">spyware</a> on it remotely.  If you keep your computer up to date with security patches, you don&#8217;t have to worry about spyware much.  If your computer is in danger of being physically stolen (e.g. it&#8217;s a laptop) you should use the <a href="http://support.mozilla.com/en-US/kb/Protecting%20stored%20passwords%20using%20a%20master%20password">master password</a> mode of your browser&#8217;s password manager, so that the file on your computer is encrypted.  Whether or not you have to worry about theft, you should enable <a href="http://support.mozilla.com/en-US/kb/what-firefox-sync">Sync</a>, or equivalent feature, even if you have no other computer to sync with; that way, if your computer <em>breaks</em>, there&#8217;s still a backup of all your passwords out there in the cloud (safely encrypted).</p>

<h2>Use long, complicated passwords</h2>

<p>The other way the bad guys discover passwords is by breaking into servers that store entire databases of them.  If these databases have been designed correctly, that doesn&#8217;t tell them anything by itself, because the passwords are hashed.  Hashing deserves a little explanation: suppose my password on some site is &#8220;12345&#8221; (<a href="http://www.imdb.com/title/tt0094012/quotes?qt0535097">the kind of thing that an idiot would have on his luggage</a>).  The server doesn&#8217;t store &#8220;12345&#8221; in its database, it stores &#8220;827ccb0eea8a706c4c34a16891f84e7b&#8221;, which is the result of running &#8220;12345&#8221; through a <em><a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function">cryptographic hash</a></em>, in this case <a href="http://en.wikipedia.org/wiki/MD5">MD5</a>.  It&#8217;s easy to convert a password into its hash, but it&#8217;s prohibitively hard to do the reverse. MD5 is old and no longer considered a good choice for passwords (or anything, for that matter), but the fastest computer ever built would still take so long to recover &#8220;12345&#8221; from &#8220;827ccb0eea8a706c4c34a16891f84e7b&#8221; that the Sun would burn out before it was done.</p>

<p>So the bad guys can&#8217;t just read the passwords from a database once they have it.  But they can <em>guess</em> passwords, run the guesses through MD5 (or whatever was used), and compare the results to the database entries.  (They can guess passwords even if they haven&#8217;t stolen a database, by feeding the guesses to the site&#8217;s login form&#8212;but that&#8217;s much slower and the site admins are likely to notice.) &#8220;12345&#8221; isn&#8217;t a good password because it&#8217;s easy to guess&#8212;but so is <em>any</em> five-digit number: a cheap laptop can calculate the MD5 of all 100,000 five-digit (or smaller) numbers in less than a second. There are <a href="http://oxforddictionaries.com/page/93">something like 250,000 words in English</a>&#8212;that&#8217;s maybe five seconds&#8217; worth of work for the same laptop&#8212;so any word in the dictionary is bad, too.  You can buy <a href="http://www.openwall.com/wordlists/">a 40-million-entry word list</a> for $30 that has not only all the words in 20 different languages, but mangled versions of them (e.g. &#8220;f0od&#8221;)&#8212;that might take an hour or two to process.</p>

<p>The longer and more complicated your password is, the harder it is to guess; but that makes it harder to remember as well.  Adding punctuation and numbers doesn&#8217;t help as much as one would like.  There are 95 characters that you can type on a US keyboard, so there are <math><msup><mn>95</mn><mn>8</mn></msup></math>, or about a quadrillion (<a href="http://en.wikipedia.org/wiki/Long_and_short_scales">short scale</a>) possible eight-character passwords, if you use all those characters.  A quadrillion possibilities is out of the reach of a cheap laptop, but it&#8217;s a few weeks&#8217; effort for a small cluster of beefy computers&#8212;a determined bad guy could do this for maybe $25,000.</p>

<p>The good news is, you <em>can</em> have passwords that can&#8217;t be guessed this way but are still easy to remember.  The trick is to use <em>phrases</em> rather than words.  One random English word is 250,000 possibilities. Two random English words are 62.5 billion possiblities&#8212;250,000 squared.  That&#8217;s still not enough.  But <em>ten</em> random English words is <math><msup><mn>250,000</mn><mn>10</mn></msup><mo>=</mo><msup><mn>10</mn><mn>54</mn></msup></math> possibilities, which is safely in &#8220;still guessing when the Sun burns out&#8221; territory.</p>

<p>You can&#8217;t take just any phrase, though.  The bad guys could easily try every phrase in the <a href="http://ukcatalogue.oup.com/product/academic/reference/encyclopaedias/quotations/9780199567072.do">Concise Oxford Dictionary of Quotations</a>, because there are only 9000 of them.  I haven&#8217;t worked out the math, but I think guessing every sentence in the complete works of Shakespeare is doable.  But nobody has a database of every sentence in every work of literature that was written with the Latin alphabet.  A phrase taken from somewhere in the middle of an obscure but lengthy book is a good choice.  Or you could follow this procedure:</p>

<ol>
<li>Go to <a href="http://en.wikipedia.org/">Wikipedia</a> and click on &#8220;random article&#8221;.  (You can use any site with a &#8220;random article&#8221; feature for this step, if you&#8217;d rather.)</li>
<li>Copy the URL of the page you get, and paste it into <a href="http://www.crummy.com/software/eater/">the Eater of Meaning</a>.  Leave the drop-down on &#8220;Eat word endings.&#8221;</li>
<li>Choose ten consecutive words from the result.  They don&#8217;t have to all come from the same sentence.</li>
</ol>

<p>Don&#8217;t worry about finding a sentence that you can remember yourself, because you&#8217;re going to have the password manager do it (unless you&#8217;re trying to pick the master password).</p>

<p>Some sites have limits on the length of their passwords.  This is bad, and you should complain; but until they fix it, just use the first <em>letter</em> of each word in your ten-word phrase, with some numbers and punctuation if they insist on numbers and punctuation.  That kind of password is theoretically crackable, as I said earlier, but it&#8217;s likely to be better than lots of other passwords in the database.  So if the bad guys get the database, they will crack so many <em>other</em> people&#8217;s passwords before they get to yours that they don&#8217;t feel they have to bother cracking yours.  (It&#8217;s kind of like the joke about how fast you need to run away from a lion.)</p>

<p>If there&#8217;s no limit on the length of the password, but the site still insists on numbers and/or punctuation, put them in between the words; that&#8217;s easier to type.</p>

<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/research/how-to-choose-passwords/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>PSA: &#8220;like&#8221; buttons</title>
		<link>http://www.owlfolio.org/administrivia/psa-like-buttons/</link>
		<comments>http://www.owlfolio.org/administrivia/psa-like-buttons/#comments</comments>
		<pubDate>Sun, 08 May 2011 19:43:06 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Administrivia]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1069</guid>
		<description><![CDATA[Because I hit &#8220;empty spam&#8221; just a little too fast, erasing the question about this: There are no Facebook &#8220;like&#8221; buttons on this site because I myself barely ever use Facebook and don&#8217;t really see the point; same same digg, &#8230; <a href="http://www.owlfolio.org/administrivia/psa-like-buttons/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Because I hit &#8220;empty spam&#8221; just a little too fast, erasing the question about this: There are no Facebook &#8220;like&#8221; buttons on this site because I myself barely ever use Facebook and don&#8217;t really see the point; same same digg, reddit, etc. If you like something you read here enough to want to promote it, please consider mentioning it somewhere you can put in a few words to explain why people should click through (twitter, Facebook wall, sort of thing).  Or write a full-sized response article and link back.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/administrivia/psa-like-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interactive history sniffing and its relatives</title>
		<link>http://www.owlfolio.org/research/interactive-sniffing/</link>
		<comments>http://www.owlfolio.org/research/interactive-sniffing/#comments</comments>
		<pubDate>Mon, 02 May 2011 23:00:57 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1015</guid>
		<description><![CDATA[Readers of this blog will probably already know that, up till the middle of last year, it was possible to &#8220;sniff&#8221; browsing history by clever tricks involving CSS, JavaScript, and the venerable tradition of drawing hyperlinks to already-visited URLs in &#8230; <a href="http://www.owlfolio.org/research/interactive-sniffing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Readers of this blog will probably already know that, up till the middle of last year, it was possible to <a href="http://wtikay.com/docs/details.html">&#8220;sniff&#8221; browsing history</a> by clever tricks involving CSS, JavaScript, and the venerable tradition of drawing hyperlinks to already-visited URLs in purple instead of blue. Last year, though, <a href="http://dbaron.org/">David Baron</a> came up with a <a href="http://blog.mozilla.com/security/2010/03/31/plugging-the-css-history-leak/">defense against history sniffing</a> which has now been adopted by every major browser except Opera. One fewer thing to worry about when visiting the internets, hooray? Not so fast.</p>

<p>Imagine for a moment that the next time you visited an unfamiliar website and you wanted to leave a comment without creating an account, instead of one of those <a href="http://www.captcha.net/">illegibly distorted codes that you have to type back in</a>, you saw this:</p>

<div class="aligncenter" style="width:280px; padding: 1em; margin-bottom: 24px; background: #dddddd">
<div style="text-align:center; font-size:1.17em;margin-bottom:12px">Please click on all the chess pawns.</div>
<img src="http://www.owlfolio.org/media/2011/04/Screenshot.png" alt="A six-by-six checkerboard grid with chess pawns in random locations. One of the pawns is green and has a mouse-cursor arrow pointing to it." width="250" height="250" class="aligncenter size-full wp-image-1046">
</div>

<p>As you click on the pawns, they turn green. Nifty, innit? Much easier than an illegibly distorted code. Also easy for a spambot equipped with image processing software, but <a href="http://www.computer.org/portal/web/csdl/doi/10.1109/ACSAC.2007.47">it turns out the distorted codes are not that hard for spambots anymore either</a> and probably no one&#8217;s written the necessary image processing code for this one yet. Possibly also easier on people with poor eyesight, and there could still be a link to an audio challenge for people with <em>no</em> eyesight.</p>

<p>&#8230; What&#8217;s this got to do with history sniffing? That chessboard isn&#8217;t really a CAPTCHA. <em>All</em> the squares have pawns on them. But each one is a hyperlink, and the pawns linked to sites you haven&#8217;t visited are being drawn in the same color as the square, so they&#8217;re invisible. You only click on the pawns you can see, of course, and so you reveal to the site which of those URLs you have visited.  A little technical cleverness is required&#8212;the pawns have to be Unicode dingbats, not images; all the normal interactive behavior of hyperlinks has to be suppressed; etcetera&#8212;but nothing too difficult.  I and three other researchers with <a href="http://sv.cmu.edu/">CMU Silicon Valley</a>&#8217;s <a href="http://websec.sv.cmu.edu/">Web Security Group</a> have tested this and a few other such fake CAPTCHAs on 300 people. We found them to be practical, although you have to be careful not to make the task too hard; for details please see <a href="http://websec.sv.cmu.edu/visited/visited.pdf">our paper</a> (to be presented at the <a href="http://www.ieee-security.org/TC/SP2011/">IEEE Symposium on Security and Privacy, aka &#8220;Oakland 2011&#8221;</a>).</p>

<p>An attacker obviously can&#8217;t use an &#8220;interactive sniffing&#8221; attack like this one to find out which sites out of the entire Alexa 10K your victim has visited&#8212;nobody&#8217;s going to work through that many chessboards&#8212;and for the same reason, <a href="http://www.darkreading.com/security/article/223100436/index.html">deanonymization</a> attacks that require the attacker to probe hundreds of thousands of URLs are out of reach. However, an attacker could reasonably probe a couple hundred URLs with an interactive attack, and according to <a href="http://cseweb.ucsd.edu/~d1jang/">Dongseok Jang</a>&#8217;s <a href="http://blogs.forbes.com/kashmirhill/2010/11/30/history-sniffing-how-youporn-checks-what-other-porn-sites-youve-visited-and-ad-networks-test-the-quality-of-their-data/">study of actual history sniffing</a> (<a href="http://cseweb.ucsd.edu/~d1jang/papers/ccs10.pdf">paper</a>), that&#8217;s about how many URLs real attackers want to sniff. It seems that the main thing real attackers want to know about your browsing history is which of their competitors you patronize, and that&#8217;s never going to need more than a few dozen URLs.</p>

<p>On the other hand, CAPTCHAs are such a hassle for users that they <a href="http://www.90percentofeverything.com/2011/03/25/fk-captcha/">cause 10% to 33% attrition in conversion rates</a>. And users don&#8217;t expect to see them on every visit to a site&#8212;just the first, usually, or each time they submit an <em>anonymous</em> comment. Even websites that <em>were</em> sniffing history when it was possible to do so automatically, and want to keep doing it, may consider that too high a price. But we can imagine similar attacks on higher-value information, where even a tiny success rate would be worth it. For instance, a malicious site could ask you to type a string of gibberish to continue&#8212;which happens to be your <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/index.html?S3_Authentication.html">Amazon Web Services secret access key</a>, IFRAMEd in from their management console. Amazon has taken steps to make this precise scenario difficult, but I&#8217;m not prepared to swear that it&#8217;s impossible, and other cloud services providers may have been less cautious.</p>

<p>Going forward, we also need to think carefully about how new web-platform capabilities might enable attackers to make similar end-runs around the browser&#8217;s security policies.  In the aforementioned research project, we were also able to sniff history <em>without</em> user interaction by using a webcam to detect the <em>color of the light reflecting off the user&#8217;s face</em>; even with our remarkably crude image processing code this worked great as long as the user held still.  It&#8217;s not terribly practical, because the user has to grant access to their webcam, and it involves putting an <a href="http://www.whatmakesthemclick.net/2010/01/23/100-things-you-should-know-about-people-22-peripheral-vison-keeping-you-alive-or-channel-surfing/">annoying flashing box</a> on the screen, but it demonstrates the problem.  We are particularly concerned about <a href="https://developer.mozilla.org/en/WebGL">WebGL</a> right now, since its &#8220;shader programs&#8221; can perform arbitrary computations and have access to cross-domain content that page JavaScript cannot see; there may well be a way for them to communicate back to page JavaScript that avoids the <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#security-with-canvas-elements"><code>&lt;canvas&gt;</code> element&#8217;s information leakage rules</a>. Right now it&#8217;s not possible to put the rendering of a web page into a GL texture, so this couldn&#8217;t be used to snoop on browsing history, but there&#8217;s legitimate reasons to want to do that, so it might become possible in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/research/interactive-sniffing/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Classical Mechanics Interlude: Acceleration to stop in a constant distance</title>
		<link>http://www.owlfolio.org/uncat/acceleration-stop-const-distance/</link>
		<comments>http://www.owlfolio.org/uncat/acceleration-stop-const-distance/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 00:45:21 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1020</guid>
		<description><![CDATA[Over on twitter, @MegaManSE asked does anyone know the equation to find the acceleration to stop a moving object in a constant distance given some random starting velocity? I didn&#8217;t, at the time, know &#8230; but I do know how &#8230; <a href="http://www.owlfolio.org/uncat/acceleration-stop-const-distance/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p> Over on twitter, @<a href="http://twitter.com/MegaManSE">MegaManSE</a> asked</p>

<blockquote>
  <p>does anyone know the equation to find the acceleration to stop a moving object in a constant distance given some random starting velocity?</p>
</blockquote>

<p>I didn&#8217;t, at the time, know &#8230; but I do know how to work it out from first principles, and it makes a decent little classical mechanics exercise, and also an excuse to figure out how to get <a href="http://www.mathjax.org/">MathJax</a> hooked up on this blog, which might be useful in the future.  So here&#8217;s how it&#8217;s done.</p>

<p>The first step in solving one of these problems is to rewrite the question as formally as possible:</p>

<blockquote>
  <p>At time &#92;(t=0&#92;) an object is at position &#92;(x=0&#92;) and moving with velocity &#92;(&#92;nu=v&#92;). Find the constant acceleration &#92;(a&#92;) such that at some future time &#92;(t=T&#92;), when the object is at position<br>
  &#92;(x=d&#92;), its velocity will be zero.</p>
</blockquote>

<p>Now how do we do that? It&#8217;s time for just a little bit of integral calculus.  <a href="http://en.wikipedia.org/wiki/Velocity">Velocity</a> is the rate at which a moving object&#8217;s position changes, as a function of time, and <a href="http://en.wikipedia.org/wiki/Acceleration">acceleration</a> is the rate at which a moving object&#8217;s <em>velocity</em> changes, also as a function of time.  <a href="http://en.wikipedia.org/wiki/Calculus">The calculus</a> was invented to answer the question, if I know what one of these is, what are the other two?  It has a somewhat-deserved reputation for being confusing, but mostly that&#8217;s because it&#8217;s hard to explain <em>how you come up with its rules</em>.  If you know the rules, they&#8217;re pretty easy to apply.  The acceleration in this problem is constant, &#92;(a&#92;), and we know at time &#92;(0&#92;) the velocity is &#92;(v&#92;) and the position is &#92;(0&#92;).  Therefore, the velocity at time &#92;(t&#92;) is</p>

<p>$$\nu(t) = v + \int_0^t a\; \text{d}t = v + at$$</p>

<p>and the position is</p>

<p>$$x(t) = 0 + \int_0^t v + at\; \text{d}t = 0 + vt + \frac{at^2}{2}$$</p>

<p>These are both functions of <em>time</em>, but we want to solve for acceleration as a function of <em>distance</em> and starting velocity.  But that&#8217;s just a matter of algebra.  We want &#92;(&#92;nu(T) = 0&#92;), so we plug that into the first of these equations and solve for &#92;(T&#92;):</p>

<p>$$0 = v + aT \quad\rightarrow\quad T = \frac{-v}{a}$$</p>

<p>And we want &#92;(x(T) = d&#92;), so we plug both that and the formula for &#92;(T&#92;) into the second equation:</p>

<p>$$d = v\frac{-v}{a} + \frac{a}{2}\left(\frac{-v}{a}\right)^2$$</p>

<p>Now all we have to do is solve for &#92;(a&#92;):</p>

<p>$$d = \frac{-v^2}{a} + \frac{v^2}{2a}$$</p>

<p>$$d = \frac{-2v^2 + v^2}{2a}$$</p>

<p>$$2ad = -v^2$$</p>

<p>$$a = \frac{-v^2}{2d}$$</p>

<p>Wait, the acceleration comes out to be <em>negative</em>?!  Yes.  That&#8217;s how you know the object is slowing down rather than speeding up.  (If the object weren&#8217;t moving in a straight line, its position, velocity, and acceleration would all have to be treated as 2- or 3-dimensional <a href="http://en.wikipedia.org/wiki/Euclidean_vector">vectors</a>, but the calculations would wind up being very nearly the same, only with more boldface.  Also, if the <em>velocity</em> were negative, it would mean the object was moving backward.  This is, in fact, the difference between velocity and speed: speed is the <em>magnitude</em> of velocity, without the direction, so it can never be negative.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/uncat/acceleration-stop-const-distance/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

