Carl and Russ, Thanks for the response! Would you prefer that those of us interested in working on this (pluggable user cryto-system) proceed from the trunk, or from 1.2?
Thanks, William On Tue, Feb 15, 2011 at 2:03 AM, Russell Keith-Magee < russ...@keith-magee.com> wrote: > On Tue, Feb 15, 2011 at 2:24 PM, Carl Meyer <carl.j.me...@gmail.com> > wrote: > > Hi Paul, > > > > On Feb 14, 1:37 am, poswald <paulosw...@gmail.com> wrote: > >> * Django ships with SHA2-256, SHA2-512 or PBKDF2 by default. SHA2 is > >> python 2.5 compatible (due to hashlib being added in python 2.5) and > >> PBKDF2 is short enough that it could be included into the project. > >> This satisfies NIST/US Gov requirements. > >> * SHA1 is maintained for backwards compatibility > >> * More secure hashing algorithms can be specified by defining the > >> functions to be used for 'User.set_password' and 'User.check_password' > >> as suggested above. > > > > I'm only one core dev, and not a crypto expert, but I've read the > > linked material and followed previous conversations, and here's my > > take: > > > > I don't think it's OK for Django to continue shipping with a default > > password hashing scheme which no crypto expert, as far as I've seen, > > considers adequate. People I trust to know their crypto, e.g. Thomas > > Ptacek of Matasano, consider PBKDF2 to be significantly better than > > salted SHA1 for password storage, if not quite as good as bcrypt. [1] > > PBKDF2 is simple enough (just SHA1 iterated many times) that including > > an existing pure-Python implementation in Django seems reasonable, > > removing the concerns about cross-platform and Python version > > compatibility. (It would still be best if we could get the PBKDF2 > > implementation reviewed by a cryptographer.) So I'm +1 on switching > > Django's default password hashing to PBKDF2. > > As with Carl -- I'm only one core dev, and I'm not a crypto expert, > here's my take: > > I agree that it's less than ideal for us to continue to use SHA1 given > it's known inadequacies. > > My concern with this approach is that it requires us to either > maintain or adopt an encryption algorithm. We're not just using > something from the standard library, we're taking responsibility for > the holes in a specific implementation. Even if we just adopt code > from an existing implementation, we are accepting responsbility for > finding and fixing any holes in that implementation. This is a > responsibility that can't be taken lightly, and I'm not completely > convinced that we should pick up that particular gauntlet. > > For this reason alone, I could be convinced that a configuration item > may be called for here -- e.g., registering a user-crypto library that > the default User object will use, in the same way that you can > currently register serialization libraries. > > However, that said: > > > As for the broader configurability question, I'm just fine with > > requiring a custom auth backend, which really isn't that hard, as a > > condition for customizing password hashing. So I'm not particularly > > tempted by proposals to add a new setting for this. The hardcoded > > stuff in the User model does bug me, though; I'm interested in the > > proposal to make the User model delegate that to new methods on an > > authentication backend (with backwards-compatibility fallback for old > > auth backends that don't have the new methods). > > One of the things that I want to tackle in the 1.4 timeframe is the > general problem of a 'pluggable' User model. Allowing for customizable > authentication schemes is one (of many) parts of this problem. Right > now, my focus is on getting the 1.3 release out the door; once the 1.4 > feature phase starts, I'll have a lot more time to discuss this sort > of thing. > > Yours, > Russ Magee %-) > > -- > 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. > > -- 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.