Subject: Re: PROPOSAL: adding capability for blowfish passwords
To: Tero Kivinen <kivinen@ssh.fi>
From: Steven M. Bellovin <smb@research.att.com>
List: current-users
Date: 06/03/2002 21:57:12
In message <15611.55848.172493.847172@ryijy.hel.fi.ssh.com>, Tero Kivinen write
s:
>smb@research.att.com ("Steven M. Bellovin") writes:
>> In message <3028.1022196192@itojun.org>, itojun@iijlab.net writes:
>> >>	s = salt;	/* or s = hmac_sha512(site-specific-string, salt); */
>> >>	for (i = 0; i < num_iterations; i++)
>> >>		s = hmac_sha512(password, s);
>> Sounds good.  It will take a bit of experimenting to decide what the 
>> right default value is for num_iterations.  It would be nice if there 
>> were a way to parameterize it in /etc/passwd.conf.
>
>Actually I think the num_iterations should be stored along with the
>salt to the encrypted password. This way the num_iterations can be
>changed by changing the passwd.conf, and all new passwords would start
>using the new num_iterations. Also the default could be something
>like:
>
>num_iterations = time(NULL) / div + base;
>
>so it goes up over time, as the cpu speeds go up too... Of course the
>div and base could be parameterized in the /etc/passwd.conf too...

Clearly, the number of iterations for a given password must be stored 
with the hashed password.  My comment was about the number to be used 
at password change time.  Your default is interesting -- I was about to 
object that time() returns the number of seconds since the epoch, 
rather than a measure of the machine's speed -- until I realized that 
that was exactly what you meant!  Very clever...

		--Steve Bellovin, http://www.research.att.com/~smb (me)
		http://www.wilyhacker.com ("Firewalls" book)