<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Salting Passwords in DB or Across the Wire?</title>
	<atom:link href="http://alexking.org/blog/2010/03/19/password-security-db-vs-wire/feed" rel="self" type="application/rss+xml" />
	<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire</link>
	<description>Alex King, Denver Web Developer</description>
	<lastBuildDate>Thu, 09 Feb 2012 18:02:12 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Kamasa</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-136093</link>
		<dc:creator>Kamasa</dc:creator>
		<pubDate>Wed, 02 Jun 2010 19:46:10 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-136093</guid>
		<description>At least you have to use a salt for generating the hash. Otherwise the hash value is as &quot;valuable&quot; as the plain password when intercepted - at least on your site.</description>
		<content:encoded><![CDATA[<p>At least you have to use a salt for generating the hash. Otherwise the hash value is as &#8220;valuable&#8221; as the plain password when intercepted &#8211; at least on your site.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Otto</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-132510</link>
		<dc:creator>Otto</dc:creator>
		<pubDate>Tue, 23 Mar 2010 17:51:42 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-132510</guid>
		<description>I&#039;m not sure what you&#039;re wanting is possible. There needs to be a shared secret of some kind in order for authentication to work at all. 

Basically, the client must send something that is what you store in the database, or which can be transformed into same through an algorithm. 

Now, since the function of that algorithm depends solely on inputs from the client and stored values already on the server, there&#039;s no way to secure it if they know the values on the server or what the expected response is. All you can do is to make it difficult (take longer to brute force). You can&#039;t actually make it impossible.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure what you&#8217;re wanting is possible. There needs to be a shared secret of some kind in order for authentication to work at all. </p>
<p>Basically, the client must send something that is what you store in the database, or which can be transformed into same through an algorithm. </p>
<p>Now, since the function of that algorithm depends solely on inputs from the client and stored values already on the server, there&#8217;s no way to secure it if they know the values on the server or what the expected response is. All you can do is to make it difficult (take longer to brute force). You can&#8217;t actually make it impossible.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Hildebrand</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-132391</link>
		<dc:creator>Joe Hildebrand</dc:creator>
		<pubDate>Mon, 22 Mar 2010 08:06:11 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-132391</guid>
		<description>It looks like you&#039;re trying to build DIGEST-MD5:

http://tools.ietf.org/html/rfc2831

however, that&#039;s being replace with SCRAM:

http://tools.ietf.org/html/draft-ietf-sasl-scram-11

using one of these schemes that have been fully-vetted by the security community is a much better approach, even if you have to pull it up into your application rather doing inside the protocol like SASL imagines.</description>
		<content:encoded><![CDATA[<p>It looks like you&#8217;re trying to build DIGEST-MD5:</p>
<p><a href="http://tools.ietf.org/html/rfc2831" rel="nofollow">http://tools.ietf.org/html/rfc2831</a></p>
<p>however, that&#8217;s being replace with SCRAM:</p>
<p><a href="http://tools.ietf.org/html/draft-ietf-sasl-scram-11" rel="nofollow">http://tools.ietf.or[...]asl-scram-11</a></p>
<p>using one of these schemes that have been fully-vetted by the security community is a much better approach, even if you have to pull it up into your application rather doing inside the protocol like SASL imagines.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Accettura</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-132053</link>
		<dc:creator>Robert Accettura</dc:creator>
		<pubDate>Sat, 20 Mar 2010 19:46:45 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-132053</guid>
		<description>I doubt it.  If they are running it without https right now anyway, they obviously don&#039;t care.  Changing a config is hardly a barrier to adoption (is it really zero config right now?)</description>
		<content:encoded><![CDATA[<p>I doubt it.  If they are running it without https right now anyway, they obviously don&#8217;t care.  Changing a config is hardly a barrier to adoption (is it really zero config right now?)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-132006</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Sat, 20 Mar 2010 02:11:21 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-132006</guid>
		<description>I think that would result in a lot of requests for refunds from my customers... ;)</description>
		<content:encoded><![CDATA[<p>I think that would result in a lot of requests for refunds from my customers&#8230; <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Accettura</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-132005</link>
		<dc:creator>Robert Accettura</dc:creator>
		<pubDate>Sat, 20 Mar 2010 01:55:53 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-132005</guid>
		<description>Perhaps the best approach then is to check the protocol and require SSL for the app to run, unless the installer explicitly disables that check in the config file, in which case they assume the risk.

Setting up a self-signed SSL cert, or buying and installing one (basic validation is only a few dollars now) isn&#039;t a huge deal.  Most just skip the step to speed and because it just works.

Put a barrier there and people will second guess disabling a security feature.

IMHO all apps should require SSL for login.  I have an SSL cert for my blog for the purpose of securing the contact form, and for login (most important).</description>
		<content:encoded><![CDATA[<p>Perhaps the best approach then is to check the protocol and require SSL for the app to run, unless the installer explicitly disables that check in the config file, in which case they assume the risk.</p>
<p>Setting up a self-signed SSL cert, or buying and installing one (basic validation is only a few dollars now) isn&#8217;t a huge deal.  Most just skip the step to speed and because it just works.</p>
<p>Put a barrier there and people will second guess disabling a security feature.</p>
<p>IMHO all apps should require SSL for login.  I have an SSL cert for my blog for the purpose of securing the contact form, and for login (most important).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-131995</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Fri, 19 Mar 2010 21:23:24 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-131995</guid>
		<description>That&#039;s interesting, I hadn&#039;t heard it looked at that way. &lt;a href=&quot;http://en.wikipedia.org/wiki/Salt_(cryptography)&quot;&gt;Wikipedia says&lt;/a&gt;:

&lt;blockquote&gt;For best security, the salt value is kept secret, separate from the password database. This provides an advantage when a database is stolen, but the salt is not. To determine a password from a stolen hash, an attacker cannot simply try common passwords (such as English language words or names). Rather, they must calculate the hashes of random characters (at least for the portion of the input they know is the salt), which is much slower.

In some protocols, the salt is transmitted as cleartext with the encrypted data, sometimes along with the number of iterations used in generating the key (for key strengthening).&lt;/blockquote&gt;

I think that a hash of a hashed string plus salt can make it harder to reverse, but once the algorithm is figured out it&#039;s just layers.</description>
		<content:encoded><![CDATA[<p>That&#8217;s interesting, I hadn&#8217;t heard it looked at that way. <a href="http://en.wikipedia.org/wiki/Salt_(cryptography)">Wikipedia says</a>:</p>
<blockquote><p>For best security, the salt value is kept secret, separate from the password database. This provides an advantage when a database is stolen, but the salt is not. To determine a password from a stolen hash, an attacker cannot simply try common passwords (such as English language words or names). Rather, they must calculate the hashes of random characters (at least for the portion of the input they know is the salt), which is much slower.</p>
<p>In some protocols, the salt is transmitted as cleartext with the encrypted data, sometimes along with the number of iterations used in generating the key (for key strengthening).</p></blockquote>
<p>I think that a hash of a hashed string plus salt can make it harder to reverse, but once the algorithm is figured out it&#8217;s just layers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave Bacher</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-131990</link>
		<dc:creator>Dave Bacher</dc:creator>
		<pubDate>Fri, 19 Mar 2010 19:04:48 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-131990</guid>
		<description>I think I&#039;m missing something here. I thought salt was public information designed to increase the size of the required rainbow tables. The salting function is just the hashing function and it is designed to be one-way. So a) it doesn&#039;t matter if the salt is exposed publicly, and b) if you have a good hashing function, it&#039;s hard to reverse engineer the salting even if you know
the function.

Am I misinformed?</description>
		<content:encoded><![CDATA[<p>I think I&#8217;m missing something here. I thought salt was public information designed to increase the size of the required rainbow tables. The salting function is just the hashing function and it is designed to be one-way. So a) it doesn&#8217;t matter if the salt is exposed publicly, and b) if you have a good hashing function, it&#8217;s hard to reverse engineer the salting even if you know<br />
the function.</p>
<p>Am I misinformed?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-131986</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Fri, 19 Mar 2010 18:32:34 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-131986</guid>
		<description>Agreed. SSL is a great tool in this mix, however my experience has been that few of my customers actually install and configure SSL when they install a web app. I want to do what I can to help in those cases as well.</description>
		<content:encoded><![CDATA[<p>Agreed. SSL is a great tool in this mix, however my experience has been that few of my customers actually install and configure SSL when they install a web app. I want to do what I can to help in those cases as well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Accettura</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-131985</link>
		<dc:creator>Robert Accettura</dc:creator>
		<pubDate>Fri, 19 Mar 2010 18:19:04 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-131985</guid>
		<description>IMHO wire attacks are much more worthwhile to protect against.

The problem with database only, is that it seems rare only the DB is compromised.  Normally it&#039;s the last to be attacked, the web app being in front of the DB.  The DB should be the most restricted (only the webapp needs to even communicate with it).

That said, you can pretty much solve wire attacks by using SSL which also verifies identity and helps against MITM attacks.  IMHO more worthwhile than a JS solution.  Overhead is reduced if you have SSL hardware on your server.</description>
		<content:encoded><![CDATA[<p>IMHO wire attacks are much more worthwhile to protect against.</p>
<p>The problem with database only, is that it seems rare only the DB is compromised.  Normally it&#8217;s the last to be attacked, the web app being in front of the DB.  The DB should be the most restricted (only the webapp needs to even communicate with it).</p>
<p>That said, you can pretty much solve wire attacks by using SSL which also verifies identity and helps against MITM attacks.  IMHO more worthwhile than a JS solution.  Overhead is reduced if you have SSL hardware on your server.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-131983</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Fri, 19 Mar 2010 18:09:42 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-131983</guid>
		<description>True, I should have clarified this as a &quot;database only&quot; vulnerability. If an attacker gains access to both code and database, then salted passwords are subject to the same rainbow table lookups (albeit with an additional step in the process).

That&#039;s another good reason to optimize against a wire attack vs. a database only attack.</description>
		<content:encoded><![CDATA[<p>True, I should have clarified this as a &#8220;database only&#8221; vulnerability. If an attacker gains access to both code and database, then salted passwords are subject to the same rainbow table lookups (albeit with an additional step in the process).</p>
<p>That&#8217;s another good reason to optimize against a wire attack vs. a database only attack.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Hall</title>
		<link>http://alexking.org/blog/2010/03/19/password-security-db-vs-wire#comment-131982</link>
		<dc:creator>Joe Hall</dc:creator>
		<pubDate>Fri, 19 Mar 2010 18:06:19 +0000</pubDate>
		<guid isPermaLink="false">http://alexking.org/?p=4142#comment-131982</guid>
		<description>I agree that its more likely that attacker with hit over the wire versus the DB. But, If an attacker gets access to a DB they in theory probably have access to your salt formula and as a result could reverse engineer an attack with rainbow tables.</description>
		<content:encoded><![CDATA[<p>I agree that its more likely that attacker with hit over the wire versus the DB. But, If an attacker gets access to a DB they in theory probably have access to your salt formula and as a result could reverse engineer an attack with rainbow tables.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

