[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PROPOSAL] A new (simple) authentication mechanism for svnserve

From: David Anderson <david.anderson_at_calixo.net>
Date: 2005-07-28 18:41:51 CEST

chrislott@spamcop.net wrote:
> This is a "me-too" message. I strongly, deeply request you give priority to the
> proposal for a new auth mechanism for svnserve. It would help us immensely if
> it had a mechanism so passwords don't have to be in the clear; perhaps they
> could be stored like Apache passwords (encrypted with htpasswd).

I can understand why you'd like some other storage mechanism here.
However, Greg's point on why we shouldn't keep on expanding what was a
temporary fix to the absence of a real SASL library is very good. His
point about overly complexifying the user's experience with utilities to
manage the hash-pass-db and such is also excellent. As a consequence to
this, once my summer of code assignment (authz support) is complete, I
plan on doing something about all this the right way.

The problem there is is that cram-md5 is nice because it doesn't
transmit any reusable auth token over the wire, making it generally
immune to replay attacks on authentication. The downside is storing the
password in cleartext on the server. Other authentication methods that
people often consider using have it the other way round: password is
hashed on the server, but the hash is transmitted as is over the
network, making replay attacks easy. There are of course some that take
the best of both worlds, but they often imply some heavy artillery
implemented on the server to get it to work.

Add to this the problem that the interim solution I was proposing means
introducing an authentication method that is some sort of hybrid between
cram-md5 and digest-md5, that doesn't actually exist in SASL world. That
will mean problems keeping it there once real SASL support is
integrated, not to mention the diplomatic rudeness of creating a new
auth mechanism in the SASL namespace "because we need it".

All this to get to this conclusion: if we want to properly upgrade the
user's sense of security whilst at the same time preserving real
over-the-wire security, we need both real SASL and SSL integrated to
svnserve. This will not be quick in the making. I'd like to tackle both,
but I doubt anything can get done for the next release.

In the meantime, I suggest teaching your users a somewhat different
password management policy when related to svnserve. Rather than putting
passwords given by users in the password file, have each repository
"admin" generate passwords (hint: `pwgen` does this well) and assign
them to users. Users can then use client-side auth caching to not have
to worry about remembering twenty obtuse passwords. This removes some of
the problems of users being able to read password files: all they gain
access to is to the corresponding repository (of course, if that is a
problem, then you do have a problem. But if these are employees, what
benefit have they to hack into each other's projects instead of asking
for access?)

Okay, so it's not nirvana, but until some SASL/SSL find their way into
svnserve, I fear that will be your only option. But bear with me,
barring major incidents, I'll soon be addressing the problem.

> I'm sure not an authentication or encryption expert, but I can try to work on
> this problem if someone can get me started. (No, I'm not a student, this is
> not a summer of code for me. :-/)

If you want to put up for the interim fix to cram-md5, and manage to
convince others that the fix is worth it until real SASL comes along
(but read back through the problems Greg gave - they are not by any
means minor), then be my guest. I'm willing to provide guidance to help
you get this into the code.

- Dave

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Jul 28 18:48:46 2005

This is an archived mail posted to the Subversion Dev mailing list.