I'm not an expert on the subject.

But I think that the hashes security issues are olved by the use of a
"salt", salted hashes are known to be a very secure way to store data.



On Fri, Feb 11, 2011 at 3:59 AM, William Ratcliff <
william.ratcl...@gmail.com> wrote:

> Hi!  I'm new to the list and have started to look into authentication.   I
> find that I will need to patch it for my own needs, but would like to ask
> the opinions of others who are more familiar with the code-base than I am.
>  I apologize if I make any mistakes in the protocol of the list in matters
> such as including too much code.
>
> SHA1 is not secure.  This is not a nationalism issue.  For example:
>
> http://www.darknet.org.uk/2010/11/sha-1-password-hashes-cracked-using-amazon-ec2-gpu-cloud/
>
> Or, from NIST:
> http://csrc.nist.gov/groups/ST/toolkit/secure_hashing.html
>
> where the relevant excerpt is:
> *March 15, 2006*: The SHA-2 family of hash functions (i.e., SHA-224,
> SHA-256, SHA-384 and SHA-512) may be used by Federal agencies for all
> applications using secure hash algorithms. Federal agencies should stop
> using SHA-1 for digital signatures, digital time stamping and other
> applications that require collision resistance as soon as practical, and
> must use the SHA-2 family of hash functions for these applications after
> 2010. After 2010, Federal agencies may use SHA-1 only for the following
> applications: hash-based message authentication codes (HMACs); key
> derivation functions (KDFs); and random number generators (RNGs). Regardless
> of use, NIST encourages application and protocol designers to use the SHA-2
> family of hash functions for all new applications and protocols.
>
> I have also seen discussions in other venues from people who are worried
> about the security of SHA1 in the event that their system is compromised,
> can an attacker gain the passwords in the database?  The appearance of
> modules such as django-bcrypt:
> https://github.com/dwaiter/django-bcrypt/
> show that this issue is becoming of more general concern.
>
> Current solutions:
> 1)  Monkey patch:
> put a top level installed_app that has a listener to the class_prepared
> signal that performs monkey patching throughout user.
> This is rather ugly and it feels very fragile to me if the auth module
> changes internally.
> 2)  Rewrite the Backend as Tom suggests by subclassing ModelBackend:
> Again, it's not sufficient.  Why?
>
> If we look at the Model Backend, we see that yes, the authenticate method
> currently authenticates against User--but the problem is NOT the
> authentication per se, but rather that the User class has several methods
> such as:
> check_password, set_password, etc. that have encryption hard coded.   There
> are admin commands associated with the User class which refer to methods
> with a particular encryption method chosen.
>
> 3) For users of Django who cannot (say US government agencies, people who
> have tight security concerns, etc.) use the current module, ignore the auth
> module and roll their own:
> This has been attempted before.  However, the problem is that it is easy to
> make mistakes doing this and most of the functionality in the auth module is
> very good and simply copying most of it to make a few changes to User--and
> to maintain those against modules which use the user module seems rather
> excessive.
>
> While my first suggestion was:
> Move the encryption related portions of the code that are hard coded to the
> authentication backend.  Make a default which follows best practices (I
> would suggest moving to SHA2 in a backwards compatible fashion) that most
> people will use.  However, for those that want to use bcrypt for example, it
> would be easy for them to simply write their own backend.
>
> However, there are also merits to Paul's approach of having a mapping in
> the settings file.   What I like about the backend approach is that it
> allows for graceful fallbacks as function of python version, but gives the
> user the ability to change the algorithm in a simple way.
> Also, it saves one from distinguishing between sha1 and sha1 with
> stretching....Perhaps a compromise would be to have a backend
> which looks to the settings file for the location of a method?
>
> But, if I write a patch that works and maintains backwards compatibility
> would it be accepted?  Is it better to email it here, or to submit a ticket,
> claim the ticket, and then add the patch?
>
>
> Also, would it be better for me to work from the trunk, or from 1.2.5?
>  This is important because of:
> http://code.djangoproject.com/ticket/13969
>
>
> Thanks,
> William
>
>
>
>
>
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Django developers" group.
> To post to this group, send email to django-developers@googlegroups.com.
> To unsubscribe from this group, send email to
> django-developers+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-developers?hl=en.
>



-- 
Eduardo Cereto Carvalho

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to