<br><font size=2 face="sans-serif">If everyone is really concerned about
security, then perhaps we should stop using MD5?</font>
<br><font size=2 face="sans-serif"><br>
Best regards<br>
Alan<br>
-------------------<br>
T.J. Watson Research Center, Hawthorne, NY<br>
1-914-784-7286<br>
alan_webb@us.ibm.com</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">From:</font>
<td><font size=1 face="sans-serif">"Frisby, Adam" <adam@deepthink.com.au></font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">To:</font>
<td><font size=1 face="sans-serif">"opensim-dev@lists.berlios.de"
<opensim-dev@lists.berlios.de></font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Date:</font>
<td><font size=1 face="sans-serif">10/16/2009 09:06 AM</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Subject:</font>
<td><font size=1 face="sans-serif">Re: [Opensim-dev] open sim UUID and
Passwordhash</font></table>
<br>
<hr noshade>
<br>
<br>
<br><font size=2 color=#004080 face="Calibri">Just because other software
may do it wrong does not mean it is secure.</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">Drupal using a plain MD5
is alarming – since it allows for very quick plain lookups in existing
databases (no need to calculate the dictionary + permuation with your fixed
salt). Storing a custom salt for each user is essential if you wish to
make dictionary attacks significantly more expensive. (Actually it also
allows for plain collision attacks too.)</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">Consider this case:</font>
<br><font size=2 color=#004080 face="Symbol">·        
</font><font size=2 color=#004080 face="Calibri">Calculate Every Permutation
of the Dictionary plus a couple of common modifications, plus your fixed
salt. (this will get ~80%+ of user passwords).</font>
<br><font size=2 color=#004080 face="Calibri">Versus</font>
<br><font size=2 color=#004080 face="Symbol">·        
</font><font size=2 color=#004080 face="Calibri">Do the above, but for
each user – since the salt is changing per user.</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">The second will take ‘n’
times longer to calculate (where N is equivalent to the size of your database),
it also works in the inverse – if you have a 10 million user database,
it means you need 1/10millionth of the time to try calculate a valid hit.
It adds up. Bigtime.</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">A unique hash for the whole
application helps against global world-wide MD5 databases, but it still
does not help the above situation.</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">Frankly the storage and transmission
size arguments are complete bunk. We are talking 128-bits extra data per
user for a good salt which adds up to about ‘jack shit’ when summed over
the lifetime of the application. It takes very little extra time, and we
already stuff that data into our default database schemas.</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">Likewise, having a long salt
versus a short salt makes very little difference – because it’s the uniqueness
that counts (see the two cases above.)</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">Short summary of the above:
Do it if you have any desire to follow good security practices with your
users. It takes almost no extra time and gives you appreciable benefits.</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 color=#004080 face="Calibri">Adam</font>
<br><font size=2 color=#004080 face="Calibri"> </font>
<br><font size=2 face="Tahoma"><b>From:</b> opensim-dev-bounces@lists.berlios.de
[</font><a href="mailto:opensim-dev-bounces@lists.berlios.de"><font size=2 face="Tahoma">mailto:opensim-dev-bounces@lists.berlios.de</font></a><font size=2 face="Tahoma">]
<b>On Behalf Of </b>Impalah Shenzhou<b><br>
Sent:</b> Friday, 16 October 2009 4:37 AM<b><br>
To:</b> opensim-dev@lists.berlios.de<b><br>
Subject:</b> Re: [Opensim-dev] open sim UUID and Passwordhash</font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman">Thanks for the info Melanie.<br>
<br>
Adam, I consider Drupal, for example, a CMS with a decent security and
it only uses md5(plain_password) to store user passwords. Some php frameworks
(for example Code Igniter, Cake php...) use, but not mandatory, an unique
hash for all the application.<br>
<br>
A random hash for every user improves security, you're right, but increases
the data sent between DB and servers for every authentication. I prefer
not to overload data transmission for something I think is overprotection.
Maybe for 10 or 100 users there won't be no problems, but think on 10000
and each byte will count (they aren't cheap).<br>
<br>
If you have a long, secret and unique hash for your servers, who can make
an effective attack to you (at least in reasonable time)?<br>
<br>
Maybe the difference could be that Drupal used to be deployed over Apache,
and it can be protected against dictionary attacks activating some modules,
while Opensim/UGAIM are servers "per se", basic servers.<br>
<br>
It's my opinion, if you don't like it, I have more :-P<br>
<br>
Greetings<br>
</font>
<br><font size=3 face="Times New Roman">2009/10/16 Frisby, Adam <</font><a href=mailto:adam@deepthink.com.au><font size=3 color=blue face="Times New Roman"><u>adam@deepthink.com.au</u></font></a><font size=3 face="Times New Roman">></font>
<br><font size=2 color=#004080 face="Times New Roman">A long fixed salt
doesn’t help over the simple “:” in any practical way. The salt <b>must</b>
be unique for each user for decent security.</font>
<br><font size=2 color=#004080 face="Times New Roman"> </font>
<br><font size=2 color=#004080 face="Times New Roman">Adam</font>
<br><font size=2 color=#004080 face="Times New Roman"> </font>
<br><font size=2 face="Times New Roman"><b>From:</b> </font><a href="mailto:opensim-dev-bounces@lists.berlios.de" target=_blank><font size=2 color=blue face="Times New Roman"><u>opensim-dev-bounces@lists.berlios.de</u></font></a><font size=2 face="Times New Roman">
[mailto:</font><a href="mailto:opensim-dev-bounces@lists.berlios.de" target=_blank><font size=2 color=blue face="Times New Roman"><u>opensim-dev-bounces@lists.berlios.de</u></font></a><font size=2 face="Times New Roman">]
<b>On Behalf Of </b>Impalah Shenzhou<b><br>
Sent:</b> Friday, 16 October 2009 3:44 AM</font>
<br><font size=2 face="Times New Roman"><b><br>
To:</b> </font><a href="mailto:opensim-dev@lists.berlios.de" target=_blank><font size=2 color=blue face="Times New Roman"><u>opensim-dev@lists.berlios.de</u></font></a><font size=2 face="Times New Roman"><b><br>
Subject:</b> Re: [Opensim-dev] open sim UUID and Passwordhash</font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman">This comes from UserManagerBase.AddUser
(0.6.6):<br>
<br>
string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(password) + ":"
+ String.Empty);<br>
<br>
The salt should be where String.Empty is.<br>
<br>
I think it doesn't change in the most recent versions, so the "create
user" method of the console (both standalone and ugaim) are unsecure
by default.<br>
<br>
<br>
Anyway, I agree with Melanie and Adam that the salt is needed for improving
security, if not a random salt every time you create an user, at least
a long and secret unique salt.<br>
<br>
Greetings<br>
</font>
<br><font size=3 face="Times New Roman">2009/10/16 Frisby, Adam <</font><a href=mailto:adam@deepthink.com.au target=_blank><font size=3 color=blue face="Times New Roman"><u>adam@deepthink.com.au</u></font></a><font size=3 face="Times New Roman">></font>
<br><font size=3 face="Times New Roman">+1 to Melanie, that code is *not*
secure. It is salted with a ":" but that's a fixed known salt.<br>
<br>
This is what I suggest:<br>
<br>
$passwordSalt = md5(time() . utime() . mt_rand(0,mt_getrandmax())); //
or any other good random source<br>
$passwordHash = md5(md5($password) . ':' . $passwordSalt);<br>
<br>
$passwordSalt should be unique among your database (very likely with the
above code); if there are duplicates, then it allows dictionary attacks
to be done, the more duplicates, the more effective it is.</font><font size=3 color=#8f8f8f face="Times New Roman"><br>
<br>
Adam</font>
<br><font size=3 face="Times New Roman"><br>
> -----Original Message-----<br>
> From: </font><a href="mailto:opensim-dev-bounces@lists.berlios.de" target=_blank><font size=3 color=blue face="Times New Roman"><u>opensim-dev-bounces@lists.berlios.de</u></font></a><font size=3 face="Times New Roman">
[mailto:</font><a href="mailto:opensim-dev-" target=_blank><font size=3 color=blue face="Times New Roman"><u>opensim-dev-</u></font></a><font size=3 face="Times New Roman"><br>
> </font><a href=mailto:bounces@lists.berlios.de target=_blank><font size=3 color=blue face="Times New Roman"><u>bounces@lists.berlios.de</u></font></a><font size=3 face="Times New Roman">]
On Behalf Of Melanie<br>
> Sent: Thursday, 15 October 2009 4:14 PM<br>
> To: </font><a href="mailto:opensim-dev@lists.berlios.de" target=_blank><font size=3 color=blue face="Times New Roman"><u>opensim-dev@lists.berlios.de</u></font></a><font size=3 face="Times New Roman"><br>
> Subject: Re: [Opensim-dev] open sim UUID and Passwordhash<br>
><br>
> Please don't use that code. It creates unsalted hashes, which are<br>
> not secure.<br>
> The "" should be a ranndom salt, stored in the passwordSalt
field in<br>
> the DB. If that is blank, you're running a very insecure system<br>
><br>
><br>
> Melanie<br>
><br>
><br>
> Rich White wrote:<br>
> > here is the PHP code - $password_hash = md5(md5($password) .
":"<br>
> ."");<br>
> ><br>
> > an md5 hash of an md5 hash<br>
> ><br>
> > =====<br>
> ><br>
> > 2009/10/15 Márcio Cardoso <</font><a href=mailto:marciomaiden@gmail.com target=_blank><font size=3 color=blue face="Times New Roman"><u>marciomaiden@gmail.com</u></font></a><font size=3 face="Times New Roman">>:<br>
> >> Good night,<br>
> >><br>
> >> will be possible that someone could help me with 2 problems
I have?<br>
> I'm<br>
> >> trying to create a stored procedure in mysql to add users,
but do<br>
> not know<br>
> >> how UUID  is generated. anyone have any idea how this
happens?<br>
> Another<br>
> >> problem is how is the encoding of the password.<br>
> >><br>
> >> The ideal was to have access to the code that  opensim
uses to add<br>
> avatars.<br>
> >> but I got tired of looking and nothing. I thank you for your
help.<br>
> >><br>
> >> Greetings,<br>
> >><br>
> >> Márcio Cardoso<br>
> >><br>
> >> _______________________________________________<br>
> >> Opensim-dev mailing list<br>
> >> </font><a href="mailto:Opensim-dev@lists.berlios.de" target=_blank><font size=3 color=blue face="Times New Roman"><u>Opensim-dev@lists.berlios.de</u></font></a><font size=3 face="Times New Roman"><br>
> >> </font><a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target=_blank><font size=3 color=blue face="Times New Roman"><u>https://lists.berlios.de/mailman/listinfo/opensim-dev</u></font></a><font size=3 face="Times New Roman"><br>
> >><br>
> >><br>
> > _______________________________________________<br>
> > Opensim-dev mailing list<br>
> > </font><a href="mailto:Opensim-dev@lists.berlios.de" target=_blank><font size=3 color=blue face="Times New Roman"><u>Opensim-dev@lists.berlios.de</u></font></a><font size=3 face="Times New Roman"><br>
> > </font><a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target=_blank><font size=3 color=blue face="Times New Roman"><u>https://lists.berlios.de/mailman/listinfo/opensim-dev</u></font></a><font size=3 face="Times New Roman"><br>
><br>
> _______________________________________________<br>
> Opensim-dev mailing list<br>
> </font><a href="mailto:Opensim-dev@lists.berlios.de" target=_blank><font size=3 color=blue face="Times New Roman"><u>Opensim-dev@lists.berlios.de</u></font></a><font size=3 face="Times New Roman"><br>
> </font><a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target=_blank><font size=3 color=blue face="Times New Roman"><u>https://lists.berlios.de/mailman/listinfo/opensim-dev</u></font></a><font size=3 face="Times New Roman"><br>
_______________________________________________<br>
Opensim-dev mailing list</font><font size=3 color=blue face="Times New Roman"><u><br>
</u></font><a href="mailto:Opensim-dev@lists.berlios.de" target=_blank><font size=3 color=blue face="Times New Roman"><u>Opensim-dev@lists.berlios.de</u></font></a><font size=3 color=blue face="Times New Roman"><u><br>
</u></font><a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target=_blank><font size=3 color=blue face="Times New Roman"><u>https://lists.berlios.de/mailman/listinfo/opensim-dev</u></font></a>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman"><br>
_______________________________________________<br>
Opensim-dev mailing list</font><font size=3 color=blue face="Times New Roman"><u><br>
</u></font><a href="mailto:Opensim-dev@lists.berlios.de"><font size=3 color=blue face="Times New Roman"><u>Opensim-dev@lists.berlios.de</u></font></a><font size=3 color=blue face="Times New Roman"><u><br>
</u></font><a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target=_blank><font size=3 color=blue face="Times New Roman"><u>https://lists.berlios.de/mailman/listinfo/opensim-dev</u></font></a>
<br><font size=3 face="Times New Roman"> </font><tt><font size=2>_______________________________________________<br>
Opensim-dev mailing list<br>
Opensim-dev@lists.berlios.de<br>
</font></tt><a href="https://lists.berlios.de/mailman/listinfo/opensim-dev"><tt><font size=2>https://lists.berlios.de/mailman/listinfo/opensim-dev</font></tt></a><tt><font size=2><br>
</font></tt>
<br>
<br>