[Opensim-dev] open sim UUID and Passwordhash
Alan M Webb
alan_webb at us.ibm.com
Fri Oct 16 15:08:47 UTC 2009
If everyone is really concerned about security, then perhaps we should
stop using MD5?
Best regards
Alan
-------------------
T.J. Watson Research Center, Hawthorne, NY
1-914-784-7286
alan_webb at us.ibm.com
From:
"Frisby, Adam" <adam at deepthink.com.au>
To:
"opensim-dev at lists.berlios.de" <opensim-dev at lists.berlios.de>
Date:
10/16/2009 09:06 AM
Subject:
Re: [Opensim-dev] open sim UUID and Passwordhash
Just because other software may do it wrong does not mean it is secure.
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.)
Consider this case:
· Calculate Every Permutation of the Dictionary plus a couple of
common modifications, plus your fixed salt. (this will get ~80%+ of user
passwords).
Versus
· Do the above, but for each user ? since the salt is changing per
user.
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.
A unique hash for the whole application helps against global world-wide
MD5 databases, but it still does not help the above situation.
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.
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.)
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.
Adam
From: opensim-dev-bounces at lists.berlios.de [
mailto:opensim-dev-bounces at lists.berlios.de] On Behalf Of Impalah Shenzhou
Sent: Friday, 16 October 2009 4:37 AM
To: opensim-dev at lists.berlios.de
Subject: Re: [Opensim-dev] open sim UUID and Passwordhash
Thanks for the info Melanie.
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.
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).
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)?
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.
It's my opinion, if you don't like it, I have more :-P
Greetings
2009/10/16 Frisby, Adam <adam at deepthink.com.au>
A long fixed salt doesn?t help over the simple ?:? in any practical way.
The salt must be unique for each user for decent security.
Adam
From: opensim-dev-bounces at lists.berlios.de [mailto:
opensim-dev-bounces at lists.berlios.de] On Behalf Of Impalah Shenzhou
Sent: Friday, 16 October 2009 3:44 AM
To: opensim-dev at lists.berlios.de
Subject: Re: [Opensim-dev] open sim UUID and Passwordhash
This comes from UserManagerBase.AddUser (0.6.6):
string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(password) + ":" +
String.Empty);
The salt should be where String.Empty is.
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.
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.
Greetings
2009/10/16 Frisby, Adam <adam at deepthink.com.au>
+1 to Melanie, that code is *not* secure. It is salted with a ":" but
that's a fixed known salt.
This is what I suggest:
$passwordSalt = md5(time() . utime() . mt_rand(0,mt_getrandmax())); // or
any other good random source
$passwordHash = md5(md5($password) . ':' . $passwordSalt);
$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.
Adam
> -----Original Message-----
> From: opensim-dev-bounces at lists.berlios.de [mailto:opensim-dev-
> bounces at lists.berlios.de] On Behalf Of Melanie
> Sent: Thursday, 15 October 2009 4:14 PM
> To: opensim-dev at lists.berlios.de
> Subject: Re: [Opensim-dev] open sim UUID and Passwordhash
>
> Please don't use that code. It creates unsalted hashes, which are
> not secure.
> The "" should be a ranndom salt, stored in the passwordSalt field in
> the DB. If that is blank, you're running a very insecure system
>
>
> Melanie
>
>
> Rich White wrote:
> > here is the PHP code - $password_hash = md5(md5($password) . ":"
> ."");
> >
> > an md5 hash of an md5 hash
> >
> > =====
> >
> > 2009/10/15 Márcio Cardoso <marciomaiden at gmail.com>:
> >> Good night,
> >>
> >> will be possible that someone could help me with 2 problems I have?
> I'm
> >> trying to create a stored procedure in mysql to add users, but do
> not know
> >> how UUID is generated. anyone have any idea how this happens?
> Another
> >> problem is how is the encoding of the password.
> >>
> >> The ideal was to have access to the code that opensim uses to add
> avatars.
> >> but I got tired of looking and nothing. I thank you for your help.
> >>
> >> Greetings,
> >>
> >> Márcio Cardoso
> >>
> >> _______________________________________________
> >> Opensim-dev mailing list
> >> Opensim-dev at lists.berlios.de
> >> https://lists.berlios.de/mailman/listinfo/opensim-dev
> >>
> >>
> > _______________________________________________
> > Opensim-dev mailing list
> > Opensim-dev at lists.berlios.de
> > https://lists.berlios.de/mailman/listinfo/opensim-dev
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
Opensim-dev at lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
Opensim-dev at lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
Opensim-dev at lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20091016/b1a7e70c/attachment-0001.html>
More information about the Opensim-dev
mailing list