<?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>Thu, 02 May 2013 03:26:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>More Notes on the Cross-Platform Availability of Header Files</title>
		<link>http://www.owlfolio.org/possibly-useful/more-notes-on-the-cross-platform-availability-of-header-files/</link>
		<comments>http://www.owlfolio.org/possibly-useful/more-notes-on-the-cross-platform-availability-of-header-files/#comments</comments>
		<pubDate>Thu, 02 May 2013 03:25:41 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Possibly Useful]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1485</guid>
		<description><![CDATA[You may recall a month and a half ago I posted Notes on the Cross-Platform Availability of Header Files and then promptly had to take most of it down because it was insufficiently researched. Well, the research is ongoing, but … <a href="http://www.owlfolio.org/possibly-useful/more-notes-on-the-cross-platform-availability-of-header-files/"> Continued</a>]]></description>
				<content:encoded><![CDATA[<p>You may recall a month and a half ago I posted <a href="/possibly-useful/notes-on-the-cross-platform-availability-of-header-files/">Notes on the Cross-Platform Availability of Header Files</a> and then promptly had to take most of it down because it was insufficiently researched.  Well, the research is ongoing, but I’ve got a shiny new set of results, some high-level conclusions, and several ways Viewers Like You can help!</p>

<p>First, the high-level conclusions:</p>

<ul>
<li>Except perhaps in deeply-embedded environments, all of C89’s
library is universally available.</li>
<li>Code not intended to run on Windows can also assume most of C99 and
much of POSIX.  The less-ubiquitous headers from these categories
are also the less-useful headers.</li>
<li>Code that <em>is</em> intended to run on Windows should only use C89
headers and <code>&lt;stdint.h&gt;</code>.  If MSVC 2008 support is required, not
even <code>&lt;stdint.h&gt;</code> can be used.  (Windows compilers do provide a
small handful of POSIX headers, but they do not contain the
expected set of declarations!)</li>
<li>Many different Unix variants ship a similar set of nonstandard
headers.  We don’t yet know whether the <em>contents</em> of these headers
are reliable cross-platform.</li>
<li>There is a large set of obsolete headers that are still widespread
but should not be used in new code.  This is underdocumented.</li>
</ul>

<p>The full results may be seen here: <a href="http://hacks.owlfolio.org/header-survey/">http://hacks.owlfolio.org/header-survey/</a><br>
The raw data is here: <a href="https://github.com/zackw/header-survey/">https://github.com/zackw/header-survey/</a></p>

<p>If you want to help, we need more inventories (especially for OSes further from the beaten path), and I’m also <em>very</em> interested in improvements to the giant generated HTML table.  Y’all on Planet Mozilla can probably tell I’m not a Web designer.  If you are an old beard, there are also places where I’m not entirely sure of my methodology – see the README in the source repo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/possibly-useful/more-notes-on-the-cross-platform-availability-of-header-files/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Caffeinated owls</title>
		<link>http://www.owlfolio.org/uncat/caffeinated-owls/</link>
		<comments>http://www.owlfolio.org/uncat/caffeinated-owls/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 17:10:57 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1479</guid>
		<description><![CDATA[Art by Dave Mottram. Found on G+.]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.owlfolio.org/media/2013/04/owly-morning.jpg" alt="Semi-anthropomorphic sketches of six owls, each with a different facial expression and labeled with the name of a different coffee-related beverage: decaf (asleep), half-caf (awake, but not happy about it), regular (a little more awake and still not happy about it), Irish coffee (cheerfully buzzed), espresso (unable to blink), double espresso (oh dear, it's gone all the way to knurd)." width="497" height="353" class="aligncenter size-full wp-image-1480"/></p>

<p>Art by <a href="https://plus.google.com/106779091886218260699/about">Dave Mottram</a>.  Found <a href="https://plus.google.com/108086887435909989445/posts/4DHr8J4jvVc">on G+</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/uncat/caffeinated-owls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Contest</title>
		<link>http://www.owlfolio.org/uncat/a-contest/</link>
		<comments>http://www.owlfolio.org/uncat/a-contest/#comments</comments>
		<pubDate>Mon, 01 Apr 2013 13:18:27 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1473</guid>
		<description><![CDATA[In honor of the Feast of All Fools, and because if anyone has noticed it, they haven’t told me, I hereby announce that there is a joke in the references of my most recently published paper. Whoever first correctly identifies … <a href="http://www.owlfolio.org/uncat/a-contest/"> Continued</a>]]></description>
				<content:encoded><![CDATA[<p>In honor of the Feast of All Fools, and because if anyone has noticed it, they haven’t told me, I hereby announce that there is a joke in the references of <a href="/media/2010/05/stegotorus.pdf">my most recently published paper</a>.  Whoever first correctly identifies it will win the right to suggest a joke to be added to my <em>next</em> paper, which is currently in preparation.  Post your guesses in the comments; so as not to spoil it for anyone, comments will not be visible until after the contest ends.</p>

<p style="font-size:smaller">One guess per person.  Must provide a working email address (or I won’t be able to contact you if you win).  Do not suggest a joke now; the winner will be notified of the topic of the upcoming paper, so they can think of something appropriate.  Management reserves the right to reject joke suggestions, in which case the next person in line will get a crack at it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/uncat/a-contest/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What Is Wrong With You Monkeys?!</title>
		<link>http://www.owlfolio.org/personal/what-is-wrong-with-you-monkeys/</link>
		<comments>http://www.owlfolio.org/personal/what-is-wrong-with-you-monkeys/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 19:14:00 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1433</guid>
		<description><![CDATA[Attention conservation notice: Angry rant about sexism and sexism-motivated abuse in the computer industry. I was going to write a crunchy, cerebral, if perhaps controversial, post today about how I don’t think Bitcoin is going to change the world, but … <a href="http://www.owlfolio.org/personal/what-is-wrong-with-you-monkeys/"> Continued</a>]]></description>
				<content:encoded><![CDATA[<blockquote>
  <p>Attention conservation notice: Angry rant about sexism and sexism-motivated abuse in the computer industry.</p>
</blockquote>

<p>I was going to write a crunchy, cerebral, if perhaps controversial, post today about how I don’t think Bitcoin is going to change the world, but then I got up and read my usual newsfeeds and discovered that, once again, the Internet’s collection of “<a href="http://whatever.scalzi.com/2013/01/31/troll-report-active-with-increasing-chance-of-stupid/">gibbering follow monkeys</a>” have decided to hurl abuse up to and including death threats at someone.  Someone whom, I am not surprised to find, is female and not white.  So now you don’t get crunchy, or cerebral.  You get an angry rant, because I have had <em>enough</em> of this shit.</p>

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

<p>For context, the sequence of events appears to have gone something like this.  <a href="http://geekfeminism.wikia.com/wiki/PyCon_2013_forking_and_dongles_incident">More details available at GF Wiki</a>.</p>

<ul>
<li>Some dudes were making sophomoric, not actually funny sex jokes at PyCon.</li>
<li>Adria Richards complained to the PyCon organizers and also kvetched about the dudes on Twitter.</li>
<li>The PyCon organizers told the dudes to knock it off and/or leave the room, which they did.</li>
<li>The gibbering follow monkeys flipped the fuck out, like they do, and started throwing abuse, DDOS and death threats around.</li>
<li>One of the dudes was fired subsequent to a “thorough investigation” by his employer.</li>
<li>Ms. Richards has also been fired, apparently after the abuse widened to include her employer as an organization.</li>
</ul>

<p>Okay, here comes the rant.</p>

<h2>What. The. Fuck. Is. Wrong. With. You. Monkeys?!</h2>

<p>Why is it that this type of incident always seems to provoke a nuclear-grade shitstorm?</p>

<p>Why is it <em>so important</em> to you to be able to make sophomoric, unfunny jokes no matter where you may find yourself?</p>

<p>Where on God’s green earth did you get the idea that <em>death threats</em> are an appropriate response to ANYTHING?!</p>

<p>Why are you not <em>ashamed</em> of yourselves?</p>

<h2>So tell us how you really feel, Weinberg.</h2>

<p>I rather think I just did, but now I’m done shouting, perhaps I will elaborate a bit.</p>

<p>The “sophomoric, not actually funny sex jokes” may seem like a minor thing and not worth complaining about, but  <a href="http://geekfeminism.wikia.com/wiki/Timeline_of_incidents">there is a fucking <em>track record</em> here</a>.  Much more serious things can and have happened to women at professional conventions (both in the software industry and out).  By calling out minor bad behavior and publicly telling the perpetrators to knock it off, communities <a href="http://www.theatlantic.com/magazine/archive/1982/03/broken-windows/304465/?single_page=true">signal that more serious misbehavior will not be tolerated</a>, and then hopefully it doesn’t happen at all.  (Note: I am aware that this has been partially discredited as regards violent crime, but if you think it doesn’t work <em>at all</em>, provide evidence to back up your claims, and be aware that you are arguing with <a href="https://en.wikipedia.org/wiki/Philip_Zimbardo">Philip Zimbardo</a>.)  The initial “hey, this is not cool” report and the “knock it off” response by PyCon seem precisely on the nose to me.  Should anyone have gotten fired? Not <em>just</em> because of this incident, certainly, but the “thorough investigation” by the dude’s employer may have turned up something more serious; they, quite properly, do not elaborate. (Commenting in public about why you fired someone is a nonstop ticket to lawsuit land in the USA.)  As of this writing, Ms. Richards’ employer appears to be in panic mode and not behaving rationally; I would not be surprised if they calm down tomorrow and pretend it never happened.</p>

<p>Now, as to the shitstorm.  There is <em>also</em> a track record here, and for that I’m going to refer you to John Scalzi: “<a href="http://whatever.scalzi.com/2011/08/31/the-sort-of-crap-i-dont-get/">The Sort of Crap I Don’t Get</a>.”  He explains how he gets hate mail because of things he <em>does</em>, but he does not get a continuous stream of abuse, nor is it because of who and what he <em>is</em> (unless you count “opinionated and widely read”).  Anyone who isn’t a straight white male, however, can expect that continuous stream of abuse, especially if they have a prominent online persona.  This is not okay, and this is what I am especially angry about this afternoon.  I have seen it happen over and over again to friends and acquaintances and strangers whose writing I read, and what the hell can I do about it?</p>

<p>I can say “WHAT THE FUCK IS WRONG WITH YOU MONKEYS” out loud instead of just thinking it, maybe.  Maybe if enough people do that, the monkeys will start to feel some shred of shame.</p>

<p>I can hope.</p>

<p>Thanks for listening.  Have a flower.</p>

<p><a href="http://www.flickr.com/photos/zackw/8530943959/"><img src="https://farm9.staticflickr.com/8105/8530943959_2f768fa4e9_m.jpg" width="240" height="160" class="aligncenter" alt="Crocuses in a vacant lot"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/personal/what-is-wrong-with-you-monkeys/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Notes on the Cross-Platform Availability of Header Files</title>
		<link>http://www.owlfolio.org/possibly-useful/notes-on-the-cross-platform-availability-of-header-files/</link>
		<comments>http://www.owlfolio.org/possibly-useful/notes-on-the-cross-platform-availability-of-header-files/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 23:24:27 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Possibly Useful]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1375</guid>
		<description><![CDATA[These header files are guaranteed to be available in a C89 hosted environment. All interesting portability targets nowadays are C89 hosted environments (bare-metal environments are still relevant, but not as portability targets). assert.h ctype.h errno.h float.h iso646.h limits.h locale.h math.h … <a href="http://www.owlfolio.org/possibly-useful/notes-on-the-cross-platform-availability-of-header-files/"> Continued</a>]]></description>
				<content:encoded><![CDATA[<p>These header files are guaranteed to be available in a C89 hosted environment. All interesting portability targets nowadays are C89 hosted environments (bare-metal environments are still relevant, but not as <em>portability</em> targets).</p>

<blockquote>
  <p>assert.h<br>
  ctype.h<br>
  errno.h<br>
  float.h<br>
  iso646.h<br>
  limits.h<br>
  locale.h<br>
  math.h<br>
  setjmp.h<br>
  signal.h<br>
  stdarg.h<br>
  stddef.h<br>
  stdio.h<br>
  stdlib.h<br>
  string.h<br>
  time.h<br>
  wchar.h<br>
  wctype.h</p>
</blockquote>

<p>Beyond C89, interesting portability targets divide into three classes. Complete Unix environments are always compliant with C99 and POSIX.1-2001 nowadays, but not necessarily with all of the optional modules of the latter, nor with any more recent standard. Windows has several different competing C runtimes, some of which offer more C99 support than others, and none of which are at all conformant with POSIX. Finally, the major embedded environments are presently all cut-down versions of a specific identifiable complete Unix or of Windows. Those that are derived from Unix usually have most of the POSIX headers but may be missing a few.</p>

<p><strong>EDIT:</strong> Everything after this point in the original version of this post was insufficiently thoroughly researched and may be wrong.  Corrected tables will appear Real Soon.  If you are interested in helping me with that, please see <a href="https://github.com/zackw/header-analysis">https://github.com/zackw/header-analysis</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/possibly-useful/notes-on-the-cross-platform-availability-of-header-files/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>On Replacements for Passwords</title>
		<link>http://www.owlfolio.org/research/on-replacements-for-passwords/</link>
		<comments>http://www.owlfolio.org/research/on-replacements-for-passwords/#comments</comments>
		<pubDate>Mon, 04 Mar 2013 20:54:39 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1393</guid>
		<description><![CDATA[Your post advocates a □ software □ hardware □ cognitive □ two-factor □ other _________ universal replacement for passwords. Your idea will not work. Here is why it won’t work: □ It’s too easy to trick users into revealing their … <a href="http://www.owlfolio.org/research/on-replacements-for-passwords/"> Continued</a>]]></description>
				<content:encoded><![CDATA[<p>Your post advocates a</p>

<p>□ software □ hardware □ cognitive □ two-factor □ other _________</p>

<p>universal replacement for passwords.  Your idea will not work.  Here is why it won’t work:</p>

<p>□ It’s too easy to trick users into revealing their credentials<br>
□ It’s too hard to change a credential if it’s stolen<br>
□ It initiates an arms race which will inevitably be won by the attackers<br>
□ Users will not put up with it<br>
□ Server administrators will not put up with it<br>
□ Web browser developers will not put up with it<br>
□ National governments will not put up with it<br>
□ Apple would have to sacrifice their extremely profitable hardware monopoly<br>
□ It cannot coexist with passwords even during a transition period<br>
□ It requires immediate total cooperation from everybody at once</p>

<p>Specifically, your plan fails to account for these human factors:</p>

<p>□ More than one person might use the same computer<br>
□ One person might use more than one computer<br>
□ One person might use more than one type of Web browser<br>
□ People use software that isn’t a Web browser at all<br>
□ People want to present different facets of their identity in different contexts<br>
□ Not everyone can see the difference between red and green<br>
□ Not everyone can make fine motor movements with that level of precision<br>
□ Not everyone has thumbs<br>
□ No one wants to remember a string of meaningless symbols that long<br>
□ Users rapidly learn to ignore security alerts of this type  </p>

<p>and technical obstacles:</p>

<p>□ Clock skew<br>
□ Unreliable servers<br>
□ Network latency<br>
□ Wireless eavesdropping and jamming<br>
□ Zooko’s Triangle<br>
□ Computers do not necessarily have any USB ports<br>
□ SMTP messages are often recoded or discarded in transit<br>
□ SMS messages are trivially forgeable by anyone with a PBX</p>

<p>and the following philosophical objections may also apply:</p>

<p>□ This protocol was shown to be insecure by ________________, ____ years ago<br>
□ This protocol must be implemented perfectly or it is insecure<br>
□ This protocol relies on a psychologically unnatural notion of “trustworthiness”<br>
□ This secret is even easier to guess by brute force than the typical password<br>
□ This secret is even less memorable than the typical password<br>
□ It’s too hard to type something that complicated on a phone keyboard<br>
□ Not everyone trusts your government<br>
□ Not everyone trusts their own government<br>
□ Who’s going to run this brand new global, always-online directory authority?<br>
□ I should be able to authenticate a local communication without Internet access<br>
□ I should be able to communicate without having met someone in person first<br>
□ Anonymity is vital to robust public debate</p>

<p>To sum up,</p>

<p>□ It’s a decent idea, but I don’t think it will work.  Keep trying!<br>
□ This is a terrible idea and you should feel terrible.<br>
□ You are the Russian Mafia and I claim my five pounds.  </p>

<blockquote>
  <p>hat tip to <a href="http://craphound.com/spamsolutions.txt">the original</a></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/research/on-replacements-for-passwords/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>In case those were real questions rather than spam vehicles,</title>
		<link>http://www.owlfolio.org/administrivia/in-case-those-were-real-questions-rather-than-spam-vehicles/</link>
		<comments>http://www.owlfolio.org/administrivia/in-case-those-were-real-questions-rather-than-spam-vehicles/#comments</comments>
		<pubDate>Mon, 04 Mar 2013 19:29:39 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Administrivia]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1391</guid>
		<description><![CDATA[my answers may be found at the new top-bar page, Answers to Frequent, probably-Rhetorical Questions.]]></description>
				<content:encoded><![CDATA[<p>my answers may be found at the new top-bar page, <a href="/afrq">Answers to Frequent, probably-Rhetorical Questions</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/administrivia/in-case-those-were-real-questions-rather-than-spam-vehicles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dear Everyone Running for ACM or IEEE Management</title>
		<link>http://www.owlfolio.org/research/dear-everyone-running-for-acm-or-ieee-management/</link>
		<comments>http://www.owlfolio.org/research/dear-everyone-running-for-acm-or-ieee-management/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 20:01:08 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1371</guid>
		<description><![CDATA[It’s professional-organization management election time again. This is my response to everyone who’s about to send me an invitation to vote for them: When it comes to ACM and IEEE elections, I am a single-issue voter, and the issue is … <a href="http://www.owlfolio.org/research/dear-everyone-running-for-acm-or-ieee-management/"> Continued</a>]]></description>
				<content:encoded><![CDATA[<p>It’s professional-organization management election time again.  This is my response to everyone who’s about to send me an invitation to vote for them:</p>

<p>When it comes to ACM and IEEE elections, I am a single-issue voter, and the issue is <a href="http://www.righttoresearch.org/learn/whyOA/index.shtml">open access to research</a>.  I will vote for you if and only if you make a public statement committing to aggressive pursuit of the following goals within your organization, in decreasing order of priority:</p>

<ol>
<li><p>As immediately as practical, begin providing to the general public zero-cost, no-registration, no-strings-attached online access to new publications in your organization’s venues.</p></li>
<li><p>Commit to a timetable (which should also be as quickly as practical, but could be somewhat slower than for the above) for opening up your organization’s older publications to zero-cost, no-registration, no-strings-attached online access.</p></li>
<li><p>Abandon the practice of requiring authors to assign copyright to your organization; instead, require only a license substantively similar to <a href="https://www.usenix.org/node/73711">that requested by USENIX</a> (exclusive publication rights for no longer than 12 months with exception for posting an electronic copy on your own website, nonexclusive right to continue disseminating afterward).</p></li>
<li><p>On a definite timetable, revert copyright to all authors who published under the old copyright policy, retaining only the rights requested under the new policy.</p></li>
</ol>

<p>Thank you for your consideration.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/research/dear-everyone-running-for-acm-or-ieee-management/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ideas that don&#8217;t make money</title>
		<link>http://www.owlfolio.org/uncat/ideas-that-dont-make-money/</link>
		<comments>http://www.owlfolio.org/uncat/ideas-that-dont-make-money/#comments</comments>
		<pubDate>Sat, 17 Nov 2012 20:27:51 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1357</guid>
		<description><![CDATA[The sad Internet news of this week is that the multiplayer online game/community Glitch will have to shut down next month. The announcement makes it sound like mostly a financial problem (not enough revenue to keep going), with a side … <a href="http://www.owlfolio.org/uncat/ideas-that-dont-make-money/"> Continued</a>]]></description>
				<content:encoded><![CDATA[<p>The sad Internet news of this week is that the multiplayer online game/community <a href="http://www.glitch.com/">Glitch</a> will have to <a href="http://www.glitch.com/closing/">shut down next month</a>.  The announcement makes it sound like mostly a financial problem (not enough revenue to keep going), with a side order of getting caught between technology curves.  They built the desktop client on Flash, which is on its way out now, but the technologies that will replace it are not completely ready yet; meanwhile, Flash is mostly not available at all on “mobile” devices but they didn’t have the engineering manpower to build a whole new client for each such platform.</p>

<p>This is a personal disappointment for me, since I liked the game, but it’s also not the first time I’ve seen an Internet community built around a compelling idea fall apart because the money wasn’t there.  Something very similar happened to <a href="http://www.raphkoster.com/2009/12/21/metaplace-com-closing/">Metaplace</a> and <a href="http://massively.joystiq.com/2011/02/20/faunasphere-shutting-down-on-march-15th/">Faunasphere</a>.  It’s not just games; <a href="http://www.well.com/">the WELL</a>, paragon of elder days, had to be bought out by its users, and this was only possible <em>because</em> it goes back to elder days and has users who are very, very rich.  <a href="http://tvtropes.org/">TV Tropes</a>, timesink par extraordinare and valuable resource for high school English students, is ad-supported so it keeps getting <a href="http://tvtropes.org/pmwiki/posts.php?discussion=13344112380A34560100&#038;page=1">jerked around by Google</a>.</p>

<p>You get the idea: the ecology around the Web is only capable of supporting ideas that bring in the money.  It doesn’t really matter how good the idea is on its own terms, or how desirable it is to its audience if that audience isn’t big enough to provide enough money.  Kickstarter and the like help with that last bit, but they don’t work for things that need <em>lots</em> of money or a <em>continuous</em> stream of money.  Glitch staff quoted a figure of six million U.S. dollars a year to keep the game running, which is comparatively small for a business—thirty-ish people at $100,000/yr, plus however much the servers and the connectivity cost, plus overhead.  But <em>one</em> million dollars is <a href="http://www.kickstarter.com/discover/most-funded">extraordinary for a Kickstarter project</a>.</p>

<p>The requirement for a continuous stream of money to keep the servers running also hurts things on the Net that <em>were</em> successful but are now declining.  I can still play <a href="http://www.mariowiki.com/Super_Mario_World">Super Mario World</a> any time I want; even after the original hardware stops working altogether, there will be emulators.  But I can’t go back to <a href="https://en.wikipedia.org/wiki/Star_Wars_Galaxies">Star Wars Galaxies</a>, and I’m not sure if I should believe <a href="http://mystonline.com/en/play/">the website that’s telling me I <em>can</em> still play Uru Live</a>.  Again this isn’t just about games; we all remember what happened to <a href="http://archive.org/web/geocities.php">Geocities</a>.</p>

<p><a href="https://www.gnu.org/philosophy/free-sw.html">Free software</a> helps, but not enough, because it’s not enough to be in possession of all the code and data that you need for a client-server MMO.  Some specific person or group has to actually run the server, and now we’re back to that continuous stream of money requirement—most of which will be going to people, not to computrons or tubes.  You might not need developers, but you definitely need sysadmins.  I was a sysadmin in college, for a tiny little computer lab that almost never had crises at four in the morning, and it was <em>still</em> a shitload of work.  For an MMO you also need in-game and out-of-game moderators, which is even more difficult and thankless a gig than sysadminning, and while people <em>do</em> sometimes volunteer to do it for free, often those are exactly the people who should not be doing that job (yeah, I’m looking at you, Reddit).</p>

<p>Is there a solution?  I don’t have one.  I think it’s more a problem of capitalism than a problem of software architecture.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/uncat/ideas-that-dont-make-money/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CCS 2012 Conference Report</title>
		<link>http://www.owlfolio.org/research/ccs-2012-conference-report/</link>
		<comments>http://www.owlfolio.org/research/ccs-2012-conference-report/#comments</comments>
		<pubDate>Tue, 30 Oct 2012 00:33:47 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=1343</guid>
		<description><![CDATA[The ACM held its annual Conference on Computer and Communications Security two weeks ago today in Raleigh, North Carolina. CCS is larger than Oakland and has two presentation tracks; I attended less than half of the talks, and my brain … <a href="http://www.owlfolio.org/research/ccs-2012-conference-report/"> Continued</a>]]></description>
				<content:encoded><![CDATA[<p>The <a href="https://www.acm.org/">ACM</a> held its annual
<a href="http://www.sigsac.org/ccs/CCS2012/">Conference on Computer and Communications Security</a>
two weeks ago today in Raleigh, North Carolina.  CCS is larger than
Oakland and has two presentation tracks; I attended less than half of
the talks, and my brain was still completely full afterward.  Instead
of doing one exhaustive post per day like I did with Oakland, I’m just
going to highlight a handful of interesting papers over the course of
the entire conference, plus the pre-conference
<a href="http://hatswitch.org/wpes2012/">Workshop on Privacy in the Electronic Society</a>.</p>

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

<p>Note, paper links may go to expanded technical reports instead of
as-presented papers, since obviously I am not going to link to the
“official” editions behind ACM’s paywall.  There were some talks that
I didn’t write up, despite their interestingness, because I couldn’t
find an unencumbered paper to link to—cavete auctores!</p>

<h2>Monday (WPES)</h2>

<h3><a href="https://www.cs.indiana.edu/~minaxi/pubs/wpes12.pdf">An Approach for Identifying JavaScript-loaded Advertisements through Static Analysis</a></h3>

<p>Right now the state of the art for blocking out ads on the Web is with
gigantic URL-based blacklists—the popular “EasyList” for AdBlock
Plus contains 18,000 entries according to the speaker, with new
entries added at a rate of five to fifteen a week, and obsolete
entries hardly ever removed.  This paper proposes instead to use
static analysis and machine learning to detect ad-related JavaScript
and prevent it from executing.  The claim is that this will be easier
to maintain, more robust, and scale better.  They wrote a browser
extension that preprocesses incoming JavaScript through some “basic
optimizations” (constant folding, mostly) and then looks for a handful
of features that are more likely to appear in ad-loading JavaScript.
There are a number of problems related to figuring out what to do next
(see the paper) but as a proof of concept it seems to work quite well,
with classification accuracy in the 98% range.  It has trouble with
analytics and HTML generation libraries, both of which share features
with ad-loading scripts.</p>

<p>In the question period, someone asked whether they thought they could
keep up with the rapidly evolving ad ecosystem, and they said “well,
this general approach works pretty well for spam filtering,” which I
thought was telling—there is, after all, substantial overlap.  They
also said that they thought the same general approach would work for
tracking protection but it would require its own classifier.</p>

<h3><a href="https://www.cylab.cmu.edu/files/pdfs/tech_reports/CMUCyLab12008.pdf">What Do Online Behavioral Advertising Privacy Disclosures Communicate to Users?</a></h3>

<p>Online behaviorally-targeted advertising is often tagged with a little
icon and/or short phrase which are hyperlinks to “landing pages” that
talk about the behavioral targeting and may offer the opportunity to
disable ad targeting (but not the associated behavioral tracking).
This is part of an industry “self-regulatory” program which is
supposed to make behavioral targeting more palatable.  The study
investigated what, if anything, these tags actually communicate to
end-users, and how they react.  Participants were shown a variety of
ads, with between-subjects randomized tags, and then quizzed about
what they thought the tags meant and what the landing pages
communicated.  Takeaways include:</p>

<ul>
<li>People mostly don’t even notice these tags.</li>
<li>The icons used are meaningless, and most of the short phrases do not
communicate that this is something clickable.</li>
<li>After participants’ attention was drawn to the tags, more than half
of them thought that clicking on them would cause more ads to pop
up, increase ad frequency overall, and/or signal interest in the
product currently being advertised. Some of the short phrases
suggested an offer to buy advertising on the current website.</li>
<li>The landing pages do not clearly make the distinction between
disabling <em>ad targeting</em> (which is offered) and disabling
<em>behavioral tracking</em> (which is not offered).</li>
</ul>

<p>The speaker carefully avoided the elephant in this particular room,
i.e. that advertisers are motivated to make their disclosure tags and
landing pages as nonobvious and unfriendly as possible, because they
don’t <em>want</em> people to disable behavioral ad targeting.</p>

<h3><a href="http://cacr.uwaterloo.ca/techreports/2012/cacr2012-11.pdf">Changing of the Guards: A Framework for Understanding and Improving Entry Guard Selection in Tor</a></h3>

<p>“Entry guards” are a designated subset of Tor relays that are
considered reliable and probably-nonmalicious enough to use as entry
nodes.  The Tor directory authorities maintain a large list of
potential entry guards; Tor clients pick a smaller set of nodes off
the list, and route all circuits through them.  (This is done to
reduce the probability that the first relay in the chain will be
malicious; a malicious entry node can do rather more damage to client
anonymity than a malicious node later in the chain.)</p>

<p>This paper is an empirical investigation of how well this scheme works
in practice, and whether it can be improved.  They only have
preliminary conclusions, but some of those are pretty telling:
long-lived entry guards accumulate clients over time, and long-lived
malicious nodes are likely to become guards.  It’s unclear how to do
better than the present set of heuristics, though.</p>

<p>I’m highlighting this paper as much because of its clever methodology
as anything else: experiments were run entirely in simulation, but the
simulated Tor network is configured to match the real network,
according to the public relay directory.  This seems like an effective
strategy that could be applied to other sorts of network simulation
experiments.</p>

<h2>Tuesday</h2>

<h3><a href="http://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf">The Most Dangerous Code in the World: Validating SSL Certificates in Non-Browser Software</a></h3>

<p>SSL (also known as TLS) is the most widely deployed implementation of
the cryptosystem primitive known as a
“<a href="https://en.wikipedia.org/wiki/Secure_channel">secure channel</a>,”
which is <em>supposed</em> to deliver three security properties:
confidentiality (nobody can eavesdrop on data in transit), integrity
(nobody can <em>modify</em> data in transit), and authenticity (the transceiver
at the other end of the channel is who you think they are).
Authenticity is critical to real-world security, because the other two
properties by themselves do not protect against a <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">man-in-the-middle
attack</a>.
(How does someone get to be in the middle, you might wonder?  One
popular technique is to load malware onto the local network hub,
wireless router, etc.)</p>

<p>SSL provides authenticity via <em>certificates of identity</em>, which at
least one side transmits for the other to “verify”, before
communicating.  Verification is a complicated process that must be
done correctly or authenticity is lost.  The point of this talk is
that, while Web browsers (by dint of fifteen years of bug fixing)
usually get certificate verification right, most of the <em>other</em>
software that uses SSL has <em>not</em> had the benefit of fifteen years of
bug fixes, and so frequently gets it wrong.  They audited a wide
variety of middleware libraries and applications, found lots of bugs,
and make the strong claim that basically all non-browser SSL-using
applications are insecure against an active man-in-the-middle attack.</p>

<p>Why so terrible?  Well, the authors blame the ridiculous complication
of both the certificate scheme itself, and the library APIs involved.
One worked example stuck with me: Amazon Payments provides a client
library in PHP.  That code calls into a C library (libcurl) which
calls another C library (libssl) to perform the actual crypto.
libssl has dozens of options, all of which are faithfully reflected up
through libcurl to the PHP bindings that the Amazon Payments library
uses.  Many of those options are intended only for debugging, but the
author of the Amazon code zealously set them all, and set one of them
to a value that defeats security, without realizing it.</p>

<h3><a href="http://www2.dcsec.uni-hannover.de/files/android/p50-fahl.pdf">Why Eve and Mallory Love Android: An Analysis of Android SSL (In)Security</a></h3>

<p>On the same theme as the previous talk: Android’s stock runtime
libraries implement certificate validation correctly.  What could
possibly go wrong?  Well, you can disable validation, and lots of
people have found it easier to disable validation than to arrange for
their servers to have good certificates all the time.  They analyzed
13,500 apps from the Android Market and found just over 1000 instances
where validation had been disabled.  A manual audit of a smaller set
of apps found 41 out of 100 made some kind of related mistake which
also destroys security.  They demoed injecting a malicious update to a
virus scanner’s signature base, causing the scanner to detect <em>itself</em>
as malware and delete itself.</p>

<p>They didn’t talk at all about <em>why</em> this happens, I would speculate
it’s an operational problem at root, rather than a coding mistake.
Not only are certificates ridiculously complicated, getting them and
deploying them to all the necessary servers is difficult.  If you’re
an app developer and you’re under time pressure and your company’s
sysadmins are taking forever to get around to setting up the server
correctly… disabling verification may be the path of least
resistance.</p>

<h3><a href="http://www-users.cs.umn.edu/~hopper/decoy-ccs12.pdf">Routing Around Decoys</a></h3>

<p>Decoy routing is a scheme for censorship evasion, in which the
end-user’s machine sends out traffic overtly intended for an innocuous
site; routers somewhere in the backbone are programmed to notice a
covert message in that traffic, and divert it to the censored site
that the user actually wanted.  This paper points out that the
adversary in this scheme is normally in control of the routing
infrastructure for the evasive user’s
<a href="https://en.wikipedia.org/wiki/Autonomous_system_%28Internet%29">AS</a>
and can therefore control how that user’s packets get routed.  This
allows them to pull a variety of TCP-level tricks to detect decoy
routing, and then disrupt it simply by choosing BGP routes that don’t
go through the decoy routers.</p>

<p>Thus, for decoy routing to work, there have to be a bunch of important
overt destinations that are <em>completely</em> behind decoy routers, from
the censorious AS’s perspective.  Running the numbers for the usual
suspect ASes indicates that you have to get an impractically huge
number of backbone providers to deploy decoy routers.</p>

<h2>Wednesday</h2>

<h3><a href="http://lorrie.cranor.org/pubs/osframed.pdf">Operating System Framed in Case of Mistaken Identity</a></h3>

<p>This is a modern user study on one of the oldest problems in the
computer security book: If you are prompted to type your password, how
do you know that the program prompting you is entitled to know your
password?  In addition to the well-known “phishing sites” that try to
steal credentials for a particular site, malware is known to try to
steal local account passwords in hopes that they are also passwords
for high-value online services.  The user study presented itself (to
MTurk users) as an opinion poll of various online games, but one of
the games in the sequence reported a missing browser plugin and popped
up a fake OS installation-permission dialog, prompting for an
administrative password.  The visual deception was not perfect
(notably, Windows always dims out the rest of the screen when it puts
up a legitimate request for administrative credentials, which is
impossible to fake from inside a webpage) but it appears that the
majority of participants did not notice.  It’s unclear how many people
were genuinely deceived, since of course there is no way for the
experimenters to tell whether any password entered was real.  Only 20%
of participants admitted to having typed in a real password, but the
majority of participants claimed to have thought the prompt was real,
and rejected the request on other grounds (e.g. not wanting to install
plugins).</p>

<p>No solutions are offered, but considering how old and thorny this
problem is, we can’t really complain.</p>

<h3><a href="http://lersse-dl.ece.ubc.ca/record/279/files/fp005-sun.pdf">The Devil is in the (Implementation) Details: An Empirical Analysis of OAuth SSO Systems</a></h3>

<p>OAuth is a widely adopted federated authentication scheme.  It’s quite
complicated, and the 2.0 revision is even more complicated, to the
point where its spec editors are
<a href="http://hueniverse.com/2012/07/oauth-2-0-and-the-road-to-hell/">quitting in disgust</a>.
Its security depends, of course, on implementation correctness.</p>

<p>This study did a deep dive on a hand-picked set of very popular
websites that use OAuth (“if these guys get it wrong, what can we
expect for everyone else?”) and find all kinds of security-breaking
errors.  32% of the “relying parties” in their study are vulnerable to
a network eavesdropper stealing an access token (which are not
supposed to be sent to the relying site in cleartext, but people do it
anyway; site developers may be under the misapprehension that OAuth
makes SSL unnecessary).  64% of RPs mis-use <em>public</em> identifiers
(e.g. Facebook account IDs) as credentials, allowing impersonation by
anyone who knows the public identifier.  And nearly all RPs have
inadequate defense-in-depth against an XSS exploit stealing access
tokens (it is not clear to me whether this is a flaw in the relying
sites, or in OAuth itself; successful XSS is generally considered game
over anyway, but if this allows an attacker to escalate a credential
for <em>one</em> site into a pluripotent single-sign-on credential, that’s
much worse.</p>

<p>They didn’t have time to go into it in the talk, but the paper has a
number of suggestions for how “identity providers” can improve their
APIs so that it’s harder for RPs to get things wrong.  I approve of
this approach; I don’t know enough about the problem space to assess
whether their particular suggestions are helpful.</p>

<h3><a href="http://homes.cs.washington.edu/~yoshi/papers/czeskis-phoneauth-ccs12.pdf">Strengthening User Authentication through Opportunistic Cryptographic Identity Assertions</a></h3>

<p>This proposes a better user experience for two-factor authentication
using a smartphone as a second factor.  Right now some sites (notably
Google) will send you a text message with a numeric code you type back
into the site, or else offer an application that shows you a numeric
code that changes every minute, which again you have to type in.
Instead, they propose to have the computer talk directly to the phone
over unpaired Bluetooth, eliminating all user actions after pressing
“login”.  Bluetooth is notoriously slow but they claim that it is
still faster than reading the number off the phone and typing it in,
and regardless it seems like it would be a more pleasant user
experience.  However, I couldn’t tell you which of my computers
actually speak Bluetooth, and if you were on a machine with an old
browser you might be hosed.</p>

<p>Question from the audience: don’t most people leave Bluetooth off all
the time because it drains the batteries?  Answer: dunno, hasn’t that
been fixed by now?</p>

<h3><a href="http://www.cs.sunysb.edu/~xcai/fp.pdf">Touching from a Distance: Website Fingerprinting Attacks and Defenses</a></h3>

<p>“Fingerprinting attacks” have been around for a while.  The game is,
suppose a victim loads a website via an anonymizing service, which
provides an encrypted channel to a generic IP address.  An attacker
sees all the traffic on the encrypted channel, but can’t read it and
can’t observe its ultimate destination.  (Whether the anonymizing
service is a simple proxy or a mix network is moot, because the
attacker is snooping directly on the victim.)  Can the attacker still
deduce what website is being visited?  Maybe.  The attacker can still
observe the size and direction of each packet, and the inter-packet
interval for each pair of packets, so the idea is to record the
patterns of packets generated by known page loads, then try to match
those against traffic going to the anonymizing service.  Most of the
literature only uses packet size and direction.  Per-page accuracy in
the 60-80% range, within a “closed world” of 100 to 2000 pages (almost
always site front pages), is considered good.</p>

<p>This paper tries to improve fingerprint accuracy for individual pages
by using
<a href="https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance">Damerau-Levenshtein edit distance</a>
as the distance metric for a
<a href="https://en.wikipedia.org/wiki/Support_vector_machine">support vector machine</a>,
but the more interesting idea in the paper (unfortunately not covered
in the talk) is to use
<a href="https://en.wikipedia.org/wiki/Hidden_Markov_model">hidden Markov models</a>
to generalize from individual pages to entire sites.  If the victim is
looking at a particular page, it’s more likely that they will load one
of its outgoing hyperlinks next.  The attacker builds a hidden Markov
model of each site of interest, and uses it to predict a “typical”
pattern of page loads, which in turn adjusts the per-page classifiers’
thresholds.</p>

<h2>Thursday</h2>

<h3><a href="http://www.securitee.org/files/jsinclusions_ccs2012.pdf">You Are What You Include: Large-scale Evaluation of Remote JavaScript Inclusions</a></h3>

<p>Problem statement: We know cross-site inclusion of JS is ubiquitous;
who is trusted to provide JS libraries?  How hard would it be to
attack a JS library provider?  Are there attack vectors that are
non-obvious?</p>

<p>They give a few examples of actual exploits of JS library providers,
then move on to an analysis of a 3.3-million-page JS-aware web crawl,
within which they find 300,000 unique scripts loaded from 20,000
remote hosts.  There is, unsurprisingly, a
<a href="https://en.wikipedia.org/wiki/Zipf%27s_law">Zipf</a>-ish distribution of
script popularity.  Five of the ten most-frequently-included scripts
belong to Google and another three belong to “behind the scenes”
analytics agencies that are invisible to end users.  (The remaining
two are the Facebook and Twitter APIs.)</p>

<p>Common, exploitable errors include:</p>

<ul>
<li>Requesting JS from “localhost”, i.e. the host running the <em>browser</em>,
often on high port numbers.  Malware can take advantage of this to
mount attacks on sites, even in the presence of local privilege
barriers (e.g. a malicious Android app normally cannot poke the
browser).</li>
<li>Similarly, requesting JS from private IP space—now the malware
just has to be on the same <em>network</em> as the browser.</li>
<li>Requesting JS from a site whose domain registration has expired;
anyone could reregister it.</li>
<li>Similarly, requesting JS from a mistyped domain (they gave the
example of <code>googlesyndicatio.com</code> with the final ‘n’ left off) or
from an IP address that has been reassigned.</li>
</ul>

<p>They also pointed out that coarse-grained sandboxing won’t help
because the <em>intended</em> scripts need too many privileges, and that it’s
unusual for the scripts to change more often than once a week, so
maintaining local copies <em>might</em> be feasible, given sufficient
operational will and manpower.</p>

<h3><a href="https://www.hgi.rub.de/media/emma/veroeffentlichungen/2012/08/16/scriptlessAttacks-ccs2012.pdf">Scriptless Attacks—Stealing the Pie Without Touching the Sill</a></h3>

<p>This paper demonstrates a variety of XSS-style attacks that don’t
require any scripting at all, bypassing existing XSS filters,
<a href="https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html">CSP</a>,
NoScript—some even work in HTML-enabled mail readers.  (This is your
periodic reminder that nobody should ever send or accept HTML in email.)</p>

<p>The attacks, in general, work by exploiting some other feature of the
Web platform that can conditionally trigger tailored requests to a
malicious server: even when scripting is unavailable, it may be
possible to inject these features.  HTML form validation can be
applied to hidden form fields and can trigger URL loads if regular
expressions match.  Invisible SVG files can use
<a href="http://www.w3.org/TR/SVG/animate.html#SetElement"><code>&lt;set&gt;</code></a> elements
to capture keystrokes (this is the one that works in Thunderbird).
Custom fonts (using SVG, or OpenType’s discretionary ligatures) can
control the size of the viewport, which together with media queries,
can trigger URL loads.  (This one seems a bit too baroque to be
practical, but you never do know with these things.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/research/ccs-2012-conference-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!--
Hyper cache file: 1d343c49f97c24a7437ed44ae6e44b71
Cache created: 21-05-2013 14:01:59
HCE Version: 1.1.0
Load AVG: 0.49169921875(1)
-->