<?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:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Andrés Cabezas Ulate | Hash Collisions</title>
	<atom:link href="https://www.hashcollisions.com/author/andres/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.hashcollisions.com</link>
	<description>Software development, usability, and digital culture</description>
	<lastBuildDate>Tue, 04 Aug 2020 03:53:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.4.2</generator>
<site xmlns="com-wordpress:feed-additions:1">181421149</site>	<item>
		<title>What I desire from Wikipedia</title>
		<link>https://www.hashcollisions.com/2014/12/what-i-desire-from-wikipedia/</link>
		
		<dc:creator><![CDATA[Andrés Cabezas Ulate]]></dc:creator>
		<pubDate>Wed, 24 Dec 2014 17:15:01 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[digital culture]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[user experience]]></category>
		<guid isPermaLink="false">http://www.hashcollisions.com/?p=51</guid>

					<description><![CDATA[For many years, I have valued Wikipedia as a source of interesting and useful information on a staggeringly wide variety of topics.  I wonder how long that will remain the case, though, given that Wikipedia is changing in ways some of us find unhelpful. Thinking and reading about Wikipedia&#8217;s dominant editing culture has helped me clarify what I like to get [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>For many years, I have valued <a href="http://en.wikipedia.org/">Wikipedia</a> as a source of interesting and useful information on a staggeringly wide variety of topics.  I wonder how long that will remain the case, though, given that Wikipedia is <a href="http://www.gwern.net/In%20Defense%20Of%20Inclusionism">changing in ways some of us find unhelpful</a>.</p>
<p>Thinking and reading about Wikipedia&#8217;s dominant editing culture has helped me clarify what I like to get out out of Wikipedia, what its controlling forces want, and the difference between the two.  At one point, Jimmy Wales (Wikipedia&#8217;s cofounder) <a href="http://slashdot.org/story/04/07/28/1351230/wikipedia-founder-jimmy-wales-responds">presented a vision</a> that greatly appeals to me:</p>
<p style="text-align: left;"><em>&#8220;Imagine a world in which every single person on the planet is given free access to the sum of all human knowledge. </em><em>That&#8217;s what we&#8217;re doing. &#8220;</em></p>
<p>Unfortunately, one aspect of this vision (access to the <strong>sum</strong> of all human knowledge) is at odds with, one of Wikipedia&#8217;s current guiding principles, namely <a href="http://en.wikipedia.org/wiki/Wikipedia:Notability">notability</a>:</p>
<p style="text-align: left;"><em>&#8220;Article and list topics must be notable, or &#8216;worthy of notice&#8217;.&#8221;</em></p>
<p>A focus on notability means that articles on obscure topics, on little-known people, places, and things, are looked down upon, and deleted, by many Wikipedia editors.  Yet such articles are a big part of what I look for in Wikipedia.  In contrast to traditional, print encyclopedias (which I also love, by the way), I expect Wikipedia to give me access to the <strong>long tail</strong> of human knowledge&#8211;not just the most popular or noteworthy topics.</p>
<p>Some Wikipedia deletionists might say I should satisfy my hunger for obscure, factual information in other parts of the web, or in a specialized wiki geared toward a niche.  Yet I greatly prefer it when I can find such information directly in Wikipedia.  In contrast to information on the rest of the web, Wikipedia entries tend to have a consistent tone and layout, making them easier to navigate and process.  I know that the top part of the entry usually contains a helpful summary of the topic at hand, followed by a table of contents for the rest of the entry.  On the right near the top, there&#8217;s usually a box full of categorized facts, a box whose format tends to be consistent across articles of the same kind (such as countries of the world).  Near the bottom there is often a &#8220;see also&#8221;, &#8220;references&#8221;, &#8220;further reading&#8221;, and/or &#8220;external links&#8221; section, each of which is chock-full of helpful links.  Also, there is often a link to a Wikipedia <a href="http://en.wikipedia.org/wiki/Category:Lists">list of items</a> belonging to a category described by or related to the entry.  The main value Wikipedia provides to me lies in its <em>wikification</em> of information that&#8217;s available elsewhere, making it more readily accessible to me.  The deletion of articles on niche topics (or their exile to specialized, external knowledge bases) thus reduces Wikipedia&#8217;s value to me.</p>
<p>Some Wikipedia editors are concerned about the quality of entries on obscure topics.  I do care about quality, and want Wikipedia&#8217;s articles to be factual and well-written.  There may be some entries that may merit deletion or drastic editing.  However, I don&#8217;t see why a properly researched and well-written entry on a niche topic should be deleted.  Such entries don&#8217;t consume paper or inordinate bandwidth. They also don&#8217;t get in the way of the bulk of readers who aren&#8217;t interested in them and don&#8217;t care to look them up.  They will be missed, however, by those who are interested in their facts, those who wish that Wikipedia would remain a great starting point for inquiries into <strong>all</strong> sections of human knowledge.</p>
<p>How about you?  What do you desire from Wikipedia?</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">51</post-id>	</item>
		<item>
		<title>Why I prefer desktop computers over laptops</title>
		<link>https://www.hashcollisions.com/2013/08/why-i-prefer-desktop-computers-over-laptops/</link>
		
		<dc:creator><![CDATA[Andrés Cabezas Ulate]]></dc:creator>
		<pubDate>Tue, 06 Aug 2013 13:00:19 +0000</pubDate>
				<category><![CDATA[For general audiences]]></category>
		<category><![CDATA[user experience]]></category>
		<guid isPermaLink="false">http://www.hashcollisions.com/?p=44</guid>

					<description><![CDATA[I have owned many personal computers over the past 30 years&#8230; but never a laptop. I’ve used others’ laptops from time to time, but only for short periods of time. Laptops are wonderful, but almost any time I have a choice, I prefer to use a desktop. I thought it might be interesting for others [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I have owned many personal computers over the past 30 years&#8230; but never a laptop. I’ve used others’ laptops from time to time, but only for short periods of time. Laptops are wonderful, but almost any time I have a choice, I prefer to use a desktop. I thought it might be interesting for others to read about this one user’s rare preference for desktops, particularly from the user experience point of view.</p>
<p><strong>Basic ergonomics</strong></p>
<p>Since most laptops’ screens are attached to the keyboard, I need to choose between either of two uncomfortable positions. If I place the laptop at elbow level, for comfortable typing, I need to bend my neck down to look at the screen. If I place the laptop on a stand for a comfortable viewing angle, I need to raise my arms to type. Barring the use of an external keyboard or screen, laptops force me to make this uncomfortable tradeoff.</p>
<p><strong>The mouse</strong></p>
<p>I much prefer using a mouse over a touch pad (or over the essentially-extinct <a href="http://en.wikipedia.org/wiki/Pointing_stick">pointing stick</a>). Having a touch pad below the space bar on the keyboard is mildly annoying, but fortunately I can disable it and use an external mouse. I mildly dislike many users’ preference of a touchpad to the exclusion of a mouse, since that means I need to remember to bring my own mouse to plug in when providing them with tech support. A much greater annoyance stems from the placement of USB, audio, or power ports on various laptop models. If they’re placed on the right edge (and even worse, on the bottom, right-hand edge) they cause any cables I connect to obstruct the area through where I move my mouse. (A left-handed version of myself would likely complain about ports on the left edge.)</p>
<p><strong>The keyboard</strong></p>
<p>Probably the main reason why I’m significantly less comfortable using laptops has to do with the keyboard. I much prefer a desktop keyboard to a laptop keyboard. <a id="notesource1" href="#note1">[1]</a> I prefer the sturdy feel and action of full-height keys over that of the thin slivers of plastic on laptop keyboards. I like having a full set of keys and prefer the traditional location and arrangement of the arrow and navigation keys. Though I don’t use it as often, I also like having a numeric keypad. <a id="notesource2" href="#note2">[2]</a> I’ve also noticed that I much prefer typing on a cool or room-temperature keyboard than on the inevitably warm keyboard offered by a laptop. A warm keyboard feels a bit icky to my picky palms and fingers. Unfortunately, given current designs, a laptop’s keyboard can’t help but absorb the heat generated by the laptop’s internal electronics.</p>
<p><strong>An additional, tactile consideration</strong></p>
<p>For all their wonders, Mac laptops get a special mention for a particular annoyance. Current MacBook Air and MacBook Pro models have an anodized aluminum case. Its metal finish looks sleek and elegant&#8230; yet I really dislike its tactile feel. Yes, the keys on the keyboard are plastic (and pretty nice, actually) but the palm rest has an anodized aluminum surface&#8211;rough and uninviting to my palms. I don’t like how such an aluminum case feels in my hands or against my bare arm when I carry it, either. When I have to carry such a laptop, I prefer to move it as quickly as possible to its next resting place, or insert it into a case or sleeve for carrying. Older MacBooks with polycarbonate cases may not look as elegant but feel much better. If I ever own an aluminum-encased Mac laptop, I’d probably take steps to cover the aluminum with a more tactilely-appealing surface.</p>
<p><strong>Price, performance, maintenance</strong></p>
<p>I have also long preferred desktops due to price, performance, and maintenance considerations. An equivalent level of computing power has historically been cheaper to obtain in a desktop. Since components inside a desktop aren’t packed together as closely, they tend to last longer and perform more reliably. Also, it’s not as difficult to open, upgrade, or maintain a desktop. I’ve thus preferred desktops’ value propositions over laptops’. (My current impressions in this area are likely to become obsolete, though at present it’s a bit hard for me to imagine that hard drive and processor capacities and performance would ever become equivalent on desktops and laptops. I doubt that high-quality laptops would ever offer the same performance for the same price as high-quality desktops.)</p>
<p><strong>Conclusion</strong></p>
<p>For all the benefits I see in desktop computers, laptops’ portability is an extremely important feature, one that trumps other user-experience considerations for most users. The various design tradeoffs laptop makers have made in pursuit of portability are very reasonable and understandable. Yet I still haven’t found a laptop that would tempt me to give up my desktop. You probably won’t see me working on my computer at your local coffeehouse anytime soon.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Notes</strong></p>
<p><a id="note1" href="#notesource1">[1]</a> I actually use an ergonomic keyboard, which no laptop is ever likely to incorporate. In any case, even a standard, 104-key desktop keyboard beats a laptop keyboard hands down, in my opinion.</p>
<p><a id="note2" href="#notesource2">[2]</a> I do wish a numeric keypad could be detached from the rest of the keyboard and placed elsewhere when not in use. For a right-hander like me, the keypad forces my mouse hand to travel much farther between the mouse and the letter keys. But that’s a topic for a different article.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">44</post-id>	</item>
		<item>
		<title>Dopey, the Folder-Selection Annoyance</title>
		<link>https://www.hashcollisions.com/2012/01/dopey-the-folder-selection-annoyance/</link>
		
		<dc:creator><![CDATA[Andrés Cabezas Ulate]]></dc:creator>
		<pubDate>Thu, 26 Jan 2012 05:28:22 +0000</pubDate>
				<category><![CDATA[For technical audiences]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[user interfaces]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">http://www.hashcollisions.com/?p=27</guid>

					<description><![CDATA[Just about every Windows program prompts a user to select a file for some purpose, such as through the Open File dialog window: &#160; I&#8217;ll call this kind of window &#8220;Opie&#8221; for the rest of this article.  Occasionally, a program will prompt a user not for a file, but for a folder.  In such cases [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Just about every Windows program prompts a user to select a file for some purpose, such as through the <strong>Open File</strong> dialog window:</p>
<p><a href="https://www.hashcollisions.com/wp-content/uploads/2012/01/Opie5001.png"><img class="alignnone size-full wp-image-33" title="Opie" src="https://www.hashcollisions.com/wp-content/uploads/2012/01/Opie5001.png" alt="" width="500" height="370" srcset="https://www.hashcollisions.com/wp-content/uploads/2012/01/Opie5001.png 500w, https://www.hashcollisions.com/wp-content/uploads/2012/01/Opie5001-300x222.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></a></p>
<p>&nbsp;</p>
<p>I&#8217;ll call this kind of window &#8220;<strong>Opie</strong>&#8221; for the rest of this article.  Occasionally, a program will prompt a user not for a file, but for a folder.  In such cases programs will typically bring up the <strong>Folder Selection</strong> dialog window, which I&#8217;ll call &#8220;<strong>Dopey</strong>&#8220;:</p>
<p><a href="https://www.hashcollisions.com/wp-content/uploads/2012/01/Dopey.png"><img class="alignnone size-full wp-image-30" title="Dopey" src="https://www.hashcollisions.com/wp-content/uploads/2012/01/Dopey.png" alt="Select Folder dialog window from a program in Windows 7" width="347" height="384" srcset="https://www.hashcollisions.com/wp-content/uploads/2012/01/Dopey.png 347w, https://www.hashcollisions.com/wp-content/uploads/2012/01/Dopey-271x300.png 271w" sizes="(max-width: 347px) 100vw, 347px" /></a></p>
<p>&nbsp;</p>
<p>Had I never known Opie, I might not dislike Dopey.  Since I do, however, I find Dopey to be a vastly inferior and annoying UI element, for several reasons:</p>
<p><strong>1. Dopey can&#8217;t get to a folder directly.</strong>  Most of my files are nested four or five levels down from My Documents.  When I&#8217;m working on a project, I&#8217;ll typically have one or more of these level-4 folders open in Windows Explorer.  When I need to open one of these folders&#8217; files from a Windows program [1], I&#8217;ll typically copy the folder path from Windows Explorer,  paste it into Opie&#8217;s &#8220;File Name&#8221; field, and press Enter.  <em>Voilà</em>, I&#8217;m now looking at the folder I want, and can select the file I need.  Dopey doesn&#8217;t let me cut and paste a path like this.  (Some programs complement Dopey with a field where a path can be typed or pasted, which helps a bit.  Most programs, however, leave you alone with the klutz.)</p>
<p><strong>2. Dopey can leave me disoriented.</strong>  Dopey provides very little context to let me get my bearings inside the file system.  I often find myself looking at a list of neighboring subfolders, without any idea of who their parent is:</p>
<p><a href="https://www.hashcollisions.com/wp-content/uploads/2012/01/Dopey-Heritage.png"><img class="alignnone size-full wp-image-34" title="Dopey-Heritage" src="https://www.hashcollisions.com/wp-content/uploads/2012/01/Dopey-Heritage.png" alt="" width="347" height="384" srcset="https://www.hashcollisions.com/wp-content/uploads/2012/01/Dopey-Heritage.png 347w, https://www.hashcollisions.com/wp-content/uploads/2012/01/Dopey-Heritage-271x300.png 271w" sizes="(max-width: 347px) 100vw, 347px" /></a></p>
<p>&nbsp;</p>
<p>If I want to determine a folder&#8217;s parent, I&#8217;ll have to scroll a bit, and scroll quite a bit further if I need to determine its complete ancestry.  Once I determine the full path, I&#8217;ll have to scroll back to my original location (if I can find it).  Opie, on the other hand, lets me determine the full path (without getting lost in the process) by clicking on a drop-down arrow: [2]</p>
<p><a href="https://www.hashcollisions.com/wp-content/uploads/2012/01/Opie-Heritage1.png"><img class="alignnone size-full wp-image-36" title="Opie-Heritage" src="https://www.hashcollisions.com/wp-content/uploads/2012/01/Opie-Heritage1.png" alt="" width="379" height="240" srcset="https://www.hashcollisions.com/wp-content/uploads/2012/01/Opie-Heritage1.png 379w, https://www.hashcollisions.com/wp-content/uploads/2012/01/Opie-Heritage1-300x189.png 300w" sizes="(max-width: 379px) 100vw, 379px" /></a></p>
<p>&nbsp;</p>
<p><strong>3. Dopey makes me stumble my way down into the file system.</strong>  Navigating the file system with Dopey is cumbersome.  I start out with a little window displaying just a few folders.  I have to switch between clicking, scrolling vertically, and scrolling horizontally as I dig down into the file system.  With Opie, on the other hand, I can often get where I want  just by double clicking, often without any scrolling.  [3]</p>
<p>I&#8217;ve run into a few programs that show me Opie instead of Dopey when prompting for a folder.  I wish more Windows programs did this (hear ye, hear ye, Windows application developers!)  Ultimately, I hope (in vain?) that Dopey will be deprecated by Microsoft, banished from our UIs, and sent to join <a title="Clippy" href="http://en.wikipedia.org/wiki/Clippy">Clippy</a> in exile.</p>
<p>&nbsp;</p>
<p><strong> Notes:</strong></p>
<p>[1] Yes, most files can be opened by double-clicking them in Windows Explorer.  However, I still find myself using File -&gt; Open pretty frequently.  Somehow it&#8217;s more convenient than Explorer at times.</p>
<p>[2] For some programs in Windows 7, you don&#8217;t even a need to click a drop-down, since Opie looks just like Windows Explorer, and includes an address bar.</p>
<p>[3] This is due to the fact that Opie displays only a single level of subfolders at a time, and can display them in a multi-column list, which reduces the need to scroll or enlarge the dialog window.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">27</post-id>	</item>
		<item>
		<title>Can bcrypt&#8217;s computational expense be reduced on the server side?</title>
		<link>https://www.hashcollisions.com/2011/06/can-bcrypts-computational-expense-be-reduced-on-the-server-side/</link>
					<comments>https://www.hashcollisions.com/2011/06/can-bcrypts-computational-expense-be-reduced-on-the-server-side/#comments</comments>
		
		<dc:creator><![CDATA[Andrés Cabezas Ulate]]></dc:creator>
		<pubDate>Tue, 28 Jun 2011 16:02:45 +0000</pubDate>
				<category><![CDATA[For technical audiences]]></category>
		<category><![CDATA[bcrypt]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">http://www.hashcollisions.com/?p=22</guid>

					<description><![CDATA[(Caution: Amateur security research ahead.  Using it in a live system is not recommendable.) I recently read “How to Safely Store a Password”, an article by Coda Hale. For years I&#8217;ve thought that salting and hashing passwords with MD5 or SHA-1 prior to storage was sufficient to thwart password-cracking efforts (in cases where the user-account [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><em>(<strong>Caution:</strong> Amateur security research ahead.  Using it in a live system is not recommendable.)</em></p>
<p>I recently read “<a title="How to Safely Store a Password" href="http://codahale.com/how-to-safely-store-a-password/">How to Safely Store a Password</a>”, an article by Coda Hale.  For years I&#8217;ve thought that salting and hashing passwords with MD5 or SHA-1 prior to storage was sufficient to thwart password-cracking efforts (in cases where the user-account database table is stolen or publicly divulged).  Apparently, this approach is not much better than simply storing plaintext passwords (a practice widely scoffed at).  It was fascinating to find out about a better approach, that of using <a href="http://en.wikipedia.org/wiki/Bcrypt">bcrypt</a> instead of ordinary hash functions.  Unfortunately, it seems to me that bcrypt creates a new problem even as it solves an old one&#8230;</p>
<p><strong>The New Problem</strong></p>
<p>The use of bcrypt turns password-cracking into a computationally-prohibitive task for attackers.  However, bcrypt also hurts defenders, for whom password-hash generation or verification is now much more expensive than with ordinary hash functions.  A popular online service having thousands of users might need to acquire additional processing power simply to process user log-ins.  Moreover, by using bcrypt a service would become more vulnerable to denial-of-service attacks.  Attackers could tie up its servers&#8217; CPUs through numerous, automated log-in attempts. (These would make the servers call bcrypt repeatedly, once for each of the many log-in requests.)  Addressing this threat would seem to require problematic tradeoffs between security, cost and convenience.</p>
<p>Could there be a way of lowering a service&#8217;s computational bill while retaining bcrypt&#8217;s advantages?  This article presents a system which might accomplish this.  I haven&#8217;t heard of this approach and would like to know if I&#8217;m on to something (or if others have already devised equivalent systems).  Be forewarned, I am not a computer-security expert.  (Thank you for reading this article anyway.)</p>
<p><strong>A Potential Solution</strong></p>
<p>The following protocol attempts to reduce the frequency with which bcrypt is called by an online server.  It ensures that clients also pay for the cost of using bcrypt.  (The server still has to pay, but the client now has to “split” the computational bill with it.  This could reduce the appeal and effectiveness of brute-force or dictionary attacks on live systems.)  This protocol redesigns the account-creation, account-log-in, and password-reset processes for an online service.</p>
<p><strong>Account Creation</strong></p>
<ol>
<li> Joe Turing, a user (or a bot, 	perhaps), visits the account-creation page for SecureR, a 	hypothetical (yet surprisingly-popular) online service.</li>
<li>Turing types in his desired 	username and password and submits them (securely) to SecureR.</li>
<li>The SecureR server creates a 	bcrypted hash from the password, using a random salt value and the 	cost parameter currently mandated by  SecureR&#8217;s security policy.</li>
<li>The username, password, salt, 	cost, and bcrypted hash are stored in a record in SecureR&#8217;s 	user-account table.  The record also includes at least two 	verification fields.  One indicates whether the password hash has 	been verified (successfully computed by the client).  The other 	indicates whether the account as a whole has been verified.  Both 	fields are initially set to “false”.</li>
<li>SecureR sends the salt and cost 	parameters used to bcrypt Turing&#8217;s password back to Turing.</li>
<li>Turing (that is, his web browser) 	computes the bcrypt hash corresponding to his password and submits 	it to SecureR.</li>
<li>SecureR compares Turing&#8217;s hash 	with the hash previously computed by SecureR itself.  If the two 	hashes match, the password-hash-verification field is set to “true”.</li>
<li>Once other essential checks (such 	as e-mail-address verification) have been successfully performed the 	account-verification field is to “true”.  Turing&#8217;s account is 	now fully verified and active, and he can start using SecureR&#8217;s 	services.  (For now I won&#8217;t suggest when and where additional 	verification steps should take place, since bcrypt is my focus 	here.)</li>
</ol>
<p><strong>Account Log-in</strong></p>
<ol>
<li> Turing types his username and 	password into the SecureR log-in page.</li>
<li>Turing&#8217;s browser sends his 	username to SecureR.</li>
<li>SecureR looks up the salt and cost 	parameters contained in Turing&#8217;s user-account record.</li>
<li>SecureR sends the salt and cost 	values to Turing&#8217;s browser.</li>
<li>The browser uses these parameters 	and Turing&#8217;s typed-in password to generate the bcrypt hash for 	Turing&#8217;s password.</li>
<li>The browser submits Turing&#8217;s 	username and bcrypted hash to SecureR.</li>
<li>SecureR directly compares the hash 	submitted by Turing with the one stored in his user record.  If they 	match, account access is granted.</li>
</ol>
<p><strong>Password Reset</strong></p>
<ol>
<li> Turing types his username into 	SecureR&#8217;s password reset page and clicks the Submit button.</li>
<li>SecureR sends a verification link 	to Turing&#8217;s e-mail address.  (This link is to verify that Turing 	himself initiated the reset process.  This password-reset system 	never generates nor sends temporary passwords to the service&#8217;s 	users.)</li>
<li>Turing checks his e-mail, and 	opens up the link with his web browser.</li>
<li>The page brought up by the browser 	has a password field, into which Turing enters his new password and 	clicks on a Submit button.</li>
<li>The password is hashed and 	verified using a process analogous to steps 3 through 8 in the 	account-creation process.</li>
</ol>
<p><strong>Observations</strong></p>
<p>According to this protocol, SecureR&#8217;s server only runs bcrypt when an account is created or when a password is reset.  During log-in attempts, it is the client (Turing&#8217;s browser) and not the server which runs bcrypt.  The server performs a computationally-inexpensive direct comparison between the client-submitted hash and the hash stored in its database.  Thus the server avoids paying the bcrypt bill when processing a log-in request.  (In theory, the client could also avoid calling bcrypt during log-ins.  The bcrypt hash could be stored by the client after generating it during the account-creation phase.  The client wouldn&#8217;t necessarily have to recompute the hash each time the user logs in.  In practice, it&#8217;d be easier to design the client-side code so that it recomputes the bcrypt hash based on the user&#8217;s plaintext password, rather than dealing with hash storage and retrieval.  The bcrypt-induced client-side log-in delay is tolerable to each individual user anyway.)</p>
<p>Relocating bcrypt invocations from a frequent process (account log-in) to other, less frequent processes (account-creation and password-resets) reduces the risk of a successful DoS attack.  It doesn&#8217;t eliminate the risk completely, though.  The account-creation and password-reset processes are the new weak spots, and must be hardened.  This is why the password-reset process is more complex (and mildly annoying to legitimate users) under this protocol.  Additional security methods (such as CAPTCHAs and rate-limiting) could also help harden the system against attack.</p>
<p><strong>A Request for Feedback</strong></p>
<p>My proposed protocol omits certain security-related details which would be important in a production system.  I&#8217;ve also omitted some tweaks which could further improve the protocol&#8217;s security.  However, I&#8217;d first like to make sure that this protocol is essentially sound.  Please let me know if you find any logic errors or problematic side-effects I&#8217;ve failed to account for.  As I said before, I am not a computer-security professional, and would appreciate assistance from others who are further along.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.hashcollisions.com/2011/06/can-bcrypts-computational-expense-be-reduced-on-the-server-side/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">22</post-id>	</item>
		<item>
		<title>Facebook, the Island of the Lotus-Eaters</title>
		<link>https://www.hashcollisions.com/2011/06/facebook-the-island-of-the-lotus-eaters/</link>
		
		<dc:creator><![CDATA[Andrés Cabezas Ulate]]></dc:creator>
		<pubDate>Tue, 21 Jun 2011 04:30:55 +0000</pubDate>
				<category><![CDATA[For general audiences]]></category>
		<category><![CDATA[digital culture]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[social media]]></category>
		<guid isPermaLink="false">http://www.hashcollisions.com/?p=19</guid>

					<description><![CDATA[Last night I watched Percy Jackson &#38; the Olympians: The Lightning Thief on TV.  (Beware, spoilers ahead.) This moderately-entertaining movie cleverly incorporates a number of elements from Greek mythology.  One of them is the island of the lotus-eaters, reimagined as a casino. Percy Jackson and his two sidekicks need to visit this casino to look for [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Last night I watched <a href="http://en.wikipedia.org/wiki/Percy_Jackson_%26_the_Olympians:_The_Lightning_Thief">Percy Jackson &amp; the Olympians: The Lightning Thief</a> on TV.  <strong>(Beware, spoilers ahead.)</strong> This moderately-entertaining movie cleverly incorporates a number of elements from Greek mythology.  One of them is the <a href="http://en.wikipedia.org/wiki/Lotus_eaters">island of the lotus-eaters</a>, reimagined as a casino. Percy Jackson and his two sidekicks need to visit this casino to look for a special, hidden jewel.  At the casino, they are persistently offered and keep consuming some unusual, mind-altering appetizers.  The addictive <em>hors d&#8217;oeuvres</em> make them forget why they were there and what their mission was.  After a long time they manage break out of their stupor, retrieve the jewel, and resume their quest.</p>
<p>Sometime after watching this scene, I was struck by the realization that Facebook is like the island of the lotus-eaters to me.  I usually log in with a definite purpose in mind, such as looking up an old friend or confirming an invitation to an event.  However, immediately after logging in and before I know it, I find myself scanning through the News Feed, looking at random, yet interesting tidbits about friends and old-time acquaintances.  Many minutes will pass&#8230;  Once I finally realize what I&#8217;ve been doing and break out of the hypnotic effect, I&#8217;ll typically have forgotten why I initially logged in.  It takes me a couple of minutes to remember.</p>
<p>Facebook is not the only &#8220;island of the lotus-eaters&#8221;, but it is a very striking example.  The digital world is full of such islands.  It takes superhuman levels of self-discipline to stop landing on those islands or binging on lotuses.  Yet there are more important and substantial things, and I must resume my quest&#8230;</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">19</post-id>	</item>
		<item>
		<title>An immediate hiatus</title>
		<link>https://www.hashcollisions.com/2011/04/an-immediate-hiatus/</link>
		
		<dc:creator><![CDATA[Andrés Cabezas Ulate]]></dc:creator>
		<pubDate>Thu, 28 Apr 2011 06:27:15 +0000</pubDate>
				<category><![CDATA[For general audiences]]></category>
		<category><![CDATA[metablogging]]></category>
		<guid isPermaLink="false">http://www.hashcollisions.com/?p=14</guid>

					<description><![CDATA[As is evident to anyone checking in, I&#8217;ve so far failed to keep up with my initial, modest goal of writing once a month.  Last year was a demanding year&#8230;  We&#8217;ll see about this one. As happened with my inaugural article, strong sentiments drew out an article from me, this very night.  I&#8217;ll post it [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>As is evident to anyone checking in, I&#8217;ve so far failed to keep up with my initial, modest goal of writing once a month.  Last year was a demanding year&#8230;  We&#8217;ll see about this one.</p>
<p>As happened with my inaugural article, strong sentiments drew out an article from me, this very night.  I&#8217;ll post it very soon.  Perhaps others will follow it&#8230;</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">14</post-id>	</item>
		<item>
		<title>Collide world!</title>
		<link>https://www.hashcollisions.com/2010/05/collide-world/</link>
		
		<dc:creator><![CDATA[Andrés Cabezas Ulate]]></dc:creator>
		<pubDate>Thu, 20 May 2010 07:33:52 +0000</pubDate>
				<category><![CDATA[For general audiences]]></category>
		<category><![CDATA[metablogging]]></category>
		<guid isPermaLink="false">http://www.hashcollisions.com/?p=5</guid>

					<description><![CDATA[Hello, world!  My name is Andrés Cabezas Ulate.  Yesterday, as I was reading one of my favorite blogs, I came across the straw that broke the writer&#8217;s block.  Long have I waited to share various ideas with the world.  I&#8217;ve been inching along with my methodical publication plans.  Today, though, I decided to go for [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Hello, world!  My name is Andrés Cabezas Ulate.  Yesterday, as I was reading <a title="Coding Horror" href="http://www.codinghorror.com" target="_self" rel="noopener noreferrer">one of my favorite blogs</a>, I came across the <a title="How To Achieve Ultimate Blog Success In One Easy Step" href="http://www.codinghorror.com/blog/2007/10/how-to-achieve-ultimate-blog-success-in-one-easy-step.html" target="_self" rel="noopener noreferrer">straw that broke the writer&#8217;s block</a>.  Long have I waited to share various ideas with the world.  I&#8217;ve been inching along with my methodical publication plans.  Today, though, I decided to go for broke, and jump-start one of the blogs I had envisioned.  A quick WordPress installation here, some minor customization there, and here we go!  Oh, and we musn&#8217;t forget the choice of a clever-but-hokey name for my blog, of course.  (Don&#8217;t worry, little blog.  You can change your name when you turn 18.)</p>
<p>As a nascent, independent, software entrepreneur, I&#8217;d like to share various ideas pertaining to software development.  My primary audience will be fellow coders.  However, laymen may be interested in my other articles, which will cover topics in software usability, IT, and digital culture in general.</p>
<p>I expect to post an article at least once a month, for starters.</p>
<p>If you&#8217;d like to receive an e-mail whenever I post an article, please e-mail me at <a href="mailto:andres@HashCollisions.com">andres@HashCollisions.com</a> .  You can also subscribe to the <a href="https://www.hashcollisions.com/feed/" target="_self" rel="noopener noreferrer">RSS feed</a>.</p>
<p>I&#8217;ll allow comments on this blog., but will review them prior to publication.  Here&#8217;s the <a href="https://www.hashcollisions.com/comments/feed/" target="_self" rel="noopener noreferrer">RSS feed for the comments</a>.</p>
<p>Before signing off, I&#8217;d like to thank several strangers.  They are talented software coder/writers whose respective blogs were a serendipitous find for me.  I&#8217;ve picked up other influences since then, but my first Fab Four will always be (in the order I met them) <a title="Joel Spolsky - Joel on Software" href="http://www.joelonsoftware.com/" target="_self" rel="noopener noreferrer">Joel</a>, <a title="Eric Sink - Eric.Weblog()" href="http://www.ericsink.com/" target="_self" rel="noopener noreferrer">Eric</a>, <a title="Paul Graham" href="http://paulgraham.com/articles.html">Paul</a>, and <a title="Jeff Atwood - Coding Horror" href="http://www.codinghorror.com/">Jeff</a>.  Let&#8217;s see if I can make the most of not only your writing but also your coding advice.  Thank you.</p>
<p>Here we go&#8230;</p>
<p>P.S.  I know there&#8217;s not much on this blog for now, but how about if we get the comments rolling?  Fellow developers: who are your favorite coder/writers?  Who are your own Fab Four (or Fantastic Five, or Stupendous Six, or Superb Seven, etc.)?</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5</post-id>	</item>
	</channel>
</rss>
