Re: [sasl] draft-ietf-sasl-scram-11: why don't include the authentication identity in the stored key?

Simon Josefsson <simon@josefsson.org> Tue, 22 June 2010 11:25 UTC

Return-Path: <simon@josefsson.org>
X-Original-To: sasl@core3.amsl.com
Delivered-To: sasl@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9975E3A69A3 for <sasl@core3.amsl.com>; Tue, 22 Jun 2010 04:25:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.562
X-Spam-Level:
X-Spam-Status: No, score=-0.562 tagged_above=-999 required=5 tests=[AWL=-0.863, BAYES_50=0.001, MIME_8BIT_HEADER=0.3]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id x6ebi1eD+hUX for <sasl@core3.amsl.com>; Tue, 22 Jun 2010 04:25:41 -0700 (PDT)
Received: from yxa-v.extundo.com (yxa-v.extundo.com [83.241.177.39]) by core3.amsl.com (Postfix) with ESMTP id 6A9813A69B0 for <sasl@ietf.org>; Tue, 22 Jun 2010 04:25:40 -0700 (PDT)
Received: from mocca (c80-216-29-48.bredband.comhem.se [80.216.29.48]) (authenticated bits=0) by yxa-v.extundo.com (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id o5MBPYvW012866 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Tue, 22 Jun 2010 13:25:36 +0200
From: Simon Josefsson <simon@josefsson.org>
To: Jehan Pagès <jehan.marmottard@gmail.com>
References: <AANLkTinl6-npKB1MjYmQIVehy4yqwgnWzipvPr7AaeYd@mail.gmail.com> <4C207D29.4030600@isode.com> <AANLkTimgW8c2T3vuE7Kjp4zWB9BoZXgK1Pzc0zsdIesh@mail.gmail.com>
OpenPGP: id=B565716F; url=http://josefsson.org/key.txt
X-Hashcash: 1:22:100622:alexey.melnikov@isode.com::r18uhThFD6DDuODy:74A
X-Hashcash: 1:22:100622:sasl@ietf.org::0agbLw+jc9g+5zGr:60vZ
X-Hashcash: 1:22:100622:jehan.marmottard@gmail.com::PtttkKcg4W9Joh5O:FocW
Date: Tue, 22 Jun 2010 13:25:27 +0200
In-Reply-To: <AANLkTimgW8c2T3vuE7Kjp4zWB9BoZXgK1Pzc0zsdIesh@mail.gmail.com> ("Jehan Pagès"'s message of "Tue, 22 Jun 2010 20:19:28 +0900")
Message-ID: <87d3vjnwbc.fsf@mocca.josefsson.org>
User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
X-Virus-Scanned: clamav-milter 0.96.1 at yxa-v
X-Virus-Status: Clean
Cc: Alexey Melnikov <alexey.melnikov@isode.com>, sasl@ietf.org
Subject: Re: [sasl] draft-ietf-sasl-scram-11: why don't include the authentication identity in the stored key?
X-BeenThere: sasl@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SASL Working Group <sasl.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/sasl>, <mailto:sasl-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/sasl>
List-Post: <mailto:sasl@ietf.org>
List-Help: <mailto:sasl-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sasl>, <mailto:sasl-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 22 Jun 2010 11:25:42 -0000

Jehan Pagès <jehan.marmottard@gmail.com> writes:

> Hi,
>
> 2010/6/22 Alexey Melnikov <alexey.melnikov@isode.com>:
>> Jehan Pagès wrote:
>>> But if the username was included in the StoredKey algorithm (for
>>> instance instead of salting the password only, you could salt
>>> [authentication identity + UTF8NUL + password]), noone having the
>>> stored key (whether the server itself or someone having gained access
>>> to it on the user's computer for instance) could use it to access any
>>> service other than the one it was stored for, EVEN IF this other
>>> service has the same salt and iteration count by some extraordinary
>>> chance, unless the same authentication identity is also used on both
>>> service (which might be improbable, though not impossible, as such
>>> identity often include a service domain).
>>>
>>> Isn't it better for security (though I agree that the chances of
>>> having same salt and iteration count are weak, here they would be even
>>> weaker)? Moreover in my opinion, associating the
>>> username/authentication identity and the password seems a nicer design
>>> (by including them both into the Stored key).
>>>
>>
>> I think you are right about security aspect of this. What you suggest was
>> done for DIGEST-MD5. The problem with that is that any change to the
>> authentication identity invalidates the hash containing it, so sysadmins
>> can't rename the user without also resetting the corresponding password.
>> Authentication identity changes is a sufficiently important problem for big
>> enterprise and university deployments, so it was decided that it was more
>> important to make sysadmin job easier than the security aspect.
>>
>
> I understand the argument. So it seems this "issue" has indeed been
> already thought of. Is it so common to massively change authentication
> identities in a running system?

Yes.  I've designed a proprietary implementation which also hashed the
username in the server-side hashed key, and deployment has been a pain
because administrators do want the ability to move "password-hashes"
between usernames.  I agree with you that allowing this weakens the
security somewhat, but practical matters appears to be more important.
I don't view it as a significant security problem.

> Because considering that many users use the same password everywhere,
> here this stored key really makes me think of an universal key which,
> once acquired, enter any system whatever the login name or the service
> is (no authentication identity, no realm in the stored key), like some
> ssh key without a password (so once obtained, such ssh key enables a
> malicious user to enter any remote computer the actual user has the
> right to enter).
> Of course the salt/iteration count makes this issue less problematic,
> but it is still a weakness in my opinion.

If salt is not chosen randomly by each system, there is definitely a
risk.  However, this is not how we want things to be deployed, and I
don't think it is how it is being deployed either?  Time will tell.

/Simon