<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Data.Driven() &#187; Marcos</title>
	<atom:link href="http://datadriven.com.au/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://datadriven.com.au</link>
	<description>Marcos Caceres&#039; ramblings about stuff</description>
	<lastBuildDate>Wed, 14 Jul 2010 19:31:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" -->
		<copyright>&#xA9; </copyright>
		<managingEditor>marcosscaceres@gmail.com ()</managingEditor>
		<webMaster>marcosscaceres@gmail.com()</webMaster>
		<category></category>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>Marcos Caceres#039; ramblings about stuff</itunes:summary>
		<itunes:author></itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name></itunes:name>
			<itunes:email>marcosscaceres@gmail.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://datadriven.com.au/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://datadriven.com.au/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>Data.Driven()</title>
			<link>http://datadriven.com.au</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Presentation Slides &#8211; Privacy of Geolocation Implementations</title>
		<link>http://datadriven.com.au/2010/07/presentation-slides-privacy-of-geolocation-implementations/</link>
		<comments>http://datadriven.com.au/2010/07/presentation-slides-privacy-of-geolocation-implementations/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 17:57:59 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[W3C]]></category>
		<category><![CDATA[Geolocation]]></category>
		<category><![CDATA[Privacy]]></category>

		<guid isPermaLink="false">http://datadriven.com.au/?p=221</guid>
		<description><![CDATA[Below are the slides for the presentation I gave at the W3C Workshop for Advanced Web APIs. See my other blog post for more information about the workshop and  the paper.

View more presentations from Me.

Share on Facebook
	
	var button = document.getElementById('facebook_share_link_221') &#124;&#124; document.getElementById('facebook_share_icon_221') &#124;&#124; document.getElementById('facebook_share_both_221') &#124;&#124; document.getElementById('facebook_share_button_221');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return [...]]]></description>
			<content:encoded><![CDATA[<p>Below are the slides for the presentation I gave at the W3C Workshop for Advanced Web APIs. See my other <a href="http://datadriven.com.au/2010/06/privacy-of-geolocation-implementations/">blog post</a> for more information about the workshop and  the paper.</p>
<div id="__ss_4754324" style="width: 425px;"><object id="__sse4754324" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-100714121816-phpapp02&amp;stripped_title=privacy-of-geolocation-implementations" /><param name="name" value="__sse4754324" /><param name="allowfullscreen" value="true" /><embed id="__sse4754324" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-100714121816-phpapp02&amp;stripped_title=privacy-of-geolocation-implementations" name="__sse4754324" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/mcaceres">Me</a>.</div>
</div>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdatadriven.com.au%2F2010%2F07%2Fpresentation-slides-privacy-of-geolocation-implementations%2F&amp;t=Presentation%20Slides%20-%20Privacy%20of%20Geolocation%20Implementations" id="facebook_share_link_221">Share on Facebook</a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_221') || document.getElementById('facebook_share_icon_221') || document.getElementById('facebook_share_both_221') || document.getElementById('facebook_share_button_221');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_221') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://datadriven.com.au/2010/07/presentation-slides-privacy-of-geolocation-implementations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox 4 beta and geolocation</title>
		<link>http://datadriven.com.au/2010/07/firefox-4-beta-and-geolocation/</link>
		<comments>http://datadriven.com.au/2010/07/firefox-4-beta-and-geolocation/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 15:20:50 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Geolocation]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://datadriven.com.au/?p=218</guid>
		<description><![CDATA[Had a brief look to see if anything had changed re: geolocation in Firefox in its first beta release of 4.0. Seems they have started to integrate an indicator into the address bar.
The indicator still does not show up when geolocation is active, but it&#8217;s a start and it&#8217;s good to see that they are [...]]]></description>
			<content:encoded><![CDATA[<p>Had a brief look to see if anything had changed re: geolocation in Firefox in its first <a href="http://www.mozilla.com/en-US/firefox/4.0b1/">beta release of 4.0</a>. Seems they have started to integrate an indicator into the address bar.</p>
<div id="attachment_219" class="wp-caption aligncenter" style="width: 443px"><a href="http://datadriven.com.au/wp-content/uploads/2010/07/Screen-shot-2010-07-14-at-5.05.33-PM.png"><img class="size-full wp-image-219" title="Screen shot 2010-07-14 at 5.05.33 PM" src="http://datadriven.com.au/wp-content/uploads/2010/07/Screen-shot-2010-07-14-at-5.05.33-PM.png" alt="Firefox 4, beta 1's handling of geolocation" width="433" height="183" /></a><p class="wp-caption-text">Firefox 4 Beta 1&#39;s handling of Geolocation...</p></div>
<p>The indicator still does not show up when geolocation is active, but it&#8217;s a start and it&#8217;s good to see that they are working to fix that.</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdatadriven.com.au%2F2010%2F07%2Ffirefox-4-beta-and-geolocation%2F&amp;t=Firefox%204%20beta%20and%20geolocation" id="facebook_share_link_218">Share on Facebook</a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_218') || document.getElementById('facebook_share_icon_218') || document.getElementById('facebook_share_both_218') || document.getElementById('facebook_share_button_218');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_218') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://datadriven.com.au/2010/07/firefox-4-beta-and-geolocation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Daniel Solove at Google</title>
		<link>http://datadriven.com.au/2010/06/daniel-solove-at-googl/</link>
		<comments>http://datadriven.com.au/2010/06/daniel-solove-at-googl/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 19:47:01 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Daniel Solove]]></category>

		<guid isPermaLink="false">http://datadriven.com.au/?p=211</guid>
		<description><![CDATA[While investigating privacy, I read a fantastic book by Daniel Solove called The Future of Reputation: Gossip, Rumor and Privacy on the Internet. Daniel is a professor of law at the George Washington University Law School who has written extensively about privacy.
Yesterday, I found this video lecture given by him at Google. Check it out! [...]]]></description>
			<content:encoded><![CDATA[<p>While investigating privacy, I read a fantastic book by Daniel Solove called <cite><a href="http://docs.law.gwu.edu/facweb/dsolove/Future-of-Reputation/">The Future of Reputation: Gossip, Rumor and Privacy on the Internet</a></cite>. Daniel is a professor of law at the George Washington University Law School who has written extensively about privacy.</p>
<p>Yesterday, I found this video lecture given by him at Google. Check it out! It covers a lot of things that are in the book.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ABlO6o_q3lk&amp;hl=en_US&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/ABlO6o_q3lk&amp;hl=en_US&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>I&#8217;ll just say, it&#8217;s a little bit sad to see such few people in the audience. Also, the questions from Google employees are very defensive. In my opinion, Daniel is right to say that people should have more control over Google results about themselves, specially if those results are slanderous.</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdatadriven.com.au%2F2010%2F06%2Fdaniel-solove-at-googl%2F&amp;t=%20Daniel%20Solove%20at%20Google" id="facebook_share_link_211">Share on Facebook</a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_211') || document.getElementById('facebook_share_icon_211') || document.getElementById('facebook_share_both_211') || document.getElementById('facebook_share_button_211');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_211') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://datadriven.com.au/2010/06/daniel-solove-at-googl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Privacy issues in Mobile Safari on iPhone OS 3.2</title>
		<link>http://datadriven.com.au/2010/06/privacy-issues-in-mobile-safari-on-iphone-os-3-0/</link>
		<comments>http://datadriven.com.au/2010/06/privacy-issues-in-mobile-safari-on-iphone-os-3-0/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 15:52:56 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://datadriven.com.au/?p=203</guid>
		<description><![CDATA[With iOS 4.0 around the corner, its probably timely to get this post out now. This little post is part of my position paper, “Privacy of Geolocation Implementations”. I&#8217;m taking sections out that paper and republishing them here for comment.
As can be seen in the screenshot on the right, when a web page attempts to [...]]]></description>
			<content:encoded><![CDATA[<p>With iOS 4.0 around the corner, its probably timely to get this post out now. This little post is part of my position paper, “<a href="http://datadriven.com.au/wp-content/uploads/2010/06/caceres_marcos_geopriv.pdf">Privacy of Geolocation Implementations</a>”. I&#8217;m taking sections out that paper and republishing them here for comment.</p>
<div id="attachment_166" class="wp-caption alignright" style="width: 194px"><img class="size-full wp-image-166  " title="Iphone 3.0's modal geolocaiton popup" src="http://datadriven.com.au/wp-content/uploads/2010/06/Screen-shot-2010-06-04-at-2.53.59-PM1.png" alt="Iphone 3.0's modal geolocaiton popup" width="184" height="107" /><p class="wp-caption-text">A website viewed in Safari on iPhone 3.0 requesting to use the end-user&#39;s current location. But what will the data be used for? And where is the application getting the data from?</p></div>
<p>As can be seen in the screenshot on the right, when a web page attempts to access geolocation services on Mobile Safari, the browser presents the end-user with a dialog that states &#8220;[URL] Would Like To Use Your Currrent Location&#8221; with two options: &#8220;Don&#8217;t Allow&#8221; and &#8220;OK&#8221;.</p>
<p>This &#8220;click to confirm&#8221; model suffers from a number of  privacy issues: For one, the confirmation dialog does not give any indication to the end-user how their location is being derived: Is the location-provider the GPS? or is it the WIFI, or the cellular network, or a Web service? or a combination of those? and under what privacy policy does the location-provider provide that information? The iPhone provides no accessible means of viewing or changing the geolocation provider; hence an end-user has no control over the geolocation provider or even of knowing if their data is being encrypted on request.</p>
<p>Another privacy issue of Mobile Safari is that the confirmation prompts are <em>modal</em>: the user cannot fully view or interact with the underlying application to make an assessment of what the application might do with the positioning data, without first rejecting geolocation access to the website. Also, it is generally accepted that this kind of modal confirmation dialog lead to &#8216;click fatigue&#8217;: whereby users simply become accustomed to clicking &#8220;OK&#8221; to every prompt without grasping the consequences of their actions, and without having any real control over what personally identifiable data gets used, what it will be used for, or how long that data will be kept, or even if it will be made available (sold) to third parties. The privacy policies that govern geolocation services are buried three-levels deep in the &#8220;Settings&#8221; menu of the iPhone, under the &#8220;Legal&#8221; option, which contains <span style="text-decoration: line-through;">about 50</span> a lot of pages of legalese and no searchable index!</p>
<div id="attachment_204" class="wp-caption aligncenter" style="width: 298px"><a href="http://datadriven.com.au/wp-content/uploads/2010/06/IMG_2001.PNG"><img class="size-full wp-image-204  " title="Iphone 3.0 Legal page" src="http://datadriven.com.au/wp-content/uploads/2010/06/IMG_2001.PNG" alt="Iphone 3.0 Legal page" width="288" height="432" /></a><p class="wp-caption-text">The Iphone 3.0 &quot;Legal&quot; screen does not contain an index. Nor are hypelinks active. </p></div>
<p>Similar confirmation dialogs are found in the iPhone&#8217;s native applications (e.g., the <em>Camera</em> and <em>Maps</em> applications). If a user changes their mind about allowing location services, there is usually no way in the application  for them to revoke geolocation access without either quitting the application, uninstalling the application, or finding some other convoluted way to revoke access to geolocation services (e.g., having to globally disable location services on the device through the &#8220;Settings&#8221; menu). What is worst is that  once a user grants an application access to geolocation services three times, the system grants access to location services forever &#8211; or until the device is &#8220;reset&#8221;, meaning resetting back to factory default settings.</p>
<p><strong>UPDATE:</strong> @andreasbovens <a href="http://twitter.com/andreasbovens/status/15716193147">pointed out</a> to me on Twitter that the iPhone does, in fact, contain a way to reset location warnings. Go to &#8220;Settings &gt; Reset &gt; Reset Location Warnings&#8221;. My bad.</p>
<div id="attachment_214" class="wp-caption aligncenter" style="width: 269px"><a href="http://datadriven.com.au/wp-content/uploads/2010/06/Screen-shot-2010-06-11-at-12.06.42-PM.png"><img class="size-full wp-image-214 " title="Iphone reset location warnings" src="http://datadriven.com.au/wp-content/uploads/2010/06/Screen-shot-2010-06-11-at-12.06.42-PM.png" alt="Iphone reset location warnings" width="259" height="42" /></a><p class="wp-caption-text">Iphone reset location warnings, which I didn&#39;t find the first time around <img src='http://datadriven.com.au/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p></div>
<p>Applications that get granted access then do not generally provide an end-user with a means to revoke that access on an individual basis. This is also true on Mobile Safari: even after clearing the cache, history, and cookies Mobile Safari still grants websites access to geolocation without prompting the user.</p>
<p>In summary, Apple&#8217;s Mobile Safari browser (and iPhone 3.0 in general) provides end-users with limited access to privacy controls. It also provides no means of seeing which Websites have access to geolocation, nor once granted can that access be easily revoked by an end-user. The OS, however, provides means of achieving confidentiality by allowing the end-user to globally disable location services, WIFI, and cell-tower communication (via &#8220;Airplane Mode&#8221;). INSERT: The iPhone OS also provides a &#8220;Reset Location Warnings&#8221; option for all applications.</p>
<div id="attachment_205" class="wp-caption aligncenter" style="width: 246px"><a href="http://datadriven.com.au/wp-content/uploads/2010/06/Screen-shot-2010-06-08-at-5.50.54-PM.png"><img class="size-full wp-image-205 " title="Iphone Airplane mode" src="http://datadriven.com.au/wp-content/uploads/2010/06/Screen-shot-2010-06-08-at-5.50.54-PM.png" alt="Iphone Airplane mode" width="236" height="37" /></a><p class="wp-caption-text">iPhone Airplane mode: anonymity?</p></div>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdatadriven.com.au%2F2010%2F06%2Fprivacy-issues-in-mobile-safari-on-iphone-os-3-0%2F&amp;t=Privacy%20issues%20in%20Mobile%20Safari%20on%20iPhone%20OS%203.2" id="facebook_share_link_203">Share on Facebook</a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_203') || document.getElementById('facebook_share_icon_203') || document.getElementById('facebook_share_both_203') || document.getElementById('facebook_share_button_203');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_203') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://datadriven.com.au/2010/06/privacy-issues-in-mobile-safari-on-iphone-os-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Privacy of Geolocation Implementations</title>
		<link>http://datadriven.com.au/2010/06/privacy-of-geolocation-implementations/</link>
		<comments>http://datadriven.com.au/2010/06/privacy-of-geolocation-implementations/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 22:38:18 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[User Experience]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[Geolocation]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://datadriven.com.au/?p=200</guid>
		<description><![CDATA[Here is my position paper, &#8220;Privacy of Geolocation Implementations&#8221; (PDF ~500K), that I prepared for the W3C Workshop on Privacy for Advanced Web APIs.
UPDATE: the presentation slides are now available.
It&#8217;s a little bit drafty, so any feedback or comments welcomed. I will republish as a HTML file soon.
Investigating privacy in depth has been one of [...]]]></description>
			<content:encoded><![CDATA[<p>Here is my position paper, &#8220;<a href="http://datadriven.com.au/wp-content/uploads/2010/06/caceres_marcos_geopriv.pdf">Privacy of Geolocation Implementations</a>&#8221; (PDF ~500K), that I prepared for the <a href="http://www.w3.org/2010/api-privacy-ws/">W3C Workshop on Privacy for Advanced Web APIs</a>.</p>
<p><strong>UPDATE:</strong> the <a href="http://datadriven.com.au/2010/07/presentation-slides-privacy-of-geolocation-implementations/">presentation slides</a> are now available.</p>
<p>It&#8217;s a little bit drafty, so any feedback or comments welcomed. I will republish as a HTML file soon.</p>
<p>Investigating privacy in depth has been one of the most interesting things I&#8217;ve done in a long time&#8230; though it has left me a little bit creeped out. Hopefully I&#8217;ll get around to writing a bit more about what I read, what I&#8217;ve learned, and what practical changes I&#8217;ve made.</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdatadriven.com.au%2F2010%2F06%2Fprivacy-of-geolocation-implementations%2F&amp;t=Privacy%20of%20Geolocation%20Implementations" id="facebook_share_link_200">Share on Facebook</a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_200') || document.getElementById('facebook_share_icon_200') || document.getElementById('facebook_share_both_200') || document.getElementById('facebook_share_button_200');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_200') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://datadriven.com.au/2010/06/privacy-of-geolocation-implementations/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Privacy implications of using digital signatures to enable APIs</title>
		<link>http://datadriven.com.au/2010/06/digsigs-and-apis/</link>
		<comments>http://datadriven.com.au/2010/06/digsigs-and-apis/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 08:49:35 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[Widgets]]></category>

		<guid isPermaLink="false">http://datadriven.com.au/?p=180</guid>
		<description><![CDATA[The following part of my forthcoming position paper for the W3C Workshop on Privacy and advanced APIs. Because my paper focused on implementation of geo-location, this sections had to be cut out. However, I think the following is relevant to the discussion about privacy and packaged Web applications, which is why I am publishing it here.
When it [...]]]></description>
			<content:encoded><![CDATA[<p><em>The following part of my forthcoming position paper for the <a href="http://www.w3.org/2010/api-privacy-ws/">W3C Workshop on Privacy and advanced APIs</a>. Because my paper focused on implementation of geo-location, this sections had to be cut out. However, I think the following is relevant to the discussion about privacy and packaged Web applications, which is why I am publishing it here.</em></p>
<p>When it comes to privacy, it is obviously insufficient to simply define an API in terms of an Interface Definition Language (IDL), such as  WebIDL and OMGIDL, within specifications. IDLs are limited in that they only allow one to express simple inputs, outputs, and data type constraints. Nevertheless, implementations exist based on specifications that only provide IDL definitions, which are agnostic to privacy.  To overcome these limitations, some implementers leverage  digital signatures as the means of enabling privacy-sensitive APIs in an application. For example, if application &#8220;X&#8221; is signed by company &#8220;Y&#8221; then allow application &#8220;X&#8221; to access API &#8220;Z&#8221;.</p>
<div class="wp-caption aligncenter" style="width: 378px"><img style="margin-top: 0px; margin-bottom: 0px; padding: 0px;" title="Java Fail" src="http://datadriven.com.au/wp-content/uploads/2010/06/Screen-shot-2010-06-04-at-3.50.07-PM.png" alt="Java digital signature OCSP validation fail" width="368" height="153" /><p class="wp-caption-text">Java treats an application as unsigned, and reduces its privileges: meaning some APIs will not be available.</p></div>
<p>Such an approach to privacy is limited in that it hands control of privacy matters over to a third-party (the signer) and implicitly assumes that the end-users unquestionably, or via a End User License Agreement (EULA), trusts the signer as the authority to enable an API without necessarily informing an end-user as to what is going on &#8220;under the hood&#8221; &#8211; such a model is commonly seen in the Java application space.</p>
<h3>Feature Requests</h3>
<p>Others have extended the digital signature to enable API model by having software developers explicitly declare what functionality an application will use (lets call them &#8220;<em>feature requests</em>&#8220;). Upon installation, the end-user is presented with a dialog informing them of the capabilities the application will use, and if they wish to proceed. An example is Chrome&#8217;s browser extensions, seen on the right.</p>
<div class="wp-caption aligncenter" style="width: 321px"><img title="Install lastPass on Google Chrome" src="http://datadriven.com.au/wp-content/uploads/2010/06/Screen-shot-2010-06-06-at-8.52.36-PM.png" alt="Install lastPass on Google Chrome" width="311" height="154" /><p class="wp-caption-text">Chrome&#39;s browser extensions show the capabilities of a packaged application, but lacks information about consequences.</p></div>
<p>From a privacy perspective, this model is significantly better then simply enabling APIs based on digital signatures. However, this model is also problematic in that it often does not provide any meaningful information about, for instance, what &#8220;can access your browsing history&#8221; coupled with &#8220;access your data on all websites&#8221; means. It can be argued that this model unfairly puts the consequences of consent on the end-user, by entering them into an agreement with an application without recourse (i.e., &#8220;Yes website/application X, you can access my history data even though I don&#8217;t know what you will do with it.&#8221;).</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdatadriven.com.au%2F2010%2F06%2Fdigsigs-and-apis%2F&amp;t=Privacy%20implications%20of%20using%20digital%20signatures%20to%20enable%20APIs" id="facebook_share_link_180">Share on Facebook</a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_180') || document.getElementById('facebook_share_icon_180') || document.getElementById('facebook_share_both_180') || document.getElementById('facebook_share_button_180');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_180') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://datadriven.com.au/2010/06/digsigs-and-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>W3C Workshop on Privacy and Advanced Web APIs</title>
		<link>http://datadriven.com.au/2010/06/w3c-privacy-worksho/</link>
		<comments>http://datadriven.com.au/2010/06/w3c-privacy-worksho/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 11:15:39 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://datadriven.com.au/?p=141</guid>
		<description><![CDATA[The W3C is hosting a workshop on Privacy for Advanced Web APIs and is currently calling for position papers. Although I don&#8217;t know what an &#8220;advanced Web API&#8221; is, it&#8217;s great to see members of the W3C taking an active interest in privacy, and emphasizing that the architectural design of APIs have a fundamental role [...]]]></description>
			<content:encoded><![CDATA[<p>The W3C is hosting a workshop on <em><a href="http://www.w3.org/2010/api-privacy-ws/">Privacy for Advanced Web APIs</a></em> and is currently calling for position papers. Although I don&#8217;t know what an &#8220;advanced Web API&#8221; is, it&#8217;s great to see members of the W3C taking an active interest in privacy, and emphasizing that the architectural design of APIs have a fundamental role to play in protecting the privacy of individuals.  The W3C has opened the workshop up to the public: it would be great to get a diverse range of people together to discuss the role and limits of APIs in protecting privacy, particularly from the academic community.  I don&#8217;t know how much marketing drive there was behind the workshop, but hopefully a variety of people will submit papers.</p>
<p>Papers are  due on the 7th of June. I&#8217;m currently trying to put a position paper together which I will post here once I&#8217;m done.</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdatadriven.com.au%2F2010%2F06%2Fw3c-privacy-worksho%2F&amp;t=W3C%20Workshop%20on%20Privacy%20and%20Advanced%20Web%20APIs" id="facebook_share_link_141">Share on Facebook</a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_141') || document.getElementById('facebook_share_icon_141') || document.getElementById('facebook_share_both_141') || document.getElementById('facebook_share_button_141');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_141') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://datadriven.com.au/2010/06/w3c-privacy-worksho/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The &#8220;Good Life&#8221;: The right of expression, religion, and thought.</title>
		<link>http://datadriven.com.au/2010/05/the-good-life-the-right-of-expression-religion-and-thought/</link>
		<comments>http://datadriven.com.au/2010/05/the-good-life-the-right-of-expression-religion-and-thought/#comments</comments>
		<pubDate>Sat, 29 May 2010 19:42:13 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://datadriven.com.au/?p=126</guid>
		<description><![CDATA[Everybody Draw Muhammad Day was a reaction to an angry mob of  Muslim  attacking Swedish cartoonist Lars Vilks, as well as a reaction to threats of death made against political satirists/creator of the TV show South Park. Lars Vilks is the Danish cartoonist whose cartoon drawings of Muhammad fired up a small number of muslim [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Everybody_Draw_Mohammed_Day">Everybody Draw Muhammad Day</a> was a reaction to an angry mob of  Muslim  attacking Swedish cartoonist <a href="http://en.wikipedia.org/wiki/Lars_Vilks">Lars Vilks</a>, as well as a reaction to threats of death made against political satirists/creator of the TV show South Park. Lars Vilks is the Danish cartoonist whose cartoon drawings of Muhammad fired up a small number of muslim extremist in 2007. Wikipedia provides a good background to the <a href="http://en.wikipedia.org/wiki/Lars_Vilks_Muhammad_drawings_controversy">controversy</a>.    According to Wikipedia, Lars Vilks was attacked for attempting to show a banned YouTube video made by an Iranian artist Sooreh Hera entitled &#8220;Allah ho gaybar&#8221;. The artwork is a montage of religions and homoerotic imagery set to the tune of &#8220;<cite>I want to take you to a gay bar</cite>&#8221; by the band Electric Six (<a href="http://www.youtube.com/watch?v=HTN6Du3MCgI">YouTube video</a>).</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="415" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.liveleak.com/e/7b0_1209070671" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="480" height="415" src="http://www.liveleak.com/e/7b0_1209070671" wmode="transparent"></embed></object></p>
<h3>Attack</h3>
<p>The video below shows the reaction of the protesters.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/K-j32YAI3XU&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube-nocookie.com/v/K-j32YAI3XU&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h3>Reaction</h3>
<p>My initial reaction to seeing the YouTube video was a sense of outrage and anger. But I wanted to understand exactly why I was angry. That is, to go beyond the simple &#8220;fucking Muslims! here they go again.&#8221; that is most people&#8217;s reaction and really does not help anyone, to a more reflective analysis of my own moral position that causes me outrage (well, enough outrage to sit down and &#8220;blog-it-out&#8221; here). I knew on the face of it that what angered me was that people would react violently towards homosexual imagery and towards Lars Vilks &#8211; doubly outraged in an academic institutional setting, which establishes itself as a place of tolerance, debate, dissemination of knowledge, diversity of ideas, and scientific inquiry (things that are a direct affront to religious dictates, which are generally inward looking and discourage questioning and self analysis &#8211; I don&#8217;t need to give examples of <a href="http://en.wikipedia.org/wiki/Religious_persecution"> </a> <a href="http://en.wikipedia.org/wiki/Religious_persecution">religious persecution</a> of science, women, other religions, etc., as they are so common in history). Upon reflection, to me, the purpose of art is to challenge the viewer and to seek an aesthetic reaction &#8211; that reaction may differ from one individual to the next. However, to suggest that attacks were simply motivated by an aesthetic reaction to what was on screen is of course naive. It is clear that the crowd had already gathered there with the intent on disrupting the talk that Lars Vilks was about to give and had no intention in engaging in a well-mannered debate about, well, anything.</p>
<p>In order to understand my outrage, I need to frame what to me constitutes &#8220;the good life&#8221;: that is, that highest moral authority and rights to which I must afford all human beings in the way I interact with them, and what I expect back from <strong>all</strong> human beings &#8211; something that is clearly at odds with Muslim protesters, for why else do I feel outrage? For this I turn to the <a href="http://www.un.org/en/documents/udhr/index.shtml">Universal Declaration of Human Rights </a>(UDoHR). Faith-wise, this means that I believe that globally applying the UDoHR would yield a better world in which I want to live and in which I want others to live (for an atheist who is influenced by <a href="http://en.wikipedia.org/wiki/Immanuel_Kant">Immanuel Kant</a>, this is a matter of faith). What this also gives us a simple set of criteria by which we can judge our own actions and the action of others upon us in terms of justice, rights, and morality. The assumption being that the UDoHR are, in fact, universally applicable and do not seek to impose a higher (read religious or &#8220;god-given&#8221;) moral authority, and that the declaration is timeless. It also does away with intermediaries (God, churches, religions) and puts the responsibility of just action and behaviors on <strong>individuals</strong>: to be clear, you do things because it is the &#8220;right&#8221; thing to do at the individual level, and not because it suits the norms of a particular time or pleases some community (e.g,. &#8220;everyone in my church says abortion is wrong&#8221;), commercial entity (e.g., &#8220;I signed an NDA&#8221;), nature (e.g., &#8220;I&#8217;m hungry, so I must eat you&#8221;), or some constructed moral authority (e.g., &#8220;God said being gay is wrong&#8221;) &#8211; I give the examples because they demonstrate subtle forms of coercion &#8211; in each case, the individual is not free because something is influencing what they do. From my understanding of  Kant, turning to innate sense of human rights provides a sound basis on which to makes  particularly if you apply a &#8220;maximizing principle&#8221;:  simply take a situation, like suppressing someone speech, and maximize it globally. The act can only be moral if it does not violate someone else&#8217;s right &#8211; that is, justify an action on socio-economic terms, or in the interests of &#8220;the good of the people&#8221; is immoral (see the deeply flawed <a href="http://en.wikipedia.org/wiki/Utilitarianism">Utilitarianism</a>, which seems to dictate much of American foreign policy). It is also fundamentally  different from &#8220;do to others what you would like to be done to you&#8221; (<a href="http://en.wikipedia.org/wiki/The_Golden_Rule#Criticisms">the Golden Rule</a>), for, as stated nicely by George Bernard Shaw and quoted in the criticism section in the  <a href="http://en.wikipedia.org/wiki/The_Golden_Rule#Criticisms">Wikipedia article</a>, &#8220;The golden rule is that there are no golden rules &#8230; Do not do unto others as you would that they should do unto you. Their tastes may not be the same.&#8221; Lastly, what is nice about the UDoHR is that it provides us some clear text to point at and quote from, as one would quote from a religious text.</p>
<p>What is clear from the video is that the protesters seem to be angry about some lack of respect for their particular moral norms (by Lars Viks specifically, and by Western Society in general). To show these images or videos seems to affect them as, for instance, an atheists being shown the video of Lars Viks being attacked by a group of Muslims (!) &#8211; that is, my reaction of moral outrage is because I see them attacking something that is normal, just, and right to me: the discussion and presentation of art and politico-religious satire within an academic context. This is where a point is drawn about what is just (in the sense of justice) and where religion though and institutions begin the threaten the liberties of individuals. In other words, when one group of people start to attack another group of people on the basis of religious morality (rather then human rights), religion breaches its boundaries and threatens, basically, everything (in the sense that &#8220;religion poisons everything&#8221;, as <a href="http://en.wikipedia.org/wiki/Christopher_Hitchens">Christopher Hitchens</a> puts it ).</p>
<p>The angry protester&#8217;s reaction then is framed as one that challenges another norm that is held as a pinnacle: that of freedom of expression. Article 19 of the Universal Declaration for Human Rights declares that, &#8220;Everyone has the right to freedom of opinion and expression; this right includes freedom to hold opinions without interference and to seek, receive and impart information and ideas through any media and regardless of frontiers.&#8221; The protester&#8217;s violent attack and violation of norms within a university setting certainly violate that right. The protester go on to violate  their right, and other&#8217;s participants right to peaceful assembly &#8211; Article 20 &#8220;(1) Everyone has the right to freedom of peaceful assembly and association.&#8221; They take the right away of Lars Vilks to speak, and for others to listen, and even from themselves.</p>
<p>This outrages me: someone (Muslim protesters) has violated someone&#8217;s rights. Violation of rights are not just- they are immoral and not in line with my view of &#8220;the good life&#8221;.  If someone&#8217;s rights can be violated by this group (Muslim protesters), then one day they might come and violate my rights. And I need my rights to do the right thing by people.</p>
<h3>Response: A Picture of Muhammad</h3>
<p><img class="size-full wp-image-128 alignleft" title="Prophet Muhammad" src="http://datadriven.com.au/wp-content/uploads/2010/05/Screen-shot-2010-05-29-at-9.23.41-PM.png" alt="Prophet Muhammad" />Article 18 states that, &#8220;Everyone has the right to freedom of thought, conscience and religion; this right includes freedom to change his religion or belief, and freedom, either alone or in community with others and in public or private, to manifest his religion or belief in teaching, practice, worship and observance.&#8221; But religion cannot be used to violate people&#8217;s rights.</p>
<p>Exercising my right to freedom of expression I give you a picture of the Prophet Muhammad. I drew this picture to portrait Muhammad just standing there. I don&#8217;t seek to mock the &#8220;prophet&#8221; by drawing him as an animal or something offensive.</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdatadriven.com.au%2F2010%2F05%2Fthe-good-life-the-right-of-expression-religion-and-thought%2F&amp;t=The%20%22Good%20Life%22%3A%20The%20right%20of%20expression%2C%20religion%2C%20and%20thought." id="facebook_share_link_126">Share on Facebook</a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_126') || document.getElementById('facebook_share_icon_126') || document.getElementById('facebook_share_both_126') || document.getElementById('facebook_share_button_126');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_126') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://datadriven.com.au/2010/05/the-good-life-the-right-of-expression-religion-and-thought/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zip files and Encoding &#8211; I hate you.</title>
		<link>http://datadriven.com.au/2008/12/zip-files-and-encoding-i-hate-you/</link>
		<comments>http://datadriven.com.au/2008/12/zip-files-and-encoding-i-hate-you/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 20:44:36 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[W3C]]></category>
		<category><![CDATA[Widgets]]></category>
		<category><![CDATA[character encodings]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[WebApps]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://datadriven.com.au/?p=112</guid>
		<description><![CDATA[I&#8217;ve written about some of the issues with depending on zip as a packaging format in the past. As people know, Web Apps is depending on Zip as the packaging format for Widgets.
Zip the good
Zip has a lot going for it. It is ubiquitous and dependable&#8230; so long as you don&#8217;t want to share files [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written about some of the <a href="http://datadriven.com.au/2007/10/17/widgets-10-v2/">issues with depending on zip as a packaging</a> format in the past. As people know, <a href="http://www.w3.org/2008/webapps/">Web Apps</a> is depending on <a href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT">Zip</a> as the packaging format for <a href="http://dev.w3.org/2006/waf/widgets/">Widgets</a>.</p>
<p><strong>Zip the good</strong></p>
<p>Zip has a lot going for it. It is ubiquitous and dependable&#8230; so long as you don&#8217;t want to share files across cultures.</p>
<p><strong>Zip the bad</strong></p>
<p>The Zip spec does not seem to know that there are normalization models for UTF-8, when there are actually 4 (or more, because there is some non-standard ones too!). The Zip file gives no guidance as to how file names inside zip files are to be normalized.</p>
<p>Consider, when a zip file is created on Linux, it just writes the bytes for the file name in the encoding of the underlying file system. So, if the file system is in <span style="color: black;">ISO-8859-1</span>, the bytes are written in <span style="color: black;">ISO-8859-1</span>. This may seem ok, but when you decompress the zip file on Windows, which runs on encoding Windows-1252, the file names get all mangled. If the underlying encoding of the file system on Linux is something else, you won&#8217;t be able to share files with other systems at all. So in this case, it is not Window&#8217;s fault.</p>
<p>The Zip spec says that the only supported encodings are CP437 and UTF-8, but everyone has ignored that. Implementers just encode file names however they want (usually byte for byte as they are in the OS&#8230; see table below).</p>
<p>It gets worst! because MacOS runs on some weird non-standard decomposed Unicode mode, you can only share zip files with other MacOs users. According to this <a href="http://osdir.com/ml/network.gnutella.limewire.core.devel/2003-01/msg00000.html">email</a>, the LimeWire guys also ran into a similar problem with regards to encodings in MacOS:</p>
<p>&#8220;for example a French, German or Spanish Windows user cannot exchange files that contain [file names with] French, German or Spanish accents with a French, German or Spanish Macintosh users&#8221;</p>
<p>The following table illustrates the problem:</p>
<table border="1">
<caption>Bytes that represent ñ in a Zip file (in hex)</caption>
<tbody>
<tr>
<th>File name</th>
<th>Zip in Windows</th>
<th>Zip in Linux</th>
<th>Zip in Mac OS</th>
</tr>
<tr>
<td><span style="color: black;">ñ</span></td>
<td>a4 (Extended US-ASCII/CP437)</td>
<td>C3 B1 (UTF-8 NFC)</td>
<td>6E CC 83 (UTF-8 NFD)</td>
</tr>
</tbody>
</table>
<p>Yes! holly crap! three different byte sequences corresponding to different character encodings.</p>
<p>The only way around this would be a *special* custom-built widget zipping tool that normalizes file name strings to NFC. If the widget engine needs to decompress the widget to disk, then it would take the NFC and convert them to the operating system&#8217;s native encoding (or store the files in memory, and reference them that way). This affects the URI scheme and DOM normalization of Widgets, so Web Apps will have to deal with it eventually&#8230; but not sure exactly how.</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdatadriven.com.au%2F2008%2F12%2Fzip-files-and-encoding-i-hate-you%2F&amp;t=Zip%20files%20and%20Encoding%20-%20I%20hate%20you." id="facebook_share_link_112">Share on Facebook</a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_112') || document.getElementById('facebook_share_icon_112') || document.getElementById('facebook_share_both_112') || document.getElementById('facebook_share_button_112');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_112') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://datadriven.com.au/2008/12/zip-files-and-encoding-i-hate-you/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Position on Widget Security</title>
		<link>http://datadriven.com.au/2008/12/position-on-widget-security/</link>
		<comments>http://datadriven.com.au/2008/12/position-on-widget-security/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 03:15:19 +0000</pubDate>
		<dc:creator>Marcos</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[Widgets]]></category>

		<guid isPermaLink="false">http://datadriven.com.au/?p=110</guid>
		<description><![CDATA[I recently submitted a paper to the W3C&#8217;s Workshop on Security for Access to Device APIs from the Web. The workshop is being held in London on the 10th of December, 2008. The website for the workshop informs us that:
With the emergence of the Web as a compelling alternative to locally installed applications, security issues [...]]]></description>
			<content:encoded><![CDATA[<p>I recently submitted a <a href="http://www.w3.org/2008/security-ws/papers/marcos-policy-widgets.txt">paper</a> to the W3C&#8217;s Workshop on <a href="http://www.w3.org/2008/security-ws/">Security for Access to Device APIs from the Web</a>. The workshop is being held in London on the 10th of December, 2008. The website for the workshop informs us that:</p>
<blockquote><p>With the emergence of the Web as a compelling alternative to locally installed applications, security issues are an increasing obstacle for realizing the full potential of the Web, in particular when Web applications developers need to get access to features not traditionally available in the browsing environment: cameras, GPS systems, connectivity and battery levels, external applications launch, access to personal data (e.g. calendar or addressbook), etc.</p>
<p>The goal of this workshop is to bring together people from a wide variety of backgrounds (API designers, security experts, usability experts, &#8230;) to discuss the security challenges involved in allowing Web applications and widgets to access the APIs that allow to control these features, and to advise the W3C on appropriate next steps for any gap that needs to be addressed with new technical work.</p></blockquote>
<p>As <a href="http://www.w3.org/2008/security-ws/papers/">all the papers of the workshop</a> are now available on-line, I thought I would republish my position paper here. Being a child of the social networking era, my paper focuses on securing widgets using a community-driven approach to control rogue software. I propose that control security policies be handed over to trusted communities. Anyway, I won&#8217;t spoil the fun by rewriting the paper here. I also include the comments I got back from the panel reviewers at the bottom of the post.</p>
<pre style="font-size: 1.2em"><strong><em>Towards a community-controlled security policy for Widgets</em></strong>
Marcos Caceres, W3C Invited Expert

Traditional software security models have had limited success in
halting the spread of malware. Some studies suggest that roughly 1/10
of all computers connected to the Internet are running some sort of
malware. Software security firms have effectively given up trying to
keep track of the number of infected computers.

The Web Apps working group is currently working towards standardizing
a class of client-side Web application colloquially referred to as a
"Widget".At the time of writing, widgets currently lack a standardized
security model that would make user's less susceptible to widgets as
malware. A new standardized approach is needed to protect users and
limiting widgets from further exacerbating the software security
problem. This is  particularly important on mobile devices (one of the
target platforms for Widgets), which already outnumber PC; A number
that is only set to increase as prices on mobile devices continue to
decrease and the social value of  convergence between internet and
device capabilities increasingly add value to the social dimensions of
the Web.

The mobile industry has largely avoided the software security problems
that plague PCs through (a) strict control over what software can go
on devices, or (b) by requiring that developers have their software
digitally signed by a vendor or some other trusted third party to
access device features. However, the stringent controls have resulted
in:

 o Lack of innovation within the mobile software application space,
where only those who can afford to pay for a digital certificate are
allowed to access APIs on devices.
 o High barrier of entry for developers, because of the cost of buying
a code signing certificate.
 o Developers circumventing security policies and distribution models
(eg. jail-breaking the iPhone).
 o The creation of an extremely closed and anti-competitive
environment, where a single vendor can "kill" applications for any
arbitrary reason (as Apple has done a number of times on the iPhone).

At the same time as malware has grown exponentially, a different
phenomenon has shown itself resilient to vandalism and attacks on the
Web. Namely, Wikipedia has sustained a high level of quality of
content by leveraging a community's interest to keep the quality of
content high.

In this paper, I take the position that a different approach to
software security is needed for widgets: one that builds on
traditional ways of keeping software secure, but also attempts to
leverage the community of users that use widgets. In other words, a
community-driven security model for widgets whereby the social layer
of the Web form "trusted authorities" that have the ability, through
existing Web protocols, determine and dynamically adapt the security
privileges of Widgets running on end-user's devices (or even recommend
the removal of Widgets from an end-user's device, if the trusted
authority deems that a widget has become malicious).

Standardization of Widgets through Web Apps Working Group
Widgets are client-side applications that make use of Web
technologies, such as HTML, CSS, and JavaScript instead of compiled
programming languages such as Java or C#.  Although not formally
specified at the time of writing, the security model that underpins
widgets is one of almost total lockdown: by default, a widget is only
allowed to access resources within it's own package (widgets are
always packaged in a Zip file). To get access to the network, a widget
must explicitly request it through a configuration document . Widgets,
however, rely on the limited functionality provided by browser's APIs
in order to do anything remotely useful. For example, widgets from
various vendors rely on the XmlHttpRequest object to make asynchronous
requests to fetch data from the Web. The Web Applications Working
Group seeks to change this by allowing widget authors to have access
to APIs beyond those provided by today's Web browsers. To this effect,
the Working Group formulated the following requirement in the Widgets
1.0 Requirements document [1].

"R21. Feature Access Declarations
A conforming specification MUST specify or recommend a means to allow
authors to declare that an instantiated widget will require access to
device specific standardized features or proprietary features (e.g. a
proprietary API to access the camera on a device). A conforming
specification MUST be specified in such a way that fallback
relationships can be declared so that if one feature is unavailable,
another can be declared as a possible substitute. In addition, a
conforming specification MUST provide authors with a means of stating
which features are optional and which features are mandatory for a
widget to run."

Feature access, in this context, generally refers to accessing APIs to
device capabilities. The current proposal for standardization of
feature access is to declare, within a widget's configuration
document, a &lt;feature&gt; element. The feature element, as specified at
the time of writing, has two attributes: name and required. Name is a
URI that identifies the feature, and required means that the feature
is required for the widget to run. Feature elements can be nested,
forming a fallback relationship. So, if the outer most feature is
unavailable, then the widget user agent will attempt to use the next
inner feature like so:

&lt;widget xmlns="http://www.w3.org/ns/widget"
   wid="http://widgets.com/superWidget"&gt;
   &lt;feature name="uri:tryMeFirst"&gt;
       &lt;feature name="uri:tryMeSecond"/&gt;
   &amp;lt;/feature&amp;gt;
&lt;/widget&gt;

It also needs to be stated at this point that widgets can be digitally
signed. Creating a digital signature for widgets involves hashing all
the resources inside a widget package to produce a digital signature
resource. This resource is stored inside the widget as
"signature.xml". Multiple signatures by different vendors may be
included in a widget package.

<strong>Securing feature access</strong>
Consider the following hypothetical example. A developer has created a
widget that requires the use of the W3C's Geolocation API. In the
example below, the Geolocation API is identified by URI, which the
widget engine is able to recognize.

&lt;widget xmlns="http://www.w3.org/ns/widget"
   wid="http://widgets.com/superWidget"&gt;
   &lt;feature name="http://www.w3.org/api/geo" required="yes" /&gt;
&lt;/widget&gt;

Then, at runtime, there are essentially four ways that a feature
widget can be allowed to access the feature:

1. The end user is prompted for permission to use the feature.
2. If the widget was digitally signed by a trusted source, a vendor
may grant the widget access to the feature.
3. The widget was packaged and digitally signed with a resource that
grants it permissions.
4. The widget engine acquires a list of features that a widget is
allowed to access from one or more trusted sources on the Web.

In the case of 1, prompting the user, it is generally known that
end-users will click "yes" without fully understanding the
consequences of what they are doing. Hence, leaving security decisions
solely to end-users does not generally help with security. In the case
of 2, relying of digital certificates, is costly for both
vendors/publishers and developers because it requires that every
widget be checked and signed by a single source authority. It also
requires that the root certificate of the authorizing signer be on
every device, which is economically infeasible and likely technically
impossible. Case 3, including signed permissions, suffers from the
same problems as 2. It also suffers in that once the widget has been
released into the wild, the permissions are effectively baked into the
widget package. In the case of 4, dynamically acquiring permissions to
access features from a trusted source, overcomes many of the problems
with 2 and 3, but requires an infrastructure that would offload the
quality assurance and privacy management and device capability access
to some trusted authority on the Web. However, I would argue that
model 4 is a natural evolution of community run Widget
galleries/Software review sites on the Web, which already provide
ratings for widgets by communities of users.  What is currently
lacking is the mechanisms that would allow such a model to emerge.

Of course, there are problems with the community driven security
approach. For instance, the permissions server may be unavailable or
the policy delivered for a widget may be incorrect. The system could
be circumvented by members of the community to grant a widget access
to more features. However, as with Wikipedia, community protocols can
be established to limit such things from happening. Another problem
with this approach is that it requires the developer to have their
widget verified by as many trusted authorities as possible, to make
sure that their widget runs on as many devices as possible. Despite
it's limitations, I would still argue that, together with traditional
software security models,  this proposed  model may further assist in
reducing widgets becoming malware.

<strong>How it would work in practice</strong>
A developer creates a widget and submits it to one or more trusted
authorities for review. As part of the widget, they declare the
features they require at runtime.
The trusted authority may grant the widget access to the features it
requested by providing some sort of downloadable permissions file.
If the widget starts misbehaving, members of the community of the
trusted authority may reduce the feature privileges of a widget, or
even send a warning to end-users that the widget has been deemed
unsafe.
The widget engine periodically verifies each widget with one ore more
trusted authorities, dynamically adjusting the security policies as
widgets.
If a malicious developer submits a widget, and it is granted feature
rights, the widget can only do limited damage before it is discovered
and disabled by the community.</pre>
<p>And the panel said:</p>
<blockquote><p><strong>Reviewer 1:</strong><br />
The notion of declaring in advance what feature access is needed is a good one. It&#8217;s similar to Necula&#8217;s notion of proof-carrying code (<a href="http://raw.cs.berkeley.edu/pcc.html" target="_blank">http://raw.cs.berkeley.edu/pcc.html</a>). This is a good idea, regardless of how the authorization is done.</p></blockquote>
<p>W00T! +1 to me! <img src='http://datadriven.com.au/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p>I&#8217;m less enthusiastic about the multiple authorities notion. The paper suggests that developers pick the authorities, a notion that is ripe with potential for abuse. Even if all of the authorities are honest &#8212; itself quite an assumption &#8212; users may have different values. Some, for example, may trust the EFF&#8217;s notion of privacy and legitimate monitoring; others might prefer the RIAA. Why should the developer decide?</p></blockquote>
<p>No no no! Users or operators can pick the authority! As if I would let the developer pick the authority, that is stupid. The developer is the hacker so of course they don&#8217;t pick the authority!</p>
<blockquote><p>I&#8217;m also leery of community-based control of automated decisions. Wikipedia works (when it does work; the abuses are, of course, well known) because people read it and update it. What is to stop a botnet from flooding an authority with bogus &#8220;yes&#8221; votes for a malicious widget? At the least, this question should be addressed.</p></blockquote>
<p>&#8220;When in works?!&#8221; WTF? it works just great as far as I can tell. What&#8217;s to stop the bogus bot, the same mechanisms and interests that stop the bots from destroying Wikipedia. It&#8217;s also the same mechanism that stop P2P networks from falling apart: the community. The community filters the content. And yeah, some bad stuff gets through, but it&#8217;s quickly filtered out before it does any damage. Ask the movie and media industry, they&#8217;ve made no progress in stopping piracy of movies and TV shows through bit torrents. Now apply the same to widgets.</p>
<blockquote><p><strong>Reviewer 2</strong><br />
It&#8217;s pretty notional, and the author doesn&#8217;t really seem to understand how the analogy between wikipedia and web trust breaks down in a number of ways. But the discussion could be fun and good for brainstorming.</p></blockquote>
<p>I wish the reviewer would have elaborated and what I don&#8217;t get.</p>
<blockquote><p>Get off the soap box and dive on how this would really work in the face of attempts to subvert it. That&#8217;s the hard problem. Right now, the paper has a bit too much hand waving.</p></blockquote>
<p>Maybe this reviewer missed the &#8220;how it works in practice&#8221; section.</p>
<blockquote><p>Remember how little time it takes for a spammer to get what they want. How will you deal with time lag exposures? (for example)</p></blockquote>
<p>I proposed polling white/black lists. It&#8217;s better than the crap security models we have at the moment. It&#8217;s how current anti-virus software currently does it. I&#8217;m proposing a simple solution. I don&#8217;t think there is some magic notification system that could be implemented.</p>
<blockquote><p><strong>Reviewer 3</strong><br />
This is an interesting paper but I think it introduces more problems than it solves. Nevertheless, I think this would be a good topic of discussion for the <span class="nfakPe">workshop</span>.</p></blockquote>
<p>It be nice also if reviewer three listed what those problems where. Guess I&#8217;ll hear about them at the workshop.</p>
<p>Anyway, lots of great <a href="http://www.w3.org/2008/security-ws/papers/">papers</a> have been submitted to the workshop. I&#8217;ve not read all of them, but from what I&#8217;ve read so far, I recommend the following papers:</p>
<ul>
<li><a href="http://www.w3.org/2008/security-ws/papers/security-ws-pp-2008.html">WebVM &#8211; Security policy for device API access</a> by Paddy Byers and Kai Hendry of Aplix Corporation</li>
<li><a href="http://www.w3.org/2008/security-ws/papers/OMTP_Security_Position_Paper.pdf">A Web based security model fit for purpose</a>, by Nick Allott, David Rogers, and Geoff Preston, of OMTP</li>
<li>Secure access for widgets to resources and privileged APIs by Arve Bersvendsen of Opera Software ASA</li>
<li><a href="http://www.w3.org/2008/security-ws/papers/mozilla.html">APIs, Safety, and User Notifications on The Web</a>, by Arun Ranganathan of Mozilla</li>
<li><a href="http://www.w3.org/2008/security-ws/papers/nokia-olli.pdf">Security model for browsing and widgets</a> by Olli Immonen of Nokia</li>
</ul>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fdatadriven.com.au%2F2008%2F12%2Fposition-on-widget-security%2F&amp;t=Position%20on%20Widget%20Security" id="facebook_share_link_110">Share on Facebook</a>
	<script type="text/javascript">
	var button = document.getElementById('facebook_share_link_110') || document.getElementById('facebook_share_icon_110') || document.getElementById('facebook_share_both_110') || document.getElementById('facebook_share_button_110');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_110') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://datadriven.com.au/2008/12/position-on-widget-security/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
